我正在用这个命令画一棵树:
\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=tight
。fit=rectangle
和fit=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}