在下面的树中,我希望右下角的节点(在基础层中)直接位于其父节点下方,但它似乎会自动与上层中的兄弟节点对齐。我尝试了几种对齐选项,但我不想更改父节点的位置,只想更改底部子节点的位置。
有没有办法只调整这个孩子的水平定位?
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}
\begin{forest}
for tree = {
draw, circle,
s sep = 6mm
}
[
[ [[,tier=base]] [] ]
[ [] [,tier=base] [] ]
]
\end{forest}
\end{frame}
\end{document}
答案1
子节点的水平位置(或者更准确地说,它相对于父节点在维度中的相对位置,垂直于树的生长方向)可以使用选项 进行调整s
;请参阅森林手册第 3.7.2 节(节点位置)。特别是,s=0
将它直接定位在父节点(锚点)下方。
但是,要使此选项生效,必须在 Forest 执行其定位魔法之后(在 中pack stage
)和计算节点的绝对坐标之前(在 中compute xy stage
)进行更改;请参阅第 3.4.1 节(阶段)。这可以使用时间传播器来实现before computing xy
;请参阅第 3.4.2 节(时间传播器)。
为了实现 OP 的目标,我们必须为有问题的节点配备before computing xy={s=0}
,如下所示。
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}
\begin{forest}
for tree = {
draw, circle,
s sep = 6mm
}
[
[ [[,tier=base]] [] ]
[ [] [,tier=base, before computing xy={s=0}] [] ]
]
\end{forest}
\end{frame}
\end{document}