我正在尝试使用森林对齐分类法的边缘路径。我查看了很多示例和文档,但没有找到。我的知识tikz
仍然非常有限。
平均能量损失
这是 MWE。重要的是,第 1 级的子元素具有不同的宽度,这导致路径具有这种不光彩的方面。
\documentclass{minimal}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
forked edges,
for tree={
grow=east,
parent anchor=east,
child anchor=west,
align=center,
anchor=base west,
l sep+=10pt,
tier/.pgfmath=level(),
for root={
rectangle,
draw,
parent anchor=east,
},
}
[Taxonomy of Blah
[Blah
[Blah blah blah]
[Blah]
[Blah]
]
[Blah blah blah
[Blah]
[Blah]
]
]
\end{forest}
\end{document}
输出
这是我目前所拥有的,以及我尝试用红色实现的目标。
答案1
edge path'
这需要在 的定义上有所不同forked edge'
(或手动应用)。我们希望从子节点开始,向左edge path'
移动一点( ),然后垂直+水平移动到父节点。fork sep
我还擅自对代码进行了一些清理。首先,for root
在 a 内部for tree
没有任何意义,而且实际上很危险,因为给定的键会被执行多次;实际上,for root
是多余的,因为树序言中给出的所有键都会自动应用于根节点。其次,没有必要设置parent anchor
和child anchor
。第三,align=center
当每个节点都包含一行时,不需要 ;为了实现使节点更高的意外效果,请使用inner ysep
(或s sep
,以获得类似的效果)。最后,.option
比 更快.pgfmath
。
\documentclass{minimal}
\usepackage[edges]{forest}
\forestset{
forked edge'/.style={
edge={rotate/.option=!parent.grow},
edge path'={
(.child anchor)
-- ++(-\forestoption{fork sep},0)
|- (!u.parent anchor)
},
},
}
\begin{document}
\begin{forest}
forked edges,
for tree={
grow=east,
inner ysep=1.2ex,
anchor=base west,
l sep+=2em,
fork sep=1.5em,
tier/.option=level,
},
rectangle,
draw,
parent anchor=east,
[Taxonomy of Blah
[Blah
[Blah blah blah]
[Blah]
[Blah]
]
[Blah blah blah
[Blah]
[Blah]
]
]
\end{forest}
\end{document}