强制将节点或层级设置为森林中某个其他节点之下

强制将节点或层级设置为森林中某个其他节点之下

工作于排版具有不连续成分的依存语法树我尝试设置一个具有两个不连续点的图。

第一个图满足我的要求。它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]则更容易。幻影节点不占用垂直空间,并且不需要将边缘重新绘制到。该解决方案由 Stefan Müller 提出。phantom[gesehen\\seen]'sN[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}

无幻象之树

相关内容