4.4BSD/usr/share/man/cat1/troff.0

Compare this file to the similar file:
Show the results in this format:




TROFF(1)               BSD Reference Manual              TROFF(1)


NNAAMMEE
       troff - format documents

SSYYNNOOPPSSIISS
       ttrrooffff [ --aabbiivvzzCCEERR ] [ --ww_n_a_m_e ] [ --WW_n_a_m_e ] [ --dd_c_s ]
             [ --ff_f_a_m ] [ --mm_n_a_m_e ] [ --nn_n_u_m ] [ --oo_l_i_s_t ] [ --rr_c_n ]
             [ --TT_n_a_m_e ] [ --FF_d_i_r ] [ --MM_d_i_r ] [ _f_i_l_e_s_._._. ]

DDEESSCCRRIIPPTTIIOONN
       This manual page describes the GNU version of ttrrooffff, 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  pre-
       processors and postprocessors in the appropriate order and
       with the appropriate options.

OOPPTTIIOONNSS
       --aa        Generate an ASCII approximation of  the  typeset
                 output.

       --bb        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 aass or aamm
                 requests.

       --ii        Read the standard  input  after  all  the  named
                 input files have been processed.

       --vv        Print the version number.

       --ww_n_a_m_e    Enable  warning  _n_a_m_e.   Available  warnings are
                 described  in  the  Warnings  subsection  below.
                 Multiple --ww options are allowed.

       --WW_n_a_m_e    Inhibit  warning  _n_a_m_e.  Multiple --WW options are
                 allowed.

       --EE        Inhibit all error messages.

       --zz        Suppress formatted output.

       --CC        Enable compatibility mode.

       --dd_c_s
       --dd_n_a_m_e==_s  Define _c or _n_a_m_e to be a string _s; _c must  be  a
                 one letter name.

       --ff_f_a_m     Use _f_a_m as the default font family.




Groff Version 1.08         1 April 1993                         1








TROFF(1)               BSD Reference Manual              TROFF(1)


       --mm_n_a_m_e    Read  in the file ttmmaacc.._n_a_m_e.  Normally this will
                 be searched for in /usr/share/tmac.

       --RR        Don't load ttrrooffffrrcc.

       --nn_n_u_m     Number the first page _n_u_m.

       --oo_l_i_s_t    Output only pages in _l_i_s_t,  which  is  a  comma-
                 separated  list  of  page  ranges; _n means print
                 page _n, _m--_n means print every page between _m and
                 _n,  --_n  means print every page up to _n, _n-- means
                 print every page from _n.

       --rr_c_n
       --rr_n_a_m_e==_n  Set number register _c or _n_a_m_e to _n; _c must be  a
                 one  character  name; _n can be any troff numeric
                 expression.

       --TT_n_a_m_e    Prepare output for device _n_a_m_e, rather than  the
                 default ppss.

       --FF_d_i_r     Search  _d_i_r  for subdirectories ddeevv_n_a_m_e (_n_a_m_e is
                 the name of the device) for the  DDEESSCC  file  and
                 font      files      before      the      normal
                 //uussrr//sshhaarree//ggrrooffff__ffoonntt.

       --MM_d_i_r     Search directory _d_i_r for macro files before  the
                 normal //uussrr//sshhaarree//ttmmaacc.

