因此,以下问题被发送到了 beamer 邮件列表,在花了一个多小时试图回答这个我认为微不足道的问题之后,我想我不妨把答案放在这里。(如果结果发现这是重复的,我会觉得自己很傻。)这个想法是从这样的事情开始的:
\documentclass{beamer}
\let\Tiny\tiny
\setbeamertemplate{navigation symbols}{}
\begin{document}
\frame{
\begin{itemize}
\only<1> {
\item Foo
\item Bar
}
\only<2> {
\item I replace Foo
\item I replace Bar
\item I am new!
}
\end{itemize}
}
\end{document}
现在,由于它们的大小不同,这会导致项目在幻灯片上跳来跳去。我们需要对项目进行一些分组,为最大组的内容保留空间。
答案1
在这种情况下,绝对可以只使用一个 itemize 环境。您可以简单地使用命令替换 Foo 和 Bar \alt
。在我看来,生成的代码也更易于阅读。以下是一个例子:
\documentclass{beamer}
\setbeamertemplate{navigation symbols}{}
\begin{document}
\frame{
\begin{itemize}
\item\alt<1>{Foo}{I replace Foo}
\item\alt<1>{Bar}{I replace Bar}
\item<2> I am new!
\end{itemize}
}
\end{document}
输出:
答案2
事实证明这是有效的:
\documentclass{beamer}
\let\Tiny\tiny
\setbeamertemplate{navigation symbols}{}
\begin{document}
\frame{
\begin{overprint}
\onslide<1>
\begin{itemize}
\item Foo
\item Bar
\end{itemize}
\onslide<2>
\begin{itemize}
\item I replace Foo
\item I replace Bar
\item I am new!
\end{itemize}
\end{overprint}
}
\end{document}
这对我来说看起来很简单。令人惊讶的是其他看似简单的解决方案却失败了。(例如,只需尝试使用单个 itemize 环境执行此操作。)