특정 터미널 노드의 형식을 지정하고 포리스트를 사용하여 해당 터미널 노드와 상위 노드 사이의 선을 제거합니다.

특정 터미널 노드의 형식을 지정하고 포리스트를 사용하여 해당 터미널 노드와 상위 노드 사이의 선을 제거합니다.

사용할 때forest언어 구문 트리를 그리기 위한 패키지를 사용 하는 경우 프로그래밍 방식의 형식 지정을 용이하게 하기 위해 forest/ 에서 볼 수 있는 별도의 "노드"로 유지하면서 특정 터미널 노드와 해당 부모 사이에 선이 그려지는 것을 어떻게 방지할 수 있습니까?TikZ

다음은 원하는 출력의 예입니다(아래 MWE에 제공된 현재 해결 방법을 사용하여 생성됨).

예제-원하는 출력-트리

현재 해결 방법에는 너무 많은 수동 개입이 필요한 다음이 포함됩니다.

  • 단일 노드를 생성한 다음 구문 범주(있는 경우)와 해당 어휘 구현(있는 경우) 사이에 강제로 줄 바꿈을 적용하여 "터미널 노드"와 해당 "상위" 사이의 줄을 제거합니다 [DP\\the apple].
  • 어휘 항목이 있는 터미널 노드에는 패키지로 색상을 지정하여 이러한 항목을 수동으로 장식합니다 xcolor(예 [DP\\\textcolor{blue}{the apple}]: .

이상적으로는 환경 내에 다음 코드와 같은 것을 프로그래밍 방식으로 적용할 수 있기를 바랍니다 forest.

for tree={
    if n children=0{
        text=blue
    }{},
}

그러나 위의 코드 조각을 추가하면 다음과 같은 원하지 않는 출력이 생성됩니다.

예-원치 않는 출력-트리

나는 해결책이 "어휘적 터미널 노드" 유형(예: 비어 있거나 구문 범주 대신 어휘 유형인 터미널 노드)을 설정한 다음 해당 노드에만 텍스트 장식을 적용하는 것과 관련이 있을 수 있다고 생각합니다. 유형. 그러나 내에서 이 작업을 수행하는 방법 forest이나 이것이 좋은/최적의 솔루션인지 잘 모르겠습니다 .

최소 작업 예(현재 해결 방법)

\documentclass[a4paper]{article}

% ----- Package Imports -----
\usepackage{amsmath, amssymb, amsthm, mathtools} % Math enhancements
\usepackage{newpxtext, newpxmath} % Palatino fonts (load after amssymb)
\usepackage[svgnames]{xcolor} % Custom colours
%\usepackage[style=ieee]{biblatex} % Bibliography
\usepackage[linguistics]{forest} % Linguistic syntax trees

\begin{document}
\begin{forest}
    [CP
        [\phantom{X}]
        [C'
            [C]
            [TP 
                [\phantom{X},name=TP-spec]
                [T'
                    [T\\\textcolor{blue}{$\varnothing_{\text{past}}$},name=TP-head]
                    [VoiceP 
                        [DP\\\textcolor{blue}{Bill}]
                        {\draw[->] () to[out=south west,in=west,distance=2cm] (TP-spec);}
                        [Voice' 
                            [Voice\\\textcolor{blue}{$\varnothing_{\text{active}}$}]
                            [VP 
                                [DP]
                                [V'
                                    [V\\{[}FORM preterite{]}\\\textcolor{blue}{ate}]
                                    [DP\\\textcolor{blue}{the apple}]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
\end{forest}
\end{document}

답변1

노드에 적용하면 no edge상위 노드에 대한 가장자리가 그려지지 않습니다.

l sep=0상위 노드와 l=0하위 노드를 결합하면 서로 수직으로 가까워집니다.

inner ysep=0하위 항목을 추가로 설정하고(이렇게 하면 카테고리와 어휘 내용이 좀 더 가까워짐) TikZ에서 Forest의 항목 align(노드 내용을 환경에 배치하여 tabular추가적인 수직 공간을 생성함)을 재정의 하면 결과가 가장 만족스럽습니다. align: \forestset{align/.style={/tikz/align={#1}}}.

\documentclass[a4paper]{article}

% ----- Package Imports -----
\usepackage[svgnames]{xcolor} % Custom colours
\usepackage{amsmath, amssymb, amsthm, mathtools} % Math enhancements
\usepackage{newpxtext, newpxmath} % Palatino fonts (load after amssymb)
%\usepackage[style=ieee]{biblatex} % Bibliography
\usepackage[linguistics]{forest} % Linguistic syntax trees

\forestset{align/.style={/tikz/align={#1}}}

\begin{document}
\begin{forest}
  for tree={
    if n children=1{
      l sep=0,
      for 1={no edge, l=0, inner ysep=0, blue}
    }{},
  }
    [CP
        [\phantom{X}]
        [C'
            [C]
            [TP 
                [\phantom{X},name=TP-spec]
                [T'
                    [T[$\varnothing_{\text{past}}$,name=TP-head]]
                    [VoiceP 
                        [DP[Bill]
                          {\draw[->] () to[out=south west,in=west,distance=2cm] (TP-spec);}
                        ]
                        [Voice' 
                            [Voice[$\varnothing_{\text{active}}$]]
                            [VP 
                                [DP]
                                [V'
                                    [V\\{[}FORM preterite{]}[ate]]
                                    [DP[the apple]]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
\end{forest}
\end{document}

조판 트리 수정의 효과

관련 정보