使森林中的输出成为带括号的标签而不是树

使森林中的输出成为带括号的标签而不是树

forest我使用下面的代码串在包中制作了一棵简单的树。

\documentclass{article}

\usepackage{gb4e}
\noautomath

\usepackage{forest}

\begin{exe}
\ex 

\begin{forest}

[DP
[D'
    [D]
    [NP
        [N'
            [N]]]]]

\end{forest}

\end{exe}
\end{document}

这会将输出作为标准语法树。但是,我想要做的是类似于下面代码排版的内容。

\documentclass{article}

\usepackage{gb4e}
\noautomath

\usepackage{forest}

\begin{exe}
\ex $[${\subscript{\scriptsize DP}}$[${\subscript{\scriptsize D'}} $[$ D $]$ $[${\subscript{\scriptsize NP}}  $[${\subscript{\scriptsize N'}} $[$N $]$ $]$ $]$ $]$ $]$

\end{exe}
\end{document}

但我想知道是否有一种简单的方法可以让 forest 将语法树打印为带标签的括号。应该有一个简单的命令来实现这一点,但我在手册中找不到它。

输出 在此处输入图片描述

答案1

下面的代码定义了 style draw brackets,它输出括号表示,并展示了两种使用它的方法。第一种用例draw tree stage用新样式替换了 的默认内容;第二种用例向其添加内容(并且在每个输出前面加上一个以\ex开始一个新示例)。

amsmath已加载\text,但也可以使用\mbox{\scriptsize ...}并且不用amsmath。)

\documentclass{article}

\usepackage{gb4e}
\noautomath

\usepackage{forest}
\usepackage{amsmath}

\forestset{
  draw brackets/.style={
    TeX={[},
    if n children=0{
      TeX={ \forestoption{content} }
    }{
      TeX={$_{\text{\forestoption{content}}}$ }
    },
    for children=draw brackets,
    TeX={]\space},
  }
}  

\begin{document}

Bracket output instead of a tree:
\begin{exe}
\ex 
\begin{forest}
  draw tree stage/.style={for root'=draw brackets},
[DP
[D'
    [D]
    [NP
        [N'
            [N]]]]]
\end{forest}
\end{exe}

Bracket output additional to the tree:
\begin{exe}
\begin{forest}
  draw tree stage/.style={TeX={\ex},for root'=draw tree,TeX={\ex},for root'=draw brackets},
[DP,baseline
[D'
    [D]
    [NP
        [N'
            [N]]]]]
\end{forest}
\end{exe}

\end{document}

相关内容