我在 LaTeX 文档中插入了使用该包绘制的树形图qtree
:
...
\usepackage[noload]{qtree}
...
\begin{document}
...
\Tree [.{A} [.{B} {C} {D} ] [.{B'} {D'} ] ]
...
\end{document}
输出结果如下:
到目前为止,一切都很好。
我现在需要做的是将树的最后一个节点以一种跨越树的句法分支的方式包装到(标记的)盒子中。
为了让您有个概念,这是我想要实现的一个非常粗略的草图(其中A和b代表盒子标签):
我理解这可能是无法实现的,qtree
因为它只!qframesubtree
允许你将盒子放在完整的子树周围。
关于如何解决这个问题有什么建议吗?
答案1
这是一个forest
解决方案。
\documentclass[]{article}
\usepackage[linguistics]{forest}
\forestset{child frame/.style={tikz={\node () [rectangle, red,draw, fit=#1,inner sep = 0pt] {};}}}
\begin{document}
\begin{forest}
[A [B [C,name=C,child frame={(C),label=below:a} ] [D,name=D ] ] [B',child frame={(D)(D1),label=right:b} [D',name=D1 ] ]]
\end{forest}
\end{document}
答案2
以下是修改后的版本Alan Munn 的方法,使用fit to
。第一棵树使用命名节点。第二棵树则不用命名节点。
% addaswyd o ateb Alan Munn: https://tex.stackexchange.com/a/383043/
\documentclass[border=10pt]{standalone}
\usepackage[linguistics]{forest}
\forestset{
child frame/.style={
tikz+={
\node [draw=blue, fit to={#1}, inner sep=0pt] {};
},
},
}
\begin{document}
\begin{forest}
[A [B [C, name=C, child frame={name=C}, label=below:a ] [D, name=D ] ] [B', child frame={{name=D, name=D1}}, [D', name=D1, label=right:b ] ]]
\end{forest}
\begin{forest}
[A [B [C, child frame={c}, label=below:a ] [D ] ] [B' [D', child frame={c,fake={us},l}, label=right:b ] ]]
\end{forest}
\end{document}
哦,我的是蓝色的......