Beamer 覆盖和计数器:编译循环

Beamer 覆盖和计数器:编译循环

我尝试编译

\documentclass{beamer}
\usepackage[english]{babel}

\newcounter{xxslide}

\begin{document}
\begin{frame}
  \addtocounter{xxslide}{2} 
  \visible<\value{xxslide}>{blabla}
\end{frame}
\end{document}

但是编译器生成了无限数量的幻灯片。在编写幻灯片时如何控制叠加层的数量?

重点是我正在制作一个复杂的绘图。在演示过程中,东西需要出现和消失。我想制作宏,说:在幻灯片的 5 个叠加期间显示 blabla。现在,我们转到下一个叠加。在接下来的 3 个叠加中显示 blabla,依此类推...当我切换到下一个叠加时,我想增加一个表示当前叠加编号的计数器,然后使用 \visible < xxslide, xxslide+5 > { blabla } 命令。

答案1

我不太清楚你的绘图目前是如何构造的,但据我所知,你可以\pause结合.(点)覆盖规范使用该命令来实现你想要的效果:

\documentclass{beamer}
\begin{document}
\begin{frame}

Overlay number: \insertpagenumber

\visible<-.(3)>{This text is shown 3 overlays long, starting from overlay 1}\pause

\visible<-.(5)>{This text is shown 5 overlays long, starting from overlay 2}\pause

\visible<-.(2)>{This text is shown 2 overlays long, starting from overlay 3}

\end{frame}
\end{document}

结果输出显示六个覆盖层

(单击图像可查看其完整尺寸。)

它的工作原理如下:每次\pause遇到命令时,计数器beamerpauses从 1 开始加一。覆盖规范中的点返回此计数器的值减一,而不会改变计数器本身。如果后面跟着圆括号中的可选偏移量,则会返回(beamerpauses - 1) + offset,同样不会影响计数器本身。

以上面示例中的第二个命令为例\visible:由于它前面有一个\pause,因此从第二个覆盖层开始显示。覆盖层规范中的点返回(2 - 1) + 5 = 6,因此文本一直显示到第 6 个覆盖层。

像这样,您可以指定绘图的某个元素在覆盖规范中可见的时间长度,同时使用命令管理它们出现的顺序\pause

答案2

这是一个基于pgffor包的解决方案(不确定是否明白要点)。

代码:

\documentclass{beamer}
\usepackage{pgffor}

\begin{document}
\begin{frame}
\foreach \xxslide in {1,3}{
\visible<\xxslide->{Text}
}
\newline
\visible<2>{Hello}
\end{frame}
\end{document}

现在您可以通过将覆盖层作为列表插入来控制它们。

答案3

谢谢 Diabonas,我的问题的一个简单表示是制作一条移动的蛇。代码如下:

\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{tikz}

\newcommand{\headsnake}[1]{
  \visible<.-.(3)>{\draw (#1) ellipse (0.5 and 0.5); \pause}
}

\begin{document}

\begin{frame}{A moving snake}
  \begin{figure}
  \begin{tikzpicture}
     \headsnake{0,0}
     \headsnake{0,1}
     \headsnake{1,1}
     \headsnake{2,1}
     \headsnake{2,2}
     \headsnake{2,3}
     \headsnake{2,4}
     \headsnake{2,5}
     \headsnake{3,5}
   \end{tikzpicture}
   \end{figure}
 \end{frame}

 \end{document}

结果移动蛇

相关内容