使用森林包装饰树木

使用森林包装饰树木

使用包“forest”,首先我想绘制以下树(其中终端顶点可以是点或字母),我可以写一棵树,其中所有顶点都是点或所有顶点都是字母,但我不能混合这两种类型以获得这棵树:

在此处输入图片描述

其次,我想修改装饰的位置。我能够画一棵在顶点下有装饰的树: 在此处输入图片描述

以及一棵在顶点上有装饰的树:

在此处输入图片描述

但我希望终端顶点的装饰出现在它们上方,根节点的装饰出现在它们下方。我该怎么做?

答案1

以下是两种解决方案:

您可以定义节点样式(我dot在下面的代码中使用了)。如果您想标记点节点,请添加label={<direction>:<contents>}到适当的节点。您可以使用角度、罗盘方向或位置方向<direction>

在此处输入图片描述

\documentclass{article}

\usepackage{forest}
\tikzset{dot/.style={fill, circle, minimum width=1.5mm, inner sep=0, outer sep=0}}

\begin{document}

\begin{forest}
for tree={grow'=north, s sep=8mm}
[, dot, label={below:$\mathbf{e}_i$}
    [$\mathbf{n}_1$]
    [, dot]
    [$\mathbf{n}_2$]
]
\end{forest}

\end{document}

或者,您可以结合使用父锚点和子锚点以及命令\path来绘制这些锚点。

在此处输入图片描述

\documentclass{article}

\usepackage{forest}
\begin{document}

\begin{forest}
for tree={grow'=north, parent anchor=north, child anchor=south}
[$\mathbf{e}_i$
  [$\mathbf{n}_1$]
  []
  [$\mathbf{n}_2$]
]
\path[fill](.parent anchor) circle[radius=2pt];
\path[fill](!2.child anchor) circle[radius=2pt];
\end{forest}

\end{document}

相关内容