beamer 定义列表覆盖:揭示条目之后的定义

beamer 定义列表覆盖:揭示条目之后的定义

description出于教育目的,我只想在所有物品本身被发现之后才揭示我的物品的定义,如下所示:

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{overprint}
\begin{description}
\item<1->[Spam]
\onslide<3->{Eggs}
\item<2->[Cheese]
\onslide<4->{Tofu}
\end{description}
\end{overprint}
\end{frame}
\end{document}

然而,这会导致垃圾邮件只出现在幻灯片 3 上。我希望在幻灯片 1 中,我有垃圾邮件(但没有任何内容),在幻灯片 3 中,我有垃圾邮件.我怎样才能实现这个目标?

另一种方法是使用tabular环境,但我感兴趣的是看看是否可以使用来实现description

答案1

类似这样的工作:

\documentclass{beamer}

\newcommand\desctext[1]{%
  \only<+(1)>{\mbox{}}%
  \onslide<+(1)->{#1}}

\begin{document}

\begin{frame}
\begin{overprint}
\begin{description}
\addtocounter{beamerpauses}{-1}
\item[Spam1]\desctext{Eggs1}
\item[Spam2]\desctext{Eggs2}
\item[Spam3]\desctext{Eggs3}
\item[Spam4]\desctext{Eggs4}
\addtocounter{beamerpauses}{1}
\end{description}
\end{overprint}

\end{frame}

\end{document}

对于所需的排序(先是所有标签,然后是所有描述),可以执行以下操作:

\documentclass{beamer}

\newcommand\desctext[2][]{%
  \only<+(1)->{\mbox{}}%
  \onslide<#1->{#2}}

\begin{document}

\begin{frame}
\begin{overprint}
\begin{description}
\addtocounter{beamerpauses}{-1}
\item[Spam1]\desctext[5]{Eggs1}% add one to the number of items
\item[Spam2]\desctext[6]{Eggs2}
\item[Spam3]\desctext[7]{Eggs3}
\item[Spam4]\desctext[8]{Eggs4}
\addtocounter{beamerpauses}{1}
\end{description}
\end{overprint}
\end{frame}

\end{document}

答案2

我个人使用itemize环境来实现你的目标。

description环境的行为似乎与itemizeenumerate复杂”结构的环境不同。

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{overprint}
\begin{itemize}
\item<1-> Spam:
\onslide<2->{Eggs}
\end{itemize}
\end{overprint}
\end{frame}
\end{document}

相关内容