Formatee nodos terminales particulares y elimine líneas entre ellos y sus padres usando el bosque

Formatee nodos terminales particulares y elimine líneas entre ellos y sus padres usando el bosque

Al usar elforestpaquete para dibujar árboles de sintaxis lingüística, ¿cómo se puede evitar que se dibujen líneas entre nodos terminales particulares y sus padres, y al mismo tiempo mantenerlos como "nodos" separados tal como los ve forest/ TikZpara facilitar el formato programático?

A continuación se muestra un ejemplo del resultado deseado (producido utilizando mi solución actual como se indica en el MWE a continuación):

ejemplo-árbol-de-salida-deseado

Mi solución actual implica lo siguiente que requiere demasiada intervención manual:

  • Elimino líneas entre un "nodo terminal" y su "padre" creando un solo nodo y luego forzando un salto de línea entre la categoría sintáctica (si está presente) y su realización léxica (si está presente), por ejemplo [DP\\the apple].
  • Los nodos terminales que tienen elementos léxicos tienen estos elementos decorados manualmente coloreándolos con el xcolorpaquete (por ejemplo [DP\\\textcolor{blue}{the apple}], .

Idealmente, me gustaría poder aplicar mediante programación algo como el siguiente código dentro del forestentorno:

for tree={
    if n children=0{
        text=blue
    }{},
}

Sin embargo, agregar el fragmento anterior produce el siguiente resultado no deseado:

ejemplo-árbol-de-salida-no deseada

Me imagino que la solución podría tener algo que ver con configurar un tipo de "nodo terminal léxico" (es decir, nodos terminales que son de un tipo léxico en lugar de una categoría vacía o sintáctica), y luego aplicar solo la decoración de texto a los nodos de ese tipo. Sin embargo, no estoy seguro de cómo hacer esto en forest, o si es una solución buena/óptima.

Ejemplo de trabajo mínimo (solución alternativa actual)

\documentclass[a4paper]{article}

% ----- Package Imports -----
\usepackage{amsmath, amssymb, amsthm, mathtools} % Math enhancements
\usepackage{newpxtext, newpxmath} % Palatino fonts (load after amssymb)
\usepackage[svgnames]{xcolor} % Custom colours
%\usepackage[style=ieee]{biblatex} % Bibliography
\usepackage[linguistics]{forest} % Linguistic syntax trees

\begin{document}
\begin{forest}
    [CP
        [\phantom{X}]
        [C'
            [C]
            [TP 
                [\phantom{X},name=TP-spec]
                [T'
                    [T\\\textcolor{blue}{$\varnothing_{\text{past}}$},name=TP-head]
                    [VoiceP 
                        [DP\\\textcolor{blue}{Bill}]
                        {\draw[->] () to[out=south west,in=west,distance=2cm] (TP-spec);}
                        [Voice' 
                            [Voice\\\textcolor{blue}{$\varnothing_{\text{active}}$}]
                            [VP 
                                [DP]
                                [V'
                                    [V\\{[}FORM preterite{]}\\\textcolor{blue}{ate}]
                                    [DP\\\textcolor{blue}{the apple}]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
\end{forest}
\end{document}

Respuesta1

La aplicación no edgea un nodo evita que se dibuje el borde de su padre.

La combinación de l sep=0en el nodo principal y l=0en el nodo secundario los acerca verticalmente entre sí.

El resultado me parece más satisfactorio si además configuro inner ysep=0el elemento secundario (esto acerca aún un poco más la categoría y el contenido léxico) y anulo el de Forest align(que coloca el contenido del nodo en un tabularentorno y, por lo tanto, crea un espacio vertical adicional) con el de TikZ. align: \forestset{align/.style={/tikz/align={#1}}}.

\documentclass[a4paper]{article}

% ----- Package Imports -----
\usepackage[svgnames]{xcolor} % Custom colours
\usepackage{amsmath, amssymb, amsthm, mathtools} % Math enhancements
\usepackage{newpxtext, newpxmath} % Palatino fonts (load after amssymb)
%\usepackage[style=ieee]{biblatex} % Bibliography
\usepackage[linguistics]{forest} % Linguistic syntax trees

\forestset{align/.style={/tikz/align={#1}}}

\begin{document}
\begin{forest}
  for tree={
    if n children=1{
      l sep=0,
      for 1={no edge, l=0, inner ysep=0, blue}
    }{},
  }
    [CP
        [\phantom{X}]
        [C'
            [C]
            [TP 
                [\phantom{X},name=TP-spec]
                [T'
                    [T[$\varnothing_{\text{past}}$,name=TP-head]]
                    [VoiceP 
                        [DP[Bill]
                          {\draw[->] () to[out=south west,in=west,distance=2cm] (TP-spec);}
                        ]
                        [Voice' 
                            [Voice[$\varnothing_{\text{active}}$]]
                            [VP 
                                [DP]
                                [V'
                                    [V\\{[}FORM preterite{]}[ate]]
                                    [DP[the apple]]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
\end{forest}
\end{document}

efecto de las modificaciones en el árbol tipográfico

información relacionada