1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
.TH DITROFF 7 "7 February 2022" "groff 1.22.4"
.SH NAME
ditroff \- classical device-independent roff
.
.
.\" ====================================================================
.\" Legal Terms
.\" ====================================================================
.\"
.\" Copyright (C) 2001-2018 Free Software Foundation, Inc.
.\"
.\" This file is part of groff, the GNU roff type-setting system.
.\"
.\" Permission is granted to copy, distribute and/or modify this
.\" document under the terms of the GNU Free Documentation License,
.\" Version 1.3 or any later version published by the Free Software
.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
.\" and with no Back-Cover Texts.
.\"
.\" A copy of the Free Documentation License is included as a file
.\" called FDL in the main directory of the groff source package.
.
.
.\" ====================================================================
.SH DESCRIPTION
.\" ====================================================================
.
The name
.I ditroff
refers to a historical development stage of the
.IR roff (7)
text processing system.
.
In
.I roff
systems extant today, the name
.I troff
is a synonym for
.IR ditroff .
.
.
.P
Early versions of
.I roff
by Joe Ossanna generated two programs from the same sources,
using conditional compilation to distinguish them.
.
.I nroff
produced text-oriented TTY output, while
.I troff
generated graphical output for exactly one output device, the
Wang Graphic Systems CAT phototypesetter.
.
.
.P
In 1979, Brian Kernighan rewrote
.I troff
to support more devices by creating an intermediate output format for
.I troff
that could be fed into postprocessor programs which actually do the
printout on the device.
.
Kernighan's version marks what is known as \(lqclassical troff\(rq
today.
.
In order to distinguish it from Ossanna's original version, it was
called
.I ditroff
.RI ( d "evice " i "ndependent " t roff)
on some systems, though this naming isn't mentioned in the classical
documentation.
.
.
.P
Today, all existing
.I roff
systems are based on Kernighan's multi-device
.IR troff .
.
The distinction between
.I troff
and
.I ditroff
is no longer necessary; each modern
.I troff
provides the complete functionality of
.IR ditroff .
.
.
.P
The easiest way to use
.I ditroff
is via the GNU
.I roff
system,
.IR groff .
.
The
.IR groff (1)
program is a wrapper around
.I (di)troff
that automatically handles device postprocessing.
.
.
.\" ====================================================================
.SH AUTHORS
.\" ====================================================================
.
This document was written by
.MT groff\-bernd.warken\-72@\:web.de
Bernd Warken
.ME .
.
.
.\" ====================================================================
.SH "SEE ALSO"
.\" ====================================================================
.
.TP
CSTR\~#54
refers to the 1992 revision of the
.I Nroff/Troff User's Manual
by J.\& F.\& Ossanna and Brian Kernighan.
.
.
.TP
CSTR\~#97
refers to
.IR "A Typesetter-independent TROFF" ,
by Brian Kernighan and is the original documentation of the first
multi-device
.I troff
.RI ( ditroff ).
.
.
.TP
.IR roff (7)
provides a history and conceptual overview of
.I roff
systems.
.
.
.TP
.IR troff (1)
describes the GNU implementation of
.IR (di)troff .
.
.
.TP
.IR groff (1)
documents the GNU
.I roff
program and includes pointers to further documentation about
.IR groff .
.
.
.TP
.IR groff_out (5)
describes the
.I groff
version of the intermediate output language, the basis for
multi-device output.
.
.
.\" ====================================================================
.\" Editor settings
.\" ====================================================================
.
.\" Local Variables:
.\" mode: nroff
.\" fill-column: 72
.\" End:
.\" vim: set filetype=groff textwidth=72:
|