语境 我想在节点之间画线来表示依赖关系。节点被画成圆圈。不幸的是箭头被圆圈遮住了。
问题 我怎样才能缩短这条线,使得这条线和两个圆圈之间有间隙?
代码
\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);
除了圆圈(不在箭头的两侧)之外,其他命令没有执行任何操作(如果我错过了它们的用途,请告诉我)。
\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}