Scroll to navigation

groff(1) General Commands Manual 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 Textdateien als Eingabe liest und die enthaltenen Formatierungsbefehle verwendet, um Ausgaben in PostScript, PDF, HTML, DVI 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 des Schriftsatzprogramms aus AT&T Unix und aufgrund seiner langen Verbindung mit Unix-Handbüchern (einschließlich der Handbuchseiten) auf den meisten POSIX-Systemen vorhanden. Zusammen mit seinen Vorgängern ist es bemerkenswert für die Erstellung mehrerer Bestseller über Software-Engineering. groff ist in der Lage, typographisch fortgeschrittene Dokumente zu erstellen und dabei minimale Systemressourcen zu verwenden.

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.

Setzt die von preconv(1) verwandte Rückfalleingabekodierung auf Kod; impliziert -k.
Führt den Präprozessor eqn(1) aus.
Führt den Präprozessor grn(1) aus.
Führt den Präprozessor grap(1) aus; impliziert -p.
Funktioniert wie die Option von troff(1) (siehe unten), impliziert aber auch -g and -s. Sie wird an soelim(1) und den Ausgabetreiber weitergegeben und grn(1) wird die Option -M mit Verz als sein Argument übergeben.
Führt den Präprozessor chem(1) aus; impliziert -p.
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.
Setzt die von preconv(1) verwandte Eingabekodierung auf Arg; impliziert -k.
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.
Ü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.
Funktioniert als Option für troff(1) , wird aber auch an eqn(1) , grap(1) und grn(1) übergeben.
Verbietet Zeilenumbrüche zwischen eqn-Trennsymbolen; übergibt -N an eqn(1).
Führt den Präprozessor pic(1) aus.
Ü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.
Führt den Präprozessor refer(1) aus. Es wird kein Mechanismus zum Weiterreichen von Argumenten an refer zur Verfügung gestellt, weil die meisten Optionen von refer gleichwertige Sprachelemente haben, die innerhalb des Dokuments angegeben werden können.
Führt den Präprozessor soelim(1) aus.
Arbeitet im Modus mit »erweiterter Sicherheit«, siehe -U weiter unten für das Gegenteil. Aus Sicherheitsgründen ist der Modus mit erweiterter Sicherheit standardmäßig aktiviert.
Führt den Präprozessor tbl(1) aus.
Weist troff(1) an, die Eingabe für das Ausgabegerät Gerät zu formatieren. groff ruft dann den Ausgabetreiber auf, um die Ausgabe von troff(1) in eine Form umzuwandeln, die für Gerät geeignet ist; siehe den nachfolgenden Unterabschnitt »Ausgabegeräte«.
Arbeitet im unsicheren Modus; übergibt die Option -U an pic(1) und troff(1).
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.
Gibt die Befehlssequenz, die von groff ausgeführt würde, in den Standardausgabedatenstrom aus, führt sie aber nicht aus. Wenn dies mehr als einmal angegeben wird, wird groff die Befehlssequenz sowohl ausgeben als auch ausführen.
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 -TX75 und -TX100 die Metriken der X11-Schriften verwenden.
Deaktiviert das Postprocessing. troff(1) -Ausgabe wird in dem Standardausgabedatenstrom erscheinen (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.

Erstellt eine ungefähre Näherung der Schriftsatzausgabe als reinen Text.
Schreibt bei jedem Fehler oder jeder Warnung eine Ablaufverfolgung (Backtrace) in die Standardfehlerausgabe.
Startet mit deaktivierter Farbe.
Aktiviert den AT&T- troff(1) -Kompatibilitätsmodus; impliziert -c.
Definiert eine Zeichenkette.
Verhindert Fehlermeldungen von troff(1) ; impliziert -Ww.
Legt die Standard-Schriftfamilie fest.
Sucht im Verzeichnis Verz nach dem ausgewählten Ausgabegeräteverzeichnis mit Geräte- und Schriftbeschreibungsdateien.
Verarbeitet die angegebenen Eingabedateien vor der Standardeingabe.
Durchsucht Verz nach Eingabedateien.
Verarbeitet Name.tmac vor Eingabedateien.
Durchsucht Verzeichnis Verz nach Makrodateien.
Gibt der ersten Seite die Nummer Num.
Gibt nur Seiten aus Liste aus.
Definiert ein Register.
Aktiviert (-w) oder verhindert (-W) die Ausgabe von Warnungen der Kategorie Name.
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«), einer Sammlung von Hilfswerkzeugen und 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.html

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

