Typesmith

引用与参考文献

thebibliography、\cite 与文献管理:让引用编号永不手抖

进阶约 20 分钟

为什么参考文献必须交给机器管理

手写参考文献是个噩梦:你删掉第 5 条文献,后面所有编号都要重排;正文里「[7]」指向哪篇,全靠人肉核对。一旦文献超过十几条,出错几乎是必然的。

LaTeX 的思路和第 4 课的交叉引用完全一致:你只声明「这里引用了某篇文献」,编号交给编译器算。文献列表排在最前面或最后面,编号自动生成并自动同步到每一处引用。

要理解基本原理,先掌握最朴素的 thebibliography 环境;理解了它,迁移到工程化的 .bib 数据库方案就是水到渠成。

thebibliography:手动维护的文献表

thebibliography 环境放在文末,环境名后面跟着一个参数,用来告诉 LaTeX「文献编号最大是几位数」。写 \begin{thebibliography}{9} 表示编号最多一位数(1 到 9),宽度按一位数预留;超过九条就写 {99}。

环境里面,每条文献以 \bibitem{记号} 开头,记号 就是你给这篇文献起的引用名(如 lamport);\bibitem 后面紧跟着写出该文献的完整信息。

正文里则用 \cite{记号} 引用。编译后,\cite{lamport} 会输出「[1]」这样的编号,且编号与文献表里的顺序严格对应、自动同步。

第一条参考文献
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

找找标题区里那个小小的「~」:\cite 前用不换行空格,能保证编号 [1] 不被折行拆散。这个细节是第 2 课知识点的实战应用。

\cite 与 \bibitem 的配对规则

规则只有一条却极其重要:\\cite{记号} 里的记号必须与某条 \\bibitem{记号} 完全一致。大小写、拼写、空格都算数。

一个 \cite 可以同时引用多篇文献,用逗号隔开:\cite{lamport,knuth} 会输出「[1, 2]」。也可以指定页码:\cite[p.~25]{knuth} 输出「[2, p. 25]」,方括号里的内容会出现在编号旁边。

另外,环境里 \bibitem 的排列顺序决定了编号顺序,而不是正文引用的先后。所以如果你希望按引用先后编号,就需要手动调整 \\bibitem 的次序——这正是下一节要介绍的 .bib 方案要自动解决的问题。

一次引用多篇与带页码引用
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

\cite{lamport,knuth} 会合并成「[1, 2]」;\cite[pp.~1--10]{knuth} 则把方括号内容附在编号后,输出「[2, pp. 1–10]」。

进阶路线:.bib 数据库与 BibTeX / biblatex

当文献多起来,把完整信息写在正文里会越来越乱。工程化方案是把文献信息抽出来,单独放进一个扩展名为 .bib 的数据库文件,每条文献只写一次,正文里只用 \cite 按记号引用。

配合的工具链有两条:传统 BibTeX(配 \bibliographystyle 与 \bibliography)和更现代的 biblatex + biber(配 \addbibresource 与 \printbibliography)。它们都能做到按引用先后自动排序、统一格式、去重。

原理你已经掌握了:无论工具怎么换,「正文 \cite + 文献条目按记号匹配 + 编号自动生成」这条主线始终不变。本站的真实编译环境同样支持完整的 BibTeX/biblatex 工具链,等你需要时再深入学习。

练习:给文章加上参考文献
pdfLaTeX

在正文里至少两处使用 \cite 引用不同文献,并在文末用 thebibliography 环境列出对应的两条 \bibitem 条目。

编辑器加载中…

检查点(实时)

  • 正文至少两处 \cite
  • 使用 thebibliography 环境
  • 至少两条 \bibitem

🎯 目标效果

Typesetting with LaTeX is enjoyable ???. The engine is TeX ???.

9

Leslie Lamport, LaTeX: A Document Preparation System, 1986.

Donald E. Knuth, The TeXbook, 1984.

引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

练习:进阶:带页码的合并引用
pdfLaTeX

在正文用一次 \cite{a,b} 同时引用两篇文献,再用一次 \cite[p.~5]{a} 带页码引用;文末为 a、b 各写一条 \bibitem。

编辑器加载中…

检查点(实时)

  • 用 \cite{a,b} 合并引用
  • 用 \cite[p.~5]{a} 带页码引用
  • 两条 \bibitem

🎯 目标效果

Both ??? are relevant, see also ???.

9

Author A, First Book, 2001.

Author B, Second Book, 2002.

引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

完成所有练习的检查点会自动记录