我有一个很大的文档(我使用 pdflatex 和 Eclispe 和 TeXlipse),其中包含许多(许多)TikZ 图形(其中大多数是数学函数图)。为了大幅减少编译时间,我阅读了有关使用 externalize 以保存图而不是每次都重做它们的信息。问题是我正在使用一本书的模板(我只是从美观角度对其进行了修改)以及其他偶然使用该环境的命令。尝试编译时,如果激活了,tikzpicture
则会收到错误:tikzexternalize
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/]
如果我注释掉最后一行,就不会出现任何错误,但同样也不会发生任何外部化。
如果不对其进行注释,我会在模板的每个用户定义环境中遇到错误,甚至是章节标题(模板重新定义了一些与 \chapter 相关的命令)。问题是,我不在乎这些东西是否被外部化(我甚至不知道它们是否可以),因为它们是几乎不需要计算的小东西。但我的函数图确实需要大量计算,并且确实减慢了编译过程。另一件可能导致麻烦的事情是,由于我在西班牙语中使用 babel,我不得不定义自己的 tikzpicture 环境以避免出现“>”字符的问题。新环境如下所示:
\newenvironment{tikzpict}[1][]
{\begin{tikzpicture}[#1]\selectlanguage{english}}
{\selectlanguage{spanish}\end{tikzpicture}}
错误信息如下:
tikz 软件包错误:抱歉,系统调用“pdflatex -halt-on-error -interaction=batchmode -jobname "tikz/document-figure0" "\def\tikzexternalrealjob{document}\input{document}"”未产生可用的输出文件“tikz/document-figure0”(预期为 .pdf:.jpg:.jpeg:.png: 之一)。请确认您已启用系统调用。对于 pdflatex,这是“pdflatex -shell-escape”。有时它也被命名为“write 18”或类似名称。或者命令可能只是失败了?错误消息可以在“tikz/document-figure0.log”中找到。如果您现在继续,我将尝试排版图片。\chapter*{Licencia}(后跟:\addcontentsline{toc}{chapter}{Licencia})
有没有办法告诉 TikZ 只将部分图片外部化?如果能解决问题,我不介意在每张图片上添加另一个命令来外部化。我并不是在寻找一个过于复杂和花哨的解决方案,只是想要一些可以实现这一点的东西(我也喜欢复杂和花哨的解决方案,但这不是必要的)。
作为示例,我将引用章节定义,但同样,每个使用 TikZ 的环境都会引发相同的错误(就好像它试图将其外部化但无法做到)。
\newcommand{\thechapterimage}{}
\newcommand{\chapterimage}[1]{\renewcommand{\thechapterimage}{#1}}
\def\thechapter{\arabic{chapter}}
\def\@makechapterhead#1{
\thispagestyle{empty}
{\centering \normalfont\sffamily
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\startcontents
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.north west)
{\begin{tikzpicture}[remember picture,overlay]
\node[anchor=north west,inner sep=0pt] at (0,0) {\includegraphics[width=\paperwidth]{\thechapterimage}};
%Commenting the 3 lines below removes the small contents box in the chapter heading
% \draw[fill=white,opacity=.6] (1cm,0) rectangle (8cm,-7cm);
% \node[anchor=north west] at (1cm,.25cm) {\parbox[t][8cm][t]{6.5cm}{\huge\bfseries\flushleft \printcontents{l}{1}{\setcounter{tocdepth}{2}}}};
\draw[anchor=west] (5cm,-9cm) node [rounded corners=25pt,fill=white,fill opacity=.6,text opacity=1,draw=ocre,draw opacity=1,line width=2pt,inner sep=15pt]{\huge\sffamily\bfseries\textcolor{black}{\thechapter\ ---\ #1\vphantom{plPQq}\makebox[22cm]{}}};
\end{tikzpicture}};
\end{tikzpicture}}\par\vspace*{230\p@}
\fi
\fi
}
\def\@makeschapterhead#1{
\thispagestyle{empty}
{\centering \normalfont\sffamily
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\startcontents
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.north west)
{\begin{tikzpicture}[remember picture,overlay]
\node[anchor=north west] at (-4pt,4pt) {\includegraphics[width=\paperwidth]{\thechapterimage}};
\draw[anchor=west] (5cm,-9cm) node [rounded corners=25pt,fill=white,opacity=.7,inner sep=15.5pt]{\huge\sffamily\bfseries\textcolor{black}{\vphantom{plPQq}\makebox[22cm]{}}};
\draw[anchor=west] (5cm,-9cm) node [rounded corners=25pt,draw=ocre,line width=2pt,inner sep=15pt]{\huge\sffamily\bfseries\textcolor{black}{#1\vphantom{plPQq}\makebox[22cm]{}}};
\end{tikzpicture}};
\end{tikzpicture}}\par\vspace*{230\p@}
\fi
\fi
}
\makeatother
提前致谢。