AA_parasols_andrewatla_sxc_911118.jpg

© Andrewatla, sxc.hu

Durchblick im Quellcode dank Syntax-Highlighting

Alles bunt

Quellcode liest sich oft schwer. Eine Syntaxhervorhebung macht klar, worauf es ankommt.

In Vorträgen, Kursen oder bei der Dokumentation kommen viele Hilfsmittel zum Darstellen von Quellcode zum Einsatz, fast immer mit einer Syntaxhervorhebung. Seien es Screenshots von Editoren, eingescannte Ausdrucke von Code-Schnipseln, in denen der Autor per Textmarker die wesentlichen Teile hervorgehoben hat, oder sogar handkolorierte Meisterwerke aus der Office-Umgebung: Sie alle verursachen viel Arbeit und bereitet dem Leser aufgrund uneinheitlicher Darstellung gleicher Schlüsselwörter oft Mühe.

Ausweg Enscript

Aus diesem Dilemma gibt es einen einfachen Ausweg: Mittels Enscript [1] erzeugen Sie aus kompletten Quelltexten entsprechende Ausgaben für den Druck oder Bildschirm.

Damit das Programm allerdings zufriedenstellende Ergebnisse auswirft, gilt es auf den Zeichensatz der Eingabedatei zu achten. Files mit der heute weit verbreiteten Kodierung UTF-8 verarbeitet das Programm nicht richtig. Am besten konvertieren Sie diese nach ISO-8859-15 (Westeuropa, mit Eurozeichen). Gut ausgestattete Editoren wie Kate (Abbildung 1) ermöglichen dies ebenso wie die Kommandozeilentools Recode [2] und Iconv.

Abbildung 1: Kate bietet die Möglichkeit, Dateien mit einer anderen Zeichenkodierung abzuspeichern.

Den Konverter Recode benötigen Sie vor allem beim automatisierten Verarbeiten. Wenn Sie erfahren wollen, welche Zeichensätze das Programm bearbeiten kann, geben Sie in einem Terminal den Befehl recode --list ein.

Selbst uralte COBOL-Listings aus den Zeiten der BS-1000-Großrechner bereiten Sie damit auf, unter anderem für Enscript. Legen Sie eine Kopie der Quelltextdatei an, da das Tool die Datei selbst ändert. Für das Konvertieren geben Sie bei Recode die Ausgangs- und Zielkodierung an, getrennt durch zwei Punkte (..):

$ recode UTF-8..ISO-8859-15 p3.sh

Wissen Sie nicht, mit welchem Zeichensatz die Ausgangsdatei kodiert ist, fragen Sie das auf der Shell mit dem Kommando file ab. Sie benötigen die Option -i, da Sie sonst nicht alle Informationen erhalten (Listing 1).

Listing 1

$ file -i *.sh
p1.sh: text/x-shellscript; charset=utf-8
p2.sh: text/x-shellscript; charset=ISO-8859-1
p3.sh: text/x-shellscript; charset=ISO-8859-15

Im Einsatz

Die Datei mit dem richtigen Zeichensatz verarbeiten Sie nun mit Enscript. Für die Ausgabe haben Sie dabei die Wahl zwischen Postscript, HTML oder RTF; alternativ steuern Sie direkt einen Drucker an. Möchten Sie einen kompletten Quelltext für Dokumentationszwecke in das PDF-Format verwandeln, benötigen Sie hierfür noch geeignetes Werkzeug im Nachlauf.

Dazu eignet sich unter anderem Ps2pdf14, das bei vielen Distributionen zum Paket ghostscript gehört. Es stellt einen PDF-Pseudodrucker bereit. Das folgende Kommando wandelt die Ausgabe in PDF um:

$ ps2pdf14 Postscript-Datei

Die Tabelle "Enscript-Optionen" zeigt die wichtigsten allgemeinen Optionen. Die wichtigsten Programmier- und Skriptsprachen und deren Kürzel finden Sie in Tabelle "Auswahl Sprachen".

Enscript-Optionen

Option Aktion Hinweis
-EKürzel Angabe der Programmier- oder Skriptsprache alternativ: --highlight=Kürzel
--help-pretty-print Anzeige aller unterstützten Programmier- und Skriptsprachen alternativ: --help-highlight
-wFormat Angabe des Ausgabeformates, falls von Postscript abweichend mögliche Werte: html, rtf
--color Syntax zusätzlich durch Farben hervorheben
--mark-wrapped-lines=Stil Kennzeichnung automatisch umbrochener Zeilen mögliche Werte: plus, box, arrow (nur bei PS-Ausgabe)
-C Zeilennummern verwenden
-fFontname Font und Ausgabegröße angeben Beispiel: -fCourier8 (nur bei PS-Ausgabe)
-Hn nur jede n+1te Zeile ausgeben Beispiel: -H1 für jede zweite Zeile (nur bei PS-Ausgabe)
--highlight-bar-gray=Wert Angabe zur Farbstärke 0.9 (schwach) bis 0.1 (fast schwarz)
-bZeilenanweisung eigene Kopfzeile verwenden Beispiel: -b'$n| %W | Seite $% von $='
-B Kopfzeile ausblenden
-u'Text' Wasserzeichen einblenden
-oDateiname Name der Ausgabedatei
-PDrucker Drucker für die direkte Ausgabe definieren
-r Ausgabe im Querformat nur bei PS-Ausgabe
-R Ausgabe im Hochformat nur bei PS-Ausgabe

Auswahl Sprachen

Sprache Kürzel
Assembler asm
AWK-Skripte awk
Bash-Shell bash
C c
C++ cpp
Delphi delphi
HTML html
Java java
Javascript javascript
Lua lua
M4 m4
E-Mail mail
Makefiles makefile
Matlab matlab
Pascal pascal
Perl perl
Python python
RFCs rfc
Ruby ruby
Shell sh
SQL sql
Visual Basic vba
Z-Shell zsh

