이상해 보이지 않고 포레스트를 사용하여 간단한 추상 구문 트리 그리기

이상해 보이지 않고 포레스트를 사용하여 간단한 추상 구문 트리 그리기

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}

출력:

여기에 이미지 설명을 입력하세요

관련 정보