groff(1)

Name
groff - Frontend für das GNU-roff(7)-Dokumentenformatierungssystem

Übersicht
groff [-abcCeEgGijklNpRsStUVXzZ] [-d cText] [-d Zeichenkette=Text] [-D Rückfallkodierung] [-f Schriftfamilie] [-F Schriftverzeichnis] [-I Einbindungsverzeichnis] [-K Eingabekodierung] [-L Spooler-Argument] [-m Makropaket] [-M Makroverzeichnis] [-n Seitennummer] [-o Seitenliste] [-P Postprozessorargument] [-r numerischer_Ausdruck] [-r Register=numerischer_Ausdruck] [-T Ausgabegerät] [-w Warnungskategorie] [-W Warnungskategorie] [Datei …]

groff -h
groff --help

groff -v [option …] [Datei …]
groff --version [Option …] [Datei …]

Beschreibung
groff ist das primäre Frontend für das GNU- roff(7) -Dokumentenformatierungssystem. GNU- roff(7) ist ein Textsatzsystem, das reine Texteingabe als Eingabe liest und die enthaltenen Formatierungsbefehle verwendet, um Ausgaben in PostScript, PDF, HTML und anderen Formaten oder die Anzeige im Terminal zu erstellen. Formatierbefehle können grundlegende Schriftsatzprimitive, Makros eines bereitgestellten Pakets oder benutzerdefinierte Makros sein. Alle drei Ansätze können kombiniert werden. Falls kein Operand Datei angegeben ist oder falls Datei »-« ist, liest groff aus dem Standardeingabedatenstrom.

groff ist eine Neuimplementierung und Erweiterung von troff(1) und anderen Programmen aus AT&T Unix und aufgrund seiner langen Verbindung mit Unix-Handbüchern (einschließlich der Handbuchseiten) auf POSIX-Systemen und anderen Systemen weit verbreitet. Zusammen mit seinen Vorgängern hat es mehrere meistverkaufte Informatiktexte erstellt. groff kann typographisch fortgeschrittene Dokumente erstellen und dabei minimale Systemressourcen verwenden.

Ähnlich wie sein Vorgänger »troff« leistet sich der Ausdruck »groff« zwei Aussprachen: als eine Silbe (wie der Nachname), reimend auf »trough« oder wie in »jee-roff« in Analogie zu der Aussprache »tee-roff« der Bell Labore. Es besteht kaum ein Verwechslungsrisiko, verwenden Sie die Aussprache nach Ihrem Geschmack.

Der Befehl groff arrangiert die Ausführung von Präprozessoren, die Umwandlung von Eingabedokumenten in eine geräteunabhängige Seitenbeschreibungssprache und die Erstellung der Ausgabe aus dieser Sprache.

Optionen
-h und --help zeigen eine kurze Aufrufsinformation an und beenden das Programm.

Da groff dazu gedacht ist, die direkten Aufrufe der meisten der troff(1) -Formatierer zusammenzufassen, nutzen die beiden Programme diverse Optionen gemeinsam. Allerdings verfügt groff über Optionen, die troff(1) nicht hat und andere, die groff anders interpretiert. Gleichzeitig können nicht alle gültigen troff(1) -Optionen an groff übergeben werden.

  groff-spezifische Optionen
Die folgenden Optionen gibt es entweder bei GNU- troff(1) nicht oder sie werden von groff anders interpretiert.

-D Kod
    Verwendet Kod als Rückfall-Eingabekodierung von preconv(1) ; impliziert -k.

-e  Führt den Präprozessor eqn(1) aus.

-g  Führt den Präprozessor grn(1) aus.

-G  Führt den Präprozessor grap(1) aus; impliziert -p.

-I Verz
    Funktioniert wie die Option von troff(1) (siehe unten), impliziert aber auch -g and -s. groff übergibt Optionen -I und deren Argumente an soelim(1), troff(1), und Ausgabetreiber; es übergibt die gleichen Argumente mit auf -M geänderten Optionsbuchstaben an grn(1).

-j  Führt den Präprozessor chem(1) aus; impliziert -p.

-k  Führt den Präprozessor preconv(1) aus. Lesen Sie seine Handbuchseite für dessen Verhalten, falls keine der Optionen -K und -D von groff zusätzlich angegeben ist.

-K Kod
    Setzt die von preconv(1) verwandte Eingabekodierung auf Arg; impliziert -k.

-l  Schickt die Ausgabe zum Drucken an einen Spooler. Die Direktive »print« in der Gerätebeschreibungsdatei legt den zu verwendenden Standardbefehl fest; siehe groff_font(5). Falls für das Ausgabegerät keine solche Direktive vorhanden ist, wird die Ausgabe per Pipe an lpr(1) weitergeleitet. output is piped to lpr(1). Siehe die Optionen -L und -X.

-L Arg
    Übergibt Arg an den Druck-Spooler. Falls mehrere Arg benötigt werden, übergeben Sie jedes mit einer getrennten Option -L. groff stellt Arg kein Options-Minuszeichen vor der Übergabe an das Spooler-Programm voran.

-M  Funktioniert als Option für troff(1) , wird aber auch an eqn(1) , grap(1) und grn(1) übergeben.

-N  Verbietet Zeilenumbrüche zwischen eqn-Trennsymbolen; übergibt -N an eqn(1).

-p  Führt den Präprozessor pic(1) aus.

-P Arg
    Übergibt Arg an den Postprozessor. Falls mehrere Arg benötigt werden, übergeben Sie jede mit einer getrennten Option -P. groff stellt Arg kein Options-Minuszeichen vor der Übergabe an den Postprozessor voran.

