如何在森林中绘制多个圆圈而不使它们接触?

如何在森林中绘制多个圆圈而不使它们接触?

我怎样才能在下面的树中画两个圆圈而不让它们接触?我需要一个从 State 到 AspP 的圆圈,另一个仅围绕 Mood 和最低的 MoodP。这是句法树的代码。

\documentclass[a4paper,12pt, twoside]{report}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
   \begin{forest}
for tree={s sep=10mm, inner sep=0, l=0}
[MoodP
[AspP
[Asp]
[InitP
[Init]
[ProcP
[Proc] [State]]]]
[MoodP
[Mood][,phantom]
]
]
\end{forest}
\end{document}

结果应该像这样,两个圆圈不接触。 在此处输入图片描述

答案1

您可以使用fit。只需包含name您想要封闭的节点。您可以调整rotatexscaleyscaleshift获得更精确的匹配。

在此处输入图片描述

\documentclass[a4paper,12pt, twoside]{report}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
   \begin{forest}
for tree={s sep=10mm, inner sep=0, l=0}
[MoodP
[AspP, name=C
[Asp, name=E]
[InitP
[Init]
[ProcP
[Proc, name=F] [State, name=D]]]]
[MoodP, name=A
[Mood, name=B][,phantom]
]
]
\node[draw, ellipse, rotate=-50, xscale=.5, fit = {(A) (B)}]{};
\node[draw, ellipse, rotate=47, xscale=.4, yscale=1.2, fit = {(C) (D) (E) (F)}, shift={(-.7,-.1)}]{};
\end{forest}
\end{document}

如果你想要真正的圆形,你必须稍微改变一下树的几何形状。例如:

在此处输入图片描述

\documentclass[a4paper,12pt, twoside]{report}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
   \begin{forest}
for tree={s sep=2cm, inner sep=0, l sep=1cm}
[MoodP, s sep=4cm
[AspP
[Asp, name=E]
[InitP
[Init]
[ProcP
[Proc, name=F] [State, name=D]]]]
[MoodP, name=A
[Mood, name=B][,phantom]
]
]
\node[draw, circle, fit = {(A) (B)}]{};
\node[draw, circle, fit = {(D) (E) (F)}]{};
\end{forest}
\end{document}

答案2

这是使用圆圈的方法。我必须添加更多幻影,以便将树的右侧部分移到右侧。

\documentclass[tikz]{standalone}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
   \begin{forest}
for tree={s sep=10mm, inner sep=0, l=0}
[MoodP
[AspP
[Asp]
[InitP
[Init]
[ProcP
[Proc] [State]]]]
[MoodP
[Mood [,phantom [,phantom][,phantom]]][,phantom]
]
]
\draw (1.9,-1.1) circle [radius=12mm];
\draw (-1.5,-2.7) circle [radius=25mm];
\end{forest}
\end{document}

在此处输入图片描述

圆圈的位置和半径只是反复试验的结果。

相关内容