森林中一棵树从底部到顶部的示例数字

森林中一棵树从底部到顶部的示例数字

在最近从 MacTex 2015 更新到 2016 之后,该forest包也进行了更新,这导致现有树出现问题。问题涉及gb4e包创建的示例编号。在更新之前,该编号与节点 CP 阶段的高度相同。在此版本中,示例编号出现在底部。

\documentclass{minimal}
\usepackage{forest, gb4e}

\forestset{
fairly nice empty nodes/.style={
            delay={where content={}{shape=coordinate,for parent={
                  for children={anchor=north}}}{}}
}}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}
\begin{document}


\begin{exe}
\ex \label{saktree1}
\begin{forest}, fairly nice empty nodes, 
[CP-phase, phantom, l sep=19pt, 
    [\ldots, for descendants={l=0}, name=dots, tikz={\node [draw,inner sep=20pt, fit=(V)(dots)(book)(Erel)(v)(T)] {};}
        [\textit{v}P
            [DP
                [Erel, fit=band, roof, name=Erel ] ]
            [{}, calign angle=60
                [VP, name=VP, tikz={\node [draw, inner sep=1pt, fit=(VP)(V)(book)] {};}
                        [DP
                            [ kinige, name=book, roof ] ] 
                        [V\\atyylas-ta, name=V] ] 
                [\textit{v}, name=v, fit=band ] ] ]
        [T, name=T, fit=band ] ] ]
\node at (dots)[above=6ex]{\bfseries{CP-phase}}; baseline
\node at (VP)[below=78pt]{\bfseries{VP-phase}}; name=VPnod
\end{forest}
\end{exe}
\end{document}

该代码产生以下输出:

在此处输入图片描述

答案1

linguistics库中,根节点自动设置为baseline。但是(自 forest v2.0.3 开始),baseline幻影节点被忽略 --- 理应如此,因为它们不会被绘制。

要将 CP 阶段(非森林)节点设置为基线,需要使用 的tikzbaseline。一种方法是附加到森林的样式begin draw,从而为森林生成的整体提供参数tikzpicture,如下所示。

\documentclass{minimal}
\usepackage{forest, gb4e}

\forestset{
fairly nice empty nodes/.style={
            delay={where content={}{shape=coordinate,for parent={
                  for children={anchor=north}}}{}}
}}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}
\begin{document}


\begin{exe}
\ex \label{saktree1}
\begin{forest}, fairly nice empty nodes, 
                begin draw/.append code={[baseline=(CP-phase.base)]},
[CP-phase, phantom, l sep=19pt, 
    [\ldots, for descendants={l=0}, name=dots, tikz={\node [draw,inner sep=20pt, fit=(V)(dots)(book)(Erel)(v)(T)] {};}
        [\textit{v}P
            [DP
                [Erel, fit=band, roof, name=Erel ] ]
            [{}, calign angle=60
                [VP, name=VP, tikz={\node [draw, inner sep=1pt, fit=(VP)(V)(book)] {};}
                        [DP
                            [ kinige, name=book, roof ] ] 
                        [V\\atyylas-ta, name=V] ] 
                [\textit{v}, name=v, fit=band ] ] ]
        [T, name=T, fit=band ] ] ]
\node at (dots)[above=6ex,name=CP-phase]{\bfseries{CP-phase}}; baseline
\node at (VP)[below=78pt]{\bfseries{VP-phase}}; name=VPnod
\end{forest}
\end{exe}
\end{document}

“历史”注释。在 2.0.3 之前,baseline和之间的交互实际上存在错误。OP 的示例之所以有效,是因为放置在 处的根是预期的基线。phantom(0,0)

还请注意,上述代码很好地对齐了 和 的(TeX)基线(1)CP-phase而 2.0.3 之前的版本对齐了 的基线(1)和 的中心CP-phase

相关内容