LaTeX 树中跨分支的装箱标签

LaTeX 树中跨分支的装箱标签

我在 LaTeX 文档中插入了使用该包绘制的树形图qtree

...
\usepackage[noload]{qtree}
...
\begin{document}
...
\Tree [.{A} [.{B} {C} {D} ] [.{B'} {D'} ] ]
...
\end{document}

输出结果如下:

在此处输入图片描述

到目前为止,一切都很好。

我现在需要做的是将树的最后一个节点以一种跨越树的句法分支的方式包装到(标记的)盒子中。

为了让您有个概念,这是我想要实现的一个非常粗略的草图(其中Ab代表盒子标签):

在此处输入图片描述

我理解这可能是无法实现的,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}

哦,我的是蓝色的......

带箱子的森林树木

相关内容