Programm-Code übersichtlich formatieren

Aus LinuxUser 08/2005

Programm-Code übersichtlich formatieren

Quelltext aufpoliert

Manchmal reicht es nicht aus, Quelltext korrekt kompilieren zu können. Dieser Artikel zeigt, wie Sie mit Hilfe von Highlight Programm-Code ansehnlich und übersichtlich formatieren und weiterverwenden.

Informatikstudenten, die ihre Diplom- oder Studienarbeit schreiben, wissenschaftliches Personal, das eine Publikation verfasst oder Programmierer, die ihren Code mit Kollegen diskutieren wollen, kennen das Problem: “Wie formatiere ich meinen Quellcode um ihn möglichst verständlich zu präsentieren?”. Mit Highlight existiert ein hilfreiches Tool, das Ihnen bei dieser Aufgabe gute Dienste leistet. Es exportiert Quelltext in viele Formate und versieht ihn mit übersichtlichem Syntax-Highlighting. Wir werfen einen Blick auf die aktuelle Version 2.2-10 des Sprachtalents.

Installation

Auf der Homepage [1] des Entwicklers André Simon finden sich im Download-Bereich neben dem Quellcode und einer vorkompilierten Windows-Version auch Pakete für Fedore Core 2 und SuSE 9.2. Beim Suse-Linux-Paket handelt es sich aber noch um eine eine ältere Version, so dass Benutzer dieser Distribution gut daran tun, selbst zum Compiler zu greifen. Dieser Schritt steht auch für all jene Linux-Nutzer an, für deren Distributionen es keine fertigen Pakete gibt.

Highlight zu kompilieren, gelingt unter Linux in zwei Schritten: Nach dem Entpacken des des Archivs genügen die Befehle make und make install, um das Programm nach /usr/local/bin zu installieren.

Wanderer zwischen den Betriebssystemwelten, die auch die Windows-Version des Tools benutzen, können die dort mitgelieferte grafische Oberfläche von Highlight mit Hilfe von Wine zur Mitarbeit bewegen.

Alleskönner

Einmal installiert, exportiert Highlight eine Vielzahl an Programmiersprachen in verschiedene Ausgabeformate. Ob Sie Ihre Quelltexte in einem Sprachklassiker wie C schreiben, hauptsächlich in Skriptsprachen wie Python oder Perl programmieren oder sich mit einer eher exotischen Sprache wie OCaml oder Lisp beschäftigen, spielt keine Rolle: Highlight gibt sich multilingual und bringt fast jeden Code in Form. Freunde klassischer Datenbank-Programmierung freuen sich über die Clipper-Unterstützung und selbst vor Konfigurationsdateien, wie der http://httpd.conf und den Beschreibungsdateien für RPM-Paketen – so genannten Spec Files – macht Highlight nicht Halt. Ob das Programm die von Ihnen verwendete Sprache versteht, erfahren Sie in Kasten 1.

Kasten 1: Unterstützte Programmiersprachen

ABAP/4, Action Script, ADA 95, Agda, AMPL, ARM, ASP, Aspect, Assembler, Amtrix, Avenue, (G)AWK, Bash, BlitzBasic, BibTeX, Bison, BMS, C, C++, C#, ClearBasic, Clipper, Clips, Cobol, CSS, DOS-Batch, Dylan, Eiffel, Erlang, Euphoria, Express, FAME, Felix, Forth, Fortran 77, Fortran 90, Frink, Haskell, httpd.conf, Icon, IDL, INI, IO, Informix, Jasmin, Java, JavaScript, JSP, LaTeX, LDIF, Lisp, Lotos, Lotus Script, Lua, Make, Maya, Matlab, Maple, MaxScript, Modelica, Modula 3, Nasal, Nice, Oberon, Object Pascal, Object Script, Objective C, OCaml, Octave, Paradox, PATROL, Perl, PHP, Pike, PL/1, PL/SQL, PostScript, POV Ray, Progress, Prolog, Python, R, Relax NG Compact, Rexx, RPM Spec, Ruby, Scala, Small, SML, SNMPv1, SNMPv2, Snobol, SMALL, Spin, Squirrel, Tcl/Tk, Sybase, Verilog, VHDL, Visual Basic, XML

Erste Schritte

Bei den Ausgabeformaten präsentiert sich Highlight ebenso flexibel: Es exportiert den übersichtlich farbig formatierten Code wahlweise ins HTML-, X-HTML-, RTF-, TeX-, Latex-, XSL-FO- oder XML-Format. Sie steuern das Sprachtalent über die Kommandozeile. Die simpelste Syntaxvariante lautet

highlight --input=eingabedatei ?
--output=ausgabedatei.

Normalerweise erkennt Highlight das Eingabeformat automatisch. Sollte dies wider Erwarten nicht der Fall sein, helfen Sie der Anwendung mit dem Aufrufparameter --syntax=sprache auf die Sprünge. Wie Sie die sprache angeben, erfahren Sie durch den Aufruf highlight --list-langs. Als Standardausgabeformat nutzt Highlight HTML. Die Auswahl einer der oben genannten Alternativen erfolgt mit Hilfe der Parameter: --latex, --rtf, --tex, --xhtml, --xsl-fo oder --xml. Soll die Ausgabe statt in eine Datei direkt ins Terminal erfolgen, hilft die Option --ansi weiter (Abbildung 1). Eine Übersicht aller Aufrufparameter, liefert highlight --help-int=de sogar in Deutsch.

