Tikz 外部化图形未对齐/标题缺失

Tikz 外部化图形未对齐/标题缺失

我正在使用 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}

相关内容