我正在用 TIKZ(和 KTIKZ)制作一个小方案,在两个节点之间绘制箭头时遇到问题。我想使用以下脚本从B
到绘制一个箭头:C
\draw
\tikzstyle{startstop} = [circle, rounded corners,text centered,text width=2cm,inner sep=0mm,outer sep=20mm, draw=black, fill=blue!50]
\begin{tikzpicture}%
\node (A) [startstop] {A};
\node at (A.east) (B) [startstop] {B};
\node at (B.south) (C) [startstop] {C};
\draw [line width=1mm,->,>=stealth] (B) -- (C);
\end{tikzpicture}
我得到以下结果:
你知道什么地方出了问题吗?
答案1
有两件事导致代码给出的结果不直观。如果我们修复节点位置并稍微改变路径,就更容易看出,
\begin{tikzpicture}[startstop/.style={circle,inner sep=0mm,outer sep=18mm,draw=black,fill=blue!50}]
\node[startstop] (A) {A};
\node[startstop] (B) at (2,0) {B};
\node[startstop] (C) at (2,-2) {C};
\draw[line width=1mm,->,>=stealth] (B) -- (C);
\draw[red,opacity=0.25] (B) circle (1.8cm+1ex) (C) circle (1.8cm+1ex);
\end{tikzpicture}
您可以看到 的边框点B
现在几乎在 上,C
但绘制边框所需的点几乎在 上B
。这就是在节点形状周围添加分隔的效果outer sep
。如果您将外分隔增加回 2cm,箭头就会翻转。
我认为您之所以选择这样做是因为您希望节点具有相对位置。您应该做的是语法positioning
。
\usetikzlibrary{positioning}% In the preamble
\begin{tikzpicture}[startstop/.style={circle,
inner sep=0mm,outer sep=0,
draw=black,fill=blue!50,
minimum width=2cm}
]
\node[startstop] (A) {A};
\node[startstop,right= 2cm of A] (B) {B};
\node[startstop,below= 2cm of B] (C) {C};
\draw [line width=1mm,->,>=stealth] (B) -- (C);
\end{tikzpicture}
现在您可以看到,无论节点有多大,它们之间的距离仍然是 2 厘米。您可以跳过声明2cm
,只需说right = of A
,然后距离是从的值中读取的node distance
。因此,如果您在图片选项中设置它,则所有对该语法的调用都是相同的。
还要注意,要更改节点大小,您不需要调整文本宽度或高度。形状大小可以通过最小高度宽度键更改。
手册中总会包含有关这些内容的更多信息,但这里有一些之前出现过的相关文章。