我正在尝试使用包在语法树的一部分周围创建一个框xytree
。我知道我们可以使用qtree
包含命令的包来做到这一点\qframesubtree
。但是,我想使用xytree
包来做到这一点。有人能告诉我怎么做吗?
以下是我目前所拥有的:
\documentclass{article}
\usepackage{qtree}
\usepackage{xytree}
\begin{document}
\Tree [.S \qroof{John}.NP [.VP V\\loves \qroof{Mary}.NP ] !{\qframesubtree} ]
\xytree{& \xynode[-1,1]{S} \\
\xytrinode{NP} && \xynode[-1,1]{VP} \\
\xynode{John} & \xynode[0]{V} && \xytrinode{NP}\\
& \xynode{loves} && \xynode{Mary}
}
\end{document}
答案1
xytree
鉴于存在像tikz-qtree
和 这样的树形绘制包,我不太确定为什么有人真的想使用来绘制树形图,但使用和以及对象组合forest
来做你想做的事情是可能的。稍微解开代码:xypic
\save
\restore
\save"2,2"*+<2.5em,1.5em>{}."4,4"*+=[F-]\frm{}\restore
我们首先将节点"2,2"
(加上足够的空间来包含loves
节点) 与节点组合,然后为其"4,4"
添加框架。此操作在和内完成,从而保持节点的先前位置,从而有效地实现覆盖。[F-]\frm{}
\save
\restore
forest
如果您有兴趣的话,我还展示了如何做到这一点......
% !TEX TS-program = LaTeX
\documentclass{article}
\usepackage{qtree}
\usepackage{xytree}
\usepackage[linguistics]{forest}
\begin{document}
\qtreecenterfalse
Qtree
\Tree [.S \qroof{John}.NP [.VP V\\loves \qroof{Mary}.NP ] !{\qframesubtree} ]
XYtree
\xytree{
& \xynode[-1,1]{S} \\
\xytrinode{NP} && \xynode[-1,1]{VP} \\
\xynode{John} & \xynode[0]{V} && \xytrinode{NP}\\
& \xynode{loves} && \xynode{Mary}
\save"2,2"*+<2.5em,1.5em>{}."4,4"*+=[F-]\frm{}\restore
}
Forest
\begin{forest}
[S [NP [{John},roof ]] [VP,tikz={\node[draw,fit to=tree]{};} [V\\loves] [NP, [{Mary},roof] ]]]
\end{forest}
\end{document}