我用這個命令畫一棵樹:
\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 級。
實現這一點的最佳方法可能是用於fit=band
根節點的子節點,即第1 級的子節點。加到樹中,森林將自動增加間隔,以保持第 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}