使用 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}

输出:

在此处输入图片描述

相关内容