Forçar um nó ou camada a ser definido abaixo de um outro nó na floresta

Forçar um nó ou camada a ser definido abaixo de um outro nó na floresta

Trabalhando deComposição de árvores gramaticais de dependência com constituintes descontínuosTento definir um gráfico com duas descontinuidades.

A primeira figura faz o que eu quero. Possui nacce o outro N alinhado por uma tierespecificação e como o segundo N é filho de V-ptr, é inferior a V-ptr. Na segunda figura, o N correspondente iché tecnicamente filho do V superior e, portanto, não é inferior a V-ptr. Existe uma maneira (sem fantasmas) de obter os dois Ns ou o nível abaixo do 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}

insira a descrição da imagem aqui

Editar:Uma maneira de conseguir o que desejo é usar uma filha fantasma V-ptre associá-la à camada:

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

insira a descrição da imagem aqui

Mas de alguma forma pensei que seria possível especificar que os nós deveriam estar abaixo de outros nós, ou seja, usando tikzsintaxe para expressar relações de dominância que não estão diretamente na árvore.

Responder1

Esta solução usa um phantomnó, e eu sei que Stefan não quer isso, mas não sei como alinhar ( tier) filhos de primeiro nível com um filho de quinto nível se este não existir. O primeiro exemplo tinha um nó de referência, mas está faltando no segundo. Claro, estou aberto a melhores soluções.

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

2ª versão

Embora com a versão anterior o resultado tenha sido o esperado, colocar o phantomnó como [gesehen\\seen]pai resulta em alguns inconvenientes. É mais fácil se phantomo nó for [gesehen\\seen]'sirmão, embora esteja alinhado com Nos nós. O nó fantasma não ocupa espaço vertical e não é necessário redesenhar a aresta para [gesehen\\seen]. Esta solução foi proposta 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 os códigos resultam em:

insira a descrição da imagem aqui

Responder2

Não tenho certeza se entendi a pergunta. Ou seja, não sei por que você deseja evitar phantomquais são os critérios para uma resposta aceitável. No entanto, o seguinte evita phantom. Se faz algo que você considera igualmente desagradável, não tenho tanta certeza;).

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

árvore sem fantasma

informação relacionada