我正在阅读这个问题的答案混合套印和枚举块
[我重新复制了代码,这样你就不必点击链接了]
\documentclass{beamer}
\usetheme{Warsaw}
\begin{document}
\begin{frame}{Test}
\begin{center}
text before
\pause
\begin{overlayarea}{\textwidth}{3.3cm}
\only<2-3>{%
\begin{block}{Some title here}
\begin{enumerate}[<+->]
\item One
\item Two
\end{enumerate}
\end{block}}
\only<4-7>{%
\begin{block}{Some title here}
\begin{enumerate}[<+(2)->]
\item CHicken
\item Duck
\item Rooster
\end{enumerate}
\end{block}}
\end{overlayarea}
text after
\end{center}
\end{frame}
\end{document}
并且我注意到在第二个环境中的默认递增覆盖规范中括号之间使用了数字enumerate
。(参见的存在[<+(2)->]
)只有这样,环境中第二个编号列表的项目才会overlayarea
被递增地揭示出来。
为什么需要这样做?这似乎意味着在环境beamerpauses
之间重置?还是在环境中的命令enumerate
之间重置?only
overlay
这难道不是一种令人讨厌的行为吗?因为这就好像你应该自己跟踪 beamerpauses 一样。[<+->]
那么 的用处就消失了,不是吗?
答案1
通过以下简单的例子可以解释这个看似奇怪的现象:
\documentclass{beamer}
\newcommand\showpauses{The value of beamerpauses at this point in slide \insertpagenumber\ is: \thebeamerpauses}
\begin{document}
\begin{frame}{Test}
\only<1-2>{\par\showpauses%
\begin{enumerate}[<+->]
\item One \showpauses
\item Two \showpauses
\end{enumerate}
}
\only<3>{\par\showpauses}
\end{frame}
\end{document}
处理完文档后,您将获得一份三张幻灯片演示文稿,展示计数器beamerpauses
在不同阶段的值。
到第二张幻灯片时,一切都如预期一样:在第二张幻灯片的末尾,enumerate
的值为beamerpauses
3;然而,在第三张幻灯片上,beamerpauses
的值为1
。为什么会发生这种情况?因为 的叠加规范\only
是1-2
,所以一切beamerpauses
幻灯片 1 和 2 上发生的事情只会发生在这些幻灯片上;特别是,枚举产生的步进将产生效果仅有的针对幻灯片一和幻灯片二。在第三张幻灯片中,不受 的影响\only
,计数器beamerpauses
将具有之前的值。
这是否表明 有什么问题beamer
?我不这么认为;毕竟 的预期含义是\only
将事物保持在它的范围之内。仅有的对于指定的幻灯片。
如果在上面的例子中使用<1->
(或<1-3>
)代替,则如下<1-2>
\documentclass{beamer}
\newcommand\showpauses{The value of beamerpauses at this point in slide \insertpagenumber\ is: \thebeamerpauses}
\begin{document}
\begin{frame}{Test}
\only<1->{\par\showpauses%
\begin{enumerate}[<+->]
\item One \showpauses
\item Two \showpauses
\end{enumerate}
}
\only<3>{\par\showpauses}
\end{frame}
您会看到,现在第三张幻灯片上的计数器的值为三,因为第三张幻灯片在的范围内\only
。
原始示例中“肮脏的”手动增加计数器只是因为 OP 想要实现特殊效果。也许可以通过另一种方式实现相同的效果,而无需人工干预?