thebibliography
在学术文档中人们经常要用到参考文献 (bibliography) ,这样做既可以
有选择地提供事实,作客观公证科学严谨状,还可以拉帮结派党同伐异。
LaTeX 中最原始的方法是用 thebibliography 环境和 \bibtem 命令
来定义参考文献条目。在下例中,第一行的参数 9 是参考文献条目编号
的宽度;
如果有几十个条目,可以把该参数改为 99。
\begin{thebibliography}{9}
\bibitem{Rowling_1997}
Joanne K. Rowling,
\emph{Harry Potter and the Philosopher's Stone}.
Bloomsbury, London,
1997.
\end{thebibliography}
thebibliography 环境一般放在文档的末尾。定义了参考文献之后,
我们可以用 \cite 命令在正文中引用条目。
BibTeX
thebibliography 环境的一个缺点是,用户得自己调整显示格式,这
样做很麻烦而且易出错。
Oren Patashnik
和 Lampor t就在 1985 年想出一个办法,用数
据库文件 .bib 记录参考文献条目,用样式文件 .bst 设置显示格式。
普通
用户一般不需要改动样式文件,只须维护数据库。
这种方法秉承了 L
a
T
eX 内容与格式分离的思想,我们在 SGML/DSSSL,
HTML/CSS, XML/XSL 等技术上也可以见到同样的思路。
BiBTeX 将参考文献分为十几种类型,每种类型的参考文献有不同的必
选项和可选项 (见以下列表) 。
-
必选项:author, title, journal, year
-
可选项:volume, number, pages, month, note
conference 同 inproceedings
-
必选项:author/editor, title, publisher, year
-
可选项:volume/number, series, address, edition, month, note
-
必选项:title
-
可选项:author, howpublished, address, month, year, note
-
必选项:author/editor, title, chapter/pages, publisher, year
-
可选项:volume/number, series, type, address, edition, month,
note
-
必选项:author, title, booktitle, publisher, year
-
可选项:editor, volume/number, series, type, chapter, pages,
address, edition, month, note
-
必选项:author, title, booktitle, year
-
可选项:editor, volume/number, series, pages, address, month,
organization, publisher, note
-
必选项:title
-
可选项:author,organization,address,edition,month,year,note
-
必选项:author, title, school, year
-
可选项:type, address, month, note
-
必选项:无
-
可选项:author, title, howpublished, month, year, note
-
必选项:author, title, school, year
-
可选项:type, address, month, note
-
必选项:title, year
-
可选项:editor, volume/number, series, address, month, orga
nization, publisher, note
-
必选项:author, title, institution, year
-
可选项:type, number, address, month, note
-
必选项:author, title, note
-
可选项:month, year
编辑 .bib 文件时可以用普通文本编辑器,也可以用专门的文献管理软
件来提高效率,后者这里推荐 JabRef。一些其他的文献管理软件或网络服
务也可以输出 .bib 格式,比如 EndNote, Google Scholar, Zotero 等。
上例中罗琳阿姨的书可以用 BiBTeX 改写成下例中的样子。其中
每行是一个数据项,第一个数据项是关键字,供引用时用;
其他数据项都以
名称 = 值的形式成对出现,值要写在双引号之内;
数据项之间用逗号分隔。
@book{Rowling_1997,
author = "Joanne K. Rowling",
title = "Harry Potter and the Sorcerer's Stone",
publisher = "Bloomsbury, London",
year = "1997"
}
有了数据后,我们需要选一个样式。通常的 L
aTeX 发行版都会带有四种标准的样式
-
plain---参考文献列表按作者姓氏排序,序号为阿拉伯数字。
-
unsrt---参考文献列表按正文中引用顺序排序,序号为阿拉伯数字。
-
alpha---参考文献列表按作者姓氏排序,序号为作者姓氏加年份。
-
abbrv---类似 plain 样式,作者名字、月份、期刊名等用缩写。
选定样式后,我们需要在文档中用 \bibliographystyle命令来设置
样式,然后用 \bibliography 命令输出参考文献列表。
\bibliographystyle{plain}
\bibliography{myref}
前文中我们提到含有交叉引用的文档需要编译两遍。含有参考文献的文
档更麻烦,它需要依次执行等四次编译操作。
-
第一遍 xelatex 把参考文献条目的关键字写到中间文件 .aux 里去。
-
bibtex 根据 .aux, .bib, .bst 生成一个 .bbl 文件,即参考文献
列表。
它的内容就是 thebibliography 环境和一些 \bibtem 命令。
-
第二遍 xelatex 把交叉引用写到 .aux 中去。
-
第三遍 xelatex 则在正文中正确地显示引用。
有多个子文档时,我们可以在每个子文档中用 \bibliographystyle
命令设置不同的样式;当然如果没有特别的理由,还是建议用统一的
样式。
编译时用 xelatex 编译主控文档,而用 bibtex 编译各个子文档。
xelatex master(.tex)
bibtex chapter1(.tex)
bibtex chapter2(.tex)
...
xelatex master(.tex)
xelatex master(.tex)
Natbib
参考文献在正文中的引用通常有两种模式:作者‐年份和数字。L
aTeX 提
供的 \cite 命令只支持数字模式,Patrick W. Daly
的 natbib 宏包则
同时支持这两种模式。
natbib 提供了三种列表样式:plainnat, abbrvnat, unsrtnat,
它们的参考文献列表和相对应的
L
aTeX
标准样式 plain, abbrv, unsrt
效果相同,只是在引用时可以自由选择作者‐年份或数字模式。
这两种模式以及他一些细节的设置 (比如标点符号) 在本文中被称作引
用样式。
natbib 的三种列表样式都有自己的缺省引用样式,如要定制引用
样式,可以使用 \setcitestyle 命令;
其选项见下表,其中上标模式
其实就是把数字标号移到了上标位置。
natbib 提供了多种引用命令,其中最基本的是 \citet 和 \citep,它
们在不同引用模式下效果不同。
一般不推荐使用
L
aTeX
本身提供的 \cite 命
令,因为它在作者‐年份模式下和 \citet 效果相同,在数字模式下和 \citep
相同。
这些模式下引用命令的效果见下例。
另外还有一些引用命令,如 \citetext, \citenum, \citeauthor,
\citeyear 等,读者可以自行查阅手册,此处不赘述。
全新 LaTeX 知识库,入门资料,免费知识代码:
https://www.latexstudio.net/LearnLaTeX/
精心制作免费视频教程:
https://space.bilibili.com/209746320