coreutils: Output formatting in ptx
7.5.4 Output formatting
-----------------------
Output format is mainly controlled by the ‘-O’ and ‘-T’ options
described in the table below. When neither ‘-O’ nor ‘-T’ are selected,
and if GNU extensions are enabled, the program chooses an output format
suitable for a dumb terminal. Each keyword occurrence is output to the
center of one line, surrounded by its left and right contexts. Each
field is properly justified, so the concordance output can be readily
observed. As a special feature, if automatic references are selected by
option ‘-A’ and are output before the left context, that is, if option
‘-R’ is _not_ selected, then a colon is added after the reference; this
nicely interfaces with GNU Emacs ‘next-error’ processing. In this
default output format, each white space character, like newline and tab,
is merely changed to exactly one space, with no special attempt to
compress consecutive spaces. This might change in the future. Except
for those white space characters, every other character of the
underlying set of 256 characters is transmitted verbatim.
Output format is further controlled by the following options.
‘-g NUMBER’
‘--gap-size=NUMBER’
Select the size of the minimum white space gap between the fields
on the output line.
‘-w NUMBER’
‘--width=NUMBER’
Select the maximum output width of each final line. If references
are used, they are included or excluded from the maximum output
width depending on the value of option ‘-R’. If this option is not
selected, that is, when references are output before the left
context, the maximum output width takes into account the maximum
length of all references. If this option is selected, that is,
when references are output after the right context, the maximum
output width does not take into account the space taken by
references, nor the gap that precedes them.
‘-A’
‘--auto-reference’
Select automatic references. Each input line will have an
automatic reference made up of the file name and the line ordinal,
with a single colon between them. However, the file name will be
empty when standard input is being read. If both ‘-A’ and ‘-r’ are
selected, then the input reference is still read and skipped, but
the automatic reference is used at output time, overriding the
input reference.
‘-R’
‘--right-side-refs’
In the default output format, when option ‘-R’ is not used, any
references produced by the effect of options ‘-r’ or ‘-A’ are
placed to the far right of output lines, after the right context.
With default output format, when the ‘-R’ option is specified,
references are rather placed at the beginning of each output line,
before the left context. For any other output format, option ‘-R’
is ignored, with one exception: with ‘-R’ the width of references
is _not_ taken into account in total output width given by ‘-w’.
This option is automatically selected whenever GNU extensions are
disabled.
‘-F STRING’
‘--flag-truncation=STRING’
This option will request that any truncation in the output be
reported using the string STRING. Most output fields theoretically
extend towards the beginning or the end of the current line, or
current sentence, as selected with option ‘-S’. But there is a
maximum allowed output line width, changeable through option ‘-w’,
which is further divided into space for various output fields.
When a field has to be truncated because it cannot extend beyond
the beginning or the end of the current line to fit in, then a
truncation occurs. By default, the string used is a single slash,
as in ‘-F /’.
STRING may have more than one character, as in ‘-F ...’. Also, in
the particular case when STRING is empty (‘-F ""’), truncation
flagging is disabled, and no truncation marks are appended in this
case.
As a matter of convenience to the user, many usual backslashed
escape sequences, as found in the C language, are recognized and
converted to the corresponding characters by ‘ptx’ itself.
‘-M STRING’
‘--macro-name=STRING’
Select another STRING to be used instead of ‘xx’, while generating
output suitable for ‘nroff’, ‘troff’ or TeX.
‘-O’
‘--format=roff’
Choose an output format suitable for ‘nroff’ or ‘troff’ processing.
Each output line will look like:
.xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"
so it will be possible to write a ‘.xx’ roff macro to take care of
the output typesetting. This is the default output format when GNU
extensions are disabled. Option ‘-M’ can be used to change ‘xx’ to
another macro name.
In this output format, each non-graphical character, like newline
and tab, is merely changed to exactly one space, with no special
attempt to compress consecutive spaces. Each quote character ‘"’
is doubled so it will be correctly processed by ‘nroff’ or ‘troff’.
‘-T’
‘--format=tex’
Choose an output format suitable for TeX processing. Each output
line will look like:
\xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}
so it will be possible to write a ‘\xx’ definition to take care of
the output typesetting. Note that when references are not being
produced, that is, neither option ‘-A’ nor option ‘-r’ is selected,
the last parameter of each ‘\xx’ call is inhibited. Option ‘-M’
can be used to change ‘xx’ to another macro name.
In this output format, some special characters, like ‘$’, ‘%’, ‘&’,
‘#’ and ‘_’ are automatically protected with a backslash. Curly
brackets ‘{’, ‘}’ are protected with a backslash and a pair of
dollar signs (to force mathematical mode). The backslash itself
produces the sequence ‘\backslash{}’. Circumflex and tilde
diacritical marks produce the sequence ‘^\{ }’ and ‘~\{ }’
respectively. Other diacriticized characters of the underlying
character set produce an appropriate TeX sequence as far as
possible. The other non-graphical characters, like newline and
tab, and all other characters which are not part of ASCII, are
merely changed to exactly one space, with no special attempt to
compress consecutive spaces. Let me know how to improve this
special character processing for TeX.