aesthetics  →
being  →
complexity  →
database  →
enterprise  →
ethics  →
fiction  →
history  →
internet  →
knowledge  →
language  →
licensing  →
linux  →
logic  →
method  →
news  →
perception  →
philosophy  →
policy  →
purpose  →
religion  →
science  →
sociology  →
software  →
truth  →
unix  →
wiki  →
essay  →
feed  →
help  →
system  →
wiki  →
critical  →
discussion  →
forked  →
imported  →
original  →
[ temporary import ]
please note:
- the content below is remote from Wikipedia
- it has been imported raw for GetWiki
{{about|the Unix document processing system|the command in BASIC|TROFF}}{{Distinguish|Trough (disambiguation)}}{{lowercase}}

troff ({{IPAc-en|ˈ|t|iː|r|ɒ|f}}, short for typesetter roff) is the major component of a document processing system developed by AT&T Corporation for the Unix operating system.troff features commands to designate fonts, spacing, paragraphs, margins, footnotes and more. Unlike many other text formatters, troff can position characters arbitrarily on a page, even overlapping them, and has a fully programmable input language. Separate preprocessors are used for more convenient production of tables, diagrams, and mathematics. Inputs to troff are plain text files that can be created by any text editor.Extensive macro packages have been created for various document styles. A typical distribution of troff includes the me macros for formatting research papers, man and mdoc macros for creating Unix man pages, mv macros for creating mountable transparencies, and the ms and mm macros for letters, books, technical memoranda, and reports.


