用森林繪製簡單的抽象語法樹,而不會讓它們看起來很奇怪

用森林繪製簡單的抽象語法樹,而不會讓它們看起來很奇怪

我在使用 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。 IE

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

輸出:

在此輸入影像描述

相關內容