在论文和书籍中,正文会“引用”所参考的文献,并在末尾汇总成“参考文献列表”。LaTeX 用两个相互配合的部分支持这一流程:正文中的 \cite 指向列表中的相应条目,而列表一侧会自动编号并对齐。本页以引用命令 \cite、\nocite 和手写参考文献环境 thebibliography 为中心,说明引用的基础。
在正文中引用 - \cite 与 \nocite
引用的核心是 \cite{key}。这里的 key 是你给文献分配的 引用键(自己决定的短名称)。它会在正文中输出 引用标记(标准文档类中通常是 [1] 这样的编号),同时把该文献加入参考文献列表。多个文献可以用逗号分隔一次引用,如 \cite{knuth,lamport}。
可选参数可以附加页码等注记。\cite[p.~5]{knuth} 会输出类似 [1, p. 5] 的结果(~ 是不换行空格,可避免注记中途断行)。注记会与引用标记一起显示。
クヌースは \TeX{} の設計思想を詳述している~\cite{knuth}。
とくに行分割の議論は重要である~\cite[p.~94]{knuth}。
複数の文献をまとめて挙げることもできる~\cite{knuth,lamport}。如果某篇文献不在正文中引用,但仍想放入列表,可以使用 \nocite{key}。它不会输出引用标记,只会登记到列表中。特殊写法 \nocite{*} 会把 .bib 文件中的 所有条目 都列入列表(想展示整个文献数据库时很方便)。
手写参考文献列表 - thebibliography
让 LaTeX 自己排列表的最基本方法是 thebibliography 环境。其中每个 \bibitem{key} ... 表示 一条文献:key 是该条目的引用键,后面的正文是列表中显示的文献信息。\cite{key} 会与这里具有相同 key 的 \bibitem 匹配,并取出该条目的编号作为引用标记。
\begin{thebibliography}{99}
\bibitem{knuth}
Donald E. Knuth, \emph{The \TeX book}, Addison-Wesley, 1986.
\bibitem{lamport}
Leslie Lamport, \emph{\LaTeX: A Document Preparation System},
2nd ed., Addison-Wesley, 1994.
\end{thebibliography}\begin{thebibliography}{99} 中的 {99} 是表示 最宽标签 的参数。标签栏宽度由它决定,所以一般来说,条目有 10 个以上时传 {99}(两位数),9 个以下时传 {9}。如果这里设错,编号就无法整齐对齐,缩进也会不一致。
如果想使用自定义标签而不是编号,可以给 \bibitem 添加可选参数。例如写成 \bibitem[KL94]{lamport},就会用 [KL94] 作为标签替代自动编号,\cite{lamport} 也会输出这个标签。
和编号、交叉引用一样,引用需要 编译两次 才能确定。第一次运行会把各个 \bibitem 的编号写入 .aux 文件;第二次运行再读回这些信息,把正确编号填入各个 \cite 位置。只运行一次时,引用标记会保持为 [?]。
数字制与作者-年份制
引用格式大致分为两类:用 [1] 这样的编号表示文献的 数字制(numeric),以及用 (Knuth, 1986) 这样的作者名和年份表示的 作者-年份制(author-year)。标准 \cite 默认是数字制,但许多领域要求作者-年份制。
样式切换和更细的引用命令由宏包提供。代表是 natbib 和 biblatex,它们可以区分括号式引用 \citep{key}(-> (Knuth, 1986))和把作者名融入正文的文本式引用 \citet{key}(-> Knuth (1986))。此外还有只输出作者名的 \citeauthor{key}、只输出年份的 \citeyear{key}。natbib 同时支持数字制和作者-年份制。详情请参阅各宏包的页面。
| 命令 | 样式 | 输出示例 |
|---|---|---|
\cite | 标准(数字制) | [1];带注记时为 [1, p. 5] |
\citep | natbib / biblatex(括号式) | (Knuth, 1986) |
\citet | natbib / biblatex(文本式) | Knuth (1986) |
\citeauthor | natbib / biblatex(仅作者) | Knuth |
\citeyear | natbib / biblatex(仅年份) | 1986 |
整理数字制引用 - cite 宏包
如果想保持数字制,只改善外观,Donald Arseneau 的 cite 宏包很方便。只需 \usepackage{cite},标准 \cite 的行为就会改进:多重引用的编号会 按升序排序,连续编号会 压缩成范围。例如 \cite{c,a,b,d} 指向 [2,3,4,6] 时,输出会自动变为 [2-4,6]。
如果想把编号以上标形式输出,可以使用 \usepackage[superscript]{cite}(super 也是别名)。可用选项包括停止排序的 nosort、停止范围压缩的 nocompress、收紧编号间空白的 nospace、抑制换行的 nobreak 等。\cite 的注记参数(如 \cite[p.~5]{knuth})仍可照常使用。
实际项目中使用 BibTeX/biber
手写 thebibliography 适合条目很少,或想完全控制格式的情况。但在实际工作中,通常会把文献信息作为 未格式化的数据记录 存入 .bib 文件,再让 BibTeX 或 biber 生成列表。这样可以按投稿规范自动完成编号、排序和样式处理,也能在多个稿件中复用同一个 .bib。\cite 的用法本身不变。BibTeX 页面会更详细地说明。