In GNU- roff(7) werden die Seitengrößen für den Formatierer troff(1) und für die Ausgabegeräte getrennt behandelt. Im Formatierer werden Anfragen zum Setzen der Seitenlänge (.pl), des Seitenversatzes (oder linken Randes, .po) und der Zeilenlänge (.ll) verwandt. Der rechte Rand wird nicht explizit konfiguriert; die Kombination aus Seitenversatz und Zeilenlänge stellt die zur Ableitung notwendigen Informationen bereit. Das automatisch von troff(1) geladene Makropaket papersize stellt eine Schnittstelle für die Konfiguration der Seitendimensionen über bequeme Namen bereit, wie »letter« oder »A4«, siehe groff_tmac(5) In dieser Installation ist die Vorgabe des Formatierers »A4«.

Es obliegt jedem Makropaket, die auf diese Art konfigurierten Seitendimensionen zu berücksichtigen. Einige bieten alternative Mechanismen.

Für jedes Ausgabegerät kann die Größe des Ausgabemediums in seiner DESC-Datei gesetzt werden. Die meisten Ausgabetreiber erkennen auch eine Befehlszeilenoption -p, um die Standarddimensionen außer Kraft zu setzen und eine Option -l, um Querformat zu verwenden. Siehe groff_font(5) für eine Beschreibung der Direktive papersize, die ein Argument der gleichen Form wie bei -p akzeptiert. Die Handbuchseite des Ausgabetreibers, wie grops(1), könnte auch hilfreich sein. groff verwendet die Befehlszeilenoption -P, um Optionen an die Ausgabegeräte weiterzugeben. Verwenden Sie beispielsweise folgendes für die Postscript-Ausgabe auf A4-Papier im Querformat:

groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
    

Frontend

Das groff-Programm ist ein Wrapper um das troff(1) -Programm. Es ermöglicht die Angabe von Präprozessoren mittels Befehlszeilenoption und führt automatisch den für das ausgewählte Ausgabegerät geeigneten Postprozessor aus. Damit kann die manuelle Zusammenstellung von Bearbeitungssequenzen oder die Verwaltung temporärer Dateien vermieden werden, die von Benutzern traditioneller roff(7) -Systeme verlangt wird. Verwenden Sie das Programm 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) -Datei 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
gremlin(1)
chem . zeichnet chemische Struturformeln mittels pic
gperl füllt groff- Register und Zeichenketten mittels
perl(1)
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.

Makropakete können vor allen roff(7) -Eingabedokumenten mit der Option -m geladen werden. 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.

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.
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.
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.
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.
(immer »mom« genannt) ist ein von Peter Schaffter speziell für GNU- roff(7) geschriebenes modernes Paket. Im mom-HTML-Handbuch finden Sie eine ausführliche Dokumentation. Sie – mom hat die weibliche Anrede – kann auf der Befehlszeile als -mom angegeben werden.
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:

