我正在使用 Beamer 创建带有动画(叠加)的演示文稿。但是,我想禁用某些幻灯片中的动画。
为什么?因为我包含了一个相当复杂的带有动画的 TikZ 绘图(我在其他演示文稿中使用过),现在我只想显示最终结果(即没有叠加层)。
我知道我可以编辑 TikZ 代码,删除所有的“揭露”,但这样我就必须维护同一张图的两个版本(一个用于静态,另一个用于动画)。
使用“讲义”选项不起作用,因为这会禁用所有覆盖,而我只想禁用其中的一些。
有什么建议吗?
答案1
frame
通过向命令或环境提供覆盖规范可以轻松实现这一点:
\frame< ov-spec >{%
... many animation steps ...
}
会将帧的幻灯片限制为动画中与 匹配的步骤ov-spec
。要仅显示最后一张幻灯片,请插入最后一步的编号 - 或者,如果您不知道,则插入一个非常大的数字:
\frame<4711>{%
... many animation steps ...
}
完成 MWE:
% http://tex.stackexchange.com/questions/139260
\documentclass{beamer}
\usepackage{tikz}
% Keys to support piece-wise uncovering of elements in TikZ pictures:
% \node[visible on=<2->](foo){Foo}
%
% see: http://tex.stackexchange.com/questions/55806
%
% Internally works by setting opacity=0 when invisible, which has the
% adavantage (compared to \node<2->(foo){Foo} that the node is always there, hence
% always consumes space and (foo) is always available for coordinate calculations.
%
% The actual command that implements the invisibility can be overriden
% by altering the style invisible. For instance \tikzsset{invisible/.style={opacity=0.2}}
% would dim the "invisible" parts. Alternatively, the color might be set to white, if the
% output driver does not support transparencies (e.g., PS)
%
\tikzset{
invisible/.style={opacity=0},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
},
visible on/.style={alt=#1{}{invisible}},
}
\begin{document}
% constrained to last slide of frame
\begin{frame}<3>{Only last step}
\begin{tikzpicture}[every node/.style={fill=red!30, draw=red}]
\node{Foo}
child[visible on=<2->]{node {Bar}}
child[visible on=<3->]{node {Baz}}
;
\end{tikzpicture}
\end{frame}
% show every slide of frame
\begin{frame}{Uncovering piecewise}
\begin{tikzpicture}[every node/.style={fill=red!30, draw=red}]
\node{Foo}
child[visible on=<2->]{node {Bar}}
child[visible on=<3->]{node {Baz}}
;
\end{tikzpicture}
\end{frame}
\end{document}