使用 Beamer 时,我有时会发现这个问题,但我不知道该如何处理。当我想在一个框架内先显示一个分段未覆盖的枚举,然后再显示另一个占据相同空间的枚举时,我会使用命令\only
结合分段未覆盖的列表和[<+->]
代码。
第一个\only
命令的行为与我预期的一样,使用我用来控制覆盖的任何代码来揭开幻灯片\only
。问题出现在第二次\only
出现的时候。然后,如果我想分段揭开或对幻灯片揭开进行任何控制,我需要使用幻灯片的数字引用对幻灯片进行“硬编码”。
这个框架的例子解释了这一点:
\documentclass[xcolor=dvipsnames, 14pt]{beamer} %Presentation
\begin{document}
\begin{frame}{Title of the frame}
\begin{columns}[T]
\begin{column}{0.65\textwidth}
Here it goes something
\end{column}
\begin{column}{0.40\textwidth}
\only<1-3>{Hello: \\
\begin{enumerate}[<+->]
\item one slide
\item 2 slide
\item 3 slide
\end{enumerate}}%End of \only<1-3>
\only<4->{
in the same place
\begin{enumerate}%[<+->]
\item<4-> 4 slide
\item<5-> 5 slide
\item<6-> laast slide
\end{enumerate}
}%End of \only<4-
\end{column}
\end{columns}
\end{frame}
\end{document}
[<+->]
这是预期的行为吗?因为对我来说,听起来我做错了什么,在第一次之后无法使用\only
答案1
问题的根源在于\only
不排版其内容然后将其丢弃。相反,它只是将其丢弃。也就是说,在第四张幻灯片上, 的内容\only<1-3>
从未执行过,因此beamerpauses
从未递增。因此,使用\begin{enumerate}[<+->]
,第一个\item
仍然等同于\item<1->
等。这就是为什么所有三个项目都显示在幻灯片 4 上的原因。如果在第二个列表中添加更多项目,您可以更清楚地看到这一点:只有前四个将显示在幻灯片 4 上,其他将以递增方式显示。
\setcounter{beamerpauses}{4}
一个解决方案就是在之后说\only<4->{
“伪造”省略的第一个列表的增量。
一种可能更可取的可能性是使用overprint
代替。
\documentclass{beamer}
\begin{document}
\begin{frame}{Title of the frame}
\begin{overprint}
\onslide<1-3>
Hello:
\begin{enumerate}[<+->]
\item one slide
\item 2 slide
\item 3 slide
\end{enumerate}%
\onslide<4->
in the same place
\begin{enumerate}[<+->]
\item 4 slide
\item 5 slide
\item laast slide
\end{enumerate}
\end{overprint}
\end{frame}
\end{document}
我似乎记得overprint
在复杂的幻灯片布局中遇到过一些麻烦,所以最好还是掌握一些beamerpauses
技巧。但只要它有效,我就会选择overprint
。