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