goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme mit Pfeilen im State Machine Diagram von Tikz

 

Akosol
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 19.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2017, 17:29     Titel: Probleme mit Pfeilen im State Machine Diagram von Tikz
  Antworten mit Zitat      
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.

Code • Öffne in Overleaf

\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)?



stateMachine.JPG
 Beschreibung:

Download
 Dateiname:  stateMachine.JPG
 Dateigröße:  32.98 KB
 Heruntergeladen:  129 mal


Zuletzt bearbeitet von Akosol am 23.08.2017, 18:24, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

Stefan Kottwitz
Admin
Admin


Beiträge: 1931
Anmeldedatum: 08.07.08
Wohnort: Hamburg
Version: TeX Live 2016
     Beitrag Verfasst am: 23.08.2017, 12:14     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen

Akosol
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 19.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2017, 12:31     Titel:
  Antworten mit Zitat      
Stefan Kottwitz hat Folgendes 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.
Private Nachricht senden Benutzer-Profile anzeigen

Stefan Kottwitz
Admin
Admin


Beiträge: 1931
Anmeldedatum: 08.07.08
Wohnort: Hamburg
Version: TeX Live 2016
     Beitrag Verfasst am: 24.08.2017, 17:40     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen

Akosol
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 19.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2017, 18:39     Titel:
  Antworten mit Zitat      
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.

document.log
 Beschreibung:

Download
 Dateiname:  document.log
 Dateigröße:  29.38 KB
 Heruntergeladen:  9 mal
Private Nachricht senden Benutzer-Profile anzeigen

Stefan Kottwitz
Admin
Admin


Beiträge: 1931
Anmeldedatum: 08.07.08
Wohnort: Hamburg
Version: TeX Live 2016
     Beitrag Verfasst am: 24.08.2017, 23:55     Titel:
  Antworten mit Zitat      
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.

Code • Öffne in Overleaf
\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}
 




Stefan

chart.png
 Beschreibung:

Download
 Dateiname:  chart.png
 Dateigröße:  9.72 KB
 Heruntergeladen:  8 mal
Private Nachricht senden Benutzer-Profile anzeigen

Akosol
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 19.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2017, 11:08     Titel:
  Antworten mit Zitat      
Super Very Happy
Dankeschön Smile
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de