---
name: "ditroff"
section: "7"
platform: "linux"
package: "groff"
version: "1.22.4-10"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/ditroff"
---

# ditroff(7)

classical device-independent roff

## NAME

ditroff - classical device-independent roff

## DESCRIPTION

The name *ditroff* refers to a historical development stage of the [*roff*(7)](/roff/7.md) text processing system. In *roff* systems extant today, the name *troff* is a synonym for *ditroff*.

Early versions of *roff* by Joe Ossanna generated two programs from the same sources, using conditional compilation to distinguish them. *nroff* produced text-oriented TTY output, while *troff* generated graphical output for exactly one output device, the Wang Graphic Systems CAT phototypesetter.

In 1979, Brian Kernighan rewrote *troff* to support more devices by creating an intermediate output format for *troff* that could be fed into postprocessor programs which actually do the printout on the device. Kernighan's version marks what is known as “classical troff” today. In order to distinguish it from Ossanna's original version, it was called *ditroff* (*d*evice *i*ndependent *t*roff) on some systems, though this naming isn't mentioned in the classical documentation.

Today, all existing *roff* systems are based on Kernighan's multi-device *troff*. The distinction between *troff* and *ditroff* is no longer necessary; each modern *troff* provides the complete functionality of *ditroff*.

The easiest way to use *ditroff* is via the GNU *roff* system, *groff*. The [*groff*(1)](/groff/1.md) program is a wrapper around *(di)troff* that automatically handles device postprocessing.

## AUTHORS

This document was written by Bernd Warken ⟨groff\\-bernd.warken\\-72@\\:web.de⟩.

## SEE ALSO

- CSTR #54

  refers to the 1992 revision of the *Nroff/Troff User's Manual* by J. F. Ossanna and Brian Kernighan.

- CSTR #97

  refers to *A Typesetter-independent TROFF*, by Brian Kernighan and is the original documentation of the first multi-device *troff* (*ditroff*).

- [*roff*(7)](/roff/7.md)

  provides a history and conceptual overview of *roff* systems.

- [*troff*(1)](/troff/1.md)

  describes the GNU implementation of *(di)troff*.

- [*groff*(1)](/groff/1.md)

  documents the GNU *roff* program and includes pointers to further documentation about *groff*.

- [*groff\_out*(5)](/groff_out/5.md)

  describes the *groff* version of the intermediate output language, the basis for multi-device output.
