Seite 1 von 1

Nodeposition an Path verändern

Verfasst: Mi 7. Mär 2012, 13:18
von leeroyj
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:
Bild

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.

Verfasst: Mi 7. Mär 2012, 14:42
von Apfeltasche
Dein Codeschnipsel läuft bei mir auf jeden Fall nicht einfach so durch, entweder du hast mit 'state' selbst sachen definiert oder du benutzt irgendeine tikzlibrary.
Nichtsdestotrotz kannst du nochmal ins pgfmanual schauen. Bei mir im Abschnitt "16.5.1 Positioning Nodes Using Anchors".
also z.B. node[anchor=north]

Verfasst: Mi 7. Mär 2012, 14:46
von Apfeltasche
Ein einfaches node[below right] tut es auch, oder eben node[above left]

Verfasst: Mi 7. Mär 2012, 17:14
von leeroyj
Habe jetzt doch genau das gefunden was ich gesucht habe :)
Mit pos=0-1.0 kann man angeben wo die Node positioniert wird, 0 ist Start, 1.0 ist Pfeilspitze. Trotzdem danke ;)

Und ja, ich habe libraries benutzt, nicht dran gedacht, dass die mit rein müssen.