我正在使用tikz-qtree
,我想绘制一条曲线,将一组节点与树的其余部分分开。例如,
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[every node/.style={circle,draw,
top color=white,bottom color=yellow!80,
very thin},
level distance=1.5cm,
sibling distance=0.6cm]
\Tree[.{$+$}
[.{$*$}
[.{$\cos$}
[.{$a$} ] ]
[.{$2$} ] ]
[.{$y$} ] ]
\end{tikzpicture}
\end{document}
产生这个(抱歉,我还不知道如何将图片上传到 tex.stackexchange,所以这个有点小):
现在,我想绘制一条穿过一条边的(虚线)曲线(例如,从*
到 的边cos
)——将节点集一分为二(cos
和a
以及所有其他节点)。
我知道我可以使用该fit
库在节点周围绘制省略号,但我想要一条开放的线(更像是圆周弧或贝塞尔曲线)。
做到这一点最简单的方法是什么?
答案1
您可以使用\node
带有名称的 TikZ (请参阅第节4 嵌入 TikZ 节点文档tikz-qtree
),然后使用任何有效的方法绘制虚线TikZ
。直线的示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[every node/.style={circle,draw,
top color=white,bottom color=yellow!80,
very thin},
level distance=1.5cm,
sibling distance=0.6cm]
\Tree[.{$+$}
[.\node(ast){$*$};
[.\node(cos){$\cos$};
[.{$a$} ] ]
[.{$2$} ] ]
[.{$y$} ] ]
\path[draw,dotted] ( $ (ast) + (-1,0) $) -- ++(-55:2.5);
\end{tikzpicture}
\end{document}
曲线示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[every node/.style={circle,draw,
top color=white,bottom color=yellow!80,
very thin},
level distance=1.5cm,
sibling distance=0.6cm]
\Tree[.{$+$}
[.\node(ast){$*$};
[.\node(cos){$\cos$};
[.{$a$} ] ]
[.{$2$} ] ]
[.{$y$} ] ]
\path[draw,dotted] ( $ (ast) + (-1,0) $) to[out=230,in=23] ++(-58:2);
\end{tikzpicture}
\end{document}