增加树中兄弟节点之间的间距

增加树中兄弟节点之间的间距

我正在用这个命令画一棵树:

\documentclass{article}
\usepackage{forest}

\begin{document}
\begin{forest}
[S [a]  [S [S [a] [S  [$\varepsilon$ ]] [b] ] [S [a] [S  [$\varepsilon$ ]] [b] ] ]   [b] ]
\end{forest}

\end{document}

我希望第二级的“a”相对于所有其他节点是最左边的节点。第二级的“b”相对于所有其他节点应该是最右边的节点。

答案1

看看http://ctan.space-pro.be/tex-archive/graphics/pgf/contrib/forest/forest-doc.pdf在第 10 页。您可以使用s sep=20mm

选项 s,控制节点与其父节点的(节点)锚点之间的距离。

在此处输入图片描述

\documentclass{article}
\usepackage{forest}

\begin{document}
\begin{forest}
[S,s sep=20mm, [a]  [S [S [a] [S  [$\varepsilon$ ]] [b] ] [S [a] [S  [$\varepsilon$ ]] [b] ] ]   [b] ]
\end{forest}

\end{document}

在此处输入图片描述

答案2

请注意,根节点位于级别 0。根据您接受的答案,我假设您所说的“第二级”是指级别 1,而不是级别 2。

实现此目的的最佳方法可能是fit=band对根节点的子节点(即第 1 级的子节点)进行使用。这避免了需要对第一级节点之间增加的扩展进行硬编码:如果向树中添加更多内容,Forest 将自动增加分离以保持第 1 级第一个和最后一个子节点下的垂直空间可用,因为它们没有子节点。

默认情况下,Forest 使用fit=tightfit=rectanglefit=band是替代方案。fit=band防止除节点自己的后代之外的任何东西侵占其下方的垂直空间(在南北生长的树中)。

\documentclass[border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  [S, for children={fit=band} [a]  [S [S [a] [S  [$\varepsilon$ ]] [b] ] [S [a] [S  [$\varepsilon$ ]] [b] ] ]   [b] ]
\end{forest}
\end{document}

不同的适合

相关内容