朋友们,考虑以下代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\pagestyle{empty}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto,/tikz/initial text=]
\node[state,initial] (q_0) {$q_0$};
\node[state] (q_2) [above of=q_0] {$q_2$};
\node[state] (q_1) [left of=q_2] {$q_1$};
\node[state] (q_3) [right of=q_2] {$q_3$};
\node[state] (q_5) [right of=q_0] {$q_5$};
\node[state] (q_4) [left of=q_0] {$q_4$};
\node[state] (q_7) [below of=q_0] {$q_7$};
\node[state] (q_6) [left of=q_7] {$q_6$};
\node[state] (q_8) [right of=q_7] {$q_8$};
\path[->,every node/.style={font=\scriptsize}]
(q_0) edge [bend left=15] node {$a$} (q_2)
(q_2) edge [bend left=15] node {$b$} (q_0)
(q_0) edge [bend left=15] node {$c$} (q_5)
(q_5) edge [bend left=15] node {$d$} (q_0)
(q_0) edge [bend left=15] node {$e$} (q_7)
(q_7) edge [bend left=15] node {$f$} (q_0)
(q_0) edge [bend left=15] node {$g$} (q_4)
(q_4) edge [bend left=15] node {$h$} (q_0)
(q_0) edge [bend left=15] node {$i$} (q_1)
(q_1) edge [bend left=15] node {$j$} (q_0)
(q_0) edge [bend left=15] node {$k$} (q_3)
(q_3) edge [bend left=15] node {$l$} (q_0)
(q_0) edge [bend left=15] node {$m$} (q_8)
(q_8) edge [bend left=15] node {$n$} (q_0)
(q_0) edge [bend left=15] node {$o$} (q_6)
(q_6) edge [bend left=15] node {$p$} (q_0);
\end{tikzpicture}
\end{document}
输出结果如下:
到目前为止,一切都很好(相信我,更糟糕的图画)。
我想知道是否可以将标签移动到路径上的任意位置,即:
我发现的解决方法是绘制一条没有标签的路径,然后将\draw
文本置于正确的绝对位置。我试图实现这样的目标:
我是 TikZ 新手,所以请耐心等待。我相信有比我使用的方法更好的方法。有什么想法吗?:-)
答案1
[midway]
您可以使用、[near start]
和等选项[near end]
来[very near end]
指定标签的位置。
(q_0) edge [bend left=15] node [red, near end] {$a$} (q_2)
(q_2) edge [bend left=15] node [blue, near start]{$b$} (q_0)
(q_0) edge [bend left=15] node [green, near end] {$c$} (q_5)
(q_0) edge [bend left=15] node [red, very near end] {$k$} (q_3)
正如 Gonzalo 指出的那样,这些内容记录在手册第 193 页,对应如下:
at start
pos=0
very near start
pos=0.125
near start
pos=0.25
very near end
pos=0.875
near end
pos=0.75
at end
pos=1
答案2
它比你想象的要简单得多。例如,用这个替换你的第一个边:
(q_0) edge [bend left=15] node[pos=0.8] {$a$} (q_2)
并在0.8
零和一之间的数字之间进行游戏。
答案3
在您的示例中,交替使用near end
和near start
:
(q_0) edge [bend left=15] node [near end] {$a$} (q_2)
(q_2) edge [bend left=15] node [near start] {$b$} (q_0)