Die zentrale Konfigurationsdatei von enscript.cfg finden Sie im Verzeichnis /etc. Darüber hinaus besteht die Möglichkeit, eine Kopie davon zu bearbeiten und im Home-Verzeichnis als .enscriptrc abzulegen. Unter /usr/share/enscript finden Sie weitere Ressourcen, wie die Muster der Kopfzeilen oder das Verzeichnis (hl) mit den Stilen für die jeweilige Syntax.

Um eine eigene Stil-Datei anzulegen, kopieren Sie eine bestehende Datei mit dem Suffix st und ändern diese für Ihre Zwecke ab. Mit enscript.st steht Ihnen ein Muster mit kleiner Anleitung bereit. Vergeben Sie für Ihre Stildatei einen Namen, der noch nicht in Gebrauch ist.

Haben Sie für /usr/share/enscript kein Schreibrecht, speichern Sie Ihre Datei anschließend im Verzeichnis .enscript im Home-Verzeichnis. Hier liegen alle von Ihnen selbst erstellten zusätzlichen Ressourcen. Diese stehen aber nur für Sie selbst bereit.

Listing 2 zeigt einige beispielhafte Aufrufe für Enscript. Dabei kommen einfache Optionen für die Kopfzeile oder komplexe Anweisungen zum Ausdruck der Datei zum Einsatz.

Listing 2

enscript -Ebash -C -o script1.ps script.sh
enscript -b'$n| %W | Seite $% von $=' --highlight=sh -fCourier12 -u"ENTWURF"  -C --mark-wrapped-lines=arrow -o script2.ps script2.sh
enscript --highlight-bar-gray=.8 --highlight=sh -fCourier10  -C -H1 -o script1.ps script.sh
enscript  --highlight=sh  -C -wrtf --color -o script1.rtf script.sh
enscript  --highlight=sh  -C -whtml --color -o script1.html script.sh

Das Kommando aus Zeile 1 erzeugt eine Postscript-Ausgabe in schwarzweiß mit Zeilennummern und einer Standard-Kopfzeile, wobei Enscript nach Schlüsselworten der Bash fahndet (Abbildung 2).

Abbildung 2: Schon mit wenigen Optionen erzeugen Sie dank Enscript eine Ausgabe, die den Blick auf die wichtigen Schlüsselwörter lenkt und das Navigieren im Text durch automatische Zeilennummern erleichtert.

In Zeile 2 kommt ein wesentlich komplexerer Befehl zum Einsatz. Das Pipe-Zeichen bei der Kopf-Option teilt die Zeile in eine linke, mittlere und rechte Spalte ein. Die Option -f gibt hier neben dem Font zusätzlich dessen Größe an. Ein Wasserzeichen Entwurf prangt quer über die Seite. Beachten Sie, dass das Programm den Umbruch der überlangen Zeile mit einem Pfeil markiert hat (Abbildung 3).

Abbildung 3: Wasserzeichen und individuelle Kopfzeilen ermöglichen es, Ausgaben ohne große zusätzliche Kommentare zu versenden.

Mit einer wechselweisen Unterlegung der Zeilen heben Sie die Abfolge des Quellcodes noch besser hervor. Zeile 3 in Listing 2 zeigt, wie Sie das bewerkstelligen, Abbildung 4 veranschaulicht das Ergebnis.

Abbildung 4: Das Listing erinnert an alte Computerausdrucke, stammt aber von einem modernen Linux-PC mit Enscript.

Zeile 4 erzeugt eine farbige Ausgabe im RTF-Format. Vergessen Sie nicht, beim Weiterverarbeiten mit einem Office-Paket eine dicktengleiche Schrift zu verwenden, wie etwa Courier. Proportionalschriften, wie die beliebte Times, führen dazu, dass der Quellcode unübersichtlich erscheint. Die gedachten Spalten im Text liegen nicht mehr unbedingt übereinander.

Abbildung 5: Achten Sie beim Weiterverarbeiten der RTF-Ausgabe im Office-Paket der Wahl darauf, dass Sie für den Text eine dicktengleiche Schrift wie Courier auswählen.

Falls Sie das Quellcode-Fragment in eine Website integrieren möchten, bietet sich die direkte Ausgabe in HTML an. Das umfasst auch den Einsatz von Farben (Abbildung 6).

Abbildung 6: Die HTML-Ausgabe zum integrieren in eine Website bringt zudem Farbe in den Quellcode.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • TurboPrint 1.40
    Ob es sich um liebevoll gestaltete Einladungskarten handelt oder eine Bewerbung: nur ein perfekter Ausdruck stellt die Anwender/in am Ende zufrieden. Die Druckertreiber von TurboPrint treten hier mit hohem Anspruch an.
  • Texte scannen und mit OCR nachbearbeiten
    Mit einem kleinen Skript verarbeiten Sie große Mengen an Textscans zu PDF-Dateien, die Sie dank OCR mit typischen Unix-Werkzeugen im Volltext durchsuchen.
  • Programm-Code übersichtlich formatieren
    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.
  • Sauber verzahnt
    Verbinden, trennen, umformatieren: Unter Linux gibt es zahlreiche kleine Helfer, die die Arbeit mit Textdateien perfekt beherrschen – und die dazu noch perfekt zusammenarbeiten.
  • Anwendungsbeispiele zu LaTeX und PDF
    Die vergangenen Folgen des LaTeX-Workshops im LinuxUser haben viele Möglichkeiten des Satzsystems vorgestellt. Die letzte Ausgabe geht auf einige spezielle Pakete genauer ein, die PDF-Dateien mit weiteren Finessen versehen.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...