Estoy dibujando un árbol con este comando:
\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}
Lo que quiero que suceda es que la "a" en el segundo nivel sea el nodo más a la izquierda con respecto a todos los demás nodos. Además, "b" en el segundo nivel debería ser el nodo más a la derecha con respecto a todos los demás nodos.
Respuesta1
Echa un vistazo ahttp://ctan.space-pro.be/tex-archive/graphics/pgf/contrib/forest/forest-doc.pdfen la página 10. Puede utilizar s sep=20mm
.
Opción s, controla la distancia entre los anclajes (nodos) de un nodo y su padre.
\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}
Respuesta2
Tenga en cuenta que el nodo raíz está en el nivel 0. A juzgar por la respuesta que aceptó, voy a suponer que se refiere al nivel 1 en lugar del nivel 2 con "el segundo nivel".
La mejor manera de lograr esto es probablemente usarlo fit=band
para los hijos del nodo raíz, es decir, aquellos en el nivel 1. Esto evita la necesidad de codificar cualquier mayor dispersión entre los nodos del primer nivel: si se agrega más contenido al árbol, Forest aumenta automáticamente la separación para mantener libre el espacio vertical debajo del primer y último niño en el nivel 1, ya que estos no tienen hijos.
De forma predeterminada, Forest utiliza fit=tight
. fit=rectangle
y fit=band
son alternativas. fit=band
evita que cualquier otra cosa que no sean los propios descendientes del nodo invada el espacio vertical debajo de él (en un árbol que crece de Norte a Sur).
\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}