Beamer 中的问题命令

Beamer 中的问题命令

我喜欢在每张幻灯片的末尾添加一个“反馈问题”,以检查我的学生是否跟上我的进度。为此,我添加了如下代码:

\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计数器对幻灯片编号进行硬编码。但似乎只有在增量叠加规范时才使用此计数器。

相关内容