我正在尝试绘制一个图表,其中 D --> B 和 B --> E 之间有链接。
下图说明了我想要得到的结果。
因此,从 D 到 B 的箭头不应位于 B 的中南侧,而应位于 B 中部前几毫米处。而从 B 出发到达 E 的箭头应位于 B 中部后几毫米处。
这是我的代码,不幸的是它没有达到应有的效果。所有箭头都从 B 的中南部发出。
\documentclass[varwidth,border=7]{standalone}
\usetikzlibrary{positioning}
\tikzstyle{block} = [draw=black, thick, text width=2cm, minimum height=1cm, align=center]
\tikzstyle{arr} = [thick,->,>=stealth]
\begin{document}
\begin{tikzpicture}
\node[block] (A) {A};
\node[block, below=of A] (D) {D};
\node[block, right=of A] (B) {B};
\node[block, right=of B] (C) {C};
\node[block, below=of C] (E) {E};
%\draw [arr] (D.east) --++ (15mm,0) |- (B.south);
\draw [arr] (D) -| (B);
\draw [arr] (B) |- (E);
\end{tikzpicture}
end{document}
任何帮助都将不胜感激。提前谢谢您
答案1
另一个不需要您创建任何更多节点的解决方案是使用该calc
库。
\documentclass[tikz,border=7]{standalone}
\usetikzlibrary{positioning,calc}
\tikzstyle{block} = [draw=black, thick, text width=2cm, minimum height=1cm, align=center]
\tikzstyle{arr} = [thick,->,>=stealth]
\begin{document}
\begin{tikzpicture}
\node[block] (A) {A};
\node[block, below=of A] (D) {D};
\node[block, right=of A] (B) {B};
\node[block, right=of B] (C) {C};
\node[block, below=of C] (E) {E};
\draw [arr] (D) -| ($(B.south)+(-5mm,0)$);
\draw [arr] ($(B.south)+(5mm,0)$) |- (E);
\end{tikzpicture}
\end{document}
答案2
不要使用节点(B)
,而要使用自定义位置(B1)
并由...(B2)
制成。(B.south)
coordinate
梅威瑟:
\documentclass[varwidth,border=7]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzstyle{block} = [draw=black, thick, text width=2cm, minimum height=1cm, align=center]
\tikzstyle{arr} = [thick,->,>=stealth]
\begin{document}
\begin{tikzpicture}
\node[block] (A) {A};
\node[block, below=of A] (D) {D};
\node[block, right=of A] (B) {B};
\node[block, right=of B] (C) {C};
\node[block, below=of C] (E) {E};
\draw
(B.south) ++(-2mm,0) coordinate (B1)
(B.south) ++(2mm,0) coordinate (B2);
\draw [arr] (D) -| (B1);
\draw [arr] (B2) |- (E);
\end{tikzpicture}
\end{document}
答案3
与其他答案类似,但没有使用calc
也没有定义新的coordinates
。
\documentclass[varwidth,border=7]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzstyle{block} = [draw=black, thick, text width=2cm, minimum height=1cm, align=center]
\tikzstyle{arr} = [thick,->,>=stealth]
\begin{document}
\begin{tikzpicture}
\node[block] (A) {A};
\node[block, below=of A] (D) {D};
\node[block, right=of A] (B) {B};
\node[block, right=of B] (C) {C};
\node[block, below=of C] (E) {E};
\draw [arr] (D) -| ([xshift=-3mm]B.south);
\draw [arr] ([xshift=3mm]B.south) |- (E);
\end{tikzpicture}
\end{document}