2464ec91ca
Original author: mpp
2052 lines
43 KiB
Groff
2052 lines
43 KiB
Groff
.ig \"-*- nroff -*-
|
|
Copyright (C) 1989-1995 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
this manual provided the copyright notice and this permission notice
|
|
are preserved on all copies.
|
|
|
|
Permission is granted to copy and distribute modified versions of this
|
|
manual under the conditions for verbatim copying, provided that the
|
|
entire resulting derived work is distributed under the terms of a
|
|
permission notice identical to this one.
|
|
|
|
Permission is granted to copy and distribute translations of this
|
|
manual into another language, under the above conditions for modified
|
|
versions, except that this permission notice may be included in
|
|
translations approved by the Free Software Foundation instead of in
|
|
the original English.
|
|
..
|
|
.\" define a string tx for the TeX logo
|
|
.ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
|
|
.el .ds tx TeX
|
|
.de TQ
|
|
.br
|
|
.ns
|
|
.TP \\$1
|
|
..
|
|
.\" Like TP, but if specified indent is more than half
|
|
.\" the current line-length - indent, use the default indent.
|
|
.de Tp
|
|
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
|
|
.el .TP "\\$1"
|
|
..
|
|
.\" The BSD man macros can't handle " in arguments to font change macros,
|
|
.\" so use \(ts instead of ".
|
|
.tr \(ts"
|
|
.TH @G@TROFF 1 "@MDATE@" "Groff Version @VERSION@"
|
|
.SH NAME
|
|
@g@troff \- format documents
|
|
.SH SYNOPSIS
|
|
.nr a \n(.j
|
|
.ad l
|
|
.nr i \n(.i
|
|
.in +\w'\fB@g@troff 'u
|
|
.ti \niu
|
|
.B @g@troff
|
|
.de OP
|
|
.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
|
|
.el .RB "[\ " "\\$1" "\ ]"
|
|
..
|
|
.OP \-abivzCER
|
|
.OP \-w name
|
|
.OP \-W name
|
|
.OP \-d cs
|
|
.OP \-f fam
|
|
.OP \-m name
|
|
.OP \-n num
|
|
.OP \-o list
|
|
.OP \-r cn
|
|
.OP \-T name
|
|
.OP \-F dir
|
|
.OP \-M dir
|
|
.RI "[\ " files\|.\|.\|. "\ ]"
|
|
.br
|
|
.ad \na
|
|
.SH DESCRIPTION
|
|
This manual page describes the GNU version of
|
|
.BR troff ,
|
|
which is part of the groff document formatting system.
|
|
It is highly compatible with Unix troff.
|
|
Usually it should be invoked using the groff command, which will
|
|
also run preprocessors and postprocessors in the appropriate
|
|
order and with the appropriate options.
|
|
.SH OPTIONS
|
|
.TP \w'\-dname=s'u+2n
|
|
.B \-a
|
|
Generate an
|
|
.SM ASCII
|
|
approximation of the typeset output.
|
|
.TP
|
|
.B \-b
|
|
Print a backtrace with each warning or error message. This backtrace
|
|
should help track down the cause of the error. The line numbers given
|
|
in the backtrace may not always correct: troff's idea of line numbers
|
|
gets confused by
|
|
.B as
|
|
or
|
|
.B am
|
|
requests.
|
|
.TP
|
|
.B \-i
|
|
Read the standard input after all the named input files have been
|
|
processed.
|
|
.TP
|
|
.B \-v
|
|
Print the version number.
|
|
.TP
|
|
.BI \-w name
|
|
Enable warning
|
|
.IR name .
|
|
Available warnings are described in
|
|
the Warnings subsection below.
|
|
Multiple
|
|
.B \-w
|
|
options are allowed.
|
|
.TP
|
|
.BI \-W name
|
|
Inhibit warning
|
|
.IR name .
|
|
Multiple
|
|
.B \-W
|
|
options are allowed.
|
|
.TP
|
|
.B \-E
|
|
Inhibit all error messages.
|
|
.TP
|
|
.B \-z
|
|
Suppress formatted output.
|
|
.TP
|
|
.B \-C
|
|
Enable compatibility mode.
|
|
.TP
|
|
.BI \-d cs
|
|
.TQ
|
|
.BI \-d name = s
|
|
Define
|
|
.I c
|
|
or
|
|
.I name
|
|
to be a string
|
|
.IR s ;
|
|
.I c
|
|
must be a one letter name.
|
|
.TP
|
|
.BI \-f fam
|
|
Use
|
|
.I fam
|
|
as the default font family.
|
|
.TP
|
|
.BI \-m name
|
|
Read in the file
|
|
.BI tmac. name\fR.
|
|
Normally this will be searched for in @MACRODIR@.
|
|
.TP
|
|
.B \-R
|
|
Don't load
|
|
.BR troffrc .
|
|
.TP
|
|
.BI \-n num
|
|
Number the first page
|
|
.IR num .
|
|
.TP
|
|
.BI \-o list
|
|
Output only pages in
|
|
.IR list ,
|
|
which is a comma-separated list of page ranges;
|
|
.I n
|
|
means print page
|
|
.IR n ,
|
|
.IB m \- n
|
|
means print every page between
|
|
.I m
|
|
and
|
|
.IR n ,
|
|
.BI \- n
|
|
means print every page up to
|
|
.IR n ,
|
|
.IB n \-
|
|
means print every page from
|
|
.IR n .
|
|
.B Troff
|
|
will exit after printing the last page in the list.
|
|
.TP
|
|
.BI \-r cn
|
|
.TQ
|
|
.BI \-r name = n
|
|
Set number register
|
|
.I c
|
|
or
|
|
.I name
|
|
to
|
|
.IR n ;
|
|
.I c
|
|
must be a one character name;
|
|
.I n
|
|
can be any troff numeric expression.
|
|
.TP
|
|
.BI \-T name
|
|
Prepare output for device
|
|
.IR name ,
|
|
rather than the default
|
|
.BR @DEVICE@ .
|
|
.TP
|
|
.BI \-F dir
|
|
Search
|
|
.I dir
|
|
for subdirectories
|
|
.BI dev name
|
|
.RI ( name
|
|
is the name of the device)
|
|
for the
|
|
.B DESC
|
|
file and font files before the normal
|
|
.BR @FONTDIR@ .
|
|
.TP
|
|
.BI \-M dir
|
|
Search directory
|
|
.I dir
|
|
for macro files before the normal
|
|
.BR @MACRODIR@ .
|
|
.SH USAGE
|
|
Only the features not in Unix troff are described here.
|
|
.SS Long names
|
|
The names of number registers, fonts, strings/macros/diversions,
|
|
special characters can be of any length. In escape sequences, where
|
|
you can use
|
|
.BI ( xx
|
|
for a two character name, you can use
|
|
.BI [ xxx ]
|
|
for a name of arbitrary length:
|
|
.TP
|
|
.BI \e[ xxx ]
|
|
Print the special character called
|
|
.IR xxx .
|
|
.TP
|
|
.BI \ef[ xxx ]
|
|
Set font
|
|
.IR xxx .
|
|
.TP
|
|
.BI \e*[ xxx ]
|
|
Interpolate string
|
|
.IR xxx .
|
|
.TP
|
|
.BI \en[ xxx ]
|
|
Interpolate number register
|
|
.IR xxx .
|
|
.SS Fractional pointsizes
|
|
A
|
|
.I
|
|
scaled point
|
|
is equal to 1/sizescale
|
|
points, where
|
|
sizescale is specified in the
|
|
.B DESC
|
|
file (1 by default.)
|
|
There is a new scale indicator
|
|
.B z
|
|
which has the effect of multiplying by sizescale.
|
|
Requests and escape sequences in troff
|
|
interpret arguments that represent a pointsize as being in units
|
|
of scaled points, but they evaluate each such argument
|
|
using a default scale indicator of
|
|
.BR z .
|
|
Arguments treated in this way are
|
|
the argument to the
|
|
.B ps
|
|
request,
|
|
the third argument to the
|
|
.B cs
|
|
request,
|
|
the second and fourth arguments to the
|
|
.B tkf
|
|
request,
|
|
the argument to the
|
|
.B \eH
|
|
escape sequence,
|
|
and those variants of the
|
|
.B \es
|
|
escape sequence that take a numeric expression as their argument.
|
|
.LP
|
|
For example, suppose sizescale is 1000;
|
|
then a scaled point will be equivalent to a millipoint;
|
|
the request
|
|
.B .ps 10.25
|
|
is equivalent to
|
|
.B .ps 10.25z
|
|
and so sets the pointsize to 10250 scaled points,
|
|
which is equal to 10.25 points.
|
|
.LP
|
|
The number register
|
|
.B \en(.s
|
|
returns the pointsize in points as decimal fraction.
|
|
There is also a new number register
|
|
.B \en[.ps]
|
|
that returns the pointsize in scaled points.
|
|
.LP
|
|
It would make no sense to use the
|
|
.B z
|
|
scale indicator in a numeric expression
|
|
whose default scale indicator was neither
|
|
.B u
|
|
nor
|
|
.BR z ,
|
|
and so
|
|
.B troff
|
|
disallows this.
|
|
Similarly it would make no sense to use a scaling indicator
|
|
other than
|
|
.B z
|
|
or
|
|
.B u
|
|
in a numeric expression whose default scale indicator was
|
|
.BR z ,
|
|
and so
|
|
.B troff
|
|
disallows this as well.
|
|
.LP
|
|
There is also new scale indicator
|
|
.B s
|
|
which multiplies by the number of units in a scaled point.
|
|
So, for example,
|
|
.B \en[.ps]s
|
|
is equal to
|
|
.BR 1m .
|
|
Be sure not to confuse the
|
|
.B s
|
|
and
|
|
.B z
|
|
scale indicators.
|
|
.SS Numeric expressions
|
|
.LP
|
|
Spaces are permitted in a number expression within parentheses.
|
|
.LP
|
|
.B M
|
|
indicates a scale of 100ths of an em.
|
|
.TP
|
|
.IB e1 >? e2
|
|
The maximum of
|
|
.I e1
|
|
and
|
|
.IR e2 .
|
|
.TP
|
|
.IB e1 <? e2
|
|
The minimum of
|
|
.I e1
|
|
and
|
|
.IR e2 .
|
|
.TP
|
|
.BI ( c ; e )
|
|
Evaluate
|
|
.I e
|
|
using
|
|
.I c
|
|
as the default scaling indicator.
|
|
If
|
|
.I c
|
|
is missing, ignore scaling indicators in the evaluation of
|
|
.IR e .
|
|
.SS New escape sequences
|
|
.TP
|
|
.BI \eA' anything '
|
|
This expands to
|
|
.B 1
|
|
or
|
|
.B 0
|
|
according as
|
|
.I anything
|
|
is or is not acceptable as the name of a string, macro, diversion,
|
|
number register, environment or font.
|
|
It will return
|
|
.B 0
|
|
if
|
|
.I anything
|
|
is empty.
|
|
This is useful if you want to lookup user input in some sort of
|
|
associative table.
|
|
.TP
|
|
.BI \eC' xxx '
|
|
Typeset character named
|
|
.IR xxx .
|
|
Normally it is more convenient to use
|
|
.BI \e[ xxx ]\fR.
|
|
But
|
|
.B \eC
|
|
has the advantage that it is compatible with recent versions of
|
|
.SM UNIX
|
|
and is available in compatibility mode.
|
|
.TP
|
|
.B \eE
|
|
This is equivalent to an escape character,
|
|
but it's not interpreted in copy-mode.
|
|
For example, strings to start and end superscripting could be defined
|
|
like this:
|
|
.RS
|
|
.IP
|
|
\&.ds { \ev'\-.3m'\es'\eEn[.s]*6u/10u'
|
|
.br
|
|
\&.ds } \es0\ev'.3m'
|
|
.LP
|
|
The use of
|
|
.B \eE
|
|
ensures that these definitions will work even if
|
|
.B \e*{
|
|
gets interpreted in copy-mode
|
|
(for example, by being used in a macro argument.)
|
|
.RE
|
|
.TP
|
|
.BI \eN' n '
|
|
Typeset the character with code
|
|
.I n
|
|
in the current font.
|
|
.I n
|
|
can be any integer.
|
|
Most devices only have characters with codes between 0 and 255.
|
|
If the current font does not contain a character with that code,
|
|
special fonts will
|
|
.I not
|
|
be searched.
|
|
The
|
|
.B \eN
|
|
escape sequence can be conveniently used on conjunction with the
|
|
.B char
|
|
request:
|
|
.RS
|
|
.IP
|
|
.B
|
|
\&.char \e[phone] \ef(ZD\eN'37'
|
|
.RE
|
|
.IP
|
|
The code of each character is given in the fourth column in the font
|
|
description file after the
|
|
.B charset
|
|
command.
|
|
It is possible to include unnamed characters in the font description
|
|
file by using a name of
|
|
.BR \-\-\- ;
|
|
the
|
|
.B \eN
|
|
escape sequence is the only way to use these.
|
|
.TP
|
|
.BI \eR' name\ \(+-n '
|
|
This has the same effect as
|
|
.RS
|
|
.IP
|
|
.BI .nr\ name\ \(+-n
|
|
.RE
|
|
.TP
|
|
.BI \es( nn
|
|
.TQ
|
|
.BI \es\(+-( nn
|
|
Set the point size to
|
|
.I nn
|
|
points;
|
|
.I nn
|
|
must be exactly two digits.
|
|
.TP
|
|
.BI \es[\(+- n ]
|
|
.TQ
|
|
.BI \es\(+-[ n ]
|
|
.TQ
|
|
.BI \es'\(+- n '
|
|
.TQ
|
|
.BI \es\(+-' n '
|
|
Set the point size to
|
|
.I n
|
|
scaled points;
|
|
.I n
|
|
is a numeric expression with a default scale indicator of
|
|
.BR z .
|
|
.TP
|
|
.BI \eV x
|
|
.TQ
|
|
.BI \eV( xx
|
|
.TQ
|
|
.BI \eV[ xxx ]
|
|
Interpolate the contents of the environment variable
|
|
.I xxx ,
|
|
as returned by
|
|
.BR getenv (3).
|
|
.B \eV
|
|
is interpreted in copy-mode.
|
|
.TP
|
|
.BI \eY x
|
|
.TQ
|
|
.BI \eY( xx
|
|
.TQ
|
|
.BI \eY[ xxx ]
|
|
This is approximately equivalent to
|
|
.BI \eX'\e*[ xxx ]'\fR.
|
|
However the contents of the string or macro
|
|
.I xxx
|
|
are not interpreted;
|
|
also it is permitted for
|
|
.I xxx
|
|
to have been defined as a macro and thus contain newlines
|
|
(it is not permitted for the argument to
|
|
.B \eX
|
|
to contain newlines).
|
|
The inclusion of newlines requires an extension to the Unix troff output
|
|
format, and will confuse drivers that do not know about this
|
|
extension.
|
|
.TP
|
|
.BI \eZ' anything '
|
|
Print anything and then restore the horizontal and vertical
|
|
position;
|
|
.I anything
|
|
may not contain tabs or leaders.
|
|
.TP
|
|
.B \e$0
|
|
The name by which the current macro was invoked.
|
|
The
|
|
.B als
|
|
request can make a macro have more than one name.
|
|
.TP
|
|
.B \e$*
|
|
In a macro, the concatenation of all the arguments separated by spaces.
|
|
.TP
|
|
.B \e$@
|
|
In a macro, the concatenation of all the arguments with each surrounded by
|
|
double quotes, and separated by spaces.
|
|
.TP
|
|
.BI \e$( nn
|
|
.TQ
|
|
.BI \e$[ nnn ]
|
|
In a macro, this gives the
|
|
.IR nn -th
|
|
or
|
|
.IR nnn -th
|
|
argument.
|
|
Macros can have a unlimited number of arguments.
|
|
.TP
|
|
.BI \e? anything \e?
|
|
When used in a diversion, this will transparently embed
|
|
.I anything
|
|
in the diversion.
|
|
.I anything
|
|
is read in copy mode.
|
|
When the diversion is reread,
|
|
.I anything
|
|
will be interpreted.
|
|
.I anything
|
|
may not contain newlines; use
|
|
.B \e!
|
|
if you want to embed newlines in a diversion.
|
|
The escape sequence
|
|
.B \e?
|
|
is also recognised in copy mode and turned into a single internal
|
|
code; it is this code that terminates
|
|
.IR anything .
|
|
Thus
|
|
.RS
|
|
.RS
|
|
.ft B
|
|
.nf
|
|
.ne 15
|
|
\&.nr x 1
|
|
\&.nf
|
|
\&.di d
|
|
\e?\e\e?\e\e\e\e?\e\e\e\e\e\e\e\enx\e\e\e\e?\e\e?\e?
|
|
\&.di
|
|
\&.nr x 2
|
|
\&.di e
|
|
\&.d
|
|
\&.di
|
|
\&.nr x 3
|
|
\&.di f
|
|
\&.e
|
|
\&.di
|
|
\&.nr x 4
|
|
\&.f
|
|
.fi
|
|
.ft
|
|
.RE
|
|
.RE
|
|
.IP
|
|
will print
|
|
.BR 4 .
|
|
.TP
|
|
.B \e/
|
|
This increases the width of the preceding character so that
|
|
the spacing between that character and the following character
|
|
will be correct if the following character is a roman character.
|
|
For example, if an italic f is immediately followed by a roman
|
|
right parenthesis, then in many fonts the top right portion of the f
|
|
will overlap the top left of the right parenthesis producing \fIf\fR)\fR,
|
|
which is ugly.
|
|
Inserting
|
|
.B \e/
|
|
produces
|
|
.ie \n(.g \fIf\/\fR)\fR
|
|
.el \fIf\|\fR)\fR
|
|
and avoids this problem.
|
|
It is a good idea to use this escape sequence whenever an
|
|
italic character is immediately followed by a roman character without any
|
|
intervening space.
|
|
.TP
|
|
.B \e,
|
|
This modifies the spacing of the following character so that the spacing
|
|
between that character and the preceding character will correct if
|
|
the preceding character is a roman character.
|
|
For example, inserting
|
|
.B \e,
|
|
between the parenthesis and the f changes
|
|
\fR(\fIf\fR to
|
|
.ie \n(.g \fR(\,\fIf\fR.
|
|
.el \fR(\^\fIf\fR.
|
|
It is a good idea to use this escape sequence whenever a
|
|
roman character is immediately followed by an italic character without any
|
|
intervening space.
|
|
.TP
|
|
.B \e)
|
|
Like
|
|
.B \e&
|
|
except that it behaves like a character declared with the
|
|
.B cflags
|
|
request to be transparent for the purposes of end of sentence recognition.
|
|
.TP
|
|
.B \e~
|
|
This produces an unbreakable space that stretches like a normal inter-word
|
|
space when a line is adjusted.
|
|
.TP
|
|
.B \e#
|
|
Everything up to and including the next newline is ignored.
|
|
This is interpreted in copy mode.
|
|
This is like
|
|
.B \e"
|
|
except that
|
|
.B \e"
|
|
does not ignore the terminating newline.
|
|
.SS New requests
|
|
.TP
|
|
.BI .aln\ xx\ yy
|
|
Create an alias
|
|
.I xx
|
|
for number register object named
|
|
.IR yy .
|
|
The new name and the old name will be exactly equivalent.
|
|
If
|
|
.I yy
|
|
is undefined, a warning of type
|
|
.B reg
|
|
will be generated, and the request will be ignored.
|
|
.TP
|
|
.BI .als\ xx\ yy
|
|
Create an alias
|
|
.I xx
|
|
for request, string, macro, or diversion object named
|
|
.IR yy .
|
|
The new name and the old name will be exactly equivalent (it is similar to a
|
|
hard rather than a soft link).
|
|
If
|
|
.I yy
|
|
is undefined, a warning of type
|
|
.B mac
|
|
will be generated, and the request will be ignored.
|
|
The
|
|
.BR de ,
|
|
.BR am ,
|
|
.BR di ,
|
|
.BR da ,
|
|
.BR ds ,
|
|
and
|
|
.B as
|
|
requests only create a new object if the name of the macro, diversion
|
|
or string diversion is currently undefined or if it is defined to be a
|
|
request; normally they modify the value of an existing object.
|
|
.TP
|
|
.BI .asciify\ xx
|
|
This request only exists in order to make it possible
|
|
to make certain gross hacks work with GNU troff.
|
|
It `unformats' the diversion
|
|
.I xx
|
|
in such a way that
|
|
.SM ASCII
|
|
characters that were formatted and diverted into
|
|
.I xx
|
|
will be treated like ordinary input characters when
|
|
.I xx
|
|
is reread.
|
|
For example, this
|
|
.RS
|
|
.IP
|
|
.ne 7v+\n(.Vu
|
|
.ft B
|
|
.nf
|
|
.ss 24
|
|
\&.tr @.
|
|
\&.di x
|
|
\&@nr\e n\e 1
|
|
\&.br
|
|
\&.di
|
|
\&.tr @@
|
|
\&.asciify x
|
|
\&.x
|
|
.ss 12
|
|
.fi
|
|
.RE
|
|
.IP
|
|
will set register
|
|
.B n
|
|
to 1.
|
|
.TP
|
|
.B .backtrace
|
|
Print a backtrace of the input stack on stderr.
|
|
.TP
|
|
.BI .blm\ xx
|
|
Set the blank line macro to
|
|
.IR xx .
|
|
If there is a blank line macro,
|
|
it will be invoked when a blank line is encountered instead of the usual
|
|
troff behaviour.
|
|
.TP
|
|
.B .break
|
|
Break out of a while loop.
|
|
See also the
|
|
.B while
|
|
and
|
|
.B continue
|
|
requests.
|
|
Be sure not to confuse this with the
|
|
.B br
|
|
request.
|
|
.TP
|
|
.BI .cflags\ n\ c1\ c2\|.\|.\|.
|
|
Characters
|
|
.IR c1 ,
|
|
.IR c2 ,\|.\|.\|.
|
|
have properties determined by
|
|
.IR n ,
|
|
which is ORed from the following:
|
|
.RS
|
|
.TP
|
|
1
|
|
the character ends sentences
|
|
(initially characters
|
|
.B .?!
|
|
have this property);
|
|
.TP
|
|
2
|
|
lines can be broken before the character
|
|
(initially no characters have this property);
|
|
a line will not be broken at a character with this property
|
|
unless the characters on each side both have non-zero
|
|
hyphenation codes.
|
|
.TP
|
|
4
|
|
lines can be broken after the character
|
|
(initially characters
|
|
.B \-\e(hy\e(em
|
|
have this property);
|
|
a line will not be broken at a character with this property
|
|
unless the characters on each side both have non-zero
|
|
hyphenation codes.
|
|
.TP
|
|
8
|
|
the character overlaps horizontally
|
|
(initially characters
|
|
.B \e(ul\e(rn\e(ru
|
|
have this property);
|
|
.TP
|
|
16
|
|
the character overlaps vertically
|
|
(initially character
|
|
.B \e(br
|
|
has this property);
|
|
.TP
|
|
32
|
|
an end of sentence character followed by any number of characters
|
|
with this property will be treated
|
|
as the end of a sentence if followed by a newline or two spaces;
|
|
in other words
|
|
the character is transparent for the purposes of end of sentence
|
|
recognition;
|
|
this is the same as having a zero space factor in \*(tx
|
|
(initially characters
|
|
.B \(ts')]*\e(dg\e(rq
|
|
have this property).
|
|
.RE
|
|
.TP
|
|
.BI .char\ c\ string
|
|
Define character
|
|
.I c
|
|
to be
|
|
.IR string .
|
|
Every time character
|
|
.I c
|
|
needs to be printed,
|
|
.I string
|
|
will be processed in a temporary environment and the result
|
|
will be wrapped up into a single object.
|
|
Compatibility mode will be turned off
|
|
and the escape character will be set to
|
|
.B \e
|
|
while
|
|
.I string
|
|
is being processed.
|
|
Any emboldening, constant spacing or track kerning will be applied
|
|
to this object rather than to individual characters in
|
|
.IR string .
|
|
A character defined by this request can be used just like
|
|
a normal character provided by the output device.
|
|
In particular other characters can be translated to it
|
|
with the
|
|
.B tr
|
|
request;
|
|
it can be made the leader character by the
|
|
.B lc
|
|
request;
|
|
repeated patterns can be drawn with the character using the
|
|
.B \el
|
|
and
|
|
.B \eL
|
|
escape sequences;
|
|
words containing the character can be hyphenated
|
|
correctly, if the
|
|
.B hcode
|
|
request is used to give the character a hyphenation code.
|
|
There is a special anti-recursion feature:
|
|
use of character within the character's definition
|
|
will be handled like normal characters not defined with
|
|
.BR char .
|
|
A character definition can be removed with the
|
|
.B rchar
|
|
request.
|
|
.TP
|
|
.BI .chop\ xx
|
|
Chop the last character off macro, string, or diversion
|
|
.IR xx .
|
|
This is useful for removing the newline from the end of diversions
|
|
that are to be interpolated as strings.
|
|
.TP
|
|
.BI .close\ stream
|
|
Close the stream named
|
|
.IR stream ;
|
|
.I stream
|
|
will no longer be an acceptable argument to the
|
|
.B write
|
|
request.
|
|
See the
|
|
.B open
|
|
request.
|
|
.TP
|
|
.B .continue
|
|
Finish the current iteration of a while loop.
|
|
See also the
|
|
.B while
|
|
and
|
|
.B break
|
|
requests.
|
|
.TP
|
|
.BI .cp\ n
|
|
If
|
|
.I n
|
|
is non-zero or missing, enable compatibility mode, otherwise
|
|
disable it.
|
|
In compatibility mode, long names are not recognised, and the
|
|
incompatibilities caused by long names do not arise.
|
|
.TP
|
|
.BI .do\ xxx
|
|
Interpret
|
|
.I .xxx
|
|
with compatibility mode disabled.
|
|
For example,
|
|
.RS
|
|
.IP
|
|
.B
|
|
\&.do fam T
|
|
.LP
|
|
would have the same effect as
|
|
.IP
|
|
.B
|
|
\&.fam T
|
|
.LP
|
|
except that it would work even if compatibility mode had been enabled.
|
|
Note that the previous compatibility mode is restored before any files
|
|
sourced by
|
|
.I xxx
|
|
are interpreted.
|
|
.RE
|
|
.TP
|
|
.BI .fam\ xx
|
|
Set the current font family to
|
|
.IR xx .
|
|
The current font family is part of the current environment.
|
|
See the description of the
|
|
.B sty
|
|
request for more information on font families.
|
|
.TP
|
|
.BI .fspecial\ f\ s1\ s2\|.\|.\|.
|
|
When the current font is
|
|
.IR f ,
|
|
fonts
|
|
.IR s1 ,
|
|
.IR s2 ,\|.\|.\|.
|
|
will be special, that is, they will searched for characters not in
|
|
the current font.
|
|
Any fonts specified in the
|
|
.B special
|
|
request will be searched after fonts specified in the
|
|
.B fspecial
|
|
request.
|
|
.TP
|
|
.BI .ftr\ f\ g
|
|
Translate font
|
|
.I f
|
|
to
|
|
.IR g .
|
|
Whenever a font named
|
|
.I f
|
|
is referred to in
|
|
.B \ef
|
|
escape sequence,
|
|
or in the
|
|
.BR ft ,
|
|
.BR ul ,
|
|
.BR bd ,
|
|
.BR cs ,
|
|
.BR tkf ,
|
|
.BR special ,
|
|
.BR fspecial ,
|
|
.BR fp ,
|
|
or
|
|
.BR sty
|
|
requests,
|
|
font
|
|
.I g
|
|
will be used.
|
|
If
|
|
.I g
|
|
is missing,
|
|
or equal to
|
|
.I f
|
|
then font
|
|
.I f
|
|
will not be translated.
|
|
.TP
|
|
.BI .hcode \ c1\ code1\ c2\ code2\|.\|.\|.
|
|
Set the hyphenation code of character
|
|
.I c1
|
|
to
|
|
.I code1
|
|
and that of
|
|
.I c2
|
|
to
|
|
.IR code2 .
|
|
A hyphenation code must be a single input
|
|
character (not a special character) other than a digit or a space.
|
|
Initially each lower-case letter has a hyphenation code, which
|
|
is itself, and each upper-case letter has a hyphenation code
|
|
which is the lower case version of itself.
|
|
See also the
|
|
.B hpf
|
|
request.
|
|
.TP
|
|
.BI .hla\ lang
|
|
Set the current hyphenation language to
|
|
.IR lang .
|
|
Hyphenation exceptions specified with the
|
|
.B hw
|
|
request and hyphenation patterns specified with the
|
|
.B hpf
|
|
request are both associated with the current hyphenation language.
|
|
The
|
|
.B hla
|
|
request is usually invoked by the
|
|
.B troffrc
|
|
file.
|
|
.TP
|
|
.BI .hlm\ n
|
|
Set the maximum number of consecutive hyphenated lines to
|
|
.IR n .
|
|
If
|
|
.I n
|
|
is negative, there is no maximum.
|
|
The default value is \-1.
|
|
This value is associated with the current environment.
|
|
Only lines output from an environment count towards the maximum associated
|
|
with that environment.
|
|
Hyphens resulting from
|
|
.B \e%
|
|
are counted; explicit hyphens are not.
|
|
.TP
|
|
.BI .hpf\ file
|
|
Read hyphenation patterns from
|
|
.IR file ;
|
|
this will be searched for in the same way that
|
|
.BI tmac. name
|
|
is searched for when the
|
|
.BI \-m name
|
|
option is specified.
|
|
It should have the same format as the argument to
|
|
the \epatterns primitive in \*(tx;
|
|
the letters appearing in this file are interpreted as hyphenation
|
|
codes.
|
|
A
|
|
.B %
|
|
character in the patterns file introduces a comment that continues
|
|
to the end of the line.
|
|
The set of hyphenation patterns is associated with the current language
|
|
set by the
|
|
.B hla
|
|
request.
|
|
The
|
|
.B hpf
|
|
request
|
|
is usually invoked by the
|
|
.B troffrc
|
|
file.
|
|
.TP
|
|
.BI .hym\ n
|
|
Set the
|
|
.I hyphenation margin
|
|
to
|
|
.IR n :
|
|
when the current adjustment mode is not
|
|
.BR b ,
|
|
the line will not be hyphenated if the line is no more than
|
|
.I n
|
|
short.
|
|
The default hyphenation margin is 0.
|
|
The default scaling indicator for this request is
|
|
.IR m .
|
|
The hyphenation margin is associated with the current environment.
|
|
The current hyphenation margin is available in the
|
|
.B \en[.hym]
|
|
register.
|
|
.TP
|
|
.BI .hys\ n
|
|
Set the
|
|
.I hyphenation space
|
|
to
|
|
.IR n :
|
|
when the current adjustment mode is
|
|
.B b
|
|
don't hyphenate the line if the line can be justified by adding no more than
|
|
.I n
|
|
extra space to each word space.
|
|
The default hyphenation space is 0.
|
|
The default scaling indicator for this request is
|
|
.BR m .
|
|
The hyphenation space is associated with the current environment.
|
|
The current hyphenation space is available in the
|
|
.B \en[.hys]
|
|
register.
|
|
.TP
|
|
.BI .kern\ n
|
|
If
|
|
.I n
|
|
is non-zero or missing, enable pairwise kerning, otherwise disable it.
|
|
.TP
|
|
.BI .mso\ file
|
|
The same as the
|
|
.B so
|
|
request except that
|
|
.I file
|
|
is searched for in the same way that
|
|
.BI tmac. name
|
|
is searched for when the
|
|
.BI \-m name
|
|
option is specified.
|
|
.TP
|
|
.B .nroff
|
|
Make the
|
|
.B n
|
|
built-in condition true
|
|
and the
|
|
.B t
|
|
built-in condition false.
|
|
This can be reversed using the
|
|
.B troff
|
|
request.
|
|
.TP
|
|
.BI .open\ stream\ filename
|
|
Open
|
|
.I filename
|
|
for writing and associate the stream named
|
|
.I stream
|
|
with it.
|
|
See also the
|
|
.B close
|
|
and
|
|
.B write
|
|
requests.
|
|
.TP
|
|
.BI .opena\ stream\ filename
|
|
Like
|
|
.BR open ,
|
|
but if
|
|
.I filename
|
|
exists, append to it instead of truncating it.
|
|
.TP
|
|
.B .pnr
|
|
Print the names and contents of all currently defined number registers
|
|
on stderr.
|
|
.TP
|
|
.BI .pso \ command
|
|
This is behaves like the
|
|
.B so
|
|
request except that input comes from the standard output of
|
|
.IR command .
|
|
.TP
|
|
.B .ptr
|
|
Print the names and positions of all traps (not including input line
|
|
traps and diversion traps) on stderr. Empty slots in the page trap
|
|
list are printed as well, because they can affect the priority of
|
|
subsequently planted traps.
|
|
.TP
|
|
.BI .rchar\ c1\ c2\|.\|.\|.
|
|
Remove the definitions of characters
|
|
.IR c1 ,
|
|
.IR c2 ,\|.\|.\|.
|
|
This undoes the effect of a
|
|
.B char
|
|
request.
|
|
.TP
|
|
.B .rj
|
|
.TQ
|
|
.BI .rj\ n
|
|
Right justify the next
|
|
.I n
|
|
input lines.
|
|
Without an argument right justify the next input line.
|
|
The number of lines to be right justified is available in the
|
|
.B \en[.rj]
|
|
register.
|
|
This implicitly does
|
|
.BR .ce\ 0 .
|
|
The
|
|
.B ce
|
|
request implicitly does
|
|
.BR .rj\ 0 .
|
|
.TP
|
|
.BI .rnn \ xx\ yy
|
|
Rename number register
|
|
.I xx
|
|
to
|
|
.IR yy .
|
|
.TP
|
|
.BI .shc\ c
|
|
Set the soft hyphen character to
|
|
.IR c .
|
|
If
|
|
.I c
|
|
is omitted,
|
|
the soft hyphen character will be set to the default
|
|
.BR \e(hy .
|
|
The soft hyphen character is the character which will be inserted
|
|
when a word is hyphenated at a line break.
|
|
If the soft hyphen character does not exist in the font of the character
|
|
immediately preceding a potential break point,
|
|
then the line will not be broken at that point.
|
|
Neither definitions (specified with the
|
|
.B char
|
|
request)
|
|
nor translations (specified with the
|
|
.B tr
|
|
request)
|
|
are considered when finding the soft hyphen character.
|
|
.TP
|
|
.BI .shift\ n
|
|
In a macro, shift the arguments by
|
|
.I n
|
|
positions:
|
|
argument
|
|
.I i
|
|
becomes argument
|
|
.IR i \- n ;
|
|
arguments 1 to
|
|
.I n
|
|
will no longer be available.
|
|
If
|
|
.I n
|
|
is missing,
|
|
arguments will be shifted by 1.
|
|
Shifting by negative amounts is currently undefined.
|
|
.TP
|
|
.BI .special\ s1\ s2\|.\|.\|.
|
|
Fonts
|
|
.IR s1 ,
|
|
.IR s2 ,
|
|
are special and will be searched for characters not in the
|
|
current font.
|
|
.TP
|
|
.BI .sty\ n\ f
|
|
Associate style
|
|
.I f
|
|
with font position
|
|
.IR n .
|
|
A font position can be associated either with a font or
|
|
with a style.
|
|
The current font is the index of a font position and so is also
|
|
either a font or a style.
|
|
When it is a style, the font that is actually used is the font the
|
|
name of which is the concatenation of the name of the current family
|
|
and the name of the current style.
|
|
For example, if the current font is 1 and font position 1 is
|
|
associated with style
|
|
.B R
|
|
and the current
|
|
font family is
|
|
.BR T ,
|
|
then font
|
|
.BR TR
|
|
will be used.
|
|
If the current font is not a style, then the current family is ignored.
|
|
When the requests
|
|
.BR cs ,
|
|
.BR bd ,
|
|
.BR tkf ,
|
|
.BR uf ,
|
|
or
|
|
.B fspecial
|
|
are applied to a style,
|
|
then they will instead be applied to the member of the
|
|
current family corresponding to that style.
|
|
The default family can be set with the
|
|
.B \-f
|
|
option.
|
|
The styles command in the
|
|
.SM DESC
|
|
file controls which font positions
|
|
(if any) are initially associated with styles rather than fonts.
|
|
.TP
|
|
.BI .tkf\ f\ s1\ n1\ s2\ n2
|
|
Enable track kerning for font
|
|
.IR f .
|
|
When the current font is
|
|
.I f
|
|
the width of every character will be increased by an amount
|
|
between
|
|
.I n1
|
|
and
|
|
.IR n2 ;
|
|
when the current point size is less than or equal to
|
|
.I s1
|
|
the width will be increased by
|
|
.IR n1 ;
|
|
when it is greater than or equal to
|
|
.I s2
|
|
the width will be increased by
|
|
.IR n2 ;
|
|
when the point size is greater than or equal to
|
|
.I s1
|
|
and less than or equal to
|
|
.I s2
|
|
the increase in width is a linear function of the point size.
|
|
.TP
|
|
.BI .trf\ filename
|
|
Transparently output the contents of file
|
|
.IR filename .
|
|
Each line is output as it would be were it preceded by
|
|
.BR \e! ;
|
|
however, the lines are not subject to copy-mode interpretation.
|
|
If the file does not end with a newline, then a newline will
|
|
be added.
|
|
For example, you can define a macro
|
|
.I x
|
|
containing the contents of file
|
|
.IR f ,
|
|
using
|
|
.RS
|
|
.IP
|
|
.BI .di\ x
|
|
.br
|
|
.BI .trf\ f
|
|
.br
|
|
.B .di
|
|
.LP
|
|
Unlike with the
|
|
.B cf
|
|
request,
|
|
the file cannot contain characters such as
|
|
.SM NUL
|
|
that are not legal troff input characters.
|
|
.RE
|
|
.TP
|
|
.B .trnt abcd
|
|
This is the same as the
|
|
.B tr
|
|
request except that the translations do not apply to text that is
|
|
transparently throughput into a diversion with
|
|
.BR \e! .
|
|
For example,
|
|
.RS
|
|
.LP
|
|
.nf
|
|
.ft B
|
|
\&.tr ab
|
|
\&.di x
|
|
\e!.tm a
|
|
\&.di
|
|
\&.x
|
|
.fi
|
|
.ft
|
|
.LP
|
|
will print
|
|
.BR b ;
|
|
if
|
|
.B trnt
|
|
is used instead of
|
|
.B tr
|
|
it will print
|
|
.BR a .
|
|
.RE
|
|
.TP
|
|
.B .troff
|
|
Make the
|
|
.B n
|
|
built-in condition false,
|
|
and the
|
|
.B t
|
|
built-in condition true.
|
|
This undoes the effect of the
|
|
.B nroff
|
|
request.
|
|
.TP
|
|
.BI .vpt\ n
|
|
Enable vertical position traps if
|
|
.I n
|
|
is non-zero, disable them otherwise.
|
|
Vertical position traps are traps set by the
|
|
.B wh
|
|
or
|
|
.B dt
|
|
requests.
|
|
Traps set by the
|
|
.B it
|
|
request are not vertical position traps.
|
|
The parameter that controls whether vertical position traps are enabled
|
|
is global.
|
|
Initially vertical position traps are enabled.
|
|
.TP
|
|
.BI .warn\ n
|
|
Control warnings.
|
|
.I n
|
|
is the sum of the numbers associated with each warning that is to be enabled;
|
|
all other warnings will be disabled.
|
|
The number associated with each warning is listed in the `Warnings' section.
|
|
For example,
|
|
.B .warn 0
|
|
will disable all warnings, and
|
|
.B .warn 1
|
|
will disable all warnings except that about missing characters.
|
|
If
|
|
.I n
|
|
is not given,
|
|
all warnings will be enabled.
|
|
.TP
|
|
.BI .while \ c\ anything
|
|
While condition
|
|
.I c
|
|
is true, accept
|
|
.I anything
|
|
as input;
|
|
.I c
|
|
can be any condition acceptable to an
|
|
.B if
|
|
request;
|
|
.I anything
|
|
can comprise multiple lines if the first line starts with
|
|
.B \e{
|
|
and the last line ends with
|
|
.BR \e} .
|
|
See also the
|
|
.B break
|
|
and
|
|
.B continue
|
|
requests.
|
|
.TP
|
|
.BI .write\ stream\ anything
|
|
Write
|
|
.I anything
|
|
to the stream named
|
|
.IR stream .
|
|
.I stream
|
|
must previously have been the subject of an
|
|
.B open
|
|
request.
|
|
.I anything
|
|
is read in copy mode;
|
|
a leading
|
|
.B \(ts
|
|
will be stripped.
|
|
.SS Extended requests
|
|
.TP
|
|
.BI .cf\ filename
|
|
When used in a diversion, this will embed in the diversion an object which,
|
|
when reread, will cause the contents of
|
|
.I filename
|
|
to be transparently copied through to the output.
|
|
In Unix troff, the
|
|
contents of
|
|
.I filename
|
|
is immediately copied through to the output regardless of whether
|
|
there is a current diversion; this behavior is so anomalous that it
|
|
must be considered a bug.
|
|
.TP
|
|
.BI .ev\ xx
|
|
If
|
|
.I xx
|
|
is not a number, this will switch to a named environment called
|
|
.IR xx .
|
|
The environment should be popped with a matching
|
|
.B ev
|
|
request without any arguments, just as for numbered environments.
|
|
There is no limit on the number of named environments; they will be
|
|
created the first time that they are referenced.
|
|
.TP
|
|
.BI .fp\ n\ f1\ f2
|
|
The
|
|
.B fp
|
|
request has an optional third argument.
|
|
This argument gives the external name of the font,
|
|
which is used for finding the font description file.
|
|
The second argument gives the internal name of the font
|
|
which is used to refer to the font in troff after it has been mounted.
|
|
If there is no third argument then the internal name will be used
|
|
as the external name.
|
|
This feature allows you to use fonts with long names in compatibility mode.
|
|
.TP
|
|
.BI .ss\ m\ n
|
|
When two arguments are given to the
|
|
.B ss
|
|
request, the second argument gives the
|
|
.IR "sentence space size" .
|
|
If the second argument is not given, the sentence space size
|
|
will be the same as the word space size.
|
|
Like the word space size, the sentence space is in units of
|
|
one twelfth of the spacewidth parameter for the current font.
|
|
Initially both the word space size and the sentence
|
|
space size are 12.
|
|
The sentence space size is used in two circumstances:
|
|
if the end of a sentence occurs at the end of a line in fill mode, then
|
|
both an inter-word space and a sentence space will be added;
|
|
if two spaces follow the end of a sentence in the middle of a line,
|
|
then the second space will be a sentence space.
|
|
Note that the behavior of Unix troff will be exactly
|
|
that exhibited by GNU troff if a second argument is never given to the
|
|
.B ss
|
|
request.
|
|
In GNU troff, as in Unix troff, you should always
|
|
follow a sentence with either a newline or two spaces.
|
|
.TP
|
|
.BI .ta\ n1\ n2\|.\|.\|.nn \ T\ r1\ r2\|.\|.\|.\|rn
|
|
Set tabs at positions
|
|
.IR n1 ,
|
|
.IR n2 ,\|.\|.\|.\|,
|
|
.I nn
|
|
and then set tabs at
|
|
.IR nn + r1 ,
|
|
.IR nn + r2 ,\|.\|.\|.\|.\|,
|
|
.IR nn + rn
|
|
and then at
|
|
.IR nn + rn + r1 ,
|
|
.IR nn + rn + r2 ,\|.\|.\|.\|,
|
|
.IR nn + rn + rn ,
|
|
and so on.
|
|
For example,
|
|
.RS
|
|
.IP
|
|
.B
|
|
\&.ta T .5i
|
|
.LP
|
|
will set tabs every half an inch.
|
|
.RE
|
|
.SS New number registers
|
|
The following read-only registers are available:
|
|
.TP
|
|
.B \en[.C]
|
|
1 if compatibility mode is in effect, 0 otherwise.
|
|
.TP
|
|
.B \en[.cdp]
|
|
The depth of the last character added to the current environment.
|
|
It is positive if the character extends below the baseline.
|
|
.TP
|
|
.B \en[.ce]
|
|
The number of lines remaining to be centered, as set by the
|
|
.B ce
|
|
request.
|
|
.TP
|
|
.B \en[.cht]
|
|
The height of the last character added to the current environment.
|
|
It is positive if the character extends above the baseline.
|
|
.TP
|
|
.B \en[.csk]
|
|
The skew of the last character added to the current environment.
|
|
The
|
|
.I skew
|
|
of a character is how far to the right of the center of a character
|
|
the center of an accent over that character should be placed.
|
|
.TP
|
|
.B \en[.ev]
|
|
The name or number of the current environment.
|
|
This is a string-valued register.
|
|
.TP
|
|
.B \en[.fam]
|
|
The current font family.
|
|
This is a string-valued register.
|
|
.TP
|
|
.B \en[.fp]
|
|
The number of the next free font position.
|
|
.TP
|
|
.B \en[.g]
|
|
Always 1.
|
|
Macros should use this to determine whether they are running
|
|
under GNU troff.
|
|
.TP
|
|
.B \en[.hla]
|
|
The current hyphenation language as set by the
|
|
.B hla
|
|
request.
|
|
.TP
|
|
.B \en[.hlc]
|
|
The number of immediately preceding consecutive hyphenated lines.
|
|
.TP
|
|
.B \en[.hlm]
|
|
The maximum allowed number of consecutive hyphenated lines, as set by the
|
|
.B hlm
|
|
request.
|
|
.TP
|
|
.B \en[.hy]
|
|
The current hyphenation flags (as set by the
|
|
.B hy
|
|
request.)
|
|
.TP
|
|
.B \en[.hym]
|
|
The current hyphenation margin (as set by the
|
|
.B hym
|
|
request.)
|
|
.TP
|
|
.B \en[.hys]
|
|
The current hyphenation space (as set by the
|
|
.B hys
|
|
request.)
|
|
.TP
|
|
.B \en[.in]
|
|
The indent that applies to the current output line.
|
|
.TP
|
|
.B \en[.kern]
|
|
.B 1
|
|
if pairwise kerning is enabled,
|
|
.B 0
|
|
otherwise.
|
|
.TP
|
|
.B \en[.lg]
|
|
The current ligature mode (as set by the
|
|
.B lg
|
|
request.)
|
|
.TP
|
|
.B \en[.ll]
|
|
The line length that applies to the current output line.
|
|
.TP
|
|
.B \en[.lt]
|
|
The title length as set by the
|
|
.B lt
|
|
request.
|
|
.TP
|
|
.B \en[.ne]
|
|
The amount of space that was needed in the last
|
|
.B ne
|
|
request that caused a trap to be sprung.
|
|
Useful in conjunction with the
|
|
.B \en[.trunc]
|
|
register.
|
|
.TP
|
|
.B \en[.pn]
|
|
The number of the next page:
|
|
either the value set by a
|
|
.B pn
|
|
request, or the number of the current page plus 1.
|
|
.TP
|
|
.B \en[.ps]
|
|
The current pointsize in scaled points.
|
|
.TP
|
|
.B \en[.psr]
|
|
The last-requested pointsize in scaled points.
|
|
.TP
|
|
.B \en[.rj]
|
|
The number of lines to be right-justified as set by the
|
|
.B rj
|
|
request.
|
|
.TP
|
|
.B \en[.sr]
|
|
The last requested pointsize in points as a decimal fraction.
|
|
This is a string-valued register.
|
|
.TP
|
|
.B \en[.tabs]
|
|
A string representation of the current tab settings suitable for use as
|
|
an argument to the
|
|
.B ta
|
|
request.
|
|
.TP
|
|
.B \en[.trunc]
|
|
The amount of vertical space truncated by the most recently sprung
|
|
vertical position trap, or,
|
|
if the trap was sprung by a
|
|
.B ne
|
|
request,
|
|
minus the amount of vertical motion produced by the
|
|
.B ne
|
|
request.
|
|
In other words, at the point a trap is sprung, it represents the difference
|
|
of what the vertical position would have been but for the trap,
|
|
and what the vertical position actually is.
|
|
Useful in conjunction with the
|
|
.B \en[.ne]
|
|
register.
|
|
.TP
|
|
.B \en[.ss]
|
|
.TQ
|
|
.B \en[.sss]
|
|
These give the values of the parameters set by the
|
|
first and second arguments of the
|
|
.B ss
|
|
request.
|
|
.TP
|
|
.B \en[.vpt]
|
|
1 if vertical position traps are enabled, 0 otherwise.
|
|
.TP
|
|
.B \en[.warn]
|
|
The sum of the numbers associated with each of the currently enabled
|
|
warnings.
|
|
The number associated with each warning is listed in the `Warnings'
|
|
subsection.
|
|
.TP
|
|
.B \en(.x
|
|
The major version number.
|
|
For example, if the version number is
|
|
.B 1.03
|
|
then
|
|
.B \en(.x
|
|
will contain
|
|
.BR 1 .
|
|
.TP
|
|
.B \en(.y
|
|
The minor version number.
|
|
For example, if the version number is
|
|
.B 1.03
|
|
then
|
|
.B \en(.y
|
|
will contain
|
|
.BR 03 .
|
|
.LP
|
|
The following registers are set by the
|
|
.B \ew
|
|
escape sequence:
|
|
.TP
|
|
.B \en[rst]
|
|
.TQ
|
|
.B \en[rsb]
|
|
Like the
|
|
.B st
|
|
and
|
|
.B sb
|
|
registers, but takes account of the heights and depths of characters.
|
|
.TP
|
|
.B \en[ssc]
|
|
The amount of horizontal space (possibly negative) that should
|
|
be added to the last character before a subscript.
|
|
.TP
|
|
.B \en[skw]
|
|
How far to right of the center of the last character
|
|
in the
|
|
.B \ew
|
|
argument,
|
|
the center of an accent from a roman font should be placed over that character.
|
|
.LP
|
|
The following read/write number registers are available:
|
|
.TP
|
|
.B \en[systat]
|
|
The return value of the system() function executed by the last
|
|
.B sy
|
|
request.
|
|
.TP
|
|
.B \en[slimit]
|
|
If greater than 0, the maximum number of objects on the input stack.
|
|
If less than or equal to 0, there is no limit on the number of objects
|
|
on the input stack. With no limit, recursion can continue until
|
|
virtual memory is exhausted.
|
|
.SS Miscellaneous
|
|
.LP
|
|
Fonts not listed in the
|
|
.SM DESC
|
|
file are automatically mounted on the next available font position
|
|
when they are referenced.
|
|
If a font is to be mounted explicitly with the
|
|
.B fp
|
|
request on an unused font position,
|
|
it should be mounted on the first unused font position,
|
|
which can be found in the
|
|
.B \en[.fp]
|
|
register;
|
|
although
|
|
.B troff
|
|
does not enforce this strictly,
|
|
it will not allow a font to be mounted at a position whose number is much
|
|
greater than that of any currently used position.
|
|
.LP
|
|
Interpolating a string does not hide existing macro arguments.
|
|
Thus in a macro, a more efficient way of doing
|
|
.IP
|
|
.BI . xx\ \e\e$@
|
|
.LP
|
|
is
|
|
.IP
|
|
.BI \e\e*[ xx ]\e\e
|
|
.LP
|
|
If the font description file contains pairwise kerning information,
|
|
characters from that font will be kerned.
|
|
Kerning between two characters can be inhibited by placing a
|
|
.B \e&
|
|
between them.
|
|
.LP
|
|
In a string comparison in a condition,
|
|
characters that appear at different input levels
|
|
to the first delimiter character will not be recognised
|
|
as the second or third delimiters.
|
|
This applies also to the
|
|
.B tl
|
|
request.
|
|
In a
|
|
.B \ew
|
|
escape sequence,
|
|
a character that appears at a different input level to
|
|
the starting delimiter character will not be recognised
|
|
as the closing delimiter character.
|
|
When decoding a macro argument that is delimited
|
|
by double quotes, a character that appears at a different
|
|
input level to the starting delimiter character will not
|
|
be recognised as the closing delimiter character.
|
|
The implementation of
|
|
.B \e$@
|
|
ensures that the double quotes surrounding an argument
|
|
will appear the same input level, which will be different
|
|
to the input level of the argument itself.
|
|
In a long escape name
|
|
.B ]
|
|
will not be recognized as a closing delimiter except
|
|
when it occurs at the same input level as the opening
|
|
.BR ] .
|
|
In compatibility mode, no attention is paid to the input-level.
|
|
.LP
|
|
There are some new types of condition:
|
|
.TP
|
|
.BI .if\ r xxx
|
|
True if there is a number register named
|
|
.IR xxx .
|
|
.TP
|
|
.BI .if\ d xxx
|
|
True if there is a string, macro, diversion, or request named
|
|
.IR xxx .
|
|
.TP
|
|
.BI .if\ c ch
|
|
True if there is a character
|
|
.IR ch
|
|
available;
|
|
.I ch
|
|
is either an
|
|
.SM ASCII
|
|
character
|
|
or a special character
|
|
.BI \e( xx
|
|
or
|
|
.BI \e[ xxx ]\fR;
|
|
the condition will also be true if
|
|
.I ch
|
|
has been defined by the
|
|
.B char
|
|
request.
|
|
.SS Warnings
|
|
The warnings that can be given by
|
|
.B troff
|
|
are divided into the following categories.
|
|
The name associated with each warning is used by the
|
|
.B \-w
|
|
and
|
|
.B \-W
|
|
options;
|
|
the number is used by the
|
|
.B warn
|
|
request, and by the
|
|
.B .warn
|
|
register.
|
|
.nr x \w'\fBright-brace'+1n+\w'0000'u
|
|
.ta \nxuR
|
|
.TP \nxu+3n
|
|
.BR char \t1
|
|
Non-existent characters.
|
|
This is enabled by default.
|
|
.TP
|
|
.BR number \t2
|
|
Invalid numeric expressions.
|
|
This is enabled by default.
|
|
.TP
|
|
.BR break \t4
|
|
In fill mode, lines which could not be broken so that their length was
|
|
less than the line length.
|
|
This is enabled by default.
|
|
.TP
|
|
.BR delim \t8
|
|
Missing or mismatched closing delimiters.
|
|
.TP
|
|
.BR el \t16
|
|
Use of the
|
|
.B el
|
|
request with no matching
|
|
.B ie
|
|
request.
|
|
.TP
|
|
.BR scale \t32
|
|
Meaningless scaling indicators.
|
|
.TP
|
|
.BR range \t64
|
|
Out of range arguments.
|
|
.TP
|
|
.BR syntax \t128
|
|
Dubious syntax in numeric expressions.
|
|
.TP
|
|
.BR di \t256
|
|
Use of
|
|
.B di
|
|
or
|
|
.B da
|
|
without an argument when there is no current diversion.
|
|
.TP
|
|
.BR mac \t512
|
|
Use of undefined strings, macros and diversions.
|
|
When an undefined string, macro or diversion is used,
|
|
that string is automatically defined as empty.
|
|
So, in most cases, at most one warning will be given for
|
|
each name.
|
|
.TP
|
|
.BR reg \t1024
|
|
Use of undefined number registers.
|
|
When an undefined number register is used,
|
|
that register is automatically defined to have a value of 0.
|
|
a definition is automatically made with a value of 0.
|
|
So, in most cases, at most one warning will be given for
|
|
use of a particular name.
|
|
.TP
|
|
.BR tab \t2048
|
|
Inappropriate use of a tab character.
|
|
Either use of a tab character where a number was expected,
|
|
or use of tab character in an unquoted macro argument.
|
|
.TP
|
|
.BR right-brace \t4096
|
|
Use of
|
|
.B \e}
|
|
where a number was expected.
|
|
.TP
|
|
.BR missing \t8192
|
|
Requests that are missing non-optional arguments.
|
|
.TP
|
|
.BR input \t16384
|
|
Illegal input characters.
|
|
.TP
|
|
.BR escape \t32768
|
|
Unrecognized escape sequences.
|
|
When an unrecognized escape sequence is encountered,
|
|
the escape character is ignored.
|
|
.TP
|
|
.BR space \t65536
|
|
Missing space between a request or macro and its argument.
|
|
This warning will be given
|
|
when an undefined name longer than two characters is encountered,
|
|
and the first two characters of the name make a defined name.
|
|
The request or macro will not be invoked.
|
|
When this warning is given, no macro is automatically defined.
|
|
This is enabled by default.
|
|
This warning will never occur in compatibility mode.
|
|
.TP
|
|
.BR font \t131072
|
|
Non-existent fonts.
|
|
This is enabled by default.
|
|
.TP
|
|
.BR ig \t262144
|
|
Illegal escapes in text ignored with the
|
|
.B ig
|
|
request.
|
|
These are conditions that are errors when they do not occur
|
|
in ignored text.
|
|
.LP
|
|
There are also names that can be used to refer to groups of warnings:
|
|
.TP
|
|
.B all
|
|
All warnings except
|
|
.BR di ,
|
|
.B mac
|
|
and
|
|
.BR reg .
|
|
It is intended that this covers all warnings
|
|
that are useful with traditional macro packages.
|
|
.TP
|
|
.B w
|
|
All warnings.
|
|
.SS Incompatibilities
|
|
.LP
|
|
Long names cause some incompatibilities.
|
|
Unix troff will interpret
|
|
.IP
|
|
.B
|
|
\&.dsabcd
|
|
.LP
|
|
as defining a string
|
|
.B ab
|
|
with contents
|
|
.BR cd .
|
|
Normally, GNU troff will interpret this as a call of a macro named
|
|
.BR dsabcd .
|
|
Also Unix troff will interpret
|
|
.B \e*[
|
|
or
|
|
.B \en[
|
|
as references to a string or number register called
|
|
.BR [ .
|
|
In GNU troff, however, this will normally be interpreted as the start
|
|
of a long name.
|
|
In
|
|
.I compatibility mode
|
|
GNU troff will interpret these things in the traditional way.
|
|
In compatibility mode, however, long names are not recognised.
|
|
Compatibility mode can be turned on with the
|
|
.B \-C
|
|
command line option, and turned on or off with the
|
|
.B cp
|
|
request.
|
|
The number register
|
|
.B \en(.C
|
|
is 1 if compatibility mode is on, 0 otherwise.
|
|
.LP
|
|
GNU troff
|
|
does not allow the use of the escape sequences
|
|
.BR \\e\e|\e^\e&\e}\e{\e (space) \e'\e`\e-\e_\e!\e%\ec
|
|
in names of strings, macros, diversions, number registers,
|
|
fonts or environments; Unix troff does.
|
|
The
|
|
.B \eA
|
|
escape sequence may be helpful in avoiding use of these
|
|
escape sequences in names.
|
|
.LP
|
|
Fractional pointsizes cause one noteworthy incompatibility.
|
|
In Unix troff the
|
|
.B ps
|
|
request ignores scale indicators and so
|
|
.IP
|
|
.B .ps\ 10u
|
|
.LP
|
|
will set the pointsize to 10 points, whereas in
|
|
GNU troff it will set the pointsize to 10 scaled points.
|
|
.LP
|
|
In GNU troff there is a fundamental difference between unformatted,
|
|
input characters, and formatted, output characters.
|
|
Everything that affects how an output character
|
|
will be output is stored with the character; once an output
|
|
character has been constructed it is unaffected by any subsequent
|
|
requests that are executed, including
|
|
.BR bd ,
|
|
.BR cs ,
|
|
.BR tkf ,
|
|
.BR tr ,
|
|
or
|
|
.B fp
|
|
requests.
|
|
Normally output characters are constructed from input
|
|
characters at the moment immediately before the character
|
|
is added to the current output line.
|
|
Macros, diversions and strings are all, in fact, the same type
|
|
of object; they contain lists of input characters and output
|
|
characters in any combination.
|
|
An output character does not behave like an input character
|
|
for the purposes of macro processing; it does not inherit any
|
|
of the special properties that the input character from which it
|
|
was constructed might have had.
|
|
For example,
|
|
.IP
|
|
.nf
|
|
.ft B
|
|
\&.di x
|
|
\e\e\e\e
|
|
\&.br
|
|
\&.di
|
|
\&.x
|
|
.ft
|
|
.fi
|
|
.LP
|
|
will print
|
|
.B \e\e
|
|
in GNU troff;
|
|
each pair of input
|
|
.BR \e s
|
|
is turned into one output
|
|
.B \e
|
|
and the resulting output
|
|
.BR \e s
|
|
are not interpreted as escape characters when they are reread.
|
|
Unix troff would interpret them as escape characters
|
|
when they were reread and would end up printing one
|
|
.BR \e .
|
|
The correct way to obtain a printable
|
|
.B \e
|
|
is to use the
|
|
.B \ee
|
|
escape sequence: this will always print a single instance of the
|
|
current escape character, regardless of whether or not it is used in a
|
|
diversion; it will also work in both GNU troff and Unix troff.
|
|
If you wish for some reason to store in a diversion an escape
|
|
sequence that will be interpreted when the diversion is reread,
|
|
you can either use the traditional
|
|
.B \e!
|
|
transparent output facility, or, if this is unsuitable, the new
|
|
.B \e?
|
|
escape sequence.
|
|
.SH ENVIRONMENT
|
|
.TP
|
|
.SM
|
|
.B GROFF_TMAC_PATH
|
|
A colon separated list of directories in which to search for
|
|
macro files.
|
|
.TP
|
|
.SM
|
|
.B GROFF_TYPESETTER
|
|
Default device.
|
|
.TP
|
|
.SM
|
|
.B GROFF_FONT_PATH
|
|
A colon separated list of directories in which to search for the
|
|
.BI dev name
|
|
directory.
|
|
.B troff
|
|
will search in directories given in the
|
|
.B \-F
|
|
option before these, and in standard directories
|
|
.RB ( @FONTPATH@ )
|
|
after these.
|
|
.SH FILES
|
|
.Tp \w'@FONTDIR@/devname/DESC'u+3n
|
|
.B @MACRODIR@/troffrc
|
|
Initialization file
|
|
.TP
|
|
.BI @MACRODIR@/tmac. name
|
|
Macro files
|
|
.TP
|
|
.BI @FONTDIR@/dev name /DESC
|
|
Device description file for device
|
|
.IR name .
|
|
.TP
|
|
.BI @FONTDIR@/dev name / F
|
|
Font file for font
|
|
.I F
|
|
of device
|
|
.IR name .
|
|
.SH "SEE ALSO"
|
|
.BR groff (@MAN1EXT@)
|
|
.BR @g@tbl (@MAN1EXT@),
|
|
.BR @g@pic (@MAN1EXT@),
|
|
.BR @g@eqn (@MAN1EXT@),
|
|
.BR grops (@MAN1EXT@),
|
|
.BR grodvi (@MAN1EXT@),
|
|
.BR grotty (@MAN1EXT@),
|
|
.BR groff_font (@MAN5EXT@),
|
|
.BR groff_out (@MAN5EXT@),
|
|
.BR groff_char (@MAN7EXT@)
|