我正在使用 beamer 制作演示文稿。我有一些 tikz/pgf 图片需要外部化。但是这些图片无法正确地放回到文档中。它们不在幻灯片上的正确位置,而且标题也丢失了。据我所知,外部化确实正确地生成了图片。在文章类文档中使用 hyperref 包时,我遇到了同样的问题。据我所知,beamer 本身使用 hyperref 吗?
我不确定如何解决这个问题,有什么想法吗?
这是一个简单的工作示例
\documentclass[red]{beamer}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"; dvips -o "\image".ps "\image".dvi}}
\tikzset{external/force remake}
\begin{document}
\frame{
\begin{figure}
\centering
\tikzsetnextfilename{MyFig}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=5,
ymin=1,ymax=6,
domain=0:5]
\addplot [red] {x*x-2*x+3};
\end{axis}
\end{tikzpicture}
\label{fig:MyFig}
\caption{This text is missing}
\end{figure}
}
\end{document}
我使用 TeXLive 进行编译:
latex -interaction=nonstopmode -shell-escape %.tex; dvips -o %.ps %.dvi; ps2pdf %.ps
答案1
geometry
这是和之间的驱动程序不兼容问题tikz
:在 tikz 能够之前geometry
发出一些\special
纸张尺寸选项。
一个解决方法似乎是添加
\tikzifexternalizing{%
\geometry{driver=none}
}{}%
你的序言。
这告诉geometry
人们避免改变纸张尺寸 - 但前提是当前正在生成外部图像。
另一种方法是使用不同的驱动程序(pdflatex
似乎不受影响)。
答案2
我发现一个解决方法是在外部化中使用 pdf2ps 路由。我完全不明白为什么这样做有效...
\documentclass[red]{beamer}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize
%%\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"; dvips -o "\image".ps "\image".dvi}}
\tikzset{external/system call={pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"; pdf2ps "\image".pdf "\image".ps}}
\tikzset{external/force remake}
\begin{document}
\frame{
\begin{figure}
\centering
\tikzsetnextfilename{MyFig}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=5,
ymin=1,ymax=6,
domain=0:5]
\addplot [red] {x*x-2*x+3};
\end{axis}
\end{tikzpicture}
\label{fig:MyFig}
\caption{This text is missing}
\end{figure}
}
\end{document}