如何创建一个新的环境,eframe
以便在框架的最后一张幻灯片上添加一些元素(可以对该位置进行硬编码)?
假设我有许多包含大量\pause
s 的帧:
\begin{frame}{Frame 1}
one\pause two
\end{frame}
\begin{frame}{Frame 2}
one\pause two\pause three
\end{frame}
替换frame
为eframe
我希望最终得到以下行为:
\begin{frame}{Frame 1{\onslide<3>{END}}}
one\pause two
\end{frame}
\begin{frame}{Frame 2{\onslide<4>{END}}}
one\pause two\pause three
\end{frame}
我不想对这些数字进行硬编码3
,4
因为如果以后我决定添加更多pause
,我将不得不更改这些数字。
答案1
下面定义的环境eframe
就像一个普通的框架,但是附加了(结尾)在该帧的最后一张幻灯片上。
这个解决方案主要依赖于两个技巧:
- 仅在环境的最末端访问计数器的值
beamerpauses
(在环境的给定点frame
,该计数器包含迄今为止在该帧中使用的覆盖规范的数量),以便获得该帧中的覆盖规范的总数;并且 - 约瑟夫·赖特的解决方案用于以编程方式改变框架中间的框架标题。
您可以轻松地重新定义eframe
环境以满足您的需要。
\documentclass{beamer}
\makeatletter
\newcommand*{\augmentframetitle}[1]
{%
\expandafter\frametitle\expandafter%
{\beamer@frametitle #1}%
}
\makeatother
\newenvironment{eframe}
{%
\begin{frame}
}{%
\augmentframetitle{\ \onslide<\value{beamerpauses}>{(END)}}
\end{frame}
}
\begin{document}
\begin{eframe}
\frametitle{My last topic}
foo\\
\pause
bar
\end{eframe}
\end{document}