使用来自 \savebox 的盒子跨 beamer 框架

使用来自 \savebox 的盒子跨 beamer 框架

我尝试\usebox在不同的框架上使用,但效果不如我预期。在下面的例子中,我预期第二张幻灯片也包含第二个椭圆。

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\newsavebox{\MyBox}
\begin{frame}
    \savebox{\MyBox}{
        \begin{tikzpicture}
            \draw (0,0) ellipse (1cm and 2cm);
        \end{tikzpicture}
    }
    \usebox{\MyBox}
\end{frame}
\begin{frame}
    \usebox{\MyBox}
\end{frame}
\end{document}

PS:我尝试这样做的原因是创建图片的缩略图,以便当您单击时跳转到包含该图片的幻灯片。

答案1

通过将 tikzpicture (及其\savebox) 移出环境framed,其影响可以扩展到整个文档。通过将其放置在环境中 (如您最初所做的那样),您可以将图片的范围限制在该环境中。

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\newsavebox{\MyBox}
    \savebox{\MyBox}{%
        \begin{tikzpicture}
            \draw (0,0) ellipse (1cm and 2cm);
        \end{tikzpicture}%
    }
\begin{frame}
    \usebox{\MyBox}
\end{frame}
\begin{frame}
    \usebox{\MyBox}
\end{frame}
\end{document}

答案2

\savebox做出当地的分配给框寄存器。因此,当前环境结束后,设置将丢失frame。这可以通过全局\setbox分配来更改:

\documentclass{beamer}
\usepackage{tikz}

\newcommand*{\MakeGlobalBox}[1]{%
  \global\setbox#1=\copy#1\relax
}

\begin{document}
\newsavebox{\MyBox}
\begin{frame}
    \savebox{\MyBox}{%
        \begin{tikzpicture}
            \draw (0,0) ellipse (1cm and 2cm);
        \end{tikzpicture}%
    }
    \usebox{\MyBox}
    \MakeGlobalBox\MyBox
\end{frame}
\begin{frame}
    \usebox{\MyBox}       
\end{frame}
\end{document}

评论:

  • 顺便说一句,我删除了框内容左侧和右侧的空格。它们是由 和\savebox{\MyBox}{之后的行尾引起的\end{tikzpicture}

相关内容