This section is divided into the following three subsections, each covering a different preprocessor of the nroff/troff formatting system:
The tbl preprocessor
The eqn preprocessor
The pic graphics language
Each of these preprocessors translates code into nroff/troff requests and escape sequences, which run independently of the formatter. Usually, one or more of these preprocessors are invoked as part of a command pipeline to format a file:
%pic
file
| tbl | eqn | troff |spooler
On multi-user systems, it is typical to have a general-purpose shell script for formatting. You would then select various command-line options to specify which (if any) preprocessors to include in your particular format command. But you can also invoke the preprocessors individually. This is useful for confirming that syntax is correct or for determining where it fails. For example, the command:
%tbl
file
takes input between each .TS/.TE macro pair and converts it into tbl code. All other input is passed to output unchanged.
Tbl is a preprocessor for formatting tables in nroff/troff. When used in a command pipeline, tbl should precede eqn. This makes output processing more efficient. Tbl has the following command-line syntax:
/usr/ucb/tbl
[options
] [files
]
Options
Prepend the me
macros to the front of files
.
Prepend the mm
macros to the front of files
.
Prepend the ms
macros to the front of files
.
Produce output using only full vertical line motions. This is useful when formatting with nroff or when printing to a device that does not support fractional line motion.
In a text file, coding for tbl might look like this:
.TS H
options
;
format1
format2
.
Column Titles
.TH
Item1 Item2 Item3
Item1 Item2 Item3 ...
.TE
Successful processing of a table by tbl depends largely on
the header lines, which consist of one line listing the options and
one or more format lines. Each field of the table input must be
separated by a tab or designated tab symbol, with each row typed
entirely on a single line unless a field is enclosed by the text block symbols
T{
and T}
.
.TS | Start table. |
.TE | End table. |
.TS H | Used when the table will continue onto
more than one page. Used with |
.TH | With .TS H , ends the header portion of the table. |
.T& | Continue table after changing format line. |
Options affect the entire table. Options can be separated by commas or spaces, but the line must end with a semicolon.
center | Center with current margins. |
expand | Flush with current right and left margins. |
blank | Flush with current left margin (the default). |
box | Enclose table in a box. |
doublebox | Enclose table in two boxes. |
allbox | Enclose each table entry in a box. |
tab (x ) | Define the tab symbol to be x instead of a tab. |
linesize n | Set type size of lines or rules (e.g., from box) to n points. |
delim xy | Recognize x and y as the eqn delimiters. |
The format line affects the layout of individual columns and rows of
the table. Each line contains a key letter for each column of the
table. The column entries should be separated by spaces, and the
format section must end with a period. Each line of format corresponds
to one line of the table, except for the last, which corresponds to all
following lines up to the next .T&
, if any.
c | Center. |
l | Flush left. |
r | Flush right. |
n | Align numerical entries. |
a | Align alphabetic subcolumns. |
s | Horizontally span previous column entry across this column. |
^ | Vertically span (center) entry from previous row down through this row. |
These must follow a key letter.
b | Boldface. |
i | Italics. |
fx | Font x . |
pn | Point size. |
vn | Vertical line spacing, in points. Applies only to text blocks. |
t | Begin any corresponding vertically-spanned table entry
(i.e., from |
e | Equal width columns. |
w( n ) | Minimum column width. Also used with text blocks.
|
n | Amount of separation (in ens) between columns (default is 3). |
| | Separate columns with a single vertical line. Typed between key letters. |
|| | Separate columns with a double vertical line. Typed between key letters. |
_ | Separate rows with a single horizontal line. Used in place of a key letter. |
= | Separate rows with a double horizontal line. Used in place of a key letter. |
The data portion includes both the heading and text of the table. Each table entry must be separated by a tab symbol.
.xx | Troff requests may be used (such as .sp n , .na , etc.). |
\ | As last character in a line, combine following line with current line (hide newline). |
\^ | Span table entry that is above this row, bringing it down to be vertically centered. |
\&_ or = | As the only character in a line, extend a single or double horizontal line the full width of the table. |
\$_ or \$= | Extend a single or double horizontal line the full width of the column. |
\_ | Extend a single horizontal line the width of the column's contents. |
\Rx | Print |
...[tab ]T{ | Start text block as a table entry. Must end a line. Necessary when a line of text is input over more than one line, or will span more than one line of output. |
...T} [tab ] | End text block. Must begin a line. |
Input:
.TS center box linesize(6) tab(@); cb s s. Horizontal Local Motions _ .T& ci | ci s ci | ci s ci | ci | ci c | l s. Function@Effect in \^@_ \^@troff@nroff _ \eh'n'@Move distance N \e(space)@Unpaddable space-size space \e0@Digit-size space _ .T& c | l | l. \e|@1/6 em space@ignored \e^@1/12 em space@ignored .TE
Result:
Horizontal Local Motions | ||
---|---|---|
Function | Effect in | |
troff | nroff | |
\h'n' | Move distance N | |
\(space) | Unpaddable space-size space | |
\0 | Digit-size space | |
\| | 1/6 em space | ignored |
\^ | 1/12 em space | ignored |