Troff
aus Wikipedia, der freien Enzyklopädie
Troff ist ein Textsatzsystem das von AT&T für das Betriebssystem Unix entwickelt wurde.
Inhaltsverzeichnis |
[Bearbeiten] Geschichte
Troff hat seinen Ursprung in einem Textverarbeitungsprogramm namens RUNOFF, geschrieben von Jerome H. Saltzer für das CTSS-Betriebssystem des MIT in der Mitte der 1960er. (Angeblich kam der Name von der damals gebräuchlichen Phrase, I'll run off a document.)
Bob Morris portierte es auf die GE 635-Architektur und nannte das Programm roff (eine Abkürzung von runoff). Es wurde als rf für die PDP-7 neu geschrieben, und zur gleichen Zeit (1969) schrieb Doug McIlroy eine erweiterte und vereinfachte Version von roff in der BCPL-Programmiersprache.
Die erste Version für Unix wurde auf einer PDP-7 entwickelt, die bei den Bell Labs stand. 1971 benötigten die Entwickler eine PDP-11, um weiter an dem Betriebssystem zu arbeiten. Um die Kosten dieses Systems zu rechtfertigen, schlugen sie vor, ein Dokumentenformatierungssystem für die AT&T-Patentdivision zu entwickeln. Dieses erste Formatierungsprogramm war eine von Joe F. Ossanna geschriebene Reimplementation von McIllroys roff.
Als sie eine flexiblere Sprache benötigten, wurde nroff (Newer 'roff'), eine neue Version von roff, geschrieben. Es hatte eine wesentlich kompliziertere Syntax, war aber die Basis für alle späteren Versionen. Als die Labs einen Graphic Systems CAT Phototypesetter bekamen, schrieb Ossanna eine Version von nroff, die ihn ansteuern konnte. Diese Version wurde troff (typesetter roff) genannt, obwohl viele spekulierten, dass es eigentlich Times roff bedeute, aufgrund der Benutzung der Times Roman-Schriftenfamilie in troff als Standardschrift.
Mit troff entwickelte sich nroff (die beide eigentlich das gleiche Programm sind), welches Ausgaben für Zeilendrucker und Computerterminals formatierte. Es konnte alles, was troff konnte, und ignorierte die Kommandos, die nicht anwendbar waren (wie Schriftartänderungen).
Unglücklicherweise hatte Ossanna troff in PDP-11-Assemblersprache geschrieben, und es produzierte ausschließlich Ausgaben für den CAT-Phototypesetter. Er schrieb es erneut in C, obwohl es inzwischen auf 7000 Zeilen vom CAT abhängigen, unkommentierten Programmcode angewachsen war. Als der CAT älter wurde und der Hersteller die Unterstützung einstellte, bekam die Notwendigkeit, dass troff andere Geräte ansteuern kann, Priorität. Ossanna starb jedoch an einem Herzinfarkt, bevor dies realisiert werden konnte.
So kam Brian Kernighan zu der Aufgabe, troff in C zu programmieren. Diese von Grund auf neu programmierte Version produzierte geräteunabhängigen Code, der sehr einfach von Treibern gelesen und in entsprechende Druckercodes übersetzt werden konnte. Diese neue Version von troff (ditroff, für device independent 'troff', genannt) hatte außerdem einige Erweiterungen wie z. B. Zeichenfunktionen.
Die troff-Programmkollektion wurde dann zur Documenter's WorkBench (DWB), und war unter ständiger Entwicklung bei den Bell Labs (die in Unix System Laboratories, USL, umbenannt wurden) bis 1994. Zu dieser Zeit übernahm SoftQuad die Pflege. Brian Kernighan entwickelte troff alleine weiter. Deshalb gibt es zur Zeit drei Varianten des Original-Bell-Labs-troff:
- Eine uralte Variante von Bill Joy, die immer noch von Sun ausgeliefert wird.
- Die SoftQuad DWB, die auf der USL DWB 2.0 von 1994 basiert.
- Die DWB 3.4 von Lucent Software Solutions (USL).
In den 1990ern ließ die Popularität der troff-Familie etwas nach, aber sie wird dennoch recht intensiv benutzt. Obwohl Troff von anderen Programmen wie Interleaf, FrameMaker und LaTeX ersetzt wurde, ist es immer noch das Standard-Format der UNIX-Dokumentation, der sogenannten Manpages.
[Bearbeiten] Features
Troff hat Kommandos zur Wahl von Schriftarten, Abständen, Absätzen, Rändern, Fußnoten und vielem mehr. Es gibt Erweiterungen, um Tabellen, Diagramme und mathematische Formeln darzustellen. Troff erwartet als Eingabe eine reine Textdatei, die mit jedem Texteditor erstellt werden kann.
Es wurden umfangreiche Makro-Pakete für unterschiedlichste Dokumentenstile entwickelt. Eine typische troff-Distribution enthält die me-Makros, um wissenschaftliche Arbeiten zu formatieren, man-Makros, um Unix-man-pages zu erstellen, und die ms-Makros für Bücher, technische Dokumentationen und Berichte.
Als sich troff weiterentwickelte, begann die Arbeit an diversen Präprozessor-Programmen, da sich in troff nicht alles einfach realisieren ließ. Diese Programme transformieren bestimmte Teile eines Dokuments in troff-Input.
Der eqn-Präprozessor machte es möglich, mathematische Formeln in sehr viel einfacherer und intuitiver Art und Weise zu bearbeiten. tbl ist ein Präprozessor zur Tabellenformatierung. Der refer-Präprozessor (und das vergleichbare Programm bib) verarbeiten Zitate in einem Dokument unter Zuhilfenahme einer bibliografischen Datenbank.
Später tauchten noch einige weitere Präprozessoren auf. Der pic-Präprozessor stellt dem Anwender eine große Anzahl von Zeichenfunktionen zur Verfügung. Der ideal-Präprozessor tut dasselbe, jedoch nach einem völlig anderen Paradigma. Der grap-Präprozessor nahm Spezifikationen für Graphen entgegen, produzierte jedoch im Gegensatz zu anderen Präprozessoren Input für den vorgenannten Präprozessor namens pic.
[Bearbeiten] Varianten
Neben nroff, das zur Formatierung von Plaintext statt zur Druckausgabe dient, existiert mit groff der GNU-Ersatz für troff und nroff (hierbei handelt es sich um Freie Software).