GROFF_MM(7)                                           GROFF_MM(7)

NAME
       groff_mm - groff mm macros

SYNOPSIS
       groff -mm [ options...  ] [ files...  ]

DESCRIPTION
       The groff mm macros are intended to be compatible with the
       DWB mm macros with the following limitations:

       +o      no Bell Labs localisms implemented.

       +o      the macros OK and PM is not implemented.

       +o      groff mm does not support cut marks

       mm is intended to be international. Therefore it is possi-
       ble  to  write  short national macrofiles which change all
       english text to the preferred language.  Use  mmse  as  an
       example.

       New macros: APP, APPSK, B1, B2, BVL, COVER, COVEND, GETHN,
       GETPN, GETR, GETST, INITR, MC,  MOVE,  MULB,  MULN,  MULE,
       PGFORM, PGNH, SETR, TAB, VERBON, VERBOFF.

       A file called locale or lang_locale is read after the ini-
       tiation of the global variables. It is therefore  possible
       to localize the macros with companyname and so on.

       In  this  manual  square brackets is used to show optional
       arguments.

       Number registers and strings
       Many macros can be  controlled  by  number  registers  and
       strings.   A  number register is assigned with the nr com-
       mand:
       .nr XXX [+-]n [i]
       XXX is the name of the register, n  is  the  value  to  be
       assigned,  and i is increment value for auto-increment.  n
       can have a plus or minus sign as prefix if an increment or
       decrement  of the current value is wanted. (Auto-increment
       or decrement occurs if the number register is used with  a
       plus or minus sign, \n+[XXX] or \n-[XXX].)

       Strings is defined with ds.
       .ds YYY string
       The  string is assigned everything to the end of the line,
       even blanks.  Initial blanks in string should be  prefixed
       with  a  double-quote.  (Strings  are  used in the text as
       \*[YYY].)

       Special formatting of number registers A  number  register
       is printed with normal digits if no format has been given.
       Set the format with af:
       .af R c
       R is the name of the register, c is the format.
       Form Sequence
       1    0, 1, 2, 3, ...
       001  000, 001, 002, 003, ...
       i    0, i, ii, iii, iv, ...
       I    0, I, II, III, IV, ...
       a    0, a, b, c, ..., z, aa, ab, ...
       A    0, A, B, C, ..., Z, AA, AB, ...

       Macros:

       1C [1] Begin one column processing. An 1 as argument  dis-
              ables  the  page-break.   Use wide footnotes, small
              footnotes may be overprinted.

       2C     Begin two column processing. Splits the page in two
              columns. It is a special case of MC. See also 1C.

       AE     Abstract end, see AS.

       AF [name of firm]
              Authors  firm, should be called before AU, see also
              COVER.

       AL [type [text-indent [1]]]]
              Start autoincrement list. Items are numbered begin-
              ning  on  one.  The type argument controls the type
              of numbers.
              Arg  Description
              1    Arabic (the default)
              A    Upper-case letters (A-Z)
              a    Lower-case letters (a-z)
              I    Upper-case roman
              i    Lower-case roman
              Text-indent sets the indent and  overrides  Li.   A
              third  argument  will  prohibit printing of a blank
              line before each item.

       APP name text
              Begin an appendix with name name. Automatic  naming
              occurs  if name is "". The appendixes starts with A
              if auto is used.  An new page  is  ejected,  and  a
              header  is also produced if the number variable Aph
              is non-zero. This is  the  default.   The  appendix
              always  appear  in the 'List of contents' with cor-
              rect pagenumber. The name APPENDIX can  be  changed
              by setting the string App to the desired text.

       APPSK name pages text
              Same  as  .APP,  but the pagenr is incremented with
              pages.  This is used when diagrams  or  other  non-
              formatted documents are included as appendixes.

       AS [arg [indent]]
              Abstract  start.  Indent is specified in 'ens', but
              scaling is allowed.  Argument  arg  controls  where
              the abstract is printed.
              Arg  Placement
              0    Abstract will be printed on page 1 and con the
                   cover sheet  if  used  in  the  released-paper
                   style  (MT 4), otherwise it will be printed on
                   page 1 without a cover sheet.
              1    Abstract will only be printed on page 1 (MT  4
                   only).
              2    Abstract  will  be  printed  only on the cover
                   sheet. The cover sheet is printed without need
                   for CS.
              Abstract  is not printed at all in external letters
              (MT 5).  The indent  controls  the  indentation  of
              both  margins, otherwise will normal text indent be
              used.

       AST [title]
              Abstract title. Default is ABSTRACT.  Sets the text
              above the abstract text.

       AT title1 [title2 ...]
              Authors  title.  AT must appear just after each AU.
              The title will show up after the name in the signa-
              ture block.

       AU name [initials [loc [dept [ext [room [arg [arg
              [arg]]]]]]]]
              Author information, specifies  the  author  of  the
              memo  or  paper,  and  will be printed on the cover
              sheet and on other similar places.  AU must  appear
              before  TL.  The  author  information  can  contain
              intials, location, department, telephone extension,
              room  number  or  name  and up to three extra argu-
              ments.

       AV [name [1]]
              Approval signature, generates an approval line with
              place  for signature and date. The string APPROVED:
              can be changed with variable Letapp, and the string
              Date in Letdate.

       B [bold-text [prev-font-tex [bold...]]]
              Begin boldface No limit on the number of arguments.
              All arguments will be concatenated to one word, the
              first, third and so on will be printed in boldface.

       B1     Begin box (as the ms macro) Draws a box around  the
              text.  The text will be indented one character, and
              the right margin will be one character shorter.

       B2     End box. Finish the box started by B1.

       BE     End bottom block, see BS.

       BI [bold-text [italic-text [bold-text [...]]]
              Bold-italic.  No limit on the number of  arguments,
              see B.

       BL [text-indent [1]]
              Start  bullet list, initialize a list with a bullet
              and a space in the beginning of each list item (see
              LI).  Text-indent overrides the default indentation
              of the list items set by  number  register  Pi.   A
              third  argument  will  prohibit printing of a blank
              line before each item.

       BR [bold-text [roman-text [bold-text [...]]]
              Bold-roman.  No limit on the number of arguments.

       BS     Bottom block start. Begins the definition of a text
              block  wich  is printed at the bottom of each page.
              Block ends with BE.

       BVL    Start of broken variable-item list.   Broken  vari-
              able-item  list  has no fixed mark, it assumes that
              every LI has a mark instead.  The text will  always
              begin at the next line after the mark.  Text-indent
              sets the indent to the text,  and  mark-indent  the
              distance  from  the  current indent to the mark.  A
              third argument will prohibit printing  of  a  blank
              line before each item.

       COVER [arg]
              COVER  begins a coversheet definition. It is impor-
              tant that .COVER appears before  any  normal  text.
              .COVER    uses    arg   to   build   the   filename
              /usr/lib/groff/tmac/mm/arg.cov.  Therefore  it   is
              possible  to create unlimited types of coversheets.
              ms.cov is supposed to look like the ms  coversheet.
              .COVER  requires  a  .COVEND  at  the  end  of  the
              coverdefinition.  Always use this order of the cov-
              ermacros:
              .COVER
              .TL
              .AF
              .AU
              .AT
              .AS
              .AE
              .COVEND
              However, only .TL and .AU are required.

       COVEND This  finish  the  cover description and prints the
              cover-page.  It is defined in the cover file.

       DE     Display end. Ends a block of  text,  display,  that
              begins with DS or DF.

       DF [format [fill [rindent]]]
              Begin  floating  display  (no  nesting allowed).  A
              floating display is saved in a queue and is printed
              in  the  order entered. Format, fill and rindent is
              the same as in  DS.   Floating  displays  are  con-
              trolled by the two number registers De and Df.

              De register
              0    Nothing special, this is the default.
              1    A  page  eject  will  occur after each printed
                   display, giving only one display per page  and
                   no text following it.

              Df register
              0    Displays  are  printed at the end of each sec-
                   tion (when section-page numbering  is  active)
                   or at the end of the document.
              1    A  new  display will be printed on the current
                   page is there is enough  space,  otherwise  it
                   will be printed at the end of the document.
              2    One display will be printed at the top of each
                   page or column (in multi-column mode).
              3    Print one display if there is enough space for
                   it, otherwise it will be printed at the top of
                   the next page or column.
              4    Print as many displays that will fit in a  new
                   page  or  column.   A  page  break  will occur
                   between each display if De is not zero.
              5    Fill the current page with  displays  and  the
                   rest  beginning at a new page or column. (This
                   is the default.)   A  page  break  will  occur
                   between each display if De is not zero.

       DL [text-indent [1]]
              Dash  list  start. Begins a list where each item is
              printed  after  a  dash.  Text-indent  changes  the
              default indentation of the list items set by number
              register Pi.  A third argument will prohibit print-
              ing  of  a  blank  line before each item.  A second
              argument prevents the empty line between each  list
              item to be printed. See LI.

       DS [format [fill [rindent]]]
              Static  display  start.   Begins collection of text
              until DE.  The text is printed together on the same
              page,  unless  it  is longer than the height of the
              page.  DS can be nested to a unlimited depth  (rea-
              sonably :-).

              format
              ""   No indentation.
              none No indentation.
              L    No indentation.
              I    Indent  text with the value of number register
                   Si.
              C    Center each line
              CB   Center the whole display as a block.
              R    Right adjust the lines.
              RB   Right adjust the whole display as a block

              L, I, C and CB can also be specified as 0, 1, 2  or
              3 for compatibility reasons. (Don't use it. :-)

              fill
              ""   Line-filling turned off.
              none Line-filling turned off.
              N    Line-filling turned off.
              F    Line-filling turned on.

              N  and F can also be specified as 0 or 1.  An empty
              line will normally be printed before and after  the
              display.  Setting number register Ds to 0 will pre-
              vent this.  Rindent shortens  the  line  length  by
              that amount.

       EC [title [override [flag [refname]]]]
              Equation  title.  Sets a title for an equation. The
              override argument change the numbering.

              flag
              none override is a prefix to the number.
              0    override is a prefix to the number.
              1    override is a suffix to the number.
              2    override replaces the number.
              EC uses the number register Ec as counter.   It  is
              possible  to  use  .af  to change the format of the
              number.  If number register Of is 1, then the  for-
              mat of title will use a dash instead of a dot after
              the number.  The string Le controls  the  title  of
              the  List  of  Equations,  default is LIST OF EQUA-
              TIONS.  The string Liec contains the word Equation,
              wich  is  printed before the number.  If refname is
              used, then the equationnumber is saved with  .SETR,
              and can be retrieved with .GETST refname.

       EF [arg]
              Even-page  footer,  printed  just  above the normal
              page footer on even pages, see PF.

       EH [arg]
              Even-page header, printed  just  below  the  normal
              page header on even pages, see PH.

       EN     Equation end, see EQ.

       EOP    End  of page user-defined macro. This macro will be
              called  instead  of  the  normal  printing  of  the
              footer.  The  macro  will be executed in a separate
              environment, without any trap active. See TP.

              Strings available to EOP
              EOPf Argument from PF.
              EOPefArgument from EF.
              EOPofArgument from OF.

       EQ [label]
              Equation start.  EQ/EN are the delimiters for equa-
              tions  written  for  eqn.   EQ/EN  must be inside a
              DS/DE-pair, except when EQ  is  only  used  to  set
              options in eqn.  The label will appear at the right
              margin of the equation, unless number  register  Eq
              is  1.  Then the label will appear at the left mar-
              gin.

       EX [title [override [flag [refname]]]]
              Exhibit title, arguments are the same as for EC  EX
              uses the number register Ex as counter.  The string
              Lx controls the title  of  the  List  of  Exhibits,
              default  is LIST OF EXHIBITS.  The string Liex con-
              tains the word Exhibit, wich is printed before  the
              number.  If refname is used, then the exhibitnumber
              is saved with .SETR,  and  can  be  retrieved  with
              .GETST refname.

       FC [closing]
              Prints  Yours very truly,  as a formal closing of a
              letter or memorandum.  The  argument  replaces  the
              defualt  string.   The  default is stored in string
              variable Letfc.

       FD [arg [1]]
              Footnote default format.  Controls the  hyphenation
              (hyphen),   right  margin  justification  (adjust),
              indentation of footnote text (indent). It can  also
              change the label justification (ljust).

              arg  hyphen  adjust  indent  ljust
              0    no      yes     yes     left
              1    yes     yes     yes     left
              2    no      no      yes     left
              3    yes     no      yes     left
              4    no      yes     no      left
              5    yes     yes     no      left
              6    no      no      no      left
              7    yes     no      no      left
              8    no      yes     yes     right
              9    yes     yes     yes     right
              10   no      no      yes     right
              11   yes     no      yes     right

              Argument  greater than or equal to 11 is considered
              as arg 0.  Default for mmm is 10.

       FE     Footnote end.

       FG [title [override [flag [refname]]]]
              Figure title.  If refname is used,  then  the  fig-
              urenumber is saved with .SETR, and can be retrieved
              with .GETST refname.

       FS [label]
              Footnote start.  The footnote is ended by FE. Foot-
              notes  is normally automatically numbered, the num-
              ber is available in string F.  Just add \*F in  the
              text. By adding label, it is possible to have other
              number or names on  the  footnotes.   Footnotes  in
              displays  is now possible.  An empty line separates
              footnotes, the height of the line is controlled  by
              number register Fs, default value is 1.

       GETHN refname [varname]
              Includes  the  headernumber where the corresponding
              SETR refname was placed. Will be X.X.X. in pass  1.
              See  INITR.   If  varname  is  used, GETHN sets the
              stringvariable varname to the headernumber.

       GETPN refname [varname]
              Includes the  pagenumber  where  the  corresponding
              SETR  refname  was  placed. Will be 9999 in pass 1.
              See INITR.  If varname  is  used,  GETPN  sets  the
              stringvariable varname to the pagenumber.

       GETR refname
              Combines  GETHN  and  GETPN with the text 'chapter'
              and ', page'.  The string Qrf contains the text for
              reference:
                   .ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp].
              Qrf may be  changed  to  support  other  languages.
              Strings  Qrfh and Qrfp are set by GETR and contains
              the page and headernumber.

       GETST refname [varname]
              Includes the string saved with the second  argument
              to  .SETR.  Will be dummystring in pass 1.  If var-
              name is used, GETST sets the stringvariable varname
              to the saved string. See INITR.

       H level [heading-text [heading-suffix]]
              Numbered section heading.  Section headers can have
              a level between 1 and 7, level 1 is the top  level.
              The text is given in heading-text, and must be sur-
              rounded by double quotes  if  it  contains  spaces.
              Heading-suffix  is  added to the header in the text
              but not in the table of contents. This is  normally
              used  for  footnote marks and similar things. Don't
              use \*F in heading-suffix, it won't work. A  manual
              label must be used, see FS.

              An  eventual paragraph, P, directly after H will be
              ignored, H is taking care of spacing  and  indenta-
              tion.

              Page ejection before heading
              Number  register  Ej  controls page ejection before
              the heading.  Normally, a level  one  heading  gets
              two  blank lines before it, higher levels gets only
              one. A new page is ejected before each  first-level
              heading  if  number  register  Ej is 1.  All levels
              below or equal the value of Ej  gets  a  new  page.
              Default value for Ej is 0.

              Heading break level
              A  line break occurs after the heading if the head-
              ing level is less or equal to number  register  Hb.
              Default value 2.

              Heading space level
              A  blank  line is inserted after the heading if the
              heading level is less or equal to  number  register
              Hs.  Default value 2.

              Text  will  follow  the heading on the same line if
              the level is greater than both Hb and Hs.

              Post-heading indent
              Indentation of the text after the heading  is  con-
              trolled by number register Hi, default value 0.  Hi
              0    The text will be left-justified.
              1    Indentation of the text will follow the  value
                   of number register Pt, see P.
              2    The  text will be lined up with the first word
                   of the heading.

              Centered section headings
              All headings whose level is equal or  below  number
              register Hc and also less than or equal to Hb or Hs
              is centerered.

              Font control of the heading
              The font of each heading  level  is  controlled  by
              string HF.  It contains a fontnumber or fontnam for
              each level. Default is 2 2 2 2 2 2 2 (all  headings
              in    italic).     Could   also   be   written   as
              I I I I I I I.  All omitted values are presumed  to
              be a 1.

              Point size control.
              String  HP  controls the pointsize of each heading,
              in the same way as HF controls the font.   A  value
              of 0 selects the default point size.  Default value
              is 0 0 0 0 0 0 0. Beware that only the  point  size
              changes,  not  the vertical size.  That can be con-
              trolled by the user specified macro HX and/or HZ.

              Heading counters
              Seven number registers, named H1 thru  H7  contains
              the counter for each heading level.  The values are
              printed using arabic numerals, this can be  changed
              with  the  macro HM (see below).  All marks ar con-
              catenated before printing. To avoid this, set  num-
              ber register Ht to 1. That will only print the cur-
              rent heading counter at each heading.

              Automatic table of contents
              All headings whose level is equal or  below  number
              register  Cl is saved to be printed in the table of
              contents. Default value is 2.

              Special  control  of  the   heading,   user-defined
              macros.
              These  macros  can  be defined by the user to get a
              finer control of vertical spacing, fonts  or  other
              features.   Argument level is the level-argument to
              H, but 0 for unnumbered headings (see  HU).   Argu-
              ment  rlevel is the real level, it is set to number
              register  Hu  for  unnumbered  headings.   Argument
              heading-text is the text argument to H and HU.

              HX level rlevel heading-text
              HX  is called just before the printing of the head-
              ing.  The following register is available  for  HX.
              HX may alter }0, }2 and ;3.
              string }0
                   Contains  the  heading mark plus two spaces if
                   rlevel is non-zero, otherwise empty.
              register ;0
                   Contains the position of the  text  after  the
                   heading.   0 means that the text should follow
                   the heading on the same line, 1 means  that  a
                   line  break should occur before the text and 2
                   means that a blank line  should  separate  the
                   heading and the text.
              string }2
                   Contains two spaces if register ;0 is 0. It is
                   used to separate the heading  from  the  text.
                   The string is empty if ;0 is non-zero.
              register ;3
                   Contains  the  needed space in units after the
                   heading.  Default is 2v.

                   Can be used to change  things  like  numbering
                   (}0),  vertical  spacing  (}2)  and the needed
                   space after the heading.

              HY dlevel rlevel heading-text
              HY is called after size and font  calculations  and
              might be used to change indentation.

              HZ dlevel rlevel heading-text  HZ  is  called after
              the printing of the heading, just before  H  or  HU
              exits.   Could  be  used  to change the page header
              according to the section heading.

       HC [hyphenation-character]
              Set hyphenation character.  Default  value  is  \%.
              Resets  to  the default if called without argument.
              Hyphenation can be turned by setting number  regis-
              ter Hy to 0 in the beginning of the file.

       HM [arg1 [arg2 [... [arg7]]]]
              Heading  mark  style.  Controls the type of marking
              for printing of the heading counters.  Default is 1
              for all levels.

              Argument
              1    Arabic numerals.
              0001 Arabic  numerals  with  leading zeroes, one or
                   more.
              A    Upper-case alphabetic
              a    Lower-case alphabetic
              I    Upper-case roman numerals
              i    lower-case roman numerals
              emptyArabic numerals.

       HU heading-text
              Unnumbered section header.  HU behavies like  H  at
              the level in number register Hu.  See H.

       HX dlevel rlevel heading-text
              Userdefined   heading  exit.   Called  just  before
              printing the header.  See H.

       HY dlevel rlevel heading-text
              Userdefined  heading  exit.   Called  just   before
              printing the header.  See H.

       HZ dlevel rlevel heading-text
              Userdefined heading exit.  Called just after print-
              ing the header.  See H.

       I [italic-text [prev-font-text [italic-text [...]]]
              Italic.  Changes the font to italic if called with-
              out  arguments.   With one argument it will set the
              word in italic.  With two argument it will concate-
              nate  them and set the first word in italic and the
              second in the previous font.  There is no limit  on
              the number of argument, all will be concatenated.

       IA [addressee-name [title]]
              Begins   specification   of   the   addressee   and
              addressee's address in letter style.  Several names
              can  be  specified with empty IA/IE-pairs, but only
              one address.  See LT.

       IB [italic-text [bold-text [italic-text [...]]]
              Italic-bold Even arguments is  printed  in  italic,
              odd in boldface.  See I.

       IE     Ends the address-specification after IA.

       INITR filename
              Initialize  the  refencemacros.  References will be
              written to filename.tmp and filename.qrf.  Requires
              two  passes with groff.  The first looks for refer-
              ences and the second includes them.  INITR  can  be
              used several times, but it is only the first occur-
              rence of INITR that  is  active.   See  also  SETR,
              GETPN and GETHN.

       IR [italic-text [roman-text [italic-text [...]]]
              Italic-roman  Even  arguments is printed in italic,
              odd in roman.  See I.

       LB text-indent mark-indent pad type [mark [LI-space [LB-
              space]]]
              List  begin  macro.   This is the common macro used
              for all lists.  Text-indent is the number of spaces
              to indent the text from the current indent.

              Pad and mark-indent controls where to put the mark.
              The mark is placed within the mark area, and  mark-
              indent  sets the number of spaces before this area.
              It is normally 0.  The mark  area  ends  where  the
              text  begins.  The  start of the text is still con-
              trolled by text-indent.

              The mark is left justified whitin the mark area  if
              pad  is  0.   If  pad is greater than 0, then mark-
              indent is ignored,  and  the  mark  is  placed  pad
              spaces  before  the  text.  This will right justify
              the mark.

              If type is 0 the list will have  either  a  hanging
              indent  or,  if  argument mark is given, the string
              mark as mark.

              If type is greater than 0 automatic numbering  will
              occur,  arabic  if  mark is empty. Mark can then be
              any of 1, A, a, I or i.

              Type selects one of six possible  ways  to  display
              the mark.
              type
               1    x.
               2    x)
               3    (x)
               4    [x]
               5    <x>
               6    {x}

              Every  item in the list will get LI-space number of
              blank lines before them. Default is 1.

              LB itself will print LB-space blank lines.  Default
              is 0.

       LC [list-level]
              List-status  clear  Terminates  all  current active
              lists down to list-level, or 0 if  no  argmuent  is
              given.  This is used by H to clear any active list.

       LE [1] List end.  Terminate the current list. LE outputs a
              blank line if an argument is given.

       LI [mark [1]]
              List  item  precedes  every item in a list. Without
              argument LS will print the mark determined  by  the
              current  list  type.  By giving LI one argument, it
              will use that as the mark instead.   Two  arguments
              to  LI will make mark a prefix to the current mark.
              A zero length  mark  will  make  a  hanging  indent
              instead.

              A  blank  line  is normally printed before the list
              item. This behaviour can be  controlled  by  number
              register  Ls. Pre-spacing will occur for each list-
              level less than or equal to Ls.  Default  value  is
              99. (Nesting of lists is unlimited. :-)

              The indentation can be changed thru number register
              Li.  Default is 6.

              All lists begins with a list initialization  macro,
              LB.  There are, however, seven predefined listtypes
              to make lists easier to use. They all call LB  with
              different default values.
              AL   Automatically Incremented List
              ML   Marked List
              VL   Variable-Item List
              BL   Bullet List
              DL   Dash List
              RL   Reference List
              BVL  Broken Varable List.
              These  lists  are described at other places in this
              manual. See also LB.

       LT [arg]
              Formats a letter in one of  four  different  styles
              depending on the argument.  See also INTERNALS.
              Arg  Style
              BL   Blocked.  Date  line, return address, writer's
                   address and closing begins at  the  center  of
                   the  line.  All other lines begins at the left
                   margin.
              SB   Semi-blocked. Same as blocked, except that the
                   first line in every paragraph is indented five
                   spaces.
              FB   Full-blocked. All lines begin at the left mar-
                   gin.
              SP   Simplified.  Almost  the  same  as  the  full-
                   blocked style. Subject and the writer'sidenti-
                   fication is printed in all-capital.

       LO type [arg]
              Specify  options  in  letter  (see .LT).  This is a
              list of the standard options:
              CN   Confidential notation.  Prints  RESTRICTED  on
                   the second line below the date line. Any argu-
                   ment replaces  RESTRICTED.   See  also  string
                   variable LetCN.
              RN   Reference  notation.  Prints  In reference to:
                   and the argument  two  lines  below  the  date
                   line.  See also string variable LetRN.
              AT   Attention.  Prints ATTENTION: and the argument
                   below the inside  address.   See  also  string
                   variable LetAT.
              SA   Salutation.  Prints To Whom It May Concern: or
                   the argument if it was present. The salutation
                   is printed two lines below the inside address.
                   See also string variable LetSA.
              SJ   Subject line. Prints the argument  as  subject
                   prefixed  with  SUBJECT:  two  lines below the
                   inside address,  except  in  letter  type  SP.
                   Then  the  subject  is  printed in all-captial
                   without any prefix.  See also string  variable
                   LetSJ.

       MC column-size [column-separation]
              Begin  multiple  columns. Return to normal with 1C.
              MC will create as many columns as the current  line
              length  permits.   Column-size is the width of each
              column, and column-separation is the space  between
              two  columns.  Default  separation  is  the column-
              size/15.  See also 1C.

       ML mark [text-indent [1]]
              Marked  list  start.  The  mark  argument  will  be
              printed  before  each  list item.  Text-indent sets
              the indent and overrides Li.  A third argument will
              prohibit printing of a blank line before each item.

       MT [arg [addressee]]
              Memorandum type.  The arg is part of a filename  in
              /usr/lib/groff/tmac/mm/*.MT.    Memorandum  type  0
              thru 5 are supported, including "string".  Addresse
              just sets a variable, used in the AT&T macros.
              arg
              0    Normal memorandum, no type printed
              1    Memorandum with MEMORANDUM FOR FILE printed
              2    Memorandum with PROGRAMMER'S NOTES printed
              3    Memorandum with ENGINEER'S NOTES printed
              4    Released paper style
              5    External letter style
              See  also  COVER/COVEND,  a  more  flexible type of
              front page.

       MOVE y-pos [x-pos [line-length]]
              Move to a position, pageoffset set  to  x-pos.   If
              line-length  is  not  given, the difference between
              current and new pageoffset  is  used.   Use  PGFORM
              without arguments to return to normal.

       MULB cw1 space1 [cw2 space2 [cw3 ...]]
              Begin  a  special  multi-column mode. Every columns
              width must be specified.  Also  the  space  between
              the columns must be specified. The last column does
              not need any space-definition. MULB starts a diver-
              sion  and  MULE  ends  the diversion and prints the
              columns.  The unit for width and space is 'n',  but
              MULB accepts all normal unitspecifications like 'c'
              and 'i'.  MULB operates in a separate  environment.

       MULN   Begin  the  next  column.  This  is the only way to
              switch column.

       MULE   End the multi-column mode and print the columns.

       nP [type]
              Print numbered paragraph with header level two.  Se
              .P.

       NS [arg [1]]
              Prints  different  types of notations. The argument
              selects between the predefined type  of  notations.
              If the second argument is available, then the argu-
              ment becomes the entire notation.  If the  argument
              doesn't exist in the predefined, it will be printed
              as Copy (arg) to.  It is possible to add more stan-
              dard  notations,  see the string variable Letns and
              Letnsdef.
              Arg  Notation
              none Copy To
              ""   Copy To
              1    Copy To (with att.) to
              2    Copy To (without att.) to
              3    Att.
              4    Atts.
              5    Enc.
              6    Encs.
              7    Under separate cover
              8    Letter to
              9    Memorandum to
              10   Copy (with atts.) to
              11   Copy (without atts.) to
              12   Abstract Only to
              13   Complete Memorandum to
              14   CC

       ND new-date
              New date. Override the current date.  Date  is  not
              printed if new-date is an empty string.

       OF [arg]
              Odd-page footer, a line printed just above the nor-
              mal footer.  See EF and PF.

       OH [arg]
              Odd-page header, a line printed just below the nor-
              mal header.  See EH and PH.

       OP     Make sure that the following text is printed at the
              top of an odd-numbered page.  Will  not  output  an
              empty  page if currently at the top of an odd page.

       P [type]
              Begin new paragraph.  P without argument will  pro-
              duce  left  justified  text, even the first line of
              the paragraph. This is the same as setting type  to
              0.  If  the  argument  is 1, then the first line of
              text following P will be indented by the number  of
              spaces in number register Pi, normally 5.

              Instead of giving 1 as argument to P it is possible
              to set the paragraph type in  number  register  Pt.
              Using 0 and 1 will be the same as adding that value
              to P.  A value of 2  will  indent  all  paragraphs,
              except after headings, lists and displays.

              The  space  between two paragraphs is controlled by
              number register Ps, and is 1 by default (one  blank
              line).

       PGFORM [linelength [pagelength [pageoffset [1]]]]
              Sets   linelength,  pagelength  and/or  pageoffset.
              This macro can be used for special formatting, like
              letterheads  and  other.   It is normally the first
              command in  a  file,  though  it's  not  necessary.
              PGFORM  can  be  used  without  arguments  to reset
              everything after a  MOVE.   A  line-break  is  done
              unless  the  fourth argument is given.  This can be
              used to avoid the  pagenumber  on  the  first  page
              while setting new width and length.

       PGNH   No  header is printed on the next page. Used to get
              rid off the header  in  letters  or  other  special
              texts  This  macro  must be used before any text to
              inhibit the pageheader on the first page.

       PE     Picture end.  Ends a picture for pic, see the  man-
              ual for pic.

       PF [arg]
              Page footer.  PF sets the line to be printed at the
              bottom of each page.  Normally empty.  See  PH  for
              the argument specification.

       PH [arg]
              Page  header,  a  line  printed  at the top of each
              page.  The argument should be specified as  "'left-
              part'center-part'right-part'", where left-, center-
              and right-part is printed left-justified,  centered
              and  right justified. The character % is changed to
              the current page number. The default page-header is
              "''- % -''", the page number between two dashes.

       PS     Picture  start  (from  pic).  Begins  a picture for
              @TMAC@pic, see the manual.

       PX     Page-header user-defined exit.  PX is  called  just
              after  the  printing of the page header in no-space
              mode.

       R      Roman.  Return to roman font, see also I.

       RB [roman-text [bold-text [roman-text [...]]]
              Roman-bold.  Even arguments is  printed  in  roman,
              odd in boldface.  See I.

       RD [prompt [diversion [string]]]
              Read   from  standard  input  to  diversion  and/or
              string.  The text will  be  saved  in  a  diversion
              named  diversion.   Recall  the text by writing the
              name of the diversion after a dot on an empty line.
              A  string  will also be defined if string is given.
              Diversion and/or prompt can be empty ("").

       RF     Reference end.  Ends  a  reference  definition  and
              returns to normal processing. See RS.

       RI [roman-text [italic-text [roman-text [...]]]
              Even  arguments is printed in roman, odd in italic.
              See I.

       RL [text-indent [1]]
              Reference list start Begins a list where each  item
              is preceded with a automatically incremented number
              between square brackets.  Text-indent  changes  the
              default indentation

       RP [arg1 [arg2]]
              Produce reference page.  RP can be used if a refer-
              ence page is wanted somewhere in the  document.  It
              is  not  needed if TC is used to produce a table of
              content. The reference page will  then  be  printed
              automatically.

              The  reference counter will not be resetted if arg1
              is 1.

              Arg2 tells RP whether to eject a page or not.
              Arg2
              0    The reference page will be printed on a  sepa-
                   rate page.  This is the default.
              1    Do not eject page after the list.
              2    Do not eject page before the list.
              3    Do not eject page before and after the list.
              The  reference  items  will be separated by a blank
              line.  Setting number register Ls to  0  will  sup-
              press the line.

              The string Rp contains the reference page title and
              is normally set to REFERENCES.

       RS [string-name]
              RS begins an automatically numbered reference defi-
              nition.   Put  the string \*(Rf where the reference
              mark should be  and  write  the  reference  between
              RS/RF  at  next  new line after the reference mark.
              The reference number is stored in  number  register
              :R.   If  string-name  is given, a string with that
              name will be defined and contain the current refer-
              ence   mark.   The  string  can  be  referenced  as
              \*[string-name] later in the text.

       S [size [spacing]]
              Set point size and vertical spacing. If  any  argu-
              ment is equal 'P', then the previous value is used.
              A 'C' means current value, and 'D'  default  value.
              If '+' or '-' is used before the value, then incre-
              ment or decrement of  the  current  value  will  be
              done.

       SA [arg]
              Set  right-margin  justification.  Justification is
              normally turned on.  No argumenent or 0  turns  off
              justification, a 1 turns on justification.

       SETR refname [string]
              Remember the current header and page-number as ref-
              name.  Saves string if string is defined. string is
              retrieved with .GETST.  See INITR.

       SG [arg [1]]
              Signature  line.  Prints  the authors name(s) after
              the formal closing.  The argument will be  appended
              to  the reference data, printed at either the first
              or last author. The reference data is the location,
              department  and  initials  specified  with .AU.  It
              will be printed at the first author,  otherwise  at
              the last.  No reference data will be printed if the
              author(s) is specifed  thru  .WA/.WE.   See  Letter
              internals.

       SK [pages]
              Skip  pages.   If  pages is 0 or omitted, a skip to
              the next page will occur unless it  is  already  at
              the  top  of  a page.  Otherwise it will skip pages
              pages.

       SM string1 [string2 [string3]]
              Make  a  string  smaller.   If  string2  is  given,
              string1  will  be  smaller and string2 normal, con-
              catenated with string1. With three argument, all is
              concatenated, but only string2 is made smaller.

       SP [lines]
              Space vertically. lines can have any scalingfactor,
              like 3i or 8v. Several SP in a line will only  pro-
              duce  the  maximum number of lines, not the sum. SP
              will also be ignored until the first textline in  a
              page. Add a \& before SP to avoid this.

       TAB    reset  tabs to every 5n. Normally used to reset any
              previous tabpositions.

       TB [title [override [flag [refname]]]]
              Table  title.   If  refname  is  used,   then   the
              tablenumber   is  saved  with  .SETR,  and  can  be
              retrieved with .GETST refname.

       TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4
              [h5]]]]]]]]]
              Table  of contents.  This macro is normally used at
              the last line of  the  document.   It  generates  a
              table  of  contents  with  headings up to the level
              controlled by number register Cl. Note that Cl con-
              trols  the saving of headings, it has nothing to do
              with TC.  Headings with level less than or equal to
              slevel  will  get  spacing  number  of lines before
              them.  Headings with level less than  or  equal  to
              tlevel will have their page numbers right justified
              with dots or spaces separating  the  text  and  the
              page  number. Spaces is used if tab is greater than
              zero, otherwise dots.  Other headings will have the
              page number directly at the end of the heading text
              (ragged right).

              The rest of the arguments  will  be  printed,  cen-
              tered, before the table of contents.

              The user-defined macros TX and TY are used if TC is
              called with at most four arguments.  RX  is  called
              before  the  printing of CONTENTS, and TY is called
              instead of printing CONTENTS.

              String Ci can be set to  control  the  indentations
              for  each  heading-level.   It must be scaled, like
              .ds Ci .25i .5i .75i 1i 1i.   The  indentation   is
              normally controlled by the maxlength of headings in
              each level.

              All texts can  be  redefined,  new  stringvariables
              Lifg, Litb, Liex, Liec and Licon contains "Figure",
              "TABLE",  "Exhibit",  "Equation"  and   "CONTENTS".
              These can be redefined to other languages.

       TE     Table end. See TS.

       TH [N] Table  header.  See  TS.  TH ends the header of the
              table. This header will be printed again if a page-
              break occurs.  Argument N isn't implemented yet.

       TL [charging-case number(s) [filing-case number(s)]
              Begin title of memorandum.  All text up to the next
              AU is included in the title.  Charging-case  number
              and  filing-case is saved for use in the front page
              processing.

       TM [num1 [num2 [...]]]
              Technical memorandumnumbers used in .MT.  Unlimited
              number of arguments may be given.

       TP     Top  of  page  user-defined  macro.   This macro is
              called instead of the normal  page  header.  It  is
              possible  to  get complete control over the header.
              Note that header and footer is printed in  a  sepa-
              rate  environment.  Linelength is preserved though.

       TS [H] Table start. This is the start of a table  specifi-
              cation   to  @TMAC@tbl.  See  separate  manual  for
              @TMAC@tbl.  TS ends  with  TE.   Argument  H  tells
              m@TMAC@m that the table has a header. See TH.

       TX     Userdefined  table of contents exit.  This macro is
              called just before TC  prints  the  word  CONTENTS.
              See TC.

       TY     Userdefined table of contents exit (no "CONTENTS").
              This macro is called instead of printing  CONTENTS.
              See TC.

       VERBON [flag [pointsize [font]]]
              Begin  verbatim output using courier font.  Usually
              for printing programs.   All  character  has  equal
              width.   The pointsize can be changed with the sec-
              ond argument. By specifying the font-argument it is
              possible  to  use  another font instead of courier.
              flag control several special features.  It contains
              the sum of all wanted features.
              ValueDescription
              1    Disable the escape-character (\). This is nor-
                   mally turned on during verbose output.
              2    Add en empty line before the verbose text.
              4    Add en empty line after the verbose text.
              8    Print the verbose text  with  numbered  lines.
                   This adds four digitsized spaces in the begin-
                   ning of each line. Finer control is  available
                   with  the  string-variable Verbnm. It contains
                   all arguments to the troff-command  .nm,  nor-
                   mally '1'.
              16   Indent  the verbose text with five 'n':s. This
                   is controlled by  the  number-variable  Verbin
                   (in units).

       VERBOFF
              End verbatim output.

       VL text-indent [mark-indent [1]]
              Variable-item  list  has  no fixed mark, it assumes
              that every LI have  a  mark  instead.   Text-indent
              sets  the  indent  to the text, and mark-indent the
              distance from the current indent to  the  mark.   A
              third  argument  will  prohibit printing of a blank
              line before each item.

       VM [top [bottom]]
              Vertical margin.

       WA [writer-name [title]]
              Begins specification of  the  writer  and  writer's
              address.  Several names can be specified with empty
              WA/WE-pairs, but only one address.

       WE     Ends the address-specification after .WA.

       WC [format]
              Footnote and display width control.
              N    Set default mode, -WF, -FF, -WD and FB.
              WF   Wide footnotes, wide also in two-column  mode.
              -WF  Normal footnote width, follow column mode.
              FF   All footnotes gets the same width as the first
                   footnote encountered.
              -FF  Normal footnotes, width follows WF and -WF.
              WD   Wide displays, wide also in two-column mode.
              -WD  Normal display width, follow column mode.
              FB   Floating displays generates a line break  when
                   printed on the current page.
              -FB  Floating   displays  does  not  generate  line
                   break.

       Strings used in mm:

       App    A string containing the word "APPENDIX".

       EM     Em dash string

       HF     Fontlist for headings, normally "2 2 2 2  2  2  2".
              Nonnumeric fontnames may also be used.

       HP     Pointsize  list for headings. Normally "0 0 0 0 0 0
              0" which is the same as "10 10 10 10 10 10 10".

       Lifg   String containing Figure.

       Litb   String containing TABLE.

       Liex   String containing Exhibit.

       Liec   String containing Equation.

       Licon  String containing CONTENTS.

       Lf     Contains "LIST OF FIGURES".

       Lt     Contains "LIST OF TABLES".

       Lx     Contains "LIST OF EXHIBITS".

       Le     Contains "LIST OF EQUATIONS".

       Letfc  Contains "Yours very truly,", used in .FC.

       Letapp Contains "APPROVED:", used in .AV..

       Letdate
              Contains "Date", used in .AV..

       LetCN  Contains "CONFIDENTIAL", used in .LO CN.

       LetSA  Contains "To Whom It May Concern:", used in .LO SA.

       LetAT  Contains "ATTENTION:", used in .LO AT.

       LetSJ  Contains "SUBJECT:", used in .LO SJ.

       LetRN  Contains "In reference to:", used in .LO RN.

       Letns  is  an  array containing the different strings used
              in .NS.  It is really a number  of  stringvariables
              prefixed  with  Letns!.   If  the  argument doesn't
              exist,  it  will  be  included  between   ()   with
              Letns!copy   as  prefix  and  Letns!to  as  suffix.
              Observe the space after copy and before to.
              Name           Value
              Letns!0        Copy to
              Letns!1        Copy (with att.) to
              Letns!2        Copy (without att.) to
              Letns!3        Att.
              Letns!4        Atts.
              Letns!5        Enc.
              Letns!6        Encs.
              Letns!7        Under separate cover
              Letns!8        Letter to
              Letns!9        Memorandum to
              Letns!10       Copy (with atts.) to
              Letns!11       Copy (without atts.) to
              Letns!12       Abstract Only to
              Letns!13       Complete Memorandum to
              Letns!14       CC
              Letns!copy     Copy "
              Letns!to       " to

       Letnsdef
              Defines the standard-notation used when no argument
              is given to .NS. Default is 0.

       MO1 - MO12
              Strings containing January thru December.

       Qrf    String  containing  "See  chapter  \\*[Qrfh],  page
              \\n[Qrfp].".

       Rp     Contains "REFERENCES".

       Tm     Contains \(tm, trade mark.

       Verbnm Argument to .nm in .VERBON, default: 1.

       Number variables used in mm:

       Aph    Print an appendix-page for every  new  appendix  if
              this  numbervariable  is  non-zero.  No output will
              occur if Aph is zero, but there will always  be  an
              appendix-entry in the 'List of contents'.

       Cl     Contents  level  [0:7],  contents  saved if heading
              level <= Cl, default 2.

       Cp     Eject page between LIST OF XXXX if Cp == 0, default
              0.

       D      Debugflag,  values  >0  produces  varying degree of
              debug. A value of 1  gives  information  about  the
              progress of formatting, default 0.

       De     Eject  after  floating  display  is  output  [0:1],
              default 0.

       Df     Floating keep output [0:5], default 5.

       Ds     space before and  after  display  if  ==  1  [0:1],
              default 1.

       Ej     Eject page, default 0.

       Eq     Equation lable adjust 0=left, 1=right. Default 0.

       Fs     Footnote spacing, default 1.

       H1-H7  Heading counters

       Hb     Heading break level [0:7], default 2.

       Hc     Heading centering level, [0:7]. Default 0.

       Hi     Heading temporary indent [0:2], default 1.
              0 -> 0 indent, left margin
              1 -> indent to right , like .P 1
              2 -> indent  to line up with text part of preceding
              heading

       Hps    Numbervariable with the heading pre-space level. If
              the  heading-level  is  less  than or equal to Hps,
              then two lines will  precede  the  section  heading
              instead  of  one. Default is first level only.  The
              real amount of lines is controlled by the variables
              Hps1 and Hps2.

       Hps1   This  is  the number of lines preceding .H when the
              heading-level is greater  than  Hps.  Value  is  in
              units, normally 0.5v.

       Hps2   This  is  the number of lines preceding .H when the
              heading-level is less than or equal to  Hps.  Value
              is in units, normally 1v.

       Hs     Heading space level [0:7], default 2.

       Ht     Heading  numbering  type, default 0.  0 -> multiple
              (1.1.1 ...)
              1 -> single

       Hu     Unnumbered heading level, default 2.

       Hy     Hyphenation in body, default 1.
              0 -> no hyphenation
              1 -> hyphenation 14 on

       Letwam Max  lines  in  return-address,  used  in  .WA/.WE.
              Default 14.

       Lf, Lt, Lx, Le
              Enables (1) or disables (0) the printing of List of
              figures, List of tables, List of exhibits and  List
              of equations.  Default: Lf=1, Lt=1, Lx=1, Le=0.

       Li     List indent, used by .AL, default 6.

       Ls     List space, if current listlevel > Ls then no spac-
              ing will occur around lists.  Default 99.

       Lsp

       The size of an empty line. Normally 0.5v, but it is 1v
              if n is set (.nroff).

       N      Numbering style [0:5], default 0.
              0 == (default) normal header for all pages.
              1 == header replaces footer on first  page,  header
              is empty.
              2 == page header is removed on the first page.
              3 == "section-page" numbering enabled.
              4 == page header is removed on the first page.
              5 == "section-page"  and "section-figure" numbering
              enabled.  Se also  the  number-register  Sectf  and
              Sectp.

       Np     Numbered paragraphs, default 0.
              0 == not numbered
              1 == numbered in first level headings.

       Of     Format   of  figure,table,exhibit,equation  titles,
              default 0.
              0 = ". "
              1 = " - "

       P      Current page-number, normally the same as %  unless
              "section-page" numbering is enabled.

       Pi     paragraph indent, default 5.

       Pgps   Controls whether header and footer pointsize should
              follow the current setting or just change when  the
              header and footer is defined.
              ValueDescription
              0    Pointsize will only change to the current set-
                   ting when .PH, .PF, .OH, .EH, .OF  or  .OE  is
                   executed.
              1    Pointsize  will change after every .S. This is
                   the default.

       Ps     paragraph spacing, default 1.

       Pt     Paragraph type, default 0.
              0 == left-justified
              1 == indented .P
              2 == indented .P except after .H, .DE or .LE.

       Sectf  Flag  controlling  "section-figures".  A   non-zero
              value enables this.  Se also register N.

       Sectp  Flag controlling "section-page-numbers". A non-zero
              value enables this.  Se also register N.

       Si     Display indent, default 5.

       Verbin Indent for .VERBON, default 5n.

       .mgm   Always 1.

INTERNALS
       The letter macros is using different  submacros  depending
       on  the letter type. The name of the submacro has the let-
       ter type as suffix. It is  therefore  possible  to  define
       other  letter types, either in the national macro-file, or
       as local additions.  .LT will set the number variables  Pt
       and  Pi to 5 and 0.  The following strings and macros must
       be defined for a new letter type:

       let@init_type
              This macro is called directly by .LT.  It  is  sup-
              posed to initialize variables and other stuff.

       let@head_type
              This  macro  prints  the letter head, and is called
              instead of the normal page header. It  is  supposed
              to  remove  the alias let@header, otherwise it will
              be called for all pages.

       let@sg_type name title n flag [arg1 [arg2 [...]]]
              .SG is calling this macro only for  letters,  memo-
              randums  has  its own processing. name and title is
              specified thru .WA/.WB. n is  the  counter,  1-max,
              and flag is true for the last name. Any other argu-
              ment to .SG is appended.

       let@fc_type closing
              This macro is called by .FC,  and  has  the  formal
              closing as argument.

       .LO  is implemented as a general option-macro. .LO demands
       that a string named Lettype is defined, where type is  the
       letter  type.   .LO  will  then assign the argument to the
       string variable let*lo-type.

AUTHOR
       Jrgen Hgg, Lund, Sweden <jh@axis.se>.

FILES
       /usr/lib/groff/tmac/tmac.m

       /usr/lib/groff/tmac/mm/*.cov

       /usr/lib/groff/tmac/mm/*.MT

       /usr/lib/groff/tmac/mm/locale

SEE ALSO
       groff(1), troff(1), tbl(1), pic(1), eqn(1)
       mm(7) mmse(7)

Groff Version 1.11         27 June 1995                         1