TikZ:节点周围的圆圈隐藏的箭头

TikZ:节点周围的圆圈隐藏的箭头

语境 我想在节点之间画线来表示依赖关系。节点被画成圆圈。不幸的是箭头被圆圈遮住了。

问题 我怎样才能缩短这条线,使得这条线和两个圆圈之间有间隙?

代码

\draw [color=black, fill=black] (1.00, 0.00) circle (.1);
\draw [color=black, fill=black] (2.00, 0.00) circle (.1);
\draw (1.00, 1.00);
\draw (2.00, 1.00);
\draw [color=white] (2.25, 1.25) circle (.1);
\path [draw, ->] (1.00, 0.00) -- (2.00, 0.00);
\path [draw, ->] (1.00, 1.00) -- (2.00, 1.00);

输出

两条线,右侧带有箭头。

答案1

选项shorten >shorten <可用于缩短线条或箭头。以下示例将箭头两端的缩短量设为圆的半径和一些额外空间,例如线宽:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [color=black, fill=black, radius=.1]
  (1, 0) circle[]
  (2, 0) circle[]
;
\draw [
  ->,
  shorten <=.1cm + \pgflinewidth,
  shorten >=.1cm + \pgflinewidth,
] (1, 0) -- (2, 0);
\draw [->] (1, 1) -- (2, 1);
\end{tikzpicture}
\end{document}

结果

答案2

在评论中向您提出建议时,我稍微修改了您的代码,向您展示您应该使用节点。箭头属性也可以在选项中全局设置,而\tikzpicture无需在每个箭头中键入它,方法是使用 Tikz 库arrows.meta

我还认为,如果你需要箭头,你最好说\draw ...\path[draw] ...,这对于绘制用于计算坐标的不可见路径非常有用。

最后,我不确定中间的命令应该做什么:

\draw (1.00, 1.00);
\draw (2.00, 1.00);
\draw [color=white] (2.25, 1.25) circle (.1);

除了圆圈(不在箭头的两侧)之外,其他命令没有执行任何操作(如果我错过了它们的用途,请告诉我)。

图1

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}

\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}[->] % add ,>=latex or ,>=stealth to change arrow tip

\node [circle, draw, fill=black] (a1) at (1,0) {};
\node [circle, draw, fill=black] (a2) at (2,0) {};

\node [circle, draw, fill=white] (b1) at (1,1) {};
\node [circle, draw, fill=white] (b2) at (2,1) {};

\draw (a1) -- (a2);
\draw (b1) -- (b2);

\end{tikzpicture}
\end{document}

相关内容