您必须编译文件两次才能在接受的答案中获得所需的输出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
文件)。第二次编译运行将排版包含多页的图表列表,因此所有图表的页码都会发生变化。因此,您需要第三次运行才能在图表列表中获得正确的数字。