]> git.cameronkatri.com Git - mandoc.git/blob - mandoc.1
Ugly fix for `Bl' or `Bd' causing badness when nested in `Bl -hang' lists.
[mandoc.git] / mandoc.1
1 .\" $Id: mandoc.1,v 1.27 2009/07/21 15:52:41 kristaps Exp $
2 .\"
3 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
4 .\"
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
8 .\"
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 .\"
17 .Dd $Mdocdate: July 21 2009 $
18 .Dt MANDOC 1
19 .Os
20 .\" SECTION
21 .Sh NAME
22 .Nm mandoc
23 .Nd format and display UNIX manuals
24 .\" SECTION
25 .Sh SYNOPSIS
26 .Nm mandoc
27 .Op Fl V
28 .Op Fl f Ns Ar option...
29 .Op Fl m Ns Ar format
30 .Op Fl W Ns Ar err...
31 .Op Fl T Ns Ar output
32 .Op Ar infile...
33 .\" SECTION
34 .Sh DESCRIPTION
35 The
36 .Nm
37 utility formats
38 .Ux
39 manual pages for display. The arguments are as follows:
40 .Bl -tag -width Ds
41 .\" ITEM
42 .It Fl f Ns Ar option...
43 Override default compiler behaviour. See
44 .Sx Compiler Options
45 for details.
46 .\" ITEM
47 .It Fl m Ns Ar format
48 Input format. See
49 .Sx Input Formats
50 for available formats. Defaults to
51 .Fl m Ns Ar andoc .
52 .\" ITEM
53 .It Fl T Ns Ar output
54 Output format. See
55 .Sx Output Formats
56 for available formats. Defaults to
57 .Fl T Ns Ar ascii .
58 .\" ITEM
59 .It Fl V
60 Print version and exit.
61 .\" ITEM
62 .It Fl W Ns Ar err...
63 Configure warning messages. Use
64 .Fl W Ns Ar all
65 to print warnings,
66 .Fl W Ns Ar error
67 for warnings to be considered errors and cause utility
68 termination. Multiple
69 .Fl W
70 arguments may be comma-separated, such as
71 .Fl W Ns Ar error,all .
72 .\" ITEM
73 .It Ar infile...
74 Read input from zero or more
75 .Ar infile .
76 If unspecified, reads from stdin. If multiple files are specified,
77 .Nm
78 will halt with the first failed parse.
79 .El
80 .\" PARAGRAPH
81 .Pp
82 By default,
83 .Nm
84 reads
85 .Xr mdoc 7
86 or
87 .Xr man 7
88 text from stdin, implying
89 .Fl m Ns Ar andoc ,
90 and prints 78-column backspace-encoded output to stdout as if
91 .Fl T Ns Ar ascii
92 were provided.
93 .\" PARAGRAPH
94 .Pp
95 .Ex -std mandoc
96 .\" SUB-SECTION
97 .Ss Punctuation and Spacing
98 If punctuation is set apart from words, such as in the phrase
99 .Dq to be \&, or not to be ,
100 it's processed by
101 .Nm
102 according to the following rules: opening punctuation
103 .Po
104 .Sq \&( ,
105 .Sq \&[ ,
106 and
107 .Sq \&{
108 .Pc
109 is not followed by a space; closing punctuation
110 .Po
111 .Sq \&. ,
112 .Sq \&, ,
113 .Sq \&; ,
114 .Sq \&: ,
115 .Sq \&? ,
116 .Sq \&! ,
117 .Sq \&) ,
118 .Sq \&]
119 and
120 .Sq \&}
121 .Pc
122 is not preceded by whitespace.
123 .Pp
124 If the input is
125 .Xr mdoc 7 ,
126 these rules are also applied to macro arguments when appropriate.
127 .Pp
128 White-space, in non-literal (normal) mode, is stripped from input and
129 replaced on output by a single space. Thus, if you wish to preserve
130 multiple spaces, they must be space-escaped
131 .Sq \e\
132 or used in a literal display mode, e.g.,
133 .Sq \&Bd \-literal
134 in
135 .Xr mdoc 7 .
136 .\" SUB-SECTION
137 .Ss Input Formats
138 The
139 .Nm
140 utility accepts
141 .Xr mdoc 7
142 and
143 .Xr man 7
144 input with
145 .Fl m Ns Ar doc
146 and
147 .Fl m Ns Ar an ,
148 respectively. The
149 .Xr mdoc 7
150 format is
151 .Em strongly
152 recommended;
153 .Xr man 7
154 should only be used for legacy manuals.
155 .Pp
156 A third option,
157 .Fl m Ns Ar andoc ,
158 which is also the default, determines encoding on-the-fly: if the first
159 non-comment macro is
160 .Sq \&Dd
161 or
162 .Sq \&Dt ,
163 the
164 .Xr mdoc 7
165 parser is used; otherwise, the
166 .Xr man 7
167 parser is used.
168 .Pp
169 If multiple
170 files are specified with
171 .Fl m Ns Ar andoc ,
172 each has its file-type determined this way. If multiple files are
173 specified and
174 .Fl m Ns Ar doc
175 or
176 .Fl m Ns Ar an
177 is specified, then this format is used exclusively.
178 .\" .Pp
179 .\" The following escape sequences are recognised, although the per-format
180 .\" compiler may not allow certain sequences.
181 .\" .Bl -tag -width Ds -offset XXXX
182 .\" .It \efX
183 .\" sets the font mode to X (B, I, R or P, where P resets the font)
184 .\" .It \eX, \e(XX, \e[XN]
185 .\" queries the special-character table for a corresponding symbol
186 .\" .It \e*X, \e*(XX, \e*[XN]
187 .\" deprecated special-character format
188 .\" .El
189 .\" SUB-SECTION
190 .Ss Output Formats
191 The
192 .Nm
193 utility accepts the following
194 .Fl T
195 arguments:
196 .Bl -tag -width Ds
197 .It Fl T Ns Ar ascii
198 Produce 7-bit ASCII output, backspace-encoded for bold and underline
199 styles. This is the default.
200 .It Fl T Ns Ar tree
201 Produce an indented parse tree.
202 .It Fl T Ns Ar lint
203 Parse only: produce no output.
204 .El
205 .Pp
206 If multiple input files are specified, these will be processed by the
207 corresponding filter in-order.
208 .\" SUB-SECTION
209 .Ss Compiler Options
210 Default compiler behaviour may be overriden with the
211 .Fl f
212 flag.
213 .Bl -tag -width Ds
214 .It Fl f Ns Ar ign-scope
215 When rewinding the scope of a block macro, forces the compiler to ignore
216 scope violations. This can seriously mangle the resulting tree.
217 .Pq mdoc only
218 .It Fl f Ns Ar no-ign-escape
219 Don't ignore invalid escape sequences.
220 .It Fl f Ns Ar no-ign-macro
221 Do not ignore unknown macros at the start of input lines.
222 .It Fl f Ns Ar no-ign-chars
223 Do not ignore disallowed characters.
224 .It Fl f Ns Ar strict
225 Implies
226 .Fl f Ns Ar no-ign-escape ,
227 .Fl f Ns Ar no-ign-macro
228 and
229 .Fl f Ns Ar no-ign-chars .
230 .El
231 .\" PARAGRAPH
232 .Pp
233 As with the
234 .Fl W
235 flag, multiple
236 .Fl f
237 options may be grouped and delimited with a comma. Using
238 .Fl f Ns Ar ign-scope,no-ign-escape ,
239 for example, will try to ignore scope and not ignore character-escape
240 errors.
241 .\" SECTION
242 .Sh EXAMPLES
243 To page manuals to the terminal:
244 .\" PARAGRAPH
245 .Pp
246 .D1 % mandoc \-Wall,error \-fstrict mandoc.1 2>&1 | less
247 .D1 % mandoc mandoc.1 mdoc.3 mdoc.7 | less
248 .\" SECTION
249 .Sh COMPATIBILITY
250 This section summarises
251 .Nm
252 compatibility with
253 .Xr groff 1 .
254 .Pp
255 .Bl -bullet -compact
256 .It
257 In
258 .Xr groff 1 ,
259 the
260 .Sq \&Pa
261 macro does not underline when under a
262 .Sq \&It .
263 This behaves correctly in
264 .Nm .
265 .It
266 A list or display following
267 .Sq \&Ss
268 does not assert a prior vertical break, just as it doesn't with
269 .Sq \&Sh .
270 .It
271 The \-literal and \-unfilled
272 .Sq \&Bd
273 displays types are synonyms, as are \-filled and \-ragged.
274 .It
275 Words aren't hyphenated.
276 .It
277 In normal mode (not a literal block), blocks of spaces aren't preserved,
278 so double spaces following sentence closure are reduced to a single space
279 .Pq Dq French spacing .
280 .El
281 .\" SECTION
282 .Sh SEE ALSO
283 .Xr mandoc_char 7 ,
284 .Xr mdoc 7 ,
285 .Xr man 7
286 .\" SECTION
287 .Sh AUTHORS
288 The
289 .Nm
290 utility was written by
291 .An Kristaps Dzonsons Aq kristaps@kth.se .