troff's origins can be traced to a text-formatting program called RUNOFF, which was written by Jerome H. Saltzer for MIT's CTSS operating system in the mid-1960s. (The name allegedly came from the phrase I'll run off a document.)Bob Morris ported it to the GE 635 architecture and called the program roff (an abbreviation of runoff). It was rewritten as rf for the PDP-7, and at the same time (1969), Doug McIlroy rewrote an extended and simplified version of roff in the BCPL programming language.The first version of Unix was developed on a PDP-7 which was sitting around Bell Labs. In 1971 the developers wanted to get a PDP-11 for further work on the operating system. In order to justify the cost for this system, they proposed that they would implement a document-formatting system for the AT&T patents division{{Citation needed|date=March 2019}}. This first formatting program was a reimplementation of McIllroy's roff, written by Joe F. Ossanna.When they needed a more flexible language, a new version of roff called nroff (newer "roff") was written, which provided the basis for all future versions. When they got a Graphic Systems CAT phototypesetter, Ossanna modified nroff to support multiple fonts and proportional spacing. Dubbed troff, for typesetter roff, its sophisticated output amazed the typesetter manufacturer and confused peer reviewers, who thought that manuscripts using troff had been published before.J. F. Ossanna. Nroff/Troff User's Manual. CSTR #54, Bell Labs, 1976. Revised by B. W. Kernighan, 1992.TECHREPORT, M. D., McIlroy, Doug McIlroy, 1987,weblink A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986, CSTR, 139, Bell Labs, As such, the name troff is pronounced {{IPAc-en|ˈ|t|iː|r|ɒ|f}} rather than *{{IPAc-en|ˈ|t|r|ɒ|f}}.With troff came nroff (they were actually almost the same program), which was for producing output for line printers and character terminals. It understood everything troff did, and ignored the commands which were not applicable, e.g., font changes.Ossanna's troff was written in PDP-11 assembly language and produced output specifically for the CAT phototypesetter. He rewrote it in C, although it was now 7000 lines of uncommented code and still dependent on the CAT. As the CAT became less common, and was no longer supported by the manufacturer, the need to make it support other devices became a priority. Ossanna died before this task was completed, so Brian Kernighan took on the task of rewriting troff. The newly rewritten version produced a device-independent code which was very easy for post-processors to read and translate to the appropriate printer codes. Also, this new version of troff (often called ditroff for device independent troff) had several extensions, which included drawing functions.B. W. Kernighan. A Typesetter-Independent TROFF. CSTR #97, Bell Labs, 1981, revised March 1982. The program's documentation defines the output format of ditroff, which is used by many modern troff clones like GNU groff.The troff collection of tools (including pre- and post-processors) was eventually called Documenter's WorkBench (DWB), and was under continuous development in Bell Labs and later at the spin-off Unix System Laboratories (USL) through 1994. At that time, SoftQuad took over the maintenance, although Brian Kernighan continued to improve troff on his own. Thus, there are at least the following variants of the original Bell Labs troff in use:
  • the SoftQuad DWB, based on USL DWB 2.0 from 1994;
  • the DWB 3.4 from Lucent Software Solutions (formerly USL);
  • troff, Plan 9 edition.
While troff has been supplanted by other programs such as Interleaf, FrameMaker, and LaTeX, it is still being used quite extensively. It remains the default formatter for the UNIX documentation.The software was reimplemented as groff for the GNU system beginning in 1990. In addition, due to the open sourcing of Ancient UNIX systems, as well as modern successors such as the ditroff based open-sourced versions found on OpenSolaris and Plan 9 from Bell Labs, there are several versions of AT&T troff (CAT and ditroff-basedSee the man page of the ditroff -> postscript converter on OpenSolaris: {{man|1|dpost|OpenSolaris}}) available under various open-source licenses.


Troff includes sets of commands called macros that are run before starting to process the document. These macros include setting up page headers and footers, defining new commands, and generally influencing how the output will be formatted. The command-line argument for including a macro set is -mname, which has led to many macro sets being known as the base filename with a leading m. The standard macro sets, with leading m are:
  • man for creating manual pagesWEB, Writing and Formmating UNIX Manual Pages with -man macros,weblink, 7 May 2019, {{man|7|man|ManKier}}
  • mdoc for semantically-annotated manual pages, which are better adapted to mandoc conversion to other formats.{{man|7|mdoc|FreeBSD}}WEB, Index - Mandoc extended documentation,weblink Mandoc, 7 May 2019, mandoc is a fusion that supports both sets of manual commands.
  • me for creating research papers{{man|7|groff_me|ManKier}}
  • mm for creating memorandums{{man|7|groff_mm|ManKier}}
  • ms for creating books, reports, and technical documentation{{man|7|groff_ms|ManKier}}
A more comprehensive list of macros available is usually listed in a tmac(5) manual page.{{man|5|groff_tmac|ManKier}}


As troff evolved, since there are several things which cannot be done easily in troff, several preprocessors were developed. These programs transform certain parts of a document into troff input, fitting naturally into the use of "pipelines" in Unix — sending the output of one program as the input to another (see pipes and filters). Typically, each preprocessor translates only sections of the input file that are specially marked, passing the rest of the file through unchanged. The embedded preprocessing instructions are written in a simple application-specific programming language, which provides a high degree of power and flexibility.
  • eqn preprocessor allows mathematical formulae to be specified in simple and intuitive manner.B. W. Kernighan and Lorinda L. Cherry. A System for Typesetting Mathematics. CSTR 17, Bell Labs, May 1974.
  • tbl is a preprocessor for formatting tables.
  • refer (and the similar program bib) processes citations in a document according to a bibliographic database.
Three preprocessors provide troff with drawing capabilities by defining a domain-specific language for describing the picture.
  • pic is a procedural programming language providing various drawing functions like circle and box.B. W. Kernighan. PIC — A Graphics Language for Typesetting (Revised User Manual). CSTR 116, Bell Labs, December 1984.
  • ideal allows the drawing of pictures declaratively, deriving the picture by solving a system of simultaneous equations based on vectors and transformations described by its input.C. J. Van Wyk. IDEAL User's Manual. CSTR 103, Bell Labs, December 1981.
  • grn describes the pictures through graphical elements drawn at absolute coordinates, based on the gremlin file format defined by an early graphics workstation.grn — groff preprocessor for gremlin files weblink.
Yet more preprocessors allow the drawing of more complex pictures by generating output for pic.
  • grap draws charts, like scatter plots and histograms.J. L. Bentley and B. W. Kernighan. GRAP — A Language for Typesetting Graphs (Tutorial and User Manual). CSTR 114, Bell Labs, August 1984.
  • chem draws chemical structure diagrams.J. L. Bentley, L. W. Jelinski, and B. W. Kernighan. CHEM — A Program for Typesetting Chemical Structure Diagrams. CSTR 122, Computers and Chemistry, Bell Labs, April 1986.
  • dformat draws record-based data structures.J. L. Bentley. DFORMAT — A Program for Typesetting Data Formats. CSTR 142, Bell Labs, April 1988.


See also



External links

{{Document markup languages}}

- content above as imported from Wikipedia
- "troff" does not exist on GetWiki (yet)
- time: 10:53pm EDT - Sat, Aug 24 2019
[ this remote article is provided by Wikipedia ]
LATEST EDITS [ see all ]
Eastern Philosophy
History of Philosophy
M.R.M. Parrott