Forest を使って、奇妙に見えないシンプルな抽象構文木を描く

Forest を使って、奇妙に見えないシンプルな抽象構文木を描く

Forest パッケージを使用して抽象構文木を作成する際に問題が発生しています。以下に示すように、兄弟間には大きなギャップがありますが、このようなギャップは不要です。しかし、この問題に関するドキュメントは見つかりません。

これがTeXで作成できるものです

以下に、現在のツリーの作成方法を示します。この投稿の下部にある図のようなツリーを作成するには、何らかの方法でノードを左に揃える必要があると思います。

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

これは私が探しているものですが、作成できません:

描画

答え1

for treeオプションが必要だと思います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}

出力:

ここに画像の説明を入力してください

関連情報