트리의 형제 노드 사이의 간격 늘리기

트리의 형제 노드 사이의 간격 늘리기

다음 명령을 사용하여 나무를 그립니다.

\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}

다른 핏

관련 정보