Command Section

GROFF_MOM(7)	       Miscellaneous Information Manual		  GROFF_MOM(7)

NAME
       groff_mom  -  groff  "mom"  macros; "mom" is a "roff" language, part of
       "groff"

SYNOPSIS
       pdfmom [-Tps [pdfroff-option ...]] [groff-option	...] file ...

       groff -mom [option ...] file ...
       groff -m	mom [option ...] file ...

CALLING	MOM
       mom is a	macro set for groff, designed primarily	 to  format  documents
       for PDF and PostScript output.

       mom  provides  two  categories  of  macros: macros for typesetting, and
       macros for document processing.	The typesetting	macros provide	access
       to  groff's typesetting capabilities in ways that are simpler to	master
       than groff's primitives.	 The document processing macros	provide	highly
       customizable  markup tags that allow the	user to	design and output pro-
       fessional-looking documents with	a minimum of typesetting intervention.

       Files processed with pdfmom(1) with or without the -Tps option, produce
       PDF documents.  The documents include a PDF outline that	appears	in the
       `Contents' panel	of document viewers, and may contain clickable	inter-
       nal and external	links.

       When -Tps is absent, groff's native PDF driver, gropdf, is used to gen-
       erate the output.  When given, the output is still PDF, but  processing
       is passed over to pdfroff, which	uses groff's PostScript	driver,	grops.
       Not all PDF features are	available when -Tps is given; its primary  use
       is to allow processing of files with embedded PostScript	images.

       Files  processed	 with groff -mom (or -m	mom) produce PostScript	output
       by default.

       mom comes with her own very complete documentation in HTML  format.   A
       separate	PDF manual, Producing PDFs with	groff and mom, covers full mom
       or PDF usage.

FILES
       /usr/local/share/groff/1.22.4/tmac/om.tmac
	      -	the main macro file
       /usr/local/share/groff/1.22.4/tmac/mom.tmac
	      -	a wrapper file that calls om.tmac directly.

       /usr/local/share/doc/groff-1.22.4/html/mom/toc.html
	      -	entry point to the HTML	documentation

       /usr/local/share/doc/groff-1.22.4/pdf/mom-pdf.pdf
	      -	the PDF	manual,	Producing PDFs with groff and mom

       /usr/local/share/doc/groff-1.22.4/examples/mom/*.mom
	      -	example	files using mom

DOCUMENTATION IN ALPHABETICAL ORDER
       This part of the	man page contains information just as in groff(7), mom
       macros and mom escape sequences in alphabetical order.

       The  logical  order of mom macros and mom escape	sequences is very well
       documented in

       /usr/local/share/doc/groff-1.22.4/html/mom/toc.html
	      -	entry point to the HTML	documentation

       That document is	quite good for beginners, but other  users  should  be
       happy to	have some documentation	in reference style.

       So we restrict this part	to the alphabetical order of macros and	escape
       sequences.  But,	so far,	we took	all  documentation  details  from  the
       toc.html	 file, just in a more useful alphabetical order.  So this part
       of the man page is nothing new, but only	a logical arrangement.

QUICK REFERENCE
   Quick Reference of Inline Escape Sequences in alphabetical Order
       \*[<colorname>]
	      begin using an initialized colour	inline

       \*[BCK n]
	      move backwards in	a line

       \*[BOLDER]
	      invoke pseudo bold inline	(related to macro .SETBOLDER)

       \*[BOLDERX]
	      off pseudo bold inline (related to macro .SETBOLDER)

       \*[BU n]
	      move characters pairs closer together inline (related  to	 macro
	      .KERN)

       \*[COND]
	      invoke pseudo condensing inline (related to macro	.CONDENSE)

       \*[CONDX]
	      off pseudo condensing inline (related to macro .CONDENSE)

       \*[CONDSUP]...\*[CONDSUPX]
	      pseudo-condensed superscript

       \*[DOWN n]
	      temporarily move downwards in a line

       \*[EN-MARK]
	      mark  initial line of a range of line numbers (for use with line
	      numbered endnotes)

       \*[EXT]
	      invoke pseudo extending inline (related to macro .EXTEND)

       \*[EXTX]
	      off pseudo condensing inline (related to macro .EXTEND)

       \*[EXTSUP]...\*[EXTSUPX]
	      pseudo extended superscript

       \*[FU n]
	      move characters pairs further apart  inline  (related  to	 macro
	      .KERN)

       \*[FWD n]
	      move forward in a	line

       \*[LEADER]
	      insert leaders at	the end	of a line

       \*[RULE]
	      draw a full measure rule

       \*[SIZE n]
	      change the point size inline (related to macro .PT_SIZE)

       \*[SLANT]
	      invoke pseudo italic inline (related to macro .SETSLANT)

       \*[SLANTX]
	      off pseudo italic	inline (related	to macro .SETSLANT)

       \*[ST<n>]...\*[ST<n>X]
	      string tabs (mark	tab positions inline)

       \*[SUP]...\*[SUPX]
	      superscript

       \*[TB+]
	      inline escape for	.TN (Tab Next)

       \*[UL]...\*[ULX]
	      invoke underlining inline	(fixed width fonts only)

       \*[UP n]
	      temporarily move upwards in a line

   Quick Reference of Macros in	alphabetical Order
       .AUTOLEAD
	      set the linespacing relative to the point	size

       .B_MARGIN
	      set a bottom margin

       .BR    break a justified	line

       .CENTER
	      set line-by-line quad centre

       .CONDENSE
	      set the amount to	pseudo condense

       .EL    break a line without advancing on	the page

       .EXTEND
	      set the amount to	pseudo extend

       .FALLBACK_FONT
	      establish	a fallback font	(for missing fonts)

       .FAM   alias to .FAMILY

       .FAMILY <family>
	      set the family type

       .FT    set the font style (roman, italic, etc.)

       .HI [ <measure> ]
	      hanging indent

       .HY    automatic	hyphenation on/off

       .HY_SET
	      set automatic hyphenation	parameters

       .IB [ <left measure> <right measure> ]
	      indent both

       .IBX [ CLEAR ]
	      exit indent both

       .IL [ <measure> ]
	      indent left

       .ILX [ CLEAR ]
	      exit indent left

       .IQ [ CLEAR ]
	      quit any/all indents

       .IR [ <measure> ]
	      indent right

       .IRX [ CLEAR ]
	      exit indent right

       .JUSTIFY
	      justify text to both margins

       .KERN  automatic	character pair kerning on/off

       .L_MARGIN
	      set a left margin	(page offset)

       .LEFT  set line-by-line quad left

       .LL    set a line length

       .LS    set a linespacing	(leading)

       .PAGE  set explicit page	dimensions and margins

       .PAGEWIDTH
	      set a custom page	width

       .PAGELENGTH
	      set a custom page	length

       .PAPER <paper_type>
	      set common paper sizes (letter, A4, etc)

       .PT_SIZE
	      set the point size

       .QUAD  "justify"	text left, centre, or right

       .R_MARGIN
	      set a right margin

       .RIGHT set line-by-line quad right

       .SETBOLDER
	      set the amount of	emboldening

       .SETSLANT
	      set the degree of	slant

       .SPREAD
	      force justify a line

       .SS    set the sentence space size

       .T_MARGIN
	      set a top	margin

       .TI [ <measure> ]
	      temporary	left indent

       .WS    set the minimum word space size

DOCUMENTATION OF DETAILS
   Details of Inline Escape Sequences in alphabetical Order
       \*[<colorname>]
	      begin using an initialized colour	inline

       \*[BCK n]
	      move wards in a line

       \*[BOLDER]
       \*[BOLDERX]
	      Emboldening on/off

	      \*[BOLDER]  begins emboldening type.  \*[BOLDERX]	turns the fea-
	      ture off.	 Both are inline escapes, therefore  they  should  not
	      appear  as separate lines, but rather be embedded	in text	lines,
	      like this:
		     Not \*[BOLDER]everything\*[BOLDERX] is as it seems.

	      Alternatively, if	you wanted  the	 whole	line  emboldened,  you
	      should do
		     \*[BOLDER]Not everything is as it seems.\*[BOLDERX]
	      Once  \*[BOLDER]	is  invoked, it	remains	in effect until	turned
	      off.

	      Note: If	you're	using  the  document  processing  macros  with
	      .PRINTSTYLE TYPEWRITE, mom ignores \*[BOLDER] requests.

       \*[BU n]
	      move  characters	pairs closer together inline (related to macro
	      .KERN)

       \*[COND]
       \*[CONDX]
	      Pseudo-condensing	on/off

	      \*[COND] begins pseudo-condensing	 type.	 \*[CONDX]  turns  the
	      feature off.  Both are inline escapes, therefore they should not
	      appear as	separate lines,	but rather be embedded in text	lines,
	      like this:
		     \*[COND]Not everything is as it seems.\*[CONDX]
	      \*[COND] remains in effect until you turn	it off with \*[CONDX].

	      IMPORTANT:  You must turn	\*[COND] off before making any changes
	      to the point size	of your	type, either via the .PT_SIZE macro or
	      with the \s inline escape.  If you wish the new point size to be
	      pseudo-condensed,	simply reinvoke	\*[COND] afterwards.  Equally,
	      \*[COND]	must  be  turned off before changing the condense per-
	      centage with .CONDENSE.

	      Note: If	you're	using  the  document  processing  macros  with
	      .PRINTSTYLE TYPEWRITE, mom ignores \*[COND] requests.

       \*[CONDSUP]...\*[CONDSUPX]
	      pseudo-condensed superscript

       \*[DOWN n]
	      temporarily move downwards in a line

       \*[EN-MARK]
	      mark  initial line of a range of line numbers (for use with line
	      numbered endnotes)

       \*[EXT]
       \*[EXTX]
	      Pseudo-extending on/off

	      \*[EXT] begins pseudo-extending type.  \*[EXTX] turns  the  fea-
	      ture  off.   Both	 are inline escapes, therefore they should not
	      appear as	separate lines,	but rather be embedded in text	lines,
	      like this:
		     \*[EXT]Not	everything is as it seems.\*[EXTX]
	      \*[EXT] remains in effect	until you turn it off with \*[EXTX].

	      IMPORTANT:  You  must turn \*[EXT] off before making any changes
	      to the point size	of your	type, either via the .PT_SIZE macro or
	      with the \s inline escape.  If you wish the new point size to be
	      pseudo-extended, simply reinvoke \*[EXT]	afterwards.   Equally,
	      \*[EXT] must be turned off before	changing the extend percentage
	      with .EXTEND.

	      Note: If you are	using  the  document  processing  macros  with
	      .PRINTSTYLE TYPEWRITE, mom ignores \*[EXT] requests.

       \*[EXTSUP]...\*[EXTSUPX]
	      pseudo extended superscript

       \*[FU n]
	      move  characters	pairs  further	apart inline (related to macro
	      .KERN)

       \*[FWD n]
	      move forward in a	line

       \*[LEADER]
	      insert leaders at	the end	of a line

       \*[RULE]
	      draw a full measure rule

       \*[SIZE n]
	      change the point size inline (related to macro .PT_SIZE)

       \*[SLANT]
       \*[SLANTX]
	      Pseudo italic on/off

	      \*[SLANT]	begins pseudo-italicizing type.	 \*[SLANTX] turns  the
	      feature off.  Both are inline escapes, therefore they should not
	      appear as	separate lines,	but rather be embedded in text	lines,
	      like this:
		     Not \*[SLANT]everything\*[SLANTX] is as it	seems.

	      Alternatively,  if  you wanted the whole line pseudo-italicized,
	      you'd do
		     \*[SLANT]Not everything is	as it seems.\*[SLANTX]

	      Once \*[SLANT] is	invoked, it remains  in	 effect	 until	turned
	      off.

	      Note:  If	 you're	 using	the  document  processing  macros with
	      .PRINTSTYLE TYPEWRITE, mom underlines pseudo-italics by default.
	      To    change    this    behaviour,   use	 the   special	 macro
	      .SLANT_MEANS_SLANT.

       \*[ST<number>]...\*[ST<number>X]
	      Mark positions of	string tabs

	      The quad direction must  be  LEFT	 or  JUSTIFY  (see  .QUAD  and
	      .JUSTIFY)	or the no-fill mode set	to LEFT	in order for these in-
	      lines to function	properly.  Please see IMPORTANT, below.

	      String tabs need to be marked off	with inline escapes before be-
	      ing  set	up  with  the  .ST  macro.  Any	input line may contain
	      string tab markers.  <number>, above, means the numeric  identi-
	      fier of the tab.

	      The following shows a sample input line with string tab markers.
		     \*[ST1]Now	is the time\*[ST1X] for	all \*[ST2]good	men\*ST2X] to come to the aid of the party.

	      String  tab 1 begins at the start	of the line and	ends after the
	      word time.  String tab 2 starts at good and ends after men.  In-
	      line  escapes  (e.g.  font  or point size	changes, or horizontal
	      movements, including padding) are	taken into  account  when  mom
	      determines the position and length of string tabs.

	      Up to nineteen string tabs may be	marked (not necessarily	all on
	      the same line, of	course), and they must be numbered  between  1
	      and 19.

	      Once  string  tabs have been marked in input lines, they have to
	      be set with .ST, after which they	may be called, by number, with
	      .TAB.

	      Note: Lines with string tabs marked off in them are normal input
	      lines, i.e. they get printed, just like any input	line.  If  you
	      want  to	set  up	string tabs without the	line printing, use the
	      .SILENT macro.

	      IMPORTANT: Owing to the way  groff  processes  input  lines  and
	      turns  them  into	 output	 lines,	 it is not possible for	mom to
	      guess the	correct	starting position of string tabs marked	off in
	      lines that are centered or set flush right.

	      Equally,	she  cannot  guess  the	starting position if a line is
	      fully justified and broken with .SPREAD.

	      In other words, in order to use string tabs, LEFT	 must  be  ac-
	      tive, or,	if .QUAD LEFT or JUSTIFY are active, the line on which
	      the string tabs are marked must be broken	manually with .BR (but
	      not .SPREAD).

	      To  circumvent  this behaviour, I	recommend using	the PAD	to set
	      up string	tabs in	centered or flush right	lines.	Say, for exam-
	      ple,  you	 want  to use a	string tab to underscore the text of a
	      centered line with a rule.  Rather than this,
		     .CENTER
		     \*[ST1]A line of text\*[ST1X]\c
		     .EL
		     .ST 1
		     .TAB 1
		     .PT_SIZE 24
		     .ALD 3p
		     \*[RULE]
		     .RLD 3p
		     .TQ
	      you should do:
		     .QUAD CENTER
		     .PAD "#\*[ST1]A line of text\*[ST1X]#"
		     .EL
		     .ST 1
		     .TAB 1
		     .PT_SIZE 24
		     .ALD 3p
		     \*[RULE] \" Note that you can't use \*[UP]	or \*[DOWN] with \*[RULE]
		     .RLD 3p
		     .TQ

       \*[SUP]...\*[SUPX]
	      superscript

       \*[TB+]
	      Inline escape for	.TN (Tab Next)

       \*[UL]...\*[ULX]
	      invoke underlining inline	(fixed width fonts only)

       \*[UP n]
	      temporarily move upwards in a line

   Details of Macros in	alphabetical Order
       .AUTOLEAD
	      set the linespacing relative to the point	size

       .B_MARGIN <bottom margin>
	      Bottom Margin

	      Requires a unit of measure

	      .B_MARGIN	sets a nominal position	at the bottom of the page  be-
	      yond which you don't want	your type to go.  When the bottom mar-
	      gin is reached, mom starts a new	page.	.B_MARGIN  requires  a
	      unit of measure.	Decimal	fractions are allowed.	To set a nomi-
	      nal bottom margin	of 3/4 inch, enter
		     .B_MARGIN .75i

	      Obviously, if you	haven't	spaced the type	on your	pages so  that
	      the  last	 lines fall perfectly at the bottom margin, the	margin
	      will vary	from page to page.  Usually, but not always, the  last
	      line of type that	fits on	a page before the bottom margin	causes
	      mom to start a new page.

	      Occasionally, owing to a peculiarity in  groff,  an  extra  line
	      will  fall below the nominal bottom margin.  If you're using the
	      document processing macros, this is unlikely to happen; the doc-
	      ument  processing	macros are very	hard-nosed about aligning bot-
	      tom margins.

	      Note: The	meaning	of .B_MARGIN is	slightly different when	you're
	      using the	document processing macros.

       .FALLBACK_FONT <fallback	font> [	ABORT |	WARN ]
	      Fallback Font

	      In  the event that you pass an invalid argument to .FAMILY (i.e.
	      a	non-existent family), mom, by default, uses the	fallback font,
	      Courier  Medium Roman (CR), in order to continue processing your
	      file.

	      If you'd prefer another fallback font, pass  .FALLBACK_FONT  the
	      full  family+font	 name of the font you'd	like.  For example, if
	      you'd rather the fallback	font were Times	Roman Medium Roman,
		     .FALLBACK_FONT TR
	      would do the trick.

	      Mom issues a warning whenever a font style set with .FT does not
	      exist,  either  because  you haven't registered the style	or be-
	      cause the	font style does	not exist in the  current  family  set
	      with  .FAMILY.  By default, mom then aborts, which allows	you to
	      correct the problem.

	      If you'd prefer that mom not abort on  non-existent  fonts,  but
	      rather  continue	processing using a fallback font, you can pass
	      .FALLBACK_FONT the argument WARN,	either by itself, or  in  con-
	      junction with your chosen	fallback font.

	      Some examples of invoking	.FALLBACK_FONT:

	      .FALLBACK_FONT WARN
		     mom  will	issue  a  warning whenever you try to access a
		     non-existent font but will	continue processing your  file
		     with the default fallback font, Courier Medium Roman.

	      .FALLBACK_FONT TR	WARN
		     mom  will	issue  a  warning whenever you try to access a
		     non-existent font but will	continue processing your  file
		     with  a  fallback font of Times Roman Medium Roman; addi-
		     tionally, TR will be the fallback font whenever  you  try
		     to	access a family	that does not exist.

	      .FALLBACK_FONT TR	ABORT
		     mom  will abort whenever you try to access	a non-existent
		     font, and will use	the fallback font TR whenever you  try
		     to	 access	 a  family  that does not exist.  If, for some
		     reason,  you  want	 to  revert  to	 ABORT,	  just	 enter
		     ".FALLBACK_FONT  ABORT"  and mom will once	again abort on
		     font errors.

       .FAM <family>
	      Type Family, alias of .FAMILY

       .FAMILY <family>
	      Type Family, alias .FAM

	      .FAMILY takes one	argument: the name of  the  family  you	 want.
	      Groff  comes with	a small	set of basic families, each identified
	      by a 1-, 2- or 3-letter mnemonic.	 The standard families are:
		     A	 = Avant Garde
		     BM	 = Bookman
		     H	 = Helvetica
		     HN	 = Helvetica Narrow
		     N	 = New Century Schoolbook
		     P	 = Palatino
		     T	 = Times Roman
		     ZCM = Zapf	Chancery

	      The argument you pass to .FAMILY	is  the	 identifier  at	 left,
	      above.  For example, if you want Helvetica, enter
		     .FAMILY H

	      Note: The	font macro (.FT) lets you specify both the type	family
	      and the desired font with	a single macro.	 While	this  saves  a
	      few  keystrokes,	I  recommend using .FAMILY for family, and .FT
	      for font,	except where doing so is genuinely inconvenient.  ZCM,
	      for example, only	exists in one style: Italic (I).

	      Therefore,
		     .FT ZCMI
	      makes  more  sense  than setting the family to ZCM, then setting
	      the font to I.

	      Additional note: If you are running a  version  of  groff	 lower
	      than 1.19.2, you must follow all .FAMILY requests	with a .FT re-
	      quest, otherwise mom will	set all	type up	to the	next  .FT  re-
	      quest in the fallback font.

	      If  you  are running a version of	groff greater than or equal to
	      1.19.2, when you invoke the .FAMILY  macro,  mom	remembers  the
	      font  style  (Roman,  Italic, etc) currently in use (if the font
	      style exists in the new family) and will	continue  to  use  the
	      same font	style in the new family.  For example:
		     .FAMILY BM	\" Bookman family
		     .FT I \" Medium Italic
		     <some text> \" Bookman Medium Italic
		     .FAMILY H \" Helvetica family
		     <more text> \" Helvetica Medium Italic

	      However, if the font style does not exist	in the new family, mom
	      will set all subsequent type in the fallback font	 (by  default,
	      Courier  Medium Roman) until she encounters a .FT	request	that's
	      valid for	the family.

	      For example, assuming you	don't have the font  Medium  Condensed
	      Roman (mom extension CD) in the Helvetica	family:
		     .FAMILY UN	\" Univers family
		     .FT CD \" Medium Condensed
		     <some text> \" Univers Medium Condensed
		     .FAMILY H \" Helvetica family
		     <more text> \" Courier Medium Roman!

	      In  the  above example, you must follow .FAMILY H	with a .FT re-
	      quest that's valid for Helvetica.

	      Please see the Appendices, Adding	fonts to groff,	 for  informa-
	      tion  on adding fonts and	families to groff, as well as to see a
	      list of the extensions mom provides to groff's basic R, I, B, BI
	      styles.

	      Suggestion: When adding families to groff, I recommend following
	      the established standard for the naming families and fonts.  For
	      example, if you add the Garamond family, name the	font files
		     GARAMONDR
		     GARAMONDI
		     GARAMONDB
		     GARAMONDBI
	      GARAMOND	then becomes a valid family name you can pass to .FAM-
	      ILY.  (You could,	of course, shorten GARAMOND to just G, or GD.)
	      R,  I,  B, and BI	after GARAMOND are the roman, italic, bold and
	      bold-italic fonts	respectively.

       .FONT R | B | BI	| <any other valid font	style>
	      Alias to .FT

       .FT R | B | BI |	<any other valid font style>
	      Set font

	      By default, groff	permits	.FT to take one	of four	possible argu-
	      ments specifying the desired font:
		     R = (Medium) Roman
		     I = (Medium) Italic
		     B = Bold (Roman)
		     BI	= Bold Italic

	      For example, if your family is Helvetica,	entering
		     .FT B
	      will  give  you  the  Helvetica  bold font.  If your family were
	      Palatino,	you'd get the Palatino bold font.

	      Mom considerably extends the range of arguments you can pass  to
	      .FT,  making  it more convenient to add and access fonts of dif-
	      fering weights and shapes	within the same	family.

	      Have a look here for a list of the  weight/style	arguments  mom
	      allows.	Be  aware,  though, that you must have the fonts, cor-
	      rectly installed and named, in order to use the arguments.  (See
	      Adding fonts to groff for	instructions and information.)	Please
	      also read	the ADDITIONAL NOTE found in the  description  of  the
	      .FAMILY macro.

	      How  mom	reacts	to an invalid argument to .FT depends on which
	      version of groff you're using.  If your groff version is greater
	      than or equal to 1.19.2, mom will	issue a	warning	and, depending
	      on how you've set	up the fallback	font, either continue process-
	      ing  using  the fallback font, or	abort (allowing	you to correct
	      the problem).  If	your groff version is less  than  1.19.2,  mom
	      will  silently  continue	processing,  using either the fallback
	      font or the font that was	in effect prior	 to  the  invalid  .FT
	      call.

	      .FT  will	 also  accept,	as an argument,	a full family and font
	      name.

	      For example,
		     .FT HB
	      will set subsequent type in Helvetica Bold.

	      However, I strongly recommend keeping family and	font  separate
	      except where doing so is genuinely inconvenient.

	      For inline control of fonts, see Inline Escapes, font control.

       .HI [ <measure> ]
	      Hanging  indent -- the optional argument requires	a unit of mea-
	      sure.

	      A	hanging	indent looks like this:
		       The thousand injuries of	Fortunato I had	borne as best I
			 could,	but when he ventured upon insult, I vowed
			 revenge.  You who so well know	the nature of my soul
			 will not suppose, however, that I gave	utterance to a
			 threat, at length I would be avenged...
	      The first	line of	text hangs outside the left margin.

	      In order to use hanging indents, you must	first have a left  in-
	      dent  active  (set  with	either .IL or .IB).  Mom will not hang
	      text outside the left margin set with .L_MARGIN or  outside  the
	      left margin of a tab.

	      The  first  time you invoke .HI, you must	give it	a measure.  If
	      you want the first line of a paragraph to	hang by, say, 1	 pica,
	      do
		     .IL 1P
		     .HI 1P
	      Subsequent  invocations  of  .HI	do not require you to supply a
	      measure; mom keeps track of the last measure you gave it.

	      Generally	speaking, you should invoke .HI	immediately  prior  to
	      the  line	 you  want  hung (i.e. without any intervening control
	      lines).  And because  hanging  indents  affect  only  one	 line,
	      there's no need to turn them off.

	      IMPORTANT:  Unlike  IL, IR and IB, measures given	to .HI are NOT
	      additive.	 Each time you pass a measure to .HI , the measure  is
	      treated  literally.   Recipe:  A numbered	list using hanging in-
	      dents

	      Note: mom	has macros for setting lists.  This recipe  exists  to
	      demonstrate the use of hanging indents only.
		     .PAGE 8.5i	11i 1i 1i 1i 1i
		     .FAMILY  T
		     .FT      R
		     .PT_SIZE 12
		     .LS      14
		     .JUSTIFY
		     .KERN
		     .SS 0
		     .IL \w'\0\0.'
		     .HI \w'\0\0.'
		     1.\0The most important point to be	considered is whether the
		     answer to the meaning of Life, the	Universe, and Everything
		     really is 42.  We have no-one's word on the subject except
		     Mr. Adams'.
		     .HI
		     2.\0If the	answer to the meaning of Life, the Universe,
		     and Everything is indeed 42, what impact does this	have on
		     the politics of representation?  42 is, after all not a
		     prime number.  Are	we to infer that prime numbers don't
		     deserve equal rights and equal access in the universe?
		     .HI
		     3.\0If 42 is deemed non-exclusionary, how do we present it
		     as	the answer and,	at the same time, forestall debate on its
		     exclusionary implications?

	      First, we	invoke a left indent with a measure equal to the width
	      of 2 figures spaces plus a period	(using the \w inline  escape).
	      At  this point, the left indent is active; text afterwards would
	      normally be indented.  However, we invoke	a  hanging  indent  of
	      exactly  the  same  width, which hangs the first line (and first
	      line only!) to the left of the indent by the same	 distance  (in
	      this case, that means "out to the	left margin").	Because	we be-
	      gin the first line with a	number,	a period, and a	figure	space,
	      the  actual text (The most important point...) starts at exactly
	      the same spot as the indented lines that follow.

	      Notice that subsequent invocations of .HI	don't require  a  mea-
	      sure to be given.

	      Paste the	example	above into a file and preview it with
		     pdfmom filename.mom | ps2pdf - filename.pdf
	      to see hanging indents in	action.

       .IB [ <left measure> <right measure> ]
	      Indent both -- the optional argument requires a unit of measure

	      .IB allows you to	set or invoke a	left and a right indent	at the
	      same time.

	      At its first invocation, you must	supply a measure for both  in-
	      dents;  at subsequent invocations	when you wish to supply	a mea-
	      sure, both must be given again.  As with .IL and .IR,  the  mea-
	      sures  are  added	 to the	values previously passed to the	macro.
	      Hence, if	you wish to change just	one of the  values,  you  must
	      give an argument of zero to the other.

	      A	 word  of advice: If you need to manipulate left and right in-
	      dents separately,	use a combination of .IL and  .IR  instead  of
	      .IB.  You'll save	yourself a lot of grief.

	      A	 minus sign may	be prepended to	the arguments to subtract from
	      their current values.  The \w inline escape may be used to spec-
	      ify text-dependent measures, in which case no unit of measure is
	      required.	 For example,
		     .IB \w'margarine' \w'jello'
	      left indents text	by the width of	the word margarine  and	 right
	      indents by the width of jello.

	      Like  .IL	 and .IR, .IB with no argument indents by its last ac-
	      tive values.  See	the brief explanation of how mom  handles  in-
	      dents for	more details.

	      Note:  Calling  a	 tab (with .TAB	<n>) automatically cancels any
	      active indents.

	      Additional note: Invoking	.IB automatically turns	 off  .IL  and
	      .IR.

       .IL [ <measure> ]
	      Indent left -- the optional argument requires a unit of measure

	      .IL  indents text	from the left margin of	the page, or if	you're
	      in a tab,	from the left edge of the tab.	Once  IL  is  on,  the
	      left  indent  is	applied	 uniformly to every subsequent line of
	      text, even if you	change the line	length.

	      The first	time you invoke	.IL, you must give it a	measure.  Sub-
	      sequent  invocations with	a measure add to the previous measure.
	      A	minus sign may be prepended to the argument to	subtract  from
	      the  current measure.  The \w inline escape may be used to spec-
	      ify a text-dependent measure, in which case no unit  of  measure
	      is required.  For	example,
		     .IL \w'margarine'
	      indents text by the width	of the word margarine.

	      With no argument,	.IL indents by its last	active value.  See the
	      brief explanation	of how mom handles indents for more details.

	      Note: Calling a tab (with	.TAB <n>)  automatically  cancels  any
	      active indents.

	      Additional note: Invoking	.IL automatically turns	off IB.

       .IQ [ <measure> ]
	      IQ -- quit any/all indents

	      IMPORTANT	 NOTE: The original macro for quitting all indents was
	      .IX.  This usage has been	deprecated in favour of	IQ.  .IX  will
	      continue	to  behave  as before, but mom will issue a warning to
	      stderr indicating	that you should	update your documents.

	      As a consequence of this change, .ILX, .IRX  and	.IBX  may  now
	      also  be invoked as .ILQ,	.IRQ and .IBQ.	Both forms are accept-
	      able.

	      Without an argument, the macros to quit indents  merely  restore
	      your  original  margins and line length.	The measures stored in
	      the indent macros	themselves are saved  so  you  can  call  them
	      again without having to supply a measure.

	      If  you  pass these macros the optional argument CLEAR, they not
	      only restore your	original left margin and line length, but also
	      clear any	values associated with a particular indent style.  The
	      next time	you need an indent of the same style, you have to sup-
	      ply a measure again.

	      .IQ CLEAR, as you'd suspect, quits and clears the	values for all
	      indent styles at once.

       .IR [ <measure> ]
	      Indent right -- the optional argument requires a unit of measure

	      .IR indents text from the	right margin of	the page, or if	you're
	      in a tab,	from the end of	the tab.

	      The first	time you invoke	.IR, you must give it a	measure.  Sub-
	      sequent invocations with a measure add to	 the  previous	indent
	      measure.	 A minus sign may be prepended to the argument to sub-
	      tract from the current indent measure.  The \w inline escape may
	      be  used	to  specify a text-dependent measure, in which case no
	      unit of measure is required.  For	example,
		     .IR \w'jello'
	      indents text by the width	of the word jello.

	      With no argument,	.IR indents by its last	active value.  See the
	      brief explanation	of how mom handles indents for more details.

	      Note:  Calling  a	 tab (with .TAB	<n>) automatically cancels any
	      active indents.

	      Additional note: Invoking	.IR automatically turns	off IB.

       .L_MARGIN <left margin>
	      Left Margin

	      L_MARGIN establishes the distance	from  the  left	 edge  of  the
	      printer  sheet  at which you want	your type to start.  It	may be
	      used any time, and remains in  effect  until  you	 enter	a  new
	      value.

	      Left  indents and	tabs are calculated from the value you pass to
	      .L_MARGIN, hence it's always a good idea	to  invoke  it	before
	      starting	any  serious  typesetting.   A	unit of	measure	is re-
	      quired.  Decimal fractions are allowed.  Therefore, to  set  the
	      left margin at 3 picas (1/2 inch), you'd enter either
		     .L_MARGIN 3P
	      or
		     .L_MARGIN .5i

	      If you use the macros .PAGE, .PAGEWIDTH or .PAPER	without	invok-
	      ing .L_MARGIN (either before or afterwards),  mom	 automatically
	      sets .L_MARGIN to	1 inch.

	      Note:  .L_MARGIN	behaves	in a special way when you're using the
	      document processing macros.

       .MCO   Begin multi-column setting.

	      .MCO (Multi-Column On) is	the macro you use to begin  multi-col-
	      umn  setting.   It marks the current baseline as the top of your
	      columns, for use later with .MCR.	 See the introduction to  col-
	      umns for an explanation of multi-columns and some	sample input.

	      Note:  Do	 not confuse .MCO with the .COLUMNS macro in the docu-
	      ment processing macros.

       .MCR   Once you've turned multi-columns on (with	.MCO),	.MCR,  at  any
	      time, returns you	to the top of your columns.

       .MCX [ <distance	to advance below longest column> ]
	      Optional argument	requires a unit	of measure.

	      .MCX  takes you out of any tab you were in (by silently invoking
	      .TQ) and advances	to the bottom of the longest column.

	      Without an argument, .MCX	advances 1 linespace below the longest
	      column.

	      Linespace, in this instance, is the leading in effect at the mo-
	      ment .MCX	is invoked.

	      If you pass the <distance> argument to .MCX, it advances 1 line-
	      space  below  the	 longest  column (see above) PLUS the distance
	      specified	by the argument.  The argument requires	a unit of mea-
	      sure;  therefore,	 to advance an extra 6 points below where .MCX
	      would normally place you,	you'd enter
		     .MCX 6p

	      Note: If you wish	to advance a precise distance below the	 base-
	      line  of	the  longest  column,  use  .MCX with an argument of 0
	      (zero; no	unit of	measure	required) in conjunction with the .ALD
	      macro, like this:
		     .MCX 0
		     .ALD 24p
	      The  above advances to precisely 24 points below the baseline of
	      the longest column.

       .NEWPAGE

	      Whenever you want	to start a new page, use .NEWPAGE,  by	itself
	      with  no	argument.   Mom	 will finish up	processing the current
	      page and move you	to the top of a	new one	(subject  to  the  top
	      margin set with .T_MARGIN).

       .PAGE <width> [ <length>	[ <lm> [ <rm> [	<tm> [ <bm> ] ]	] ] ]

	      All arguments require a unit of measure

	      IMPORTANT: If you're using the document processing macros, .PAGE
	      must come	after .START.  Otherwise, it should go at the top of a
	      document,	 prior	to  any	text.  And remember, when you're using
	      the document processing macros, top  margin  and	bottom	margin
	      mean  something  slightly	 different than	when you're using just
	      the typesetting macros (see Top and bottom margins  in  document
	      processing).

	      .PAGE  lets you establish	paper dimensions and page margins with
	      a	single macro.  The only	required argument is page width.   The
	      rest  are	 optional, but they must appear	in order and you can't
	      skip over	any.  <lm>, <rm>, <tm> and <bm>	 refer	to  the	 left,
	      right, top and bottom margins respectively.

	      Assuming	your  page  dimensions are 11 inches by	17 inches, and
	      that's all you want to set, enter
		     .PAGE 11i 17i
	      If you want to set the left margin as well, say, at 1 inch, PAGE
	      would look like this:
		     .PAGE 11i 17i 1i

	      Now  suppose  you	also want to set the top margin, say, at 1-1/2
	      inches.  <tm> comes after	<rm> in	the  optional  arguments,  but
	      you can't	skip over any arguments, therefore to set the top mar-
	      gin, you must also give a	right margin.  The .PAGE  macro	 would
	      look like	this:
		     .PAGE 11i 17i 1i 1i 1.5i
				      |	  |
		     required right---+	  +---top margin
			     margin

	      Clearly,	.PAGE  is  best	used when you want a convenient	way to
	      tell mom just the	dimensions of your printer  sheet  (width  and
	      length),	or when	you want to tell her everything	about the page
	      (dimensions and all the margins),	for example
		     .PAGE 8.5i	11i 45p	45p 45p	45p
	      This sets	up an 81/2 by 11 inch page with	margins	of  45	points
	      (5/8-inch) all around.

	      Additionally,  if	 you  invoke .PAGE with	a top margin argument,
	      any macros you invoke after .PAGE	will almost certainly move the
	      baseline	of  the	 first line of text down by one	linespace.  To
	      compensate, do
		     .RLD 1v
	      immediately before entering any text, or,	if it's	feasible, make
	      .PAGE the	last macro you invoke prior to entering	text.

	      Please  read the Important note on page dimensions and papersize
	      for information on ensuring groff	respects your .PAGE dimensions
	      and margins.

       .PAGELENGTH <length of printer sheet>
	      tells  mom  how  long your printer sheet is.  It works just like
	      .PAGEWIDTH.

	      Therefore, to tell mom your printer sheet	is 11 inches long, you
	      enter
		     .PAGELENGTH 11i
	      Please  read the important note on page dimensions and papersize
	      for information on ensuring groff	respects your PAGELENGTH.

       .PAGEWIDTH <width of printer sheet>

	      The argument to .PAGEWIDTH is the	width of your printer sheet.

	      .PAGEWIDTH requires a unit of measure.   Decimal	fractions  are
	      allowed.	 Hence,	 to  tell  mom	that the width of your printer
	      sheet is 81/2 inches, you	enter
		     .PAGEWIDTH	8.5i

	      Please read the Important	note on	page dimensions	and  papersize
	      for information on ensuring groff	respects your PAGEWIDTH.

       .PAPER <paper type>
	      provides	a  convenient  way to set the page dimensions for some
	      common printer sheet sizes.  The argument	<paper	type>  can  be
	      one  of:	LETTER,	 LEGAL,	 STATEMENT,  TABLOID,  LEDGER,	FOLIO,
	      QUARTO, EXECUTIVE, 10x14,	A3, A4,	A5, B4,	B5.

       .PRINTSTYLE

       .PT_SIZE	<size of type in points>
	      Point size of type, does not require a unit of measure.

	      .PT_SIZE (Point Size) takes one argument:	the size  of  type  in
	      points.	Unlike	most  other  macros that establish the size or
	      measure of something, .PT_SIZE does not require that you	supply
	      a	 unit  of  measure since it's a	near universal convention that
	      type size	is measured in points.	Therefore, to change the  type
	      size to, say, 11 points, enter
		     .PT_SIZE 11
	      Point sizes may be fractional (e.g. 10.25	or 12.5).

	      You  can	prepend	 a  plus  or  a	 minus sign to the argument to
	      .PT_SIZE,	in which case the point	size will be changed by	+ or -
	      the  original value.  For	example, if the	point size is 12 , and
	      you want 14 , you	can do
		     .PT_SIZE +2
	      then later reset it to 12	with
		     .PT_SIZE -2
	      The size of type can also	be changed inline.

	      Note: It is unfortunate that the pic  preprocessor  has  already
	      taken the	name, PS, and thus mom's macro for setting point sizes
	      can't use	it.  However, if you aren't using pic, you might  want
	      to alias .PT_SIZE	as .PS,	since there'd be no conflict.  For ex-
	      ample
		     .ALIAS PS PT_SIZE
	      would allow you to set point sizes with .PS.

       .R_MARGIN <right	margin>
	      Right Margin

	      Requires a unit of measure.

	      IMPORTANT:  .R_MARGIN,  if  used,	 must	come   after   .PAPER,
	      .PAGEWIDTH,  .L_MARGIN,  and/or  .PAGE  (if a right margin isn't
	      given to PAGE).  The reason is that  .R_MARGIN  calculates  line
	      length from the overall page dimensions and the left margin.

	      Obviously,  it can't make	the calculation	if it doesn't know the
	      page width and the left margin.

	      .R_MARGIN	establishes the	amount of space	you want  between  the
	      end  of  typeset	lines  and  the	right hand edge	of the printer
	      sheet.  In other words, it sets the line length.	.R_MARGIN  re-
	      quires a unit of measure.	 Decimal fractions are allowed.

	      The  line	 length	 macro (LL) can	be used	in place of .R_MARGIN.
	      In either	case, the last one invoked sets	the line length.   The
	      choice of	which to use is	up to you.  In some instances, you may
	      find it easier to	think of a section of type as having  a	 right
	      margin.  In others, giving a line	length may make	more sense.

	      For  example,  if	 you're	setting	a page of type you know	should
	      have 6-pica margins left and right, it makes sense  to  enter  a
	      left and right margin, like this:
		     .L_MARGIN 6P
		     .R_MARGIN 6P

	      That  way,  you  don't  have to worry about calculating the line
	      length.  On the other hand, if you know the line	length	for  a
	      patch of type should be 17 picas and 3 points, entering the line
	      length with LL is	much easier than calculating the right margin,
	      e.g.
		     .LL 17P+3p

	      If  you use the macros .PAGE, .PAGEWIDTH or PAPER	without	invok-
	      ing .R_MARGIN afterwards,	mom automatically sets .R_MARGIN to  1
	      inch.   If  you set a line length	after these macros (with .LL),
	      the line length calculated by .R_MARGIN is, of course,  overrid-
	      den.

	      Note:  .R_MARGIN	behaves	in a special way when you're using the
	      document processing macros.

       .ST <tab	number>	L | R |	C | J [	QUAD ]

	      After string tabs	have been marked off on	 an  input  line  (see
	      \*[ST]...\*[STX]),  you need to set them by giving them a	direc-
	      tion and,	optionally, the	QUAD argument.

	      In this respect, .ST is like .TAB_SET except that	you don't have
	      to  give	.ST  an	 indent	or a line length (that's already taken
	      care of, inline, by \*[ST]...\*[STX]).

	      If you want string tab 1 to be left, enter
		     .ST 1 L
	      If you want it to	be left	and filled, enter
		     .ST 1 L QUAD
	      If you want it to	be justified, enter
		     .ST 1 J

       .TAB <tab number>
	      After tabs have been defined (either with	.TAB_SET or .ST), .TAB
	      moves to whatever	tab number you pass it as an argument.

	      For example,
		     .TAB 3
	      moves you	to tab 3.

	      Note:  .TAB  breaks  the	line preceding it and advances 1 line-
	      space.  Hence,
		     .TAB 1
		     A line of text in tab 1.
		     .TAB 2
		     A line of text in tab 2.
	      produces,	on output
		     A line of text in tab 1.
						  A line of text in tab	2.

	      If you want the tabs to line up, use .TN	(Tab  Next)  or,  more
	      conveniently, the	inline escape \*[TB+]:
		     .TAB 1
		     A line of text in tab 1.\*[TB+]
		     A line of text in tab 2.
	      which produces
		     A line of text in tab 1.	A line of text in tab 2.

	      If the text in your tabs runs to several lines, and you want the
	      first lines of each tab to align,	you must use the  multi-column
	      macros.

	      Additional  note:	 Any  indents in effect	prior to calling a tab
	      are automatically	turned off by TAB.  If you were	 happily  zip-
	      ping  down the page with a left indent of	2 picas	turned on, and
	      you call a tab whose indent from the left	 margin	 is  6	picas,
	      your  new	distance from the left margin will be 6	picas, not I 6
	      picas plus the 2 pica indent.

	      Tabs are not by nature columnar, which is	to  say	 that  if  the
	      text  inside  a  tab  runs to several lines, calling another tab
	      does not automatically move to the baseline of the first line in
	      the previous tab.	 To demonstrate:
		     TAB 1
		     Carrots
		     Potatoes
		     Broccoli
		     .TAB 2
		     $1.99/5 lbs
		     $0.25/lb
		     $0.99/bunch
	      produces,	on output
		     Carrots
		     Potatoes
		     Broccoli
				 $1.99/5 lbs
				 $0.25/lb
				 $0.99/bunch

       .TB <tab	number>
	      Alias to .TAB

       .TI [ <measure> ]
	      Temporary	 left  indent -- the optional argument requires	a unit
	      of measure

	      A	temporary indent is one	that applies only to the first line of
	      text  that comes after it.  Its chief use	is indenting the first
	      line of paragraphs.  (Mom's .PP macro, for example, uses a  tem-
	      porary indent.)

	      The  first  time you invoke .TI, you must	give it	a measure.  If
	      you want to indent the first line	of a paragraph by, say,	2 ems,
	      do
		     .TI 2m

	      Subsequent  invocations  of  .TI	do not require you to supply a
	      measure; mom keeps track of the last measure you gave it.

	      Because temporary	indents	are temporary, there's no need to turn
	      them off.

	      IMPORTANT: Unlike	.IL, .IR and IB, measures given	to .TI are NOT
	      additive.	 In the	following example, the second ".TI 2P" is  ex-
	      actly 2 picas.
		     .TI 1P
		     The beginning of a	paragraph...
		     .TI 2P
		     The beginning of another paragraph...

       .TN    Tab Next

	      Inline escape \*[TB+]

	      TN  moves	 over  to  the	next tab in numeric sequence (tab n+1)
	      without advancing	on the page.  See the NOTE in the  description
	      of the .TAB macro	for an example of how TN works.

	      In  tabs that aren't given the QUAD argument when	they're	set up
	      with .TAB_SET or ST, you must terminate the line	preceding  .TN
	      with  the	 \c inline escape.  Conversely,	if you did give	a QUAD
	      argument to .TAB_SET or ST, the \c must not be used.

	      If you find remembering whether to put in	the \c bothersome, you
	      may prefer to use	the inline escape alternative to .TN, \*[TB+],
	      which works consistently regardless of the fill mode.

	      Note: You	must put text in the input line	immediately after .TN.
	      Stacking of .TN's	is not allowed.	 In other words, you cannot do
		     .TAB 1
		     Some text\c
		     .TN
		     Some more text\c
		     .TN
		     .TN
		     Yet more text
	      The above	example, assuming tabs numbered	from 1 to 4, should be
	      entered
		     .TAB 1
		     Some text\c
		     .TN
		     Some more text\c
		     .TN
		     \&\c
		     .TN
		     Yet more text
	      \& is a zero-width, non-printing character that groff recognizes
	      as  valid	input, hence meets the requirement for input text fol-
	      lowing .TN.

       .TQ    TQ takes you out of whatever tab you were	in, advances  1	 line-
	      space, and restores the left margin, line	length,	quad direction
	      and fill mode that were in effect	prior to invoking any tabs.

       .T_MARGIN <top margin>
	      Top margin

	      Requires a unit of measure

	      .T_MARGIN	establishes the	distance from the top of  the  printer
	      sheet  at	which you want your type to start.  It requires	a unit
	      of measure, and decimal fractions	are allowed.   To  set	a  top
	      margin of	21/2 centimetres, you'd	enter
		     .T_MARGIN 2.5c
	      .T_MARGIN	 calculates the	vertical position of the first line of
	      type on a	page by	treating the top edge of the printer sheet  as
	      a	baseline.  Therefore,
		     .T_MARGIN 1.5i
	      puts  the	baseline of the	first line of type 11/2	inches beneath
	      the top of the page.

	      Note: .T_MARGIN means something slightly different  when	you're
	      using  the  document processing macros.  See Top and bottom mar-
	      gins in document processing for an explanation.

	      IMPORTANT: .T_MARGIN does	two things:  it	 establishes  the  top
	      margin  for  pages that come after it and	it moves to that posi-
	      tion on the current page.	 Therefore, .T_MARGIN should  only  be
	      used at the top of a file	(prior to entering text) or after NEW-
	      PAGE, like this:
		     .NEWPAGE
		     .T_MARGIN 6P
		     <text>

AUTHORS
       mom was written by Peter	Schaffter <peter@schaffter.ca>.	  PDF  support
       was  provided  by Deri James <deri@chuzzlewit.demon.co.uk>.  The	alpha-
       betical documentation of	macros and escape sequences in this  man  page
       were written by the mom team.

SEE ALSO
       groff(1), groff_mom(7),

       /usr/local/share/doc/groff-1.22.4/html/mom/toc.html
	      -	entry point to the HTML	documentation

       <http://www.schaffter.ca/mom/momdoc/toc.html>
	      -	HTML documentation online

       <http://www.schaffter.ca/mom/>
	      -	the mom	macros homepage

groff 1.22.4		       10 December 2018			  GROFF_MOM(7)

Command Section

man2web Home...