我已经编辑了这篇文章,因为我已经将问题分解为比论文更小的内容。我可以在 cmd 窗口中运行以下命令:
lualatex file.tex
使用以下脚本没有问题:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{float}
\usepackage[hang,small,bf]{caption}
\usepackage{color}
%\usetikzlibrary{external}
%\tikzexternalize
\begin{document}
The golden-crowned sifaka is a medium-sized lemur characterized by mostly white fur, prominent furry ears and a golden-orange crown.
\begin{figure}
\input{sdof.tex}
\caption{This is the caption}
\end{figure}
\begin{figure}
\input{strain.tikz}
\caption{This is the caption}
\end{figure}
\end{document}
但当我取消注释
\usetikzlibrary{external}
\tikzexternalize
行并使用以下内容:
lualatex --shell-escape -interaction=nonstopmode file.tex
它将第一个图编译成 file-figure0.pdf 没有任何问题,但是当编译到第二个图时,就出现了问题,并给出了一个致命错误
sdof.tex 是我在 inkscape 中自己绘制的简单图表,第二个 strain.tikz 是 matlab2tikz 输出的来自测试的大量数据点。
答案1
正如@JuriRobl所说,问题在于外部化使用的是pdflatex,而不是文档最初编译时使用的lualatex。
通过在文档序言中添加以下几行来改变这一点
\usetikzlibrary{external}
\tikzset{external/system call={lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\tikzexternalize