如果加载包“optional”,Tikz 库“external”会产生错误吗?

如果加载包“optional”,Tikz 库“external”会产生错误吗?

我正在处理一个大型文档,该文档超出了 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} 

这只是猜测,但我认为发生的事情是,由于您没有提供包选项,因此它会恢复到命令行以要求用户输入选项。但由于您是在批处理模式下运行,因此这是一个问题。

以下代码适用于我使用pdflatexTeXLive2011 的情况:

\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}

并得出:

在此处输入图片描述

相关内容