beamer 和 TikZ:逐渐揭开树木的面纱

beamer 和 TikZ:逐渐揭开树木的面纱

想象一棵简单的树:

\begin{tikzpicture}
    \node {Selbstregulation}
    [edge from parent fork down]
    child {node {Kognition}}
    child {node {Metakognition}
      child {node {Planung}}
      child {node {Monotoring}}
      child {node {Regulation}}
    }
\end{tikzpicture}

是否可以使用 Beamer 中的覆盖逐步揭示子节点?我尝试\onslide在几个位置使用该命令child,但没有效果...

有什么提示吗? - 谢谢。

答案1

TikZ 选项可根据当前幻灯片将颜色设置为白色:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{trees}

\tikzset{hide on/.code={\only<#1>{\color{white}}}}

\begin{document}
\begin{frame}  
\begin{tikzpicture}
   \only<4>{} % Force beamer to show the correct amount of slides
    \node {Selbstregulation}
    [edge from parent fork down]
    child {node {Kognition}}
    child {node  {Metakognition}
      child [hide on=-2]  {node {Planung}}
      child [hide on=-3] {node {Monotoring}}
      child [hide on=1] {node {Regulation}}
    };
\end{tikzpicture}
\end{frame}
\end{document}

放置[hide on=..]选项以获得正确的效果有点棘手。例如,向下的线总是与最后一个子节点一起绘制,因此必须先发现该节点。

(还请注意,\tikzset必须在frames 之外调用(我猜是因为 catcode 欺骗的原因)。)

答案2

有人告诉我这是不可能的该软件包的作者在 2005 年写道,它不是。如果已经添加了该能力,我不清楚。

我的通讯员的建议是我能想到的最佳解决方法:

为了获得相同的效果,您可能需要尝试绘制最终图形,然后向后工作,通过使它们具有与背景相同的颜色或透明而使其不可见。

答案3

我使用不透明度代替白色改进了 Caramdir 的答案,改变:

\tikzset{hide on/.code={\only<#1>{\color{white}}}}

和:

\tikzset{hide on/.code={\only<#1>{\color{fg!20}}}}

就我而言,我想要半透明的效果,您也可以设置“fg!0”以完全隐藏,或任何其他级别的不透明度。

完整代码如下:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{trees}

\tikzset{hide on/.code={\only<#1>{\color{fg!20}}}}

\begin{document}
\begin{frame}  
\begin{tikzpicture}
   \only<4>{} % Force beamer to show the correct amount of slides
    \node {Selbstregulation}
    [edge from parent fork down]
    child {node {Kognition}}
    child {node  {Metakognition}
      child [hide on=-2]  {node {Planung}}
      child [hide on=-3] {node {Monotoring}}
      child [hide on=1] {node {Regulation}}
    };
\end{tikzpicture}
\end{frame}
\end{document}

相关内容