绘制语言短语圣诞树时,我大多数时候都使用手册sn edges
中的forest
作为全局默认值,即parent anchor=south, child anchor=north
。这将输出以下类型的树:
但是,有时我想要绘制派生树,它应该显示默认锚定forest
:
所以我尝试定义一种derivation tree
重置全局样式的样式:
\documentclass[
,crop=true
,varwidth=\maxdimen
]{standalone}
\usepackage{forest}
\forestset{
.style={for tree={parent anchor=south,child anchor=north}},
derivation tree/.style={
for tree={parent anchor={},child anchor={},font=\ttfamily}}
}
\begin{document}
\begin{forest}
derivation tree
[S[NP][VP[V[\textit{eats}]][NP]]]
\end{forest}
\end{document}
不幸的是,这不起作用:
我在这里遗漏了什么?
答案1
.style
是一种非预期的指定默认值的方法,因此有其缺点。(该包的下一个版本将包含 key default preamble
。)它之所以有效,是因为在每个节点的键列表末尾都会调用一个空键……而且由于它位于末尾,因此无法覆盖。
解决方法:重新定义空样式,如代码所示。您可以看到重新定义是环境本地的。
\documentclass[
,crop=true
,varwidth=\maxdimen
]{standalone}
\usepackage{forest}
\forestset{
.style={for tree={parent anchor=south,child anchor=north}},
derivation tree/.style={.style={
for tree={parent anchor={},child anchor={},font=\ttfamily}}
}
}
\begin{document}
\begin{forest}
derivation tree
[S[NP][VP[V[\textit{eats}]][NP]]]
\end{forest}
\begin{forest}
[S[NP][VP[V[\textit{eats}]][NP]]]
\end{forest}
\end{document}