显示一个接一个的 Tikz 树节点(使用 \Tree 的括号格式)

显示一个接一个的 Tikz 树节点(使用 \Tree 的括号格式)

我想逐个节点显示 tikz 树。首先是 A,然后是 A 和 B,最后是所有节点。请注意,我需要使用所呈现的格式来执行此操作:

\Tree
[. \node{A};]

因为树是自动以这种格式生成的,我只想修改它们而不是破坏它们。我尝试将子树放在 \visible<>{} 中,但没有成功。如果我对节点使用 [opacity=0],则弧仍然可见。如何使子树不可见?这确实可以解决我的问题。

\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikz-qtree-compat}

\begin{document}

\begin{frame}
\only<4>{}
%\setbeamercovered{invisible}
\begin{tikzpicture}[grow=down]
    \tikzset{level distance = 25pt, sibling distance = 10pt}
    \tikzset{every tree node/.style={align=center,anchor=north}}
    \Tree
      [. \node{A};
        [. \node{B};
          [. \node{C};]
        ]
      ]     
\end{tikzpicture}
\end{frame}
\end{document}

答案1

一个选项是使用visible on样式和\edge操作来控制边缘,从而允许逐步显示它们:

在此处输入图片描述

代码:

\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikz-qtree-compat}

\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}

\begin{frame}

\begin{tikzpicture}[grow=down]
    \tikzset{level distance = 25pt, sibling distance = 10pt}
    \tikzset{every tree node/.style={align=center,anchor=north}}
    \Tree
      [. \node[visible on=<1->]{A};\edge[visible on=<2->];
        [. \node[visible on=<2->]{B};\edge[visible on=<3->];
          [. \node[visible on=<3>]{C};]
        ]
      ]     
\end{tikzpicture}
\end{frame}
\end{document}

相关内容