Informatik in LATEX (B aume, Graphen, MSC)

Die Seite wird erstellt Dustin Hildebrandt
 
WEITER LESEN
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