我想更改forest
中叠加层之间节点的属性(例如颜色) beamer
。建议别处在一般情况下,使用 PGF 的密钥来实现这一点。但是,这种方法似乎与 不兼容。以下 MWE 确实forest
,至少这是我所经历的不是编译:
\documentclass{beamer}
\usepackage{forest}
\tikzset{onslide/.code args={<#1>#2}{%
\only<#1>{\pgfkeysalso{#2}}
}}
\begin{document}
\begin{frame}
\begin{forest}
[A,name=a [B,name=b,onslide=<2>{red}] [C,name=c] ]
\end{forest}
\end{frame}
\end{document}
我同样可以接受如下的解决方案:
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}
\begin{forest}
[A,name=a [B,name=b] [C,name=c] ]
\only<2>{
%add parameter red to node b
}
\end{forest}
\end{frame}
\end{document}
知道如何实现这个吗?
编辑:感谢@cfr 让我意识到我的 MWE 中这个愚蠢的错误。\tikzset
位于forest
环境内部。
答案1
此代码最初改编自其他人的各种答案。这是我目前用于此类事情的代码。希望它也能帮助你。
\documentclass{beamer}
\usepackage{forest}
\tikzset{% set up for transitions using tikz with beamer overlays
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
transparent/.style={opacity=0.1,text opacity=0.1},
opaque on/.style={alt=#1{}{transparent}},
alerted/.style={color=alerted text.fg},
alert on/.style={alt=#1{alerted}{}},
}
\forestset{%
visible on/.style={%
for tree={%
/tikz/visible on={#1},
edge={/tikz/visible on={#1}}}},
opaque on/.style={%
for tree={%
/tikz/opaque on={#1},
edge={/tikz/opaque on={#1}}}},
alerted on/.style={%
for tree={%
/tikz/alerted on={#1},
edge={/tikz/alerted on={#1}}}},
}
\begin{document}
\begin{frame}
\begin{forest}
[A,name=a [B,name=b,alt=<2>{red}{}] [C,name=c] ]
\end{forest}
\end{frame}
\end{document}
显然,您不需要我展示的所有样式,但为了完整性我将它们都包括在内,因为如果您不需要它们,您可以轻松删除它们。