想象一棵简单的树:
\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
必须在frame
s 之外调用(我猜是因为 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}