![让孩子在森林里围绕父母](https://linux22.com/image/378727/%E8%AE%A9%E5%AD%A9%E5%AD%90%E5%9C%A8%E6%A3%AE%E6%9E%97%E9%87%8C%E5%9B%B4%E7%BB%95%E7%88%B6%E6%AF%8D.png)
我怎样才能将Dan
、Eve
和Frank
放在母节点下?我尝试更改锚点和级别距离,但无法将这些子节点放在与父节点相同的水平面上。
我更喜欢本地解决此问题的解决方案,即向节点添加参数而不是更改森林的全局设置,因为我有一个基于此森林设置的预定义宏。
梅威瑟:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={ calign = first,
grow=west,
inner sep=0,
outer sep=0,
child anchor=east,
l sep=5mm,
s sep=8mm,
anchor=north east
}
[\begin{tabular}{l}A very wide and\\
tall parent node that\\
needs to have\\
its choldren surrounded\\
from left and bottom
\end{tabular}
[Ann]
[Bill]
[Carl]
[Dan]
[Eve]
[Frank]
]
\end{forest}
\end{document}
答案1
如果这是一棵大树的一部分,那么用 Forest 来做这件事情也并不为过。但是,如果你的树仅限于这种结构,那么 Ti钾Z 是一个更好的选择,因为无论如何你基本上都必须手动定位节点。
请注意,tabular
森林树中永远不需要 。只需使用align=<tabular specification>
。无论如何,您都会得到一个带有 的表格align
。
\documentclass[border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
calign child = 2,
s sep'=8mm,
},
grow=-125,
before drawing tree={
for children={
if={ > O_< {n}{4} }{x/.option=!u3.x}{y/.option=!u4.y}
},
},
[A very wide and\\tallparent node that\\needs to be\\surrounded by its children\\from left and bottom, align=left
[Ann]
[Bill]
[Carl]
[Dan]
[Eve]
[Frank]
]
\end{forest}
\end{document}
您可以根据需要调整生长角度calign child
和/或s sep'
。如果您不想颠倒子项的顺序,请使用grow'
而不是grow
。
就我个人而言,如果这是我所需要的结构,我会倾向于做更多类似的事情:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node [align=center] (r) {A very wide and\\tall parent node that\\needs to be surrounded\\by its children from\\left and bottom};
\foreach \i [count=\j from 0, evaluate=\j as \k using {180+(18*\j)}] in {Ann,Bill,Carl,Dan,Eve,Frank} \draw (r) -- +(\k:30mm) node [anchor={180+\k}] {\i};
\end{tikzpicture}
\end{document}