我想知道“好节点”中的以下规范是否可以让空节点(即下面示例中的 F3 节点的姐妹节点)看起来对称(不下垂)。其他一切(父节点和兄弟节点之间的距离)都可以保持如下所述。我尝试了几种解决方案,但没有找到任何可以让父节点保持相当接近且好(=对称)空节点的方法。在此先感谢您的帮助。
\documentclass{standalone}
\usepackage{forest}
\forestset{
nice nodes/.style={
for tree={
inner sep=1pt, s sep=12pt,
fit=band,
},
},
default preamble=nice nodes,
}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}
\begin{document}
\begin{forest}
[F$_4$P[F$_4$]
[F$_3$P, [F$_3$, fit=band]
[{} [A] [...] ]]]]]]
\end{forest}
\end{document}
(注意:这个问题的更广泛背景——也就是为什么我根本不去选择nice empty nodes
这里:语言学森林 - 像 qtree 中一样的比例对齐)
答案1
空节点始终是一种折衷。您可以将 与任何现有的漂亮样式相结合fit=band
。我不知道您更喜欢哪一种。我个人认为fairly nice empty nodes
这棵树看起来最好,但作为它的作者,我可能会有偏见。:) 一旦您决定,它们中的任何一个都可以放入default preamble
您的树中(除了nice nodes
)。
\documentclass{standalone}
\usepackage{forest}
\forestset{
nice nodes/.style={
for tree={
inner sep=1pt, s sep=12pt,
fit=band,
},
},
% begin fairly nice empty nodes
fairly nice empty nodes/.style={
delay={where content={}{shape=coordinate,for parent={
for children={anchor=north}}}{}}
},
% end fairly nice empty nodes
% begin pretty nice empty nodes
pretty nice empty nodes/.style={
for tree={
calign=fixed edge angles,
parent anchor=children,
delay={if content={}{
inner sep=0pt,
edge path={\noexpand\path [\forestoption{edge}] (!u.parent anchor) -- (.children)\forestoption{edge label};}
}{}}
},
},
% end pretty nice empty nodes
default preamble={
nice nodes,
%nice empty nodes, % uncomment the one you want (and delete the ones you don't)
%fairly nice empty nodes,
%pretty nice empty nodes
}
}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}
\begin{document}
\begin{forest}for tree=nice empty nodes
[F$_4$P[F$_4$]
[F$_3$P, [F$_3$]
[{} [A] [nice] ]]]]]]
\end{forest}
\begin{forest}for tree= fairly nice empty nodes
[F$_4$P[F$_4$]
[F$_3$P, [F$_3$]
[{} [A] [{fairly nice}] ]]]]]]
\end{forest}
\begin{forest}for tree= pretty nice empty nodes
[F$_4$P[F$_4$]
[F$_3$P, [F$_3$]
[{} [A] [pretty nice] ]]]]]]
\end{forest}
\end{document}