xref: /illumos-gate/usr/src/man/man7/tbl.7 (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
1*bbf21555SRichard Lowe.\"	$Id: tbl.7,v 1.37 2021/09/18 12:34:27 schwarze Exp $
2*bbf21555SRichard Lowe.\"
3*bbf21555SRichard Lowe.\" Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4*bbf21555SRichard Lowe.\" Copyright (c) 2014,2015,2017,2018,2019 Ingo Schwarze <schwarze@openbsd.org>
5*bbf21555SRichard Lowe.\"
6*bbf21555SRichard Lowe.\" Permission to use, copy, modify, and distribute this software for any
7*bbf21555SRichard Lowe.\" purpose with or without fee is hereby granted, provided that the above
8*bbf21555SRichard Lowe.\" copyright notice and this permission notice appear in all copies.
9*bbf21555SRichard Lowe.\"
10*bbf21555SRichard Lowe.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*bbf21555SRichard Lowe.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*bbf21555SRichard Lowe.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*bbf21555SRichard Lowe.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*bbf21555SRichard Lowe.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15*bbf21555SRichard Lowe.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16*bbf21555SRichard Lowe.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*bbf21555SRichard Lowe.\"
18*bbf21555SRichard Lowe.Dd $Mdocdate: September 18 2021 $
19*bbf21555SRichard Lowe.Dt TBL 7
20*bbf21555SRichard Lowe.Os
21*bbf21555SRichard Lowe.Sh NAME
22*bbf21555SRichard Lowe.Nm tbl
23*bbf21555SRichard Lowe.Nd tbl language reference for mandoc
24*bbf21555SRichard Lowe.Sh DESCRIPTION
25*bbf21555SRichard LoweThe
26*bbf21555SRichard Lowe.Nm tbl
27*bbf21555SRichard Lowelanguage formats tables.
28*bbf21555SRichard LoweIt is used within
29*bbf21555SRichard Lowe.Xr mdoc 7
30*bbf21555SRichard Loweand
31*bbf21555SRichard Lowe.Xr man 7
32*bbf21555SRichard Lowepages.
33*bbf21555SRichard LoweThis manual describes the subset of the
34*bbf21555SRichard Lowe.Nm
35*bbf21555SRichard Lowelanguage accepted by the
36*bbf21555SRichard Lowe.Xr mandoc 1
37*bbf21555SRichard Loweutility.
38*bbf21555SRichard Lowe.Pp
39*bbf21555SRichard LoweEach table is started with a
40*bbf21555SRichard Lowe.Xr mandoc_roff 7
41*bbf21555SRichard Lowe.Ic \&TS
42*bbf21555SRichard Lowemacro, consist of at most one line of
43*bbf21555SRichard Lowe.Sx Options ,
44*bbf21555SRichard Loweone or more
45*bbf21555SRichard Lowe.Sx Layout
46*bbf21555SRichard Lowelines, one or more
47*bbf21555SRichard Lowe.Sx Data
48*bbf21555SRichard Lowelines, and ends with a
49*bbf21555SRichard Lowe.Ic \&TE
50*bbf21555SRichard Lowemacro.
51*bbf21555SRichard LoweAll input must be 7-bit ASCII.
52*bbf21555SRichard Lowe.Ss Options
53*bbf21555SRichard LoweIf the first input line of a table ends with a semicolon, it contains
54*bbf21555SRichard Lowecase-insensitive options separated by spaces, tabs, or commas.
55*bbf21555SRichard LoweOtherwise, it is interpreted as the first
56*bbf21555SRichard Lowe.Sx Layout
57*bbf21555SRichard Loweline.
58*bbf21555SRichard Lowe.Pp
59*bbf21555SRichard LoweThe following options are available.
60*bbf21555SRichard LoweSome of them require arguments enclosed in parentheses:
61*bbf21555SRichard Lowe.Bl -tag -width Ds
62*bbf21555SRichard Lowe.It Cm allbox
63*bbf21555SRichard LoweDraw a single-line box around each table cell.
64*bbf21555SRichard Lowe.It Cm box
65*bbf21555SRichard LoweDraw a single-line box around the table.
66*bbf21555SRichard LoweFor GNU compatibility, this may also be invoked with
67*bbf21555SRichard Lowe.Cm frame .
68*bbf21555SRichard Lowe.It Cm center
69*bbf21555SRichard LoweCenter the table instead of left-adjusting it.
70*bbf21555SRichard LoweFor GNU compatibility, this may also be invoked with
71*bbf21555SRichard Lowe.Cm centre .
72*bbf21555SRichard Lowe.It Cm decimalpoint
73*bbf21555SRichard LoweUse the single-character argument as the decimal point with the
74*bbf21555SRichard Lowe.Cm n
75*bbf21555SRichard Lowelayout key.
76*bbf21555SRichard LoweThis is a GNU extension.
77*bbf21555SRichard Lowe.It Cm delim
78*bbf21555SRichard LoweUse the two characters of the argument as
79*bbf21555SRichard Lowe.Xr eqn 7
80*bbf21555SRichard Lowedelimiters.
81*bbf21555SRichard LoweCurrently unsupported.
82*bbf21555SRichard Lowe.It Cm doublebox
83*bbf21555SRichard LoweDraw a double-line box around the table.
84*bbf21555SRichard LoweFor GNU compatibility, this may also be invoked with
85*bbf21555SRichard Lowe.Cm doubleframe .
86*bbf21555SRichard Lowe.It Cm expand
87*bbf21555SRichard LoweIncrease the width of the table to the current line length.
88*bbf21555SRichard LoweCurrently ignored.
89*bbf21555SRichard Lowe.It Cm linesize
90*bbf21555SRichard LoweDraw lines with the point size given by the unsigned integer argument.
91*bbf21555SRichard LoweCurrently ignored.
92*bbf21555SRichard Lowe.It Cm nokeep
93*bbf21555SRichard LoweAllow page breaks within the table.
94*bbf21555SRichard LoweThis is a GNU extension and currently ignored.
95*bbf21555SRichard Lowe.It Cm nospaces
96*bbf21555SRichard LoweIgnore leading and trailing spaces in data cells.
97*bbf21555SRichard LoweThis is a GNU extension.
98*bbf21555SRichard Lowe.It Cm nowarn
99*bbf21555SRichard LoweSuppress warnings about tables exceeding the current line length.
100*bbf21555SRichard LoweThis is a GNU extension and currently ignored.
101*bbf21555SRichard Lowe.It Cm tab
102*bbf21555SRichard LoweUse the single-character argument as a delimiter between data cells.
103*bbf21555SRichard LoweBy default, the horizontal tabulator character is used.
104*bbf21555SRichard Lowe.El
105*bbf21555SRichard Lowe.Ss Layout
106*bbf21555SRichard LoweThe table layout follows an
107*bbf21555SRichard Lowe.Sx Options
108*bbf21555SRichard Loweline or a
109*bbf21555SRichard Lowe.Xr mandoc_roff 7
110*bbf21555SRichard Lowe.Ic \&TS
111*bbf21555SRichard Loweor
112*bbf21555SRichard Lowe.Ic \&T&
113*bbf21555SRichard Lowemacro.
114*bbf21555SRichard LoweEach layout line specifies how one line of
115*bbf21555SRichard Lowe.Sx Data
116*bbf21555SRichard Loweis formatted.
117*bbf21555SRichard LoweThe last layout line ends with a full stop.
118*bbf21555SRichard LoweIt also applies to all remaining data lines.
119*bbf21555SRichard LoweMultiple layout lines can be joined by commas on a single physical
120*bbf21555SRichard Loweinput line.
121*bbf21555SRichard Lowe.Pp
122*bbf21555SRichard LoweEach layout line consists of one or more layout cell specifications,
123*bbf21555SRichard Loweoptionally separated by whitespace.
124*bbf21555SRichard LoweThe following case-insensitive key characters start a new cell
125*bbf21555SRichard Lowespecification:
126*bbf21555SRichard Lowe.Bl -tag -width 2n
127*bbf21555SRichard Lowe.It Cm c
128*bbf21555SRichard LoweCenter the string in this cell.
129*bbf21555SRichard Lowe.It Cm r
130*bbf21555SRichard LoweRight-justify the string in this cell.
131*bbf21555SRichard Lowe.It Cm l
132*bbf21555SRichard LoweLeft-justify the string in this cell.
133*bbf21555SRichard Lowe.It Cm n
134*bbf21555SRichard LoweJustify a number around its last decimal point.
135*bbf21555SRichard LoweIf no decimal point is found in the number,
136*bbf21555SRichard Loweit is assumed to trail the number.
137*bbf21555SRichard Lowe.It Cm s
138*bbf21555SRichard LoweHorizontally span columns from the last
139*bbf21555SRichard Lowe.Pf non- Cm s
140*bbf21555SRichard Lowelayout cell.
141*bbf21555SRichard LoweIt is an error if a column span follows a
142*bbf21555SRichard Lowe.Cm _
143*bbf21555SRichard Loweor
144*bbf21555SRichard Lowe.Cm =
145*bbf21555SRichard Lowecell, or comes first on a layout line.
146*bbf21555SRichard LoweThe combined cell as a whole consumes only one cell
147*bbf21555SRichard Loweof the corresponding data line.
148*bbf21555SRichard Lowe.It Cm a
149*bbf21555SRichard LoweLeft-justify a string and pad with one space.
150*bbf21555SRichard Lowe.It Cm \(ha
151*bbf21555SRichard LoweVertically span rows from the last
152*bbf21555SRichard Lowe.Pf non- Cm \(ha
153*bbf21555SRichard Lowelayout cell.
154*bbf21555SRichard LoweIt is an error to invoke a vertical span on the first layout line.
155*bbf21555SRichard LoweUnlike a horizontal span, a vertical span consumes a data cell
156*bbf21555SRichard Loweand discards the content.
157*bbf21555SRichard Lowe.It Cm _
158*bbf21555SRichard LoweDraw a single horizontal line in this cell.
159*bbf21555SRichard LoweThis consumes a data cell and discards the content.
160*bbf21555SRichard LoweIt may also be invoked with
161*bbf21555SRichard Lowe.Cm \- .
162*bbf21555SRichard Lowe.It Cm =
163*bbf21555SRichard LoweDraw a double horizontal line in this cell.
164*bbf21555SRichard LoweThis consumes a data cell and discards the content.
165*bbf21555SRichard Lowe.El
166*bbf21555SRichard Lowe.Pp
167*bbf21555SRichard LoweEach cell key may be followed by zero or more of the following
168*bbf21555SRichard Lowecase-insensitive modifiers:
169*bbf21555SRichard Lowe.Bl -tag -width 2n
170*bbf21555SRichard Lowe.It Cm b
171*bbf21555SRichard LoweUse a bold font for the contents of this cell.
172*bbf21555SRichard Lowe.It Cm d
173*bbf21555SRichard LoweMove content down to the last row of this vertical span.
174*bbf21555SRichard LoweCurrently ignored.
175*bbf21555SRichard Lowe.It Cm e
176*bbf21555SRichard LoweMake this column wider to match the maximum width
177*bbf21555SRichard Loweof any other column also having the
178*bbf21555SRichard Lowe.Cm e
179*bbf21555SRichard Lowemodifier.
180*bbf21555SRichard Lowe.It Cm f
181*bbf21555SRichard LoweThe next one or two characters select the font to use for this cell.
182*bbf21555SRichard LoweOne-character font names must be followed by a blank or period.
183*bbf21555SRichard LoweSee the
184*bbf21555SRichard Lowe.Xr mandoc_roff 7
185*bbf21555SRichard Lowemanual for supported font names.
186*bbf21555SRichard Lowe.It Cm i
187*bbf21555SRichard LoweUse an italic font for the contents of this cell.
188*bbf21555SRichard Lowe.It Cm m
189*bbf21555SRichard LoweSpecify a cell start macro.
190*bbf21555SRichard LoweThis is a GNU extension and currently unsupported.
191*bbf21555SRichard Lowe.It Cm p
192*bbf21555SRichard LoweSet the point size to the following unsigned argument,
193*bbf21555SRichard Loweor change it by the following signed argument.
194*bbf21555SRichard LoweCurrently ignored.
195*bbf21555SRichard Lowe.It Cm v
196*bbf21555SRichard LoweSet the vertical line spacing to the following unsigned argument,
197*bbf21555SRichard Loweor change it by the following signed argument.
198*bbf21555SRichard LoweCurrently ignored.
199*bbf21555SRichard Lowe.It Cm t
200*bbf21555SRichard LoweDo not vertically center content in this vertical span,
201*bbf21555SRichard Loweleave it in the top row.
202*bbf21555SRichard LoweCurrently ignored.
203*bbf21555SRichard Lowe.It Cm u
204*bbf21555SRichard LoweMove cell content up by half a table row.
205*bbf21555SRichard LoweCurrently ignored.
206*bbf21555SRichard Lowe.It Cm w
207*bbf21555SRichard LoweSpecify a minimum column width.
208*bbf21555SRichard Lowe.It Cm x
209*bbf21555SRichard LoweAfter determining the width of all other columns, distribute the
210*bbf21555SRichard Lowerest of the line length among all columns having the
211*bbf21555SRichard Lowe.Cm x
212*bbf21555SRichard Lowemodifier.
213*bbf21555SRichard Lowe.It Cm z
214*bbf21555SRichard LoweDo not use this cell for determining the width of this column.
215*bbf21555SRichard Lowe.It Cm \&|
216*bbf21555SRichard LoweDraw a single vertical line to the right of this cell.
217*bbf21555SRichard Lowe.It Cm ||
218*bbf21555SRichard LoweDraw a double vertical line to the right of this cell.
219*bbf21555SRichard Lowe.El
220*bbf21555SRichard Lowe.Pp
221*bbf21555SRichard LoweIf a modifier consists of decimal digits,
222*bbf21555SRichard Loweit specifies a minimum spacing in units of
223*bbf21555SRichard Lowe.Cm n
224*bbf21555SRichard Lowebetween this column and the next column to the right.
225*bbf21555SRichard LoweThe default is 3.
226*bbf21555SRichard LoweIf there is a vertical line, it is drawn inside the spacing.
227*bbf21555SRichard Lowe.Ss Data
228*bbf21555SRichard LoweThe data section follows the last
229*bbf21555SRichard Lowe.Sx Layout
230*bbf21555SRichard Loweline.
231*bbf21555SRichard LoweEach data line consists of one or more data cells, delimited by
232*bbf21555SRichard Lowe.Cm tab
233*bbf21555SRichard Lowecharacters.
234*bbf21555SRichard Lowe.Pp
235*bbf21555SRichard LoweIf a data cell contains only the two bytes
236*bbf21555SRichard Lowe.Ql \e\(ha ,
237*bbf21555SRichard Lowethe cell above spans to this row, as if the layout specification
238*bbf21555SRichard Loweof this cell were
239*bbf21555SRichard Lowe.Cm \(ha .
240*bbf21555SRichard Lowe.Pp
241*bbf21555SRichard LoweIf a data cell contains only the single character
242*bbf21555SRichard Lowe.Ql _
243*bbf21555SRichard Loweor
244*bbf21555SRichard Lowe.Ql = ,
245*bbf21555SRichard Lowea single or double horizontal line is drawn across the cell,
246*bbf21555SRichard Lowejoining its neighbours.
247*bbf21555SRichard LoweIf a data cell contains only the two character sequence
248*bbf21555SRichard Lowe.Ql \e_
249*bbf21555SRichard Loweor
250*bbf21555SRichard Lowe.Ql \e= ,
251*bbf21555SRichard Lowea single or double horizontal line is drawn inside the cell,
252*bbf21555SRichard Lowenot joining its neighbours.
253*bbf21555SRichard LoweIf a data line contains nothing but the single character
254*bbf21555SRichard Lowe.Ql _
255*bbf21555SRichard Loweor
256*bbf21555SRichard Lowe.Ql = ,
257*bbf21555SRichard Lowea horizontal line across the whole table is inserted
258*bbf21555SRichard Lowewithout consuming a layout row.
259*bbf21555SRichard Lowe.Pp
260*bbf21555SRichard LoweIn place of any data cell, a text block can be used.
261*bbf21555SRichard LoweIt starts with
262*bbf21555SRichard Lowe.Ic \&T{
263*bbf21555SRichard Loweat the end of a physical input line.
264*bbf21555SRichard LoweInput line breaks inside the text block
265*bbf21555SRichard Loweneither end the text block nor its data cell.
266*bbf21555SRichard LoweIt only ends if
267*bbf21555SRichard Lowe.Ic \&T}
268*bbf21555SRichard Loweoccurs at the beginning of a physical input line and is followed
269*bbf21555SRichard Loweby an end-of-cell indicator.
270*bbf21555SRichard LoweIf the
271*bbf21555SRichard Lowe.Ic \&T}
272*bbf21555SRichard Loweis followed by the end of the physical input line, the text block,
273*bbf21555SRichard Lowethe data cell, and the data line ends at this point.
274*bbf21555SRichard LoweIf the
275*bbf21555SRichard Lowe.Ic \&T}
276*bbf21555SRichard Loweis followed by the
277*bbf21555SRichard Lowe.Cm tab
278*bbf21555SRichard Lowecharacter, only the text block and the data cell end,
279*bbf21555SRichard Lowebut the data line continues with the data cell following the
280*bbf21555SRichard Lowe.Cm tab
281*bbf21555SRichard Lowecharacter.
282*bbf21555SRichard LoweIf
283*bbf21555SRichard Lowe.Ic \&T}
284*bbf21555SRichard Loweis followed by any other character, it does not end the text block,
285*bbf21555SRichard Lowewhich instead continues to the following physical input line.
286*bbf21555SRichard Lowe.Sh EXAMPLES
287*bbf21555SRichard LoweString justification and font selection:
288*bbf21555SRichard Lowe.Bd -literal -offset indent
289*bbf21555SRichard Lowe\&.TS
290*bbf21555SRichard Lowerb c  lb
291*bbf21555SRichard Lower  ci l.
292*bbf21555SRichard Lower	center	l
293*bbf21555SRichard Loweri	ce	le
294*bbf21555SRichard Loweright	c	left
295*bbf21555SRichard Lowe\&.TE
296*bbf21555SRichard Lowe.Ed
297*bbf21555SRichard Lowe.Bd -filled -offset indent
298*bbf21555SRichard Lowe.TS
299*bbf21555SRichard Lowerb c  lb
300*bbf21555SRichard Lower  ci l.
301*bbf21555SRichard Lower	center	l
302*bbf21555SRichard Loweri	ce	le
303*bbf21555SRichard Loweright	c	left
304*bbf21555SRichard Lowe.TE
305*bbf21555SRichard Lowe.Ed
306*bbf21555SRichard Lowe.Pp
307*bbf21555SRichard LoweSome ports in
308*bbf21555SRichard Lowe.Ox 6.1
309*bbf21555SRichard Loweto show number alignment and line drawing:
310*bbf21555SRichard Lowe.Bd -literal -offset indent
311*bbf21555SRichard Lowe\&.TS
312*bbf21555SRichard Lowebox tab(:);
313*bbf21555SRichard Lower| l
314*bbf21555SRichard Lower  n.
315*bbf21555SRichard Lowesoftware:version
316*bbf21555SRichard Lowe_
317*bbf21555SRichard LoweAFL:2.39b
318*bbf21555SRichard LoweMutt:1.8.0
319*bbf21555SRichard LoweRuby:1.8.7.374
320*bbf21555SRichard LoweTeX Live:2015
321*bbf21555SRichard Lowe\&.TE
322*bbf21555SRichard Lowe.Ed
323*bbf21555SRichard Lowe.Bd -filled -offset indent
324*bbf21555SRichard Lowe.TS
325*bbf21555SRichard Lowebox tab(:);
326*bbf21555SRichard Lower| l
327*bbf21555SRichard Lower  n.
328*bbf21555SRichard Lowesoftware:version
329*bbf21555SRichard Lowe_
330*bbf21555SRichard LoweAFL:2.39b
331*bbf21555SRichard LoweMutt:1.8.0
332*bbf21555SRichard LoweRuby:1.8.7.374
333*bbf21555SRichard LoweTeX Live:2015
334*bbf21555SRichard Lowe.TE
335*bbf21555SRichard Lowe.Ed
336*bbf21555SRichard Lowe.sp 2v
337*bbf21555SRichard LoweSpans and skipping width calculations:
338*bbf21555SRichard Lowe.Bd -literal -offset indent
339*bbf21555SRichard Lowe\&.TS
340*bbf21555SRichard Lowebox tab(:);
341*bbf21555SRichard Lowelz  s | rt
342*bbf21555SRichard Lowelt| cb| \(ha
343*bbf21555SRichard Lowe\(ha | rz  s.
344*bbf21555SRichard Loweleft:r
345*bbf21555SRichard Lowel:center:
346*bbf21555SRichard Lowe:right
347*bbf21555SRichard Lowe\&.TE
348*bbf21555SRichard Lowe.Ed
349*bbf21555SRichard Lowe.Bd -filled -offset indent
350*bbf21555SRichard Lowe.TS
351*bbf21555SRichard Lowebox tab(:);
352*bbf21555SRichard Lowelz  s | rt
353*bbf21555SRichard Lowelt| cb| ^
354*bbf21555SRichard Lowe^ | rz  s.
355*bbf21555SRichard Loweleft:r
356*bbf21555SRichard Lowel:center:
357*bbf21555SRichard Lowe:right
358*bbf21555SRichard Lowe.TE
359*bbf21555SRichard Lowe.Ed
360*bbf21555SRichard Lowe.sp 2v
361*bbf21555SRichard LoweText blocks, specifying spacings and specifying and equalizing
362*bbf21555SRichard Lowecolumn widths, putting lines into individual cells, and overriding
363*bbf21555SRichard Lowe.Cm allbox :
364*bbf21555SRichard Lowe.Bd -literal -offset indent
365*bbf21555SRichard Lowe\&.TS
366*bbf21555SRichard Loweallbox tab(:);
367*bbf21555SRichard Lowele le||7 lw10.
368*bbf21555SRichard LoweThe fourth line:_:line 1
369*bbf21555SRichard Loweof this column:=:line 2
370*bbf21555SRichard Lowedetermines:\_:line 3
371*bbf21555SRichard Lowethe column width.:T{
372*bbf21555SRichard LoweThis text is too wide to fit into a column of width 17.
373*bbf21555SRichard LoweT}:line 4
374*bbf21555SRichard LoweT{
375*bbf21555SRichard LoweNo break here.
376*bbf21555SRichard LoweT}::line 5
377*bbf21555SRichard Lowe\&.TE
378*bbf21555SRichard Lowe.Ed
379*bbf21555SRichard Lowe.Bd -filled -offset indent
380*bbf21555SRichard Lowe.TS
381*bbf21555SRichard Loweallbox tab(:);
382*bbf21555SRichard Lowele le||7 lw10.
383*bbf21555SRichard LoweThe fourth line:_:line 1
384*bbf21555SRichard Loweof this column:=:line 2
385*bbf21555SRichard Lowedetermines:\_:line 3
386*bbf21555SRichard Lowethe column width.:T{
387*bbf21555SRichard LoweThis text is too wide to fit into a column of width 17.
388*bbf21555SRichard LoweT}:line 4
389*bbf21555SRichard LoweT{
390*bbf21555SRichard LoweNo break here.
391*bbf21555SRichard LoweT}::line 5
392*bbf21555SRichard Lowe.TE
393*bbf21555SRichard Lowe.Ed
394*bbf21555SRichard Lowe.sp 2v
395*bbf21555SRichard LoweThese examples were constructed to demonstrate many
396*bbf21555SRichard Lowe.Nm
397*bbf21555SRichard Lowefeatures in a compact way.
398*bbf21555SRichard LoweIn real manual pages, keep tables as simple as possible.
399*bbf21555SRichard LoweThey usually look better, are less fragile, and are more portable.
400*bbf21555SRichard Lowe.Sh COMPATIBILITY
401*bbf21555SRichard LoweThe
402*bbf21555SRichard Lowe.Xr mandoc 1
403*bbf21555SRichard Loweimplementation of
404*bbf21555SRichard Lowe.Nm
405*bbf21555SRichard Lowedoesn't support
406*bbf21555SRichard Lowe.Xr mdoc 7
407*bbf21555SRichard Loweand
408*bbf21555SRichard Lowe.Xr man 7
409*bbf21555SRichard Lowemacros and
410*bbf21555SRichard Lowe.Xr eqn 7
411*bbf21555SRichard Loweequations inside tables.
412*bbf21555SRichard Lowe.Sh SEE ALSO
413*bbf21555SRichard Lowe.Xr mandoc 1 ,
414*bbf21555SRichard Lowe.Xr man 7 ,
415*bbf21555SRichard Lowe.Xr mandoc_char 7 ,
416*bbf21555SRichard Lowe.Xr mandoc_roff 7 ,
417*bbf21555SRichard Lowe.Xr mdoc 7
418*bbf21555SRichard Lowe.Rs
419*bbf21555SRichard Lowe.%A M. E. Lesk
420*bbf21555SRichard Lowe.%T Tbl \(em A Program to Format Tables
421*bbf21555SRichard Lowe.%D June 11, 1976
422*bbf21555SRichard Lowe.Re
423*bbf21555SRichard Lowe.Sh HISTORY
424*bbf21555SRichard LoweThe tbl utility, a preprocessor for troff, was originally written by M.
425*bbf21555SRichard LoweE. Lesk at Bell Labs in 1975.
426*bbf21555SRichard LoweThe GNU reimplementation of tbl, part of the groff package, was released
427*bbf21555SRichard Lowein 1990 by James Clark.
428*bbf21555SRichard LoweA standalone tbl implementation was written by Kristaps Dzonsons in
429*bbf21555SRichard Lowe2010.
430*bbf21555SRichard LoweThis formed the basis of the implementation that first appeared in
431*bbf21555SRichard Lowe.Ox 4.9
432*bbf21555SRichard Loweas a part of the
433*bbf21555SRichard Lowe.Xr mandoc 1
434*bbf21555SRichard Loweutility.
435*bbf21555SRichard Lowe.Sh AUTHORS
436*bbf21555SRichard LoweThis
437*bbf21555SRichard Lowe.Nm
438*bbf21555SRichard Lowereference was written by
439*bbf21555SRichard Lowe.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
440*bbf21555SRichard Loweand
441*bbf21555SRichard Lowe.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
442*bbf21555SRichard Lowe.Sh BUGS
443*bbf21555SRichard LoweIn
444*bbf21555SRichard Lowe.Fl T
445*bbf21555SRichard Lowe.Cm utf8
446*bbf21555SRichard Loweoutput mode, heavy lines are drawn instead of double lines.
447*bbf21555SRichard LoweThis cannot be improved because the Unicode standard only provides
448*bbf21555SRichard Lowean incomplete set of box drawing characters with double lines,
449*bbf21555SRichard Lowewhereas it provides a full set of box drawing characters
450*bbf21555SRichard Lowewith heavy lines.
451*bbf21555SRichard LoweIt is unlikely this can be improved in the future because the box
452*bbf21555SRichard Lowedrawing characters are already marked in Unicode as characters
453*bbf21555SRichard Loweintended only for backward compatibility with legacy systems,
454*bbf21555SRichard Loweand their use is not encouraged.
455*bbf21555SRichard LoweSo it seems unlikely that the missing ones might get added in the future.
456