我尝试编译
\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}