LaTeX中的参考文献BibLaTeX

本文详细介绍了如何在LaTeX中使用BibLaTeX工具,包括配置步骤、参考文献数据库的创建与引用、样式定制、排序选项以及批处理编译方法。重点展示了如何通过biber工具实现本地化排序,如按拼音或笔画,以及caspervector样式的应用和相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LaTeX中的参考文献BibLaTeX


这一讲主要讲解使用BibLaTeX工具在LaTeX中排版参考文献的方法,其基本思想仍然是“一次管理,多次使用”。

一、介绍

biblatex宏包和biber工具是一种新的TEX参考文献排版引擎,其样式文件编写比较简单,有参考文献样式文件bbx文件、引用样式文件cbx文件,这些文件都是由LATEX代码编写的。

编写和维护相对比较简单。

biber工具 还支持根据本地化排序排版。

例如,可以按参数指定按拼音排序,也可以用参数指定按笔画排序。

二、配置

为了能够在TexStudio中使用biber排序引擎,需要对TexStudio进行相应的设置。

(1)打开设置

image-20220210160136206

(2)将“构建”操作中“默认文献工具”设置为***Biber***

image-20220210160318940

三、参考文献数据库文件

准备参考文献数据库文件bib文件

参考文件数据库文件包含了参考文献的基本信息。

参考文献代码:

@book{mittelbach2004,
title = {The {{\LaTeX}} Companion},
publisher = {Addison-Wesley},
year = {2004},
author = {Frank Mittelbach and Michel Goossens},
series = {Tools and Techniques for Computer Typesetting},
address = {Boston},
edition={Second}
}

@article{patashnik1984bibtex,
	title={BIBTEX 101},
	author={Patashnik, Oren},
	year={1984}
}


