我正在处理一个大型文档,该文档超出了 TexLive 2011 的内存容量,因此我尝试使用它的external
库来外部化 tikz 图像,如 pgfmanual 中所述。我使用
pdflatex -shell-escape foo.tex
这导致了如下错误:
! tikz 软件包错误:抱歉,系统调用“pdflatex -shell-escape -halt-on-e rror -interaction=batchmode -jobname "foo-figure0" "\def\tikzexternal realjob{foo}\input{foo}"”未产生可用的输出文件“foo-figure0”(预期为 .pdf:.jpg:.jpeg:.png: 之一)。请确认您已启用系统调用。对于 pdflatex,这是“pdflatex -shel l-escape”。有时它也被命名为“write 18”或类似名称。或者命令可能只是失败了?错误消息可以在“ktikztemplate-fig ure0.log”中找到。如果您现在继续,我将尝试排版图片。
我设法缩小了问题范围,并得出了以下产生相同错误的 MWE:
\documentclass{article}
\usepackage{optional}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\draw(0,0)--(1,1);
\end{tikzpicture}
\end{document}
注释掉该\usepackage{optional}
行,错误就消失了。如果没有该包,我可以轻松管理,但如果有解决方案就更好了。
我在 Ubuntu 11.10 上使用 TexLive 2011(都是几天前新安装的)。
答案1
看来如果你提供一些选项,这个\usepackage{optional}
命令就会编译。
\usepackage[opta]{optional}
这只是猜测,但我认为发生的事情是,由于您没有提供包选项,因此它会恢复到命令行以要求用户输入选项。但由于您是在批处理模式下运行,因此这是一个问题。
以下代码适用于我使用pdflatex
TeXLive2011 的情况:
\ifdefined\Options%
\else%
\def\Options{opta}
\fi%
\documentclass{article}
\usepackage[\Options]{optional}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\opt{opta}{Option A was selected}
\opt{optb}{Option B was selected}
\begin{tikzpicture}
\draw(0,0)--(1,1);
\end{tikzpicture}
\end{document}
并得出: