In einer Reihe von Artikeln in der If Fase werden nützliche Elemente von LaTeX vorgestellt, die erprobt sind und bei der Arbeit der Informatiklehrerin eingesetzt werden.
In den bisher vorgelegten zwölf Teilen der Artikelserie – Ausgaben 0 … 11: rhinodidactics.de/Archiv – finden Sie Hinweise und Anmerkungen zu den Themen: Installation, grundlegende Arbeitsweisen, Quellen zu Dokumentationen, Arbeit mit KOMAscript, PSTricks, Erstellung von Arbeitsblättern, Struktogrammen, Automatengrafen, Elemente von UML, Barcodes, Formularerstellung, Zitieren, Abbildungen, ER-Diagramme. Beginnend mit der Ausgabe 9 (Zitieren – normgerecht) wird das Thema von Fragen bestimmt, die von den Referendarinnen gestellt werden. Damit soll der konkrete Ausbildungsnutzen nachhaltig verbessert werden.
Bestandteil der informatischen Modellierung ist die Umsetzung in eine Programmiersprache oder zumindest programmiersprachliche Konstrukte. Soll Programmcode Bestandteil von Texten sein, so ist zu bedenken, welcher konkrete Anwendungsfall vorliegt. Um die Entscheidungsindung zu unterstützen, werden zwei verschiedene Anwendungsfälle dargestellt, die im Zusammenhang mit LaTeX sehr gut unterstützt werden. Dabei wird der triviale Ansatz, Quellcodestücke mit einem entsprechenden Font zu setzen, hier nicht betrachtet. Gründe für diese Entscheidung werden durch das Studium des Artikels offensichtlich.
Die Anforderung zur Unterstützung der Quellcodeentwicklung wurde vom TeX-Meister selbst (== Don Knuth) formuliert und mit Literate Programming beantwortet:
The main idea is to regard a program as a communication to human beings rather than as a set of instructions to a computer Quelle: sunburn.stanford.edu/~knuth/cweb.html
literateprogramming.com stellt eine Sammlung von Elementen bereit, die diesen Ansatz zur schrittweisen Verfeinerung einer Problemlösung dokumentierten (inkl. der Originalarbeit von Donald Knuth aus dem Jahr 1984). Ich habe den Eindruck, dass dieser Ansatz unterbewertet wurde und habe selbst einige Erfahrungen in der entwicklungsbegleitenden Dokumentation gesammelt. Zunächst ist hervorzuheben, dass es nur noch eine Quelle für den Quellcode gibt die Dokumentation.
Eine Datei, die sowohl die Dokumentation, aber auch den Quellcode
enthält, wird mit der Endung nw
versehen (im Unterschied zur
üblichen Endung von LaTeX tex
. Dies ist sinnvoll, da aus
dieser Datei in einem nächsten Schritt die verschiedene Dateien (unter
anderem eine tex
-Datei) extrahiert werden. Diese umfassen
die zusammengebauten Quellcodeschnipsel und selbstverständlich auch die
tex
-Datei, die dann für das Setzen der Dokumentation
verwendet wird. Die Dokumentation enthält – neben den
Codeschnipseln – Hypertextfunktionen, die es zum Beispiel
ermöglichen, von Quelltextelement zu Quelltextelement weiterzugehen. Auf
diese Weise ist es möglich, den Quelltext auch in der Dokumentation
zusammenhängend zu lesen. Außerdem werden Möglichkeiten bereitgestellt,
den Quelltext mit weiteren Eigenschaften so zu versehen, dass automatisch
Indizes angelegt werden können, etc.
Ursprünglich unterstützte Knuth mit seiner Lösung die
Programmiersprache Pascal
. Inzwischen wird eine grosse
Anzahl von Programmiersprachen direkt unterstützt (unter anderem auch
Python
).
Mit einem Editor der Wahl wird – wie üblich – der LaTeX-Quellcode für die Dokumentation erstellt. Dabei gibt es eine Reihe von Möglichkeiten für die weitere Verarbeitung der Quelle. Diese sind zusammenfassend auf einer Seite dokumentiert www.eecs.harvard.edu/~nr/noweb/onepage.ps Quellcode wird mittels << und >> ausgezeichnet. Damit ist die prinzipielle Struktur einfach realisierbar. Auf der o.g. Seite finden sich einige Kommandos, die auf die Noweb-Datei angewendet werden können, um den Quellcode zu extrahieren, um die Dokumentation (inkl. Kreuzreferenzen, etc.) zu erstellen, u.v.a.m.
Bei der Eingabe des Quellcodes für eine *.nw
-Datei ist
darauf zu achten, dass (außerhalb des Programmtextes) »Möwchen« als
Auszeichnung für die sogenannten Chunks (== Codeschnipsel) reserviert
sind. Dies hat die Konsequenz, dass für die von mir zur Darstellung von
Zitaten bevorzugten Möwchen jeweils mit dem Prefix »@« eingeleitet werden
müssen, damit sie nicht als Quellcode interpretiert werden. Damit stellen
@>> und @<< bei meinen Texten den Beginn und das Ende eines
Zitats dar, wenn Noweb verwendet wird.
LyX lyx.org
unterstützt die Nutzung von Noweb, so dass die Dokumentation inklusiv
Quellcode nicht unbedingt LaTeX-Kenntnisse erfordert, sondern mit der aus
LyX bekannten WYSIWYM (What You See Is What You Mean) Sicht eingegeben
werden kann. Bestandteil von LyX ist die Datei noweb2lyx.lyx
die als Ausgangspunkt für eigene Testfälle herangezogen werden kann.
Mit Leo wurde ein Editor entwickelt, der von der Quellcodeseite ausgehend, die nötigen Funktionen über eine GUI bereitstellt. Benutzer berichten, dass sie mit diesem Ansatz eine völlig neue Sicht auf ihre Programmentwicklung gefunden haben. Ich habe dieses Werkzeug (das in Python geschrieben ist) bisher nicht eingesetzt. webpages.charter.net/edreamleo/front.html
Der Ansatz, den Knuth mit Literate Programming verfolgt, besteht darin, den Entwicklungsprozess schrittweise so zu dokumentieren, dass die Elemente, die später das komplette Programm ausmachen Bestandteil der Dokumentation sind. Dies führt dazu, dass bei zukünftigen Änderungen an der Dokumentation und/oder dem Quellcode nur eine Quelle maßgeblich ist und bearbeitet werden muss. Dieses Vorgehen ermöglich die Softwareentwicklung von der groben Vorstellung der Problemlösung über die Ausarbeitung von Details gemäß der Top-Down-Entwicklung. Die Darstellung wird mit erläuternden Texten versehen und stellt so die Dokumentation des Problemlösevorgangs vor. Dabei kann durchaus von einem strikten Top-Down-Entwurf abgewichen werden. Aus dieser Darstellung kann automatisch auflauffähiger Quellcode produziert werden.
Für ein neues Projekt sollten Sie sich einmal mit dieser Variante beschäftigen, da gerade in diesem Fall die Stärke der integrierten Dokumenation unmittelbar zu Tage tritt.
Wollen Sie allerdings nur die hervorragenden Möglichkeiten des Textsatzes von LaTeX nutzen, um bereits entwickelten Quellcode schön darzustellen, so ist das im Folgenden beschriebene Paket geeignet[er].
Ein anderer Ansatz – Darstellung existierenden Programmcodes – ist mit dem Paket Listings in hervorragender Weise zu realisieren. Auch dieses Paket unterstützt sehr viele Programmiersprachen.