Cambiar el tamaño de los nodos vacíos en el bosque

Cambiar el tamaño de los nodos vacíos en el bosque

Quiero configurar la siguiente imagen:

ingrese la descripción de la imagen aquí

El siguiente forestcódigo casi lo hace:

\documentclass{article}

\usepackage{forest}


\begin{document}

\begin{forest}
for tree={fit=band,parent anchor=south,child anchor=north}
[ForceP
        []
        [Force$'$
                [Force$^0$]
                [TopP
                        []
                        [Top$'$
                                [Top$^0$]
                                [FocP
                                        []
                                        [Foc$'$
                                                [Foc$^0$]
                                                [TopP
                                                        []
                                                        [Top$'$
                                                                [Top$^0$]
                                                                [FinP
                                                                        []
                                                                        [Fin$'$
                                                                                [Fin$^0$]
                                                                                [IP/AgrSP]]]]]]]]]]]
\end{forest}


\end{document}

Sin embargo, los arcos que van hacia la izquierda no tienen el ángulo recto:

ingrese la descripción de la imagen aquí

Ahora, la pregunta es: ¿Tengo que sumar \struts a todas empty nodelas s o hay una forma más agradable de decir que las empty nodes tienen la misma altura que sus hermanas de la derecha?

Respuesta1

Aquí hay un método alternativo que me parece mejor cuando también agrego el sn edgesestilo al árbol. En lugar de usar el nice empty nodestruco de establecer shapeen coordinate, esto crea contenido fantasma para los nodos vacíos (solo un X) y usa una altura de texto estándar para todos los nodos en el árbol para mantener las cosas alineadas.

\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest,calc}

\begin{document}
\newlength\mytextheight
\settototalheight{\mytextheight}{XpX$^0$X$'$}
\begin{forest}
  delay={
    where content={}{
      content={\phantom{X}}
    }{},
  },
  for tree={
    text height=\mytextheight,
    fit=band,
    parent anchor=south,
    child anchor=north,
  }
  [ForceP
    []
    [Force$'$
      [Force$^0$]
      [TopP
        []
        [Top$'$
          [Top$^0$]
          [FocP
            []
            [Foc$'$
              [Foc$^0$]
              [TopP
                []
                [Top$'$
                  [Top$^0$]
                  [FinP
                    []
                    [Fin$'$
                      [Fin$^0$]
                      [IP/AgrSP]
                    ]
                  ]
                ]
              ]
            ]
          ]
        ]
      ]
    ]
  ]
\end{forest}
\end{document}

¿Nodos vacíos más bonitos?

Respuesta2

Puede definir un nice empty nodesestilo como en la página 52 del forestmanual.

\documentclass{article}

\usepackage{forest}
\forestset{
nice empty nodes/.style={
for tree={calign=fixed edge angles},
delay={where content={}{for parent={for children={anchor=north}}}{}}
}}

\begin{document}

\begin{forest}
for tree={fit=band}
[ForceP, nice empty nodes
        []
        [Force$'$
                [Force$^0$]
                [TopP
                        []
                        [Top$'$
                                [Top$^0$]
                                [FocP
                                        []
                                        [Foc$'$
                                                [Foc$^0$]
                                                [TopP
                                                        []
                                                        [Top$'$
                                                                [Top$^0$]
                                                                [FinP
                                                                        []
                                                                        [Fin$'$
                                                                                [Fin$^0$]
                                                                                [IP/AgrSP]]]]]]]]]]]
\end{forest}


\end{document}

ingrese la descripción de la imagen aquí

información relacionada