执行摘要

执行摘要

注意:我已经完全重写了这个问题,希望能澄清一些事情。

执行摘要

在 Beamer 中创建 TikZ 图表时,可以向路径和节点添加覆盖规范,如\node<+-> {X};。令人惊讶的是,这些覆盖规范的行为与纯 Beamer 覆盖规范不同!它的行为不像\uncover<+->{\node {X};}(正如人们对纯 Beamer 的期望\item),而是像\only<+->{\node {X};}

为什么会这样?是否可以将\node其规范视为纯 Beamer?有关详细问题,请参阅本文结尾。

背景

“纯” Beamer 中的动作规范

在 Beamer 手册中,对环境的描述actionenv如下:

没有⟨overlay specification⟩动作的 晋升为uncover@⟨overlay specification⟩

下面是一个使用列表的示例,显示了当所涵盖材料的呈现分别设置为(默认)和时,对itemize的提升,并将其行为与的行为进行比较。+-uncover@+-invisibletransparentonly@+-

\documentclass{beamer}

\begin{document}
\begin{frame}{Action Specifications with \texttt{\textbackslash item}}
  \begin{columns}
  \column{0.35\textwidth}
    Below uses spec \texttt{<+->}
    \begin{itemize}
    \item<+-> X
    \item<+-> Y
    \item<+-> Z
    \end{itemize}
    Above uses spec \texttt{<+->}

    \vspace{\baselineskip}

    \setbeamercovered{transparent}
    Below uses spec \texttt{<+->}
    with \texttt{transparent}
    \begin{itemize}
    \item<+-> X
    \item<+-> Y
    \item<+-> Z
    \end{itemize}
    Above uses spec \texttt{<+->}
    with \texttt{transparent}

  \column{0.45\textwidth}
    Below uses spec \texttt{<only@+->}
    \begin{itemize}
    \item<only@+-> X
    \item<only@+-> Y
    \item<only@+-> Z
    \end{itemize}
    Above uses spec \texttt{<only@+->}
  \end{columns}
\end{frame}
\end{document}

在此处输入图片描述

\nodeTikZ的动作规范

然而,同样的行为不是通过给予 TikZ \paths 和\nodes 的覆盖规范展示:

\documentclass{beamer}
\usepackage{tikz}

\begin{document}
\begin{frame}{Action Specifications with \texttt{\textbackslash node}}
  \begin{columns}
  \column{0.35\textwidth}
    Below uses spec \texttt{<+->}\\
    \begin{tikzpicture}
      \node<+-> at (0, 0)   {X};
      \node<+-> at (0,-0.5) {Y};
      \node<+-> at (0,-1)   {Z};
    \end{tikzpicture}\\
    Above uses spec \texttt{<+->}

    \vspace{\baselineskip}

    \setbeamercovered{transparent}
    Below uses spec \texttt{<+->}
    with \texttt{transparent}\\
    \begin{tikzpicture}
      \node<+-> at (0, 0)   {X};
      \node<+-> at (0,-0.5) {Y};
      \node<+-> at (0,-1)   {Z};
    \end{tikzpicture}\\
    Above uses spec \texttt{<+->}
    with \texttt{transparent}

  \column{0.55\textwidth}
    Below uses spec \texttt{<only@+->}\\
    \begin{tikzpicture}
      \node<only@+-> at (0, 0)   {X};
      \node<only@+-> at (0,-0.5) {Y};
      \node<only@+-> at (0,-1)   {Z};
    \end{tikzpicture}\\
    Above uses spec \texttt{<only@+->}

    \vspace{\baselineskip}

    Below uses spec \texttt{<uncover@+->}\\
    \begin{tikzpicture}
      \node<uncover@+-> at (0, 0)   {X};
      \node<uncover@+-> at (0,-0.5) {Y};
      \node<uncover@+-> at (0,-1)   {Z};
    \end{tikzpicture}\\
    Above uses spec \texttt{<uncover@+->}
  \end{columns}
\end{frame}
\end{document}

在此处输入图片描述

与与 s一起使用时不同\item,操作规范<+->(无论是否设置transparent)不会为\nodes 分配空间。换句话说,节点的使用方式与我预期的\only方式不同\uncover。此外,添加显式的only@uncover@会导致这些\nodes 出现在所有幻灯片上,就好像它们根本没有被赋予任何操作规范一样!

问题

  • 有没有办法恢复路径和节点的完整操作规范?是的,使用等是一种合理的解决方法,但还有其他方法可以直接\uncover<+>{\node at (0,0) {X};}提供操作规范吗?\node

  • 如果不是,Beamer 源中 action-specification-aware 的代码在哪里\node?我想尝试修改代码以修复此不一致问题,但我无法找到相关的宏。

答案1

该符号<+>表示代替最后一个例子,你想要的是<+->这意味着添加一步步:

代码

\documentclass{beamer}
\usepackage{tikz}

\begin{document}

\begin{frame}{Ti\textit{k}Z}
  \setbeamercovered{transparent}
  \begin{tikzpicture}
    \node<+-> at (0,0) {X};
    \node<+-> at (1,0) {Y};
    \node<+-> at (2,0) {Z};

    \draw (current bounding box.south west)
          rectangle (current bounding box.north east);
  \end{tikzpicture}
\end{frame}

\end{document}

结果

在此处输入图片描述

相关内容