正如解释的那样作者:Andy Roberts例如,如果您需要编译一个包含 bibtex 引用的新文档,那么您需要运行 latex 三次,运行 bibtex 一次:
latex document
bibtex document
latex document
latex document
为什么 latex 不能自己解决这个问题,只做它需要做的事情?它在后面的运行中做了什么,而在前面的运行中却做不到?
答案1
原因如下:
首次
latex
运行时,所有\cite{...}
参数都写入文件中document.aux
。在
bibtex
运行时,bibtex 会获取这些信息,并将相关条目放入.bbl
文件中,按字母顺序或引用顺序排序(有时称为“未分类”),并根据正在使用的参考书目样式提供的说明进行格式化。在下次运行时
latex
,.bbl
文件将包含在指令处\bibliography
,并且命令的正确标签\cite{...}
写入.aux
文件中。只有在最后一次运行时,
latex
知道正确的标签是什么并将它们包含在文档中。
TeX 和 BibTeX 之所以这样设计,是因为当时内存很小,文件系统是存储文件的唯一好方法。但你不能读写同一个文件(当然可以,但更复杂),所以你必须运行latex
两次bibtex
,以及在交叉引用等情况下也必须运行两次。
一些通行证可以使用biblatex
以下方式保存:bibtex
保存某些过程。无论如何,所有引用(和交叉引用)在文档准备期间都会稳定下来,因为我们所有人都多次编译我们的文档……