自定义箭头路径 tikz

自定义箭头路径 tikz

我想用箭头连接两个节点,但我希望箭头遵循“定制”路径。

而不是简单的方法: 在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning,mindmap,trees,automata}

\begin{document}
\begin{tikzpicture}
   \node[state,initial,initial text=G] (1)   {$1$}; 
   \node[state] (2) [right=of 1] {$2$}; 

    \draw[->] (1) edge  node[sloped, above] {a} (2);
\end{tikzpicture}
\end{document}

我希望箭头是这样的: 在此处输入图片描述

虽然不是最漂亮的图画,但我希望你能理解我想要什么。提前非常感谢!:)

答案1

有几种方法可以解决这个问题,其中一种方法是使用|-路径规范(意思是先垂直移动,然后水平移动,到下一个坐标)和一个相对坐标。

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,automata}

\begin{document}
\begin{tikzpicture}
   \node[state,initial,initial text=G] (1)   {$1$}; 
   \node[state] (2) [right=of 1] {$2$}; 
   \draw[->,rounded corners] (1) |- node[pos=0.75,fill=white,inner sep=2pt]{a} ++(1,1) |- (2);
\end{tikzpicture}
\end{document}

答案2

可以通过在中间设置控制点来解决这个问题,但不太优雅。不过我不知道为什么最后一条线不是完全水平的。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,automata}

\begin{document}
\begin{tikzpicture}
    \node[state,initial,initial text=G] (1) {$1$}; 
    \node (ctrl1) [above=of 1, anchor=north] {}; 
    \node (ctrl2) [right=of ctrl1, anchor=east] {}; 
    \node (ctrl3) [below=of ctrl2, anchor=north] {}; 
    \node[state] (2) [right=of 1] {$2$}; 
    \draw (1) -- (ctrl1.south) -- node [fill=white] {a} (ctrl2.south) -- (ctrl3.south) -- (2);
\end{tikzpicture}
\end{document}

截屏

相关内容