다음 명령을 사용하여 나무를 그립니다.
\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.pdf10페이지에서. 를 사용할 수 있습니다 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에 있습니다. 귀하가 수락한 답변에 따르면 '두 번째 레벨'은 레벨 2가 아닌 레벨 1을 의미했다고 가정하겠습니다.
이를 달성하는 가장 좋은 방법은 아마도 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}