有时我需要运行编译两次(例如当我使用时lastpage
)。有没有办法设置一些东西让 TeX 知道需要第二次运行并自动执行?我使用 Texmaker。
答案1
编辑更新:我刚刚注意到我稍微误解了你的问题。有些工具可以自动编译所需的次数,例如latexmk。虽然我没有用过它,但肯定有用户可以告诉你关于它的一切。我使用 latexmk 已经有一段时间了,它工作得很好(虽然还没有尝试过参考书目),甚至与biblatex
Biber 一起使用,而且支持很棒,作者甚至回答了这里有疑问。
至于我下面的初始答案,它可能仍然有帮助,因为它可以消除两次编译的需要。
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
。
- 博客文章:使用 Rubber 创建文档
- 问题:latexmk 和橡胶有什么区别?
答案3
关于Seamus 最近发表的一篇博文称“过度杀伤是好事”,这是另一种方法。
MiKTeX 发行版包括texify
(和pdftexify
)。它们不同于标准对应项latex
(-> dvips
)和pdflatex
例程,因为它们会在需要时自动重新编译文档。