{
    "mode": "man",
    "parameter": "groff_mom",
    "section": "7",
    "url": "https://www.chedong.com/phpMan.php/man/groff_mom/7/json",
    "generated": "2026-10-09T03:23:12Z",
    "sections": {
        "Name": {
            "content": "groffmom - modern macros for document composition with GNU roff\n",
            "subsections": []
        },
        "Synopsis": {
            "content": "groff -mom [option ...] [file ...]\ngroff -m mom [option ...] [file ...]\n",
            "subsections": []
        },
        "Description": {
            "content": "mom  is a macro set for groff, designed primarily to prepare documents for PDF and PostScript\noutput.  mom provides macros in two categories: typesetting  and  document  processing.   The\nformer  provide access to groff's typesetting capabilities in ways that are simpler to master\nthan groff's requests and escape sequences.  The latter provide  highly  customizable  markup\ntags  that  allow the user to design and output professional-looking documents with a minimum\nof typesetting intervention.\n\nFiles processed with pdfmom(1) produce PDF documents.  The documents include  a  PDF  outline\nthat  appears in the navigation pane panel of document viewers, and may contain clickable in‐\nternal and external links.\n\nNormally.  groff's native PDF driver, gropdf(1), is used to generate the output.  When pdfmom\nis given the “-T ps” option, it still produces PDF, but processing is delegated  to  pdfroff,\nwhich  uses  groff's PostScript driver, grops(1).  Not all PDF features are available when -T\nps is given; its primary use is to allow processing of files with embedded PostScript images.\n\nFiles processed with groff -mom (or -m mom) format for the device specified with the  -T  op‐\ntion.  (In this installation, ps is the default output device.)\n\nmom  comes  with  her own comprehensive documentation in HTML.  A PDF manual, “Producing PDFs\nwith groff and mom”, discusses preparation of PDF documents with mom in detail.\n",
            "subsections": []
        },
        "Files": {
            "content": "/usr/share/groff/1.23.0/tmac/mom.tmac\nis a wrapper enabling the package to be loaded with “groff -m mom”.\n\n/usr/share/groff/1.23.0/tmac/om.tmac\nimplements the package.\n\n/usr/share/doc/groff-base/html/mom/toc.html\nis the entry point to the HTML documentation.\n\n/usr/share/doc/groff-base/pdf/mom-pdf.pdf\nis “Producing PDFs with groff and mom”, by Deri James and Peter Schaffter.\n\n/usr/share/doc/groff-base/examples/mom/*.mom\nare examples of mom usage.\n",
            "subsections": []
        },
        "Reference": {
            "content": "",
            "subsections": [
                {
                    "name": "Escape sequences",
                    "content": "\\*[<colorname>]\nbegin using an initialized colour inline\n\n\\*[BCK n]\nmove backward 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 .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 downward in a line\n\n\\*[EN-MARK]\nmark initial line of a range of line numbers (for use with line numbered 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 .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 upward in a line\n"
                },
                {
                    "name": "Macros",
                    "content": ""
                },
                {
                    "name": ".AUTOLEAD",
                    "content": "set the linespacing relative to the point size\n"
                },
                {
                    "name": ".B_MARGIN",
                    "content": "set a bottom margin\n\n.BR    break a justified line\n"
                },
                {
                    "name": ".CENTER",
                    "content": "set line-by-line quad centre\n"
                },
                {
                    "name": ".CONDENSE",
                    "content": "set the amount to pseudo condense\n\n.EL    break a line without advancing on the page\n"
                },
                {
                    "name": ".EXTEND",
                    "content": "set the amount to pseudo extend\n"
                },
                {
                    "name": ".FALLBACK_FONT",
                    "content": "establish 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"
                },
                {
                    "name": ".HY_SET",
                    "content": "set automatic hyphenation parameters\n\n.IB [ <left measure> <right measure> ]\nindent both\n"
                },
                {
                    "name": ".IBX [ CLEAR ]",
                    "content": "exit indent both\n\n.IL [ <measure> ]\nindent left\n"
                },
                {
                    "name": ".ILX [ CLEAR ]",
                    "content": "exit indent left\n"
                },
                {
                    "name": ".IQ [ CLEAR ]",
                    "content": "quit any/all indents\n\n.IR [ <measure> ]\nindent right\n"
                },
                {
                    "name": ".IRX [ CLEAR ]",
                    "content": "exit indent right\n"
                },
                {
                    "name": ".JUSTIFY",
                    "content": "justify text to both margins\n\n.KERN  automatic character pair kerning on/off\n"
                },
                {
                    "name": ".L_MARGIN",
                    "content": "set 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"
                },
                {
                    "name": ".PAGEWIDTH",
                    "content": "set a custom page width\n"
                },
                {
                    "name": ".PAGELENGTH",
                    "content": "set a custom page length\n\n.PAPER <papertype>\nset common paper sizes (letter, A4, etc)\n"
                },
                {
                    "name": ".PT_SIZE",
                    "content": "set the point size\n\n.QUAD  \"justify\" text left, centre, or right\n"
                },
                {
                    "name": ".R_MARGIN",
                    "content": "set a right margin\n\n.RIGHT set line-by-line quad right\n"
                },
                {
                    "name": ".SETBOLDER",
                    "content": "set the amount of emboldening\n"
                },
                {
                    "name": ".SETSLANT",
                    "content": "set the degree of slant\n"
                },
                {
                    "name": ".SPREAD",
                    "content": "force justify a line\n\n.SS    set the sentence space size\n"
                },
                {
                    "name": ".T_MARGIN",
                    "content": "set a top margin\n\n.TI [ <measure> ]\ntemporary left indent\n\n.WS    set the minimum word space size\n"
                }
            ]
        },
        "Documentation of details": {
            "content": "",
            "subsections": [
                {
                    "name": "Details of inline escape sequences in alphabetical order",
                    "content": "\\*[<colorname>]\nbegin using an initialized colour inline\n\n\\*[BCK n]\nmove backward in a line\n\n\\*[BOLDER]\n\\*[BOLDERX]\nEmboldening on/off\n\n\\*[BOLDER] begins emboldening type.  \\*[BOLDERX] turns the feature off.  Both are  in‐\nline escape sequences; therefore, they should not appear as separate lines, but rather\nbe embedded in text lines, like this:\nNot \\*[BOLDER]everything\\*[BOLDERX] is as it seems.\n\nAlternatively, if you wanted the whole line emboldened, you should do\n\\*[BOLDER]Not everything is as it seems.\\*[BOLDERX]\nOnce \\*[BOLDER] is invoked, it remains in effect until turned off.\n\nNote:  If  you're using the document processing macros with .PRINTSTYLE TYPEWRITE, mom\nignores \\*[BOLDER] requests.\n\n\\*[BU n]\nmove characters pairs closer together inline (related to macro .KERN)\n\n\\*[COND]\n\\*[CONDX]\nPseudo-condensing on/off\n\n\\*[COND] begins pseudo-condensing type.  \\*[CONDX] turns the feature  off.   Both  are\ninline  escape  sequences;  therefore,  they  should not appear as separate lines, but\nrather be embedded in text lines, like 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 to the point  size  of\nyour  type,  either  via the .PTSIZE macro or with the \\s inline escape sequence.  If\nyou wish the new point size to be pseudo-condensed, simply  reinvoke  \\*[COND]  after‐\nward.   Equally,  \\*[COND]  must be turned off before changing the condense percentage\nwith .CONDENSE.\n\nNote: If you're using the document processing macros with .PRINTSTYLE  TYPEWRITE,  mom\nignores \\*[COND] requests.\n\n\\*[CONDSUP]...\\*[CONDSUPX]\npseudo-condensed superscript\n\n\\*[DOWN n]\ntemporarily move downward in a line\n\n\\*[EN-MARK]\nmark initial line of a range of line numbers (for use with line numbered endnotes)\n\n\\*[EXT]\n\\*[EXTX]\nPseudo-extending on/off\n\n\\*[EXT]  begins  pseudo-extending type.  \\*[EXTX] turns the feature off.  Both are in‐\nline escape sequences; therefore, they should not appear as separate lines, but rather\nbe embedded in text lines, like 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 to the  point  size  of\nyour  type,  either  via the .PTSIZE macro or with the \\s inline escape sequence.  If\nyou wish the new point size to be pseudo-extended, simply reinvoke \\*[EXT]  afterward.\nEqually,  \\*[EXT]  must  be  turned  off  before  changing  the extend percentage with\n.EXTEND.\n\nNote: If you are using the document processing macros with .PRINTSTYLE TYPEWRITE,  mom\nignores \\*[EXT] requests.\n\n\\*[EXTSUP]...\\*[EXTSUPX]\npseudo extended superscript\n\n\\*[FU n]\nmove characters pairs further apart inline (related to macro .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 feature off.  Both are\ninline  escape  sequences;  therefore,  they  should not appear as separate lines, but\nrather be embedded in text lines, like this:\nNot \\*[SLANT]everything\\*[SLANTX] is as it seems.\n\nAlternatively, if you wanted the whole line pseudo-italicized, you'd do\n\\*[SLANT]Not everything is as it seems.\\*[SLANTX]\n\nOnce \\*[SLANT] is invoked, it remains in effect until turned off.\n\nNote: If you're using the document processing macros with .PRINTSTYLE  TYPEWRITE,  mom\nunderlines pseudo-italics by default.  To 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 .JUSTIFY) or the no-fill\nmode set to LEFT in  order  for  these  inlines  to  function  properly.   Please  see\nIMPORTANT, below.\n\nString  tabs  need  to  be marked off with inline escape sequences before being set up\nwith the .ST macro.  Any input line may contain string tab markers.  <number>,  above,\nmeans the numeric identifier of the tab.\n\nThe following shows a sample input line with string tab markers.\n\\*[ST1]De minimus\\*[ST1X]non curat\\*[ST2]lex\\*[ST2X].\n\nString tab 1 begins at the start of the line and ends after the word time.  String tab\n2  starts  at  good  and ends after men.  Inline escape sequences (e.g., font or point\nsize changes, or horizontal movements, including padding) are taken into account  when\nmom determines the position and length of string tabs.\n\nUp  to  nineteen  string  tabs may be marked (not necessarily all on the same line, of\ncourse), and they must be numbered between 1 and 19.\n\nOnce string tabs have been marked in input lines, they have to be set with .ST,  after\nwhich they may be called, by number, with .TAB.\n\nNote:  Lines with string tabs marked off in them are normal input lines, i.e. they get\nprinted, just like any input line.  If you want to set up string tabs without the line\nprinting, use the .SILENT macro.\n\nIMPORTANT: Owing to the way groff processes input lines and  turns  them  into  output\nlines,  it  is  not  possible for mom to guess the correct starting position of string\ntabs marked off in lines that are centered or set flush right.\n\nEqually, she cannot guess the starting position if a line is fully justified and  bro‐\nken with .SPREAD.\n\nIn other words, in order to use string tabs, LEFT must be active, or, if .QUAD LEFT or\nJUSTIFY  are active, the line on which the string tabs are marked must be broken manu‐\nally with .BR (but not .SPREAD).\n\nTo circumvent this behaviour, I recommend using the PAD to set up string tabs in  cen‐\ntered  or flush right lines.  Say, for example, you want to use a string tab to under‐\nscore the text of a centered 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\\\" 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 upward in a line\n"
                },
                {
                    "name": "Details of macros in alphabetical order",
                    "content": ""
                },
                {
                    "name": ".AUTOLEAD",
                    "content": "set 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  beyond  which  you  don't\nwant  your  type  to  go.   When  the bottom margin is reached, mom starts a new page.\n.BMARGIN requires a unit 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 the last lines fall\nperfectly at the bottom margin, the margin will vary from page to page.  Usually,  but\nnot  always, the last line 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 will fall below the nomi‐\nnal bottom margin.  If you're using the document processing macros, this  is  unlikely\nto  happen;  the  document processing macros are very hard-nosed about aligning bottom\nmargins.\n\nNote: The meaning of .BMARGIN is slightly different when you're  using  the  document\nprocessing macros.\n\n.FALLBACKFONT <fallback font> [ ABORT | WARN ]\nFallback Font\n\nIn  the  event that you pass an invalid argument to .FAMILY (i.e. a non-existent fami‐\nly), mom, by default, uses the fallback font, Courier Medium Roman (CR), in  order  to\ncontinue processing your file.\n\nIf  you'd  prefer another fallback font, pass .FALLBACKFONT the full family+font name\nof the font you'd like.  For example, if you'd rather the fallback font were Times Ro‐\nman Medium Roman,\n.FALLBACKFONT TR\nwould do the trick.\n\nMom issues a warning whenever a font style set with .FT does not exist, either because\nyou haven't registered the style or because the font style does not exist in the  cur‐\nrent  family  set with .FAMILY.  By default, mom then aborts, which allows you to cor‐\nrect the problem.\n\nIf you'd prefer that mom not abort on non-existent fonts, but rather continue process‐\ning using a fallback font, you can pass .FALLBACKFONT the argument  WARN,  either  by\nitself, or in conjunction 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 non-existent font but\nwill continue processing your file with  the  default  fallback  font,  Courier\nMedium Roman.\n\n.FALLBACKFONT TR WARN\nmom  will  issue  a  warning whenever you try to access a non-existent font but\nwill continue processing your file with a fallback font of Times  Roman  Medium\nRoman;  additionally, TR will be the fallback font whenever you try to access a\nfamily that does not exist.\n\n.FALLBACKFONT TR ABORT\nmom will abort whenever you try to access a non-existent font, and will use the\nfallback font TR whenever you try to access a family that does not exist.   If,\nfor some reason, you want to revert to ABORT, just enter \".FALLBACKFONT ABORT\"\nand mom will once again abort on font errors.\n\n.FAM <family>\nType Family, alias of .FAMILY\n\n.FAMILY <family>\nType Family, alias of .FAM\n\n.FAMILY takes one argument: the name of the family you want.  Groff comes with a small\nset of basic families, each identified by a 1-, 2- or 3-letter mnemonic.  The standard\nfamilies 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, above.  For example, if\nyou want Helvetica, enter\n.FAMILY H\n\nNote: The font macro (.FT) lets you specify both the type family and the desired  font\nwith a single macro.  While this saves a few keystrokes, I recommend using .FAMILY for\nfamily,  and  .FT for font, except where doing so is genuinely inconvenient.  ZCM, for\nexample, only exists in one style: Italic (I).\n\nTherefore,\n.FT ZCMI\nmakes more sense than setting the family to ZCM, then setting the font to I.\n\nAdditional note: If you are running a groff version prior to 1.19.2, you  must  follow\nall  .FAMILY  requests  with  a .FT request, otherwise mom will set all type up to the\nnext .FT request in the fallback font.\n\nIf you are running groff 1.19.2 or later, when you invoke the .FAMILY macro,  mom  re‐\nmembers the font style (Roman, Italic, etc) currently in use (if the font style exists\nin  the  new  family)  and will continue to use the same font style in the new family.\nFor 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 will set  all  subse‐\nquent  type  in the fallback font (by default, Courier Medium Roman) until she encoun‐\nters a .FT request that's valid for the family.\n\nFor example, assuming you don't have the font Medium Condensed  Roman  (mom  extension\nCD) 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 request that's valid for\nHelvetica.\n\nPlease see the Appendices, Adding fonts to groff, for information on adding fonts  and\nfamilies  to groff,aswellasto see a list of the extensions mom provides to groff's ba‐\nsic R, I, B, BI styles.\n\nSuggestion: When adding families to groff, I recommend following the established stan‐\ndard for the naming families and fonts.  For example, if you add the Garamond  family,\nname the font files\nGARAMONDR\nGARAMONDI\nGARAMONDB\nGARAMONDBI\nGARAMOND  then  becomes  a  valid family name you can pass to .FAMILY.  (You could, of\ncourse, shorten GARAMOND to just G, or GD.)  R, I, B, and BI after  GARAMOND  are  the\nroman, italic, bold and bold-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 arguments specifying the\ndesired 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 Palatino,  you'd  get  the\nPalatino bold font.\n\nMom  considerably  extends  the range of arguments you can pass to .FT, making it more\nconvenient to add and access fonts of differing weights and  shapes  within  the  same\nfamily.\n\nHave  a  look  here  for  a  list of the weight/style arguments mom allows.  Be aware,\nthough, that you must have the fonts, correctly installed and named, in order  to  use\nthe  arguments.  (See Adding fonts to groff for instructions and information.)  Please\nalso read the ADDITIONAL NOTE found in the description of the .FAMILY macro.\n\nHow mom reacts to an invalid argument to .FT depends on which version of groff  you're\nusing.   If  your  groff version is 1.19.2 or later, mom will issue a warning and, de‐\npending on how you've set up the fallback font, either continue processing  using  the\nfallback  font,  or abort (allowing you to correct the problem).  In earlier versions,\nmom will silently continue processing, using either the fallback font or the font that\nwas in effect prior to the invalid .FT call.\n\n.FT will also accept, as an argument, a full family and font name.\n\nFor example,\n.FT HB\nwill set subsequent type in Helvetica Bold.\n\nHowever, I strongly recommend keeping family and font separate except where  doing  so\nis 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 measure.\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 indent active (set with\neither .IL or .IB).  Mom will not hang text outside the left margin set with .LMARGIN\nor outside the left margin of a tab.\n\nThe first time you invoke .HI, you must give it a measure.  If you want the first line\nof a paragraph to hang by, say, 1 pica, do\n.IL 1P\n.HI 1P\nSubsequent invocations of .HI do not require you to supply a measure; mom keeps  track\nof the last measure you gave it.\n\nGenerally  speaking, you should invoke .HI immediately prior to the line you want hung\n(i.e. without any intervening control lines).  And because hanging indents affect only\none line, there's no need to turn them off.\n\nIMPORTANT: Unlike IL, IR and IB, measures given to .HI are NOT  additive.   Each  time\nyou  pass a measure to .HI, the measure is treated literally.  Recipe: A numbered list\nusing hanging indents\n\nNote: mom has macros for setting lists.  This recipe exists to demonstrate the use  of\nhanging 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\nthe answer to the meaning of Life, the Universe, and\nEverything really is 42.  We have no one's word on the\nsubject except Mr. Adams's.\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\nit as the answer and, at the same time, forestall debate\non its exclusionary implications?\n\nFirst,  we  invoke a left indent with a measure equal to the width of 2 figures spaces\nplus a period (using the \\w inline escape).  At this point, the left indent is active;\ntext afterward would normally be indented.  However, we invoke a hanging indent of ex‐\nactly the same width, which hangs the first line (and first line only!) to the left of\nthe indent by the same distance (in this case, that means “out to the  left  margin”).\nBecause we begin the first line with a number, a period, and a figure space, the actu‐\nal  text (The most important point...) starts at exactly the same spot as the indented\nlines that follow.\n\nNotice that subsequent invocations of .HI don't require a measure 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 same time.\n\nAt its first invocation, you must supply a measure for both indents; at subsequent in‐\nvocations when you wish to supply a measure, both must be given again.   As  with  .IL\nand  .IR, the measures are added to the values previously passed to the macro.  Hence,\nif you wish to change just one of the values, you must give an argument of zero to the\nother.\n\nA word of advice: If you need to manipulate left and right indents separately,  use  a\ncombination of .IL and .IR instead of .IB.  You'll save yourself a lot of grief.\n\nA  minus sign may be prepended to the arguments to subtract from their current values.\nThe \\w inline escape may be used to specify text-dependent measures, in which case  no\nunit of measure is required.  For example,\n.IB \\w'margarine' \\w'jello'\nleft indents text by the width of the word margarine and right indents by the width of\njello.\n\nLike  .IL  and  .IR,  .IB with no argument indents by its last active values.  See the\nbrief explanation of how mom handles indents for more details.\n\nNote: Calling a tab (with .TAB <n>) automatically cancels any active indents.\n\nAdditional note: Invoking .IB automatically turns off .IL and .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 in  a  tab,  from  the\nleft  edge  of  the tab.  Once IL is on, the left indent is applied uniformly to every\nsubsequent line of text, even if you change the line length.\n\nThe first time you invoke .IL, you must give it  a  measure.   Subsequent  invocations\nwith  a measure add to the previous measure.  A minus sign may be prepended to the ar‐\ngument to subtract from the current measure.  The \\w inline  escape  may  be  used  to\nspecify  a  text-dependent measure, in which case no unit of measure is required.  For\nexample,\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 brief explanation  of\nhow mom handles indents for more details.\n\nNote: Calling a tab (with .TAB <n>) automatically cancels any active 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 .IX.  This usage has\nbeen deprecated in favour of IQ.  .IX will continue to behave as before, but mom  will\nissue a warning to stderr indicating that you should update your documents.\n\nAs  a consequence of this change, .ILX, .IRX and .IBX may now also be invoked as .ILQ,\n.IRQ and .IBQ.  Both forms are acceptable.\n\nWithout an argument, the macros to quit indents merely restore your  original  margins\nand line length.  The measures stored in the indent macros themselves are saved so you\ncan call them again without having to supply a measure.\n\nIf you pass these macros the optional argument CLEAR, they not only restore your orig‐\ninal left margin and line length, but also clear any values associated with a particu‐\nlar  indent  style.   The  next time you need an indent of the same style, you have to\nsupply a measure again.\n\n.IQ CLEAR, as you'd suspect, quits and clears the values  for  all  indent  styles  at\nonce.\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 in a tab, from the\nend of the tab.\n\nThe first time you invoke .IR, you must give it  a  measure.   Subsequent  invocations\nwith  a  measure add to the previous indent measure.  A minus sign may be prepended to\nthe argument to subtract from the current indent measure.  The \\w inline escape may be\nused to specify a text-dependent measure, in which case no  unit  of  measure  is  re‐\nquired.  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 brief explanation of\nhow mom handles indents for more details.\n\nNote: Calling a tab (with .TAB <n>) automatically cancels any active 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 printer sheet at which you\nwant your type to start.  It may be used any time, and remains in effect until you en‐\nter a new value.\n\nLeft indents and tabs are calculated from the value you pass to .LMARGIN, hence  it's\nalways  a  good  idea to invoke it before starting any serious typesetting.  A unit of\nmeasure is required.  Decimal fractions are allowed.  Therefore, to set the left  mar‐\ngin 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 invoking .LMARGIN (either\nbefore or afterward), mom automatically sets .LMARGIN to 1 inch.\n\nNote: .LMARGIN behaves in a special way when you're  using  the  document  processing\nmacros.\n\n.MCO   Begin multi-column setting.\n\n.MCO  (Multi-Column  On) is the macro you use to begin multi-column setting.  It marks\nthe current baseline as the top of your columns, for use later with .MCR.  See the in‐\ntroduction to columns for an explanation of multi-columns and some sample input.\n\nNote: Do not confuse .MCO with the .COLUMNS macro in the document processing macros.\n\n.MCR   Once you've turned multi-columns on (with .MCO), .MCR, at any time, returns you to the\ntop of your columns.\n\n.MCX [ <distance to advance below longest column> ]\nOptional argument requires a unit of measure.\n\nExit multi-columns.\n\n.MCX takes you out of any tab you were in (by silently invoking .TQ) and  advances  to\nthe bottom of the longest column.\n\nWithout an argument, .MCX advances 1 linespace below the longest column.\n\nLinespace, in this instance, is the leading in effect at the moment .MCX is invoked.\n\nIf you pass the <distance> argument to .MCX, it advances 1 linespace below the longest\ncolumn (see above) PLUS the distance specified by the argument.  The argument requires\na unit of measure; therefore, to advance an extra 6 points below where .MCX would nor‐\nmally place you, you'd enter\n.MCX 6p\n\nNote: If you wish to advance a precise distance below the baseline of the longest col‐\numn, use .MCX with an argument of 0 (zero; no unit of measure required) in conjunction\nwith the .ALD macro, like this:\n.MCX 0\n.ALD 24p\nThe above advances to precisely 24 points below the baseline of the longest column.\n"
                },
                {
                    "name": ".NEWPAGE",
                    "content": "Whenever  you want to start a new page, use .NEWPAGE, by itself with no argument.  Mom\nwill finish up processing the current page and move you to the top of a new one  (sub‐\nject to the top margin 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 must come after\n.START.  Otherwise, it should go at the top of a document, prior to any text.  And re‐\nmember, when you're using the document processing macros, top margin and bottom margin\nmean something slightly different than when you're using just the  typesetting  macros\n(see Top and bottom margins in document processing).\n\n.PAGE  lets  you establish paper dimensions and page margins with a single macro.  The\nonly required argument is page width.  The rest are optional, but they must appear  in\norder  and  you  can't  skip  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 that's all you  want  to\nset, enter\n.PAGE 11i 17i\nIf you want to set the left margin as well, say, at 1 inch, PAGE would look like this:\n.PAGE 11i 17i 1i\n\nNow suppose you also want to set the top margin, say, at 1–1/2 inches.  <tm> comes af‐\nter  <rm>  in the optional arguments, but you can't skip over any arguments, therefore\nto set the top margin, you must also give a right margin.  The .PAGE macro would  look\nlike 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 tell mom just the dimen‐\nsions  of  your  printer sheet (width and length), or when you want to tell her every‐\nthing about the page (dimensions and all the margins), for example\n.PAGE 8.5i 11i 45p 45p 45p 45p\nThis sets up an 8½ by 11 inch page with margins of 45 points (5/8-inch) all around.\n\nAdditionally, if you invoke .PAGE with a top margin argument, any  macros  you  invoke\nafter  .PAGE will almost certainly move the baseline of the first line of text down by\none linespace.  To compensate, do\n.RLD 1v\nimmediately before entering any text, or, if it's feasible, make .PAGE the last  macro\nyou invoke prior to entering text.\n\nPlease read the Important note on page dimensions and papersize for information on en‐\nsuring groff respects your .PAGE dimensions and margins.\n\n.PAGELENGTH <length of printer sheet>\ntells mom how long your printer sheet is.  It works just like .PAGEWIDTH.\n\nTherefore, to tell mom your printer sheet is 11 inches long, you enter\n.PAGELENGTH 11i\nPlease read the important note on page dimensions and papersize for information on en‐\nsuring 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 allowed.  Hence, to tell\nmom that the width of your printer sheet is 8½ inches, you enter\n.PAGEWIDTH 8.5i\n\nPlease read the Important note on page dimensions and papersize for information on en‐\nsuring groff respects your PAGEWIDTH.\n\n.PAPER <paper type>\nprovides  a  convenient  way  to set the page dimensions for some common printer sheet\nsizes.  The argument <paper type> can be one of: LETTER,  LEGAL,  STATEMENT,  TABLOID,\nLEDGER, FOLIO, QUARTO, EXECUTIVE, 10x14, A3, A4, A5, B4, B5.\n"
                },
                {
                    "name": ".PRINTSTYLE",
                    "content": ".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 points.  Unlike most\nother macros that establish the size or measure of something, .PTSIZE  does  not  re‐\nquire  that  you  supply a unit of measure since it's a near universal convention that\ntype size is measured in points.  Therefore, to change  the  type  size  to,  say,  11\npoints, 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 .PTSIZE, in which case the\npoint size will be changed by + or - the original value.  For example,  if  the  point\nsize is 12, and you 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 taken the name, PS, and\nthus mom's macro for setting point sizes can't use it.  However, if you  aren't  using\npic, you might want to alias .PTSIZE as .PS, since there'd be no conflict.  For exam‐\nple\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, .PAGEWIDTH, .LMARGIN, and/or\n.PAGE (if a right margin isn't given to PAGE).  The reason is  that  .RMARGIN  calcu‐\nlates line length from the overall page dimensions and the left margin.\n\nObviously,  it  can't  make  the calculation if it doesn't know the page width and the\nleft margin.\n\n.RMARGIN establishes the amount of space you want between the end  of  typeset  lines\nand  the  right  hand  edge  of  the  printer sheet.  In other words, it sets the line\nlength.  .RMARGIN requires a unit of measure.  Decimal fractions are allowed.\n\nThe line length macro (LL) can be used in place of .RMARGIN.   In  either  case,  the\nlast  one  invoked sets the line length.  The choice of which to use is up to you.  In\nsome instances, you may find 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 have 6-pica margins left\nand right, it makes sense to enter a left and right margin, like this:\n.LMARGIN 6P\n.RMARGIN 6P\n\nThat way, you don't have to worry about calculating the line  length.   On  the  other\nhand, if you know the line length for a patch of type should be 17 picas and 3 points,\nentering  the  line  length  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 invoking .RMARGIN afterward,\nmom automatically sets .RMARGIN to 1 inch.  If you set  a  line  length  after  these\nmacros (with .LL), the line length calculated by .RMARGIN is, of course, overridden.\n\nNote:  .RMARGIN  behaves  in  a special way when you're using the document processing\nmacros.\n\n.ST <tab number> L | R | C | J [ QUAD ]\n\nAfter string tabs have been marked off on an input line  (see  \\*[ST]...\\*[STX]),  you\nneed to set them by giving them a direction and, optionally, the QUAD argument.\n\nIn this respect, .ST is like .TABSET except that you don't have to give .ST an indent\nor a line length (that's already taken care 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 moves to whatever tab\nnumber 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 linespace.  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 conveniently, the in‐\nline escape sequence \\*[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 first lines  of  each\ntab to align, you must use the multi-column macros.\n\nAdditional note: Any indents in effect prior to calling a tab are automatically turned\noff  by  TAB.  If you were happily zipping down the page with a left indent of 2 picas\nturned on, and you call a tab whose indent from the left margin is 6 picas,  your  new\ndistance from the left margin will be 6 picas, not I 6 picas plus the 2 pica indent.\n\nTabs are not by nature columnar, which is to say that if the text inside a tab runs to\nseveral  lines, calling another tab does not automatically move to the baseline of the\nfirst line in the 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 of measure\n\nA temporary indent is one that applies only to the first line of text that comes after\nit.  Its chief use is indenting the first line of paragraphs.  (Mom's .PP  macro,  for\nexample, uses a temporary indent.)\n\nThe  first time you invoke .TI, you must give it a measure.  If you want to indent the\nfirst line of a paragraph by, say, 2 ems, do\n.TI 2m\n\nSubsequent invocations of .TI do not require you to supply a measure; mom keeps  track\nof the last measure you gave it.\n\nBecause temporary indents are temporary, there's no need to turn them off.\n\nIMPORTANT:  Unlike  .IL,  .IR  and IB, measures given to .TI are NOT additive.  In the\nfollowing example, the second \".TI 2P\" is exactly 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) without advancing  on  the\npage.   See  the  NOTE  in  the description of the .TAB macro for an example of how TN\nworks.\n\nIn tabs that aren't given the QUAD argument when they're set up with .TABSET  or  ST,\nyou  must  terminate  the line preceding .TN with the \\c inline escape sequence.  Con‐\nversely, if you did give a QUAD argument to .TABSET or ST, the \\c must not be used.\n\nIf you find remembering whether to put in the \\c bothersome, you may prefer to use the\ninline escape alternative to .TN, \\*[TB+], which works consistently regardless of  the\nfill mode.\n\nNote: You must put text in the input line immediately after .TN.  Stacking of .TN's is\nnot 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 entered\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 as valid input, hence\nmeets the requirement for input text following .TN.\n\n.TQ    TQ  takes  you out of whatever tab you were in, advances 1 linespace, and restores the\nleft margin, line length, quad direction and fill mode that were in  effect  prior  to\ninvoking 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 sheet at which you want\nyour type to start.  It requires a unit of measure, and decimal fractions are allowed.\nTo set a top margin of 2½ centimetres, you'd enter\n.TMARGIN 2.5c\n.TMARGIN  calculates  the  vertical  position  of the first line of type on a page by\ntreating the top edge of the printer sheet as a baseline.  Therefore,\n.TMARGIN 1.5i\nputs the baseline of the first line of type 1½ inches beneath the top of the page.\n\nNote: .TMARGIN means something slightly different when you're using the document pro‐\ncessing macros.  See Top and bottom margins in document processing for an explanation.\n\nIMPORTANT: .TMARGIN does two things: it establishes the top  margin  for  pages  that\ncome after it and it moves to that position on the current page.  Therefore, .TMARGIN\nshould  only  be  used at the top of a file (prior to entering text) or after NEWPAGE,\nlike this:\n.NEWPAGE\n.TMARGIN 6P\n<text>\n"
                }
            ]
        },
        "Authors": {
            "content": "mom was written by Peter Schaffter.  PDF support was provided  by  Deri James.   This  manual\npage was written by Bernd Warken.\n\nSee also\n/usr/share/doc/groff-base/html/mom/toc.html\nentry point to the HTML documentation\n\n⟨http://www.schaffter.ca/mom/momdoc/toc.html⟩\nHTML documentation online\n\n⟨http://www.schaffter.ca/mom/⟩\nthe mom macros homepage\n\nGroff: The GNU Implementation of troff, by Trent A. Fisher and Werner Lemberg, is the primary\ngroff manual.  You can browse it interactively with “info groff”.\n\npdfmom(1), groff(1), troff(1)\n\ngroff 1.23.0                                31 March 2024                               groffmom(7)",
            "subsections": []
        }
    },
    "flags": [],
    "examples": [],
    "see_also": []
}