UUSSAAGGEE
       Only the features not in Unix troff are described here.

   LLoonngg nnaammeess
       The      names     of     number     registers,     fonts,
       strings/macros/diversions, special characters  can  be  of
       any length. In escape sequences, where you can use ((_x_x for
       a two character name, you can use  [[_x_x_x]]  for  a  name  of
       arbitrary length:

       \\[[_x_x_x]] Print the special character called _x_x_x.

       \\ff[[_x_x_x]]
              Set font _x_x_x.

       \\**[[_x_x_x]]
              Interpolate string _x_x_x.

       \\nn[[_x_x_x]]
              Interpolate number register _x_x_x.





Groff Version 1.08         1 April 1993                         2








TROFF(1)               BSD Reference Manual              TROFF(1)


   FFrraaccttiioonnaall ppooiinnttssiizzeess
       A  _s_c_a_l_e_d  _p_o_i_n_t  is  equal  to  1/sizescale points, where
       sizescale is specified in the DDEESSCC file  (1  by  default.)
       There  is  a new scale indicator zz 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 zz.  Argu-
       ments treated in this way  are  the  argument  to  the  ppss
       request,  the third argument to the ccss request, the second
       and fourth arguments to the ttkkff request, the  argument  to
       the  \\HH  escape  sequence,  and  those  variants of the \\ss
       escape sequence that take a numeric  expression  as  their
       argument.

       For  example,  suppose  sizescale  is  1000; then a scaled
       point will be equivalent to a millipoint; the request  ..ppss
       1100..2255  is  equivalent to ..ppss 1100..2255zz and so sets the point-
       size to 10250 scaled  points,  which  is  equal  to  10.25
       points.

       The  number register \\nn((..ss returns the pointsize in points
       as decimal fraction.  There is also a new number  register
       \\nn[[..ppss]] that returns the pointsize in scaled points.

       It  would  make no sense to use the zz scale indicator in a
       numeric expression whose default scale indicator was  nei-
       ther  uu nor zz, and so ttrrooffff disallows this.  Similarily it
       would make no sense to use a scaling indicator other  than
       zz or uu in a numeric expression whose default scale indica-
       tor was zz, and so ttrrooffff disallows this as well.

       There is also new scale indicator ss  which  multiplies  by
       the  number  of units in a scaled point.  So, for example,
       \\nn[[..ppss]]ss is equal to 11mm.  Be sure not to confuse the ss and
       zz scale indicators.

   NNuummeerriicc eexxpprreessssiioonnss
       Spaces  are permitted in a number expression within paren-
       theses.

       MM indicates a scale of 100ths of an em.

       _e_1>>??_e_2 The maximum of _e_1 and _e_2.

       _e_1<<??_e_2 The minimum of _e_1 and _e_2.

       ((_c;;_e))  Evaluate _e using _c as the default  scaling  indica-
              tor.  If _c is missing, ignore scaling indicators in
              the evaluation of _e.




Groff Version 1.08         1 April 1993                         3








TROFF(1)               BSD Reference Manual              TROFF(1)


   NNeeww eessccaappee sseeqquueenncceess
       \\AA''_a_n_y_t_h_i_n_g''
              This expands to 11 or 00 according as _a_n_y_t_h_i_n_g is  or
              is  not  acceptable as the name of a string, macro,
              diversion, number register,  environment  or  font.
              It  will  return  00  if _a_n_y_t_h_i_n_g is empty.  This is
              useful if you want to lookup  user  input  in  some
              sort of associative table.

       \\CC''_x_x_x''
              Typeset  character  named _x_x_x.  Normally it is more
              convenient to use \\[[_x_x_x]].  But \\CC has the advantage
              that  it is compatible with recent versions of UNIX
              and is available in compatibility mode.

       \\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:

                     .ds { \v'-.3m'\s'\En[.s]*6u/10u'
                     .ds } \s0\v'.3m'

              The  use  of \\EE ensures that these definitions will
              work even if \\**{{ gets interpreted in copy-mode (for
              example, by being used in a macro argument.)

       \\NN''_n''  Typeset  the  character  with code _n in the current
              font.  _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 _n_o_t be searched.  The
              \\NN escape sequence can be conveniently used on con-
              junction with the cchhaarr request:

                     ..cchhaarr \\[[pphhoonnee]] \\ff((ZZDD\\NN''3377''

              The  code  of each character is given in the fourth
              column in  the  font  description  file  after  the
              cchhaarrsseett command.  It is possible to include unnamed
              characters in the font description file by using  a
              name of ------; the \\NN escape sequence is the only way
              to use these.

       \\RR''_n_a_m_e _+_-_n''
              This has the same effect as

                     ..nnrr _n_a_m_e _+_-_n

       \\ss((_n_n




Groff Version 1.08         1 April 1993                         4








TROFF(1)               BSD Reference Manual              TROFF(1)


       \\ss++--((_n_n
              Set the point size to _n_n points; _n_n must be exactly
              two digits.

       \\ss[[++--_n]]
       \\ss++--[[_n]]
       \\ss''++--_n''
       \\ss++--''_n''
              Set  the  point  size  to  _n  scaled points; _n is a
              numeric expression with a default  scale  indicator
              of zz.

       \\VV_x
       \\VV((_x_x
       \\VV[[_x_x_x]]
              Interpolate  the  contents of the environment vari-
              able _x_x_x _, as returned by ggeetteennvv(3).  \\VV is  inter-
              preted in copy-mode.

       \\YY_x
       \\YY((_x_x
       \\YY[[_x_x_x]]
              This  is  approximately  equivalent to \\XX''\\**[[_x_x_x]]''.
              However the contents of the string or macro _x_x_x are
              not  interpreted;  also  it is permitted for _x_x_x to
              have been defined as a macro and thus contain  new-
              lines  (it  is not permitted for the argument to \\XX
              to contain newlines).  The  inclusion  of  newlines
              requires an extension to the Unix troff output for-
              mat, and will confuse  drivers  that  do  not  know
              about this extension.

       \\ZZ''_a_n_y_t_h_i_n_g''
              Print  anything and then restore the horizontal and
              vertical position; _a_n_y_t_h_i_n_g may not contain tabs or
              leaders.

       \\$$00    The  name  by  which the current macro was invoked.
              The aallss request can make a macro have more than one
              name.

       \\$$**    In  a macro, the concatenation of all the arguments
              separated by spaces.

       \\$$@@    In a macro, the concatenation of all the  arguments
              with  each  surrounded  by double quotes, and sepa-
              rated by spaces.

       \\$$((_n_n
       \\$$[[_n_n_n]]
              In  a  macro,  this  gives  the  _n_n-th  or   _n_n_n-th



Groff Version 1.08         1 April 1993                         5








TROFF(1)               BSD Reference Manual              TROFF(1)


              argument.   Macros  can  have a unlimited number of
              arguments.

       \\??_a_n_y_t_h_i_n_g\\??
              When used in a diversion, this  will  transparently
              embed  _a_n_y_t_h_i_n_g in the diversion.  _a_n_y_t_h_i_n_g is read
              in copy mode.  When the diversion is  reread,  _a_n_y_-
              _t_h_i_n_g  will  be interpreted.  _a_n_y_t_h_i_n_g may not con-
              tain newlines; use \\!!  if you want  to  embed  new-
              lines  in  a diversion.  The escape sequence \\??  is
              also recognised in copy mode and turned into a sin-
              gle  internal code; it is this code that terminates
              _a_n_y_t_h_i_n_g.  Thus
                     ..nnrr xx 11
                     ..nnff
                     ..ddii dd
                     \\??\\\\??\\\\\\\\??\\\\\\\\\\\\\\\\nnxx\\\\\\\\??\\\\??\\??
                     ..ddii
                     ..nnrr xx 22
                     ..ddii ee
                     ..dd
                     ..ddii
                     ..nnrr xx 33
                     ..ddii ff
                     ..ee
                     ..ddii
                     ..nnrr xx 44
                     ..ff

              will print 44.

       \\//     This increases the width of the preceding character
              so  that the spacing between that character and the
              following character will be correct if the  follow-
              ing  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  _f),  which  is ugly.
              Inserting \\// produces _f) and avoids  this  problem.
              It is a good idea to use this escape sequence when-
              ever an italic character is immediately followed by
              a roman character without any intervening space.

       \\,,     This  modifies the spacing of the following charac-
              ter so that the spacing between that character  and
              the preceding character will correct if the preced-
              ing character is a roman character.   For  example,
              inserting  \\,,  between  the  parenthesis  and the f
              changes (_f to (_f.  It is a good idea  to  use  this
              escape  sequence  whenever  a  roman  character  is



Groff Version 1.08         1 April 1993                         6








TROFF(1)               BSD Reference Manual              TROFF(1)


              immediately followed by an italic character without
              any intervening space.

       \\))     Like  \\&&  except  that  it behaves like a character
              declared with the ccffllaaggss request to be  transparent
              for the purposes of end of sentence recognition.

       \\~~     This  produces  an unbreakable space that stretches
              like a normal  inter-word  space  when  a  line  is
              adjusted.

       \\##     Everything  up to and including the next newline is
              ignored.  This is interpreted in copy  mode.   This
              is  like \\%% except that \\%% does not ignore the ter-
              minating newline.

   NNeeww rreeqquueessttss
       ..aallnn _x_x _y_y
              Create an alias _x_x for number register object named
              _y_y.   The new name and the old name will be exactly
              equivalent.  If _y_y is undefined, a warning of  type
              rreegg  will  be  generated,  and  the request will be
              ignored.

       ..aallss _x_x _y_y
              Create an alias _x_x for request, string,  macro,  or
              diversion  object  named  _y_y.  The new name and the
              old name will be exactly equivalent (it is  similar
              to a hard rather than a soft link).  If _y_y is unde-
              fined, a warning of type mmaacc will be generated, and
              the  request  will be ignored.  The ddee, aamm, ddii, ddaa,
              ddss, and aass 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.

       ..aasscciiiiffyy _x_x
              This request only exists in order to make it possi-
              ble  to  make  certain  gross  hacks  work with GNU
              troff.  It `unformats' the diversion _x_x in  such  a
              way  that  ASCII characters that were formatted and
              diverted into _x_x  will  be  treated  like  ordinary
              input  characters  when _x_x is reread.  For example,
              this









Groff Version 1.08         1 April 1993                         7








TROFF(1)               BSD Reference Manual              TROFF(1)


                     ..ttrr  @@..
                     ..ddii  xx
                     @@nnrr\\  nn\\  11
                     ..bbrr
                     ..ddii
                     ..ttrr  @@@@
                     ..aasscciiiiffyy  xx
                     ..xx

              will set register nn to 1.

       ..bbaacckkttrraaccee
              Print a backtrace of the input stack on stderr.

       ..bbrreeaakk Break out of a while loop.  See also the wwhhiillee  and
              ccoonnttiinnuuee  requests.   Be  sure  not to confuse this
              with the bbrr request.

       ..ccffllaaggss _n _c_1 _c_2_._._.
              Characters _c_1, _c_2,...  have  properties  determined
              by _n, which is ORed from the following:

              1      the   character  ends  sentences  (initially
                     characters ..??!!  have this property);

              2      lines can be  broken  before  the  character
                     (initially  no  characters  have  this prop-
                     erty);

              4      lines can  be  broken  after  the  character
                     (initially  characters  --\\((hhyy\\((eemm  have this
                     property);

              8      the character  overlaps  horizontally  (ini-
                     tially  characters  \\((uull\\((rrnn\\((rruu  have  this
                     property);

              16     the character overlaps vertically (initially
                     character \\((bbrr has this property);

              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 fol-
                     lowed 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 fac-
                     tor    in    TeX    (initially    characters
                     ""''))]]**\\((ddgg\\((rrqq have this property).





Groff Version 1.08         1 April 1993                         8








TROFF(1)               BSD Reference Manual              TROFF(1)


       ..cchhaarr _c _s_t_r_i_n_g
              Define  character _c to be _s_t_r_i_n_g.  Every time char-
              acter _c needs to be printed, _s_t_r_i_n_g  will  be  pro-
              cessed  in  a  temporary environment and the result
              will be wrapped up into a single object.   Compati-
              bility mode will be turned off and the escape char-
              acter will be set to \\ while _s_t_r_i_n_g is  being  pro-
              cessed.  Any emboldening, constant spacing or track
              kerning will be applied to this object rather  than
              to  individual  characters  in _s_t_r_i_n_g.  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  ttrr  request;  it  can be made the leader
              character by the llcc request; repeated patterns  can
              be  drawn  with  the  character using the \\ll and \\LL
              escape sequences; words  containing  the  character
              can  be  hyphenated correctly, if the hhccooddee 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
              cchhaarr.  A character definition can be  removed  with
              the rrcchhaarr request.

       ..cchhoopp _x_x
              Chop  the  last  character  off  macro,  string, or
              diversion _x_x.  This is useful for removing the new-
              line  from  the  end  of  diversions that are to be
              interpolated as strings.

       ..cclloossee _s_t_r_e_a_m
              Close the  stream  named  _s_t_r_e_a_m;  _s_t_r_e_a_m  will  no
              longer  be  an  acceptable  argument  to  the wwrriittee
              request.  See the ooppeenn request.

       ..ccoonnttiinnuuee
              Finish the current iteration of a while loop.   See
              also the wwhhiillee and bbrreeaakk requests.

       ..ccpp _n  If  _n  is non-zero or missing, enable compatibility
              mode, otherwise disable it.  In compatibility mode,
              long  names  are not recognised, and the incompati-
              bilities caused by long names do not arise.

       ..ddoo _x_x_x
              Interpret _._x_x_x with  compatibility  mode  disabled.
              For example,

                     ..ddoo ffaamm TT




Groff Version 1.08         1 April 1993                         9








TROFF(1)               BSD Reference Manual              TROFF(1)


              would have the same effect as

                     ..ffaamm TT

              except  that  it  would  work even if compatibility
              mode had been enabled.  Note that the previous com-
              patibility   mode  is  restored  before  any  files
              sourced by _x_x_x are interpreted.

       ..ffaamm _x_x
              Set the current font family  to  _x_x.   The  current
              font  family  is  part  of the current environment.
              See the description of the  ssttyy  request  for  more
              information on font families.

       ..ffssppeecciiaall _f _s_1 _s_2_._._.
              When  the current font is _f, fonts _s_1, _s_2,...  will
              be special, that is, they will searched for charac-
              ters  not in the current font.  Any fonts specified
              in the ssppeecciiaall  request  will  be  searched  before
              fonts specified in the ffssppeecciiaall request.

       ..ffttrr _f _g
              Translate  font _f to _g.  Whenever a font named _f is
              referred to in \\ff escape sequence, or  in  the  fftt,
              uull,  bbdd,  ccss,  ttkkff,  ssppeecciiaall,  ffssppeecciiaall, ffpp, or ssttyy
              requests, font _g will be used.  If _g is missing, or
              equal to _f then font _f will not be translated.

       ..hhccooddee _c_1 _c_o_d_e_1 _c_2 _c_o_d_e_2_._._.
              Set  the  hyphenation code of character _c_1 to _c_o_d_e_1
              and that of _c_2 to _c_o_d_e_2.  A hyphenation  code  must
              be  a single input character (not a special charac-
              ter) 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  hyphen-
              ation  code  which  is  the  lower  case version of
              itself.  See also the hhppff request.

       ..hhllaa _l_a_n_g
              Set  the  current  hyphenation  language  to  _l_a_n_g.
              Hyphenation   exceptions   specified  with  the  hhww
              request and hyphenation patterns specified with the
              hhppff  request  are  both associated with the current
              hyphenation language.  The hhllaa request  is  usually
              invoked by the ttrrooffffrrcc file.

       ..hhllmm _n Set  the  maximum  number of consecutive hyphenated
              lines to _n.  If _n is negative, there is no maximum.
              The  default value is -1.  This value is associated
              with the current environment.   Only  lines  output



Groff Version 1.08         1 April 1993                        10








TROFF(1)               BSD Reference Manual              TROFF(1)


              from an environment count towards the maximum asso-
              ciated with that  environment.   Hyphens  resulting
              from \\%% are counted; explicit hyphens are not.

       ..hhppff _f_i_l_e
              Read  hyphenation  patterns from _f_i_l_e; this will be
              searched for in the  same  way  that  ttmmaacc.._n_a_m_e  is
              searched  for  when the --mm_n_a_m_e option is specified.
              It should have the same format as the  argument  to
              the \patterns primitive in TeX; the letters appear-
              ing in this file  are  interpreted  as  hyphenation
              codes.   A  %% character in the patterns file intro-
              duces a comment that continues to the  end  of  the
              line.   The  set of hyphenation patterns is associ-
              ated with the  current  language  set  by  the  hhllaa
              request.  The hhppff request is usually invoked by the
              ttrrooffffrrcc file.

       ..hhyymm _n Set the _h_y_p_h_e_n_a_t_i_o_n _m_a_r_g_i_n to _n: when  the  current
              adjustment  mode  is  not  bb,  the line will not be
              hyphenated if the line is no  more  than  _n  short.
              The  default  hyphenation margin is 0.  The default
              scaling indicator  for  this  request  is  _m.   The
              hyphenation  margin  is associated with the current
              environment.  The  current  hyphenation  margin  is
              available in the \\nn[[..hhyymm]] register.

       ..hhyyss _n Set  the  _h_y_p_h_e_n_a_t_i_o_n  _s_p_a_c_e to _n: when the current
              adjustment mode is bb don't hyphenate  the  line  if
              the  line can be justified by adding no more than _n
              extra  space  to  each  word  space.   The  default
              hyphenation  space is 0.  The default scaling indi-
              cator for this request is mm.  The hyphenation space
              is  associated  with  the current environment.  The
              current  hyphenation  space  is  available  in  the
              \\nn[[..hhyyss]] register.

       ..kkeerrnn _n
              If  _n is non-zero or missing, enable pairwise kern-
              ing, otherwise disable it.

       ..mmssoo _f_i_l_e
              The same as the ssoo  request  except  that  _f_i_l_e  is
              searched  for  in  the  same  way that ttmmaacc.._n_a_m_e is
              searched for when the --mm_n_a_m_e option is specified.

       ..nnrrooffff Make the nn built-in condition true and the tt built-
              in condition false.  This can be reversed using the
              ttrrooffff request.





Groff Version 1.08         1 April 1993                        11








TROFF(1)               BSD Reference Manual              TROFF(1)


       ..ooppeenn _s_t_r_e_a_m _f_i_l_e_n_a_m_e
              Open _f_i_l_e_n_a_m_e for writing and associate the  stream
              named _s_t_r_e_a_m with it.  See also the cclloossee and wwrriittee
              requests.

       ..ooppeennaa _s_t_r_e_a_m _f_i_l_e_n_a_m_e
              Like ooppeenn, but if _f_i_l_e_n_a_m_e  exists,  append  to  it
              instead of truncating it.

       ..ppnnrr   Print  the  names  and  contents  of  all currently
              defined number registers on stderr.

       ..ppttrr   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 prior-
              ity of subsequently planted traps.

       ..rrcchhaarr _c_1 _c_2_._._.
              Remove the definitions  of  characters  _c_1,  _c_2,...
              This undoes the effect of a cchhaarr request.

       ..rrjj
       ..rrjj _n  Right  justify  the next _n input lines.  Without an
              argument right justify the next  input  line.   The
              number  of  lines to be right justifed is available
              in the  \\nn[[..rrjj]]  register.   This  implicitly  does
              ..ccee 00.  The ccee request implicitly does ..rrjj 00.

       ..rrnnnn _x_x _y_y
              Rename number register _x_x to _y_y.

       ..sshhcc _c Set  the soft hyphen character to _c.  If _c is omit-
              ted, the soft hyphen character will be set  to  the
              default  \\((hhyy.   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 charac-
              ter  immediately preceding a potential break point,
              then the line will not be  broken  at  that  point.
              Neither   definitions   (specified  with  the  cchhaarr
              request) nor translations (specified  with  the  ttrr
              request)  are  considered  when  finding  the  soft
              hyphen character.

       ..sshhiifftt _n
              In a macro, shift the  arguments  by  _n  positions:
              argument  _i  becomes argument _i-_n; arguments 1 to _n
              will no longer be  available.   If  _n  is  missing,
              arguments  will be shifted by 1.  Shifting by nega-
              tive amounts is currently undefined.



Groff Version 1.08         1 April 1993                        12








TROFF(1)               BSD Reference Manual              TROFF(1)


       ..ssppeecciiaall _s_1 _s_2_._._.
              Fonts _s_1, _s_2, are special and will be searched  for
              characters not in the current font.

       ..ssttyy _n _f
              Associate  style  _f  with  font position _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 actu-
              ally used is the font the name of which is the con-
              catenation  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 RR and the current font family is TT, then
              font TTRR will be used.  If the current font is not a
              style, then the current family  is  ignored.   When
              the  requests  ccss,  bbdd,  ttkkff,  uuff,  or ffssppeecciiaall are
              applied to a  style,  then  they  will  instead  be
              applied  to the member of the current family corre-
              sponding to that style.  The default family can  be
              set  with the --ff option.  The styles command in the
              DESC file controls which font  positions  (if  any)
              are  initially  associated  with styles rather than
              fonts.

       ..ttkkff _f _s_1 _n_1 _s_2 _n_2
              Enable track kerning for font _f.  When the  current
              font  is  _f  the  width  of every character will be
              increased by an amount between _n_1 and _n_2; when  the
              current  point size is less than or equal to _s_1 the
              width will be increased by _n_1; when it  is  greater
              than  or equal to _s_2 the width will be increased by
              _n_2; when the point size is greater than or equal to
              _s_1  and  less  than  or equal to _s_2 the increase in
              width is a linear function of the point size.

       ..ttrrff _f_i_l_e_n_a_m_e
              Transparently output the contents of file _f_i_l_e_n_a_m_e.
              Each line is output as it would be were it preceded
              by \\!!; 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 exam-
              ple,  you  can define a macro _x containing the con-
              tents of file _f, using

                     ..ddii _x
                     ..ttrrff _f
                     ..ddii

              Unlike with the ccff request, the file cannot contain



Groff Version 1.08         1 April 1993                        13








TROFF(1)               BSD Reference Manual              TROFF(1)


              characters  such  as  NUL  that are not legal troff
              input characters.

       ..ttrrnntt aabbccdd
              This is the same as the ttrr request except that  the
              translations do not apply to text that is transpar-
              ently throughput into a  diversion  with  \\!!.   For
              example,

              ..ttrr aabb
              ..ddii xx
              \\!!..ttmm aa
              ..ddii
              ..xx

              will print bb; if ttrrnntt is used instead of ttrr it will
              print aa.

       ..ttrrooffff Make the nn built-in  condition  false,  and  the  tt
              built-in condition true.  This undoes the effect of
              the nnrrooffff request.

       ..vvpptt _n Enable vertical position traps if  _n  is  non-zero,
              disable  them  otherwise.   Vertical position traps
              are traps set by the wwhh or ddtt requests.  Traps  set
              by  the iitt request are not vertical position traps.
              The parameter that controls whether vertical  posi-
              tion traps are enabled is global.  Initially verti-
              cal position traps are enabled.

       ..wwaarrnn _n
              Control warnings.  _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, ..wwaarrnn 00 will dis-
              able  all  warnings,  and  ..wwaarrnn 11 will disable all
              warnings except that about missing characters.   If
              _n is not given, all warnings will be enabled.

       ..wwhhiillee _c _a_n_y_t_h_i_n_g
              While  condition  _c  is  true,  accept  _a_n_y_t_h_i_n_g as
              input; _c can be any condition acceptable to  an  iiff
              request;  _a_n_y_t_h_i_n_g  can  comprise multiple lines if
              the first line starts with \\{{  and  the  last  line
              ends  with  \\}}.   See  also  the bbrreeaakk and ccoonnttiinnuuee
              requests.

       ..wwrriittee _s_t_r_e_a_m _a_n_y_t_h_i_n_g
              Write _a_n_y_t_h_i_n_g to the stream named _s_t_r_e_a_m.   _s_t_r_e_a_m
              must  previously  have  been the subject of an ooppeenn



Groff Version 1.08         1 April 1993                        14








TROFF(1)               BSD Reference Manual              TROFF(1)


              request.  _a_n_y_t_h_i_n_g is read in copy mode; a  leading
              "" will be stripped.

   EExxtteennddeedd rreeqquueessttss
       ..ccff _f_i_l_e_n_a_m_e
              When  used  in  a diversion, this will embed in the
              diversion an object which, when reread, will  cause
              the contents of _f_i_l_e_n_a_m_e to be transparently copied
              through to the output.  In Unix troff, the contents
              of  _f_i_l_e_n_a_m_e  is  immediately copied through to the
              output regardless of whether  there  is  a  current
              diversion;  this  behaviour is so anomalous that it
              must be considered a bug.

       ..eevv _x_x If _x_x is not a number, this will switch to a  named
              environment  called  _x_x.  The environment should be
              popped with a matching eevv request without any argu-
              ments, 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 refer-
              enced.

       ..ffpp _n _f_1 _f_2
              The ffpp 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.

       ..ssss _m _n
              When two arguments are given to the ssss request, the
              second  argument gives the _s_e_n_t_e_n_c_e _s_p_a_c_e _s_i_z_e.  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 behaviour of Unix troff  will
              be  exactly that exhibited by GNU troff if a second
              argument is never given to the ssss request.  In  GNU



Groff Version 1.08         1 April 1993                        15








TROFF(1)               BSD Reference Manual              TROFF(1)


              troff, as in Unix troff, you should always follow a
              sentence with either a newline or two spaces.

       ..ttaa _n_1 _n_2_._._._n_n TT _r_1 _r_2_._._._r_n
              Set tabs at positions _n_1, _n_2,..., _n_n and  then  set
              tabs  at  _n_n+_r_1,  _n_n+_r_2,....,  _n_n+_r_n  and  then  at
              _n_n+_r_n+_r_1, _n_n+_r_n+_r_2,..., _n_n+_r_n+_r_n, and so  on.   For
              example,

                     ..ttaa TT ..55ii

              will set tabs every half an inch.

   NNeeww nnuummbbeerr rreeggiisstteerrss
       The following read-only registers are available:

       \\nn[[..CC]] 1  if compatibility mode is in effect, 0 otherwise.

       \\nn[[..ccddpp]]
              The depth of the last character added to  the  cur-
              rent  environment.  It is positive if the character
              extends below the baseline.

       \\nn[[..ccee]]
              The number of lines remaining to  be  centered,  as
              set by the ccee request.

       \\nn[[..cchhtt]]
              The  height of the last character added to the cur-
              rent environment.  It is positive if the  character
              extends above the baseline.

       \\nn[[..ccsskk]]
              The skew of the last character added to the current
              environment.  The _s_k_e_w 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.

       \\nn[[..eevv]]
              The  name  or  number  of  the current environment.
              This is a string-valued register.

       \\nn[[..ffaamm]]
              The current font family.  This is  a  string-valued
              register.

       \\nn[[..ffpp]]
              The number of the next free font position.

       \\nn[[..gg]] Always  1.   Macros  should  use  this to determine
              whether they are running under GNU troff.



Groff Version 1.08         1 April 1993                        16








TROFF(1)               BSD Reference Manual              TROFF(1)


       \\nn[[..hhllaa]]
              The current hyphenation language as set by the  hhllaa
              request.

       \\nn[[..hhllcc]]
              The  number  of  immediately  preceding consecutive
              hyphenated lines.

       \\nn[[..hhllmm]]
              The maximum allowed number of  consecutive  hyphen-
              ated lines, as set by the hhllmm request.

       \\nn[[..hhyy]]
              The  current  hyphenation  flags  (as set by the hhyy
              request.)

       \\nn[[..hhyymm]]
              The current hyphenation margin (as set by  the  hhyymm
              request.)

       \\nn[[..hhyyss]]
              The  current  hyphenation  space (as set by the hhyyss
              request.)

       \\nn[[..iinn]]
              The indent that applies to the current output line.

       \\nn[[..kkeerrnn]]
              11 if pairwise kerning is enabled, 00 otherwise.

       \\nn[[..llgg]]
              The  current  ligature  mode  (as  set  by  the  llgg
              request.)

       \\nn[[..llll]]
              The line length that applies to the current  output
              line.

       \\nn[[..lltt]]
              The title length as set by the lltt request.

       \\nn[[..nnee]]
              The  amount of space that was needed in the last nnee
              request that caused a trap to be sprung.  Useful in
              conjunction with the \\nn[[..ttrruunncc]] register.

       \\nn[[..ppnn]]
              The  number  of the next page: either the value set
              by a ppnn request, or the number of the current  page
              plus 1.




Groff Version 1.08         1 April 1993                        17








TROFF(1)               BSD Reference Manual              TROFF(1)


       \\nn[[..ppss]]
              The current pointsize in scaled points.

       \\nn[[..ppssrr]]
              The last-requested pointsize in scaled points.

       \\nn[[..rrjj]]
              The number of lines to be right-justified as set by
              the rrjj request.

       \\nn[[..ssrr]]
              The last requested pointsize in points as a decimal
              fraction.  This is a string-valued register.

       \\nn[[..ttaabbss]]
              A string representation of the current tab settings
              suitable for use as an argument to the ttaa  request.

       \\nn[[..ttrruunncc]]
              The  amount of vertical space truncated by the most
              recently sprung vertical position trap, or, if  the
              trap  was  sprung by a nnee request, minus the amount
              of vertical motion produced by the nnee request.   In
              other words, at the point a trap is sprung, it rep-
              resents the difference of what the  vertical  posi-
              tion would have been but for the trap, and what the
              vertical position actually is.  Useful in  conjunc-
              tion with the \\nn[[..nnee]] register.

       \\nn[[..ssss]]
       \\nn[[..ssssss]]
              These  give the values of the parameters set by the
              first and second arguments of the ssss request.

       \\nn[[..vvpptt]]
              1 if vertical position traps are enabled, 0  other-
              wise.

       \\nn[[..wwaarrnn]]
              The  sum of the numbers associated with each of the
              currently enabled warnings.  The number  associated
              with  each warning is listed in the `Warnings' sub-
              section.

       \\nn((..xx  The major version number.  For example, if the ver-
              sion number is 11..0033 then \\nn((..xx will contain 11.

       \\nn((..yy  The minor version number.  For example, if the ver-
              sion number is 11..0033 then \\nn((..yy will contain 0033.

       The following registers are set by the \\ww escape sequence:



Groff Version 1.08         1 April 1993                        18








TROFF(1)               BSD Reference Manual              TROFF(1)


       \\nn[[rrsstt]]
       \\nn[[rrssbb]]
              Like  the sstt and ssbb registers, but takes account of
              the heights and depths of characters.

       \\nn[[sssscc]]
              The amount of horizontal space (possibly  negative)
              that should be added to the last character before a
              subscript.

       \\nn[[sskkww]]
              How far to right of the center of the last  charac-
              ter  in  the  \\ww  argument, the center of an accent
              from a roman font should be placed over that  char-
              acter.

       The following read/write number registers are available:

       \\nn[[ssyyssttaatt]]
              The  return value of the system() function executed
              by the last ssyy request.

       \\nn[[sslliimmiitt]]
              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.

   MMiisscceellllaanneeoouuss
       Fonts not  listed  in  the  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  ffpp  request  on an unused font position, it should be
       mounted on the first unused font position,  which  can  be
       found  in  the  \\nn[[..ffpp]]  register; although ttrrooffff 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.

       Interpolating a string does not hide existing macro  argu-
       ments.  Thus in a macro, a more efficient way of doing

              .._x_x \\\\$$@@

       is

              \\\\**[[_x_x]]\\\\

       If  the  font  description  file contains pairwise kerning
       information, characters from that  font  will  be  kerned.



Groff Version 1.08         1 April 1993                        19








TROFF(1)               BSD Reference Manual              TROFF(1)


       Kerning between two characters can be inhibited by placing
       a \\&& between them.

       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 ttll request.  In a \\ww
       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 imple-
       mentation  of \\$$@@ ensures that the double quotes surround-
       ing 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 ]] will not be recognized as
       a  closing  delimiter  except  when  it occurs at the same
       input level as the opening ]].  In compatibility  mode,  no
       attention is paid to the input-level.

       There are some new types of condition:

       ..iiff rr_x_x_x
              True if there is a number register named _x_x_x.

       ..iiff dd_x_x_x
              True  if  there  is  a string, macro, diversion, or
              request named _x_x_x.

       ..iiff cc_c_h
              True if there is a character _c_h  available;  _c_h  is
              either  an  ASCII  character or a special character
              \\((_x_x or \\[[_x_x_x]]; the condition will also be true  if
              _c_h has been defined by the cchhaarr request.

   WWaarrnniinnggss
       The  warnings  that can be given by ttrrooffff are divided into
       the following categories.  The name associated  with  each
       warning  is  used  by the --ww and --WW options; the number is
       used by the wwaarrnn request, and by the ..wwaarrnn register.

       cchhaarr           1   Non-existent   characters.    This   is
                          enabled by default.

       nnuummbbeerr         2   Invalid  numeric  expressions.  This is
                          enabled by default.

       bbrreeaakk          4   In fill mode, lines which could not  be
                          broken  so  that  their length was less



Groff Version 1.08         1 April 1993                        20








TROFF(1)               BSD Reference Manual              TROFF(1)


                          than the line length.  This is  enabled
                          by default.

       ddeelliimm          8   Missing  or  mismatched  closing delim-
                          iters.

       eell            16   Use of the eell request with no  matching
                          iiee request.

       ssccaallee         32   Meaningless scaling indicators.

       rraannggee         64   Out of range arguments.

       ssyynnttaaxx       128   Dubious  syntax in numeric expressions.

       ddii           256   Use of ddii or  ddaa  without  an  argument
                          when there is no current diversion.

       mmaacc          512   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.

       rreegg         1024   Use  of  undefined  number   registers.
                          When  an  undefined  number register is
                          used, that  register  is  automatically
                          defined  to have a value of 0.  a defi-
                          nition 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.

       ttaabb         2048   Use  of  a tab character where a number
                          was expected.

       rriigghhtt--bbrraaccee 4096   Use of \\}} where a number was  expected.

       mmiissssiinngg     8192   Requests  that are missing non-optional
                          arguments.

       iinnppuutt      16384   Illegal input characters.

       eessccaappee     32768   Unrecognized escape sequences.  When an
                          unrecognized escape sequence is encoun-
                          tered, the escape character is ignored.

       ssppaaccee      65536   Missing  space  between  a  request  or
                          macro and its argument.   This  warning
                          will  be  given  when an undefined name



Groff Version 1.08         1 April 1993                        21








TROFF(1)               BSD Reference Manual              TROFF(1)


                          longer than two characters  is  encoun-
                          tered,  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.

       ffoonntt      131072   Non-existent fonts.  This is enabled by
                          default.

       There are also names that can be used to refer  to  groups
       of warnings:

       aallll    All  warnings  except  ddii,  mmaacc  and  rreegg.   It  is
              intended that this covers  all  warnings  that  are
              useful with traditional macro packages.

       ww      All warnings.

   IInnccoommppaattiibbiilliittiieess
       Long  names cause some incompatibilities.  Unix troff will
       interpret

              ..ddssaabbccdd

       as defining a string aabb with contents ccdd.   Normally,  GNU
       troff  will  interpret  this  as  a  call of a macro named
       ddssaabbccdd.  Also Unix troff will interpret \\**[[ or \\nn[[ as ref-
       erences  to  a string or number register called [[.  In GNU
       troff, however, this will normally be interpreted  as  the
       start  of  a  long  name.  In _c_o_m_p_a_t_i_b_i_l_i_t_y _m_o_d_e GNU troff
       will interpret these things in the  traditional  way.   In
       compatibility  mode,  however,  long  names are not recog-
       nised.  Compatibility mode can be turned on  with  the  --CC
       command  line  option,  and  turned  on or off with the ccpp
       request.  The number register \\nn((..CC is 1 if  compatibility
       mode is on, 0 otherwise.

       GNU  troff  does not allow the use of the escape sequences
       \\\\||\\^^\\&&\\}}\\{{\\(space)\\''\\``\\--\\__\\!!\\%%\\cc  in  names  of  strings,
       macros,  diversions,  number  registers, fonts or environ-
       ments; Unix troff does.  The \\AA  escape  sequence  may  be
       helpful  in  avoiding  use  of  these  escape sequences in
       names.

       Fractional pointsizes cause one  noteworthy  incompatibil-
       ity.   In  Unix troff the ppss request ignores scale indica-
       tors and so




Groff Version 1.08         1 April 1993                        22








TROFF(1)               BSD Reference Manual              TROFF(1)


              ..ppss 1100uu

       will set the pointsize to 10 points, whereas in GNU  troff
       it will set the pointsize to 10 scaled points.

       In  GNU  troff  there  is a fundamental difference between
       unformatted, input characters, and formatted, output char-
       acters.   Everything  that affects how an output character
       will be output is stored with the character; once an  out-
       put character has been constructed it is unaffected by any
       subsequent requests that are executed, including  bbdd,  ccss,
       ttkkff,  ttrr,  or ffpp requests.  Normally output characters are
       constructed from input characters at  the  moment  immedi-
       ately  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 char-
       acters and output characters in any combination.  An  out-
       put  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,

              ..ddii xx
              \\\\\\\\
              ..bbrr
              ..ddii
              ..xx

       will print \\\\ in GNU troff;  each  pair  of  input  \\s  is
       turned  into  one output \\ and the resulting output \\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  \\.   The
       correct  way  to  obtain  a  printable  \\ is to use the \\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 \\!!  transparent output  facility,  or,
       if this is unsuitable, the new \\??  escape sequence.

EENNVVIIRROONNMMEENNTT
       GGRROOFFFF__TTMMAACC__PPAATTHH
              A  colon  separated list of directories in which to
              search for macro files.

       GGRROOFFFF__TTYYPPEESSEETTTTEERR
              Default device.




Groff Version 1.08         1 April 1993                        23








TROFF(1)               BSD Reference Manual              TROFF(1)


       GGRROOFFFF__FFOONNTT__PPAATTHH
              A colon separated list of directories in  which  to
              search  for  the  ddeevv_n_a_m_e  directory.   ttrrooffff  will
              search in directories given in the --FF option before
              these,      and     in     standard     directories
              (..:://uussrr//sshhaarree//ggrrooffff__ffoonntt:://uussrr//sshhaarree//ggrrooffff__ffoonntt:://uussrr//sshhaarree//ggrrooffff__ffoonntt)
              after these.

FFIILLEESS
       //uussrr//sshhaarree//ttmmaacc//ttrrooffffrrcc
              Initialization file

       //uussrr//sshhaarree//ttmmaacc//ttmmaacc.._n_a_m_e
              Macro files

       //uussrr//sshhaarree//ggrrooffff__ffoonntt//ddeevv_n_a_m_e//DDEESSCC
              Device description file for device _n_a_m_e.

       //uussrr//sshhaarree//ggrrooffff__ffoonntt//ddeevv_n_a_m_e//_F
              Font file for font _F of device _n_a_m_e.

SSEEEE AALLSSOO
       ggrrooffff(1)  ttbbll(1),  ppiicc(1),  eeqqnn(1),  ggrrooppss(1),  ggrrooddvvii(1),
       ggrroottttyy(1), ggrrooffff__ffoonntt(5), ggrrooffff__oouutt(5), ggrrooffff__cchhaarr(7)






























Groff Version 1.08         1 April 1993                        24