在 beamer 中的 overprint 环境中定义 \nextslide

在 beamer 中的 overprint 环境中定义 \nextslide

我们都在的环境\onslide中使用命令。但是,我发现像在这种环境中一样分配硬编码的幻灯片值确实很麻烦。每当我们必须在二十多张叠加幻灯片中间插入一张新幻灯片时,这种情况就会变得很困难。插入新幻灯片后,我们必须手动重新编号每个后续幻灯片。这就是为什么我尝试在 中定义一个命令。overprintbeamer\onslide<5>\nextslidebeamer

这个想法很简单,\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}

相关内容