out of the box
Es gibt tausende Tools und Utilities für Linux. "out of the box" pickt sich die Rosinen raus und stellt pro Monat ein Progrämmchen vor, das wir für schlichtweg unentbehrlich oder aber zu Unrecht wenig beachtet halten.
Editoren mit Syntax-Highlighting gibt es viele, allerdings erlaubt es kaum einer, die formatierte und eingefärbte Darstellung zu speichern. Die Lücke füllt Highlight von André Simon, das allein diesem Zweck dient und unter der Adresse http://www.andre-simon.de/ zu beziehen ist. Natürlich befindet sich das Quelltext-Archiv highlight-1.3.tar.gz auch auf der Heft-CD. Da sich die Installation nicht im bekannten Dreisatz ./configure; make; make install erschöpft, legen wir zudem das Shell-Skript insthighlight.sh bei.
Diese beiden Dateien kopieren Sie in ein gemeinsames Verzeichnis. Dann starten Sie das Skript mit dem Kommando
sh insthighlight.sh
Im Verlauf der Installation fragt es Sie nach dem root-Passwort, weil es Schreibrechte im /usr/local-Zweig des Dateisystems braucht, genauer in /usr/local/bin und /usr/local/share/highlight.
Für den ersten Einsatz des Programms reicht ein Aufruf in der Form
highlight -I quelldatei > ausgabedatei .html
Highlight erkennt den Typ der eingelesenen Datei an der Endung. Für die Ausgabe stehen drei Formate zur Verfügung: HTML mit Cascading Style Sheets (CSS), das Rich Text Format (RTF) und TeX.
Die Option -I bewirkt, dass die Style-Sheet-Definition in die Ausgabe-HTML-Datei integriert wird – ohne sie erzeugt das Programm eine separate Datei highlight.css im Arbeitsverzeichnis. Die entstandene Ausgabe können Sie sich in einem CSS-fähigen Browser ansehen. Abbildung 1 zeigt eine POV-Ray-Szenenbeschreibung, dargestellt von Mozilla.
Falls Ihnen die Farbwahl nicht gefällt, probieren Sie einfach einen anderen Stil aus. Dies geschieht mit der Option -s, gefolgt vom Stil-Namen. Meine persönlichen Favoriten sind blue und darkness. Eine Übersicht der vorhandenen Stile erhalten Sie mit dem Kommando
ls /usr/local/share/highlight/@L: *.style
Um herauszufinden, welche Quelltext-Arten Highlight unterstützt, geben Sie das Kommando
ls /usr/local/share/highlight/@L: *.lang
ein. Aufmerksame Leser stellen dabei fest, dass die für Abbildung 1 verwendete Sprachdefinitionsdatei pov.lang nicht zu den aufgelisteten Dateien gehört. Wir liefern sie zusätzlich auf der Heft-CD mit – kopieren Sie pov.lang einfach nach /usr/local/share/highlight!
Für den Fall, dass die Eingabedatei keine passende Endung im Namen trägt, geben Sie den Dateityp mit der Option -S gefolgt vom Namen der Syntaxdefinition vor und lassen die Eingabedaten mit < von der Standardeingabe lesen. Beispielsweise erkennt Highlight das persönliche Start-Skript ~/.bashrc nicht automatisch als Shell-Skript, weil die Endung .sh fehlt. Mit der entsprechenden Vorgabe klappt es:
highlight -I -S sh < ~/.bashrc > bashrc.html
Wer schön formatierten Code in ein Office-Dokument einbinden will, generiert mit der Option -R nicht HTML, sondern RTF als Ausgabeformat:
highlight -R quelldatei > ausgabedatei .rtf
Mit dem RTF-Importfilter von Open- oder StarOffice lesen Sie nun die Ausgabedatei in ein existierendes Dokument ein. Abbildung 2 zeigt als Beispiel das Installationsskript, eingebettet in ein StarOffice-Dokument.
Anwender des Satzsystems TeX werden sich freuen, dass Highlight auch eine Ausgabe in diesem Format anbietet. Hierfür lautet der Aufruf
highlight -T quelldatei > ausgabedatei .tex
Um aus der .tex-Datei ein PostScript-Dokument zu machen, das sich mit gv anzeigen (Abbildung 3) oder mit lpr drucken lässt, muss sie noch den TeX-Interpreter und das Konvertierungstool dvips passieren:
tex ausgabedatei.tex dvips ausgabedatei.dvi
Eine LaTeX-Ausgabe produziert die Option -L. Diese hat allerdings einen kleinen Schönheitsfehler: In der erzeugten Datei fehlt in der vorletzten Zeile eine geschweifte Klammer.
Wenn Highlight die Syntax Ihrer Lieblingsprogrammiersprache oder einer Konfigurationsdatei nicht kennt, besteht die Möglichkeit, das Programm um eine neue Sprachdefinition zu erweitern. Dazu müssen Sie nichts neu kompilieren oder gar umschreiben, sondern lediglich die Schlüsselwörter der Sprache in einer Datei mit der Endung .lang aufführen und diese im Verzeichnis /usr/local/share/highlight ablegen. Deren Aufbau ist simpel:
# beginnen, sind Kommentare und werden ignoriert.KEYWORDS= gehören alle Schlüsselwörter der Sprache, jeweils durch Leerzeichen getrennt. Die Auflistung muss komplett in einer Zeile stehen.TYPESMODS= listen Sie alle Typen auf, die die Sprache kennt. Wie bei den Schlüsselwörtern darf dazwischen kein Zeilenumbruch stehen.STRINGDELIMITERS= folgen die Zeichen, mit denen Zeichenketten ("Strings") eingeleitet bzw. abgeschlossen werden.SINGLELINECOMMENT= gehört das Zeichen (oder die Zeichenfolge), die einen einzeiligen Kommentar einleitet.MULTILINECOMMENT= bezeichnet die Zeichen oder Zeichenfolgen für mehrzeilige Kommentare.ISCASESENSITIVE= bestimmt, ob Highlight bei den Schlüsselwörtern zwischen Groß- und Kleinschreibung unterscheiden soll (true) oder nicht (false).DIRECTIVE= legt das Zeichen fest, mit dem die Sprache Compiler-Direktiven einleitet.ESCCHAR= definiert das Zeichen, das die Bedeutung von Sonderzeichen in der Sprache aufhebt ("escaped").
Fehlt einer Sprache eine der aufgelisteten Kategorien, darf die Angabe dazu fehlen. Beispielsweise kennt die Shell bash keine mehrzeiligen Kommentare, weshalb die Datei sh.lang die Zeile MULTILINECOMMENT= vermissen lässt.
Neue Sprachdefinitionen nimmt der Autor von Highlight gern entgegen. Falls Ihnen also über die Weihnachtsfeiertage langweilig wird, können Sie zum Beispiel eine Sprachdefinition für .lang-Dateien verfassen …
Glossar
Syntax-Highlighting
Meist farbiges Hervorheben bestimmter Sprachelemente in einem Quelltext oder einer Konfigurationsdatei.
Shell-Skript
Eine Datei mit Shell-Kommandos, die automatisch abgearbeitet werden. Häufig wiederkehrende Arbeitsschritte lassen sich durch Shell-Skripte gut automatisieren.
Cascading Style Sheets
Ein Zusatz zu HTML, der die konkrete Formatierungsauszeichnung von der logischen Struktur des Dokuments trennt.
TeX
Ein professionelles Textsatzsystem, das sich besonders gut zum Formelsatz eignet.
LaTeX
Ein professionelles Textsatzsystem, das sich besonders gut zum Formelsatz eignet.
POV-Ray
Ein frei kopierbares Raytracing-(3D-Grafik)-Programm, das auf vielen Betriebssystemen zuhause ist – so auch auf Linux. Seine Homepage finden Sie unter http://www.povray.org/.
Compiler-Direktiven
Ein Schlüsselwort zur Steuerung der Übersetzung, etwa zum Ausklammern bestimmter Code-Abschnitte.