노드 또는 계층을 포리스트의 특정 다른 노드 아래로 설정하도록 강제

노드 또는 계층을 포리스트의 특정 다른 노드 아래로 설정하도록 강제

근무처:조판 의존성 문법 트리 불연속적인 구성 요소나는 두 개의 불연속성을 갖는 그래프를 설정하려고 합니다.

첫 번째 그림은 내가 원하는 것을 수행합니다. 이는 사양 nacc에 따라 다른 N과 정렬되었으며 tier두 번째 N은 V-ptr의 하위 N이므로 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

이 솔루션은 노드를 사용하며 Stefan이 이를 원하지 않는다는 것을 알고 있지만 이것이 존재하지 않는 경우 첫 번째 수준 하위 항목을 다섯 번째 수준 하위 항목과 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}

두 번째 버전

이전 버전에서는 예상한 대로 결과가 나왔지만 phantom노드를 상위 노드로 배치하면 [gesehen\\seen]약간의 불편함이 있었습니다. 노드 와 정렬되어 있더라도 phantom노드가 형제 이면 더 쉽습니다 . 팬텀 노드는 수직 공간을 차지하지 않으며 가장자리를 다시 그릴 필요가 없습니다 . 이 솔루션은 Stefan Müller가 제안했습니다.[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}

유령 없는 나무

관련 정보