我想在 Beamer 文档中动态突出显示从树的根部延伸的路径(使用forest
动态突出显示从树的根(使用包定义)到特定节点的通过定义forest
样式。下面是一个最小的非工作示例。
问题是该样式onslide
是在 TikZ 中定义的,而 TikZ 无法识别path highlight
我定义的森林样式。我也无法path highlight
在 TikZ 中定义该样式,因为 TikZ 不认识和forest
这样的样式。edge
for ancestor
后续问题:在突出显示的路径中,是否可以只保留根不突出显示?
例子:
\documentclass{beamer}
\usepackage{tikz}
\tikzset{onslide/.code args={<#1>#2}{%
\only<#1>{\pgfkeysalso{#2}}
}} % use a style for a node/path only on certain slides
%https://tex.stackexchange.com/q/253364/9789
\usepackage{forest}
\begin{document}
\forestset{path highlight/.style={edge=red,line width=2pt,
for ancestors={edge=red, line width=2pt}}}
\begin{frame}{}
\begin{forest}
[VP
[DP
[V']
[DP,onslide=<2->{path highlight}]
]
[DP]
]
\end{forest}
\end{frame}
\end{document}
答案1
您可能想要使用for tree
,请参阅这个答案,并且需要使用\forestset
,而不是\tikzset
。排除根就像说一样简单if level=0{}{red}
。我假设您想说edge={red, line width=2pt},
,即向边缘添加线宽。
\documentclass{beamer}
\usepackage{forest}
\forestset{path highlight/.style={red,edge={red, line width=2pt},
for ancestors={edge={red,line width=2pt},
if level=0{}{red}}}}
% see https://tex.stackexchange.com/a/112471/121799
\forestset{alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{for tree={#2}}}{\pgfkeysalso{for tree={#3}}}},
onslide/.code args={<#1>#2}{%
\only<#1>{\pgfkeysalso{for tree={#2}}}
}}
\begin{document}
\begin{frame}{}
\begin{forest}
[VP
[DP
[V']
[DP,onslide=<2->{path highlight}
]
]
[DP]
]
\end{forest}
\end{frame}
\end{document}
我要说的是,所有这些风格alt
都是美好的 Ti 的一部分钾Z 库beamer-overlay-styles
,但当然这里我们需要\forestset
它的版本。