Работаем изНабор грамматических деревьев зависимостей с прерывистыми составляющимиЯ пытаюсь построить график с двумя разрывами.
Первая фигура делает то, что я хочу. Она имеет 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}