Abbildung 1: Mit der Option "--ansi" formatiert Highlight Quelltext im Terminal.

Abbildung 1: Mit der Option “–ansi” formatiert Highlight Quelltext im Terminal.

Formatvielfalt

Gerade im universitären Umfeld bietet sich LaTeX als Ausgabeformat an. Mit

highlight --latex --input=trie.?
py --output=trie.tex

erzeugt Highlight aus dem Python-Skript trie.py die LaTeX-Datei trie.tex. Daraus generieren Sie mit pdflatex trie.tex eine PDF-Datei (Abbildung 2). Es gelingt ebenso leicht, das formatierte Code-Listing in ein anderes Latex-Dokumente – etwa eine Studienarbeit – zu integrieren. Dabei müssen Sie lediglich daran denken, die ebenfalls von Highlight erzeugte Datei highlight.sty in das Dokument einzubinden.

Abbildung 2: Aus dem LaTex-Export von Highlight lassen sich leicht PDF-Dateien für Präsentationen erzeugen.

Abbildung 2: Aus dem LaTex-Export von Highlight lassen sich leicht PDF-Dateien für Präsentationen erzeugen.

Möchten Sie den exportierten Programm-Code lieber in OpenOffice weiter bearbeiten, stellt das RTF-Format die bessere Wahl dar. Ein mit der Option --output=trie.rtf erstelltes RTF-Dokument können Sie nicht nur mit OpenOffice (Abbildung 3), sondern mit nahezu jeder Textverarbeitung öffnen und bearbeiten.

Abbildung 3: RTF-Dateien eignen sich für den Export, wenn Sie den formatierten Quellcode in einer Textverarbeitung bearbeiten möchten.

Abbildung 3: RTF-Dateien eignen sich für den Export, wenn Sie den formatierten Quellcode in einer Textverarbeitung bearbeiten möchten.

Um den Quelltext auf der eigenen Homepage zu publizieren, eignen sich die Ausgabeformate HTML, X-HTML und XML. Entscheiden Sie sich für den X-HTML-Export, erzeugt Highlight außer dem HTML-Dokument auch die Datei highlight.css. In dieses Cascading Style Sheet lagert das Programm die Stilvorgaben für Kommentare, Variablen und weitere Teile des Codes aus.

Finetuning

Bei den bisher gezeigten Beispielen kamen die Standardeinstellungen von Highlight zum Zuge. Sagen Ihnen die so erzeugten Dokumente nicht zu, gibt es mehrere Schräubchen, an denen Sie drehen können, um das Look & Feel der Ausgabedateien zu beeinflussen. Die Option --linenumbers sorgt für noch mehr Übersicht, da Highlight mit dieser die Zeilen des Programm-Codes nummeriert. Möchten Sie der Ordnung halber den niedrigeren Zahlen eine Null voranstellen, bewirken Sie das mit der zusätzlichen Angabe von --zeroes.

Den Zeilenumbruch langer Zeilen steuern Sie mit --wrap-simple und --wrap. Ersteres bricht lange Zeilen einfach um, wohingegen --wrap Funktionsnamen und Parameter nach dem Umbruch ordentlich einrückt.

Für eine schnelle Navigation in HTML-Seiten sollten Sie im HTML- und X-HTML-Modus das Programm mit dem Parameter --anchors aufrufen. Dadurch versieht Highlight die Zeilen des Dokumentes mit Einsprungmarken der Form l_NUMMER. Auf diese Wiese ist es möglich, einzelne Zeilen per Link direkt anzuspringen – eine vor allem bei längeren Quelltexten praktische Option. Geben Sie im Browser oder einem Link als URL seite.html#l_28 anstelle von seite.html an, landen Sie direkt bei Zeile 28 des Quelltexts.

Zur optischen Gestaltung der Ausgabedokumente bringt Highlight mehrere Styles im Ordner /usr/share/highlight/themes/ mit. Sie wählen einen davon über den Aufrufparameter --style=stil aus. Welche Stile Highlight kennt, erfahren Sie am schnellsten mit dem Befehl ls /usr/share/highlight/themes/ | cut -d "." -f 1. Abbildung 4 illustriert die Ergebnisse des Fine Tunings unter Verwendung des Styles golden. Der vollständige Aufruf lautet:

highlight --linenumber --zeroes ?
--xhtml --wrap --print-index ?
--style=golden --input=trie.py ?
--output=trie.html
Abbildung 4: Styles ermöglichen es, die Ausgabedateien optisch anzupassen.

Abbildung 4: Styles ermöglichen es, die Ausgabedateien optisch anzupassen.

Fazit

Highlight bietet ein einfache Möglichkeit, schnöden Quelltext optisch aufgepeppt zu präsentieren, in Publikationen und andere Dokumente einzubetten, oder online zu stellen. Außerdem können Sie Highlight mit eigenen Styles oder um ein bisher noch nicht unterstütztes Quelltextformat erweitern. Entsprechende Anleitungen finden Sie im Handbuch unter [2]. Zusätzlich existieren Python-Bindings [3], die es ermöglichen, die Funktionen von Highlight in eigenen Python-Programmen zu benutzen.

Der Autor

Hagen Höpfner hat an der Otto-von-Guericke Universität Magdeburg Informatik studiert und dort seine Promotion zum Dr.-Ing. erfolgreich abgeschlossen. Seit kurzem ist er Lecturer für Datenbanken und Informationssysteme an der International University in Germany (http://www.i-u.de) in Bruchsal.

LinuxUser 08/2005 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben