基于LaTeX_工作室的2020年8月开始的直播内容,该系列文章将用图文的模式记录下其中的重要内容,方便查阅与学习。
编译环境: $\textrm{Tex Live}$
编辑环境: $\textrm{vscode}$
相关视频:LaTeX 直播之四 – LaTeX 参考文献自动化处理
本次视频的内容包括
- $\textrm{thebibliography}$环境
- $\textrm{bib}$文件
- 使用$\textrm{BIBTEX}$
- $\textrm{BIBTEX}$简介
- 用上$\textrm{bib}$文件
- 使用$\textrm{gbt7714}$宏包
- 使用$\textrm{biber}$
- $\textrm{biber}$简介
- $\textrm{biblatex}$宏包的使用
- 三者的对比与选择
$\textrm{thebibliography}$简介
首先给出一段包含注释的$\textrm{LaTeX}$的代码来说明$\textrm{thebibliography}$环境的基本用法
%注:因为需要文献在引用下方,因此需要编译两次 \documentclass{ctexart} %ctexart = article+ctex \begin{document} %正文区 %调用了参考文献部分的名为"liuhaiyang2013latex"的文献 \LaTeX{}的入门书籍可以看《\LaTeX{}入门》\cite{liuhaiyang2013latex}。 %参考文献 \begin{thebibliography}{9} %thebibliography环境,宽度为9 %\bibitem[item number]{citation} %item number:该条目的序号 %citation: \cite命令使用的标签 \bibitem[1]{liuhaiyang2013latex} 刘海洋. \newblock \LaTeX {}入门\allowbreak[J]. \newblock 电子工业出版社,北京,2013. \bibitem[2]{citation} LaTeX Part4参考文献自动化处理。 \end{thebibliography} \end{document}

$\textrm{bib}$文件作用
- 由一条条参考文献组成
- 可有$\textrm{BIBTEX}$和$\textrm{biber}$分别编译生成$\textrm{.bbl}$文件
- 每个条目包含
- 作者
- 标题
- 发表年份
- …
@article{ liuhaiyang2013LaTeX, title={LaTeX}, author={Kuroko,Shirai}, journal={Kuroko.info}, volume={98},number={13},pages={130404}, year={2021} }
- $\textrm{article}$:参考文献资料的类型,还有$\textrm{book,incollection}$等
- $\textrm{liuhaiyang2013LaTeX}$,$\textrm{bibkey}$,相当于上文中$\textrm{\cite{label}}$中的$\textrm{label}$
- 需要确保唯一性
- 推荐使用纯英文和数字的组合
- $\textrm{title}$:参考文献的标题
- $\textrm{author}$:参考文献的作者
- $\textrm{year}$:参考文献的发表年份
- …
参考文献条目获取
- 必应学术
- 谷歌学术
- …
必应学术获取步骤
- 进入必应学术网站
- 在搜索框中搜索需要的文章
- 文章的左下角会有一个$\textrm{Cite}$按钮
- 点击之后选择ImportLinks中的BibTex
- 打开页面,复制其中的内容
- 新建一个.bib文件,粘贴刚刚复制的内容
- 重复步骤,收集所有的文献
必应学术有批量引用功能,使用更为方便
注意:导出的bib条目可能会有错误,使用者需要进行检查



使用$\textrm{BIBTEX}$
$\textrm{BIBTEX}$是目前处理参考文献最方便的工具之一,其仅需要维护以$\textrm{.bib}$为后缀的文件,而且可以生成不同风格的参考文献。
还是使用一个例子来说明用法,假设在文件夹中有文件$\textrm{test.tex}$和$\textrm{Kuroko.bib}$两个文件
%test.tex \documentclass{ctexart} %ctexart = article+ctex %导言区 \bibliographystyle{plain} %指定样式为plain %正文区 \begin{document} %表明了引用的名为"wilczek2012quantum"的对象 一个引用\cite{wilczek2012quantum}。 \bibliography{Kuroko} %使用Kuroko.bib的文件,不需要添加.bib后缀 \end{document}
@article{ wilczek2012quantum, title={Quantum time crystals.}, author={Wilczek, Frank}, journal={Physical Review Letters}, volume={109}, number={16}, pages={160401}, year={2012} }
编译方法有两种
- 普通的编译
- $\textrm{xelatex test}$
- $\textrm{bibtex test}$
- $\textrm{xelatex test}$
- $\textrm{xelatex test}$
- 或者使用$\textrm{latexmk}$一个指令完成
- $\textrm{latexmk -pdfxe test}$
编译完成的效果如下:

