具有边分组的树

具有边分组的树

我知道如何绘制$k$-tree单层,但我还需要对边缘进行分组。参见下图:

在此处输入图片描述

这就是我正在尝试的:

\begin{forest}
for tree={l+=0.08cm} % increase level distance
  [1
    [2
       [4][5]
    ]
    [3
       [6][7]
    ]
  ]
\end{forest}

答案1

这是一个带有几个括号的示例。我认为括号端点的定义方式称为“nodewalk”。我可能无法比手册更好地解释它forest,因此请阅读从第 8 页底部开始的示例,以“终于,最强大的工具”开头,以及第 57 页的 3.8.7。(页面引用基于 2017 年 7 月 14 日的 2.1.5 版手册。forest

代码输出

\documentclass[border=5mm]{standalone}
\usepackage{forest}
\usetikzlibrary{decorations.pathreplacing}
\tikzset{
  Brace/.style={
      decoration={
         brace,
         mirror,
         amplitude=5pt,
         raise=#1 % use argument to style to determine how far the brace is moved
      },
      decorate
  },
  % set the default argument to 0
  Brace/.default=0
}
\begin{document}
\begin{forest}
for tree={l+=0.08cm} % increase level distance
  [1
    [2
       [4]
       {
          \draw [Brace] (.south west) -- (!>>>>.south east);
          \draw [red,Brace=5pt] (.south west) -- (!>>>.south east);
          \draw [blue,Brace=10pt] (.south west) -- (!s.south east);
       }
       [5]
       {
          \draw [orange,Brace=15pt] (.south west) -- (!uu21.south east);
       }
    ]
    [3
       [6]
       {
          \draw [cyan,Brace=10pt] (.south west) -- (!s.south east);
       }
       [7]
    ]
  ]
\end{forest}
\end{document}

相关内容