Увеличение расстояния между родственными узлами в дереве

Увеличение расстояния между родственными узлами в дереве

Я рисую дерево с помощью этой команды:

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

разная посадка

Связанный контент