Принудительная установка узла или уровня ниже определенного другого узла в лесу

Принудительная установка узла или уровня ниже определенного другого узла в лесу

Работаем изНабор грамматических деревьев зависимостей с прерывистыми составляющимиЯ пытаюсь построить график с двумя разрывами.

Первая фигура делает то, что я хочу. Она имеет naccи другой N, выровненный по tierспецификации, и поскольку второй N является потомком V-ptr, он ниже V-ptr. На второй фигуре N, соответствующий ichтехнически является потомком самого верхнего V, и, следовательно, он не ниже V-ptr. Есть ли способ (без фантомов) получить два N или уровень ниже 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}

введите описание изображения здесь

Редактировать:Один из способов добиться желаемого — использовать фантомную дочернюю сущность 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,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}

введите описание изображения здесь

Но я почему-то думал, что можно будет указать, что узлы должны располагаться ниже других узлов, то есть использовать tikzсинтаксис для выражения отношений доминирования, которых нет в дереве напрямую.

решение1

Это решение использует phantomузел, и я знаю, что Стефан этого не хочет, но я не знаю, как выровнять ( tier) дочерние элементы первого уровня с дочерним элементом пятого уровня, если его нет. В первом примере был опорный узел, но во втором его нет. Конечно, я открыт для лучших решений.

\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-я версия

Хотя в предыдущей версии результат был ожидаемым, размещение phantomузла в качестве [gesehen\\seen]родителя приводит к некоторым неудобствам. Проще, если phantomузел является [gesehen\\seen]'sбратом, хотя и выровнен с Nузлами. Фантомный узел не занимает вертикального пространства, и нет необходимости перерисовывать край в [gesehen\\seen]. Это решение было предложено Стефаном Мюллером.

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

Оба кода приводят к:

введите описание изображения здесь

решение2

Я не совсем уверен, что понимаю вопрос. То есть, я не уверен, почему вы хотите избегать, phantomтак каковы критерии приемлемого ответа. Однако следующее действительно избегает phantom. Делает ли это что-то, что вы считаете столь же неприятным, я не уверен ;).

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

дерево без фантома

Связанный контент