@article{__nodate,
	title = {基于相变储热技术的电池热管理系统研究进展},
	issn = {1000-6613},
	url = {https://kns.cnki.net/kns8/Detail?sfield=fn&QueryID=1&CurRec=5&recid=&FileName=HGJZ20220105002&DbName=CAPJLAST&DbCode=CAPJ&yx=Y&pr=&URLID=11.1954.TQ.20220106.1135.001},
	abstract = {动力电池的最佳工作温度范围为20~50℃,因此热管理系统是其运行过程中不可分割的一部分。相变储热材料在发生相变时可以吸收或释放大量的热量并且温度基本保持不变,在电池热管理中得到广泛应用。本文综述了国内外基于相变储热技术的电池热管理系统的研究进展,主要介绍了基于相变材料的被动式热管理系统、主动式热管理系统以及主动式和被动相结合的耦合式热管理系统。综合来看,复合相变材料具有形状稳定性好、热导率高,可以有效的降低电池组的温度,提高电池组的温度均匀性。导电复合相变材料的电热转换特性还可用于低温下快速加热电池,实现加热-冷却一体化。然而在相变材料被动式热管理系统中,相变材料吸收的热量无法及时释放出去,热...},
	language = {中文},
	urldate = {2022-02-09},
	journal = {化工进展},
	author = {罗, 明昀 and 凌, 子夜 and 方, 晓明 and 张, 正国},
	pages = {1--21},
}

@article{__2022,
	title = {新能源汽车动力电池及其应用分析},
	issn = {1672-9668},
	url = {https://kns.cnki.net/kns8/Detail?sfield=fn&QueryID=1&CurRec=6&recid=&FileName=SDQE202202050&DbName=CJFDLAST2022&DbCode=CJFD&yx=&pr=&URLID=},
	abstract = {随着经济的快速发展,环境污染问题日渐凸显,燃油车尾气排放也是造成环境污染的重要原因之一。大量使用新能源汽车,减少排放是解决排放污染的重要途径。动力电池是新能源型汽车的技术核心之一,对新能源汽车的发展,起到了很好的推动作用。人工智能、大数据以及新能源汽车一跃成为当前发展的主要方向和趋势。因此,本文首先提出需要探究的主要内容和背景,之后结合不同的新能源汽车动力电池,针对性的探究合理的应用路径。},
	language = {中文;},
	number = {02},
	urldate = {2022-02-09},
	journal = {时代汽车},
	author = {周, 斌},
	year = {2022},
	pages = {114--115},
}

@article{__2022-1,
	title = {新能源汽车动力电池产业发展特点与趋势分析},
	issn = {1671-6329},
	url = {https://kns.cnki.net/kns8/Detail?sfield=fn&QueryID=1&CurRec=7&recid=&FileName=QCWZ202201001&DbName=CJFDLAST2022&DbCode=CJFD&yx=&pr=&URLID=},
	abstract = {随着新能源汽车产业的不断发展,相应带动动力电池行业不断进步。经过2020年疫情的影响,2021年动力电池产业呈现出4大特点:(1)国家宏观支持政策持续发力;(2)新能源汽车销量提升带动动力电池需求持续增长,磷酸铁锂电池市场占有率持续提升;(3)上游锂、钴、镍等为代表的资源将成为稀缺资源,企业实施纵向一体化成为趋势;(4)动力电池企业竞争已经白热化,企业在产能布局和合资合作方面持续发力。},
	language = {中文;},
	number = {01},
	urldate = {2022-02-09},
	journal = {汽车文摘},
	author = {左, 培文 and 朱, 培培 and 邵, 丽青},
	year = {2022},
	pages = {1--7},
}

@online{6-1,
	title = {PACS-L: the public-access computer systems forum},
	type = {EB/OL},
	location = {Houston,Tex},
	publisher = {University of Houston Libraries},
	year = {1989},
	url = {https://info.lib.uh.edu/pacsl.html},
	urldate = {1995-05-17},
	language = {english},
}

将需要用的参考文献保存在与tex文件同一个目录下,后缀名是bib

image-20220210161205798

四、引用文献

1、导入宏包

在tex文件中,我们可以用usepackage命令引入biblatex宏包

image-20220210161726559

并指定必要的参数。

例如,指定样式(style)为numeric,后端程序(backend)为biber。

image-20220210161809455

2、添加参考文献数据库

在导言区,使用addbibresource命令添加参考文献数据库。

注意,不可以省略文件后缀名bib!

image-20220210162059613

3、不同方式引用参考文献

在正文区,使用相应的cite命令可以实现无格式化引用带方括号的引用上标引用等不同方式的参考文献的引用。

注意花括号里面写的是需要引用参考文献的引用标志

比如:

image-20220210164620718

然后就这样引用:

image-20220210164733067

同样,我们可以用不同方式引用参考文献:

image-20220210170211123

4、输出参考文献列表

在需要的地方,使用printbibliography命令输出参考文献列表。

image-20220210170242135

5、编译执行

我们写完上面的操作之后,编译执行。

注意查看编译过程

(1)首先是xelatex的编译,生成aux辅助文件。

image-20220210163229515

aux辅助文件:

image-20220210163427348

(2)然后使用biber后端程序对该辅助文件进行编译,生成bbl文件。

image-20220210163514354

生成bbl文件:

image-20220210163616630

在文件夹里面也会有:

image-20220210163649326

(3)最后再次用xelatex进行编译。

image-20220210163726149

(4)最终结果

查看编译执行最终结果:

image-20220210170409676

6、修改标题

注意,编译结果中的参考文献的标题,是英文“References”。

image-20220210170510501

这可以通过在printbibliography命令的参数中使用title参数进行修改。

例如,修改为中文“参考文献”。

image-20220210170725812

注意要再次编译的时候,需要先清理辅助文件

image-20220210170901617

点击“OK”。

image-20220210170933214

在文件夹里面,只需要有这两个文件就可以了。

image-20220210171006975

然后我们再次编译,查看结果:

可以看到,标题被修改为我们设定的“参考文献”了。

image-20220210171123121

7、列出没有引用的参考文献

nocite命令列出没有引用的参考文献。

参数*表示未引用的所有文献。

image-20220210222829654

也可以用引用标志列出指定的未引用文献,由于需要重新编译参考文献数据库,因此需要先清理上次编译生成的辅助文件。

image-20220210222855380

image-20220210222913213

编译查看结果:

image-20220210223339438

8、更多样式

若需要更多的样式,需要编写相应的样式文件,给大家介绍一个由CasperVector编写的符合国标7714标准的样式文件。

注:TexLive2016以上的版本直接在引用biblatex时令style=gb7714-2015即可,不需要下载CasperVector。

打开其主页

image-20220210223805201

下载样式文件压缩包。

image-20220210223954402

保存至相应路径(自己可以设置),然后解压,打开tex文件夹。

image-20220210224345080

找到参考文献样式文件***bbx文件***和引用样式文件***cbx文件***。

image-20220210224624467

将这些文件拷贝到当前工作目录(即tex文件目录下)。

image-20220210224828549

可以在TexStudio中打开这些bbx和cbx样式文件。

进行查看编辑和修改。

image-20220210225313277

然后在导言区将biblatex宏包的style参数改为caspervector,并指定编码格式为utf8格式。

image-20220210225711759

查看结果:

image-20220210230503760

发现结果中的中英文文献是混排的,为了解决这个问题,需要对biber工具指定排序参数。

我们需要对TexStudio进行相关的设置。

image-20220210231224958

在原命令设置中,找到Biber命令,为该BIber命令添加相应的参数。

image-20220210231404545

比如添加这个。

image-20220210231729893

我们将它复制过去。-l zh__pinyin

image-20220210231639026

然后点击确认即可。

再次编译运行,发现结果并没有改变。

image-20220210232247653

为了能够正确实现参考文献的排序,需要为biblatex宏包指定sorting参数。

在此,指定排序参数为centy。(c表示中文,e表示英文,n表示作者姓名,t表示文献标题,y表示出版年份)

也就是按language字段先中文,后英文,并根据姓名标题和出版年份字段进行排序。

image-20220210233719158

编译执行查看结果,报错:

image-20220210233153421

image-20220210232554893

在网上看到一个j貌似解决方法:

image-20220210233014513

如果我们将其设为none,同样没有发生什么变化。

image-20220210233553440

将其改为nty,试一试:

image-20220210234207070

image-20220210234331086

具体上面centy为什么不支持,我也不清楚,暂时就按照这样(nty)来写吧。

有关caspervector样式的详细说明,请使用texdoc命令查阅其使用手册。

五、bat批处理

除了可以在TexStudio中使用biblatexbiber引擎外,还可以使用bat批处理文件执行对应的编译操作。

打开当前工作路径,确保存在LaTeX源文件(tex为后缀名),参考文献数据库文件(bib为后缀名),和参考文件样式文件(bbx和cbx为后缀名)。

其他文件可以删除。

image-20220211002155748

在当前文件夹,右键新建“文本文档”。

image-20220211002242794

将后缀名改为bat(表示是一个批处理文件),并起个名字,比如bulid.bat。

image-20220211002334428

生成批处理文件:

image-20220211002427445

右键“编辑”该文件。

image-20220211002508631

image-20220211002541577

然后输入以下内容:

xelatex Test0210
biber -l zh__pinyin Test0210
xelatex Test0210
xelatex Test0210
del *.aux *.bbl *.bcf *.blg *.log *.xml

讲解:

(1)首先使用xelatex编译(写上tex文件名–自己起的,我这就是Test0210),生成aux辅助文件。

(2)然后使用biber引擎,携带拼音排序参数(-l zh__pinyin),对aux辅助文件进行编译,生成bbl辅助文件。

(3)(4)再使用xelatex进行编译两次。生成最终结果。

(5)最后使用del命令删除不需要的文件。

然后保存。

image-20220211003344661

双击执行该批处理文件。

image-20220211003430365

处理中:

image-20220211003505459

结束之后,查看生成的pdf文件。

image-20220211003558015

查看最终排版结果。

image-20220211003638120

当编译过程比较复杂时,可以考虑采用类似的bat文件进行编译。

六、tex文件代码

tex文件代码:

%导言区
\documentclass{ctexart}
 
%\usepackage{ctex}

%biblatex / biber
%新的TEX参考文献排版引擎
%样式文件(参考文献样式文件--bbx文件,引用样式文件--cbx)使用LATEX编写
%支持根据本地化排版,如:
%	biber -l zh__pinyin texfile,用于指定按拼音排序
%	biber -l zh__stroke texfile,用于按笔画排序

\usepackage[style=caspervector,backend=biber,utf8,sorting=nty]{biblatex}
\addbibresource{test.bib}

%正文区(文稿区)
\begin{document}
	%一次管理,多次应用
	无格式化引用 \cite{mittelbach2004}
	
	带方括号的引用 \parencite{__nodate}
	
	上标引用 \supercite{6-1}
	
	\nocite{*}
	\printbibliography[title={参考文献}]
	
\end{document}
### STM32驱动YT8521芯片的方法 对于STM32单片机而言,要实现对YT8521以太网物理层(PHY)设备的支持,通常涉及几个关键方面:硬件连接、初始化设置以及数据传输处理。基于现有资源[^1],可以构建一个适用于STM32H743型号的非操作系统轮询模式下的DHCP客户端实例来说明如何操作。 #### 硬件接口配置 为了使能STM32与YT8521之间的通信,需确保两者通过MII/RMII接口正确相连。具体来说: - RMII_REF_CLK (来自PHY) - RMII_MDIO - RMII_MDC - RXD0, RXD1 (接收端口) - TX_EN, TXD0, TXD1 (发送端口) 这些信号线应当按照官方文档中的指导进行布板设计并焊接至相应管脚上。 #### 初始化过程 在软件层面,启动阶段应完成如下工作: ```c // 假设已经定义好了必要的外设句柄 `heth` 和 PHY 地址常量 `ETH_PHY_ADDRESS` /* Step 1: Enable clocks and reset the Ethernet MAC */ __HAL_RCC_ETH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /* For ETH pins */ /* Step 2: Configure GPIOs as alternate function push-pull */ static void MX_GPIO_Init(void){ // ...省略其他GPIO配置... } /* Step 3: Initialize HAL Library*/ HAL_Init(); /* Step 4: Configure the system clock to achieve higher performance */ SystemClock_Config(); /* Step 5: Initialize the Ethernet peripheral with default parameters */ if(HAL_ETH_Init(&heth)!= HAL_OK){ Error_Handler(); } else{ uint32_t phyregvalue=0; /* Read PHY ID register twice according to datasheet recommendation */ if((HAL_ETH_ReadPHYRegister(&heth, ETH_PHY_ADDRESS, PHY_IDR_LOW,&phyregvalue)==HAL_OK)&&\ ((phyregvalue & YT8521_ID_MASK)==YT8521_ID_VALUE)){ // 成功识别到YT8521 /* Perform additional configuration steps specific to this PHY chip here... */ /* Start Auto Negotiation process */ if(HAL_ETH_StartAutonegotiation(&heth)!= HAL_OK){ Error_Handler(); } while(__HAL_ETH_IS_FLAG_SET(&heth, ETH_FLAG_AUTONEGO_SUCCESS)== RESET); /* Get link status after negotiation completes successfully */ if(!__HAL_ETH_GET_LINK_STATUS(&heth)){ Error_Handler(); } else { printf("Link UP\n"); /* Now ready for data transmission/reception operations */ } } else { Error_Handler(); } } ``` 上述代码片段展示了从时钟使能到最后确认链路状态的一系列动作。值得注意的是,在实际应用中可能还需要针对特定需求调整某些寄存器位或参数值。 #### 数据收发流程 一旦完成了前面提到的基础准备工作之后,就可以利用标准库函数来进行网络包的发送和接收了。例如: ```c uint8_t buffer[64]; // 缓冲区大小取决于最大帧长度 struct eth_frame *frame=(void*)buffer; while(1){ /* Wait until a complete frame has been received into DMA SRAM buffers */ if (__HAL_ETH_DMA_RX_NOT_EMPTY (&heth)) { size_t length=__HAL_ETH_GetReceivedFrameSize(&heth); /* Copy incoming packet from internal memory to user space */ memcpy(frame,__HAL_ETH_GetRxBufferPointer(&heth),length); /* Process the received message here...*/ __HAL_ETH_DiscardCurrentPacket(&heth); // 清理当前已读取的数据包以便下次接收 } /* Prepare outgoing packets similarly using Tx descriptors etc.*/ } ``` 这段伪代码描述了一个简单的循环用于持续监听是否有新的消息到达,并对其进行适当解析;同时也提到了准备待发出的信息的方式。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨翼轻尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值