我正在尝试使用 TikzEdt,一个用于 TikZ 图形的编辑器。对于某些任务,TikZ 需要调用其他命令,因此我尝试通过--shell-escape
传递给的参数启用此lualatex
功能(在 Windows 上,MiKTeX 2.9)。奇怪的是,这无法启用该功能。经过一番摆弄,结果发现它甚至无法使用此 MWE:
\documentclass{standalone}
\begin{document}
\write18{echo SHELL ENABLED}
\end{document}
TikzEdt 附加了开关并调用,lualatex test.tex --shell-escape
但似乎不起作用。使用 pdflatex 的相同命令运行良好。事实证明,除了 pdflatex 之外,lualatex 中的参数顺序似乎也发挥了作用,lualatex --shell-escape test.tex
运行良好。不幸的是,TikzEdt 只允许附加开关,而不能插入开关。这是 lualatex 中的错误还是 TikzEdt 使用了错误的假设?
答案1
让我们尝试一个简单的文档test.tex
;该包pdftexcmds
已加载以便\pdf@shellescape
所有引擎都可以使用。
\documentclass{article}
\usepackage{pdftexcmds}
\makeatletter
\count@=\pdf@shellescape
\showthe\count@
\makeatother
\begin{document}
Ciao
\end{document}
以下是
pdflatex test
pdflatex test --shell-escape
lualatex test
lualatex test --shell-escape
xelatex test
xelatex test --shell-escape
执行因以下原因停止\showthe
,显示
> 2.
l.5 \showthe\count@
在所有六次调用中(Mac OS X 上是 TeX Live 2012,但我认为它与其他平台没有什么不同)。
如果我们把--shell-escape
以下任何一个的执行放在适当的位置
pdflatex --shell-escape test
lualatex --shell-escape test
xelatex --shell-escape test
停止显示
> 1.
l.5 \showthe\count@
--shell-escape
这意味着可以进行设置仅有的在“中缀表示法”中,并且选项有不如果加后缀则有效。
和往常一样,Paulo Cereda 确认,在 MiKTeX 上,可以在文件名后为pdftex
和指定选项xetex
,但不能为 指定选项luatex
。由于其他系统上最常见的语法格式是“中缀”选项,因此我的观点是 TikZEdt 的假设是错误的。
答案2
luatex
( )的语法lualatex
是
Usage: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
or: luatex --lua=FILE [OPTION]... \FIRST-LINE
or: luatex --lua=FILE [OPTION]... &FMT ARGS
--shell-escape
是一个选择的原因,它必须在之前 TEXNAME[.tex]