{
    "mode": "info",
    "parameter": "GROFF_MOM",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/info/GROFF_MOM/json",
    "generated": "2026-07-05T13:04:04Z",
    "synopsis": "pdfmom [-Tps [pdfroff-option ...]] [groff-option ...] file ...\ngroff -mom [option ...] file ...\ngroff -m mom [option ...] file ...",
    "sections": {
        "NAME": {
            "content": "groffmom  -  groff  \"mom\"  macros; \"mom\" is a \"roff\" language, part of\n\"groff\"\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "pdfmom [-Tps [pdfroff-option ...]] [groff-option ...] file ...\n\ngroff -mom [option ...] file ...\ngroff -m mom [option ...] file ...\n",
            "subsections": []
        },
        "CALLING MOM": {
            "content": "mom is a macro set for groff, designed primarily  to  format  documents\nfor PDF and PostScript output.\n\nmom  provides  two  categories  of  macros: macros for typesetting, and\nmacros for document processing.  The typesetting macros provide  access\nto  groff's typesetting capabilities in ways that are simpler to master\nthan groff's primitives.  The document processing macros provide highly\ncustomizable  markup tags that allow the user to design and output pro-\nfessional-looking documents with a minimum of typesetting intervention.\n\nFiles processed with pdfmom(1) with or without the -Tps option, produce\nPDF documents.  The documents include a PDF outline that appears in the\n'Contents' panel of document viewers, and may contain clickable  inter-\nnal and external links.\n\nWhen -Tps is absent, groff's native PDF driver, gropdf, is used to gen-\nerate the output.  When given, the output is still PDF, but  processing\nis passed over to pdfroff, which uses groff's PostScript driver, grops.\nNot all PDF features are available when -Tps is given; its primary  use\nis to allow processing of files with embedded PostScript images.\n\nFiles  processed  with groff -mom (or -m mom) produce PostScript output\nby default.\n\nmom comes with her own very complete documentation in HTML  format.   A\nseparate PDF manual, Producing PDFs with groff and mom, covers full mom\nor PDF usage.\n",
            "subsections": []
        },
        "FILES": {
            "content": "/usr/share/groff/1.22.4/tmac/om.tmac\n- the main macro file\n/usr/share/groff/1.22.4/tmac/mom.tmac\n- a wrapper file that calls om.tmac directly.\n\n/usr/share/doc/groff-base/html/mom/toc.html\n- entry point to the HTML documentation\n\n/usr/share/doc/groff-base/pdf/mom-pdf.pdf\n- the PDF manual, Producing PDFs with groff and mom\n\n/usr/share/doc/groff-base/examples/mom/*.mom\n- example files using mom\n",
            "subsections": []
        },
        "DOCUMENTATION IN ALPHABETICAL ORDER": {
            "content": "This part of the man page contains information just as in groff(7), mom\nmacros and mom escape sequences in alphabetical order.\n\nThe  logical  order of mom macros and mom escape sequences is very well\ndocumented in\n\n/usr/share/doc/groff-base/html/mom/toc.html\n- entry point to the HTML documentation\n\nThat document is quite good for beginners, but other  users  should  be\nhappy to have some documentation in reference style.\n\nSo we restrict this part to the alphabetical order of macros and escape\nsequences.  But, so far, we took all  documentation  details  from  the\ntoc.html  file, just in a more useful alphabetical order.  So this part\nof the man page is nothing new, but only a logical arrangement.\n",
            "subsections": []
        },
        "QUICK REFERENCE": {
            "content": "Quick Reference of Inline Escape Sequences in alphabetical Order\n\\*[<colorname>]\nbegin using an initialized colour inline\n\n\\*[BCK n]\nmove backwards in a line\n\n\\*[BOLDER]\ninvoke pseudo bold inline (related to macro .SETBOLDER)\n\n\\*[BOLDERX]\noff pseudo bold inline (related to macro .SETBOLDER)\n\n\\*[BU n]\nmove characters pairs closer together inline (related  to  macro\n.KERN)\n\n\\*[COND]\ninvoke pseudo condensing inline (related to macro .CONDENSE)\n\n\\*[CONDX]\noff pseudo condensing inline (related to macro .CONDENSE)\n\n\\*[CONDSUP]...\\*[CONDSUPX]\npseudo-condensed superscript\n\n\\*[DOWN n]\ntemporarily move downwards in a line\n\n\\*[EN-MARK]\nmark  initial line of a range of line numbers (for use with line\nnumbered endnotes)\n\n\\*[EXT]\ninvoke pseudo extending inline (related to macro .EXTEND)\n\n\\*[EXTX]\noff pseudo condensing inline (related to macro .EXTEND)\n\n\\*[EXTSUP]...\\*[EXTSUPX]\npseudo extended superscript\n\n\\*[FU n]\nmove characters pairs further apart  inline  (related  to  macro\n.KERN)\n\n\\*[FWD n]\nmove forward in a line\n\n\\*[LEADER]\ninsert leaders at the end of a line\n\n\\*[RULE]\ndraw a full measure rule\n\n\\*[SIZE n]\nchange the point size inline (related to macro .PTSIZE)\n\n\\*[SLANT]\ninvoke pseudo italic inline (related to macro .SETSLANT)\n\n\\*[SLANTX]\noff pseudo italic inline (related to macro .SETSLANT)\n\n\\*[ST<n>]...\\*[ST<n>X]\nstring tabs (mark tab positions inline)\n\n\\*[SUP]...\\*[SUPX]\nsuperscript\n\n\\*[TB+]\ninline escape for .TN (Tab Next)\n\n\\*[UL]...\\*[ULX]\ninvoke underlining inline (fixed width fonts only)\n\n\\*[UP n]\ntemporarily move upwards in a line\n\nQuick Reference of Macros in alphabetical Order\n.AUTOLEAD\nset the linespacing relative to the point size\n\n.BMARGIN\nset a bottom margin\n\n.BR    break a justified line\n\n.CENTER\nset line-by-line quad centre\n\n.CONDENSE\nset the amount to pseudo condense\n\n.EL    break a line without advancing on the page\n\n.EXTEND\nset the amount to pseudo extend\n\n.FALLBACKFONT\nestablish a fallback font (for missing fonts)\n\n.FAM   alias to .FAMILY\n\n.FAMILY <family>\nset the family type\n\n.FT    set the font style (roman, italic, etc.)\n\n.HI [ <measure> ]\nhanging indent\n\n.HY    automatic hyphenation on/off\n\n.HYSET\nset automatic hyphenation parameters\n\n.IB [ <left measure> <right measure> ]\nindent both\n\n.IBX [ CLEAR ]\nexit indent both\n\n.IL [ <measure> ]\nindent left\n\n.ILX [ CLEAR ]\nexit indent left\n\n.IQ [ CLEAR ]\nquit any/all indents\n\n.IR [ <measure> ]\nindent right\n\n.IRX [ CLEAR ]\nexit indent right\n\n.JUSTIFY\njustify text to both margins\n\n.KERN  automatic character pair kerning on/off\n\n.LMARGIN\nset a left margin (page offset)\n\n.LEFT  set line-by-line quad left\n\n.LL    set a line length\n\n.LS    set a linespacing (leading)\n\n.PAGE  set explicit page dimensions and margins\n\n.PAGEWIDTH\nset a custom page width\n\n.PAGELENGTH\nset a custom page length\n\n.PAPER <papertype>\nset common paper sizes (letter, A4, etc)\n\n.PTSIZE\nset the point size\n\n.QUAD  \"justify\" text left, centre, or right\n\n.RMARGIN\nset a right margin\n\n.RIGHT set line-by-line quad right\n\n.SETBOLDER\nset the amount of emboldening\n\n.SETSLANT\nset the degree of slant\n\n.SPREAD\nforce justify a line\n\n.SS    set the sentence space size\n\n.TMARGIN\nset a top margin\n\n.TI [ <measure> ]\ntemporary left indent\n\n.WS    set the minimum word space size\n",
            "subsections": []
        },
        "DOCUMENTATION OF DETAILS": {
            "content": "Details of Inline Escape Sequences in alphabetical Order\n\\*[<colorname>]\nbegin using an initialized colour inline\n\n\\*[BCK n]\nmove wards in a line\n\n\\*[BOLDER]\n\\*[BOLDERX]\nEmboldening on/off\n\n\\*[BOLDER]  begins emboldening type.  \\*[BOLDERX] turns the fea-\nture off.  Both are inline escapes, therefore  they  should  not\nappear  as separate lines, but rather be embedded in text lines,\nlike this:\nNot \\*[BOLDER]everything\\*[BOLDERX] is as it seems.\n\nAlternatively, if you wanted  the  whole  line  emboldened,  you\nshould do\n\\*[BOLDER]Not everything is as it seems.\\*[BOLDERX]\nOnce  \\*[BOLDER]  is  invoked, it remains in effect until turned\noff.\n\nNote: If  you're  using  the  document  processing  macros  with\n.PRINTSTYLE TYPEWRITE, mom ignores \\*[BOLDER] requests.\n\n\\*[BU n]\nmove  characters  pairs closer together inline (related to macro\n.KERN)\n\n\\*[COND]\n\\*[CONDX]\nPseudo-condensing on/off\n\n\\*[COND] begins pseudo-condensing  type.   \\*[CONDX]  turns  the\nfeature off.  Both are inline escapes, therefore they should not\nappear as separate lines, but rather be embedded in text  lines,\nlike this:\n\\*[COND]Not everything is as it seems.\\*[CONDX]\n\\*[COND] remains in effect until you turn it off with \\*[CONDX].\n\nIMPORTANT:  You must turn \\*[COND] off before making any changes\nto the point size of your type, either via the .PTSIZE macro or\nwith the \\s inline escape.  If you wish the new point size to be\npseudo-condensed, simply reinvoke \\*[COND] afterwards.  Equally,\n\\*[COND]  must  be  turned off before changing the condense per-\ncentage with .CONDENSE.\n\nNote: If  you're  using  the  document  processing  macros  with\n.PRINTSTYLE TYPEWRITE, mom ignores \\*[COND] requests.\n\n\\*[CONDSUP]...\\*[CONDSUPX]\npseudo-condensed superscript\n\n\\*[DOWN n]\ntemporarily move downwards in a line\n\n\\*[EN-MARK]\nmark  initial line of a range of line numbers (for use with line\nnumbered endnotes)\n\n\\*[EXT]\n\\*[EXTX]\nPseudo-extending on/off\n\n\\*[EXT] begins pseudo-extending type.  \\*[EXTX] turns  the  fea-\nture  off.   Both  are inline escapes, therefore they should not\nappear as separate lines, but rather be embedded in text  lines,\nlike this:\n\\*[EXT]Not everything is as it seems.\\*[EXTX]\n\\*[EXT] remains in effect until you turn it off with \\*[EXTX].\n\nIMPORTANT:  You  must turn \\*[EXT] off before making any changes\nto the point size of your type, either via the .PTSIZE macro or\nwith the \\s inline escape.  If you wish the new point size to be\npseudo-extended, simply reinvoke \\*[EXT]  afterwards.   Equally,\n\\*[EXT] must be turned off before changing the extend percentage\nwith .EXTEND.\n\nNote: If you are  using  the  document  processing  macros  with\n.PRINTSTYLE TYPEWRITE, mom ignores \\*[EXT] requests.\n\n\\*[EXTSUP]...\\*[EXTSUPX]\npseudo extended superscript\n\n\\*[FU n]\nmove  characters  pairs  further  apart inline (related to macro\n.KERN)\n\n\\*[FWD n]\nmove forward in a line\n\n\\*[LEADER]\ninsert leaders at the end of a line\n\n\\*[RULE]\ndraw a full measure rule\n\n\\*[SIZE n]\nchange the point size inline (related to macro .PTSIZE)\n\n\\*[SLANT]\n\\*[SLANTX]\nPseudo italic on/off\n\n\\*[SLANT] begins pseudo-italicizing type.  \\*[SLANTX] turns  the\nfeature off.  Both are inline escapes, therefore they should not\nappear as separate lines, but rather be embedded in text  lines,\nlike this:\nNot \\*[SLANT]everything\\*[SLANTX] is as it seems.\n\nAlternatively,  if  you wanted the whole line pseudo-italicized,\nyou'd do\n\\*[SLANT]Not everything is as it seems.\\*[SLANTX]\n\nOnce \\*[SLANT] is invoked, it remains  in  effect  until  turned\noff.\n\nNote:  If  you're  using  the  document  processing  macros with\n.PRINTSTYLE TYPEWRITE, mom underlines pseudo-italics by default.\nTo    change    this    behaviour,   use   the   special   macro\n.SLANTMEANSSLANT.\n\n\\*[ST<number>]...\\*[ST<number>X]\nMark positions of string tabs\n\nThe quad direction must  be  LEFT  or  JUSTIFY  (see  .QUAD  and\n.JUSTIFY) or the no-fill mode set to LEFT in order for these in-\nlines to function properly.  Please see IMPORTANT, below.\n\nString tabs need to be marked off with inline escapes before be-\ning  set  up  with  the  .ST  macro.  Any input line may contain\nstring tab markers.  <number>, above, means the numeric  identi-\nfier of the tab.\n\nThe following shows a sample input line with string tab markers.\n\\*[ST1]Now is the time\\*[ST1X] for all \\*[ST2]good men\\*ST2X] to come to the aid of the party.\n\nString  tab 1 begins at the start of the line and ends after the\nword time.  String tab 2 starts at good and ends after men.  In-\nline  escapes  (e.g.  font  or point size changes, or horizontal\nmovements, including padding) are taken into  account  when  mom\ndetermines the position and length of string tabs.\n\nUp to nineteen string tabs may be marked (not necessarily all on\nthe same line, of course), and they must be numbered  between  1\nand 19.\n\nOnce  string  tabs have been marked in input lines, they have to\nbe set with .ST, after which they may be called, by number, with\n.TAB.\n\nNote: Lines with string tabs marked off in them are normal input\nlines, i.e. they get printed, just like any input line.  If  you\nwant  to  set  up string tabs without the line printing, use the\n.SILENT macro.\n\nIMPORTANT: Owing to the way  groff  processes  input  lines  and\nturns  them  into  output  lines,  it is not possible for mom to\nguess the correct starting position of string tabs marked off in\nlines that are centered or set flush right.\n\nEqually,  she  cannot  guess  the starting position if a line is\nfully justified and broken with .SPREAD.\n\nIn other words, in order to use string tabs, LEFT  must  be  ac-\ntive, or, if .QUAD LEFT or JUSTIFY are active, the line on which\nthe string tabs are marked must be broken manually with .BR (but\nnot .SPREAD).\n\nTo  circumvent  this behaviour, I recommend using the PAD to set\nup string tabs in centered or flush right lines.  Say, for exam-\nple,  you  want  to use a string tab to underscore the text of a\ncentered line with a rule.  Rather than this,\n.CENTER\n\\*[ST1]A line of text\\*[ST1X]\\c\n.EL\n.ST 1\n.TAB 1\n.PTSIZE 24\n.ALD 3p\n\\*[RULE]\n.RLD 3p\n.TQ\nyou should do:\n.QUAD CENTER\n.PAD \"#\\*[ST1]A line of text\\*[ST1X]#\"\n.EL\n.ST 1\n.TAB 1\n.PTSIZE 24\n.ALD 3p\n\\*[RULE] \\\" Note that you can't use \\*[UP] or \\*[DOWN] with \\*[RULE]\n.RLD 3p\n.TQ\n\n\\*[SUP]...\\*[SUPX]\nsuperscript\n\n\\*[TB+]\nInline escape for .TN (Tab Next)\n\n\\*[UL]...\\*[ULX]\ninvoke underlining inline (fixed width fonts only)\n\n\\*[UP n]\ntemporarily move upwards in a line\n\nDetails of Macros in alphabetical Order\n.AUTOLEAD\nset the linespacing relative to the point size\n\n.BMARGIN <bottom margin>\nBottom Margin\n\nRequires a unit of measure\n\n.BMARGIN sets a nominal position at the bottom of the page  be-\nyond which you don't want your type to go.  When the bottom mar-\ngin is reached, mom starts a new  page.   .BMARGIN  requires  a\nunit of measure.  Decimal fractions are allowed.  To set a nomi-\nnal bottom margin of 3/4 inch, enter\n.BMARGIN .75i\n\nObviously, if you haven't spaced the type on your pages so  that\nthe  last  lines fall perfectly at the bottom margin, the margin\nwill vary from page to page.  Usually, but not always, the  last\nline of type that fits on a page before the bottom margin causes\nmom to start a new page.\n\nOccasionally, owing to a peculiarity in  groff,  an  extra  line\nwill  fall below the nominal bottom margin.  If you're using the\ndocument processing macros, this is unlikely to happen; the doc-\nument  processing macros are very hard-nosed about aligning bot-\ntom margins.\n\nNote: The meaning of .BMARGIN is slightly different when you're\nusing the document processing macros.\n\n.FALLBACKFONT <fallback font> [ ABORT | WARN ]\nFallback Font\n\nIn  the event that you pass an invalid argument to .FAMILY (i.e.\na non-existent family), mom, by default, uses the fallback font,\nCourier  Medium Roman (CR), in order to continue processing your\nfile.\n\nIf you'd prefer another fallback font, pass  .FALLBACKFONT  the\nfull  family+font  name of the font you'd like.  For example, if\nyou'd rather the fallback font were Times Roman Medium Roman,\n.FALLBACKFONT TR\nwould do the trick.\n\nMom issues a warning whenever a font style set with .FT does not\nexist,  either  because  you haven't registered the style or be-\ncause the font style does not exist in the  current  family  set\nwith  .FAMILY.  By default, mom then aborts, which allows you to\ncorrect the problem.\n\nIf you'd prefer that mom not abort on  non-existent  fonts,  but\nrather  continue  processing using a fallback font, you can pass\n.FALLBACKFONT the argument WARN, either by itself, or  in  con-\njunction with your chosen fallback font.\n\nSome examples of invoking .FALLBACKFONT:\n\n.FALLBACKFONT WARN\nmom  will  issue  a  warning whenever you try to access a\nnon-existent font but will continue processing your  file\nwith the default fallback font, Courier Medium Roman.\n\n.FALLBACKFONT TR WARN\nmom  will  issue  a  warning whenever you try to access a\nnon-existent font but will continue processing your  file\nwith  a  fallback font of Times Roman Medium Roman; addi-\ntionally, TR will be the fallback font whenever  you  try\nto access a family that does not exist.\n\n.FALLBACKFONT TR ABORT\nmom  will abort whenever you try to access a non-existent\nfont, and will use the fallback font TR whenever you  try\nto  access  a  family  that does not exist.  If, for some\nreason,  you  want  to  revert  to  ABORT,   just   enter\n\".FALLBACKFONT  ABORT\"  and mom will once again abort on\nfont errors.\n\n.FAM <family>\nType Family, alias of .FAMILY\n\n.FAMILY <family>\nType Family, alias .FAM\n\n.FAMILY takes one argument: the name of  the  family  you  want.\nGroff  comes with a small set of basic families, each identified\nby a 1-, 2- or 3-letter mnemonic.  The standard families are:\nA   = Avant Garde\nBM  = Bookman\nH   = Helvetica\nHN  = Helvetica Narrow\nN   = New Century Schoolbook\nP   = Palatino\nT   = Times Roman\nZCM = Zapf Chancery\n\nThe argument you pass to .FAMILY  is  the  identifier  at  left,\nabove.  For example, if you want Helvetica, enter\n.FAMILY H\n\nNote: The font macro (.FT) lets you specify both the type family\nand the desired font with a single macro.  While  this  saves  a\nfew  keystrokes,  I  recommend using .FAMILY for family, and .FT\nfor font, except where doing so is genuinely inconvenient.  ZCM,\nfor example, only exists in one style: Italic (I).\n\nTherefore,\n.FT ZCMI\nmakes  more  sense  than setting the family to ZCM, then setting\nthe font to I.\n\nAdditional note: If you are running a  version  of  groff  lower\nthan 1.19.2, you must follow all .FAMILY requests with a .FT re-\nquest, otherwise mom will set all type up to the  next  .FT  re-\nquest in the fallback font.\n\nIf  you  are running a version of groff greater than or equal to\n1.19.2, when you invoke the .FAMILY  macro,  mom  remembers  the\nfont  style  (Roman,  Italic, etc) currently in use (if the font\nstyle exists in the new family) and will  continue  to  use  the\nsame font style in the new family.  For example:\n.FAMILY BM \\\" Bookman family\n.FT I \\\" Medium Italic\n<some text> \\\" Bookman Medium Italic\n.FAMILY H \\\" Helvetica family\n<more text> \\\" Helvetica Medium Italic\n\nHowever, if the font style does not exist in the new family, mom\nwill set all subsequent type in the fallback font  (by  default,\nCourier  Medium Roman) until she encounters a .FT request that's\nvalid for the family.\n\nFor example, assuming you don't have the font  Medium  Condensed\nRoman (mom extension CD) in the Helvetica family:\n.FAMILY UN \\\" Univers family\n.FT CD \\\" Medium Condensed\n<some text> \\\" Univers Medium Condensed\n.FAMILY H \\\" Helvetica family\n<more text> \\\" Courier Medium Roman!\n\nIn  the  above example, you must follow .FAMILY H with a .FT re-\nquest that's valid for Helvetica.\n\nPlease see the Appendices, Adding fonts to groff,  for  informa-\ntion  on adding fonts and families to groff, as well as to see a\nlist of the extensions mom provides to groff's basic R, I, B, BI\nstyles.\n\nSuggestion: When adding families to groff, I recommend following\nthe established standard for the naming families and fonts.  For\nexample, if you add the Garamond family, name the font files\nGARAMONDR\nGARAMONDI\nGARAMONDB\nGARAMONDBI\nGARAMOND  then becomes a valid family name you can pass to .FAM-\nILY.  (You could, of course, shorten GARAMOND to just G, or GD.)\nR,  I,  B, and BI after GARAMOND are the roman, italic, bold and\nbold-italic fonts respectively.\n\n.FONT R | B | BI | <any other valid font style>\nAlias to .FT\n\n.FT R | B | BI | <any other valid font style>\nSet font\n\nBy default, groff permits .FT to take one of four possible argu-\nments specifying the desired font:\nR = (Medium) Roman\nI = (Medium) Italic\nB = Bold (Roman)\nBI = Bold Italic\n\nFor example, if your family is Helvetica, entering\n.FT B\nwill  give  you  the  Helvetica  bold font.  If your family were\nPalatino, you'd get the Palatino bold font.\n\nMom considerably extends the range of arguments you can pass  to\n.FT,  making  it more convenient to add and access fonts of dif-\nfering weights and shapes within the same family.\n\nHave a look here for a list of the  weight/style  arguments  mom\nallows.   Be  aware,  though, that you must have the fonts, cor-\nrectly installed and named, in order to use the arguments.  (See\nAdding fonts to groff for instructions and information.)  Please\nalso read the ADDITIONAL NOTE found in the  description  of  the\n.FAMILY macro.\n\nHow  mom  reacts  to an invalid argument to .FT depends on which\nversion of groff you're using.  If your groff version is greater\nthan or equal to 1.19.2, mom will issue a warning and, depending\non how you've set up the fallback font, either continue process-\ning  using  the fallback font, or abort (allowing you to correct\nthe problem).  If your groff version is less  than  1.19.2,  mom\nwill  silently  continue  processing,  using either the fallback\nfont or the font that was in effect prior  to  the  invalid  .FT\ncall.\n\n.FT  will  also  accept,  as an argument, a full family and font\nname.\n\nFor example,\n.FT HB\nwill set subsequent type in Helvetica Bold.\n\nHowever, I strongly recommend keeping family and  font  separate\nexcept where doing so is genuinely inconvenient.\n\nFor inline control of fonts, see Inline Escapes, font control.\n\n.HI [ <measure> ]\nHanging  indent -- the optional argument requires a unit of mea-\nsure.\n\nA hanging indent looks like this:\nThe thousand injuries of Fortunato I had borne as best I\ncould, but when he ventured upon insult, I vowed\nrevenge.  You who so well know the nature of my soul\nwill not suppose, however, that I gave utterance to a\nthreat, at length I would be avenged...\nThe first line of text hangs outside the left margin.\n\nIn order to use hanging indents, you must first have a left  in-\ndent  active  (set  with  either .IL or .IB).  Mom will not hang\ntext outside the left margin set with .LMARGIN or  outside  the\nleft margin of a tab.\n\nThe  first  time you invoke .HI, you must give it a measure.  If\nyou want the first line of a paragraph to hang by, say, 1  pica,\ndo\n.IL 1P\n.HI 1P\nSubsequent  invocations  of  .HI  do not require you to supply a\nmeasure; mom keeps track of the last measure you gave it.\n\nGenerally speaking, you should invoke .HI immediately  prior  to\nthe  line  you  want  hung (i.e. without any intervening control\nlines).  And because  hanging  indents  affect  only  one  line,\nthere's no need to turn them off.\n\nIMPORTANT:  Unlike  IL, IR and IB, measures given to .HI are NOT\nadditive.  Each time you pass a measure to .HI , the measure  is\ntreated  literally.   Recipe:  A numbered list using hanging in-\ndents\n\nNote: mom has macros for setting lists.  This recipe  exists  to\ndemonstrate the use of hanging indents only.\n.PAGE 8.5i 11i 1i 1i 1i 1i\n.FAMILY  T\n.FT      R\n.PTSIZE 12\n.LS      14\n.JUSTIFY\n.KERN\n.SS 0\n.IL \\w'\\0\\0.'\n.HI \\w'\\0\\0.'\n1.\\0The most important point to be considered is whether the\nanswer to the meaning of Life, the Universe, and Everything\nreally is 42.  We have no-one's word on the subject except\nMr. Adams'.\n.HI\n2.\\0If the answer to the meaning of Life, the Universe,\nand Everything is indeed 42, what impact does this have on\nthe politics of representation?  42 is, after all not a\nprime number.  Are we to infer that prime numbers don't\ndeserve equal rights and equal access in the universe?\n.HI\n3.\\0If 42 is deemed non-exclusionary, how do we present it\nas the answer and, at the same time, forestall debate on its\nexclusionary implications?\n\nFirst, we invoke a left indent with a measure equal to the width\nof 2 figures spaces plus a period (using the \\w inline  escape).\nAt  this point, the left indent is active; text afterwards would\nnormally be indented.  However, we invoke a  hanging  indent  of\nexactly  the  same  width, which hangs the first line (and first\nline only!) to the left of the indent by the same  distance  (in\nthis case, that means \"out to the left margin\").  Because we be-\ngin the first line with a number, a period, and a figure  space,\nthe  actual text (The most important point...) starts at exactly\nthe same spot as the indented lines that follow.\n\nNotice that subsequent invocations of .HI don't require  a  mea-\nsure to be given.\n\nPaste the example above into a file and preview it with\npdfmom filename.mom | ps2pdf - filename.pdf\nto see hanging indents in action.\n\n.IB [ <left measure> <right measure> ]\nIndent both -- the optional argument requires a unit of measure\n\n.IB allows you to set or invoke a left and a right indent at the\nsame time.\n\nAt its first invocation, you must supply a measure for both  in-\ndents;  at subsequent invocations when you wish to supply a mea-\nsure, both must be given again.  As with .IL and .IR,  the  mea-\nsures  are  added  to the values previously passed to the macro.\nHence, if you wish to change just one of the  values,  you  must\ngive an argument of zero to the other.\n\nA  word  of advice: If you need to manipulate left and right in-\ndents separately, use a combination of .IL and  .IR  instead  of\n.IB.  You'll save yourself a lot of grief.\n\nA  minus sign may be prepended to the arguments to subtract from\ntheir current values.  The \\w inline escape may be used to spec-\nify text-dependent measures, in which case no unit of measure is\nrequired.  For example,\n.IB \\w'margarine' \\w'jello'\nleft indents text by the width of the word margarine  and  right\nindents by the width of jello.\n\nLike  .IL  and .IR, .IB with no argument indents by its last ac-\ntive values.  See the brief explanation of how mom  handles  in-\ndents for more details.\n\nNote:  Calling  a  tab (with .TAB <n>) automatically cancels any\nactive indents.\n\nAdditional note: Invoking .IB automatically turns  off  .IL  and\n.IR.\n\n.IL [ <measure> ]\nIndent left -- the optional argument requires a unit of measure\n\n.IL  indents text from the left margin of the page, or if you're\nin a tab, from the left edge of the tab.  Once  IL  is  on,  the\nleft  indent  is  applied  uniformly to every subsequent line of\ntext, even if you change the line length.\n\nThe first time you invoke .IL, you must give it a measure.  Sub-\nsequent  invocations with a measure add to the previous measure.\nA minus sign may be prepended to the argument to  subtract  from\nthe  current measure.  The \\w inline escape may be used to spec-\nify a text-dependent measure, in which case no unit  of  measure\nis required.  For example,\n.IL \\w'margarine'\nindents text by the width of the word margarine.\n\nWith no argument, .IL indents by its last active value.  See the\nbrief explanation of how mom handles indents for more details.\n\nNote: Calling a tab (with .TAB <n>)  automatically  cancels  any\nactive indents.\n\nAdditional note: Invoking .IL automatically turns off IB.\n\n.IQ [ <measure> ]\nIQ -- quit any/all indents\n\nIMPORTANT  NOTE: The original macro for quitting all indents was\n.IX.  This usage has been deprecated in favour of IQ.  .IX  will\ncontinue  to  behave  as before, but mom will issue a warning to\nstderr indicating that you should update your documents.\n\nAs a consequence of this change, .ILX, .IRX  and  .IBX  may  now\nalso  be invoked as .ILQ, .IRQ and .IBQ.  Both forms are accept-\nable.\n\nWithout an argument, the macros to quit indents  merely  restore\nyour  original  margins and line length.  The measures stored in\nthe indent macros themselves are saved  so  you  can  call  them\nagain without having to supply a measure.\n\nIf  you  pass these macros the optional argument CLEAR, they not\nonly restore your original left margin and line length, but also\nclear any values associated with a particular indent style.  The\nnext time you need an indent of the same style, you have to sup-\nply a measure again.\n\n.IQ CLEAR, as you'd suspect, quits and clears the values for all\nindent styles at once.\n\n.IR [ <measure> ]\nIndent right -- the optional argument requires a unit of measure\n\n.IR indents text from the right margin of the page, or if you're\nin a tab, from the end of the tab.\n\nThe first time you invoke .IR, you must give it a measure.  Sub-\nsequent invocations with a measure add to  the  previous  indent\nmeasure.   A minus sign may be prepended to the argument to sub-\ntract from the current indent measure.  The \\w inline escape may\nbe  used  to  specify a text-dependent measure, in which case no\nunit of measure is required.  For example,\n.IR \\w'jello'\nindents text by the width of the word jello.\n\nWith no argument, .IR indents by its last active value.  See the\nbrief explanation of how mom handles indents for more details.\n\nNote:  Calling  a  tab (with .TAB <n>) automatically cancels any\nactive indents.\n\nAdditional note: Invoking .IR automatically turns off IB.\n\n.LMARGIN <left margin>\nLeft Margin\n\nLMARGIN establishes the distance from  the  left  edge  of  the\nprinter  sheet  at which you want your type to start.  It may be\nused any time, and remains in  effect  until  you  enter  a  new\nvalue.\n\nLeft  indents and tabs are calculated from the value you pass to\n.LMARGIN, hence it's always a good idea  to  invoke  it  before\nstarting  any  serious  typesetting.   A  unit of measure is re-\nquired.  Decimal fractions are allowed.  Therefore, to  set  the\nleft margin at 3 picas (1/2 inch), you'd enter either\n.LMARGIN 3P\nor\n.LMARGIN .5i\n\nIf you use the macros .PAGE, .PAGEWIDTH or .PAPER without invok-\ning .LMARGIN (either before or afterwards),  mom  automatically\nsets .LMARGIN to 1 inch.\n\nNote:  .LMARGIN  behaves in a special way when you're using the\ndocument processing macros.\n\n.MCO   Begin multi-column setting.\n\n.MCO (Multi-Column On) is the macro you use to begin  multi-col-\numn  setting.   It marks the current baseline as the top of your\ncolumns, for use later with .MCR.  See the introduction to  col-\numns for an explanation of multi-columns and some sample input.\n\nNote:  Do  not confuse .MCO with the .COLUMNS macro in the docu-\nment processing macros.\n\n.MCR   Once you've turned multi-columns on (with .MCO),  .MCR,  at  any\ntime, returns you to the top of your columns.\n\n.MCX [ <distance to advance below longest column> ]\nOptional argument requires a unit of measure.\n\n.MCX  takes you out of any tab you were in (by silently invoking\n.TQ) and advances to the bottom of the longest column.\n\nWithout an argument, .MCX advances 1 linespace below the longest\ncolumn.\n\nLinespace, in this instance, is the leading in effect at the mo-\nment .MCX is invoked.\n\nIf you pass the <distance> argument to .MCX, it advances 1 line-\nspace  below  the  longest  column (see above) PLUS the distance\nspecified by the argument.  The argument requires a unit of mea-\nsure;  therefore,  to advance an extra 6 points below where .MCX\nwould normally place you, you'd enter\n.MCX 6p\n\nNote: If you wish to advance a precise distance below the  base-\nline  of  the  longest  column,  use  .MCX with an argument of 0\n(zero; no unit of measure required) in conjunction with the .ALD\nmacro, like this:\n.MCX 0\n.ALD 24p\nThe  above advances to precisely 24 points below the baseline of\nthe longest column.\n\n.NEWPAGE\n\nWhenever you want to start a new page, use .NEWPAGE,  by  itself\nwith  no  argument.   Mom  will finish up processing the current\npage and move you to the top of a new one (subject  to  the  top\nmargin set with .TMARGIN).\n\n.PAGE <width> [ <length> [ <lm> [ <rm> [ <tm> [ <bm> ] ] ] ] ]\n\nAll arguments require a unit of measure\n\nIMPORTANT: If you're using the document processing macros, .PAGE\nmust come after .START.  Otherwise, it should go at the top of a\ndocument,  prior  to  any text.  And remember, when you're using\nthe document processing macros, top  margin  and  bottom  margin\nmean  something  slightly  different than when you're using just\nthe typesetting macros (see Top and bottom margins  in  document\nprocessing).\n\n.PAGE  lets you establish paper dimensions and page margins with\na single macro.  The only required argument is page width.   The\nrest  are  optional, but they must appear in order and you can't\nskip over any.  <lm>, <rm>, <tm> and <bm>  refer  to  the  left,\nright, top and bottom margins respectively.\n\nAssuming  your  page  dimensions are 11 inches by 17 inches, and\nthat's all you want to set, enter\n.PAGE 11i 17i\nIf you want to set the left margin as well, say, at 1 inch, PAGE\nwould look like this:\n.PAGE 11i 17i 1i\n\nNow  suppose  you also want to set the top margin, say, at 1-1/2\ninches.  <tm> comes after <rm> in the  optional  arguments,  but\nyou can't skip over any arguments, therefore to set the top mar-\ngin, you must also give a right margin.  The .PAGE  macro  would\nlook like this:\n.PAGE 11i 17i 1i 1i 1.5i\n|   |\nrequired right---+   +---top margin\nmargin\n\nClearly,  .PAGE  is  best used when you want a convenient way to\ntell mom just the dimensions of your printer  sheet  (width  and\nlength),  or when you want to tell her everything about the page\n(dimensions and all the margins), for example\n.PAGE 8.5i 11i 45p 45p 45p 45p\nThis sets up an 81/2 by 11 inch page with margins of  45  points\n(5/8-inch) all around.\n\nAdditionally,  if  you  invoke .PAGE with a top margin argument,\nany macros you invoke after .PAGE will almost certainly move the\nbaseline  of  the  first line of text down by one linespace.  To\ncompensate, do\n.RLD 1v\nimmediately before entering any text, or, if it's feasible, make\n.PAGE the last macro you invoke prior to entering text.\n\nPlease  read the Important note on page dimensions and papersize\nfor information on ensuring groff respects your .PAGE dimensions\nand margins.\n\n.PAGELENGTH <length of printer sheet>\ntells  mom  how  long your printer sheet is.  It works just like\n.PAGEWIDTH.\n\nTherefore, to tell mom your printer sheet is 11 inches long, you\nenter\n.PAGELENGTH 11i\nPlease  read the important note on page dimensions and papersize\nfor information on ensuring groff respects your PAGELENGTH.\n\n.PAGEWIDTH <width of printer sheet>\n\nThe argument to .PAGEWIDTH is the width of your printer sheet.\n\n.PAGEWIDTH requires a unit of measure.   Decimal  fractions  are\nallowed.   Hence,  to  tell  mom  that the width of your printer\nsheet is 81/2 inches, you enter\n.PAGEWIDTH 8.5i\n\nPlease read the Important note on page dimensions and  papersize\nfor information on ensuring groff respects your PAGEWIDTH.\n\n.PAPER <paper type>\nprovides  a  convenient  way to set the page dimensions for some\ncommon printer sheet sizes.  The argument <paper  type>  can  be\none  of:  LETTER,  LEGAL,  STATEMENT,  TABLOID,  LEDGER,  FOLIO,\nQUARTO, EXECUTIVE, 10x14, A3, A4, A5, B4, B5.\n\n.PRINTSTYLE\n\n.PTSIZE <size of type in points>\nPoint size of type, does not require a unit of measure.\n\n.PTSIZE (Point Size) takes one argument: the size  of  type  in\npoints.   Unlike  most  other  macros that establish the size or\nmeasure of something, .PTSIZE does not require that you  supply\na  unit  of  measure since it's a near universal convention that\ntype size is measured in points.  Therefore, to change the  type\nsize to, say, 11 points, enter\n.PTSIZE 11\nPoint sizes may be fractional (e.g. 10.25 or 12.5).\n\nYou  can  prepend  a  plus  or  a  minus sign to the argument to\n.PTSIZE, in which case the point size will be changed by + or -\nthe  original value.  For example, if the point size is 12 , and\nyou want 14 , you can do\n.PTSIZE +2\nthen later reset it to 12 with\n.PTSIZE -2\nThe size of type can also be changed inline.\n\nNote: It is unfortunate that the pic  preprocessor  has  already\ntaken the name, PS, and thus mom's macro for setting point sizes\ncan't use it.  However, if you aren't using pic, you might  want\nto alias .PTSIZE as .PS, since there'd be no conflict.  For ex-\nample\n.ALIAS PS PTSIZE\nwould allow you to set point sizes with .PS.\n\n.RMARGIN <right margin>\nRight Margin\n\nRequires a unit of measure.\n\nIMPORTANT:  .RMARGIN,  if  used,  must   come   after   .PAPER,\n.PAGEWIDTH,  .LMARGIN,  and/or  .PAGE  (if a right margin isn't\ngiven to PAGE).  The reason is that  .RMARGIN  calculates  line\nlength from the overall page dimensions and the left margin.\n\nObviously,  it can't make the calculation if it doesn't know the\npage width and the left margin.\n\n.RMARGIN establishes the amount of space you want  between  the\nend  of  typeset  lines  and  the right hand edge of the printer\nsheet.  In other words, it sets the line length.  .RMARGIN  re-\nquires a unit of measure.  Decimal fractions are allowed.\n\nThe  line  length  macro (LL) can be used in place of .RMARGIN.\nIn either case, the last one invoked sets the line length.   The\nchoice of which to use is up to you.  In some instances, you may\nfind it easier to think of a section of type as having  a  right\nmargin.  In others, giving a line length may make more sense.\n\nFor  example,  if  you're setting a page of type you know should\nhave 6-pica margins left and right, it makes sense  to  enter  a\nleft and right margin, like this:\n.LMARGIN 6P\n.RMARGIN 6P\n\nThat  way,  you  don't  have to worry about calculating the line\nlength.  On the other hand, if you know the line  length  for  a\npatch of type should be 17 picas and 3 points, entering the line\nlength with LL is much easier than calculating the right margin,\ne.g.\n.LL 17P+3p\n\nIf  you use the macros .PAGE, .PAGEWIDTH or PAPER without invok-\ning .RMARGIN afterwards, mom automatically sets .RMARGIN to  1\ninch.   If  you set a line length after these macros (with .LL),\nthe line length calculated by .RMARGIN is, of course,  overrid-\nden.\n\nNote:  .RMARGIN  behaves in a special way when you're using the\ndocument processing macros.\n\n.ST <tab number> L | R | C | J [ QUAD ]\n\nAfter string tabs have been marked off on  an  input  line  (see\n\\*[ST]...\\*[STX]),  you need to set them by giving them a direc-\ntion and, optionally, the QUAD argument.\n\nIn this respect, .ST is like .TABSET except that you don't have\nto  give  .ST  an  indent or a line length (that's already taken\ncare of, inline, by \\*[ST]...\\*[STX]).\n\nIf you want string tab 1 to be left, enter\n.ST 1 L\nIf you want it to be left and filled, enter\n.ST 1 L QUAD\nIf you want it to be justified, enter\n.ST 1 J\n\n.TAB <tab number>\nAfter tabs have been defined (either with .TABSET or .ST), .TAB\nmoves to whatever tab number you pass it as an argument.\n\nFor example,\n.TAB 3\nmoves you to tab 3.\n\nNote:  .TAB  breaks  the  line preceding it and advances 1 line-\nspace.  Hence,\n.TAB 1\nA line of text in tab 1.\n.TAB 2\nA line of text in tab 2.\nproduces, on output\nA line of text in tab 1.\nA line of text in tab 2.\n\nIf you want the tabs to line up, use .TN  (Tab  Next)  or,  more\nconveniently, the inline escape \\*[TB+]:\n.TAB 1\nA line of text in tab 1.\\*[TB+]\nA line of text in tab 2.\nwhich produces\nA line of text in tab 1.   A line of text in tab 2.\n\nIf the text in your tabs runs to several lines, and you want the\nfirst lines of each tab to align, you must use the  multi-column\nmacros.\n\nAdditional  note:  Any  indents in effect prior to calling a tab\nare automatically turned off by TAB.  If you were  happily  zip-\nping  down the page with a left indent of 2 picas turned on, and\nyou call a tab whose indent from the left  margin  is  6  picas,\nyour  new distance from the left margin will be 6 picas, not I 6\npicas plus the 2 pica indent.\n\nTabs are not by nature columnar, which is to  say  that  if  the\ntext  inside  a  tab  runs to several lines, calling another tab\ndoes not automatically move to the baseline of the first line in\nthe previous tab.  To demonstrate:\nTAB 1\nCarrots\nPotatoes\nBroccoli\n.TAB 2\n$1.99/5 lbs\n$0.25/lb\n$0.99/bunch\nproduces, on output\nCarrots\nPotatoes\nBroccoli\n$1.99/5 lbs\n$0.25/lb\n$0.99/bunch\n\n.TB <tab number>\nAlias to .TAB\n\n.TI [ <measure> ]\nTemporary  left  indent -- the optional argument requires a unit\nof measure\n\nA temporary indent is one that applies only to the first line of\ntext  that comes after it.  Its chief use is indenting the first\nline of paragraphs.  (Mom's .PP macro, for example, uses a  tem-\nporary indent.)\n\nThe  first  time you invoke .TI, you must give it a measure.  If\nyou want to indent the first line of a paragraph by, say, 2 ems,\ndo\n.TI 2m\n\nSubsequent  invocations  of  .TI  do not require you to supply a\nmeasure; mom keeps track of the last measure you gave it.\n\nBecause temporary indents are temporary, there's no need to turn\nthem off.\n\nIMPORTANT: Unlike .IL, .IR and IB, measures given to .TI are NOT\nadditive.  In the following example, the second \".TI 2P\" is  ex-\nactly 2 picas.\n.TI 1P\nThe beginning of a paragraph...\n.TI 2P\nThe beginning of another paragraph...\n\n.TN    Tab Next\n\nInline escape \\*[TB+]\n\nTN  moves  over  to  the  next tab in numeric sequence (tab n+1)\nwithout advancing on the page.  See the NOTE in the  description\nof the .TAB macro for an example of how TN works.\n\nIn  tabs that aren't given the QUAD argument when they're set up\nwith .TABSET or ST, you must terminate the line  preceding  .TN\nwith  the  \\c inline escape.  Conversely, if you did give a QUAD\nargument to .TABSET or ST, the \\c must not be used.\n\nIf you find remembering whether to put in the \\c bothersome, you\nmay prefer to use the inline escape alternative to .TN, \\*[TB+],\nwhich works consistently regardless of the fill mode.\n\nNote: You must put text in the input line immediately after .TN.\nStacking of .TN's is not allowed.  In other words, you cannot do\n.TAB 1\nSome text\\c\n.TN\nSome more text\\c\n.TN\n.TN\nYet more text\nThe above example, assuming tabs numbered from 1 to 4, should be\nentered\n.TAB 1\nSome text\\c\n.TN\nSome more text\\c\n.TN\n\\&\\c\n.TN\nYet more text\n\\& is a zero-width, non-printing character that groff recognizes\nas  valid input, hence meets the requirement for input text fol-\nlowing .TN.\n\n.TQ    TQ takes you out of whatever tab you were in, advances  1  line-\nspace, and restores the left margin, line length, quad direction\nand fill mode that were in effect prior to invoking any tabs.\n\n.TMARGIN <top margin>\nTop margin\n\nRequires a unit of measure\n\n.TMARGIN establishes the distance from the top of  the  printer\nsheet  at which you want your type to start.  It requires a unit\nof measure, and decimal fractions are allowed.   To  set  a  top\nmargin of 21/2 centimetres, you'd enter\n.TMARGIN 2.5c\n.TMARGIN  calculates the vertical position of the first line of\ntype on a page by treating the top edge of the printer sheet  as\na baseline.  Therefore,\n.TMARGIN 1.5i\nputs  the baseline of the first line of type 11/2 inches beneath\nthe top of the page.\n\nNote: .TMARGIN means something slightly different  when  you're\nusing  the  document processing macros.  See Top and bottom mar-\ngins in document processing for an explanation.\n\nIMPORTANT: .TMARGIN does two things:  it  establishes  the  top\nmargin  for  pages that come after it and it moves to that posi-\ntion on the current page.  Therefore, .TMARGIN should  only  be\nused at the top of a file (prior to entering text) or after NEW-\nPAGE, like this:\n.NEWPAGE\n.TMARGIN 6P\n<text>\n",
            "subsections": []
        },
        "AUTHORS": {
            "content": "mom was written by Peter Schaffter <peter@schaffter.ca>.   PDF  support\nwas  provided  by Deri James <deri@chuzzlewit.demon.co.uk>.  The alpha-\nbetical documentation of macros and escape sequences in this  man  page\nwere written by the mom team.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "groff(1), groffmom(7),\n\n/usr/share/doc/groff-base/html/mom/toc.html\n- entry point to the HTML documentation\n\n<http://www.schaffter.ca/mom/momdoc/toc.html>\n- HTML documentation online\n\n<http://www.schaffter.ca/mom/>\n- the mom macros homepage\n\ngroff 1.22.4                     23 March 2022                    GROFFMOM(7)",
            "subsections": []
        }
    },
    "summary": "groffmom  -  groff  \"mom\"  macros; \"mom\" is a \"roff\" language, part of \"groff\"",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "groff",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/groff/1/json"
        },
        {
            "name": "groffmom",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/groffmom/7/json"
        }
    ]
}