lualatex shell 启用的行为是否有意与 pdflatex 不同?

lualatex shell 启用的行为是否有意与 pdflatex 不同?

我正在尝试使用 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]

相关内容