我正在尝试加入两个节点,如下所示简单流程图例如。我想用弯曲的箭头连接两个块,这两个块的起点和终点在相同的位置(或足够接近)。相反,我在原始连接点上得到了奇怪的第二个箭头。我试过改变进出角度,但似乎没有帮助……
我的 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows,arrows}
\makeatother
\tikzstyle{block} = [rectangle, draw, fill=blue!50!black!20,
text width=2cm, text centered, rounded corners, minimum height=2cm, minimum width=4cm]
\tikzstyle{sblock} = [rectangle, draw, fill=blue!50!black!20,
text width=2cm, text centered, rounded corners, minimum height=2cm, minimum width=2cm]
\tikzstyle{line} = [draw, -latex']
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]
% This is the "base case"
\node [block] at (6,7) (A) {A};
\node [sblock] at (1,6) (B) {B};
\path [line,thick] (B) edge [ bend right] node {} (A);
\path [line,thick] (A) edge [bend right] node {} (B);
% This is closer to what I want, but a mess...
\node [block] at (6,3) (C) {C};
\node [sblock] at (1,2) (D) {D};
\path [line,thick] (C.west) edge [bend right] node {} (D.east);
\path [line,thick] (D.east) edge [bend right] node {} (C.west);
% No better
\node [block] at (6,-1) (E) {E};
\node [sblock] at (1,-2) (F) {F};
\path [line,thick] (E.west) edge [bend right =60] node {} (F.east);
\path [line,thick] (F.east) edge [bend right=60] node {} (E.west);
\end{tikzpicture}}
\end{document}
如您所见,下部块上有第二个箭头(上部块上也有一个箭头,只是被遮住了)。基本上,我希望箭头从西/东锚点开始。
答案1
一种方法是使用to
路径,例如
\path [line,thick] (E.west) to[out=180,in=60] (F.east);
您也可以使用edge
,但在这种情况下,您需要仅指定箭头尖端edge
,而不是整个path
,例如
\path [thick] (C.west) edge [line,bend left] (D.east);
为了解释原因,我首先引用手册(第二个教程):
现在是时候让 Hagen 了解另一种指定边的方法了:使用
edge
路径操作。此操作与to
操作非常相似,但有一个重要的区别:与节点一样,edge
操作生成的边不是主路径的一部分,而是稍后添加的。这似乎并不重要,但它有一些很好的结果。例如,每条边都可以有自己的箭头尖端和自己的颜色等等,而且,所有边都可以在同一条路径上给出。
虽然我不知道细节,但我猜这就是双箭头提示的原因。您会从主路径获得一个箭头提示,而从 获得另一个箭头提示edge
,因为它是在第一条路径之后添加的。
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows,arrows}
\tikzset{block/.style={rectangle, draw, fill=blue!50!black!20,
text width=2cm, text centered, rounded corners, minimum height=2cm, minimum width=4cm},
sblock/.style={rectangle, draw, fill=blue!50!black!20,
text width=2cm, text centered, rounded corners, minimum height=2cm, minimum width=2cm},
line/.style={draw, -latex'}}
\begin{document}
\begin{tikzpicture}
\node [block] at (6,3) (C) {C};
\node [sblock] at (1,2) (D) {D};
\path [thick] (C.west) edge [line,bend left] (D.east);
\path [thick] (D.east) edge [line,bend left] (C.west);
\node [block] at (6,-1) (E) {E};
\node [sblock] at (1,-2) (F) {F};
\path [line,thick] (E.west) to[out=180,in=60] (F.east);
\path [line,thick] (F.east) to[out=0,in=240] (E.west);
\end{tikzpicture}
\end{document}