Informatik in LATEX (B aume, Graphen, MSC)
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Informatik in LATEX (Bäume, Graphen, MSC) Katharina Amboß 3. Juli 2005 1 Einführung Es gibt viele Pakete für die Dinge die in der Informatik grafisch gelöst wer- den. Grafiken bieten oft eine bessere Übersicht zu technischen Abläufen, man kann sich schneller orientieren und findet auch bestimmte Teile schneller wie- der. Die Grafiken modellieren Probleme, Lösungen, Abläufe, System und vieles mehr. UML, Highlighting, Bäume, Graphen und Message Sequence Charts sind Beispiele für Modelle in der Informatik. Diese Ausarbeitung wird drei Pakete vorstellen mit denen grafische Modelle erstellt werden können; qtree für Bäume, msc für Message Sequence Charts und gastex für Graphen. Es gibt sehr viele gut und weniger gut dokumentierte Pakete. Vieles kann über ps-tricks gemacht werden, die ist der Vorschlag den man meistens als erstes bei der Suche nach passenden Paketen findet. Ein weiterer ist der Vorschlag mit externen Tools zu arbeiten und die entsprechenden Grafiken einzubinden, dies wirkt teilweise nur bedingt gut, da so verschiedene Schriften auftauchen und die Skalierung nicht so gut klappt. Inzwischen existieren teilweise recht komfortabler Pakete. 1
2 Bäume 2.1 Pakete qtree Das Paket qtree wird normal über \usepackage{qtree} eingebunden. Aller- dings bindet es automatisch eepic ein, wenn es nicht unterbunden wird, dafür muss ein Schalter gesetzt werden \usepackage[noeepic]{qtree}. Wenn das Dokument als Postscript vorliegen wird, sollte eepic zugelassen werden, wenn das Dokument eine pdf-Datei wird muss eepic unterdrückt werden, da sonst die schrägen Linien nicht richtig dargestellt werden können. qtree erlaubt eine maximale Tiefe von 20 Ebenen (von der Wurzel ausgesehen) und maximale fünf Unterbäumen an jedem Knoten. Es gibt noch ein ähnli- ches Paket, parsetree, allerdings bietet es eine geringere Tiefe und weniger Un- terbäume, zusätzlich macht es noch grafisch weniger her (die Linien schneiden teilweise Großbuchstaben). 2.2 Befehle Der Befehlsaufruf für einen Baum ist relativ simpel. Wenn qtree eingebunden ist müssen dem Befehl \Tree die Wurzel, die Knoten und Blätter übergeben werden: \Tree [.Wurzel [.Knoten Blatt ] ].Wurzel. Die wiederholten Bezeichnungen an den schliessenden Klammern sind fakulta- tiv, sie dienen lediglich der Übersichtlichkeit für den Autor. Die Trennung der Unterbäume erfolgt durch eckige Klammern und die Trennung der Blätter durch Leerzeichen, wenn Blätter bestehend aus mehreren Worten verwnedet werden, müssen geschweifte Klammern um den Ausdruck geschrieben werden. Entspre- chend der Grenzen können Bäume beliebig verschachtelt werden. 2.3 Beispiel \Tree [.A [.B [.C eins ] [.D zwei ] ].B [.E {3 und 4} ] ].A A HH A H B E H H B E C D 3 und 4 C D 3 und 4 eins zwei eins zwei ohne [noeepic] mit [noeepic] 2
3 Message Sequence Chart 3.1 Pakete msc Das Paket msc wird normal mit \usepackage{msc} eingebunden. Allerdings gibt es msc nur für Postscript. Um msc in einem pdf-Dokument zu verwenden, muss dies zum Beispiel über PSforPDF eingebunden werden. Für msc wird das Paket xcolor benötigt, entweder muss es eine sehr alte oder mindestens Version 2.03 sein. xcolor 2.03 wurde erst vor ca. rausgebracht und kann über die URL im Schlussteil geladen werden. msc ist ein sehr einfaches und gut zu bedienendes Paket. Es wird zur Zeit nicht weiterentwickelt, da es alle Funktionalitäten hat die es haben soll. 3.2 Befehle Messenge Sequence Charts werden in der msc-Umgebung geschrieben zur Ein- leitung schreibt man den begin-Befehl \begin{msc}. Diese Umgebung wird mit dem end-Befehl \end{msc} wieder geschlossen. Zuerst müssen die Objekte erstellt werden, die miteinander und der Umwelt kommunizieren sollen. Die Objekte erstellt man mit dem declinst-Befehl \declinst{Label}{Name}{Bezeichnung}. Es muss ein Label erstellt werden, bei den Nachricht wird über diese Labels auf die Objekte zugegriffen. Dem Ob- jekt kann ein Name und ein zusätzliche Bezeichnung gegeben werden. Um Nachrichten zwischen den Objekten zu erstellen benötigt man den mess- Befehl \mess{Narichtenname}{vonLabel}{bisLabel}[+-Level]. Die Nachricht kann einen Namen bekommen, dieser erscheint in der Grafik über dem Pfeil. Es muss angegeben welches Objekt die Nachricht abschickt (vonLabel) und welches sie empfängt bisLabel). Wenn die Kommunikation über eine längeren Zeitraum stattfindet, wird dies mit +-Level angegeben, plus verschiebt das Pfeilende nach unten, das minus nach oben. Die Objekte können auch mit der Umwelt kom- munizieren, dazu muss eines der Label durch envleft, bzw. envright ersetzt werden. Um in die nächste Zeitstufe, das nächste Level, zu gehen wird \nextlevel ver- wendet. 3
3.3 Beispiel \PSforPDF{ \begin{msc}{Beispiel} \declinst{usr}{User}{} msc Beispiel \declinst{m1}{M 1}{K} User M1 M2 \declinst{m2}{M 2}{Test} K Test \mess{message1}{usr}{m1} message1 \nextlevel message2 \mess{message2}{m1}{m2} log \nextlevel output \mess{log}{m1}{envleft} \nextlevel \mess{output}{m2}{usr}[1] \nextlevel \end{msc} } 4
4 Graphen 4.1 Pakete gastex Das gastex -Paket wird mit \usepackage{gastex} eingebunden, allerdings benötigt das Paket zusätzlich einen speziellen Header gastex.pro, dieser muss in das Ver- zeichniss importiert werden in dem sich auch der tex.pro-Header befindet. Leider kann gastex nur in Postscript-Dokumenten verwendet werden, mit PSforPDF verträgt es sich auch nicht, es muss also extern umgewandelt werden (zum Bei- spiel mit ps2pdf) und dann als PDF-Graphik eingebunden werden, wenn man eine gastex -Grafik in einem pdf-Dokument verwenden will. gastex ist ein recht mächtiges Paket, es bietet viele Befehle um zum Beispiel Polygone, Schleifen, Petrinetze und Automaten darzustellen. Ich werde hier nur einige Befehle vorstellen, die gut für das Erstellen von Graphen geeignet sind. Leider ist gastex nur sehr wenig dokumentiert, einige Hinweise sind in der gas- tex.sty-Datei zu finden, die einzige andere Möglichkeit ist sich die Beispiele im Internet anzuschauen und selbst zu experimentieren. Inzwischen wurde ein grafisches Interface entwickelt, welches die gesamte Be- dienung für gastex einfacher machen soll, es heißt Jastex und wurde in Java geschrieben. 4.2 Befehle Zur Einleitung einer gastex -Zeichnung muss \compatiblegastexun gechrieben werden. Ausserdem wird eine Picture-Umgebung und eine Box benötigt. Zuerst werden die Punkt für die Zuständ festlegen, x und y sind Koordinaten in der Box \letstate Positionslabel=(x,y). Diesen Punkten werden Zustandsarte zugewiesen. Um einen Startzustand zu er- stellen wird \drawinitialstate[x,y](Pos.Label){Name} verwendet, wobei x den Durchmesser des Kreises reguliert. Ein Endzustand wird mit \drawrepeatedstate[x,y](Pos.Label){Name gezeichnet. Es können verschiedene Zustandsübergänge dargestellt werden, zum Beispiel eine Schleife wir mit \drawloop[Richtung](Pos.Label){Bezeichnung} dar- gestellt. Die Richtungen werden mit kleinen Bucxhtaben bezeichnet: t für oben, r für rechts, b für unten und l für links. Einen geradlinigen Übergang erhält man durch \drawtrans[Richtung](Vonlabel,Nachlabel){Bezeichnung}. Um einen gebogenen Übergang zu erstellen wird \drawcurvedtrans[Richtung](Vonlabel,Nachlabel){Bezeichnung} verwendet. Es gibt auch die Möglichkeit einen Übergang manuell zu krümmen, zum Beispiel um einen sehr hohen Bogen zu erhalten, \setprofcurve{Krümmung}Übergang} für Übergang wird einfach ein Befehl für einen Übergang eingesetzt, es gibt auch die Möglichkeit mehrere Übergänge nach dem setprofcurve-Befehl zu schreiben, diese haben dnn alle denselben Krümmungsfaktor. Desweiteren ist es möglich gepunktete Übergänge zu zeichenen, die in verschiedenen Stärken möglich sind \setpsdash(Stärke) Übergang }. 5
4.3 Beispiel \letstate A=(0,0) \drawinitialstate(A){} \letstate B=(15,0)\drawrepeatedstate(B){1} \letstate C=(30,0)\drawinitialstate(C){2} \letstate D=(0,15)\drawrepeatedstate(D){3} \drawloop[b](B){$A,a,\alpha$} { \setpsdash(3) \drawloop(C){$B,\beta$} } \drawtrans(A,B){} \drawtrans(B,C){} {\setprofcurve{6} \drawcurvedtrans[b](A,C){unter}} \drawcurvedtrans(A,D){oben} { \setpsdash(4) \drawcurvedtrans(D,A){} } 6
5 Schluss Die Folien sind unter informatik.hu-berlin.de/˜amboss/InformatikInLaTeX.pdf zu finden. Die Ausarbeitung unter derselben Adresse InformatikInLatexAusar- beitung.pdf. Dies sind meine Quellen und die URLs unter denen die Pakete zu finden sind. • qtree: http://www.essex.ac.uk/linguistics/clmt/latex4ling/trees/qtree/#1 • xcolor: http://ukern.de/tex/xcolor.html. • gastex: http://www.liafa.jussieu.fr/˜gastin/gastex/gastex.html • msc: http://www.win.tue.nl/˜sjouke/misc/mscpackage/ 7
Sie können auch lesen