假设我在每一帧上总是使用两个块。
然后,我希望有一个简单的方法来执行以下操作,而无需复制/粘贴过程:
在每一帧上(第一帧除外),
- 第一个块应该是前一帧的第二个块。
因此我猜测类似于下面的代码是可能的并且有帮助:
\begin{frame}
% code to call the second block from the previous frame
\begin{block} % the new block, to be used again on the next frame
\end{block}
\end{frame}
如果可以使用一些覆盖,那就太好了。
任何想法?
答案1
这是一个无需人工干预的解决方案;\dupbox
完成所有工作;首先定义初始内容,然后只需使用新文本调用它;\dupbox
还有一个可选参数,允许您为块指定标题:
\documentclass{beamer}
\usepackage{tikz}
\usetheme{Warsaw}
\usecolortheme{crane}
\newcommand\dupbox[2][]{%
\begin{block}{\duptitle}
\begin{minipage}{\linewidth}
\duptext
\end{minipage}
\end{block}
\begin{block}{#1}
\begin{minipage}{\linewidth}
#2
\end{minipage}
\end{block}
\gdef\duptext{#2}
\gdef\duptitle{#1}
}
\gdef\duptext{Initial text}
\gdef\duptitle{}
\begin{document}
\begin{frame}
\dupbox[Optional title]{Some text for frames one and two}
\end{frame}
\begin{frame}
\dupbox{Another test text for frames two and three with some math:
\[a=b.\]
}
\end{frame}
\begin{frame}
\dupbox[A simple TikZ drawing]{\tikz{\fill[blue] (0\linewidth,0) circle (13pt);
\fill[orange] (6,0) circle (13pt);}
}
\end{frame}
\begin{frame}
\dupbox{Even more text}
\end{frame}
\end{document}
答案2
像那样?
\documentclass{beamer}
\begin{document}
\begin{frame}
\only<1>{\begin{block}{First} block \end{block}}
\only<1,2>{\begin{block}{Second} block \end{block}}
\only<2,3>{\begin{block}{Third} block \end{block}}
\only<3>{\begin{block}{4th} block \end{block}}
\end{frame}
\end{document}