| Linux / Unix Command: roff |
NAME
roff - concepts and history of roff typesettingDESCRIPTION
roff is the general name for a set of type-setting programs, known under names like troff, nroff, ditroff, groff, etc. A roff type-setting system consists of an extensible text formatting language and a set of programs for printing and converting to other text formats. Traditionally, it is the main text processing system of Unix; every Unix-like operating system still distributes a roff system as a core package. The most common roff system today is the free software implementation GNU roff, groff(1). The pre-groff implementations are referred to as classical (dating back as long as 1973). groff implements the look-and-feel and functionality of its classical ancestors, but has many extensions. As groff is the only roff system that is available for every (or almost every) computer system it is the de-facto roff standard today. In some ancient Unix systems, there was a binary called roff that implemented the even more ancient runoff of the Multics operating system, cf. section HISTORY. The functionality of this program was very restricted even in comparison to ancient troff; it is not supported any longer. Consequently, in this document, the term roff always refers to the general meaning of roff system, not to the ancient roff binary. In spite of its age, roff is in wide use today, for example, the manual pages on UNIX systems (man~pages/), many software books, system documentation, standards, and corporate documents are written in roff. The roff output for text devices is still unmatched, and its graphical output has the same quality as other free type-setting programs and is better than some of the commercial systems. The most popular application of roff is the concept of manual pages or shortly man pages; this is the standard documentation system on many operating systems. This document describes the historical facts around the development of the roff system; some usage aspects common to all roff versions, details on the roff pipeline, which is usually hidden behind front-ends like groff(1); an general overview of the formatting language; some tips for editing roff files; and many pointers to further readings.SEE ALSO
There is a lot of documentation on roff. The original papers on classical troff are still available, and all aspects of groff are documented in great detail.Internet sites
- troff.org
- provides an overview and pointers to all historical aspects of roff. This web site is under construction; once, it will be the major source for roff history.
- Multics
- contains a lot of information on the MIT projects, CTSS, Multics, early Unix, including runoff; especially useful are a glossary and the many links to ancient documents.
- Unix Archive
- provides the source code and some binaries of the ancient Unixes (including the source code of troff and its documentation) that were made public by Caldera since 2001, e.g. of the famous Unix version~7 for PDP-11 at the
- Developers at AT&T Bell Labs
- provides a search facility for tracking information on the early developers.
- Plan 9
- by AT&T Bell Labs.
- runoff
- stores some documents using the ancient runoff formatting language.
- CSTR Papers
- stores the original troff manuals (CSTR #54, #97, #114, #116, #122) and famous historical documents on programming.
- GNU roff
- provides the free roff implementation groff, the actual standard roff.
Historical roff Documentation
Many classical documents are still available on-line. The two main manuals of the troff language are- [CSTR~#54]
-
J. F. Osanna,
Bell Labs, 1976; revised by Brian Kernighan, 1992.
- [CSTR~#97]
- Brian Kernighan, Bell Labs, 1981, revised March 1982. The "little language" roff papers are
- [CSTR~#114]
- Jon L. Bentley and Brian W. Kernighan, Bell Labs, August 1984.
- [CSTR~#116]
- Brian W. Kernighan, Bell Labs, December 1984.
- [CSTR~#122]
- J. L. Bentley, L. W. Jelinski, and B. W. Kernighan, Bell Labs, April 1986.
Manual Pages
Due to its complex structure, a full roff system has many man pages, each describing a single aspect of roff. Unfortunately, there is no general naming scheme for the documentation among the different roff implementations. In groff, the man page groff(1) contains a survey of all documentation available in groff. On other systems, you are on your own, but troff(1) might be a good starting point.Important: Use the man command (% man) to see how a command is used on your particular computer.