für Teminals, die den Zeichensatz und die -kodierung ISO/IEC 646:1991 IRV verwenden, die auch als US-ASCII bekannt ist.
für Terminals, die den Zeichensatz und die -kodierung der IBM-Codeseite 1047 verwenden.
für das DVI-Format von TeX.
für HTML- bzw. XHTML-Ausgabe.
für Terminals, die den Zeichensatz und -kodierung ISO Latin-1 (ISO/IEC 8859-1) verwenden.
für CaPSL-Drucker von Canon (Laserdrucker der Serien LBP-4 und LBP-8).
für HP-LaserJet4- oder andere PCL5-kompatible Drucker.
für PDF-Ausgabe.
für PostScript-Ausgabe.
für Terminals, die den Zeichensatz ISO/IEC 10646 (»Unicode«) in der UTF-8-Kodierung verwenden.
zur Vorschau mittels gxditview(1) in einer Auflösung von 75 DPI und einer Basistypgröße von 10 Punkt.
zur Vorschau mittels gxditview(1) in einer Auflösung von 75 DPI und einer Basistypgröße von 12 Punkt.
zur Vorschau mittels gxditview(1) in einer Auflösung von 100 DPI und einer Basistypgröße von 10 Punkt.
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, cp1047, 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 mit einem Fehlerstatus, falls es beim Auswerten seiner Argumente ein Problem gab und mit einem erfolgreichen Status, falls entweder die Option -h oder --help angegeben wurde. 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 0 gesetzt, falls sich ein Programm mit einem Fehlerstatus beendete, Bit 1, falls ein Programm durch ein Signal beendet wurde und Bit 2, falls ein Befehl nicht ausgeführt werden konnte. (Falls daher alle drei Unglücksfälle die Befehlssequenz betreffen würden, würde sich groff mit dem Status 2^0 + 2^1 + 2^2 = 1+2+4 = 7 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

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.

Dieser Suchpfad, gefolgt von PATH, wird zum Auffinden von Befehlen, die von groff ausgeführt werden, genutzt. Falls er nicht gesetzt ist, wird das Installationsverzeichnis der GNU- roff(7) -Programme /usr/bin vor PATH durchsucht.
GNU roff(7) kann zum Kompilierungszeitpunkt so konfiguriert werden, dass es Präfixe an Programmnamen anwendet, die es bereitstellt und für die es ein Gegenstück 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 der Präfix auch für die Formatierer nroff(1) , den Präprozessoren eqn, grn, pic, refer, tbl und soelim(1) und die Hilfswerkzeuge indxbib(1) und lookbib(1).
Der Wert dieser Variable wird an die Option -e des Präprozessors preconv(1) übergeben, um die Zeichenkodierung der Eingabedateien auszuwählen. Die Existenz dieser Variablen impliziert die Option -k von groff. Falls gesetzt aber leer ruft groff preconv(1) ohne eine Option -e auf. Die Option -K von groff setzt GROFF_ENCODING außer Kraft.
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).
Sucht Makrodateien in dieser Liste von Verzeichnissen. Siehe troff(1) und groff_tmac(5).
Erstellt temporäre Dateien in diesem Verzeichnis. Falls diese Variable nicht, aber die Umgebungsvariable TMPDIR gesetzt ist, werden temporäre Dateien stattdessen dort erstellt. 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.
Setzt das Standard-Ausgabegerät. Falls leer oder nicht gesetzt wird ps verwandt. Die Option -T setzt GROFF_TYPESETTER außer Kraft.
Ein 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.
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. Sobald ein man(1) -Bibliotheksprogramm eine Handbuchseite gefunden hat, kann es den Befehl groff ganz ähnlich wie folgt aufrufen:

groff -t -man -Tutf8 /usr/share/man/man1/groff.1
Das Bibliotheksprogramm wird auch die Ausgabe mittels Pipe an ein Seitenbetrachtungsprogramm weiterleiten, das die SGR-Terminal-Maskiersequenzen, die groff für Fettdruck, Unterstreichen und Kursiv 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
    

Bei 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 Gedankenstrichen »-« 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, cp1047, 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).

In EBCDIC-Umgebungen wie OS/390 Unix sind die Ausgabegeräte ascii und latin1 nicht verfügbar. Umgekehrt ist das Gerät cp1047 auf Systemen, die auf den Zeichenkodierungsnormen ISO/IEC 646 oder ISO/IEC 8859 basieren, nicht verfügbar.

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.23.0/eign
Liste häufiger Wörter für indxbib(1)
/usr/share/groff/1.23.0
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.23.0/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.23.0/tmac
Verzeichnis für Makropakete (tmac-Dateien)
/usr/share/groff/1.23.0/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.23.0/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.23.0/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.

Eine freie Implementierung des Präprozessors grap, geschrieben von Ted Faber kann auf der grap-Website gefunden werden. groff unterstützt nur dieses grap.

Autoren

groff (sowohl die Frontend-Befehle als auch das Gesamtsystem) wurde primär von James Clark geschrieben. Zu diesem Dokument haben auch Clark, Trent A. Fisher Werner Lemberg , Bernd Warken und G. Branden Robinson 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.

roff(7)
troff(1) -)Dokumente: gxditview(1)
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 und paketspezifische Hilfswerkzeuge:
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), mmroff(1), groff_mom(7), pdfmom(1), groff_ms(7), groff_rfc1345(7), groff_trace(7), groff_www(7)
indxbib(1), lkbib(1), lookbib(1)
groff(7), groff_char(7), groff_diff(7), groff_font(5), groff_tmac(5)
Sprache der Zwischenausgabe:
groff_out(5)
troff(1)
Formatierer-Wrapper:
nroff(1), pdfroff(1)
Postprozessoren für Ausgabegeräte:
grodvi(1), grohtml(1), grolbp(1), grolj4(1), gropdf(1), grops(1), grotty(1)
addftinfo(1), afmtodit(1), hpftodit(1), pfbtops(1), tfmtodit(1), xtotroff(1)
eqn2graph(1), grap2graph(1), pic2graph(1)
gdiffmk(1)
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 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.

4. Juli 2024 Groff 1.23.0