勤務地不連続な構成要素を持つ依存関係文法ツリーの組版2つの不連続点を持つグラフを設定してみます。
最初の図は、私が望んでいることを実行します。仕様nacc
によって他の N が整列されておりtier
、2 番目の N は V-ptr の子であるため、V-ptr より低くなります。2 番目の図では、対応する N はich
技術的には最上位の V の子であるため、V-ptr より低くなりません。2 つの 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}
編集:私が望むことを達成する 1 つの方法は、ファントムの娘を使用して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
これが存在しない場合に、第 1 レベルの子を第 5 レベルの子と整列させる方法がわかりません。最初の例には参照ノードがありましたが、2 番目の例にはありません。もちろん、より良いソリューションがあれば歓迎します。
\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]
場合は簡単です。ファントム ノードは垂直方向のスペースを占有せず、エッジを再描画する必要はありません。このソリューションは、Stefan Müller によって提案されました。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}