如何在使用 pdflatexmk 时启用 --shell-escape?

如何在使用 pdflatexmk 时启用 --shell-escape?

我想使用该auto-pst-pdf包,因此我需要--shell-escape启用该选项。我在 TeXShop 首选项中执行了以下操作:

在此处输入图片描述

但是当我使用pdflatexmk(在第一行写入% !TEX TS-program = pdflatexmk)编译我的文档时,该选项不被考虑并且auto-pst-pdf无法使用。
如何使用启用该--shell-escape命令pdflatexmk

我在 Mac OSX 上使用 TeXShop 3.24 和 pdflatexmk 版本 4.37。

答案1

导航到您的~/Library/TeXShop/Engines文件夹并将文件复制pdflatexmk.engine到,例如pdflatexmk-shell.engine。然后使用 TeXShop 本身打开此文件并添加选项-pdflatex="pdflatex --shell-escape %O %S":文件应如下所示:

#!/bin/bash
export TSBIN="$HOME/Library/TeXShop/bin/tslatexmk"
export LTMKBIN="$HOME/Library/TeXShop/bin/tslatexmk"
export LTMKEDIT="$HOME/Library/TeXShop/bin"
# make sure latexmkrcedit exists in bin
if [ ! -e "${LTMKEDIT}/latexmkrcedit" ] ; then
    cp "${LTMKBIN}/latexmkrcDONTedit" "${LTMKEDIT}/latexmkrcedit"
fi
"${LTMKBIN}"/latexmk -pdf -r "${LTMKEDIT}/latexmkrcedit" -r "${TSBIN}/pdflatexmkrc" -pdflatex="pdflatex --shell-escape %O %S" "$1"

现在,如果你用

% !TEX TS-program = pdflatexmk-shell

将启用 shell 逃逸。

这是处理包含该神奇行的文件时控制台的副本:

Latexmk: This is Latexmk, John Collins, 2 July 2013, version: 4.37.
**** Report bugs etc to John Collins <collins at phys.psu.edu>. ****
Rule 'pdflatex': File changes, etc:
   Non-existent destination files:
      'bart.pdf'
------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'pdflatex --shell-escape  -recorder  "bart.tex"'
------------
Latexmk: applying rule 'pdflatex'...
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 \write18 enabled.
entering extended mode
(./bart.tex
LaTeX2e <2011/06/27>
Babel <3.9f> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/size10.clo)) (./bart.aux)
[1{/usr/local/texlive/2013/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./bart.aux) )</usr/local/texlive/2013/texmf-dist/fonts/type1/public/amsfonts/c
m/cmr10.pfb>
Output written on bart.pdf (1 page, 11541 bytes).
Transcript written on bart.log.
Latexmk: Log file says output to 'bart.pdf'
Latexmk: All targets (bart.pdf) are up-to-date

线条

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 \write18 enabled.

是已启用 shell 逃逸的证明。

答案2

如果你愿意尝试其他自动化工具,我强烈推荐 arara。与(我假设是您选择的 IDE)和任何其他编辑器的集成TeXShop都很容易,并且在文档中介绍。

为了让--shell-escape你能够简单地给出指令

% arara: pdflatex: {shell: yes}

相关内容