von leeroyj » Mi 7. Mär 2012, 13:18
Hi, ich experimentiere derzeit ein wenig mit TikZ, um Automaten darzustellen. Jetzt habe ich folgenden Automaten.
\begin{tikzpicture}[node distance=2cm,auto,bend angle=10]
\node[state,initial,accepting] (q_0) {$q_0$};
\node[state] (q_1) [above=of q_0] {$q_1$};
\node[state] (q_2) [right=of q_1] {$q_2$};
\node[state] (q_3) [right=of q_2] {$q_3$};
\node[state] (q_4) [right=of q_0] {$q_4$};
\node[state,accepting] (q_5) [right=of q_4] {$q_5$};
\node[state] (q_6) [below=of q_0] {$q_6$};
\node[state] (q_7) [right=of q_6] {$q_7$};
\node[state] (q_8) [right=of q_7] {$q_8$};
\path[->] (q_0) edge node[swap] {a} (q_4)
edge [bend left] node {b} (q_2)
(q_1) edge node[swap] {a} (q_0)
edge node {b} (q_2)
(q_2) edge [bend left] node {a} (q_0)
edge [bend left] node {b} (q_3)
(q_3) edge [bend left] node {a} (q_2)
edge [bend left] node {b} (q_0)
(q_4) edge node[swap] {a} (q_6)
edge node {b} (q_5)
(q_5) edge node {a} (q_3)
edge node[swap] {b} (q_6)
(q_6) edge node {a} (q_0)
edge node {b} (q_7)
(q_7) edge node {a} (q_8)
edge node {b} (q_5)
(q_8) edge node {a} (q_5)
edge node {b} (q_4);
\end{tikzpicture}
Das sieht dann so aus:
Mein Problem ist, dass die Nodes, die die Beschriftung für die Pfade q8->q4 und q7->q5 sich überschneiden. Gibt es eine Möglichkeit, die Nodes nicht in der Mitte zu generieren, sondern vielleicht an der Ausgangs/End-Node des jeweiligen Pfades? Aus dem, was dazu im pgfmanual steht, werde ich nicht wirklich schlau.
Hi, ich experimentiere derzeit ein wenig mit TikZ, um Automaten darzustellen. Jetzt habe ich folgenden Automaten.
[code]\begin{tikzpicture}[node distance=2cm,auto,bend angle=10]
\node[state,initial,accepting] (q_0) {$q_0$};
\node[state] (q_1) [above=of q_0] {$q_1$};
\node[state] (q_2) [right=of q_1] {$q_2$};
\node[state] (q_3) [right=of q_2] {$q_3$};
\node[state] (q_4) [right=of q_0] {$q_4$};
\node[state,accepting] (q_5) [right=of q_4] {$q_5$};
\node[state] (q_6) [below=of q_0] {$q_6$};
\node[state] (q_7) [right=of q_6] {$q_7$};
\node[state] (q_8) [right=of q_7] {$q_8$};
\path[->] (q_0) edge node[swap] {a} (q_4)
edge [bend left] node {b} (q_2)
(q_1) edge node[swap] {a} (q_0)
edge node {b} (q_2)
(q_2) edge [bend left] node {a} (q_0)
edge [bend left] node {b} (q_3)
(q_3) edge [bend left] node {a} (q_2)
edge [bend left] node {b} (q_0)
(q_4) edge node[swap] {a} (q_6)
edge node {b} (q_5)
(q_5) edge node {a} (q_3)
edge node[swap] {b} (q_6)
(q_6) edge node {a} (q_0)
edge node {b} (q_7)
(q_7) edge node {a} (q_8)
edge node {b} (q_5)
(q_8) edge node {a} (q_5)
edge node {b} (q_4);
\end{tikzpicture}[/code]
Das sieht dann so aus:
[img]http://dl.dropbox.com/u/47991161/Automat.PNG[/img]
Mein Problem ist, dass die Nodes, die die Beschriftung für die Pfade q8->q4 und q7->q5 sich überschneiden. Gibt es eine Möglichkeit, die Nodes nicht in der Mitte zu generieren, sondern vielleicht an der Ausgangs/End-Node des jeweiligen Pfades? Aus dem, was dazu im pgfmanual steht, werde ich nicht wirklich schlau.