Beamer:暂时禁用覆盖

Beamer:暂时禁用覆盖

我正在使用 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}

相关内容