-R  Führt den Präprozessor refer(1) aus. Es wird kein Mechanismus zum Weiterreichen von Argumenten an ihn zur Verfügung gestellt, weil die meisten Optionen von refer gleichwertige Sprachelemente haben, die innerhalb des Dokuments angegeben werden können.

-s  Führt den Präprozessor soelim(1) aus.

-S  Aktiviert den sicheren Modus und ignoriert nachfolgende Option -U. groff übergibt die Option -U an pic(1) und troff(1).

-t  Führt den Präprozessor tbl(1) aus.

-T Gerät
    Bereitet die Ausgabe für das Gerät Gerät vor. groff übergibt die Option -T und dessen Argumente an troff(1) und führt dann (außer die Option -Z wird verwandt) einen Ausgabetreiber aus, um die Ausgabe von troff(1) in eine Form umzuwandeln, die für Gerät geeignet ist; siehe den nachfolgenden Unterabschnitt »Ausgabegeräte«.

-U  Arbeitet im unsicheren Modus. Übergibt die Option -U an pic(1) und troff(1).

--version
-v
    Schreibt Versionsinformationen von groff und allen Programmen, die es ausführt, in den Standardausgabedatenstrom; dass heißt, die angegebene Befehlszeile wird auf die übliche Weise verarbeitet, wobei dem Formatierer und allen aufgerufenen Prä- und Postprozessoren -v übergeben wird.

-V  Gibt die Befehlssequenz, die von groff ausgeführt würde, in den Standardausgabedatenstrom aus und beendet sich. Wenn dies mehr als einmal angegeben wird, wird groff die Befehlssequenz sowohl in den Standardfehlerdatenstrom ausgeben als auch ausführen.

-X  Verwendet gxditview(1) anstelle des üblichen Postprozessors, um ein Dokument (vorab) auf einer X11-Anzeige zu betrachten. Wenn diese Option mit »-Tps« kombiniert wird, dann werden die Schriftmetriken des PostScript-Geräts verwandt, während die Optionen »-T X75«, »-T X75-12«, »-T X100« und »-T X100-12« die Metriken der X11-Schriften verwenden.

-Z  Deaktiviert das Postprocessing. troff(1) -Ausgabe erscheint in dem Standardausgabedatenstrom (außer dies wird mit -z unterdrückt); siehe groff_out(5) für eine Beschreibung dieses Formats.

  Transparente Optionen
Folgende Optionen werden unverändert an das Formatierprogramm troff(1) weitergegeben und detaillierter in dessen Handbuchseite beschrieben.

-a  Erstellt eine ungefähre Näherung der Schriftsatzausgabe als reinen Text.

-b  Schreibt bei jedem Fehler oder jeder Warnung eine Ablaufverfolgung (Backtrace) in die Standardfehlerausgabe.

-c  Startet mit deaktivierter Farbe.

-C  Aktiviert den AT&T- troff(1) -Kompatibilitätsmodus; impliziert -c.

-d cText
-d Zeichenkette=Text
    Definiert eine Zeichenkette.

-E  Verhindert Fehlermeldungen von troff(1) ; impliziert -Ww.

-f Fam
    Legt die Standard-Schriftfamilie fest.

-F Verz
    Sucht im Verzeichnis Verz nach dem ausgewählten Ausgabegeräteverzeichnis mit Geräte- und Schriftbeschreibungsdateien.

-i  Verarbeitet die angegebenen Eingabedateien vor der Standardeingabe.

-I Verz
    Durchsucht Verz nach Eingabedateien.

-m Mak
    Liest das Makropaket Mak vor der Eingabe. groff übergibt die Option -m und dessen Argumente an eqn(1) , grap(1) und grn(1)

-M Verz
    Durchsucht Verzeichnis Verz nach Makrodateien. groff übergibt die Option -M und dessen Argumente an eqn(1) , grap(1) und grn(1)

-n Num
    Beginnt die Seitennummerierung bei Num.

-o Liste
    Gibt nur Seiten aus Liste aus.

-r cnumerischer_Ausdruck
-r Register=numerischer_Ausdruck
    Definiert ein Register.

-S  Aktiviert den sicheren Modus und ignoriert nachfolgende Option -U.

-U  Arbeitet im unsicheren Modus.

-w Kat
-W Kat
    Aktiviert bzw. verhindert die Ausgabe von Warnungen der Kategorie Kat.

-z  Unterdrückt formatierte, geräteunabhängige Ausgabe von troff(1).

Aufruf
Die Architektur des GNU- roff(7) -Systems folgt der anderer geräteunabhängiger roff(7) -Implementierungen. Sie besteht aus Präprozessoren, Makropaketen, Ausgabetreibern (oder »Postprozessoren«) und einer Sammlung von Hilfswerkzeugen mit zentral dem Formatierer troff(1) Siehe roff(7) für eine Übersicht darüber, wie ein Roff-System funktioniert.

Die im GNU- roff(7) -System verfügbaren Frontend-Programme erleichtern die Verwendung gegenüber traditionellen roff(7) -Systemen, die die Erstellungen von Befehlsfolgen oder die Verwendung temporärer Dateien benötigen, um die Quellen von der wartbaren Form in die Geräte-bereite Ausgabe zu bringen. Die nachfolgende Erörterung fasst die Bestandteile des GNU- roff(7) -Systems zusammen. Es ergänzt roff(7) mit groff-spezifischen Funktionen.

  Erste Schritte
