引用基础

在论文和书籍中,正文会“引用”所参考的文献,并在末尾汇总成“参考文献列表”。LaTeX 用两个相互配合的部分支持这一流程:正文中的 \cite 指向列表中的相应条目,而列表一侧会自动编号并对齐。本页以引用命令 \cite\nocite 和手写参考文献环境 thebibliography 为中心,说明引用的基础。

在正文中引用 - \cite 与 \nocite

引用的核心是 \cite{key}。这里的 key 是你给文献分配的 引用键(自己决定的短名称)。它会在正文中输出 引用标记(标准文档类中通常是 [1] 这样的编号),同时把该文献加入参考文献列表。多个文献可以用逗号分隔一次引用,如 \cite{knuth,lamport}

可选参数可以附加页码等注记。\cite[p.~5]{knuth} 会输出类似 [1, p. 5] 的结果(~ 是不换行空格,可避免注记中途断行)。注记会与引用标记一起显示。

latex
クヌースは \TeX{} の設計思想を詳述している~\cite{knuth}。
とくに行分割の議論は重要である~\cite[p.~94]{knuth}。
複数の文献をまとめて挙げることもできる~\cite{knuth,lamport}

如果某篇文献不在正文中引用,但仍想放入列表,可以使用 \nocite{key}。它不会输出引用标记,只会登记到列表中。特殊写法 \nocite{*} 会把 .bib 文件中的 所有条目 都列入列表(想展示整个文献数据库时很方便)。

手写参考文献列表 - thebibliography

让 LaTeX 自己排列表的最基本方法是 thebibliography 环境。其中每个 \bibitem{key} ... 表示 一条文献key 是该条目的引用键,后面的正文是列表中显示的文献信息。\cite{key} 会与这里具有相同 key\bibitem 匹配,并取出该条目的编号作为引用标记。

document.tex
\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 默认是数字制,但许多领域要求作者-年份制。

样式切换和更细的引用命令由宏包提供。代表是 natbibbiblatex,它们可以区分括号式引用 \citep{key}(-> (Knuth, 1986))和把作者名融入正文的文本式引用 \citet{key}(-> Knuth (1986))。此外还有只输出作者名的 \citeauthor{key}、只输出年份的 \citeyear{key}。natbib 同时支持数字制和作者-年份制。详情请参阅各宏包的页面。

命令样式输出示例
\cite标准(数字制)[1];带注记时为 [1, p. 5]
\citepnatbib / biblatex(括号式)(Knuth, 1986)
\citetnatbib / biblatex(文本式)Knuth (1986)
\citeauthornatbib / biblatex(仅作者)Knuth
\citeyearnatbib / 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 文件,再让 BibTeXbiber 生成列表。这样可以按投稿规范自动完成编号、排序和样式处理,也能在多个稿件中复用同一个 .bib\cite 的用法本身不变。BibTeX 页面会更详细地说明。