Erzwingen, dass ein Knoten oder eine Ebene unter einem bestimmten anderen Knoten im Forest liegt

Erzwingen, dass ein Knoten oder eine Ebene unter einem bestimmten anderen Knoten im Forest liegt

Arbeiten vonSatzabhängigkeit Grammatikbäume mit diskontinuierlichen BestandteilenIch versuche, einen Graphen mit zwei Unstetigkeiten zu erstellen.

Die erste Abbildung macht, was ich will. Sie hat naccund das andere N sind nach einer tierSpezifikation ausgerichtet und da das zweite N ein Kind von V-ptr ist, ist es niedriger als V-ptr. In der zweiten Abbildung ichist das entsprechende N technisch gesehen ein Kind des obersten V und daher nicht niedriger als V-ptr. Gibt es eine Möglichkeit (ohne Phantome), die beiden Ns oder die Ebene unter V-ptr zu erhalten?

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

Bildbeschreibung hier eingeben

Bearbeiten:Eine Möglichkeit, mein Ziel zu erreichen, besteht darin, eine Phantomtochter zu verwenden V-ptrund sie mit der Ebene zu koppeln:

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

Bildbeschreibung hier eingeben

Aber ich dachte irgendwie, dass es möglich wäre, anzugeben, dass Knoten unter anderen Knoten liegen sollten, das heißt, tikzeine Syntax zu verwenden, um Dominanzbeziehungen auszudrücken, die nicht direkt im Baum vorkommen.

Antwort1

Diese Lösung verwendet einen phantomKnoten, und ich weiß, dass Stefan das nicht will, aber ich weiß nicht, wie ich untergeordnete tierElemente der ersten Ebene mit einem untergeordneten Element der fünften Ebene ausrichten kann, wenn dieses nicht existiert. Das erste Beispiel hatte einen Referenzknoten, der im zweiten fehlt. Natürlich bin ich offen für bessere Lösungen.

\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. Version

Obwohl das Ergebnis mit der vorherigen Version wie erwartet war, führt das Platzieren des phantomKnotens als [gesehen\\seen]übergeordneter Knoten zu einigen Unannehmlichkeiten. Es ist einfacher, wenn phantomder Knoten ein Bruderknoten ist [gesehen\\seen]'s, obwohl er mit Nden Knoten ausgerichtet ist. Der Phantomknoten nimmt keinen vertikalen Raum ein und es ist nicht erforderlich, die Kante neu zu zeichnen [gesehen\\seen]. Diese Lösung wurde von Stefan Müller vorgeschlagen.

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

Beide Codes führen zu:

Bildbeschreibung hier eingeben

Antwort2

Ich bin mir nicht ganz sicher, ob ich die Frage verstehe. Das heißt, ich bin mir nicht sicher, warum Sie vermeiden möchten phantomund was die Kriterien für eine akzeptable Antwort sind. Im Folgenden wird jedoch vermieden phantom. Ob es irgendetwas bewirkt, das Sie als ebenso anstößig empfinden, weiß ich nicht so genau ;).

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

Baum ohne Phantom

verwandte Informationen