我们都在的环境\onslide
中使用命令。但是,我发现像在这种环境中一样分配硬编码的幻灯片值确实很麻烦。每当我们必须在二十多张叠加幻灯片中间插入一张新幻灯片时,这种情况就会变得很困难。插入新幻灯片后,我们必须手动重新编号每个后续幻灯片。这就是为什么我尝试在 中定义一个命令。overprint
beamer
\onslide<5>
\nextslide
beamer
这个想法很简单,\nextslide
命令将增加一个预定义的计数器,并将该值与\onslide
命令一起使用。
\documentclass{beamer}
\newcounter{slidecounter}
\setcounter{slidecounter}{0}
\def\nextslide{\addtocounter{slidecounter}{1}\onslide<\value{slidecounter}>}
\begin{document}
\begin{frame}{Title}
\begin{overprint}
\nextslide
On one
\nextslide
On two
\end{overprint}
\end{frame}
\end{document}
overprint
我知道,一旦我成功完成这部分,我仍然需要在环境启动时实现重置计数器。
但是,每当我使用 运行代码时pdflatex
,它就会继续生成一页又一页,我不得不用 来中断它Ctrl-C
。
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74]^C ! 中断。\pgfsysprotocol@literalbuffered ...tocol@temp {{#1 \space }}\expandafter \pgf... l.20 \end{frame} ? x
代码beamer
太多了,我无法找出这个无限循环发生在哪里。
任何建议都将受到赞赏。
答案1
这就是+
制定覆盖规范的原因(参见用户beamer
指南,第 9.6.4 节):
-符号的作用
+
如下:您可以在任何覆盖规范中通常使用数字的位置使用它。如果+
遇到 -符号,它将被替换为 LaTeX 计数器的当前值beamerpauses
,该值在框架开始时为 1。然后计数器增加 1,尽管它只在每个覆盖规范中增加一次,即使规范包含多个+
-符号(它们被替换为相同的数字)。
因此,你的 MWE 可以用以下方法解决
\documentclass{beamer}
\begin{document}
\begin{frame}{Title}
\begin{overprint}
\onslide<+>
On one
\onslide<+>
On two
\onslide<+>
On three
\end{overprint}
\end{frame}
\end{document}