使用“xytree”包在句法树的一部分周围绘制框架

使用“xytree”包在句法树的一部分周围绘制框架

我正在尝试使用包在语法树的一部分周围创建一个框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}

代码输出

相关内容