使用 latexmk 和 TeXShop 的 pdflatex 命令行选项

使用 latexmk 和 TeXShop 的 pdflatex 命令行选项

除了在源文件中,如何在使用 TEXShop 中的引擎时指定命令行选项(例如-shell-escape) ?有没有办法在“首选项”中指定?pdflatexpdflatexmk

根据 Herb Schultz 的“使用 latexmk 和 TeXShop”指南,指定 pdflatex 命令行选项的一种方法是在源文件本身中。但我希望将源文件和排版程序的命令行选项分开。

答案1

感谢@MajidAbdolshah 和@HerbSchulz 的评论。以下答案基于他们的评论。

有两种选择。各有利弊。

  1. 按照以下说明创建新引擎tex.stackexchange.com/q/139173pdflatexmk.engine自那篇文章以来,肯定已经发生了变化——现在有一个TSUserCompileOptions变量。请参阅下面的示例。优点是只有在需要时才能在 TeXShop 中选择此引擎。缺点是需要创建此文件、将其安装在正确的位置等,并且可能无法延续到下一个版本的 TeXShop。
  2. 在主文件顶部添加一个指令 - % !TEX parameter = —shell-escape- (我相信在前 20 行)。优点是该指令仅限于此文件(或项目)。缺点是排版程序的指令嵌入在源文件中。我想这种模式已经实践了很长时间,但尽管如此,对我来说还是有点麻烦。[顺便说一句,这个指令最终成为 bash 脚本中的第二个${2}参数latexmk

新引擎文件(pdflatexmk-shell.engine,复制自 pdflatexmk.engine)中的修改应如下所示:

if [ -n "${2}" ] ; then
"${LTMKBIN}"/latexmk -pdf -r "${LTMKEDIT}/latexmkrcedit" -e "\$TSUserCompileOptions='-shell-escape ${2}'" -r "${TSBIN}/pdflatexmkrc" ${localrc} "$1"
else
"${LTMKBIN}"/latexmk -pdf -r "${LTMKEDIT}/latexmkrcedit" -e "\$TSUserCompileOptions=-shell-escape" -r "${TSBIN}/pdflatexmkrc" ${localrc} "$1"
fi

bash 脚本可以在或 中pdflatexmk.engine找到,您创建的文件需要放在 中。重新启动 TeXShop 后,它应该作为引擎之一出现在顶部的下拉菜单中。~/Library/TeXShop/Engines/~/Library/TeXShop/Engines/Inactive/Latexmk/~/Library/TeXShop/Engines/

另一个选项是允许在应用程序首选项中配置每个引擎。此路线适用于某些引擎(例如 LaTeX 和 BibTeX),但不是全部。

相关内容