使用 TeXShop,如何自动编译两次或更多次

使用 TeXShop,如何自动编译两次或更多次

大家都知道需要编译两次才能达到所需输出的感觉。

我正在使用 TeXShop,有点厌倦点击排版按钮,等待所有内容编译完成,然后点击排版再次按下按钮,等待第二次编译......

有什么解决方案可以让 TeXShop 自动编译两次或更多次吗?

答案1

MyPdfLatex.engine在目录中创建一个类似于以下名称的文件~/Library/TeXShop/Engines/,并通过以下方式使其可执行chmod +x MyPdfLatex.engine

#!/bin/sh
bfname="$1"
pdflatex  --file-line-error --shell-escape  -recorder --synctex=1 "\input{$bfname}"
pdflatex  --file-line-error --shell-escape  -recorder --synctex=1 "\input{$bfname}"

您应该根据pdflatex具体情况自定义上述命令行。然后,下次重新启动 TeXShop 时,选择MyPdfLatex而不是LaTeX。然后,当您Typeset仍然看到它编译两次时。

如果您希望下拉引擎默认为MyPdfLatex,请转到Preferences/Typesetting面板并设置默认命令MyPdfLatex

答案2

对于这种特殊情况(从您的最初问题中并不明显)的最佳工具是使用 TeXShoparara引擎并使用arara规则来编译文件。

看:

在这种情况下,您只需将以下几行放在文档顶部即可:

% !TEX TS-program = arara
% arara: pdflatex
% arara: pdflatex { synctex: true }

第一行告诉 TeXShop 使用arara引擎,接下来的两行告诉arara对文件进行两次处理。由于第一次编译的结果永远不会被查看,因此pdflatex可以不带任何选项运行;在第二次运行时,synctex将添加选项,以便您在源和预览之间实现同步。显然,如果您使用的是引擎,您可以调整工具以运行lualatexxelatex等。

对于其他用例(特别是解决引用和参考),该latexmk方法非常有用。

TeXShop 带有一个引擎,它将根据需要多次pdflatexmk编译您的文档(并运行bibtex或和其他工具),但不会更多。biber

这比盲目地要求文档编译两次要好。最简单的使用方法是添加:

% !TEX TS-program = pdflatexmk

添加到文档的第一行。不同引擎有其他版本(xelatexmklualatexmk等)。

如果引擎没有出现在下拉式排版菜单中,那么您需要将其从文件Inactive夹移动到Engines文件夹中~/Library/TeXShop

看:

当然,这两种方法可以结合起来,所以如果你正在使用,arara你可以让第一个编译是简单的pdflatex,而第二个编译使用latexmk并兼具两全其美的效果:

% !TEX TS-program = arara
% arara: pdflatex
% arara: pdflatexmk { synctex: true }

相关内容