要注意以下几点:
- 即使$\textrm{Kuroko.bib}$文件中有多条文献记录,但也只会展示被$\textrm{\cite}$引用的部分,这也是参考文献的规范:有引用的才进行列举
- 编号顺序取决于引用顺序,而非在$\textrm{bib}$文件中的存储顺序
- 对于不同的参考文献样式,不需要修改$\textrm{bib}$文件内部的内容,只需要在导言区修改$\textrm{\bibliographystyle{plain}}$的内容
- 使用$\textrm{\bibliography{Kuroko}}$导入库时,不需要添加$\textrm{.bib}$后缀
符合国标$\textrm{7714-2015}$的参考文献样式
$\textrm{gbt7714}$宏包
- 符合$\textrm{GB/T 7714-2015}$的推荐标准
- 需要$\textrm{BIBTEX}$编译
使用实例
\documentclass{ctexart} %ctexart = article+ctex %导言区 \usepackage{gbt7714} %导入gbt7714宏包 \bibliographystyle{gbt7714-numerical} %还有一种样式名为gbt7711-author-year %正文区 \begin{document} %表明了引用的名为"wilczek2012quantum"的对象 一个引用\cite{wilczek2012quantum} 选择gbt7714-author-year样式还可以使用\citep{wilczek2012quantum} \citet{wilczek2012quantum} \bibliography{Kuroko} %使用Kuroko.bib的文件 \end{document}
效果如下

使用$\textrm{biber}$
- $\textrm{biber}$的使用和$\textrm{BIBTEX}$大同小异
- 同:一样需要维护$\textrm{.bib}$文件
- 异:编译步骤
- 二者的简单对比
- $\textrm{biber}$速度上一般比$\textrm{BIBTEX}$慢
- 对于开发者而言,$\textrm{biber}$更易于编写样式文件
- 由$\textrm{.cbx}$文件和$\textrm{.bbx}$文件共同决定样式,$\textrm{biber}$对参考文献条目进行排序并提供所有相关信息给$\textrm{biblatex}$宏包
首先介绍一下编译步骤,同样有两种方式
- 普通的编译
- $\textrm{xelatex test}$
- $\textrm{biber test}$
- $\textrm{xelatex test}$
- $\textrm{xelatex test}$
- 使用$\textrm{latexmk}$编译
- $\textrm{latexmk -xelatex main}$
然后将上文中$\textrm{BIBTEX}$的样例该用$\textrm{biber}$方式重写
\documentclass{ctexart} %ctexart = article+ctex %导言区 \usepackage[backend=biber,style=gb7714-2015]{biblatex} %导入biblatex宏包 \addbibresource[location=local]{Kuroko.bib} %需要bib后缀 %对于未被发行版收录的样式,可以把MyStyle.cbx和MyStyle.bbx添加到当前目录中,然后使用\usepackage[backend=biber,style=MyStyle]{biblatex}来进行样式修改 %正文区 \begin{document} %表明了引用的名为"wilczek2012quantum"的对象 一个引用\cite{wilczek2012quantum} \printbibliography[title=参考文献] \end{document}

三者的简要对比
处理方式 | 编译难度 | 代码可维护性 | 编译速度 | 是否需要维护$\textrm{.bib}$文件 |
---|---|---|---|---|
手动处理 | 低 | 极差 | 最快 | 否 |
自动处理 | 稍高 | 高 | 慢 | 是 |
自动处理 | 稍高 | 高 | 最慢 | 是 |
对于个性化的文献格式要求,又没有现成的文件和样式,那么使用$\textrm{thebibligraphy}$环境自行撰写;若存在样式或$\textrm{.bib}$文件,那么个人建议使用速度更快的$\textrm{BIBTEX}$来进行编译。
$\textrm{Author}$@$\href{http://kuroko.info}{\textrm{Kuroko}}$
$\textrm{GitHub}$@$\href{https://github.com/SuperKuroko}{\textrm{SuperKuroko}}$
$\textrm{LeetCode}$@$\href{https://leetcode-cn.com/u/kuroko177/}{\textrm{kuroko177}}$
$\textrm{Last Modified: 2021-01-27 16:40}$
退出登录?