在最近从 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 阶段(非森林)节点设置为基线,需要使用 的tikz
键baseline
。一种方法是附加到森林的样式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
。