[druckfreundliche Version]
Hauptseite   Impressum   

GNU Enscript

Enscript ein Programm zum wandeln und aufpeppen von Text nach Postscript kann mehr als viele wissen.

--

GNU Enscript beherrscht Syntaxhighlighting (farbig und s/w) für die folgenden Sprachen:

Ada95, Assembler, AWK, Bash, C, C++, ChangeLog, Csh, Delphi, Diffs, Elisp, Fortran, Haskel, HTML, IDL, Java, JavaScript, Ksh, M4, Mail und News, Makefile, Matlab, Nroff, Objective-C, Outline text, Pascal, Perl, Postscript, Python , RFC, Scheme, Sh, Skill, SQL, States, Tcl, Tcsh, TeX/LaTeX, VBA, Verilog, VHDL, VRML, WMLScript, Zsh

und läßt sich durch .st-Dateien einfach um die Kenntniss weiterer Sprachen erweitern.

/**
 * Name: sh
 * Description: Bourne shell programming language.
 * Author: Juergen Kahrs <Juergen.Kahrs@t-online.de>
 */
state sh extends HighlightEntry
{
  /* Comments. */
  /#/ {
    comment_face (true);
    language_print ($0);
    call (eat_one_line);
    comment_face (false);
  }
  /* String constants. */
  /\"/ {
    string_face (true);
    language_print ($0);
    call (c_string);
    string_face (false);
  }
  /* Excutable script. */
  /^#!/ {
    reference_face (true);
    language_print ($0);
    call (eat_one_line);
    reference_face (false);
  }
  /* Keywords. */
  /\b(CDPATH|HOME|IFS|MAIL((CHECK)?|(PATH)?)|P(ATH|S(1|2))|SH(ACCT|ELL)|\
break|c(ase|d|ontinue)|do(ne)?|e(cho|lse|sac|val|x(ec|it|port))|f(i|or)|\
getopts|hash|i[fn]|limit|newgrp|pwd|re(ad(only)?|turn)|s(et|hift)|\
t(est|hen|imes|rap|ype)|u(limit|mask|n(limit|set))|w(ait|hile))\b/ {
    keyword_face (true);
    language_print ($0);
    keyword_face (false);
  }
}
Beispiel für Enscript Syntaxdatei
--

enscript kann (alles?) was a2ps kann und mehr. Es kann mehrere logische Seiten auf einer physikalischen unterbringen, es beherscht benutzerdefinierbare Kopf- und Fußzeilen, es kann verschiedenste (Postscript-) Schriftarten in einem Dokument verwenden, es kann anstatt Postscript auch ge-highlighte-te HTML-Dateien generieren und es kann Grafiken einbinden.

--

Für meine Formatierungsaufgaben habe ich mir das folgende kleine Skript geschrieben.

#!/bin/sh
PROG=`basename $0`
FILE=$HOME/formated
case $PROG in
        "t2p")  OPTs="-GE" ;;
	"t2h")  OPTs="-GE -W html --color" ;;
        "t2ph") OPTs="-GE -H1" ;;
        "t2pc") OPTs="-G2" ;;
        "t2pl") OPTs="-GrE" ;;
        "t2p2") OPTs="-G2rE" ;;
        "t2p4") OPTs="-G2rE -U2" ;;
        "t2ph")  OPTs="-GE -H1" ;;
        "t2pch") OPTs="-G2 -H1" ;;
        "t2plh") OPTs="-GrE -H1" ;;
        "t2p2h") OPTs="-G2rE -H1" ;;
        "t2p4h") OPTs="-G2rE -U2 -H1" ;;
esac
enscript -p ${FILE} $OPTs $@ 
Das Syntaxhighlighting wurde übrigens per enscript generiert!

Dieses Skript und entsprechende Symlinks (ln -s t2p t2h , ...) deckt die meisten meiner Bedürfnisse ab und erspart es mir viel Optionen von enscript merken/nachschlagen zu müssen. Das Skript legt seine Ausgabe immer in der Datei formated im Heimatverzeichnis des Benutzers ab und formatiert je nach Aufruf die gewünschte Eingabedatei. Ruft man es als t2p auf, so formatiert es die Eingabedatei als Postscript mit Syntaxhervorhebung, als t2ph tut es dasselbe, aber jeder zweite Zeile wird mit einem Graubalken hinterlegt, t2pc generiert ein 2-spaltiges hochkantiges Layout, t2p4 stellt 4 logische Seiten auf einer physikalischen dar. Als t2h aufgerufen erstellt es eine HTML-Ausgabedatei mit Syntaxhighlighting und Farben, ...

Konfigurieren läßt sich enscript durch eine ~/.enscriptrc-Datei. In dieser kann man diverse Voreinstellungen festlegen. Welche Schriftart man möchte, welches Papierformat man bevorzugt, welche Kopf- und Fußzeile es sein soll, ...

--

Enscript seit fast 2 Jahren bei uns als Formulargeneratorbackend im Einsatz hat uns nie im Stich gelassen, die Postscriptdateien ließen sich bis jetzt auf jeden bei uns im Einsatz befindlichen Postscriptdrucker problemlos ausgeben. Es verschaft dem ansonsten nur zur reinen textuellen Ausgaben fähigen Formulargenerator die Möglichkeit Logos, Bilder, Briefköpfe etc. ausgeben zu können.

--

Enscript ist wirklich ein wahrer Tausendsassa und ich kann jedem nur empfehlen einmal einen Blick darauf zu werfen.

--

Links zum Thema

Martin Glinski