我怎样才能避免编译两次?

我怎样才能避免编译两次?

有时我需要运行编译两次(例如当我使用时lastpage)。有没有办法设置一些东西让 TeX 知道需要第二次运行并自动执行?我使用 Texmaker。

答案1

编辑更新:我刚刚注意到我稍微误解了你的问题。有些工具可以自动编译所需的次数,例如latexmk虽然我没有用过它,但肯定有用户可以告诉你关于它的一切。我使用 latexmk 已经有一段时间了,它工作得很好(虽然还没有尝试过参考书目),甚至与biblatexBiber 一起使用,而且支持很棒,作者甚至回答了这里有疑问

至于我下面的初始答案,它可能仍然有帮助,因为它可以消除两次​​编译的需要。


hyperref是一个经常需要编译两次的包。您可以通过加载包来避免这种情况bookmark hyperref

\usepackage{hyperref}
\usepackage{bookmark}

一般来说,这两个包应该是你在前言中最后加载的包,除非有一个包明确要求在之后加载hyperref(见哪些包应该在 hyperref 之后加载而不是之前加载?)。

bookmark提供了一些新的可能性,但是如果您一直在使用hyperref并且并不是真正寻找任何新的东西,那么您可以直接加载bookmark——根据我的经验,它不会改变任何东西(除了必要的编译次数之外)。

答案2

您可以设置 TeXmaker 来用于latexmk编译。latexmk是一个 Perl 脚本,您可以将其设置为自动运行pdflatex(或其他编译器),bibtex和/或makeindex如果有必要。

举一个非常简单的例子,你可以转到选项->配置 TeXmaker->快速构建,并设置自定义快速构建命令,例如

latexmk-pdf %.tex

运行 Quick Build 时,它将pdflatex根据需要多次运行该文件。这%是 TeXmaker 表示当前文件(不带扩展名)的文件名的方式。

请参阅latexmk手册(texdoc latexmk在终端中)了解所有可能的选项。


还有其他类似的选项,例如texify在 MikTeX 中,沃纳提到, 和橡皮。Paulo Cereda 写了一篇关于 Rubber 的博客文章,其中有一个问题涉及它与 之间的区别latexmk

答案3

关于Seamus 最近发表的一篇博文称“过度杀伤是好事”,这是另一种方法。

MiKTeX 发行版包括texify(和pdftexify)。它们不同于标准对应项latex(-> dvips)和pdflatex例程,因为它们会在需要时自动重新编译文档。

相关内容