在哪些情况下您需要多次编写一份文档?

在哪些情况下您需要多次编写一份文档?

您必须编译文件两次才能在接受的答案中获得所需的输出2 列 Lineno. 接受的答案是我怎样才能避免编译两次?提供了一种避免多次编译的方法。

我的问题是,在什么情况下需要多次编译一个文件?
(根据链接的问题,我们知道至少有两种这样的情况。)

答案1

任何需要将信息写入辅助文件并从​​辅助文件中读取的文档都需要多次编译。这些文档包括

  • 引用使用\ref,或vref来自varioref,或cref来自cleveref
  • \tableofcontents,,\listoffigures\listoftables
  • \thumbsoverview拇指包裹)
  • 参考书目
  • 索引
  • \pdfbookmark

具体来说,如果上述任何一项有发生变化的原因,则需要多次编译 - 例如,您在文档中添加新的部分,这必然会改变\tableofcontents

当然,在bibliographies和的情况下,indexes需要在多个编译之间运行bibtex(或biber)或makeidx以确保它们保持最新。

根据 Gonzalo 的评论,有些情况不涉及辅助文件,就像一些表构建包一样,这些包需要多次传递才能计算表的正确元素(longtable例如);或者PGF/TikZ在使用remember picture/overlay选项时使用特殊代码。

答案2

为了正确地排列长桌“在典型情况下,算法将在三到四次传递后收敛”(手册,第 4 节)。

答案3

通常不仅需要两次,而是三次或更多次运行。想象一下,一份文档包含大量图表,并且在文档的前几页的某处有一个图表列表。所有页面都使用升序阿拉伯数字进行编号。第一次编译运行将排版文档,而图表列表中没有任何条目,但会收集文件中的信息.lof(通过.aux文件)。第二次编译运行将排版包含多页的图表列表,因此所有图表的页码都会发生变化。因此,您需要第三次运行才能在图表列表中获得正确的数字。

相关内容