工作自排版具有不連續成分的依存語法樹我嘗試設定一個具有兩個不連續點的圖表。
第一個圖就是我想要的。它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
節點,我知道 Stefan 不想要它,但我不知道如何將 ( 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}
第二版
儘管先前的版本結果符合預期,但將phantom
節點放置為父[gesehen\\seen]
節點會帶來一些不便。如果phantom
節點是
[gesehen\\seen]'s
兄弟,儘管與N
節點對齊,但更容易。幻影節點不佔用垂直空間,無需將邊緣重畫為[gesehen\\seen]
。該解決方案由 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}
兩個程式碼的結果是:
答案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}