使用 pgfplot externalize 和 .eps 输出

使用 pgfplot externalize 和 .eps 输出

我尝试使用 pgfplot 的外部化功能,因为我有很多大型图,我不想每次排版论文时都重新生成它们。我的论文的其他部分需要通过 latex > ps > pdf 进行编译(即“latex”后跟“dvips”后跟“ps2pdf”),所以我尝试坚持这样做。不幸的是,我无法让外部化正常工作。这是我的最小示例,我按照 pgfplots 手册中有关获取 .eps 输出的说明(第 240 页)制作了该示例。

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.groupplots}
\usepgfplotslibrary{external}
\tikzexternalize[shell escape=-enable-write18]
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" & dvips -o "\image".ps "\image".dvi}}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xlabel=x,ylabel=y]
\addplot[] coordinates{(0,0) (1,2)};
\end{axis}
\end{tikzpicture}

\end{document}

当我进行编译时,图形的外部 .dvi 和 .ps 文件成功生成,并且没有错误,但实际编译的文档 .pdf 中没有该图形。pgfplots 手册建议我获取 .eps 输出,但这并没有发生(也许这就是问题所在?)。有人能告诉我我做错了什么吗?

答案1

看起来你在这一\tikzset行中犯了两个拼写错误;将其更改为:

\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" && dvips -o "\image".eps "\image".dvi}}

将使 shell 命令从每个 .dvi 文件生成一个 .eps 文件运行latex命令来创建该 .dvi 文件。(我将.ps文件中的 替换为.eps,将&替换为&&。有趣的是,&似乎可以在 MiKTeX 中异步调用 latex;我想知道它为什么这样做?我认为它不cmd.exe支持这一点,尽管它确实支持&&。)

但不幸的是,这些似乎都无济于事:虽然我最终得到了包含 .eps 内容的整个文档的 postscript 文件,但它似乎并没有显示任何内容,尽管 .eps 文件本身可以很好地呈现,而且我也没有收到任何有关它的错误消息:-(

答案2

人们通常会忘记正确激活不受限制的 shell 逃逸:

latex -shell-escape foo.tex

相关内容