![改变森林中空节点的大小](https://linux22.com/image/309918/%E6%94%B9%E5%8F%98%E6%A3%AE%E6%9E%97%E4%B8%AD%E7%A9%BA%E8%8A%82%E7%82%B9%E7%9A%84%E5%A4%A7%E5%B0%8F.png)
我想要设置如下图片:
下面的forest
代码几乎可以完成这个任务:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={fit=band,parent anchor=south,child anchor=north}
[ForceP
[]
[Force$'$
[Force$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FocP
[]
[Foc$'$
[Foc$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FinP
[]
[Fin$'$
[Fin$^0$]
[IP/AgrSP]]]]]]]]]]]
\end{forest}
\end{document}
然而,向左的圆弧没有直角:
现在的问题是:我是否必须将\strut
s 添加到所有empty node
s 中,或者是否有更好的方法来表示empty node
s 与右边的姐妹具有相同的高度?
答案1
sn edges
这是另一种方法,当我将样式也添加到树中时,这种方法看起来更好。与使用设置为的nice empty nodes
技巧不同,这种方法为空节点(仅一个)创建幻像内容,并为树中的所有节点使用标准文本高度以保持对齐。shape
coordinate
X
\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest,calc}
\begin{document}
\newlength\mytextheight
\settototalheight{\mytextheight}{XpX$^0$X$'$}
\begin{forest}
delay={
where content={}{
content={\phantom{X}}
}{},
},
for tree={
text height=\mytextheight,
fit=band,
parent anchor=south,
child anchor=north,
}
[ForceP
[]
[Force$'$
[Force$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FocP
[]
[Foc$'$
[Foc$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FinP
[]
[Fin$'$
[Fin$^0$]
[IP/AgrSP]
]
]
]
]
]
]
]
]
]
]
\end{forest}
\end{document}
答案2
您可以定义一种nice empty nodes
样式,如手册第 52 页所述forest
。
\documentclass{article}
\usepackage{forest}
\forestset{
nice empty nodes/.style={
for tree={calign=fixed edge angles},
delay={where content={}{for parent={for children={anchor=north}}}{}}
}}
\begin{document}
\begin{forest}
for tree={fit=band}
[ForceP, nice empty nodes
[]
[Force$'$
[Force$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FocP
[]
[Foc$'$
[Foc$^0$]
[TopP
[]
[Top$'$
[Top$^0$]
[FinP
[]
[Fin$'$
[Fin$^0$]
[IP/AgrSP]]]]]]]]]]]
\end{forest}
\end{document}