.TH TBL 1
.SH NAME
tbl \- format tables for nroff or troff
.SH SYNOPSIS
.B tbl
[
.I file ...
]
.SH DESCRIPTION
.I Tbl
is a preprocessor for formatting tables for
.I nroff
or
.IR troff (1).
The input
.I files
are copied to the standard output,
except for segments of the form
.IP
.nf
.B .TS
.IB options " ;
.IB format " .
.I data
.B .T&
.IB format " .
.I data
\&. . .
.B .TE
.fi
.LP
which describe tables
and are replaced by
.I troff 
requests to lay out the tables.
If no arguments are given,
.I tbl
reads the standard input.
.PP
The (optional)
.I options
line is terminated by a semicolon and contains one or more
of
.RS
.TF linesize(n)
.TP
.B center
center the table; default is left-adjust
.TP
.B expand
make table as wide as current line length
.TP
.B box
.TP
.B doublebox
enclose the table in a box or double box
.TP
.B allbox
enclose every item in a box
.TP
.BI tab( x )
use 
.I x
to separate input items; default is tab
.TP
.BI linesize( n )
set rules in
.IR n -point
type
.TP
.BI delim( xy )
recognize
.I x
and
.I y
as
.IR eqn (1)
delimiters
.PD
.RE
.PP
Each line, except the last, of the obligatory
.I format
describes one row of the table.
The last line describes all rows until the next
.BR .T& ,
where the format changes,
or the end of the table at
.BR .TE .
A format is specified by key letters, one per column, either upper or lower case:
.RS
.TP 0
.B L
Left justify: the default for
columns without format keys.
.PD0
.TP
.B R
Right justify.
.TP
.B C
Center.
.TP
.B N
Numeric: align at decimal point (inferred for integers) or at
.LR \e& .
.TP
.B S
Span: extend previous column across this one.
.TP
.B A
Alphabetic: left-aligned within column, widest item centered, indented relative to 
.B L
rows.
.TP
.B ^
Vertical span: continue item from previous row into this row.
.TP
.B -
Draw a horizontal rule in this column.
.TP
.B =
Draw a double horizontal rule in this column.
.PD
.RE
.PP
Key letters may be followed by modifiers, also either case:
.RS
.TP \w'\fLF\fIfont\fLXX'u
.B |
Draw vertical rule between columns.
.PD0
.TP
.B ||
Draw a double vertical rule between columns.
.TP
.I n
Gap between column is
.I n
ens wide.
Default is 3.
.TP
.BI F font
Use specified
.IR font .
.B B
and
.B I
mean
.B FB
and
.BR FI .
.TP
.B T
Begin vertically-spanned item at top row of range; default is 
vertical centering (with
.LR ^ ).
.TP
.BI P n
Use point size
.IR n .
.TP
.BI V n
Use
.IR n -point
vertical spacing in text block; signed
.I n
means relative change.
.TP
.BI W( n )
Column width as a
.I troff
width specification.
Parens are optional if
.I n
is a simple integer.
.TP
.B E
Equalize the widths of all columns marked
.BR E .
.PD
.RE
.PP
Each line of
.I data
becomes one row of the table; tabs separate items.
Lines beginning with
.L .
are 
.I troff 
requests.
Certain special data items are recognized:
.RS
.TP 0
.B _
Draw a horizontal rule in this column.
.PD0
.TP
.B =
Draw a double horizontal rule in this column.
A data line consisting of a single
.L _
or
.L =
draws the rule across the whole table.
.TP
.B \e_
Draw a rule only as wide as the contents of the column.
.TP
.BI \eR x
Repeat character
.I x
across the column.
.TP
.B \e^
Span the previous item in this column down into this row.
.TP
.B T{
The item is a text block to be separately formatted
by
.I troff 
and placed in the table.
The block continues to the next line beginning with
.BR T} .
The remainder of the data line follows at that point.
.PD
.RE
.PP
When it is used in a pipeline with
.IR eqn ,
the
.I tbl
command should be first, to minimize the volume
of data passed through
pipes.
.SH EXAMPLES
.ds tb \fR<tab>\fP
Let \*(tb
represent a tab (which should
be typed as a genuine tab).
.if t .2C
.EX
\&.TS
c s s
c c s
c c c
l n n.
Household Population
Town\*(tbHouseholds
\*(tbNumber\*(tbSize
Bedminster\*(tb789\*(tb3.26
Bernards Twp.\*(tb3087\*(tb3.74
Bernardsville\*(tb2018\*(tb3.30
\&.TE
.if t \{\0 
\0 
\0\}
.if n .PP
.TS
c s s
c c s
c c c
l n n.
Household Population
Town	Households
	Number	Size
Bedminster	789	3.26
Bernards Twp.	3087	3.74
Bernardsville	2018	3.30
.TE
.EE
.if t \{.sp3
.1C\}
.SH SOURCE
.B \*9/src/cmd/tbl
.SH SEE ALSO
.IR troff (1), 
.IR eqn (1),
.IR doctype (1)
.br
M. E. Lesk and L. L. Cherry,
``TBL\(ema Program to Format Tables'',
.I
Unix Research System Programmer's Manual,
Tenth Edition, Volume 2.
