TikZ 图像无法进行外部编译

TikZ 图像无法进行外部编译

我有许多大型图表,当我尝试用 编译它们时,它们会耗尽内存xelatex,因此我改用lualatex,它能够毫无困难地编译它们。

但是,我无法让我的文档在外部进行编译。我通常使用纺织机械商作为我的编辑器并用它来构建,但当我运行或从命令行xelatex运行时,也会出现外部化的问题。pdflatex --shell-escapexelatex -shell-escape

如果我运行pdflatex --shell-escape <filename>.tex,pdflatex 将在启用 \write18 的情况下运行:

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 \write18 enabled.
entering extended mode
(./external.tex

...但因以下错误而终止:

===== 'mode=convert with system call': Invoking 'lualatex --shell-escape -halt-
on-error -interaction=batchmode -jobname "external-figure0" "\def\tikzexternalr
ealjob{external}\input{external}"' ========
This is LuaTeX, Version beta-0.76.0-2013052800 (rev 4627) 
 \write18 enabled.
Syntax Error: Couldn't read xref table
Syntax Warning: PDF file is damaged - attempting to reconstruct xref table...
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table

!pdfTeX error: pdflatex (file ./external-figure0.pdf): xpdf: reading PDF image 
failed
 ==> Fatal error occurred, no output PDF file produced!

如果我运行xelatex --shell-escape <filename>.tex,xelatex 也会在启用 \write18 的情况下运行:

This is XeTeX, Version 3.1415926-2.5-0.9999.3 (TeX Live 2013) (format=xelatex 2013.9.6)  18 SEP 2013 18:14
entering extended mode
 \write18 enabled.
 %&-line parsing enabled.
**external.tex
(./external.tex

...但在这种情况下,lualatex 会因以下错误而停止:

===== 'mode=convert with system call': Invoking 'lualatex --shell-escape -halt-
on-error -interaction=batchmode -jobname "external-figure0" "\def\tikzexternalr
ealjob{external}\input{external}"' ========
This is LuaTeX, Version beta-0.76.0-2013052800 (rev 4627) 
 \write18 enabled.
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
! Unable to load picture or PDF file 'external-figure0.pdf'.
<to be read again> 
                   }
l.34 \end{tikzpicture}

? 

并等待输入。

这是我的 MWE:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{external} 
\pgfplotsset{compat=newest}

\tikzset{external/system call={lualatex --shell-escape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\tikzexternalize

\begin{document}
\begin{tikzpicture}

\begin{axis}[
height=9cm,
width=9cm,
grid=major,
]
\addplot {-x^5 - 242};
\addlegendentry{model}
\addplot coordinates {
(-4.77778,2027.60977)
(-3.55556,347.84069)
(-2.33333,22.58953)
(-1.11111,-493.50066)
(0.11111,46.66082)
(1.33333,-205.56286)
(2.55556,-341.40638)
(3.77778,-1169.24780)
(5.00000,-3269.56775)
};
\addlegendentry{estimate}
\end{axis}
\end{tikzpicture}
\end{document}

我正在使用 Tex Live 2013。我在 Tex Live 2012 中也遇到了这个问题。我不清楚这里出了什么问题。

答案1

独立版会创建一个封装的 PDF 图像,可以像其他图像一样处理。放弃外部化,创建一个名为(例如)tikz.pdf 的 PDF 文件并运行

\documentclass{article}
\usepackage{graphics}

\begin{document}
\begin{center}
\includegraphics{tikz.pdf}
\end{center}
\end{document}

或其一些变体。

答案2

我在使用 pgfplots 包时也遇到了同样的问题 - 该包使用 Tikz 绘制漂亮的科学图表,同时也利用了它的外部化库。

我将所有外部文件存储在子文件夹中pgfplots图形使用设置:

\tikzexternalize[prefix=pgfplotsfigures/]

删除上述文件夹中的所有文件也会消除错误,并且可以正确编译 tex 文件,而不会因无法读取的 xref 字典而绊倒。

相关内容