Probleme mit Pfeilen im State Machine Diagram von Tikz

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Probleme mit Pfeilen im State Machine Diagram von Tikz

von Akosol » Fr 25. Aug 2017, 11:08

Super :D
Dankeschön :)

von Stefan Kottwitz » Do 24. Aug 2017, 23:55

Hab jetzt eine andere Version von tikz-uml getestet. Der decision node scheint nicht gut mit anchor zu funktionieren, um ihn gerade darunter auszurichten. Mit below left und Verschiebung 0 aber schon. :-)

Unten dann noch ein Weg, wie man selber so einen Pfeil außen herum zeichnen kann.
\documentclass[paper=a4,12pt,version=last]{scrartcl}
\usepackage{tikz-uml}
\usetikzlibrary{positioning}
\begin{document}
\resizebox{!}{\textheight}{
\begin{tikzpicture}
   \begin{umlstate}[name=main]{Gesamter Ablauf}
         \umlstateinitial[name=init]
         \umlbasicstate[anchor=north, below=1.5cm of init, name=state1]{state1}
         \umlstatejoin[below=1.5cm of state1, name=join1]
         \umlbasicstate[anchor=north, below=1.5cm of join1, name=state2]{state2}
         \umlstatedecision[anchor=north, below left=0.8 and 0ex of state2.south, name=decision1]
         \umlbasicstate[anchor=center, below right=1.8 and 1.5cm of decision1, name=state3]{state3}
         \umlstatejoin[below left=5 and 0 of decision1.south, name=join2]
         \umlbasicstate[below=1.5cm of join2, name=state4]{state4}
         \umltrans{init}{state1}
         \umltrans{state1}{join1}
         \umltrans{join1}{state2}
         \umltrans{state2}{decision1}
         \umlHVtrans{decision1}{state3}
         \umltrans{decision1}{join2}
         \umlVHtrans{state3}{join2}
         \umltrans{join2}{state4}
   %      \umlHVHtrans{state4}{join1}
      \end{umlstate}
      \draw[->] (state4.south) -- ++(0,-0.8) -- ++(-2,0) |- (join1);
\end{tikzpicture}
}
\end{document}
 
Bild

Stefan
Dateianhänge
chart.png
chart.png (9.72 KiB) 3332 mal betrachtet

von Akosol » Do 24. Aug 2017, 18:39

Das klingt so, als würde dein Programm die Befehle aus der Tikz-library positioning nicht erkennen.
Hier kommt einmal die Log-Datei.
Ich hoffe, dass die aufschlussreich ist.
Dateianhänge
document.log
(29.38 KiB) 352-mal heruntergeladen

von Stefan Kottwitz » Do 24. Aug 2017, 17:40

Bei dem Code erhalte ich:

! TIKZUML ERROR : in umlstate, invalid option anchor.
\pgfkeys@code ...lstate, invalid option \keyname }

l.29 }

Entferne ich \resizebox samt der Klammer an der bemängelten Stelle, erhalte ich

! TIKZUML ERROR : in umlstate, invalid option anchor.
\pgfkeys@code ...lstate, invalid option \keyname }

l.8 ..., below=1.5cm of init, name=state1]{state1}

Daher meine Vermutung mit der Klammer. Ist ja oben nun geändert.

"invalid option anchor" meint, dass die Option anchor nicht unterstützt wird. Also entferne ich die.

Dann kommt

! TIKZUML ERROR : in umlstate, invalid option below.
\pgfkeys@code ...lstate, invalid option \keyname }

l.8 ...e[below=1.5cm of init, name=state1]{state1}

Wenn ich all diese Optionen entferne, erhalte ich

! Undefined control sequence.
\pgfmath@dimen@ ...men@@ #1=0.0pt\relax \pgfmath@

l.16 \umltrans{init}{state1}

Dann habe ich es erstmal gelassen.

Kannst Du mal deine .log-Datei hier als Anhang posten?

Stefan

von Akosol » Mi 23. Aug 2017, 12:31

Stefan Kottwitz hat geschrieben:Hallo,

das Minimalbeispiel sieht schon gut aus, doch es lässt sich nicht übersetzen. Da sind Fehler drin. Zum Beispiel ist in der Zeile

\umlbasicstate[anchor=north, below=1.5cm of init, name=state1]{state1)}

