我有一个文件test.pdf
,将其包含在一个包含外部化 pgfplots 图片的文档中。
当我编译以下代码时,出现错误消息Sorry, the system call pdflatex ... did NOT result in a usable file
。为了使我的代码正常工作,我首先需要删除该includepdf
语句,进行编译(以创建外部化图形),然后使用该includepdf
语句再次进行编译。
我认为这是一个错误,或者有没有什么方法可以解决它?
当然,该文件test.pdf
与 pgfplots 的外部图片完全独立。
\documentclass{scrbook}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary[external]
\tikzexternalize[shell escape=-enable-write18]
\usepackage{pdfpages}
\begin{document}
\includepdf{report_test-figure44}
\begin{tikzpicture}
\begin{axis}[
xlabel=Cost,
ylabel=Error]
\addplot[color=red,mark=x] coordinates {
(2,-2.8559703)
(3,-3.5301677)
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
在外部化内容时,可以选择“优化昂贵的命令”。
由于 includepdf 语句与 externalize 无关,我们可以对其进行优化 - 并且您的示例可以编译良好。
更准确地说:我搬家了\usepackage{pdfpages}
前外部化调用并将 includepdf 配置为“删除”:
\documentclass{scrbook}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary[external]
\usepackage{pdfpages}
\tikzexternalize[shell escape=-enable-write18,optimize command away=\includepdf]
\begin{document}
\includepdf{report_test-figure44}
\begin{tikzpicture}
\begin{axis}[
xlabel=Cost,
ylabel=Error]
\addplot[color=red,mark=x] coordinates {
(2,-2.8559703)
(3,-3.5301677)
};
\end{axis}
\end{tikzpicture}
\end{document}
看起来效果不错。
答案2
这个问题在文档。
提供了一种解决方法,其中包括pdfpages
主文档中的包,但不包括在外部化文档中,
\usetikzlibrary{external}
\tikzifexternalizing{%
% don't include package XYZ here
}{%
\usepackage{pdfpages}
\usepackage{vmargin}
...
}%
然而,我在不太干净的设置中运行的测试仍然失败。