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}