Wer das Lernen durch Experimente bevorzugt oder den Wunsch hat, schnelle Rückmeldungen vom System zu bekommen, möchte vielleicht mit einem »Hello, world!«-Dokument anfangen.

    $ echo "Hello, world!" | groff -Tascii | sed '/^$/d'
    Hello, world!

Der sed(1) -Befehl wurde nur verwandt, um die 65 leeren Zeilen zu beseitigen, die andernfalls das Terminalfenster geflutet hätten. ( roff(7) -Systeme wurden zu Zeiten von papierbasierten Terminals mit 66 Zeilen pro Seite entwickelt.)

Heutige Benutzer könnten die Ausgabe auf ein UTF-8-fähiges Terminal bevorzugen.

    $ echo "Hello, world!" | groff -Tutf8 | sed '/^$/d'

Die Erstellung von PDF, HTML oder TeXs DVI ist auch unkompliziert. Der schwierige Teil könnte die Auswahl eines Betrachtungsprogramms für die Ausgabe sein.

    $ echo "Hello, world!" | groff -Tpdf > hello.pdf
    $ evince hello.pdf
    $ echo "Hello, world!" | groff -Thtml > hello.html
    $ firefox hello.html
    $ echo "Hello, world!" | groff -Tdvi > hello.dvi
    $ xdvi hello.dvi

  Verwendung von groff als eine REPL
Benutzer mit Programmiererfahrung mögen sich freuen, dass sie groff in einer Lese-Auswert-Ausgabe-Schleife (REPL) verwenden können. Dies kann praktisch sein, um das eigene Verständnis des Verhaltens des Formatierers oder der von ihm verstandenen Syntax zu bestätigen. Einschalten aller Warnungen mit -ww kann hierbei helfen.

    $ groff -ww -Tutf8
    \# Dies ist ein Kommentar. Definieren wir ein Register.
    .nr a 1
    \# Ganzzahlarithmetik mit Operatoren erfolgt von links nach rechts.
    .nr b \n[a]+5/2
    \# Lassen Sie uns das Ergebnis auf dem Standard-Datenfehlerstrom ausgeben.
    .tm \n[b]
    3
    \# Jetzt definieren wir eine Zeichenkette.
    .ds name Leslie\" So können Kommentare auch erfolgen.
    .nr b (\n[a] + (7/2))
    \# Den Text der nächsten zwei Eingabezeilen zentrieren.
    .ce 2
    Hi, \*[name].
    Your secret number is \n[b].
    \# Jetzt wird erkennbar, dass die Division Richtung Null gerundet wurde.
    It is
    \# Hier ist eine If-Else-Steuerstruktur.
    .ie (\n[b] % 2) odd.
    .el even.
    \# Dieser Trick setzt die Seitenlänge auf die aktuelle vertikale Position,
    \# so dass keine leeren Zeilen ausgespuckt werden, wenn wir fertig sind.
    .pl \n[nl]u
    <Control-D>
                               Hi, Leslie.
                        Your secret number is 4.
    It is even.

  Papierformate
Das Formatierprogramm liest beim Start die Gerätebeschreibungsdatei DESC für das ausgewählte Gerät; falls dort Seitendimensionen festgelegt werden, werden diese verwandt. groffs Bauprozess konfiguriert ein Vorgabe-Seitenformat und schreibt es in DESC-Dateien des Formatierprogramms. Die Vorgabe dieser Installation ist »A4«. Falls der Datei DESC diese Information fehlt, verwenden das Formatierprogramm und der Ausgabetreiber eine Seitenlänge von »11iB« (elf Zoll) aus Kompatibilitätsgründen zum troff(1) von AT&T. Siehe groff_font(5).

Im Formatierprogramm erbittet pl Änderungen der Seitenlänge, aber Makropakete unterstützten oft keine Änderung des Papierformats innerhalb eines Dokuments. Sie könnten beispielsweise zwischen Hoch- und Querformat umschalten wollen. Makropaketen fehlt ein konsistenter Zugang zu der Konfigruation von Papierformat-abhängigen Parametern. Einige, wie ms, profitieren von der Präambel in dem Dokument vor dem ersten Makroaufruf, während andere, wie mm, stattdessen die Festlegung von Registern auf der Befehlszeile oder anderweitig, bevor seine Makrodatei ausgewertet wird, benötigen, um die Papierdimensionen zu konfigurieren.

Ausgabetreiber für Schriftsatzprogramme erkennen auch Befehlszeiloptionen -p, um die Standardseitendimensionen außer Kraft zu setzen und -l, um Querformat zu verwenden. Die Handbuchseite des Ausgabetreibers, wie grops(1), könnte hilfreich sein.

groffs Befehlszeilenoption »-d paper« ist eine bequeme Möglichkeit, das Papierformat zu setzen; siehe groff_tmac(5). Kombinieren Sie dies mit geeigneten Optionen -P für den Ausgabetreiber, um die Vorgaben außer Kraft zu setzen. Der folgende Befehl formatiert PostScript auf A4-Papier im Querformat:

        $ groff -T ps -d paper=a4l -P -pa4 -P -l -ms my.ms >my.ps

  Frontend
Das Programm groff umhüllt troff(1), wodurch Präprozessoren mittels Befehlszeilenoption angegeben und geeignete Ausgabetreiber für das ausgewählte Ausgabegerät ausgeführt werden können. Dieser Komfort vermeidet die manuelle Zusammenstellung von Bearbeitungssequenzen oder die Verwaltung temporärer Dateien, die von Benutzern traditioneller roff(7) -Systeme verlangt wird. Verwenden Sie grog(1) , um die korrekte groff-Befehlszeile zur Formatierung eines Dokuments abzuleiten.

  Sprache
