Tikz externalize kann nicht mit lualatex ausgeführt werden, aber es hat funktioniert

Tikz externalize kann nicht mit lualatex ausgeführt werden, aber es hat funktioniert

Ich versuche, die TikZ-Externalisierungsbibliothek mit lualatex zu verwenden (aufgrund verschiedener Anforderungen). Früher hat es problemlos funktioniert (sagen wir vor etwa 1,5 Jahren), aber ich habe jetzt ein Upgrade durchgeführt – ich teste Debian und habe TeX Live 2016, wobei luatex sich selbst als „Dies ist LuaTeX, Version 1.0.0 (TeX Live 2016/Debian) (Format = lualatex 2017.3.20) 20. April 2017, 20:31 Uhr“ ankündigt. Ich habe diese einfachste Datei ausprobiert, das erste Beispiel aus der TikZ-Externalisierungsdokumentationsbibliothek.

\documentclass{article}
% main document, called main.tex
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize % activate!
\begin{document}
\loggingall
\begin{tikzpicture}
  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };
\end{tikzpicture}

A simple image is \tikz \fill (0,0) circle(5pt);.
\end{document}

Wenn ich „pdflatex --shell-escape main“ ausführe, funktioniert es einwandfrei. Wenn ich jedoch pdflatex durch lualatex ersetze, stürzt es mit folgendem ab:

! Package tikz Error: Sorry, the system call 'lualatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "main-figure1" "\def\tikzexternalrealjob{m
ain}\input{main}"' did NOT result in a usable output file 'main-figure1' (expec
ted one of .pdf:.jpg:.jpeg:.png:). Please verify that you have enabled system c
alls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also name
d 'write 18' or something like that. Or maybe the command simply failed? Error 
messages can be found in 'main-figure1.log'. If you continue now, I'll try to t
ypeset the picture.

Hat jemand eine Idee, was hier falsch sein könnte? „lualatex --shell-escape“ selbst funktioniert einwandfrei (ich habe es mit einer trivialen Datei ausprobiert) und das Ausführen von „lualatex -shell-escape -halt-on-error -interaction=batchmode -jobname „main-figure1“ „\def\tikzexternalrealjob{main}\input{main}““ direkt von einer Befehlszeile aus schien einwandfrei zu funktionieren, falls das etwas bedeutet.

Danke!

Antwort1

Sie benötigen das Shellesc-Paket

\documentclass{article}
\usepackage{shellesc}
% main document, called main.tex
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize % activate!
\begin{document}
\loggingall
\begin{tikzpicture}
  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };
\end{tikzpicture}

A simple image is \tikz \fill (0,0) circle(5pt);.
\end{document}

verwandte Informationen