Lualatex Tikz 在 scrartcle 类中外部化错误

Lualatex Tikz 在 scrartcle 类中外部化错误

考虑以下 MWE:

\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\tikzset{external/system call={lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}

\begin{document}
    \begin{tikzpicture}
        \draw (0,0) -- ++(2,2);
    \end{tikzpicture}
\end{document}

当用 编译它时lualatex -shell-escape externalizeTest.tex,会导致错误(在我的情况下,该文件名为externalizeTest.tex

! Package tikz Error: Sorry, the system call 'lualatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "externalize-figure0" "\def\tikzexternalre
aljob{externalize}\input{externalize}"' did NOT result in a usable output file 
'externalize-figure0' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify th
at you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape
'. Sometimes it is also named 'write 18' or something like that. Or maybe the c
ommand simply failed? Error messages can be found in 'externalize-figure0.log'.
 If you continue now, I'll try to typeset the picture.

然而,如果我将 改为documentclassstandalone一切都会顺利进行。

pdflatex如果我使用而不是lualatex来编译文档,情况也是如此。

有人知道这里发生了什么事吗?

答案1

现在尽管我不知道为什么发生这种情况时,我找到了解决问题的方法(另请参阅无法使用 lualatex 运行 tikz externalize,但它以前可以工作):

如果我也包括shellesc包,那么文档lualatex也可以很好地编译(与scrartcle类一起)。然后 MWE 如下所示:

\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\tikzset{external/system call={lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\usepackage{shellesc}

\begin{document}
    \begin{tikzpicture}
        \draw (0,0) -- ++(2,2);
    \end{tikzpicture}
\end{document}

现在我思考我曾经读过一次,它lualatex处理 shell 转义的方式与此不同,pdflatex因此必须包含该shellesc包以使其与“正常方式”兼容。

至于为什么它可以与 一起工作standalone,我最好的猜测是这个类隐式地包含了shellesc包。但我实际上并没有这方面的证据。

如果有人知道到底发生了什么,如果你能发表评论甚至写下自己的答案就太好了……

相关内容