Eingabe für ein roff(7) -System ist eine reine Textdatei, in der die Steuerzeilen und Maskiersequenzen eingeschoben sind. Die Kombination bildet ein Dokument in einer der Sprachfamilien, die auch roff(7) genannt werden, siehe roff(7) Hintergrundinformationen. Ein Überblick über Sprachsyntax und -funktionalitäten von roff(7) , einschließlich der vollständigen Liste unterstützter Maskiersequenzen, Anfragen und vordefinierter Register kann in groff(7) gefunden werden. GNU roff(7) -Erweiterungen zur AT&T- troff(1) -Sprache, eine gemeinsame Teilmenge der noch bestehenden roff(7) -Dialekte, werden in groff_diff(7) im Detail beschrieben.

  Präprozessoren
Ein Präprozessor interpretiert eine domänenspezifische Sprache, die Ausgabe in der Sprache roff(7) erzeugt. Häufig wird solche Eingabe auf Abschnitte oder Bereiche einer roff(7) -Eingabe beschränkt (durch Makroaufrufe, die spezifisch für jeden Präprozessor sind, eingeklammert), die dadurch ersetzt werden. Präprozessoren interpretieren daher eine Teilmenge der roff(7) -Syntax zusammen mit ihrer eigenen Sprache. GNU roff(7) stellt Neuimplementierungen der meisten den Benutzern von AT&T troff(1) vertrauten Präprozessoren bereit. Diese haben regelmäßig erweiterte Funktionalitäten und/oder benötigen GNU- troff(1) , um ihre Ausgabe zu formatieren.

    tbl | ordnet Tabellen an
    eqn | setzt Mathematik
    pic | zeichnet Diagramme
    refer | verarbeitet Literaturverweise
    soelim | bearbeitet »eingelesene« Eingabedateien vor
    grn | stellt Diagramme dar
    chem | zeichnet chemische Struturformeln mittels pic
    gperl | füllt groff- Register und Zeichenketten mittels
    glilypond | bettet LilyPond- Notenblätter ein
    gpinyin | erleichtert die Eingabe von chinesischem Mandarin mittels Hanyu Pinyin

Ein nur bei GNU roff(7) verfügbarer Präprozessor ist preconv(1) , der diverse Eingabekodierungen in eine für GNU troff(1) verständliche konvertiert. Wird dieser verwandt, dann wird er vor allen anderen Präprozessoren ausgeführt.

Die meisten Präprozessoren schließen den Inhalt zwischen einem Paar von charakteristischen Merkmalen ein. Jedes solches Merkmal muss am Anfang der Eingabezeile vorkommen und den Punkt als Steuerzeichen verwenden. Leerzeichen und Tabulatoren dürfen dem Steuerzeichen nicht folgen oder vor dem Ende der Eingabezeile sein. Wird von diesen Regeln abgewichen, dann kann der Präprozessor diese Merkmale nicht mehr erkennen. Merkmale werden im Allgemeinen in der Präprozessorausgabe beibehalten und durch troff(1) nachfolgend als Makros interpretiert. Der Präprozessor ideal ist in groff noch nicht verfügbar.

Präprozessor | Anfangsmerkmal | Endemerkmal
chem | .cstart | .cend
eqn | .EQ | .EN
grap | .G1 | .G2
grn | .GS | .GE
ideal | .IS | .IE
 |  | .IF
pic | .PS | .PE
 |  | .PF
 |  | .PY
refer | .R1 | .R2
tbl | .TS | .TE
glilypond | .lilypond start | .lilypond stop
gperl | .Perl start | .Perl stop
gpinyin | .pinyin start | .pinyin stop

  Makropakete
Makrodateien sind roff(7)-Eingabedateien und so entwickelt, dass sie selbst keine Ausgabe produzieren, sondern die Erstellung anderer roff(7)-Dokumente vereinfachen. Wenn eine Makrodatei an einem Standardort installiert wurde und für die Verwendung durch die Allgemeinheit geeignet ist, dann heißt sie Makropaket.

Die Option -m lädt ein Makropaket vor jedem roff(7)-Eingabedokument und nach der Durchführung aller Zeichenketten- und Registerzuweisungen durch die Optionen -d und -r. Das GNU- roff(7) -System implementiert die bekanntesten Makropakete für AT&T troff(1) auf eine kompatible Art und erweitert sie. Diese haben ein- oder zweibuchstabige Namen, die von der intensiven Durchführung der Namensökonomie der frühen Unix-Kultur stammen, ein prägnanter Ansatz, der zur Kennzeichnung vieler Pakete in der allgemeinen Anwendung führt, wobei der nroff(1) - und -Optionsbuchstabe zu ihrem Aufruf führte. Manchmal ergab das Wortspiele, wie bei »man« (kurz für »manual« (Handbuch)) und selbst mit dem Optionsstrich, wie im Falle des Pakets s, besser bekannt als ms oder sogar -ms.

Makropakete dienen einer Reihe von Zwecken. Manche sind »vollumfängliche« Pakete, die neben anderen grundsätzlichen Aufgaben die Verantwortung für Seitenlayout übernehmen und ihr eigenes Lexikon an Makros zum Dokumentenaufbau definieren. Jedes dieser Pakete steht alleine und ein bestimmtes Dokument kann davon höchstens eines nutzen.

an  wird zum Aufbau von Handbuchseiten in dem aus Version 7 Unix (1979) stammenden Format verwandt; siehe groff_man(7) Es kann auf der Befehlszeile mit -man angegeben werden.

doc wird zum Aufbau von Handbuchseiten in dem aus 4.3BSD-Reno (1990) stammenden Format verwandt; siehe groff_mdoc(7). Es kann auf der Befehlszeile mit -mdoc angegeben werden.

