如何修改 Beamer 覆盖中的 Forest 节点?

如何修改 Beamer 覆盖中的 Forest 节点?

我想更改forest中叠加层之间节点的属性(例如颜色) beamer。建议别处在一般情况下,使用 PGF 的密钥来实现这一点。但是,这种方法似乎与 不兼容forest,至少这是我所经历的。以下 MWE 确实不是编译:

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

树木

显然,您不需要我展示的所有样式,但为了完整性我将它们都包括在内,因为如果您不需要它们,您可以轻松删除它们。

相关内容