.MH "Tabulation"
.#
.SH "Tabs"
Just like any good typewriter, 'fmt' has facilities for
tabulation. When it encounters a special character in
its input called the 'tab character' (analogous to the
TAB key on a typewriter), it automatically advances to the
next output column in which a 'tab stop' has been previously
set. Tab stops are always measured from the
.ul
effective left margin,
that is, the left margin plus the current indentation or
temporary indentation value.
Whatever column the left margin may actually be in, it is
always assumed to be column one for the purpose of
tabulation.
.pp
Originally, a tab stop is set in every eighth column, starting
with column nine. This may be changed using
the 'tab' command
.be
[bf .ta]
...
.ee
Each parameter specified must be a number, and causes a tab stop
to be set in the corresponding output column. All existing
stops are cleared before setting the new ones, and a stop
is set in every column beyond the last one specified.
This means that if no columns are specified, a stop is
set in every column.
.pp
By default, 'fmt' recognizes the ASCII TAB, control-i,
as the 'tab character'. But since this is an invisible
character and is guaranteed to be interpreted differently
by different terminals, it can be changed to any character
with the 'tab-character' command:
.be
[bf .tc]
.ee
While there is no restriction on what particular character is
specified for
, it is wise to choose one that doesn't occur
too frequently elsewhere
in the text. If you omit the parameter, the tab character
reverts to the default.
.pp
When 'fmt' expands a tab character, it normally puts out
enough blanks to get to the next tab stop. In other words,
the default 'replacement' character is the blank. This
too may easily be changed with the 'replacement-character'
command:
.be
[bf .rc]
.ee
As with the [bf tc]
command, may be any single character. If omitted, the
default is used.
.pp
A common alternate replacement character is the period, which is
frequently used in tables of contents. The following
example illustrates how one might be constructed:
.be 12
[bf .ta] 52
[bf .tc] \
Section Name\Page
[bf .rc] .
[bf .sp]
[bf .nf]
[bf .ta] 53
Basics\1
Filling and Margin Adjustment\2
Spacing and Page Control\5
[bf .sp]
[bf .fi]
.ee
The result should look about like this:
.be 5
.ta 52
.tc \
Section Name\Page
.ta 53
.rc .
Basics\1
Filling and Margin Adjustment\2
Spacing and Page Control\5
.tc
.rc
.ee
.pp
A final word on tabs: Since the default replacement character is a blank
you might think that, in the process of adjusting margins (i.e., when
the adjustment mode is "b"), 'fmt' might throw in extra blanks
between words that were separated by the tab character. Since this is
definitely [ul not]
the expected or desired behavior, 'fmt' uses what is called a
"phantom blank" as the default replacement character. The phantom
blank prints as an ordinary blank, but is not recognized as one during
margin adjustment.
.#
.BT 13 "Summary - Tabulation"
?RQ ".ta N ..." "9 17 ..." all no
Set tab stops.
?RQ ".tc c" TAB TAB no
Set tab character.
?RQ ".rc c" BLANK BLANK no
Set tab replacement character.
?ET
.########################################################################