e   ist die Allzweck-Makrosammlung aus Berkeley, entwickelt als Alternative zu AT&Ts s; siehe groff_me(7) Es kann auf der Befehlszeile mit -me angegeben werden.

m   implemetiert das von der AT&A-Makrosammlung der zweiten Generation für allgemeine Dokumente verwandte Format, ein Nachfolger von s; siehe groff_mm(7). Es kann auf der Befehlszeile mit -mm angegeben werden.

om  (immer »mom« genannt) ist ein von Peter Schaffter speziell für GNU- roff(7) geschriebenes modernes Paket. Im mom-HTML-Handbuch (file:///usr/share/doc/groff-base/html/mom/toc.html) finden Sie eine ausführliche Dokumentation. Sie – mom hat die weibliche Anrede – kann auf der Befehlszeile als -mom angegeben werden.

s   ist das ursprüngliche Allzweck-Dokumentenformat von AT&T; siehe groff_ms(7). Es kann auf der Befehlszeile mit -ms angegeben werden.

Andere sind ergänzend. Zum Beispiel ist andoc ein Wrapper-Paket speziell für GNU- roff(7) , das erkennt, ob das Dokument das man- oder das mdoc-Format benutzt, und das entsprechende Makropaket lädt. Es kann auf der Befehlszeile mit -mandoc angegeben werden. Ein man(1) -Bibliotheksprogramm kann diese Makrodatei dazu verwenden, das Laden des korrekten Makropakets zu delegieren. Es ist daher für man selbst nicht notwendig, den Inhalt eines Dokumentes zu durchsuchen, um das Problem zu entscheiden.

Viele Makropakete erweitern die Funktion der vollumfänglichen Pakete oder von roff(7) -Dokumenten, die solch ein Paket nicht einsetzen – letztere werden manchmal als »roh« charakterisiert. Diese Hilfspakete werden zusammen mit Details der Makrodatei-Benennung und -Ablage in groff_tmac(5) beschrieben.

  Formatierer
Der Formatierer, das Programm, das die Eingabe der Sprache roff(7) interpretiert, ist troff(1) Er bietet die Funktionalitäten der AT&T troff(1) und nroff(1) sowie viele Erweiterungen. Die Befehlszeilenoption -C schaltet troff(1) in den Kompatibilitätsmodus, der versucht, das klassische roff(7) so gut wie praktisch möglich zu emulieren, um das Formatieren von Dokumenten, die für ältere Systeme geschrieben wurden, zu ermöglichen.

Ein Shellskript, nroff(1) , emuliert das Verhalten des klassischen AT&T nroff. Es versucht, die Ausgabe korrekt basierend auf der Locale zu kodieren, entlastet den Benutzer davon, das Ausgabegerät mit der Option -T anzugeben und ist daher für die Verwendung als Terminalausgabegerät praktisch, wie das im nächsten Unterabschnitt beschrieben wird.

GNU troff(1) erstellt die Ausgabe in einer Geräte-unabhängigen aber dennoch Geräte-wahrnehmenden Seitenbeschreibungssprache, die in groff_out(5) ausführlich beschrieben wird.

  Ausgabegeräte
Die Ausgabe von troff(1) wird für ein bestimmtes Ausgabegerät formatiert, das typischerweise über die Option -T des Formatierers oder eines Frontends bestimmt wird. Falls weder diese Option noch die Umgebungsvariable GROFF_TYPESETTER verwandt wird, ist das Vorgabegerät ps. Ein Ausgabegerät kann eines der folgenden sein:

ascii
    für Teminals, die den Zeichensatz und die -kodierung ISO/IEC 646:1991 IRV verwenden, die auch als US-ASCII bekannt ist.

dvi für das DVI-Format von TeX.

html
xhtml
    für HTML- bzw. XHTML-Ausgabe.

latin1
    für Terminals, die den Zeichensatz und -kodierung ISO Latin-1 (8859-1) verwenden.

lbp für CaPSL-Drucker von Canon (Laserdrucker der Serien LBP-4 und LBP-8).

lj4 für HP-LaserJet4- oder andere PCL5-kompatible Drucker.

pdf für PDF-Ausgabe.

ps  für PostScript-Ausgabe.

utf8
    für Terminals, die den Zeichensatz ISO/IEC 10646 (»Unicode«) in der UTF-8-Kodierung verwenden.

X75 zur Vorschau mittels gxditview(1) in einer Auflösung von 75 DPI und einer Basistypgröße von 10 Punkt.

X75-12
    zur Vorschau mittels gxditview(1) in einer Auflösung von 75 DPI und einer Basistypgröße von 12 Punkt.

X100
    zur Vorschau mittels gxditview(1) in einer Auflösung von 100 DPI und einer Basistypgröße von 10 Punkt.

X100-12
    zur Vorschau mittels gxditview(1) in einer Auflösung von 100 DPI und einer Basistypgröße von 12 Punkt.

  Postprozessoren
Jedes Programm, das die Ausgabe von GNU- troff(1) interpretiert, ist ein Postprozessor. Die durch GNU- roff(7) bereitgestellten Postprozessoren sind Ausgabetreiber, die ein Dokument zum Anschauen oder Drucken vorbereiten. Postprozessoren für andere Zwecke, wie Seitenumsortierung oder statistische Messungen in einem Dokument, sind denkbar.

Jeder Ausgabetreiber unterstützt ein oder mehrere Ausgabegeräte, von denen jedes seine eigene Gerätebeschreibungsdatei hat. Ein Gerät bestimmt seinen Postprozessor mit der Direktive postpro in seiner Gerätebeschreibungsdatei, siehe groff_font(5). Die Option -X setzt diese Auswahl außer Kraft und führt dazu, dass gxditview(1) als Ausgabetreiber agiert.

grodvi(1)
stellt dvi bereit.

    grohtml(1)
stellt html und xhtml bereit.

    grolbp(1)
stellt lbp bereit.

    grolj4(1)
stellt lj4 bereit.

    gropdf(1)
stellt pdf bereit.

    grops(1)
stellt ps bereit.

    grotty(1)
stellt ascii, latin1 und utf8 bereit.

    gxditview(1)
stellt X75, X75-12, X100 und X100-12 bereit und kann zusätzlich
    eine Vorschau von ps durchführen.

  Werkzeuge
GNU roff(7) enthält eine Sammlung von Hilfswerkzeugen.

gdiffmk(1)
kennzeichnet die Unterschiede zweier
    roff(7) -Eingabedateien.

    grog(1)
leitet den groff-Befehl ab, den ein Dokument benötigt.

Eine Reihe von Hilfswerkzeugen bereiten Schriftbeschreibungen vor, und ermöglichen es dem Formatierer, sie bei der Erstellung der Ausgabe für ein bestimmtes Gerät zu verwenden.

addftinfo(1)
fügt Informationen zu AT&T-troff-Schriftbeschreibungsdateien hinzu, damit
    diese mit GNU- troff(1) genutzt werden können.

    afmtodit(1)
erstellt Schriftbeschreibungsdateien für PostScript-Type-1-Schriften.

    pfbtops(1)
übersetzt eine PostScript-Typ-1-Schrift aus dem Format PFB (Printer Font
    Binary) in PFA (Printer Font ASCII), das dann von afmtodit(1) interpretiert werden kann.

    hpftodit(1)
erstellt Schriftbeschreibungsdateien für die Famile der HP LaserJet 4-Drucker.

    tfmtodit(1)
erstellt Schriftbeschreibungsdateien für das TeX-DVI-Gerät.

    xtotroff(1)
erstellt Schriftbeschreibungsdateien für X-Windows-System-Kernschriften.

Ein Werkzeugtrio, das mit der Präprozessorsprache roff(7) erstelltes Material in graphische Bilddateien umwandelt.

eqn2graph(1)
wandelt eine eqn-Gleichung in ein zugeschnittenes Bild um.

    grap2graph(1)
wandelt ein pic-Diagramm in ein zugeschnittenes Bild um.

    pic2graph(1)
wandelt ein pic-Diagramm in ein zugeschnittenes Bild um.

Eine weitere Gruppe an Programmen arbeitet mit bibliographischen Datendateien, die vom Präprozessor refer(1) verwandt werden.

indxbib(1)
erstellt invertierte Indizes für bibliographische Datenbanken, beschleunigt
    Nachschlageaktionen auf ihnen.

    lkbib(1)
durchsucht die Datenbanken.

    lookbib(1)
durchsucht die Datenbanken interaktiv.

Rückgabewert
groff beendet sich erfolgreich mit Status 0, falls einer der Optionen -h oder --help angegeben wird, mit Status 2, falls das Programm seine Befehlszeilenargumente nicht interpretieren kann und Status 1, falls es auf einen Fehler während der Aktionen trifft. Andernfalls führt groff eine Befehlssequenz zur Verarbeitung seiner Eingabe aus; falls sich alle Befehle innerhalb der Befehlssequenz erfolgreich beenden, macht groff dies auch. Falls nicht, kodiert der Exit-Status von groff eine Zusammenfassung der aufgetretenen Probleme; dabei wird Bit 2 gesetzt, falls sich ein Programm mit einem Fehlerstatus beendete, Bit 3, falls ein Programm durch ein Signal beendet wurde und Bit 4, falls ein Befehl nicht ausgeführt werden konnte. (Falls daher alle drei Unglücksfälle der Befehlssequenz widerfahren würden, würde sich groff mit dem Status 2^2 + 2^3 + 2^4 = 4+8+16 =28 beenden.) Um Fehler bei Problemen in der Sequenz zu untersuchen, könnte der erneute Aufruf von groff mit der Option -V hilfreich sein und dabei die berichtete Befehlssequenz in separate Stufen herunterzubrechen und dann den von jedem Befehl ausgegebenen Exit-Status und die Diagnosemeldungen zu untersuchen.

Umgebung
Umgebungsvariablen auf dem Hauptsystem betreffen das Verhalten von durch groff bereitgestellten Programmen wie folgt: Normalerweise ist in Umgebungsvariablen, die mit PATH enden, das Trennzeichen für Pfadangaben der Doppelpunkt; dies kann abhängig vom Betriebssystem variieren. Zum Beispiel nutzt Windows stattdessen ein Semikolon.

GROFF_BIN_PATH
    groff-Befehle werden in diesen Verzeichnissen gefunden, gefolgt von denen in PATH. Falls nicht gesetzt, wird das Installationsverzeichnis der GNU- roff(7) -Programme /usr/bin vor PATH durchsucht.

GROFF_COMMAND_PREFIX
    Wendet ein Präfix auf bestimmte GNU-roff-Befehle an. groff kann zum Kompilierungszeitpunkt so konfiguriert werden, dass es Präfixe an Programmnamen anwendet, die es bereitstellt und für die es Gegenstücke in AT&T troff(1) gibt, so dass Namenskollisionen zur Laufzeit vermieden werden. Das Standardpräfix ist leer.

    Wird es verwandt, ist dieses Präfix typischerweise der Buchstabe »g«. Beispielsweise würde GNU- troff(1) als gtroff installiert. Neben troff(1) gilt das Präfix auch für die Formatier-Wrapper nroff(1) , den Präprozessoren eqn, grn, pic, refer, tbl und soelim(1) und die Hilfswerkzeuge indxbib(1) und lookbib(1).

GROFF_ENCODING
    Gibt die angenommene Zeichensatzkodierung der Eingabe an. groff übergibt seine Werte als Argumente an die Option -e des Präprozessors preconv(1) Die Existenz dieser Variablen impliziert die Option -k von groff. Falls gesetzt aber leer führt groff preconv(1) ohne eine Option -e aus. Die Option -K von groff setzt GROFF_ENCODING außer Kraft.

GROFF_FONT_PATH
    Sucht nach dem Verzeichnis der Geräte- und Schriftbeschreibungsdateien für das gewählte Ausgabegerät in dieser Liste von Verzeichnissen. Siehe troff(1) und groff_font(5).

GROFF_TMAC_PATH
    Sucht Makropakete in dieser Liste von Verzeichnissen. Siehe troff(1) und groff_tmac(5).

GROFF_TMPDIR
    Erstellt temporäre Dateien in diesem Verzeichnis. Falls nicht gesetzt, aber TMPDIR gesetzt ist, wird letzteres stattdessen verwandt. Auf Windows-Systemen werden die Umgebungsvariablen TMP und TEMP (in dieser Reihenfolge) auch überprüft, falls keine der vorangegangenen gesetzt ist. Andernfalls werden temporäre Dateien in /tmp erstellt. Die Befehle refer(1) , grohtml(1) und grops(1) verwenden temporäre Dateien.

GROFF_TYPESETTER
    Setzt das Standard-Ausgabegerät. Falls leer oder nicht gesetzt wird ps verwandt. Die Option -T setzt GROFF_TYPESETTER außer Kraft.

SOURCE_DATE_EPOCH
    Erklärt einen Zeitstempel (ausgedrückt in Sekunden seit der Unix-Epoch), der als Ausgabeerstellungszeitstempel anstelle der aktuellen Zeit verwandt werden soll. Die Zeit wird beim Start des Formatierers mittels gmtime(3) und asctime(3) in eine menschenlesbare Form umgewandelt und in Registern für die Verwendung durch Dokumente und Makropakete gespeichert.

TZ  Erklärt die bei der Umwandlung der aktuellen Zeit in eine menschenlesbare Form zu verwendende Zeitzone; siehe tzset(3). Falls SOURCE_DATE_EPOCH verwandt wird, wird sie immer unter Annahme von UTC in menschenlesbare Form konvertiert.

Beispiele
roff(7) -Systeme sind am besten für die Formatierung von Handbuchseiten bekannt. Ein man(1) -Bibliotheksprogramm, das eine Handbuchseite gefunden hat, könnte es den Befehl groff darstellen.
        groff -t -man -Tutf8 /usr/share/man/man1/groff.1
Das Bibliotheksprogramm wird auch die Ausgabe mittels Pipe an ein Seitenbetrachtungsprogramm weiterleiten, das die Terminal-Maskiersequenzen, die groff für Fettdruck, Unterstreichen, Kursiv oder Hyperverlinkung ausgibt, nicht interpretieren könnte, siehe den nachfolgenden Abschnitt »Beschränkungen«.

Um eine roff(7) -Datei mittels der Präprozessoren tbl und pic sowie dem Makropaket me zu verarbeiten wie dies Benutzer des klassischen AT&T- roff(7) gewohnt sind, muss eine Befehlssequenz geschrieben (oder geskriptet) werden.

        pic foo.me | tbl | troff -me -Tutf8 | grotty

Mittels groff kann diese Pipe auf den entsprechenden Befehl gekürzt werden.

        groff -p -t -me -T utf8 foo.me

Ein einfachere Möglichkeit, dies zu erreichen, ist grog(1) zu verwenden, um den Präprozessor und die Makrooptionen zu erraten, und das Ergebnis durch Verwendung der Befehlssubstitutionsfunktionalität der Shell auszuführen.

        $(grog -Tutf8 foo.me)

Jede Befehlszeilenoption an einen Postprozessor muss mit der benötigten Anzahl an einleitenden Bindestrichen »-« angegeben werden, da groff die Argumente unverändert an den Postprozessor weitergibt; dies ermöglicht die Übergabe einer beliebigen Anzahl an Argumenten. Um zum Beispiel einen Titel an den Postprozessor gxditview weiterzureichen, sind die Shell-Befehle
        groff -X -P -title -P 'Probelauf' mydoc.t
und
        groff -X -Z mydoc.t | gxditview -title 'Probelauf' -
äquivalent.

Beschränkungen
Bei der seitenweisen Anzeige für die Geräte ascii, latin1 und utf8 könnten Programme wie more(1) und less(1) Befehlszeilenoptionen benötigen, um bestimmte Terminal-Maskiersequenzen korrekt zu handhaben; siehe grotty(1).

Installationsverzeichnisse
GNU groff installiert Dateien an verschiedene Stellen, abhängig von seiner Konfiguration zum Zeitpunkt der Kompilierung. Auf dieser Installation werden die folgenden Orte verwandt:

/etc/X11/app-defaults
    Application defaults directory for gxditview(1).

/usr/bin
    Verzeichnis, das die ausführbaren Befehle von groff enthält

/usr/share/groff/1.24.1/eign
    Liste häufiger Wörter für indxbib(1)

/usr/share/groff/1.24.1
    Verzeichnis für Datendateien

/usr/dict/papers/Ind
    Vorgabeindex für lkbib(1) und refer(1)

/usr/share/doc/groff-base
    Dokumentationsverzeichnis

/usr/share/doc/groff-base/examples
    Beispielverzeichnis

/usr/share/groff/1.24.1/font
    Schriftenverzeichnis

/usr/share/doc/groff-base/html
    HTML-Dokumentationsverzeichnis

/usr/lib/font
    Veraltetes Verzeichnis für Schriftarten

/usr/share/groff/site-font
    Lokales Schriftartenverzeichnis

/usr/share/groff/site-tmac
    Lokales Verzeichnis für Makropakete (tmac-Dateien)

/usr/share/groff/1.24.1/tmac
    Verzeichnis für Makropakete (tmac-Dateien)

/usr/share/groff/1.24.1/oldfont
    Schriftartenverzeichnis für die Kompatibilität mit älteren Versionen von groff; siehe grops(1)

/usr/share/doc/groff-base/pdf
    PDF-Dokumentationsverzeichnis

  Makroverzeichnis von groff
Die meisten durch GNU- roff(7) bereitgestellten Makropakete sind in /usr/share/groff/1.24.1/tmac für die Installation entsprechend dieses Dokuments gespeichert. Als grundsätzliche Regel gilt, dass mehrere Verzeichnisse nach Makrodateien durchsucht werden; siehe %troff(1) Sie finden in groff_tmac(5) einen Katalog an von GNU roff(7) bereitgestellten Makrodateien.

  groff-Geräte- und Schriftbeschreibungsverzeichnis
Von GNU roff(7) bereitgestellte Geräte- und Schriftbeschreibungsdateien sind in /usr/share/groff/1.24.1/font bei einer Installation entsprechend dieses Dokuments gespeichert. Als grundsätzliche Regel gilt, dass mehrere Verzeichnisse nach Geräte- und Schriftbeschreibungsdateien durchsucht werden; siehe troff(1). Zu den Formaten dieser Dateien siehe groff_font(5).

Verfügbarkeit
Sie erhalten Links zu groff-Veröffentlichungen zum Herunterladen, seinem Quell-Depot, Diskussions-Mailinglisten, eine Unterstützungs-Problemdatenbank und weitere Informationen auf der groff-Seite der GNU-Website (http://www.gnu.org/software/groff).

Eine freie Implementierung des Präprozessors grap, geschrieben von Ted Faber (faber@lunabase.org) kann auf der grap-Website (http://www.lunabase.org/~faber/Vault/software/grap/) gefunden werden. groff unterstützt nur dieses grap.

Autoren
groff (sowohl die Frontend-Befehle als auch das Gesamtsystem) wurde primär von James Clark (jjc@jclark.com) geschrieben. Zu diesem Dokument haben auch Clark, Trent A. Fisher Werner Lemberg (wl@gnu.org) , Bernd Warken (groff-bernd.warken-72@web.de) und G. Branden Robinson (g.branden.robinson@gmail.com) beigetragen.

Siehe auch
Groff: Die GNU-Implementierung von Troff, von Trent A. Fisher und Werner Lemberg, ist das primäre groff-Handbuch. Sie können es interaktiv mit »info groff« lesen.

Es folgt eine Liste aller groff-Handbuchseiten. Einige ( grohtml(1) , gropdf(1) , gxditview(1) und xtotroff(1) ) werden nicht verfügbar sein, falls das entsprechende Programm während der Kompilierung deaktiviert wurde.

Einführung, Geschichte und weitere Lektüre:
    roff(7)

Betrachter für groff- (und geräteunabhängige AT&T-
    troff(1) -)Dokumente: gxditview(1)

Präprozessoren:
    chem(1), eqn(1), neqn(1), glilypond(1), grn(1), preconv(1), gperl(1), pic(1), gpinyin(1), refer(1), soelim(1), tbl(1)

Makropakete:
    groff_hdtbl(7), groff_man(7), groff_man_style(7), groff_mdoc(7), groff_me(7), groff_mm(7), groff_mmse(7) (nur in Schwedischen Locales), groff_mom(7), groff_ms(7), groff_rfc1345(7), groff_trace(7), groff_www(7)

Verwaltungswerkzeuge für bibliographische Datenbanken:
    indxbib(1), lkbib(1), lookbib(1)

Sprache, Konventionen und GNU-Erweiterungen:
    groff(7), groff_char(7), groff_diff(7), groff_font(5), groff_tmac(5)

Geräte-unabhängige Seitenbeschreibungssprache:
    groff_out(5)

Formatierprogramm:
    troff(1)

Formatierer-Wrapper:
    nroff(1), mmroff(1), pdfmom(1)

Postprozessoren für Ausgabegeräte:
    grodvi(1), grohtml(1), grolbp(1), grolj4(1), gropdf(1), grops(1), grotty(1)

Hilfswerkzeuge für die Schrift-Unterstützung:
    addftinfo(1), afmtodit(1), hpftodit(1), pfbtops(1), tfmtodit(1), xtotroff(1)

Hilfswerkzeuge für die Graphikumwandlung:
    eqn2graph(1), grap2graph(1), pic2graph(1)

Hilfswerkzeuge für die Darstellung von Unterschieden:
    gdiffmk(1)

Hilfswerkzeug »groff guess«:
    grog(1)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Florian Rehnisch <fr@fm-r.eu>, Frank Stähr <der-storch-85@gmx.net>, Mario Blättermann <mario.blaettermann@gmail.com>, Dr. Tobias Quathamer <toddy@debian.org> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).