LaTeX 如何告诉我它想要第二次运行?

LaTeX 如何告诉我它想要第二次运行?

有时,当我使用该longtable包时,我会在输出中收到一条消息:

Package longtable Warning: Table widths have changed. Rerun LaTeX.

我读到,XeLaTeX 必须运行三次才能使消息消失。因此,目前我的部署脚本会重新运行 XeLaTeX,直到输出不再包含字符串Rerun LaTeX

那么,这是检测是否需要重新运行的官方方法(所有软件包都使用)还是还有其他方法,例如特定的返回值?我已经可以排除文件.aux作为指标的存在,因为该文件从未被删除。

答案1

LaTeX2e 内核中没有通用机制来向用户报告“重新运行 LaTeX”或类似信息。因此,每个软件包作者都应决定如何传递此信息。例如,内核将发出以下形式的消息

LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

\label如果文档中有新命令,etaremune则包后面跟着的模型也会使用 LaTeX 警告机制:

LaTeX Warning: Etaremune labels have changed.
               Rerun to get them right.

但是,其他包使用“信息”消息,直接写入日志,ETC。

logreq包可能是最接近请求重新运行的通用机制。它由 Philipp Lehman 编写,主要是为了将信息传递给用户biblatex请求 LaTeX/BibTeX/Biber 运行,但设计为通用的,并在日志中为自动化系统提供可解析的信息。在 Philipp 从 LaTeX 世界中“消失”之前,他和我曾简要讨论过为 LaTeX3 实现一个类似的想法 ( expl3),这仍然在我的“待办事项”列表中。与大多数事情一样,强烈的理清需求最有可能让我去做这件事!

相关内容