So verwenden Sie Troff zum Formatieren von PDF-Dokumenten unter Linux
Troff ist ein minimaler, aber leistungsstarker Dokumententextprozessor für Linux-Systeme. Es ermöglicht Ihnen, auf einfache Weise druckfertige Dokumente zu erstellen, indem Sie Quelldateien über die Befehlszeile kompilieren. Im Gegensatz zu LaTeX ist Troff unglaublich leicht und auf den meisten Linux-Systemen vorinstalliert. Dieses Tutorial zeigt Ihnen, wie Sie mit Troff PDF-Dokumente in Ubuntu formatieren.
Was ist Troff und warum sollte man es verwenden?
Im Grunde genommen ist Troff ein Textverarbeitungsprogramm, das codeähnliche Skripte in druckbare Dokumente umwandelt. Anders als Textverarbeitungsprogramme setzt Troff nicht auf das „WYSIWYG“-Paradigma. Stattdessen müssen Sie bestimmte Arten von Code verwenden, um Ihre Formatierung zu handhaben.
Einer der größten Vorteile dieses Ansatzes ist die Einfachheit. Eine Basisinstallation von Troff enthält alles, was Sie zum Erstellen eines Dokuments benötigen. Außerdem bedeutet das Fehlen einer grafischen Benutzeroberfläche, dass Sie ein Dokument sogar über SSH erstellen können.
Troff installieren
Troff ist in den meisten Linux-Distributionen oft standardmäßig gebündelt. Sie können überprüfen, ob Sie es in Ihrem System haben, indem Sie sein -h
Flag ausführen. Dadurch wird eine kurze Liste aller Flags angezeigt, die Ihre Troff-Installation akzeptiert.
troff -h
Es gibt Fälle, in denen Distributionen Troff nicht standardmäßig bündeln. In diesem Fall können Sie es installieren, indem Sie nach dem Paket „groff“ suchen.
Dies ist eine Neuimplementierung der Programme Troff und Nroff durch das GNU-Projekt, die eine Reihe neuer und moderner Funktionen enthält.
Sie können groff in Ubuntu mit dem folgenden Befehl installieren:
sudo apt install groff
Erstellen Sie Ihr erstes Troff-Dokument
Ähnlich wie Quellcode ist jedes Troff-Dokument eine Textdatei, die Anweisungen enthält, wie ein Dokument erstellt wird. Dazu gehören die Seiten- und Randbreite sowie der Buchstaben- und Seitenabstand.
Diese Ebene der Kontrolle ermöglicht es Ihnen, das Programm zu manipulieren, um jede Art von Dokument zu erstellen. Um dies zu vereinfachen, haben die Entwickler von Troff „Makros“ erstellt, die diese Befehle zu einer einfacheren Syntax verdichten.
Eines der häufigsten Makros, die Sie in Troff verwenden werden, ist „ms“. Es wird ein Dokument in einem Artikelstil erstellt. Sie können ein MS-Dokument erstellen, indem Sie den touch
Befehl verwenden:
touch my-first-document.ms
Da alle Troff-Dokumente Text sind, können Sie Ihr Dokument mit einem Texteditor öffnen. In meinem Fall verwende ich vim. Alternativ können Sie einen dieser Texteditoren für Linux verwenden.
vim my-first-document.ms
Das Troff-Format verstehen
Alle Troff-Dokumente folgen einer ähnlichen Struktur. Jeder von Ihnen vorgenommene Formatierungsbefehl muss sich in einer separaten Zeile in dem Inhalt befinden, den er zu formatieren versucht. Ein typisches Troff-Dokument sieht also etwa so aus:
.COMMAND1
This is a piece of content in a Troff document.
.COMMAND2
This is a different piece of content in a Troff document.
Zwei der grundlegendsten Befehle, die Sie in ms verwenden werden, sind .TL
und .PP
. Ersteres konvertiert Ihren Text in einen Titel und zentriert ihn in Ihrem Dokument, während letzteres Ihren Text so formatiert, dass er einem absatzähnlichen Stil folgt.
Der folgende Auszug verwendet beispielsweise sowohl die Befehle .TL
als auch :.PP
.TL
My First Troff Document
.PP
This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.
Erstellen Sie von hier aus Ihr Dokument, indem Sie Ihre Datei an das Troff-Programm übergeben.
groff -ms -Tpdf. /my-first-document.ms > output.pdf
Erstellen von fettem, kursivem und unterstrichenem Text
Genau wie ein normales Textverarbeitungsprogramm bieten die meisten Troff-Makros eine Reihe von Stilbefehlen, um Ihr Dokument anzupassen. Für ms sind dies .B
, .I
, .UL
und .BX
.
- Der
.B
Befehl ändert den Text in Fettdruck. - Der
.I
Befehl ändert den Text in Kursivschrift. -
.UL
und.BX
sind Befehle, die Ihren Text unterstreichen bzw. umrahmen.
Ähnlich wie bei den obigen Befehlen müssen Sie bei der Verwendung dieser Befehle in Ihrem Dokument jeden Stil in einer eigenen Zeile trennen:
.TL
My First Troff Document
.PP
This is
.B
content
.R
that I want to look like a paragraph in my final document. [...]
In diesem Beispiel habe ich eine neue Zeile vor dem Wort „Inhalt“ erstellt und den .B
Befehl hinzugefügt, um es in Fettdruck zu ändern, dann eine neue Zeile erstellt und den .R
Befehl hinzugefügt. Damit kehrt Troff zu seinem früheren Stil zurück.
Es ist wichtig zu beachten, dass Sie den Befehl immer hinzufügen müssen, .R
wenn Sie den Stil ändern. Beispielsweise beendet der folgende Auszug den .I
Befehl nicht, da Troff kein .R
dahinter sah:
.TL
My First Troff Document
.PP
This is
.I
content
that I want to look like a paragraph in my final document. [...]
Erstellen neuer Dokumentabschnitte
Ähnlich wie LaTeX unterstützt Troff auch die Erkennung von Abschnitten und Hierarchien, sodass Sie beim Bearbeiten nicht die Ebene der einzelnen Überschriften anordnen und anpassen müssen.
Um einen neuen Abschnitt in Ihrem Dokument zu erstellen, verwenden Sie den .NH
Befehl gefolgt vom Namen Ihrer Überschrift.
.TL
My First Troff Document
.NH
My First Heading
.PP
This is content that I want to look like a paragraph in my final document.
Standardmäßig hat jeder Troff-Header einen Ebenenwert, der bestimmt, wie das Programm seinen Inhalt strukturiert und im endgültigen Dokument anzeigt. Wenn Sie das wissen, können Sie diesen Wert ändern, um die Ebene für eine Überschrift anzupassen.
Im Folgenden wird beispielsweise eine Überschrift der Ebene 2 direkt unter ihrem übergeordneten Element erstellt:
.TL
My First Troff Document
.NH
My First Heading
.NH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.
Abgesehen von normal nummerierten Kopfzeilen kann Troff auch leere Kopfzeilen erstellen, die weiterhin der Ebenenhierarchie des Dokuments folgen.
Ersetzen Sie dazu .NH
durch den .SH
Befehl:
.TL
My First Troff Document
.SH
My First Heading
.SH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.
Erstellen von Listen in Troff
Die Einfachheit von Troff ermöglicht es Ihnen auch, sein Verhalten so zu biegen, wie Sie es brauchen. Beispielsweise sind Listen weder in Troff- noch in MS-Makros standardmäßig vorhanden. Trotzdem können Sie eine Liste erstellen, indem Sie einige ms-Befehle kombinieren.
Jede Liste in Troff besteht aus drei Teilen: einem Einzug, einem Aufzählungspunkt und dem Inhalt. Verwenden Sie zum Erstellen des Einzugs die Befehle .RS
und . .RE
Diese verschieben die aktuelle Einzugsebene von Text darin um vier Leerzeichen.
.RS
This is my first item.
.RE
Erstellen Sie als Nächstes das Aufzählungszeichen für Ihr Listenelement, indem Sie verwenden .IP
. Dies ist der Befehl „Absatz einrücken“, der den linken Rand Ihres Textes auf eine bestimmte Breite festlegt.
Mit dem .IP
Befehl können Sie auch einen benutzerdefinierten Aufzählungspunkt und den Abstand zwischen ihm und Ihrem Text festlegen. In diesem Fall setze ich mein Aufzählungszeichen auf „[1]“ und gebe ihm vier Leerzeichen.
.RS
.IP [1] 4
This is my first item.
.RE
Kopieren Sie nun Ihren .IP
Befehl und fügen Sie ihn ein, um zusätzliche Listenelemente zu erstellen.
.RS
.IP [1] 4
This is my first item.
.IP [2] 4
This is my second item.
.IP [3] 4
This is my third item.
.RE
Automatisieren Sie schließlich diesen Prozess, indem Sie ein benutzerdefiniertes Makro erstellen. Zum Beispiel bindet der folgende Auszug meinen .IP
Befehl an .QW
:
.de QW
.IP [-] 4
..
.RS
.QW
This is my first item.
.QW
This is my second item.
.QW
This is my third item.
.RE
Erstellen von Tabellen mit Präprozessoren in Troff
Eine Besonderheit von Troff ist, dass die meisten seiner Funktionen als „Präprozessoren“ existieren. Zum größten Teil handelt es sich dabei um Binärdateien außerhalb des Programms, die funktionieren, indem sie „Präprozessor-Containerskripte“ erstellen und diese in Low-Level-Troff-Code konvertieren.
Tbl ist ein großartiges Beispiel für einen Troff-Präprozessor. Es ist ein Programm, das Tabellen in einem Dokument verwaltet. Ein einfacher Tbl-Container sieht etwa so aus:
.TS
allbox ;
c c c.
item1 <Tab> item2 <Tab> item3
item4 <Tab> item5 <Tab> item6
.TE
- Die Befehle
.TS
und.TE
teilen Tbl mit, dass dies eine Umgebung ist, die es lesen kann. - Die zweite Zeile teilt dem Programm mit, wie diese Tabelle zu formatieren ist.
- Die dritte Zeile ist ein durch Leerzeichen getrenntes Feld, das die Anzahl der Spalten und ihre Ausrichtung in Ihrer Tabelle vorgibt.
- Die vierte und fünfte Zeile sind tabulatorgetrennte Felder, die den Inhalt Ihrer Tabelle enthalten.
Das Kompilieren eines Dokuments mit Tbl unterscheidet sich geringfügig von einer normalen Troff-Datei. Laden Sie zuerst Ihre Datei:
tbl my-first-document.ms > preprocessed.ms
Geben Sie als Nächstes die Ausgabe des Programms an Troff weiter:
groff -ms -Tpdf. /preprocessed.ms > output.pdf
Automatisieren Sie schließlich diesen Prozess, indem Sie UNIX-Pipes verwenden:
tbl my-first-document.ms | groff -ms -Tpdf > output.pdf
Häufig gestellte Fragen
Ist es möglich, Troff unter Windows zu verwenden?
Standardmäßig sind weder Troff noch Groff offiziell auf Windows portiert. Trotzdem können Sie Groff weiterhin zusammen mit anderen GNU-Dienstprogrammen verwenden, indem Sie das Windows-Subsystem für Linux installieren.
Hat Troff eine Bibliografie-Tracking-Funktion?
Ja. Refer
ist ein einfacher Präprozessor, der eine externe Bibliografiedatei verwendet, um Verweise in einem Troff-Dokument automatisch zu verfolgen. Sie können mehr darüber erfahren, wie es funktioniert, indem Sie die Handbuchseite besuchen, indem Sie ausführen man refer
.
Wie kann ich den Fehler „missing DESC“ beim Kompilieren von Troff beheben?
Dieses Problem ist höchstwahrscheinlich auf eine fehlende Abhängigkeit in Ihrem System oder eine nicht übereinstimmende Versionsdatei zurückzuführen. Um dies zu beheben, installieren Sie das richtige groff-Paket aus dem Repository Ihrer Distribution.
Bildnachweis : Simon Hattinga Verscheure über Unsplash . Alle Änderungen und Screenshots von Ramces Red.
Schreibe einen Kommentar