Wald - Verschiebt einen Knoten vertikal

Sep 25 2020

Hier ist ein grundlegender Baum.

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

Dies erzeugt die folgenden Grafiken, bei denen ich möchte, dass das A vertikal über dem D liegt, wie durch die handgezeichneten Linien angezeigt. Gibt es eine einfache und / oder elegante Möglichkeit, dies zu tun?

Antworten

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

Dies ist ein Job für fit=band. Wenn Sie diese Option einem Knoten zuweisen, berechnet Forest nicht den genauen Umriss seines Teilbaums, sondern fügt ihn in ein "Band" ein - das kleinste Rechteck, das den Teilbaum enthält, der sich bis in die Richtung des Wachstums erstreckt, dh nimmt den Platz ein, den die blaue Linie im OP-Bild einnimmt. Weitere Informationen und Bilder finden Sie in Abschnitt 3.7.2 des Handbuchs.

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

In diesem speziellen Fall kann es wünschenswert sein, die s sepdes Wurzelknotens so einzustellen , dass der Knoten A nicht zu weit nördlich endet. Denken Sie daran, dass dies s sepden Abstand zwischen den Umrissen der Teilbäume der Geschwister steuert. Oben ist der Umriss von Teilbaum A ein "unendliches" Band, das sich über D hinaus erstreckt, sodass die Wurzel s sepdiesen Abstand effektiv steuert.

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

PS Um zu sehen , die Abstände deutlicher, Ich mag hinzufügen drawinnerhalb des for treewährend auf dem Baum arbeiten. Wenn Sie dies im zweiten Beispiel tun, wird deutlich, dass der Norden von D und der Süden von A ausgerichtet sind und dass der verbleibende vertikale Abstand zwischen A und D inner ysepauf diese Knoten zurückzuführen ist.

4 Zarko Sep 25 2020 at 03:52

Eine mögliche Lösung ist:

\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

Sie können einen zusätzlichen unsichtbaren Knoten mit erstellen [,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}