Einfache abstrakte Syntaxbäume mit Forest zeichnen, ohne dass sie seltsam aussehen

Einfache abstrakte Syntaxbäume mit Forest zeichnen, ohne dass sie seltsam aussehen

Ich habe ein Problem beim Erstellen einiger abstrakter Syntaxbäume mit dem Forest-Paket. Wie unten deutlich wird, besteht zwischen den Geschwistern eine große Lücke, obwohl eine solche Lücke nicht erforderlich ist, aber ich kann in der Dokumentation nichts zu diesem Problem finden.

Das kann ich in TeX erstellen

Unten können Sie sehen, wie ich den aktuellen Baum erstellt habe. Ich denke, ich muss die Knoten irgendwie nach links ausrichten, wenn ich einen Baum haben möchte, der wie meine Zeichnung unten in diesem Beitrag aussieht.

\begin{forest}
for tree={
    before typesetting nodes={content=\texttt{#1}}
}
[<regexp>, s sep=0pt
    [(seq]
    [<regexp>, edge={draw=none}
        [(atom 1)]
    ]
    [<regexp>), edge={draw=none}
        [(seq]
        [<regexp>, edge={draw=none}
            [(atom 2)]
        ]
        [<regexp>), edge={draw=none}
            [(seq]
            [<regexp>, edge={draw=none}
                [(atom 3)]
            ]
            [<regexp>), edge={draw=none}]
        ]
    ]
]
\end{forest}

Das hier ist, was ich suche, aber nicht erstellen kann:

Zeichnung

Antwort1

Ich denke, Sie brauchen die for treeOption calign=first.

\documentclass{book}
\usepackage[linguistics]{forest}
\begin{document}
\begin{forest}
for tree={
    before typesetting nodes={content=\texttt{#1},
    calign=first}
}
[<regexp>, s sep=0pt
    [(seq]
    [<regexp>, edge={draw=none}
        [(atom 1)]
    ]
    [<regexp>), edge={draw=none}
        [(seq]
        [<regexp>, edge={draw=none}
            [(atom 2)]
        ]
        [<regexp>), edge={draw=none}
            [(seq]
            [<regexp>, edge={draw=none}
                [(atom 3)]
            ]
            [<regexp>), edge={draw=none}]
        ]
    ]
]
\end{forest}
\end{document}

Ausgaben:

Bildbeschreibung hier eingeben

verwandte Informationen