我有许多大型图表,当我尝试用 编译它们时,它们会耗尽内存xelatex
,因此我改用lualatex
,它能够毫无困难地编译它们。
但是,我无法让我的文档在外部进行编译。我通常使用纺织机械商作为我的编辑器并用它来构建,但当我运行或从命令行xelatex
运行时,也会出现外部化的问题。pdflatex --shell-escape
xelatex -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 字典而绊倒。