forest-노드를 수직으로 이동

Sep 25 2020

다음은 기본 트리입니다.

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

이렇게하면 손으로 그린 ​​선으로 표시된대로 A가 D 위에 수직으로 배치되기를 원하는 다음 그래픽이 생성됩니다. 그렇게하는 쉽고 우아한 방법이 있습니까?

답변

4 SašoŽivanović Sep 25 2020 at 10:17

이것은의 직업입니다 fit=band. 이 옵션을 노드에 넣으면 Forest는 하위 트리의 정확한 외곽선을 계산하지 않고 오히려 성장 방향으로 끝까지 확장되는 하위 트리를 포함하는 가장 작은 직사각형 인 "밴드"에 넣습니다. OPs 사진에서 파란색 선이 차지하는 공간을 차지합니다. 자세한 정보와 사진은 설명서의 섹션 3.7.2를 참조하십시오.

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A, fit = band]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

이 특별한 경우에는 s sep노드 A가 너무 북쪽으로 끝나지 않도록 루트 노드 의을 조정하는 것이 바람직 할 수 있습니다 . s sep형제 하위 트리의 윤곽선 사이의 거리 를 제어 한다는 것을 기억하십시오 . 위의 하위 트리 A의 윤곽선은 D를 지나는 "무한"밴드이므로 루트 s sep가이 거리를 효과적으로 제어합니다.

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [,s sep=0
        [A, fit = band]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

추신 : 거리를 더 명확하게보기 위해 나무에서 작업 draw하는 for tree동안 내부 를 추가하는 것을 좋아합니다 . 두 번째 예제에서 이렇게하면 D의 북쪽과 A의 남쪽이 정렬되고 A와 D 사이에 남아있는 수직 거리가 inner ysep해당 노드에 기인 함을 분명히 알 수 있습니다 .

4 Zarko Sep 25 2020 at 03:52

가능한 해결책은 다음과 같습니다.

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A
            [,no edge] % <---
        ]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

4 AndréC Sep 25 2020 at 04:03

추가로 보이지 않는 노드를 만들 수 있습니다. [,phantom]

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A][,phantom]%<-- invisible node
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}