为什么 Latex/Bibtex 需要三次才能消除所有警告?

为什么 Latex/Bibtex 需要三次才能消除所有警告?

正如解释的那样作者:Andy Roberts例如,如果您需要编译一个包含 bibtex 引用的新文档,那么您需要运行 latex 三次,运行 bibtex 一次:

latex document
bibtex document
latex document
latex document

为什么 latex 不能自己解决这个问题,只做它需要做的事情?它在后面的运行中做了什么,而在前面的运行中却做不到?

答案1

原因如下:

  1. 首次latex运行时,所有\cite{...}参数都写入文件中document.aux

  2. bibtex运行时,bibtex 会获取这些信息,并将相关条目放入.bbl文件中,按字母顺序或引用顺序排序(有时称为“未分类”),并根据正在使用的参考书目样式提供的说明进行格式化。

  3. 在下次运行时latex.bbl文件将包含在指令处\bibliography,并且命令的正确标签\cite{...}写入.aux文件中。

  4. 只有在最后一次运行时,latex知道正确的标签是什么并将它们包含在文档中。

TeX 和 BibTeX 之所以这样设计,是因为当时内存很小,文件系统是存储文件的唯一好方法。但你不能读写同一个文件(当然可以,但更复杂),所以你必须运行latex两次bibtex,以及在交叉引用等情况下也必须运行两次。

一些通行证可以使用biblatex以下方式保存:bibtex保存某些过程。无论如何,所有引用(和交叉引用)在文档准备期间都会稳定下来,因为我们所有人都多次编译我们的文档……

相关内容