我想用箭头连接两个节点,但我希望箭头遵循“定制”路径。
\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}