Im Verlaufe dieser Beschreibung werden bestimmte Schlüsselworte verwendet, die außerhalb von LPU nicht unbedingt bekannt (oder evtl. mit einer anderen Bedeutung belegt) sind. Deshalb werden sie hier kurz erklärt:
Alle internen Positionen und Abstände werden in LPU in der neutralen Einheit DOT berechnet. Ein DOT ist derzeit als ein Dezipunkt, also 1/720" definiert.
Alle reinen Zahlenwerte, die bei Parametern für eine Koordinate oder eine Strecke auf dem Label angegeben werden, besitzen implizit die Einheit DOT.
Eine UNIT ist eine Fließkommazahl mit einer optionalen Maßeinheit. Als Einheiten sind derzeit erlaubt:
Der angegebene Wert wird sofort in DOT umgerechnet.
Im Prinzip darf überall dort, wo ein DOT-Wert erwartet wird, auch ein UNIT-Wert angegeben werden.
Datentyp T_NUM, numerisch.
Dabei handelt sich sich um einen 32Bit Integerwert.
Datentyp T_FLT, float.
Es handelt sich hier um eine Fließkommazahl als 64bit Doublewert.
Datentyp T_STR, string.
Es handelt sich um einen Textstring mit einer derzeit nicht näher festgelegten maximalen Länge.
LPU liest eine oder mehrere Dateien mit Anweisungen, interpretiert diese, und erzeugt daraus PostScript-Code für die Erzeugung der gewünschten Etiketten.
Sind keine Anweisungsdateien angegeben, so werden die Anweisungen statt dessen von STDIN gelesen.
Zur Unterstützung werden ferner zwei besondere Dateien benötigt:
Weiterhin kann man eine Datei mit allgemeinen Parameterdefinitionen angeben (siehe Die PAR-Datei).
Der Aufruf von LPU erfolgt in der Form
lpu { OPTION } { SOURCEFILE }
Wobei derzeit folgende Optionen erkannt werden:
Dies ist eine Dummy-Option für die Umleitung des Befehlskanals von STDIN. Sie wird nur benötigt, wenn keine anderen Optionen angegeben sind.
legt fest, daß LPU im sogenannten Batchmode ausgeführt wird.
In diesem Modus ändern einige Anweisungen ihr Verhalten. Ferner kann man durch die Systemvariable $batchmode abfragen, ob sich LPU in diesem Modus befindet, und entsprechend anders reagieren.
Hiermit kann ein anderes Devicefile spezifiziert werden. Der Defaultname ist `lpu.dev'.
erzeugt automatisch einen Rahmen um jeden generierten Label. Dies kann entweder zu Testzwecken verwendet werden, oder als Schablone zum Ausschneiden der Label aus einem Blankoformular.
Gibt eine Liste aller zur Verfügung stehenden Optionen aus.
gibt an, wieviele Label zu Beginn übersprungen werden.
Dies dient dazu, bereits teilweise bedruckte Seiten mit Etiketten weiter bedrucken zu können.
spezifiziert eine Ausgabedatei. Fehlt diese Option, so erfolgt die Ausgabe nach STDOUT.
Definiert einen alternativen Namen für das Parameterfile. Der Default lautet `lpu.par'.
macht LPU `schweigsam'.
erzeugt eine globale Variable SYMBOL mit dem optionalen Wert VALUE.
Der Typ des Symbols ist STR.
Fehlt die Angabe von VALUE, so wird die Variable mit dem Leerstring vorbesetzt.
Spezifiziert ein anderes Tablefile. Der Defaultname lautet `lpu.tab'.
Spezifiziert einen Debuglevel. LEVEL kann zwischen `0' und `9' liegen, `1' ist der Default. Ohne diese Option bzw. bei Level `0' werden keine Debug-Informationen ausgegeben, bei `1' wenige, bei `2' mehr usw. Alle Debugausgaben gelangen - ebenso wie alle Fehlermeldungen - nach STDERR.
Für SOURCEFILE können beliebige Dateinamen angegeben werden; fehlt die Extension, so wird `.lpu' angenommen. Die angegebenen Dateien werden nacheinander in genau der vorgegebenen Reihenfolge abgearbeitet.
Werden keine SOURCEFILEs angegeben, so werden die Anweisungen statt dessen von STDIN gelesen; ggf muß dazu die Option `--' angegeben werden.
Die beiden Konfigurationsdateien `lpu.dev' und `lpu.tab' - bzw. die mit `-d' und `-t' zugewiesenen alternativen Namen - werden zuerst im aktuellen Verzeichnis, danach im Unterverzeichnis `.lpu' des Heimatverzeichnisses des Aufrufers ($HOME/.lpu/), und dann - falls angegeben - im Verzeichnis `$LPUDIR' gesucht.
In dieser Datei sind Informationen über das verwendete Ausgabemedium enthalten. Hier finden sich vor allem Definitionen für die verwendeten Papierformate und Zeichensätze.
Es handelt sich um eine reine Textdatei, die zeilenorientiert ist. Leerzeilen, und Zeilen, die mit einem Semikolon als erstem sichtbarem Zeichen beginnen, werden ignoriert. Anweisungen beginnen mit einem Prozentzeichen, gefolgt vom Schlüsselwort und den zugehörigen Parametern
Folgende Anweisungen sind definiert:
Hiermit wird das verwendete Ausgabegerät genau spezifiziert.
ID ist ein beliebiger Bezeichner.
TYP gibt den Typ des Geräts an. Derzeit sind definiert:
Sequentielle Ausgabe.
Wahlfreie Ausgabe.
Für LPU sind nur Ausgabegeräte vom Typ RAN erlaubt.
KOMMENTAR ist ein beliebiger Text, der das Gerät näher beschreibt.
Gibt eine Korrektur an, mit der die Ausgabe genau justiert werden kann.
XNULL ist ein Offset für die X-Koordinate, und YNULL ein Offset für die Y-Koordinate, beide in DOTs bzw. UNITs. Beide Werte werden zu jeder Koordinate addiert.
Der LPU-Distribution liegt das Testprogramm `messen.lpu' bei. Mit dessen Hilfe kann man den Koordinaten-Nullpunkt in der linken oberen Ecke genau ausmessen, und über die %Adjust-Anweisung entsprechend korrigieren.
Definiert ein Seitenformat.
ID gibt dem Format einen Namen. XMAX und YMAX definieren die Grösse des Formats.
LM, RM, TM und BM definieren den linken, rechten, oberen und unteren Rand, der nicht bedruckt werden kann.
Folgende Optionen können diese Definition modifizieren:
verschiebt die Ausgabe um XOFF Dots nach rechts (bzw. links bei negativen Werten) und um YOFF Dots nach unten (bzw. oben).
vergrößert bzw. verkleinert die Ausgabe um den Faktor XSCALE horizontal und YSCALE vertikal.
dreht die Ausgabe um die angegebene Gradzahl im Uhrzeigersinn.
[Anm. d. Verfassers: ich bitte um die Zusendung von erprobten Formatdefinitionen für andere Papierformate; diese werden dann in die mitgelieferten Konfigurationsdateien eingefügt.]
Definiert einen neuen PostScript-Font.
ID ist der interne Name, der auch in LPU-Programmen verwendet wird.
POINTS definiert die Größe in Punkt. Ist keine feste Punktgröße vorgegeben, dann kann hier statt dessen ein Stern (*) angegeben werden.
ATTR ist eine Liste von Attributen fuer den Font. Im Einzelnen sind definiert:
Normal. Schaltet alle Attribute ab. Muss ggf. als Platzhalter angegeben werden.
Fett (Bold).
Kursiv (Italic).
Unterstrichen.
RELWIDTH gibt die `relative Breite' der Zeichen dieses Fonts an, sofern es sich dabei um einen Font mit fester Zeichenlaenge (monospaced) handelt. Der Wert gibt die Tausendstel der Zeichenhöhe an.
FONTNAME ist der Name, den PostScript intern verwenden soll.
Anstelle von RELWIDTH und FONTNAME kann man sich die benötigten Informationen auch aus einer AFM-Datei holen; bei proportionalen Fonts muß man dies sogar tun. In diesem Fall gibt man den Namen der AFM-Datei (ohne Pfad und ohne Extension) hinter einem `@' an. Die AFM-Datei wird dann über den 'AfmPath' gesucht; Beschreibung folgt.
Hiermit wird der Pfad zu dem Verzeichnis angegeben, welches die nötigen AFM-Dateien enthält. Derzeit kann man hier nur einen absoluten Pfad angeben.
Der Distribution liegt eine Beispieldatei `lpu.dev' bei, die für einen HP LaserJet 6L angepaßt ist.
Hier können bestimmte häufig benötigte Programmparameter abgelegt werden.
Wie die anderen Konfigurationsdateien auch, handelt es sich hierbei um eine ASCII-Datei, die zeilenweise ausgewertet wird. Leerzeilen, und Zeilen, die mit einem Semikolon beginnen, werden ignoriert. Anweisungen beginnen mit einem Punkt, gefolgt von einem Schlüsselwort und den zugehörigen Parametern.
Folgende Anweisungen sind derzeit in PAR-Dateien erlaubt:
Die Syntax dieser Anweisungen entspricht exakt derjenigen der gleichnamigen LPU-Anweisungen, und kann dort nachgelesen werden.
LPU arbeitet prinzipiell mit Forms und Labels. Eine Form ist die Beschreibung der Struktur eines Blattes. Das Blatt enthält einen oder mehrere Label; diese können gleich oder unterschiedlich aussehen, und gleichmäßig oder ungleichmäßig über das Blatt verteilt sein.
Bekannte Formulartypen sind in einer Art Datenbank beschrieben, der sogenannten TAB-Datei. Dies ist eine normale Textdatei, die die Beschreibung von Formularen und Labels in einer bestimmten Syntax enthält. Jedes Formular wird durch eine FORM-Anweisung definiert. Hier werden der Formularname und das verwendete Seitenformat festgelegt. Danach folgen optional SHIFT-, SCALE- und ROTATE-Definitionen für die Umformung des Formulars, sowie eine oder mehrere LABEL-Definitionen, die die Aufteilung des Formulars beschreiben.
Fehlen die LABEL-Definitionen, so wird angenommen, daß das Formular aus einem einzigen Label besteht, welches die gesamte Seite ausfüllt. Der Name für einen solchen Defaultlabel ist `label'.
Die SHIFT-Anweisung verschiebt das Formular um die angegebenen Offsets in X- und Y-Richtung.
Die SCALE-Anweisung vergrößert oder verkleinert das Formular und den angegebenen Faktor horizontal bzw. vertikal.
Die ROTATE-Anweisung dreht das Formular um die angegebene Gradzahl im Uhrzeigersinn.
Jeder Label wird durch eine LABEL-Anweisung definiert. Danach folgen optionale BASE, XREP und YREP-Anweisungen. Die LABEL-Definition legt den Namen sowie die Größe eines Labels fest. Wird statt des Labelnamens die Form `@name' angegeben, so wird der vordefinierte Label mit dem angegebenen Namen verwendet.
Per Default wird festgelegt, dass es nur genau einen solchen Label auf dem Formular gibt, und daß er in der linken oberen Ecke angeordnet ist.
Die BASE-Anweisung enthält eine X- und eine Y-Koordinate; diese geben den Offset des ersten Labels vom angegebenen Typ relativ zur linken oberen Ecke des Formulars an.
Die XREP- und YREP-Anweisungen werden verwendet, wenn es mehrere gleiche Label in einem Formular gibt. Der Aufbau ist in beiden Fällen gleich: es werden ein Faktor und ein Offset angegeben. Der Faktor gibt an, wie oft der Label in der jeweiligen Richtung (nach rechts bzw. nach unten) wiederholt wird, und der Offset gibt den Abstand zwischen zwei benachbarten Labeln an. Grenzen die Label direkt aneinander, so ist der Offset 0.
[Anmerkung: durch die Verwendung von negativen Offsets können bei Bedarf auch `überlappende' Label erzeugt werden; mir ist jedoch keine sinnvolle Anwendung dafür bekannt.]
Alle absoluten oder relativen Positionen auf den Formularen werden in UNITs angegeben.
Die linke obere Ecke hat die Koordinate (0,0), positive Werte gehen nach rechts und nach unten.