Beamer:在描述环境中显示所有标签,然后按顺序显示描述

Beamer:在描述环境中显示所有标签,然后按顺序显示描述

在 beamer 中,我想一次性在描述环境中显示所有标签,然后按顺序填写描述。我希望标签在第一张幻灯片上的位置正确,并留出足够的空间来显示描述,这样标签就不会在显示描述时跳来跳去。

代码

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{description}
  \item<1->[Label1] Description1
  \item<2->[Label2] Description2
\end{description}
\end{frame}
\end{document}

在第一张幻灯片上显示 Label1 和 Description1,在第二张幻灯片上显示 Label2 和 Description2,这不是我想要的。我希望在第一张幻灯片上显示 Label1、Description1 和 Label2,此外,在第二张幻灯片上显示 Description2。

我试过

\documentclass{beamer}
\begin{document}
\begin{frame}
\def\reveal<#1>#2{\alt<#1>{#2}{\phantom{#2}}}
\begin{description}
  \item[Label1] \reveal<1->{Description1}
  \item[Label2] \reveal<2->{Description2}
\end{description}
\end{frame}
\end{document}

但这样就垂直的项目之间的空间。(这是 beamer 的一个错误,还是我理解错了\phantom?)

我当前的解决方案是

\documentclass{beamer}
\begin{document}
\begin{frame}
\def\reveal<#1>#2{\alt<#1>{#2}{\color{white}{#2}}}
\begin{description}
  \item[Label1] \reveal<1->{Description1}
  \item[Label2] \reveal<2->{Description2}
\end{description}
\end{frame}
\end{document}

虽然这对我来说只有效,因为我的幻灯片的背景颜色是白色的,并且如果 #2 包含段落分隔符则不起作用。有更好的解决方案吗?

答案1

似乎描述环境只会在特定条件下排版标签(参见注释),所以我习惯于\mbox{}说服它排版标签,而无需实际排版描述文本本身:

\documentclass{beamer}
\newcommand<>{\reveal}[1]{\mbox{}\visible#2{#1}}

\begin{document}
\begin{frame}
    \begin{description}
        \item[Label1] Description of the first item. Shown on all slides.
        \item[Label2] \reveal<2->{Description of the second item. This is not shown on the first slide although it occupies space.}
        \item[Label3] \reveal<3->{Description of the third item. This is only shown on the third slide although it occupies space on the first two.}
    \end{description}
\end{frame}

\end{document}

第一张幻灯片

第二张幻灯片

第三张幻灯片

\visible在其他幻灯片上将文本排版为不可见。因此它会占用空间,确保标签位于正确的位置。但无论背景是什么颜色,它都会起作用。(它可能使用背景颜色来伪造透明度,但这一切都是自动的。)

相关内容