sicher die runde Klammer zuviel, nahe dem Ende der Zeile. Es treten noch weitere Fehlermeldungen auf. Evtl. sind die Fehler ja schuld am verschobenen Aussehen.

Ich bin gerade unterwegs und konnte nur kurz testen. Vielleicht repariere die Fehler oder sag Bescheid, wenn es damit ein Problem gibt, ich kann später am Abend nochmal draufschauen.

Stefan
Die runde Klammer ist an der Stelle egal, weil dort lediglich der angezeigte Name steht. Wenn ich das bei mir mit TexStudio ausführe, wird das Diagramm, wie es im Bild zu sehen ist, erzeugt. Fehlermeldungen bekomme ich dabei nicht.

von Stefan Kottwitz » Mi 23. Aug 2017, 12:14

Hallo,

das Minimalbeispiel sieht schon gut aus, doch es lässt sich nicht übersetzen. Da sind Fehler drin. Zum Beispiel ist in der Zeile

\umlbasicstate[anchor=north, below=1.5cm of init, name=state1]{state1)}

sicher die runde Klammer zuviel, nahe dem Ende der Zeile. Es treten noch weitere Fehlermeldungen auf. Evtl. sind die Fehler ja schuld am verschobenen Aussehen.

Ich bin gerade unterwegs und konnte nur kurz testen. Vielleicht repariere die Fehler oder sag Bescheid, wenn es damit ein Problem gibt, ich kann später am Abend nochmal draufschauen.

Stefan

Probleme mit Pfeilen im State Machine Diagram von Tikz

von Akosol » Di 22. Aug 2017, 17:29

Hallo,
ich bin gerade dabei, ein State machine Diagram mit Latex zu zeichnen. Nun möchte ich vom letzten Zustand zu einem höherliegenden einen Pfeil zeichnen. Leider gelingt mir das nicht. Zumindest nicht so, dass es akzeptabel aussieht.
Die Doku zum tikz-uml-Package hat mir da leider nicht weitergeholfen. Auch, wenn ich Befehle, wie umlHVHtrans{}{} oder ähnlliches verwende, wird das Ergebnis nicht deutlich besser.
Rekursive Transitionen werden ignoriert, weil ich ja auf einen anderen Zustand wechseln will.
Hier ist ein Minimalbeispiel und ein Bild von dem Diagramm, welches erzeugt wird. Es geht um die Darstellung des blauen Pfeils. Wenn ich die letzte Zeile im Code mit ausführe, wird ein Pfeil direkt durch alle Elemente durch, statt außenrum gezeichnet.
\documentclass[paper=a4,12pt,version=last]{scrartcl}
\usepackage{tikz-uml}
\usetikzlibrary{positioning}
\begin{document}
\resizebox{!}{\textheight}{
\begin{tikzpicture}
	\begin{umlstate}[name=main]{Gesamter Ablauf}
			\umlstateinitial[name=init]
			\umlbasicstate[anchor=north, below=1.5cm of init, name=state1]{state1}
			\umlstatejoin[below=1.5cm of state1, name=join1]
			\umlbasicstate[anchor=north, below=1.5cm of join1, name=state2]{state2}
			\umlstatedecision[below=0.8 of state2, name=decision1]
			\umlbasicstate[anchor=north, below right=1.8 and 1.5cm of decision1, name=state3]{state3}
			\umlstatejoin[below=5 of decision1, name=join2]
			\umlbasicstate[below=1.5cm of join2, name=state4]{state4}
			

			\umltrans{init}{state1}
			\umltrans{state1}{join1}
			\umltrans{join1}{state2}
			\umltrans{state2}{decision1}
			\umlHVtrans{decision1}{state3}
			\umltrans{decision1}{join2}
			\umlVHtrans{state3}{join2}
			\umltrans{join2}{state4}
	%		\umlHVHtrans{state4}{join1}
		\end{umlstate}
\end{tikzpicture}
}
\end{document}
Eine andere Sache, die mich an dem Diagramm stört ist, dass die Entscheidungsknoten nicht zentriert sind. Kann man das irgendwie beheben (außer durch Testen und manuelle Verschiebung nach rechts/links)?

Bild
Dateianhänge
stateMachine.JPG
stateMachine.JPG (32.98 KiB) 3588 mal betrachtet

Nach oben