我喜欢在每张幻灯片的末尾添加一个“反馈问题”,以检查我的学生是否跟上我的进度。为此,我添加了如下代码:
\begin{overlayarea}{\textwidth}{1cm}
\only<5>{\hfill\beamerbutton{How do we get last expression?}}
\only<6>{\hfill\begin{beamercolorbox}[rounded=true,right]{solucion}
Using a Taylor series expansion
$e^t = 1 + t + t^2/2! + t^3/3! + \ldots$
\end{beamercolorbox}}
\end{overlayarea}
问题在于我必须手动设置覆盖的级别;例如,上面的问题来自一张包含前四个项目的幻灯片。
我希望有一个新的命令来简化这一过程。我试过了,
\newcommand{\pregunta}[4]{%
\begin{overlayarea}{\textwidth}{1cm}
\only<#1>{{\hfill\beamerbutton} #3 }}}
\only<#2>{{\hfill
\begin{beamercolorbox}[rounded=true,right]{solucion}
#4
\end{beamercolorbox}}}
\end{overlayarea}}
但它就是不起作用。理想情况下,我希望有一个命令可以让我不必将两个覆盖级别 (#1、#2) 作为参数传递,这样它就可以在幻灯片末尾工作,而不管它有多少项目(并且如果添加或删除项目,它将继续工作!)。
答案1
请查看增量覆盖规范(Beamer 手册第 9.6.4 节)。您可以执行以下操作:
\documentclass{beamer}
\newcommand{\pregunta}[2]{%
\begin{overlayarea}{\textwidth}{1cm}
\only<+>{\hfill\beamerbutton{#1}}%
\only<+>{\hfill\begin{beamercolorbox}[rounded=true,right]{solucion}#2
\end{beamercolorbox}}%
\end{overlayarea}}
\begin{document}
\begin{frame}{original implementation}
\begin{enumerate}
\item<1-> foo
\item<2-> bar
\item<3-> baz
\item<4-> buzz
\end{enumerate}
\begin{overlayarea}{\textwidth}{1cm}
\only<5>{\hfill\beamerbutton{How do we get last expression?}}
\only<6>{\hfill\begin{beamercolorbox}[rounded=true,right]{solucion}
Using a Taylor series expansion
$e^t = 1 + t + t^2/2! + t^3/3! + \ldots$
\end{beamercolorbox}}
\end{overlayarea}
\end{frame}
\begin{frame}{macro implementation}
\begin{enumerate}[<+->]
\item foo
\item bar
\item baz
\item buzz
\end{enumerate}
\pregunta{How do we get last expression?}
{Using a Taylor series expansion $e^t = 1 + t + t^2/2! + t^3/3! + \ldots$}
\end{frame}
\end{document}
然后,如果您在幻灯片中使用相同样式的叠加规范,这将自动按顺序添加另外两个。
如果是我的话,我会创建两个覆盖规范感知环境,这样我就可以在标记中获得一些更具语义的东西(抱歉,这现在还不起作用。我必须稍后再回来):
\newenvironment<>{pregunta}[1]{%
\begin{onlyenv}#1\hfill\beamerbutton}{%
\end{onlyenv}
}
\newenvironment<>{solucion}[1]{%
\begin{beamercolorbox}#1[rounded=true,right]{solucion}}{%
\end{beamercolorbox}}
\begin{overlayarea}{\textwidth}{1cm}
\begin{pregunta}<+>
How do we get last expression?
\end{pregunta}
\begin{solucion}<+>
Using a Taylor series expansion $e^t = 1 + t + t^2/2! + t^3/3! + \ldots$
\end{solucion}
\end{overlayarea}
然后您还可以使用 beamer 的主题机制来对它们进行一致的样式设置。
我原以为你仍然可以使用beamerpauses
计数器对幻灯片编号进行硬编码。但似乎只有在增量叠加规范时才使用此计数器。