Forzar que un nodo o un nivel se establezca debajo de otro nodo determinado en el bosque

Forzar que un nodo o un nivel se establezca debajo de otro nodo determinado en el bosque

Trabajando desdeDependencia tipográfica Árboles gramaticales con constituyentes discontinuosIntento establecer una gráfica con dos discontinuidades.

La primera figura hace lo que quiero. Tiene naccy el otro N alineado por una tierespecificación y dado que el segundo N es hijo de V-ptr, es menor que V-ptr. En la segunda figura, el N correspondiente a iches técnicamente hijo del V superior y, por lo tanto, no es inferior a V-ptr. ¿Hay alguna manera (sin fantasmas) de obtener las dos N o el nivel inferior a V-ptr?

\documentclass{article}

\usepackage{forest}



\forestset{
dg edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word,edge=dotted,calign with current edge}{}}},
}


\begin{document}

\begin{forest}
dg edges
[V
  [ N,name=nacc,no edge,tier=mytier, [wen\\who] ]
  [glaubst\\believes] 
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
        [N,tier=mytier, [ich\\I ] ]
        [gesehen\\seen] ]
      [habe\\have] ] ] ]
\draw (vprt.south)--(nacc.north);
\end{forest}


\begin{forest}
dg edges
[V
  [N,name=nacc,no edge,tier=mytier, [wen\\who] ]
  [glaubst\\believes] 
  [N,name=nich,no edge,tier=mytier, [ich\\I ] ]
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
        [gesehen\\seen] ]
      [habe\\have] ] ] ]
\draw (vprt.south)--(nacc.north);
\draw (vprt.south)--(nich.north);
\end{forest}

\end{document}

ingrese la descripción de la imagen aquí

Editar:Una forma de lograr lo que quiero es usar una hija fantasma V-ptry combinarla con el nivel:

\documentclass{article}

\usepackage{forest}

\forestset{
dg edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word,edge=dotted,calign with current edge}{}}},
}


\begin{document}



\begin{forest}
dg edges
[V
  [N,name=nacc,no edge,tier=mytier, [wen\\who] ]
  [glaubst\\believes] 
  [N,name=nich,no edge,tier=mytier, [ich\\I ] ]
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
        [down,phantom,tier=mytier]
        [gesehen\\seen] ]
      [habe\\have] ] ] ]
\draw (vprt.south)--(nacc.north);
\draw (vprt.south)--(nich.north);
\end{forest}

\end{document}

ingrese la descripción de la imagen aquí

Pero de alguna manera pensé que sería posible especificar que los nodos deberían estar debajo de otros nodos, es decir, usar tikzla sintaxis para expresar relaciones de dominancia que no están directamente en el árbol.

Respuesta1

Esta solución utiliza un phantomnodo y sé que Stefan no lo quiere, pero no sé cómo alinear ( tier) los niños de primer nivel con un niño de quinto nivel si este no existe. El primer ejemplo tenía un nodo de referencia pero falta en el segundo. Por supuesto, estoy abierto a mejores soluciones.

\documentclass{article}

\usepackage{forest}

\forestset{
dg edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word,edge=dotted,calign with current edge}{}}},
}

\begin{document}

\begin{forest}
dg edges
[V
  [N,name=nacc,no edge,tier=mytier, [wen\\who] ]
  [glaubst\\believes] 
  [N,name=nich,no edge,tier=mytier, [ich\\I ] ]
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
       [A, phantom, tier=mytier, [gesehen\\seen, name=seen] ]]
      [habe\\have] ] ] ]
\draw[dotted] (vprt.south)--(seen.north);
\draw (vprt.south)--(nacc.north);
\draw (vprt.south)--(nich.north);
\end{forest}

\end{document}

2da versión

Aunque con la versión anterior el resultado fue el esperado, colocar el phantomnodo como [gesehen\\seen]padre genera algunos inconvenientes. Es más fácil si phantomel nodo es [gesehen\\seen]'shermano aunque esté alineado con Nlos nodos. El nodo fantasma no ocupa espacio vertical y no es necesario volver a dibujar el borde [gesehen\\seen]. Esta solución fue propuesta por Stefan Müller.

\begin{forest}
dg edges
[V
  [N,name=nacc,no edge,tier=mytier, [wen\\who] ]
  [glaubst\\believes] 
  [N,name=nich,no edge,tier=mytier, [ich\\I ] ]
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
       [A, phantom, tier=mytier]
       [gesehen\\seen] ]
      [habe\\have] ] ] ]
\draw (vprt.south)--(nacc.north);
\draw (vprt.south)--(nich.north);
\end{forest}

Ambos códigos dan como resultado:

ingrese la descripción de la imagen aquí

Respuesta2

No estoy del todo seguro de entender la pregunta. Es decir, no estoy seguro de por qué quiere evitarlo phantomy cuáles son los criterios para una respuesta aceptable. Sin embargo, lo siguiente sí evita phantom. Si hace algo que consideres igualmente desagradable, no estoy tan seguro;).

\documentclass[border=5pt]{standalone}

\usepackage{forest}

\forestset{
dg edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word,edge=dotted,calign with current edge}{}}},
}


\begin{document}



\begin{forest}
dg edges
[V
  [N,name=nacc,no edge,tier=mytier, l*=5.5, [wen\\who] ]
  [glaubst\\believes]
  [N,name=nich,no edge,tier=mytier, [ich\\I ] ]
  [N [du\\you] ]
  [Subjunction
    [dass\\that]
    [V-fin
      [V-prt, name=vprt
        [gesehen\\seen]
      ]
      [habe\\have]
    ]
  ]
]
\draw (vprt.south)--(nacc.north);
\draw (vprt.south)--(nich.north);
\end{forest}

\end{document}

árbol sin fantasma

información relacionada