5754 prtconf: assertion failure in libpcidb if vendor cannot be looked up
[illumos-gate.git] / usr / src / man / man5 / tbl.5
blobfe142208e8e6e08a4d2df3a1324bb108983327fe
1 .\"
2 .\" Permission to use, copy, modify, and distribute this software for any
3 .\" purpose with or without fee is hereby granted, provided that the above
4 .\" copyright notice and this permission notice appear in all copies.
5 .\"
6 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
8 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
10 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
12 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
13 .\"
14 .\"
15 .\" Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
16 .\" Copyright 2012 Nexenta Systems, Inc. All rights reserved.
17 .\"
18 .Dd Sep 3, 2011
19 .Dt TBL 5
20 .Os
21 .Sh NAME
22 .Nm tbl
23 .Nd tbl language reference for mandoc
24 .Sh DESCRIPTION
25 The
26 .Nm tbl
27 language is a table-formatting language.
28 It is used within
29 .Xr mdoc 5
30 and
31 .Xr man 5
32 .Ux
33 manual pages.
34 This manual describes the subset of the
35 .Nm
36 language accepted by the
37 .Xr mandoc 1
38 utility.
39 .Pp
40 Tables within
41 .Xr mdoc 5
43 .Xr man 5
44 are enclosed by the
45 .Sq TS
46 and
47 .Sq TE
48 macro tags, whose precise syntax is documented in
49 .Xr roff 5 .
50 Tables consist of a series of options on a single line, followed by the
51 table layout, followed by data.
52 .Pp
53 For example, the following creates a boxed table with digits centred in
54 the cells.
55 .Bd -literal -offset indent
56 \&.TS
57 tab(:) box;
58 c5 c5 c5.
59 1:2:3
60 4:5:6
61 \&.TE
62 .Ed
63 .Pp
64 When formatted, the following output is produced:
65 .Bd -filled -offset indent -compact
66 .TS
67 tab(:) box;
68 c5 c5 c5.
69 1:2:3
70 4:5:6
71 .TE
72 .Ed
73 .Pp
74 The
75 .Nm
76 implementation in
77 .Xr mandoc 1
79 .Ud
80 .Sh TABLE STRUCTURE
81 Tables are enclosed by the
82 .Sq TS
83 and
84 .Sq TE
85 .Xr roff 5
86 macros.
87 A table consists of an optional single line of table
88 .Sx Options
89 terminated by a semicolon, followed by one or more lines of
90 .Sx Layout
91 specifications terminated by a period, then
92 .Sx Data .
93 All input must be 7-bit ASCII.
94 Example:
95 .Bd -literal -offset indent
96 \&.TS
97 box tab(:);
98 c | c
99 | c | c.
102 \&.TE
105 Table data is
106 .Em pre-processed ,
107 that is, data rows are parsed then inserted into the underlying stream
108 of input data.
109 This allows data rows to be interspersed by arbitrary
110 .Xr roff 5 ,
111 .Xr mdoc 5 ,
113 .Xr man 5
114 macros such as
115 .Bd -literal -offset indent
116 \&.TS
117 tab(:);
118 c c c.
119 1:2:3
120 \&.Ao
121 3:2:1
122 \&.Ac
123 \&.TE
126 in the case of
127 .Xr mdoc 5
129 .Bd -literal -offset indent
130 \&.TS
131 tab(:);
132 c c c.
133 \&.ds ab 2
134 1:\e*(ab:3
135 \&.I
136 3:2:1
137 \&.TE
140 in the case of
141 .Xr man 5 .
142 .Ss Options
143 The first line of a table consists of space-separated option keys and
144 modifiers terminated by a semicolon.
145 If the first line does not have a terminating semicolon, it is assumed
146 that no options are specified and instead a
147 .Sx Layout
148 is processed.
149 Some options accept arguments enclosed by parenthesis.
150 The following case-insensitive options are available:
151 .Bl -tag -width Ds
152 .It Cm center
153 This option is not supported by
154 .Xr mandoc 1 .
155 This may also be invoked with
156 .Cm centre .
157 .It Cm delim
158 Accepts a two-character argument.
159 This option is not supported by
160 .Xr mandoc 1 .
161 .It Cm expand
162 This option is not supported by
163 .Xr mandoc 1 .
164 .It Cm box
165 Draw a single-line box around the table.
166 This may also be invoked with
167 .Cm frame .
168 .It Cm doublebox
169 Draw a double-line box around the table.
170 This may also be invoked with
171 .Cm doubleframe .
172 .It Cm allbox
173 This option is not supported by
174 .Xr mandoc 1 .
175 .It Cm tab
176 Accepts a single-character argument.
177 This character is used as a delimiter between data cells, which otherwise
178 defaults to the tab character.
179 .It Cm linesize
180 Accepts a natural number (all digits).
181 This option is not supported by
182 .Xr mandoc 1 .
183 .It Cm nokeep
184 This option is not supported by
185 .Xr mandoc 1 .
186 .It Cm decimalpoint
187 Accepts a single-character argument.
188 This character will be used as the decimal point with the
189 .Cm n
190 layout key.
191 .It Cm nospaces
192 This option is not supported by
193 .Xr mandoc 1 .
195 .Ss Layout
196 The table layout follows
197 .Sx Options
198 or a
199 .Sq \&T&
200 macro invocation.
201 Layout specifies how data rows are displayed on output.
202 Each layout line corresponds to a line of data; the last layout line
203 applies to all remaining data lines.
204 Layout lines may also be separated by a comma.
205 Each layout cell consists of one of the following case-insensitive keys:
206 .Bl -tag -width Ds
207 .It Cm c
208 Centre a literal string within its column.
209 .It Cm r
210 Right-justify a literal string within its column.
211 .It Cm l
212 Left-justify a literal string within its column.
213 .It Cm n
214 Justify a number around its last decimal point.
215 If the decimal point is not found on the number, it's assumed to trail
216 the number.
217 .It Cm s
218 Horizontally span columns from the last
219 .No non- Ns Cm s
220 data cell.
221 It is an error if spanning columns follow a
222 .Cm \-
224 .Cm \(ba
225 cell, or come first.
226 This option is not supported by
227 .Xr mandoc 1 .
228 .It Cm a
229 Left-justify a literal string and pad with one space.
230 .It Cm ^
231 Vertically span rows from the last
232 .No non- Ns Cm ^
233 data cell.
234 It is an error to invoke a vertical span on the first layout row.
235 Unlike a horizontal spanner, you must specify an empty cell (if it not
236 empty, the data is discarded) in the corresponding data cell.
237 .It Cm \-
238 Replace the data cell (its contents will be lost) with a single
239 horizontal line.
240 This may also be invoked with
241 .Cm _ .
242 .It Cm =
243 Replace the data cell (its contents will be lost) with a double
244 horizontal line.
245 .It Cm \(ba
246 Emit a vertical bar instead of data.
247 .It Cm \(ba\(ba
248 Emit a double-vertical bar instead of data.
251 Keys may be followed by a set of modifiers.
252 A modifier is either a modifier key or a natural number for specifying
253 the minimum width of a column.
254 The following case-insensitive modifier keys are available:
255 .Cm z ,
256 .Cm u ,
257 .Cm e ,
258 .Cm t ,
259 .Cm d ,
260 .Cm b ,
261 .Cm i ,
262 .Cm r ,
264 .Cm f
266 followed by
267 .Cm b ,
268 .Cm i ,
269 .Cm r ,
270 .Cm 3 ,
271 .Cm 2 ,
273 .Cm 1
274 .Pc .
275 All of these are ignored by
276 .Xr mandoc 1 .
278 For example, the following layout specifies a centre-justified column of
279 minimum width 10, followed by vertical bar, followed by a left-justified
280 column of minimum width 10, another vertical bar, then a column
281 justified about the decimal point in numbers:
283 .Dl c10 | l10 | n
284 .Ss Data
285 The data section follows the last layout row.
286 By default, cells in a data section are delimited by a tab.
287 This behaviour may be changed with the
288 .Cm tab
289 option.
291 .Cm _
293 .Cm =
294 is specified, a single or double line, respectively, is drawn across the
295 data field.
297 .Cm \e-
299 .Cm \e=
300 is specified, a line is drawn within the data field (i.e. terminating
301 within the cell and not draw to the border).
302 If the last cell of a line is
303 .Cm T{ ,
304 all subsequent lines are included as part of the cell until
305 .Cm T}
306 is specified as its own data cell.
307 It may then be followed by a tab
308 .Pq or as designated by Cm tab
309 or an end-of-line to terminate the row.
310 .Sh COMPATIBILITY
311 This section documents compatibility between mandoc and other
313 implementations, at this time limited to GNU tbl.
315 .Bl -dash -compact
317 In GNU tbl, comments and macros are disallowed prior to the data block
318 of a table.
320 .Xr mandoc 1
321 implementation allows them.
323 .Sh SEE ALSO
324 .Xr mandoc 1 ,
325 .Xr man 5 ,
326 .Xr mandoc_char 5 ,
327 .Xr mdoc 5 ,
328 .Xr roff 5
330 .%A M. E. Lesk
331 .%T Tbl\(emA Program to Format Tables
332 .%D June 11, 1976
334 .Sh HISTORY
335 The tbl utility, a preprocessor for troff, was originally written by M.
336 E. Lesk at Bell Labs in 1975.
337 The GNU reimplementation of tbl, part of the groff package, was released
338 in 1990 by James Clark.
339 A standalone tbl implementation was written by Kristaps Dzonsons in
340 2010.
341 This formed the basis of the implementation that is part of the
342 .Xr mandoc 1
343 utility.
344 .Sh AUTHORS
345 This
347 reference was written by
348 .An Kristaps Dzonsons ,
349 .Mt kristaps@bsd.lv .