我需要将两棵树(包森林)并排放置,但我没有找到有关包文档的任何信息。
\begin{forest}
[P1
[SN
[N[Mary]]]
[VP
[V[loves]]
[N[Luke]]
]]
\end{forest}
\begin{forest}
[P2
[NP
[Pro[This]]]
[VP
[V[is]]
[NP
[Det[a]]
[N[xx]]
]]]
\end{forest}
答案1
无需幻影:使用adjustbox
及其功能移动盒子。由 制成的树forest
的参考点位于底部,我们可以在顶部用 对齐valign=t
。
\documentclass{article}
\usepackage{forest,adjustbox}
\begin{document}
\begin{adjustbox}{valign=t}
\begin{forest}
[P1
[SN
[N[Mary]]]
[VP
[V[loves]]
[N[Luke]]
]]
\end{forest}
\end{adjustbox}\qquad
\begin{adjustbox}{valign=t}
\begin{forest}
[P2
[NP
[Pro[This]]]
[VP
[V[is]]
[NP
[Det[a]]
[N[xx]]
]]]
\end{forest}
\end{adjustbox}
\end{document}
答案2
您的代码中有两个错误,排除了两棵树位于同一水平线上的可能性:
- 环境之间有一个空行
forest
,TeX 会将其解释为新段落。删除该空行或插入%
。 - 您的
forest
环境中有空行。这会阻止 TeX 编译您的代码,因为它会破坏解析器forest
。与上述相同的规则有效。
现在,两forest
棵树都在同一水平线上。由于 TeX 将树(底层的 TikZ 图片)视为两个大框,其基线位于底部,因此树的根部不是垂直对齐的。
baseline
您可以使用选项(forest
此处为选项,也存在 TikZbaseline
选项)更改此设置。在您使用该baseline
选项的任何节点,都会设置整个树的基线。这样,您可以将选项提供baseline
给VP
第一棵树中的节点和Det
第二棵树中的节点,以垂直对齐这些节点处的图片。如果将选项作为环境选项提供forest
,则该选项将应用于根节点。
如果你想让两棵树都出现在一张图片中(以便于在它们之间绘图),phantom
选项可能会有帮助。您可能需要包含几个phantom
级别,以便将子树对齐到不同的级别,如之前的示例所示。
代码
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest} baseline
[P1
[SN
[N[Mary]]]
[VP
[V[loves]]
[N[Luke]]
]]
\end{forest}\hspace{1cm}
\begin{forest} baseline
[P2
[NP
[Pro[This]]]
[VP
[V[is]]
[NP
[Det[a]]
[N[xx]]
]]]
\end{forest}
\end{document}
答案3
这有点棘手。你将两棵树都画成phantom
父树的分支。这个想法是从forest
文档。
\documentclass[tikz,border=2mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
[, phantom, s sep = 1cm
[P1
[SN [N [Mary]]]
[VP [V [loves]]
[N [Luke]]]
]
[P2
[NP [Pro [This]]]
[VP [V [is]]
[NP [Det [a]]
[N [xx]]]]
]
]
\end{forest}
\end{document}
答案4
与 Ignasi 的想法类似,你可以绘制一条“幻影”边缘,使较矮的树与较高的树具有相同的级别。这样就可以实现两种forest
环境。
代码
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
[P1
[SN
[N[Mary]]]
[VP
[V[loves]]
[N[Luke
[,no edge] % phantom edge to increase tree level
]]
]]
\end{forest}
\begin{forest}
[P2
[NP
[Pro[This]]]
[VP
[V[is]]
[NP
[Det[a]]
[N[xx]]
]]]
\end{forest}
\end{document}