Automaten
In einer Reihe von Artikeln in der If Fase werden nützliche Elemente von LaTeX vorgestellt, die erprobt sind und bei der täglichen Arbeit der Informatiklehrerin eingesetzt werden.
In den bisher vorgelegten vier Teilen der Artikelserie – Ausgaben 0 … 3: rhinodidactics.de/Archiv – wurden Hinweise zur Installation, grundlegenden Arbeitsweisen, Quellen zu Dokumentationen, die Arbeit mit KOMAscript, Hinweise auf PSTricks und als stärker inhaltsbezogene Dimension die Erstellung von Arbeitsblättern und Struktogrammen thematisiert. In dieser Ausgabe beschäftigen wir uns mit der Erstellung von Automatengrafen.
Der grafischen Darstellung von Automaten kommt im Informatikunterricht eine sehr wichtige Rolle zu, da auf diese Weise ein »Spielfeld« dargestellt werden kann, das es ermöglicht, die Zustandsübergänge auf einer ikonischen Ebene zugänglich zu machen. Es wird hier nicht über äquivalente Darstellungsformen von Automaten diskutiert, die im Falle der Automatentafel in LaTeX mit Hilfe von Tabellen gesetzt werden können oder im Falle von kaskadierten Verzweigungsstrukturen, die sich mit dem Listings-Paket von Carsten Heinz gut umsetzen lassen.
führt über »pgf«, eine von Till Tantau (theoretischer Informatiker) entwickelte Schnittstelle, die er zur Erstellung seiner Präsentationen – er hat auch latex-beamer entwickelt – benutzt. Für das Paket latex-beamer ist die Version 3.06 aktuell: ftp://ftp.dante.de/tex-archive/macros/latex/contrib/beamer.zip , pgf 1.0 ftp://ftp.dante.de/tex-archive/graphics/pgf.zip kommt mit einer 247seitigen Anleitung für das Paket unter doc/pgf/en/pgfmanual.pdf . Auf S. 37 wird an einem Beispiel die Erstellung von Automaten beschrieben. Diese wird im Folgenden (leicht abgewandelt) dargestellt. Inzwischen wird auf der S. 130 die „Automata Drawing Library“ eingeführt. Diese wird hier nicht berücksichtigt, sollte aber beobachtet werden.
Der in der Abbildung dargestellte rudimentäre Automat wurde mit dem folgenden Quellcode produziert.
% % \documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture} \begin{scope}[shape=circle,minimum size=1cm,shape % action={draw,fill},fill=green] \node (q_A) at (0,0) {$q_{_A}$}; \node (q_E) at (6,0) {$q_{_E}$}; \node (q_1) at (2,0) {$q_{_1}$}; \node (q_2) at (4,2) {$q_{_2}$}; \end{scope} \draw (q_A) -- (q_1) -- (q_2) -| (q_E); \draw[->,shorten >=2pt] (q_A) .. controls +(75:1.4cm) % and +(105:1.4cm) .. node[above] {$x$} (q_A); \end{tikzpicture} \end{document}Viele Elemente der Konstruktion sind (hoffentlich) selbsterklärend. Der Übergang qA auf qA erfordert eine besondere Konstruktion, nämlich die Angabe einer Bezierkurve. Diese besteht hier darin, den Weg zu explizieren, der über Kontrollpunkte spezifiziert wird. Hier wird mit Polarkoordinaten gearbeitet, die zwei Parameter haben: vor dem »:« steht der Winkel dahinter folgt die Länge des Vektors. Es kann auch mit kartesischen Koordinaten gearbeitet werden, die dann durch »,« getrennt werden. Die Verbindung der Punkte erfolgt durch eine Bezierkurve. Für weitere Details muss auf das Manual verwiesen werden.
An anderer Stelle dieser Serie wurde bereits auf PSTricks hingewiesen.
Als Ergänzung zu PSTricks wurde eine Sammlung von Macros mit der
Bezeichnung Vaucanson-G entwickelt, die eine sehr komfortable Erstellung
von Automaten ermöglicht:
www.liafa.jussieu.fr/~lombardy/Vaucanson-G
Zur Darstellung wird ein vollständiges, lauffähiges Beispiel angegeben:
% % \documentclass{article} \usepackage{vaucanson-g} \begin{document} \begin{VCPicture}{(0,-2)(6,2)} \State[p]{(0,0)}{A} \State[z_2]{(3,0)}{B} \Initial{A} \FinalState[r]{(6,0)}{C} \EdgeL{A}{B}{a} \ArcL{B}{C}{b} \ArcL{C}{B}{b} \LoopN{A}{a} \LoopS{C}{d} \end{VCPicture} \end{document}
Durch die Spezialisierung auf Automaten ist es möglich, viele Details
durch das Paket »erledigen« zu lassen. Dazu gibt es umfangreiche
Konfigurationsmöglichkeiten, die für alle Automaten benutzt werden, aber
auch überschrieben werden können. Das mitgelieferte Manual umfasst
30 Seiten und enthält eine vollständige Dokumentation aller
veröffentlichen Möglichkeiten. So ist es z.B. möglich, Farben
einzusetzen. Durch Einfügen der Zeile \input{VCPref-slides}
nach usepackage
werden die Standardeinstellungen für
Präsentationen benutzt.
Mit dem Werkzeug JasTeX werden interaktiv Automaten erstellt. www.lsv.ens-cachan.fr/~gastin/JasTeX/JasTeX.html Das
Ergebnis kann anschließend mit dem LaTeX-Paket GasTeX www.lsv.ens-cachan.fr/~gastin/gastex/gastex.html
gesetzt werden. Es ist auch möglich, den LaTeX-Quellcode mit latex-beamer
zu einer Animation zu vervollständigen.
Beispiel:
www.lsv.ens-cachan.fr/~gastin/gastex/ex-beamer-gastex.tex
www.lsv.ens-cachan.fr/~gastin/gastex/ex-beamer-gastex.pdf
Ein weiterer Zugang wird in den Beiträgen von Arne Hüls und Ralph Heinemann zu den besuchten und dokumentierten Praxisbericht von M. Hielscher kurz vorgestellt. Auch die dort präsentierte Variante erzeugt mittels LaTeX typografisch ausgezeichnete Ergebnisse.
Die hier vorgelegte Darstellung soll als Anregung dienen. Ich hoffe,
dass es durch diese Hinweise möglich wird, eine jeweils angemessene
Darstellung von Automatengrafen in typografisch ansprechender Form zu
erstellen und nicht mit nichtskalierbaren Bildschirmfotos zu arbeiten
oder gar Automaten mit Zeichenprogrammen »zu malen«.
Till Tantau beschreibt in seinem Manual (S. 38–44) die
Erstellung von Grafiken. Er dokumentiert, wieviel Zeit für die Erstellung
veranschlagt werden muss: Grob kann davon ausgegangen werden, dass genau
soviel Zeit benötigt wird, wie der Text benötigt, der den gleichen Platz
beansprucht.