/contrib/groff/contrib/mom/momdoc/typesetting.html
HTML | 4189 lines | 3745 code | 386 blank | 58 comment | 0 complexity | 31b388b97e5373c5259dc6a73c87a7ba MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, LGPL-2.0, LGPL-2.1, BSD-2-Clause, 0BSD, JSON, AGPL-1.0, GPL-2.0
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
- <title>Mom -- Typesetting Macros</title>
- </head>
- <body bgcolor="#dfdfdf">
- <!====================================================================>
- <a href="goodies.html#TOP">Next</a>
- <a href="definitions.html#TOP">Prev</a>
- <a href="toc.html">Back to Table of Contents</a>
- <p>
- <a name="TOP"></a>
- <a name="MACROS_TYPESETTING">
- <h1 align="center"><u>THE TYPESETTING MACROS</u></h1>
- </a>
- <a href="#INTRO_MACROS_TYPESETTING">Introduction to the typesetting macros</a>
- <br>
- <ul>
- <li><strong>PAGE SETUP</strong>
- <ul>
- <li><a href="#INTRO_SETUP">Introduction to Page Setup</a>
- <li><a href="#INDEX_SETUP">List of macros</a>
- </ul>
- <li><strong>BASIC TYPESETTING PARAMETERS</strong>
- <ul>
- <li><a href="#INTRO_BASIC_PARAMS">Introduction to Basic Parameters</a>
- <li><a href="#INDEX_BASIC">List of macros</a>
- </ul>
- <li><strong>JUSTIFYING, QUADDING, FILLING, BREAKING and JOINING LINES</strong>
- <ul>
- <li><a href="#INTRO_JUST_QUAD_FILL">Introduction to justify, quad, fill, break</a>
- <li><a href="#INDEX_JUST">List of macros</a>
- </ul>
- <li><strong>TYPOGRAPHIC REFINEMENTS</strong>
- <ul>
- <li><a href="#INTRO_REFINEMENTS">Introduction to typographic refinements</a>
- <li><a href="#INDEX_REFINEMENTS">List of macros</a>
- </ul>
- <li><strong>TYPE MODIFICATIONS -- pseudo italic, bold, condense, extend</strong>
- <ul>
- <li><a href="#INTRO_MODIFICATIONS">Introduction to type modifications</a>
- <li><a href="#INDEX_MODIFICATIONS">List of macros</a>
- </ul>
- <li><strong>VERTICAL MOVEMENTS</strong>
- <ul>
- <li><a href="#INTRO_ALDRLD">Introduction to vertical movements</a>
- <li><a href="#INDEX_ALDRLD">List of macros</a>
- </ul>
- <li><strong>TABS</strong>
- <ul>
- <li><a href="#INTRO_TABS">Introduction to tabs</a>
- <li><a href="#TYPESETTING_TABS">Typesetting tabs</a>
- <ul>
- <li><a href="#TYPESETTING_TABS_TUT">Quickie tutorial</a>
- </ul>
- <li><a href="#STRING_TABS">String tabs</a>
- <ul>
- <li><a href="#STRING_TABS_TUT">Quickie tutorial</a>
- </ul>
- <li><a href="#INDEX_TABS">List of macros</a>
- </ul>
- <li><strong>MULTI-COLUMNS</strong>
- <ul>
- <li><a href="#INTRO_MULTI_COLUMNS">Introduction to multi-columns</a>
- <li><a href="#INDEX_MULTI_COLUMNS">List of macros</a>
- </ul>
- <li><strong>INDENTS</strong>
- <ul>
- <li><a href="#INTRO_INDENTS">Introduction to indents</a>
- <li><a href="#INDEX_INDENTS">List of macros</a>
- </ul>
- <li><strong>GOODIES</strong>
- <ul>
- <li><a href="goodies.html#GOODIES">Introduction to goodies</a>
- <li><a href="goodies.html#INDEX_GOODIES">List of macros</a>
- </ul>
- <li><strong>INLINE ESCAPES</strong>
- <ul>
- <li><a href="inlines.html#INLINE_ESCAPES_INTRO">Introduction to inline escapes</a>
- <li><a href="inlines.html#INDEX_INLINES">List of inline escapes</a>
- </ul>
- </ul>
- <p>
- <hr>
- <h2><a name="INTRO_MACROS_TYPESETTING"><u>Introduction to the typesetting macros</u></a></h2>
- <strong>Mom</strong>'s typesetting macros provide access to
- groff's typesetting capabilities. Aside from controlling basic
- type parameters (family, font, line length, point size, leading),
- <strong>mom</strong>'s macros fine-tune wordspacing, letterspacing,
- kerning, hyphenation, and so on. In addition, <strong>mom</strong>
- has true typesetting tabs, string tabs, multiple indent styles,
- line padding, and a batch of other goodies.
- <p>
- In some cases, <strong>mom</strong>'s typesetting macros merely imitate
- groff primitives. In others, they approach typesetting concerns in
- conceptually new ways (for groff, at least). This should present no
- problem for newcomers to groff who are learning <strong>mom</strong>.
- Old groff hands should be careful. Just because it looks like a
- duck and walks like a duck does not, in this instance, mean that it
- is a duck. When using <strong>mom</strong>, stay away from groff
- primitives if <strong>mom</strong> provides a macro that accomplishes
- the same thing.
- <p>
- <strong>Mom</strong>'s typesetting macros can be used as a standalone
- package, independent of the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- With them, you can typeset on-the-fly. Book covers, your best
- friend's résumé, a poster for a lost dog--none of these requires
- structured document processing (page headers, paragraphs, heads,
- footnotes, etc). What they do demand is precise control over every
- element on the page. The typesetting macros give you that control.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_SETUP"></a>
- <a name="PAGE_MARGINS">
- <h2><u>Page setup: paper size and page margins</u></h2>
- </a>
- The page setup macros establish the physical dimensions of your
- page and the margins you want it to have. <strong>Groff</strong>
- has defaults for these, but I recommend setting them at the top
- of your files anyway unless you're using <strong>mom</strong>'s
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
- and are content with her defaults.
- <p>
- The
- <a href="#PAPER">PAPER</a>
- macro provides a shortcut for setting the page to the correct dimensions
- for a number of well-known, established paper sizes. The
- <a href="#PAGE">PAGE</a>
- macro provides a convenient way of setting the page dimensions and
- some or all of the page margins with a single macro.
- <p>
- <a name="INDEX_SETUP">
- <h3><u>Page setup macros list</u></h3>
- </a>
- <ul>
- <li><a href="#PAGEWIDTH">PAGEWIDTH</a> (page width)
- <li><a href="#PAGELENGTH">PAGELENGTH</a> (page length)
- <li><a href="#PAPER">PAPER</a> (common paper sizes)
- <li><a href="#L_MARGIN">L_MARGIN</a> (left margin)
- <li><a href="#R_MARGIN">R_MARGIN</a> (right margin)
- <li><a href="#T_MARGIN">T_MARGIN</a> (top margin)
- <li><a href="#B_MARGIN">B_MARGIN</a> (bottom margin)
- <li><a href="#PAGE">PAGE</a> (page dimensions and margins all in one fell swoop)
- <li><a href="#NEWPAGE">NEWPAGE</a> (start a new page)
- </ul>
- <p>
- <!---PAGEWIDTH--->
- <hr width="66%" align="left">
- <a name="PAGEWIDTH"><h3><u>Page width</u></h3></a>
- <br>
- <nobr>Macro: <strong>PAGEWIDTH</strong> <width of printer sheet></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- The argument to <strong>PAGEWIDTH</strong> is the width of your
- printer sheet. <strong>PAGEWIDTH</strong> requires a unit of measure.
- Decimal fractions are allowed. Hence, to tell <strong>mom</strong>
- the width of your printer sheet is 8-1/2 inches, you enter
- <p>
- <pre>
- .PAGEWIDTH 8.5i
- </pre>
- <!---PAGELENGTH--->
- <hr width="66%" align="left">
- <a name="PAGELENGTH"><h3><u>Page length</u></h3></a>
- <br>
- <nobr>Macro: <strong>PAGELENGTH</strong> <length of printer sheet></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>PAGELENGTH</strong> tells <strong>mom</strong> how long your
- printer sheet is. It works just like
- <strong>PAGEWIDTH</strong>. Therefore, to tell
- <strong>mom</strong> your printer sheet is 11 inches long, you
- enter
- <p>
- <pre>
- .PAGELENGTH 11i
- </pre>
- <!---PAPER--->
- <hr width="66%" align="left">
- <a name="PAPER"><h3><u>Paper</u></h3></a>
- <br>
- <nobr>Macro: <strong>PAPER</strong> <paper type></nobr>
- <p>
- <strong>PAPER</strong> provides a convenient way to set the page
- dimensions for some common printer sheet sizes. <nobr><paper
- type> can be one of:</nobr>
- <p>
- <pre>
- LETTER
- LEGAL
- STATEMENT
- TABLOID
- LEDGER
- FOLIO
- QUARTO
- 10x14
- EXECUTIVE
- A3
- A4
- A5
- B4
- B5
- </pre>
- Say, for example, you have A4-sized sheets in your printer.
- It's shorter (and easier) to enter
- <p>
- <pre>
- .PAPER A4
- </pre>
- than to remember the correct dimensions and enter
- <p>
- <pre>
- .PAGEWIDTH 595p
- .PAGELENGTH 842p
- </pre>
- <!---L_MARGIN--->
- <hr width="66%" align="left">
- <a name="L_MARGIN"><h3><u>Left margin</u></h3></a>
- <br>
- <nobr>Macro: <strong>L_MARGIN</strong> <left margin></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>L_MARGIN</strong> 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.
- <p>
- <a href="#IL">Left indents</a>
- and
- <a href="#TABS">tabs</a>
- are calculated from the value you pass to <strong>L_MARGIN</strong>,
- hence it's always a good idea to invoke it before starting any serious
- typesetting. A unit of measure is required. Decimal fractions are
- allowed. Therefore, to set the left margin at 3 picas (1/2 inch),
- you'd enter either
- <p>
- <pre>
- .L_MARGIN 3P
- or
- .L_MARGIN .5i
- </pre>
- If you use the macros
- <a href="#PAGE">PAGE</a>,
- <a href="#PAGEWIDTH">PAGEWIDTH</a>
- or
- <a href="#PAPER">PAPER</a>
- without invoking <strong>L_MARGIN</strong> (either before
- or afterwards), <strong>mom</strong> automatically sets
- </strong>L_MARGIN</strong> to 1 inch.
- <p>
- <strong>NOTE:</strong> L_MARGIN behaves in a special way when you're
- using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- See
- <a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
- for an explanation.
- <p>
- <!---R_MARGIN--->
- <hr width="66%" align="left">
- <a name="R_MARGIN"><h3><u>Right margin</u></h3></a>
- <br>
- <nobr>Macro: <strong>R_MARGIN</strong> <right margin></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>R_MARGIN</strong> 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.
- <strong>R_MARGIN</strong> requires a unit of measure. Decimal
- fractions are allowed.
- <p>
- The <a href="#LINELENGTH">line length macro</a> (<strong>LL</strong>) can
- be used in place of <strong>R_MARGIN</strong>. 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.
- <p>
- 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:
- <p>
- <pre>
- .L_MARGIN 6P
- .R_MARGIN 6P
- </pre>
- 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 <strong>LL</strong> is much easier than calculating the
- right margin.
- <p>
- <pre>
- .LL 17P+3p
- </pre>
- If you use the macros
- <a href="#PAGE">PAGE</a>,
- <a href="#PAGEWIDTH">PAGEWIDTH</a>
- or
- <a href="#PAPER">PAPER</a>
- without invoking <strong>R_MARGIN</strong> afterwards,
- <strong>mom</strong> automatically sets <strong>R_MARGIN</strong>
- to 1 inch. If you set a line length after these macros (with
- <a href="#LINELENGTH">LL</a>),
- the line length calculated by <strong>R_MARGIN</strong> is, of course,
- overridden.
- <p>
- <strong>IMPORTANT: R_MARGIN</strong>, if used, MUST come after
- <a href="#PAPER">PAPER</a>,
- <a href="#PAGEWIDTH">PAGEWIDTH</a>,
- <a href="#L_MARGIN">L_MARGIN</a>
- and/or
- <a href="#PAGE">PAGE</a>
- (if a right margin isn't given to <strong>PAGE</strong>).
- The reason is that <strong>R_MARGIN</strong> 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.
- <p>
- <strong>NOTE: R_MARGIN</strong> behaves in a special way
- when you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- See
- <a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
- for an explanation.
- <p>
- <!---T_MARGIN--->
- <hr width="66%" align="left">
- <a name="T_MARGIN"><h3><u>Top margin</u></h3></a>
- <br>
- <nobr>Macro: <strong>T_MARGIN</strong> <top margin></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>T_MARGIN</strong> 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 2-1/2 centimetres, you'd enter
- <p>
- <pre>
- .T_MARGIN 2.5c
- </pre>
- <strong>T_MARGIN</strong> calculates the vertical position of the
- first line of type on a page by treating the top edge of the printer
- sheet as a <a href="definitions.html#TERMS_BASELINE">baseline</a>. Therefore,
- <p>
- <pre>
- .T_MARGIN 1.5i
- </pre>
- puts the baseline of the first line of type 1-1/2 inches beneath
- the top of the page.
- <p>
- <strong>IMPORTANT:</strong> <strong>T_MARGIN</strong> does two
- things: it establishes the top margin for pages that come after
- it AND it moves to that position on the current page. Therefore,
- <strong>T_MARGIN</strong> should only be used at the top of a file
- (prior to entering text) or after
- <a href="#NEWPAGE">NEWPAGE</a>,
- like this:
- <p>
- <pre>
- .NEWPAGE
- .T_MARGIN 6P
- <text>
- </pre>
- <strong>NOTE:</strong> <strong>T_MARGIN</strong> means something
- slightly different when you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- See
- <a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>
- for an explanation.
- <p>
- <!---B_MARGIN--->
- <hr width="66%" align="left">
- <a name="B_MARGIN"><h3><u>Bottom margin</u></h3></a>
- <br>
- <nobr>Macro: <strong>B_MARGIN</strong> <bottom margin></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>B_MARGIN</strong> sets a nominal position at the bottom
- of the page beyond which you don't want your type to go. When the
- bottom margin is reached, <strong>mom</strong> starts a new page.
- <strong>B_MARGIN</strong> requires a unit of measure. Decimal
- fractions are allowed. To set a nominal bottom margin of 3/4 inch,
- enter
- <p>
- <pre>
- .B_MARGIN .75i
- </pre>
- 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 <em>before</em> the bottom margin causes
- <strong>mom</strong> to start a new page.
- <p>
- Occasionally, owing to a peculiarity in <strong>groff</strong>,
- an extra line will fall below the nominal bottom margin. If you're
- using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>,
- this is unlikely to happen; the document processing macros are very
- hard-nosed about aligning bottom margins.
- <p>
- <strong>NOTE:</strong> The meaning of <strong>B_MARGIN</strong> is
- slightly different when you're using the document processing macros.
- See
- <a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>
- for an explanation.
- <p>
- <!---PAGE--->
- <hr width="66%" align="left">
- <a name="PAGE"><h3><u>Page</u></h3></a>
- <br>
- Macro: <strong>PAGE</strong>
- <nobr><width> [ <length> [ <lm> [ <rm> [ <tm> [ <bm> ] ] ] ] ]</nobr>
- <br>
- <em>*All arguments require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>PAGE</strong> lets you establish paper dimensions and page
- margins with a single macro. The only required argument is page width.
- The rest are optional, <strong>but they must appear in order and you can't
- skip over any.</strong> <nobr><lm>, <rm>, <tm></nobr>
- and <nobr><bm> refer to the left, right, top and bottom</nobr>
- margins respectively.
- <p>
- Assuming your page dimensions are 11 inches by 17 inches, and that's
- all you want to set, enter
- <p>
- <pre>
- .PAGE 11i 17i
- </pre>
- If you want to set the left margin as well, say, at 1 inch,
- <strong>PAGE</strong> would look like this:
- <p>
- <pre>
- .PAGE 11i 17i 1i
- </pre>
- Now suppose you also want to set the top margin, say, at 1-1/2
- inches. <nobr><tm> comes after <nobr><rm></nobr></nobr>
- in the optional arguments, but you can't skip over any arguments,
- therefore to set the top margin, you must also give a right margin.
- The <strong>PAGE</strong> macro would look like this:
- <p>
- <pre>
- .PAGE 11i 17i 1i 1i 1.5i
- | |
- required right___| |___top margin
- margin
- </pre>
- Clearly, <strong>PAGE</strong> is best used when you want a convenient
- way to tell <strong>mom</strong> 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
- <p>
- <pre>
- .PAGE 8.5i 11i 45p 45p 45p 45p
- </pre>
- This sets up an 8-1/2 by 11 inch page with margins of 45 points
- (5/8-inch) all around.
- <p>
- <strong>NOTE:</strong> Only use <strong>PAGE</strong> at the
- start of a document, before entering any text. And remember,
- when you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>,
- top margin and bottom margin mean something slightly different than
- when you're using just the typesetting macros (see
- <a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>).
- <p>
- Additionally, if you invoke <strong>PAGE</strong> with a top margin
- argument, any macros you invoke after <strong>PAGE</strong> will
- almost certainly move the
- <a href="definitions.html#TERMS_BASELINE">baseline</a>
- of the first line of text down by one linespace. To compensate, do
- <p>
- <pre>
- .RLD 1v
- </pre>
- immediately before entering any text, or, if it's feasible, make
- <strong>PAGE</strong> the last macro you invoke prior to entering text.
- <p>
- <!---NEWPAGE--->
- <hr width="66%" align="left">
- <a name="NEWPAGE"><h3><u>Start a new page</u></h3></a>
- <br>
- Macro: <strong>NEWPAGE</strong>
- <p>
- Whenever you want to start a new page, use <strong>NEWPAGE</strong>, by
- itself with no argument. <strong>Mom</strong> will finish up
- processing the current page and move you to the top of a new one
- (subject to the top margin set with
- <a href="#T_MARGIN">T_MARGIN</a>.
- <p>
- <strong>Experts:</strong> Prior to version 1.1.9,
- <strong>NEWPAGE</strong> was simply an alias of
- <strong>.bp</strong>. As of 1.1.9, <strong>NEWPAGE</strong>,
- is its own <strong>mom</strong> macro. While the new macro
- should be backwardly compatible with documents created using
- pre-1.1.9 <strong>mom</strong>s, I suggest that from this version
- onward, if you were in the habit of using <strong>.bp</strong>
- whenever you wanted to break to a new page, you now begin to use
- <strong>NEWPAGE</strong> instead.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_BASIC_PARAMS"></a>
- <a name="BASIC_PARAMS">
- <h2><u>Basic Typesetting Parameters</u></h2>
- </a>
- Basic parameter macros deal with the fundamental requirements
- for setting type: family, font, point size, leading and line length.
- <p>
- If you're using the typesetting macros only, the arguments passed
- to the basic parameter macros remain in effect until you change them.
- The document processing macros handle things differently. See
- <a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
- for an explanation.
- <p>
- <a name="INDEX_BASIC"><h3><u>Basic parameter macros list</u></h3></a>
- <ul>
- <li><a href="#FAMILY">FAMILY</a> (type family)
- <li><a href="#FONT">FONT</a> (font)
- <li><a href="#FALLBACK_FONT">FALLBACK_FONT</a> (for invalid fonts)
- <li><a href="#PS">PT_SIZE</a> (point size of type)
- <li><a href="#LEADING">LS</a> (line spacing/leading)
- <li><a href="#AUTOLEAD">AUTOLEAD</a> (automatic line spacing)
- <li><a href="#LINELENGTH">LL</a> (line length)
- </ul>
- <!---FAMILY--->
- <hr width="66%" align="left">
- <a name="FAMILY"><h3><u>Type family</u></h3></a>
- <br>
- <nobr>Macro: <strong>FAMILY</strong> <family></nobr>
- <br>
- Alias: <strong>FAM</strong>
- <p>
- <strong>FAMILY</strong> takes one argument: the name of the
- <a href="definitions.html#TERMS_FAMILY">family</a>
- you want. Groff comes with a number of PostScript families, each
- identified by a 1-, 2- or 3-letter mnemonic. The standard families
- are:
- <table valign="baseline" summary="family">
- <tr><td width="15"><td><strong>A</strong><td>Avant Garde
- <tr><td><td><strong>BM</strong> <td>Bookman
- <tr><td><td><strong>H</strong><td>Helvetica
- <tr><td><td><strong>HN</strong><td>Helvetica Narrow
- <tr><td><td><strong>N</strong><td>New Century Schoolbook
- <tr><td><td><strong>P</strong><td>Palatino
- <tr><td><td><strong>T</strong><td>Times Roman</td></tr>
- <tr><td><td><strong>ZCM</strong><td>Zapf Chancery</td></tr>
- </table>
- <p>
- The argument you pass to <strong>FAMILY</strong> is the identifier at
- left, above. For example, if you want Helvetica, enter
- <p>
- <pre>
- .FAMILY H
- </pre>
- <strong>NOTE:</strong> The
- <a href="#FONT">font macro</a>
- (<strong>FT</strong>) lets you specify both the type family
- and the desired font with a single macro. While this saves a few
- keystrokes, I recommend using <strong>FAMILY</strong> for family,
- and <strong>FT</strong> for font, except where doing so is genuinely
- inconvenient. <strong>ZCM</strong>, for example, only exists in one
- style: Italic (<strong>I</strong>). Therefore, <kbd>.FT ZCMI</kbd>
- makes more sense than setting the family to "ZCM", then
- setting the font to "I".
- <p>
- <a name="FAM_ADD_NOTE"></a>
- <strong>ADDITIONAL NOTE:</strong> As of <strong>mom, version
- 1.1.9-a</strong>, if you are running a version of groff lower
- than 1.19.2, you <em>MUST</em> follow all <strong>FAMILY</strong>
- requests with a <strong>FT</strong> request, otherwise
- <strong>mom</strong> will set all type up to the next
- <strong>FT</strong> request in the
- <a href="#FALLBACK_FONT">fallback font</a>.
- <p>
- If you are running a version of groff greater than or equal
- to 1.19.2, when you invoke the <strong>FAMILY</strong> macro,
- <strong>mom</strong> "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:
- <p>
- <pre>
- .FAMILY BM \" Bookman family
- .FT I \" Medium Italic
- <some text> \" Bookman Medium Italic
- .FAMILY H \" Helvetica family
- <more text> \" Helvetica Medium Italic
- </pre>
- However, if the font style does not exist in the new family,
- <strong>mom</strong> will set all subsequent type in the
- <a href="#FALLBACK_FONT">fallback font</a>
- (by default, Courier Medium Roman) until she encounters a
- <a href="#FONT">.FT</a>
- request that's valid for the family. For example, assuming
- you don't have the font "Medium Condensed Roman"
- (<strong>mom</strong> extension "<strong>CD</strong>")
- in the Helvetica family:
- <p>
- <pre>
- .FAMILY UN \" Univers family
- .FT CD \" Medium Condensed
- <some text> \" Univers Medium Condensed
- .FAMILY H \" Helvetica family
- <more text> \" Courier Medium Roman!
- </pre>
- In the above example, you must follow <kbd>.FAMILY H</kbd> with a
- <strong>FT</strong> request that's valid for Helvetica.
- <p>
- <strong>Experts:</strong>
- <br>
- If you add other PostScript families to groff's /font/devps directory,
- I recommend following the groff standard for naming families and fonts.
- For example, if you add the Garamond family, name the font files
- <p>
- <pre>
- GARAMONDR
- GARAMONDI
- GARAMONDB
- GARAMONDBI
- </pre>
- GARAMOND then becomes a legal family name you can pass to
- <strong>FAMILY</strong>. (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.
- <p>
- Please see the Appendices,
- <a href="appendices.html#FONTS">Adding PostScript fonts to groff</a>,
- for information on adding fonts and families to groff, as well as
- to see a list of the extensions <strong>mom</strong> provides to
- groff's basic <strong>R, I, B, BI</strong> styles.
- <p>
- <!---FT--->
- <hr width="66%" align="left">
- <a name="FONT"><h3><u>Font</u></h3></a>
- <br>
- <nobr>Macro: <strong>FT</strong> R | I | B | BI | <any other valid font style></nobr>
- <p>
- By default, groff permits <strong>FT</strong> to take one of four
- possible arguments specifying the desired font:
- <table valign="baseline" summary="font">
- <tr><td width="15"><td><strong>R</strong><td> = <td>(Medium) Roman
- <tr><td><td><strong>I</strong><td> = <td>(Medium) Italic
- <tr><td><td><strong>B</strong><td> = <td>Bold (Roman)
- <tr><td><td><strong>BI</strong><td> = <td>Bold Italic</td></tr>
- </table>
- <p>
- For example, if your
- <a href="definitions.html#TERMS_FAMILY">family</a>
- is Helvetica, entering
- <p>
- <pre>
- .FT B
- </pre>
- will give you the Helvetica bold
- <a href="definitions.html#TERMS_FONT">font</a>.
- If your family were Palatino, you'd get the Palatino bold font.
- <p>
- (As of <strong>mom, version 1.1.9-a,</strong> the range of arguments
- that can be passed to <strong>FT</strong> has been considerably
- extended, allowing access to a greater variety of font
- <a href="definitions.html#TERMS_WEIGHT">weights</a>
- and
- <a href="definitions.html#TERMS_SHAPE">shapes</a>.
- Please see the
- <a href="#FONT_NOTE">NOTE</a>,
- below.)
- <p>
- How <strong>mom</strong> reacts to an invalid argument to
- <strong>FT</strong> depends on which version of groff you're using.
- If your groff version is greater than or equal to 1.19.2,
- <strong>mom</strong> will issue a warning and, depending on how
- you've set up the
- <a href="#FALLBACK_FONT">fallback font</a>,
- either continue processing using the fallback font, or abort
- (allowing you to correct the problem). If your groff version is less
- than 1.19.2, <strong>mom</strong> will silently continue processing,
- using either the fallback font or the font that was in effect prior
- to the invalid <strong>FT</strong> call.
- <p>
- <strong>FT</strong> will also accept, as an argument, a full
- family+font name. For example,
- <p>
- <pre>
- .FT HB
- </pre>
- will set subsequent type in Helvetica Bold. However, I strongly
- recommend keeping family and font separate except where doing so is
- genuinely inconvenient.
- <p>
- For inline control of fonts, see
- <a href="inlines.html#INLINE_FONTS_MOM">Inline Escapes, font control</a>.
- <p>
- <a name="FONT_NOTE"></a>
- <strong>NOTE: mom, versions 1.1.9-a</strong> and higher,
- considerably extends the range of arguments you can pass to
- <strong>FT</strong>, making it more convenient to add and access
- fonts of differing
- <a href="definitions.html#TERMS_WEIGHT">weights</a>
- and
- <a href="definitions.html#TERMS_SHAPE">shapes</a>
- within the same family. Have a look
- <a href="appendices.html#STYLE_EXTENSIONS">here</a>
- for a list of the weight/style arguments <strong>mom</strong>
- allows.
- <p>
- Be aware, though, that you must have the fonts, correctly
- installed and named, in order to use the arguments. (See
- <a href="appendices.html#HOWTO">How to create a PostScript font for use with groff</a>
- for how to add fonts to groff.) Please also read the
- <a href="#FAM_ADD_NOTE">ADDITIONAL NOTE</a>
- found in the description of the <strong>FAMILY</strong> macro.
- <p>
- <!---FALLBACK_FONT--->
- <hr width="66%" align="left">
- <a name="FALLBACK_FONT"><h3><u>Fallback font</u></h3></a>
- <br>
- <nobr>Macro: <strong>FALLBACK_FONT</strong> <fallback font> [ ABORT | WARN ] | ABORT | WARN</nobr>
- <p>
- In the event that you pass an invalid argument to
- <a href="#FONT">.FAMILY</a>
- (i.e. a non-existent family), <strong>mom</strong>, by default, uses
- the fallback font, Courier Medium Roman (CR), in order to continue
- processing your file.
- <p>
- If you'd prefer another fallback font, pass
- <strong>FALLBACK_FONT</strong> the <strong>full family+font name
- of the font you'd like</strong>. For example, if you'd rather the
- fallback font were Times Roman Medium Roman,
- <pre>
- .FALLBACK_FONT TR
- </pre>
- <p>
- would do the trick.
- <p>
- Additionally, if your version of groff accepts accepts "if
- F" and "if S" (see
- <a href="#FAM_ADD_NOTE">above</a>),
- <strong>mom</strong> issues a warning whenever a
- <strong>font style</strong> set with
- <a href="#FONT">.FT</a>
- does not exist, either because you haven't registered the style
- (see
- <a href="appendices.html#REGISTER_STYLE">here</a>
- for instructions on registering styles), or because the font style
- does not exist in the current family set with
- <a href="#FAMILY">.FAMILY</a>.
- By default, <strong>mom</strong> then aborts, which allows you to
- correct the problem.
- <p>
- If you'd prefer that <strong>mom</strong> not abort on non-existent
- fonts, but rather continue processing using a fallback font,
- you can pass <strong>FALLBACK_FONT</strong> the argument
- <strong>WARN</strong>, either by itself, or in conjunction with your
- chosen fallback font.
- <p>
- <strong>Some examples of invoking FALLBACK_FONT:</strong>
- <br>
- <ul>
- <li><kbd>.FALLBACK_FONT WARN</kbd>
- <br>
- <strong>mom</strong> 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.
- <li><kbd>.FALLBACK_FONT TR WARN</kbd>
- <br>
- <strong>mom</strong> 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;
- additionally, "TR" will be the fallback font whenever
- you try to access a <strong>family</strong> that does not exist.
- <li><kbd>.FALLBACK_FONT TR ABORT</kbd>
- <br>
- <strong>mom</strong> will abort whenever you try to access a
- non-existent font, and will use the fallback font
- "TR" whenever you try to access a <strong>family</strong>
- that does not exist.
- </ul>
- <p>
- If, for some reason, you want to revert to ABORT, just enter
- <kbd>.FALLBACK_FONT ABORT</kbd> and <strong>mom</strong> will once
- again abort on font errors.
- <p>
- <!---PT_SIZE--->
- <hr width="66%" align="left">
- <a name="PS"><h3><u>Point size of type</u></h3></a>
- <br>
- <nobr>Macro: <strong>PT_SIZE</strong> <size of type in points></nobr>
- <br>
- <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>PT_SIZE</strong> (Point Size) takes one argument: the size of type
- in points. Unlike most other macros that establish the size or measure
- of something, <strong>PT_SIZE</strong> 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
- <p>
- <pre>
- .PT_SIZE 11
- </pre>
- Point sizes may be fractional (e.g. 10.25 or 12.5).
- <p>
- You can prepend a plus or a minus sign to the argument to
- <strong>PT_SIZE</strong>, 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
- <p>
- <pre>
- .PT_SIZE +2
- </pre>
- then later reset it to 12 with
- <p>
- <pre>
- .PT_SIZE -2
- </pre>
- The size of type can also be changed inline. See
- <a href="inlines.html#INLINE_SIZE_MOM">Inline Escapes, changing point size</a>.
- <p>
- <strong>NOTE:</strong> It is unfortunate that the <kbd>pic</kbd>
- pre-processor uses <strong>PS</strong>, and thus
- <strong>mom</strong>'s macro for setting point sizes can't use it.
- However, if you aren't using <kbd>pic</kbd>, you might want to
- alias <strong>PT_SIZE</strong> as <strong>PS</strong>, since
- there'd be no conflict.
- <p>
- <pre>
- .ALIAS PS PT_SIZE
- </pre>
- would allow you to set point sizes with <kbd>.PS</kbd>.
- <p>
- <!---LS--->
- <hr width="66%" align="left">
- <a name="LEADING"><h3><u>Line spacing/leading</u></h3></a>
- <br>
- <nobr>Macro: <strong>LS</strong> <distance between lines></nobr>
- <br>
- <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>LS</strong> (Line Space) takes one argument: the distance you want, typically
- in points, from baseline to baseline of type. The argument may
- be fractional (e.g. 12.25 or 14.5). Like <strong>PT_SIZE</strong>,
- <strong>LS</strong> does not require a unit of measure, since
- <a href="definitions.html#TERMS_LEADING">leading</a>
- is most often given in points. Therefore, to set the linespace to
- 14 points, you would enter
- <p>
- <pre>
- .LS 14
- </pre>
- However, if you wish, you may specify a unit of measure by appending
- it directly to the argument passed to <strong>LS</strong>. For example,
- if you want a linespace of 1/4 of an inch, enter
- <p>
- <pre>
- .LS .25i
- </pre>
- You can prepend a plus or a minus sign to the argument to
- <strong>LS</strong>, in which case the line spacing will be changed
- by + or - the original value. For example, if the line spacing is
- 14 points, and you want 17 points, you can do
- <p>
- <pre>
- .LS +3
- </pre>
- then later reset it to 14 points with
- <p>
- <pre>
- .LS -3
- </pre>
- <strong>Experts:</strong>
- <br>
- <strong>LS</strong> should not be confused with the groff primitive
- <strong>ls</strong>. <strong>LS</strong> acts like <strong>vs</strong>.
- <strong>mom</strong> does not provide a macro analogous to
- <strong>ls</strong>.
- <p>
- <!---AUTOLEAD--->
- <hr width="66%" align="left">
- <a name="AUTOLEAD"><h3><u>Automatic line spacing</u></h3></a>
- <br>
- <nobr>Macro: <strong>AUTOLEAD</strong> <amount of automatic leading> [FACTOR]</nobr>
- <br>
- <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- Without the <strong>FACTOR</strong> argument, <strong>AUTOLEAD</strong>
- calculates the linespace for you by adding its argument to the
- current point size of type. All subsequent <strong>PT_SIZE</strong>
- requests automatically update the linespacing by the autolead amount.
- <p>
- Used in this way, <strong>AUTOLEAD</strong> does not require a unit
- of measure; points is assumed. However, you may use an alternate
- unit of measure by appending it to the argument. The argument may
- be a decimal fraction (e.g. .5 or 2.75).
- <p>
- As an example, if your current point size of type is 12, entering
- <p>
- <pre>
- .AUTOLEAD 2
- </pre>
- changes the linespace to 14 points, regardless any linespacing
- already in effect. From here on, every change to the size of type
- (with <strong>PT_SIZE</strong>, not
- <a href="definitions.html#TERMS_INLINES">inline</a>)
- changes the linespace as well. If you decrease the type size to 9
- points, the leading decreases to 11 points. If you increase the type
- size to 16 points, the leading increases to 18 points.
- <p>
- Automatic updating of the linespacing continues until you enter a
- "manual" line space value with <strong>LS</strong>.
- <p>
- If you give <strong>AUTOLEAD</strong> the optional
- <strong>FACTOR</strong> argument, <strong>AUTOLEAD</strong>
- calculates the line space as a factor of the
- <a href="definitions.html#TERMS_NUMERICARGUMENT">numeric argument</a>
- you gave <strong>AUTOLEAD</strong>. For example, if your point
- size is 12,
- <p>
- <pre>
- .AUTOLEAD 1.125 FACTOR
- </pre>
- sets the leading at 13.5 points. If you change the point size
- to 14, the leading automatically changes to 15.75 (14 x 1.125).
- <p>
- <strong>NOTE:</strong> There's no need to prepend a plus sign (+)
- to <strong>AUTOLEAD</strong>'s argument, although you may do so if you
- wish.
- <p>
- <!---LL--->
- <hr width="66%" align="left">
- <a name="LINELENGTH"><h3><u>Line length</u></h3></a>
- <br>
- <nobr>Macro: <strong>LL</strong> <line length></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>LL</strong> (Line Length) takes one argument: the distance from the
- left margin of the page to the maximum allowable point on the
- right at which groff should place type. The line length, in
- other words, as the macro suggests.
- <p>
- <strong>LL</strong> requires a unit of measure. Therefore, to set the line
- length to 39 picas, you would enter
- <p>
- <pre>
- .LL 39P
- </pre>
- As with other macros that require a unit of measure, the argument to
- <strong>LL</strong> may be fractional. For example,
- <p>
- <pre>
- .LL 4.5i
- </pre>
- sets the line length to 4-1/2 inches.
- <p>
- Additionally, you may express a new line length relative to the
- current line length by prepending a plus or minus sign to the
- argument. Thus, if you wanted to increase the line length by 3
- <a href="definitions.html#TERMS_PICASPOINTS">points</a>, you could
- do
- <p>
- <pre>
- .LL +3p
- </pre>
- This is especially handy when you want to "hang"
- punctuation outside the right margin since you can pass groff's
- <a href="inlines.html#INLINE_STRINGWIDTH_GROFF"><strong>\w</strong></a>
- escape as the argument to <strong>LL</strong>, like this:
- <p>
- <pre>
- .LL +\w'.'u
- </pre>
- The above example increases the current line length by the width of
- a period. Notice that you must append the
- <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>,
- <strong>u</strong>, to the escape since .LL requires a unit of
- measure.
- <p>
- <strong>NOTE:</strong> The <a href="#R_MARGIN">right margin
- macro</a> (<strong>R_MARGIN</strong>) can also be used to set line
- length.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_JUST_QUAD_FILL"></a>
- <a name="JUST_QUAD_FILL">
- <h2><u>Justifying, quadding, filling and breaking lines</u></h2>
- </a>
- The justification and quadding macros deal with how type aligns along
- the left and right margins. In a nutshell, type either aligns at the
- left margin, at the right margin, at both margins, or at neither margin
- (centred).
- <p>
- These macros also determine whether or not
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- are joined and
- <a href="definitions.html#TERMS_FILLED">filled</a>
- during output.
- <p>
- Additionally, macros that deal with how to break
- <a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>
- are covered in this section, as is the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- for joining input lines.
- <p>
- You may encounter some words here that are unfamiliar. Refer to
- <a href="definitions.html#TERMS_TYPESETTING">Typesetting terms</a>
- and
- <a href="definitions.html#TERMS_GROFF">Groff terms</a>
- for an explanation.
- <a name="INDEX_JUST"><h3><u>Justification, quad, fill, and break macro list</u></h3></a>
- <p>
- <ul>
- <li><strong>Fill modes</strong>
- <ul>
- <li><a href="#JUSTIFY">JUSTIFY</a> (set lines justified)
- <li><a href="#QUAD">QUAD</a> (set filled lines flush left, right or centred)
- </ul>
- <li><strong>Nofill modes</strong>
- <ul>
- <li><a href="#LRC">LEFT</a> (set non-filled lines flush left)
- <li><a href="#LRC">RIGHT</a> (set non-filled lines flush right)
- <li><a href="#LRC">CENTER</a> (set non-filled lines centred)
- </ul>
- <li><strong>Breaking lines</strong>
- <ul>
- <li><a href="#BR">BR</a> (manually break an output line)
- <li><a href="#EL">EL</a> (break a line without advancing to the next output line)
- <li><a href="#SPACE">SPACE</a> (break a line and add space before the next output line)
- <li><a href="#SPREAD">SPREAD</a> (break and force-justify an output line)
- </ul>
- <li><strong>Joining input lines in
- <a href="definitions.html#TERMS_NOFILL">nofill mode</a></strong>
- <ul>
- <li><a href="#JOIN">\c</a> inline escape
- </ul>
- </ul>
- <!---JUSTIFY--->
- <hr width="66%" align="left">
- <a name="JUSTIFY"><h3><u>Justify lines</u></h3></a>
- <br>
- Macro: <strong>JUSTIFY</strong>
- <br>
- <a href="definitions.html#TERMS_FILLED"><em>Fill mode</em></a>
- <p>
- <strong>JUSTIFY</strong> doesn't take an argument.
- <a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
- after <strong>JUSTIFY</strong> are
- <a href="definitions.html#TERMS_FILLED">filled</a> and
- <a href="definitions.html#TERMS_JUST">justified</a>
- upon output.
- <p>
- To break lines and prevent them from being filled and justified,
- use the
- <a href="#BR">BR</a> macro.
- <p>
- <!---QUAD--->
- <hr width="66%" align="left">
- <a name="QUAD"><h3><u>Quad lines left, right, or centre</u></h3></a>
- <br>
- <nobr>Macro: <strong>QUAD</strong> L | LEFT | R | RIGHT | C | CENTER | J | JUSTIFY</nobr>
- <br>
- Alias: <strong>FILL</strong>
- <br>
- <a href="definitions.html#TERMS_FILLED"><em>Fill mode</em></a>
- <p>
- <strong>QUAD</strong> takes one argument: the direction in which lines
- should be
- <a href="definitions.html#TERMS_QUAD">quadded</a>.
- <a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
- after <strong>QUAD</strong> are
- <a href="definitions.html#TERMS_FILLED">filled</a>
- upon output.
- <p>
- If <strong>L</strong> or <strong>LEFT</strong>, type is set flush
- along the left margin.
- <p>
- If <strong>R</strong> or <strong>RIGHT</strong>, type is
- set flush along the right margin.
- <p>
- If <strong>C</strong> or <strong>CENTER</strong> type is set centred
- on the current line length.
- <p>
- <strong>J</strong> and <strong>JUSTIFY</strong> justify text,
- and are included as a convenience only. Obviously, if text is
- justified, it isn't quadded. <strong>QUAD J</strong> and
- <strong>QUAD JUSTIFY</strong> have exactly the same effect as <a
- href="#JUSTIFY">JUSTIFY</a>.
- <p>
- To break lines and prevent them from being filled, use the
- <a href="#BR">BR</a> macro.
- <p>
- <!---LEFT, RIGHT, CENTER--->
- <hr width="66%" align="left">
- <a name="LRC"><h3><u>Set non-filled lines flush left, right, or centred</u></h3></a>
- <br>
- Macro: <strong>LEFT</strong>
- Macro: <strong>RIGHT</strong>
- Macro: <strong>CENTER</strong>
- (alias <strong>CENTRE</strong>)
- <br>
- <a href="definitions.html#TERMS_NOFILL"><em>Nofill mode</em></a>
- <p>
- <strong>LEFT</strong>, <strong>RIGHT</strong> and
- <strong>CENTER</strong> let you enter text on a line for line basis
- without having to use the
- <a href="#BR">BR</a> macro after each line.
- Consider the following:
- <p>
- <pre>
- .QUAD LEFT
- So runs my dream, but what am I?
- .BR
- An infant crying in the night
- .BR
- An infant crying for the light
- .BR
- And with no language but a cry.
- .BR
- </pre>
- Because text after <strong>QUAD</strong> is
- <a href="definitions.html#TERMS_FILLED">filled</a>, you have to use the
- <a href="#BR">BR</a>
- macro to prevent the lines from running together. Not only is this
- annoying to type, it's awkward to read in a text editor. Much better
- to do
- <p>
- <pre>
- .LEFT
- So runs my dream, but what am I?
- An infant crying in the night
- An infant crying for the light
- And with no language but a cry.
- </pre>
- <strong>IMPORTANT:</strong> Because <strong>LEFT</strong>,
- <strong>RIGHT</strong> and <strong>CENTER</strong> are nofill
- modes, groff does not always respect the current line length.
- <a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
- that run long may exceed it, or get broken in undesirable ways.
- Therefore, when using these three macros, you should preview your
- work to ensure that all lines fit as expected.
- <p>
- <!---BR--->
- <hr width="66%" align="left">
- <a name="BR"><h3><u>Manually break lines</u></h3></a>
- <br>
- Macro: <strong>BR</strong>
- <p>
- When using <strong>JUSTIFY</strong> or <strong>QUAD</strong>,
- <strong>BR</strong> tells <strong>mom</strong> about partial lines
- that you want broken (as opposed to
- <a href="definitions.html#TERMS_FILLED">filled</a>).
- Any partial
- <a href="definitions.html#TERMS_OUTPUTLINE">output line</a>
- that immediately precedes <strong>BR</strong> will be
- <a href="definitions.html#TERMS_QUAD">quadded</a>
- in the direction of the current quad, or set flush left if text is
- <a href="definitions.html#TERMS_JUST">justified</a>.
- <p>
- Most of the time, you won't need the <strong>BR</strong> macro.
- In fill modes, <strong>mom</strong> tries to be sensible about
- where breaks are needed. If the nature of a macro is such that under
- most circumstances you'd expect a break, <strong>mom</strong> puts
- it in herself. Equally, in macros where a break isn't normally
- desirable, no break occurs. This means text files don't get cluttered
- with annoying <strong>BR</strong>'s.
- <p>
- <strong>NOTE:</strong> Lines of text in
- <a href="definitions.html#TERMS_NOFILL">nofill mode</a>
- never require a <strong>BR</strong>. Furthermore, in nofill mode,
- ALL macros cause a break. If a break is not desired, use the
- <a href="#JOIN">\c</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>.
- <p>
- <strong>Experts: BR</strong> is an alias for <strong>br</strong>.
- You can use either, or mix 'n' match with impunity.
- <p>
- <!---EL--->
- <hr width="66%" align="left">
- <a name="EL"><h3><u>Manually break a line without advancing on the page</u></h3></a>
- <br>
- Macro: <strong>EL</strong>
- <br>
- <em>*In nofill modes (LEFT, RIGHT, CENTER), you must terminate the
- line input preceding EL with the </em><kbd>\c</kbd><em> inline
- escape. See
- <a href="#EL_NOTES">NOTES</a>,
- below.
- <br>
- *If you find remembering whether to put in the <kbd>\c</kbd>
- bothersome, you may prefer to use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- alternative to
- <kbd>.EL</kbd>,
- <a href="inlines.html#B">\*[B]</a>,
- which works consistently regardless of the fill mode.
- <br>
- *EL does not work after the PAD macro.
- See
- <a href="goodies.html#PAD">PAD</a>
- for the way around this</em>.
- <p>
- The mnemonic "EL" is borrowed from old Compugraphic typesetting
- systems, where it stood for "End Line." Conceptually,
- <strong>EL</strong> is equivalent to the notion of a carriage return
- with no linefeed.
- <p>
- <em>Note to groff jocks:</em> <strong>EL</strong> is
- unrelated to groff's <strong>.el</strong>. If you find the
- similarity confusing, you may want to alias <strong>EL</strong> as
- something else (but don't use <strong>EOL</strong>; it's already
- taken.)
- <p>
- <strong>EL</strong>'s function is simple: it breaks a line without
- advancing on the page.
- <a name="EL_EXAMPLE">As</a>
- an example of where you might use it,
- imagine that you're working from marked-up copy. The markup
- indicates 24 points of space between two given lines, but the
- prevailing line spacing is 12.5 points. You may find it more
- convenient to break the first line with <strong>EL</strong> and
- instruct <strong>mom</strong> to advance 24 points to the next line
- instead of calculating the lead that needs to be added to 12.5 to
- get 24. To demonstrate:
- <p>
- <pre>
- .LEFT
- .LS 12.5
- A line of text.\c
- .EL
- .ALD 24p
- The next line of text.
- </pre>
- may be more intuitive than
- <p>
- <pre>
- .LEFT
- .LS 12.5
- A line of text.
- .ALD 11.5p
- The next line of text.
- </pre>
- The first example has the further advantage that should you wish
- to change the prevailing line space but keep the 24 points lead,
- you don't have to recalculate the extra space.
- <p>
- "ALD" in the above examples stands for "<strong>A</strong>dvance
- <strong>L</strong>ea<strong>D</strong>" (another mnemonic borrowed
- from Compugraphic), which is covered in the section
- <a href="#ALDRLD">Vertical movement</a>.
- <p>
- <a name="EL_NOTES"><strong>NOTES:</strong></a>
- <p>
- In versions of mom prior to 1.1.9, <strong>EL</strong> did not
- always work as advertised on the last
- <a name="TERMS_OUTPUTLINE">output line</a>
- of pages that contained a footer trap (e.g. one set with
- <a href="#B_MARGIN">B_MARGIN</a>
- or in documents formatted using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>).
- <p>
- <strong>EL</strong> has been re-written so that this should no longer be the
- case. However, in order for it to work in the
- <a href="definitions.html#TERMS_NOFILL">nofill</a>
- modes
- (<a href="#LRC">LEFT</a>,
- <a href="#LRC">RIGHT</a>
- or
- <a href="#LRC">CENTER</a>),
- you must always "join" <strong>.EL</strong> to the line
- before it using the
- <a href="#JOIN">\c</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>,
- like this:
- <p>
- <pre>
- .LEFT
- A line I don't want to advance\c
- .EL
- </pre>
- Conversely, in
- <a href="definitions.html#TERMS_FILLED">fill modes</a>
- (<a href="#QUAD">QUAD LEFT</a>,
- <a href="#QUAD">QUAD RIGHT</a>,
- <a href="#QUAD">QUAD CENTER</a>
- or
- <a href="#JUSTIFY">JUSTIFY</a>),
- the <strong>\c</strong> must not be used.
- <p>
- If <strong>EL</strong> is used after most macros or groff
- <a href="definitions.html#TERMS_PRIMITIVES">primitives</a>
- (see the exception, below), you don't have to worry about this,
- regardless of the fill mode. Just type <kbd>.EL</kbd>
- <br>
- <!---SP--->
- <hr width="66%" align="left">
- <a name="SPACE"><h3><u>Break lines and add space between</u></h3></a>
- <br>
- <nobr>Macro: <strong>SPACE</strong> <space to add between lines></nobr>
- <br>
- Alias: <strong>SP</strong>
- <p>
- <strong>SPACE</strong> breaks a line, just like
- <strong>BR</strong>, then adds space after the line. With no
- argument, it adds an extra line space of a value equal to the
- current
- <a href="definitions.html#TERMS_LEADING">leading</a>.
- If you pass it a numeric argument without supplying a
- <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>,
- it advances that number of extra line spaces. For example:
- <p>
- <pre>
- .SPACE
- </pre>
- breaks the line then adds an extra linespace, whereas
- <p>
- <pre>
- .SPACE 2
- </pre>
- breaks the line and adds two extra linespaces.
- <p>
- If you supply a unit of measure, <strong>SPACE</strong> breaks the
- line then advances one linespace (at the current
- <a href="definitions.html#TERMS_LEADING">leading</a>)
- PLUS the specified amount of extra space given to
- <strong>SPACE</strong>,
- as in
- <p>
- <pre>
- .SPACE 6p
- </pre>
- which breaks the line and advances one full linespace plus six
- points.
- <p>
- <strong>SUGGESTION: SPACE</strong> and
- <a href="#ALD">ALD</a>
- can be used interchangeably (<code>.SPACE 6p</code> and
- <code>.ALD 6p</code> are equivalent). However,
- <strong>ALD</strong> without an argument does nothing, whereas
- <strong>SPACE</strong> without an argument adds an extra line
- space. I recommend using <strong>SPACE</strong> when you
- want an extra line space (or multiple thereof), and
- <strong>ALD</strong> whenever you want some other value of space
- after a line.
- <p>
- <strong>Experts: SPACE</strong> is an alias of <strong>sp</strong>.
- You can use either, or mix 'n' match with impunity.
- <p>
- <!---SPREAD--->
- <hr width="66%" align="left">
- <a name="SPREAD"><h3><u>Break and force justify (spread) lines</u></h3></a>
- <br>
- Macro: <strong>SPREAD</strong>
- <p>
- Sometimes, you need to break a line of
- <a href="definitions.html#TERMS_JUST">justified</a>
- text and have it come out fully justified, not
- <a href="definitions.html#TERMS_QUAD">quadded</a>
- left the way it would be with the <strong>BR</strong> macro.
- An example of where you'd do this would be when you want to prevent a
- word at the end of a line from being hyphenated (say, a proper name).
- <strong>SPREAD</strong> is the macro that lets you break the line
- and have it came out fully justified.
- <p>
- <strong>Experts: SPREAD</strong> is an alias for <strong>brp</strong>.
- You can use either, or mix 'n' match with impunity.
- <p>
- <!---JOIN--->
- <hr width="66%" align="left">
- <a name="JOIN"><h3><u>Join input lines</u></h3></a>
- <br>
- Inline: <strong>\c</strong>
- <p>
- Sometimes, especially when in one of the
- <a href="definitions.html#TERMS_NOFILL">nofill modes</a>,
- a macro will cause a break where you don't want one. In order
- to prevent this from happening (in other words, to join
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- together, forming one
- <a href="definitions.html#TERMS_OUTPUTLINE">output line</a>),
- use the groff
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <strong>\c</strong> at the end of each input line to
- be joined to another, like this:
- <p>
- <pre>
- .LEFT
- .FAMILY T
- .FT R
- Some lines of text to be \c
- .FAMILY H
- .FT B
- joined \c
- .FAMILY T
- .FT R
- together.
- </pre>
- Upon output, the lines will be joined together to read
- <p>
- <pre>
- Some lines of text to be joined together.
- </pre>
- with the word "joined" in Helvetica bold. Note the
- space before <strong>\c</strong>. Without it, the last three
- words of the output line would read
- <p>
- <pre>
- bejoinedtogether
- </pre>
- Please also note that had the example been in one of the
- <a href="definitions.html#TERMS_FILLED">fill modes</a>,
- there'd have been no need for the <strong>\c</strong>.
- <p>
- <strong>Addendum:</strong> The example, above, is designed to
- demonstrate the use of <strong>\c</strong>. However, an easier and
- more intuitive way to accomplish the family/font change in the
- example would be with the groff
- <a href="definitions.html#TERMS_INLINES">inline escape</a>,
- <a href="inlines.html#INLINE_FONTS_GROFF">\f</a>.
- <p>
- <pre>
- Some lines of text to be \f[HB]joined\*[PREV] together.
- </pre>
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_REFINEMENTS"></a>
- <a name="REFINEMENTS">
- <h2><u>Typographic refinements</u></h2>
- </a>
- The macros in this section help you tweak groff's behaviour,
- ensuring that your documents look typographically professional.
- <br>
- <a name="INDEX_REFINEMENTS">
- <h3><u>Typographic refinements macro list</u></h3>
- </a>
- <ul>
- <li><strong>Word and sentence spacing</strong>
- <ul>
- <li><a href="#WS">WS</a> (word spacing)
- <li><a href="#SS">SS</a> (sentence space)
- </ul>
- <li><strong>Letter spacing (track kerning)</strong>
- <ul>
- <li><a href="#RW">RW</a> (reduce whitespace)
- <li><a href="#EW">EW</a> (expand whitespace)
- <li><a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
- </ul>
- <li><strong>Hyphenation</strong>
- <ul>
- <li><a href="#HY">HY</a> (turn auto hyphenation on/off, or set specific hyphenation parameters)
- <li><a href="#HY_SET">HY_SET</a> (set all hyphenation parameters)
- </ul>
- <li><strong>Automatic kerning and ligatures</strong>
- <ul>
- <li><a href="#KERN">KERN</a> (turn automatic pairwise kerning on or off)
- <li><a href="#LIGATURES">LIGATURES</a> (turn automatic generation of ligatures on or off)
- </ul>
- </ul>
- <!---WS--->
- <hr width="66%" align="left">
- <a name="WS"><h3><u>Word spacing</u></h3></a>
- <br>
- <nobr>Macro: <strong>WS</strong> <+|-wordspace> | DEFAULT</nobr>
- <p>
- <strong>WS</strong> (Word Space) increases or decreases the amount
- of space between words. In
- <a href="definitions.html#TERMS_NOFILL">nofill modes</a>,
- or if
- <a href="#QUAD">QUAD</a>
- is in effect, the space between words is fixed. Therefore, if you
- change the word spacing with <strong>WS</strong>, the change applies
- uniformly to the space between every word on every line. However,
- when text is
- <a href="definitions.html#TERMS_JUST">justified</a>,
- the space between words varies from line to line (in order to justify
- the text). Consequently, the change you make with <strong>WS</strong>
- represents the minimum (and ideal) space groff will try to put between
- words before deciding whether to hyphenate a final word or to stretch
- the word spacing.
- <p>
- Word space is relative to type size. Knowing how it's calculated is
- unimportant. What matters is having a sense of how the value passed
- to <strong>WS</strong> affects the look of your type. Generally,
- in/decreasing the word space by a value of 1 or 2 produces a difference
- that in many cases is scarcely visible; in/decreasing by a value of 5
- or so produces a subtle but noticeable difference; and in/decreasing
- by a value greater than 10 is always apparent. You should preview
- your work to assess the effect of <strong>WS</strong>.
- <p>
- <a name="WS_USAGE"><strong>WS</strong></a>
- takes as its argument a whole number preceded by a plus or minus sign.
- Therefore, to decrease the word space slightly, you might enter
- <p>
- <pre>
- .WS -4
- </pre>
- To increase it by a noticeable amount, you might enter
- <p>
- <pre>
- .WS +12
- </pre>
- You can reset the word spacing to its previous value by switching
- the plus or minus sign, like this:
- <p>
- <pre>
- .WS +4
- A line of text
- .WS -4
- </pre>
- The <code>.WS -4</code> undoes the effect of <code>.WS
- +4</code>. You can also reset <strong>WS</strong> to
- its groff default by entering
- <p>
- <pre>
- .WS DEFAULT
- </pre>
- This can be particularly useful if you've been playing around
- with plus and minus values, and can't remember by how much you
- have to in/decrease the word space to get it back to normal.
- <p>
- <!---SS--->
- <hr width="66%" align="left">
- <a name="SS"><h3><u>Sentence space</u></h3></a>
- <br>
- <nobr>Macro: <strong>SS</strong> <+sentence space> | 0 | DEFAULT</nobr>
- <p>
- <strong>SS</strong> (Sentence Space) tells groff how to treat double
- spaces it encounters between sentences in
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>.
- If you use <strong>SS</strong>, input sentences with two spaces
- after them AND input sentences that fall at the end of input lines
- all receive a normal word space plus an additional amount of space
- whose size is determined by the + value passed as an argument to
- <strong>SS</strong>. Thus,
- <p>
- <pre>
- .SS +2
- </pre>
- means that input sentences with two spaces after them receive a normal
- word space PLUS the +2 value passed to <strong>SS</strong>.
- <p>
- Like
- <strong>WS</strong>, increasing the sentence space by a value of
- 1 or 2 produces a difference that in many cases is scarcely visible;
- increasing by a value of 5 or so produces a subtle but noticeable
- difference (i.e. the space between double-spaced input sentences will
- be slightly but visibly greater than the space between words); and
- increasing by a value greater than 10 is always apparent. You should
- preview your work to assess the effect of <strong>SS</strong>.
- <p>
- There's an additional argument you can pass <strong>SS</strong>:
- the number zero (without the + sign). It's the argument you'll
- use most often. Typeset copy should never have two spaces between
- sentences, and the "zero" argument tells groff to give the extra
- spaces no space at all (effectively removing them). Therefore,
- if you double-space your sentences (as you should when writing in a
- text editor), get in the habit of putting
- <p>
- <pre>
- .SS 0
- </pre>
- at the top of your files.
- <p>
- If you do use <strong>SS</strong> for something other than ensuring
- that you don't get unwanted sentence spaces in output copy, you
- can set or reset the sentence space to the groff default (the same
- width as a word space, i.e. double-spaced input sentences will appear
- double-spaced on output as well) with
- <p>
- <pre>
- .SS DEFAULT
- </pre>
- If you're using the
- <a href="docprocessing.html">document processing macros</a>
- and your
- <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE</a>
- is <strong>TYPEWRITE</strong>, <code>.SS DEFAULT</code> is the default,
- because you <em>do</em> want double spaces between sentences in copy
- that imitates the look of a typewritten document.
- <p>
- <strong>IMPORTANT: SS</strong> with an argument other than
- "0" should only be used if you're of the old (and wise)
- school of typists that puts two spaces between sentences. If you
- ignore this advice and use <strong>SS</strong> when you habitually
- put only one space between sentences, you risk producing output where
- the space between sentences is not equal.
- <p>
- <!---HY--->
- <hr width="66%" align="left">
- <a name="HY"><h3><u>Automatic hyphenation control</u></h3></a>
- <br>
- <nobr>Macro: <strong>HY</strong> toggle</nobr>
- <br>
- <nobr>Macro: <strong>HY</strong> LINES <max. number of consecutive hyphenated lines></nobr>
- <br>
- <nobr>Macro: <strong>HY</strong> MARGIN <size of hyphenation margin></nobr>
- <br>
- <nobr>Macro: <strong>HY</strong> SPACE <extra interword spacing to prevent hyphenation></nobr>
- <br>
- <nobr>Macro: <strong>HY</strong> DEFAULT</nobr>
- <br>
- Aliases: <strong>HYPHENATE, HYPHENATION</strong>
- <p>
- <strong>HY</strong>, as you can see, can be invoked with a number of
- arguments. In all cases, the aliases <strong>HYPHENATE</strong>
- or <strong>HYPHENATION</strong> can be used in place of
- <strong>HY</strong>. To aid in understanding the various arguments
- you can pass to <strong>HY</strong>, I've broken them down into
- separate sections.
- <h3><u>1. HY</u></h3>
- <strong>HY</strong> by itself (i.e. with no argument) simply turns
- automatic hyphenation on. Any argument other than <strong>LINES,
- MARGIN, SPACE</strong> or <strong>DEFAULT</strong>, turns automatic
- hyphenation off. For example, as explained in
- <a href="intro.html#MACRO_ARGS">How to read macro arguments</a>,
- you could turn <strong>HY</strong> off by entering
- <p>
- <pre>
- .HY OFF
- or
- .HY X
- or
- .HY END
- </pre>
- <strong>HY</strong> observes the following default hyphenation rules:
- <br>
- <ol>
- <li>Last lines (i.e. ones that will spring a trap--typically
- the last line on a page) will not be hyphenated.
- <li>The first and last two characters of a word are never
- split off.
- </ol>
- <h3><u>2. HY LINES</u></h3>
- <strong>HY LINES</strong> sets the maximum number of consecutive
- hyphenated lines that will appear in output copy. 2 is a very
- good choice, and you'd set it with
- <p>
- <pre>
- .HY LINES 2
- </pre>
- By default, when you turn automatic hyphenation on, there is no
- limit to the number of consecutive hyphenated lines.
- <p>
- <strong>NOTE:</strong>
- <a href="definitions.html#TERMS_DISCRETIONARYHYPHEN">Discretionary hyphens</a>
- count when groff is figuring out how many lines to hyphenate;
- explicit hyphens do not.
- <h3><u>3. HY MARGIN</u></h3>
- <strong>HY MARGIN</strong> sets the amount of room allowed at
- the end of a line before hyphenation is tripped (e.g. if there's
- only 6 points left at the end of a line, groff won't try to hyphenate
- the next word). <strong>HY MARGIN</strong> only applies if you're
- using
- <a href="#QUAD">QUAD</a>, and is really only useful if you're
- using <strong>QUAD LEFT</strong>.
- <p>
- As an example, if you don't want groff to hyphenate words when there's
- only 18 points of space left at the end of a left-quadded line,
- you'd enter
- <p>
- <pre>
- .HY MARGIN 18p
- </pre>
- <strong>NOTE:</strong> The numeric argument after <strong>HY
- MARGIN</strong> requires a
- <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
- <h3><u>4. HY SPACE</u></h3>
- <strong>HY SPACE</strong> sets an amount of extra interword
- space that groff will <em>try</em> to put between words on a
- line in order to PREVENT hyphenation. <strong>HY SPACE</strong>
- applies only to
- <a href="definitions.html#TERMS_JUST">justified lines</a>. Generally speaking,
- you'll want this value to be quite small, since too big a value
- will result in lines with gaping holes between the words. A reasonable
- value might be half a point, or one point, which you'd set with
- <p>
- <pre>
- .HY SPACE .5p
- or
- .HY SPACE 1p
- </pre>
- <strong>NOTE:</strong> The numeric argument after <strong>HY
- SPACE</strong> requires a
- <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
- <h3><u>5. HY DEFAULT</u></h3>
- <strong>HY DEFAULT</strong> resets automatic hyphenation to its
- default behaviour, cancelling any changes made with <strong>LINES,
- MARGIN,</strong> and/or <strong>SPACE</strong>.
- <h3><u>A note on hyphenation in general</u></h3>
- Hyphenation is a necessary evil. If it can be avoided, it should be.
- If it can't be, it should occur infrequently. That's the reason for
- the number of parameters you can set with <strong>HY</strong>.
- <p>
- Furthermore, hyphenation in
- <a href="definitions.html#TERMS_RAG">rag</a>
- copy requires a great deal of attention. At best, it should be
- avoided completely by individually adjusting the number of words
- on consecutive lines to achieve a pleasing, natural-looking rag.
- Since such adjustments are often too fussy for document
- processing, I recommend playing around with <strong>HY MARGIN</strong>
- a bit if your copy looks hyphen-heavy.
- <p>
- <!---HY_SET--->
- <hr width="66%" align="left">
- <a name="HY_SET"><h3><u>Set hyphenation parameters all at once</u></h3></a>
- <br>
- <nobr>Macro: <strong>HY_SET</strong> <lines> [ <margin> [ <space> ] ]</nobr>
- <br>
- Alias: <strong>HYSET</strong>
- <p>
- <strong>HY_SET</strong> lets you set the parameters for hyphenation
- with a single macro. <lines>, <margin> and <space>
- correspond to the numeric values required by
- <strong>LINES</strong>, <strong>MARGIN</strong> and
- <strong>SPACE</strong> as described
- <a href="#HY">above</a>.
- <p>
- To set just the maximum number of consecutive hyphenated lines,
- you'd enter
- <p>
- <pre>
- .HY_SET 2
- </pre>
- If you wanted the same number of maximum consecutive hyphenated lines
- and a hyphenation margin for use with
- <a href="definitions.html#TERMS_RAG">rag</a>
- copy,
- <p>
- <pre>
- .HY_SET 2 36p
- </pre>
- would set the hyphenation margin to 36 points.
- <p>
- If you wanted the same number of maximum consecutive hyphenated
- lines and a hyphenation space of 2 points for use with
- <a href="definitions.html#TERMS_JUST">justified</a>
- copy,
- <p>
- <pre>
- .HYSET 2 0 2p
- </pre>
- is how you'd do it.
- <p>
- <!---RW--->
- <hr width="66%" align="left">
- <a name="RW"><h3><u>Reduce whitespace</u></h3></a>
- <br>
- <nobr>Macro: <strong>RW</strong> <amount of whitespace reduction between letters></nobr>
- <br>
- <p>
- <strong>RW</strong> (Reduce Whitespace) and its corresponding macro,
- <strong>EW</strong> (Expand Whitespace), allow you to tighten
- (or loosen)
- <a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>
- by uniformly reducing or expanding the space between characters.
- This is particularly useful when you want to squeeze or stretch
- lines on a narrow measure.
- <p>
- The value passed to <strong>RW</strong> may be a whole number or a
- decimal fraction. Since a value of 1 produces a noticeable reduction
- in the space between letters at text sizes, you'll most likely use
- small decimal values when tightening lines. For example,
- <p>
- <pre>
- .RW .1
- or
- .RW .2
- </pre>
- may be just enough to squeeze an extra character or two on a
- line without the change in letter spacing being obvious. I
- highly recommend previewing your work to assess the effect of
- <strong>RW</strong>.
- <p>
- <p>
- <strong>IMPORTANT:</strong> In versions prior to 1.1.9-a,
- <strong>RW</strong> affected all
- <a href="definitions.html#TERMS_FONT">fonts</a>
- in the
- <a href="definitions.html#TERMS_FAMILY">family</a>
- current at the time it was invoked. As of 1.1.9-a, this behaviour
- has been changed. <strong>RW</strong> affects only the font
- current at the time it's invoked, and remains in effect for that
- font every time the font is called, hence must be reset to zero to
- cancel its effect (<code>.RW 0</code>) on that font.
- <p>
- <strong>NOTE:</strong> By default, <strong>RW</strong> does not deposit a
- <a href="#BR">break</a>
- (<strong>BR</strong>) when it's invoked if you're in one of the
- <a href="definitions.html#TERMS_FILL">fill</a>
- modes (i.e.
- <a href="#QUAD">QUAD</a>
- <strong>L, R, C, J</strong> or
- <a href="#JUSTIFY">JUSTIFY</a>).
- If you want
- <strong>RW</strong> to break at the ends of the previous
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- while you're in a fill mode, tell <strong>mom</strong>
- that's what you want by invoking the
- <a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
- toggle macro.
- <p>
- <!---EW--->
- <hr width="66%" align="left">
- <a name="EW"><h3><u>Expand whitespace</u></h3></a>
- <br>
- <nobr>Macro: <strong>EW</strong> <amount of whitespace expansion between letters></nobr>
- <br>
- <p>
- <strong>EW</strong> (Expand Whitespace) expands the amount of
- whitespace between letters, effectively "loosening" lines
- of type.
- <p>
- The value passed to <strong>EW</strong> may be a whole number or a
- decimal fraction. Since a value of 1 produces a noticeable
- expansion in the space between letters at text sizes, you'll most likely use
- small decimal values when loosening lines. For example,
- <p>
- <pre>
- .EW .1
- or
- .EW .2
- </pre>
- may be just enough to open up a line without the change in letter
- spacing being obvious. I highly recommend previewing your work to
- assess the effect of <strong>EW</strong>.
- <p>
- <strong>IMPORTANT:</strong> In versions prior to 1.1.9-a,
- <strong>EW</strong> affected all
- <a href="definitions.html#TERMS_FONT">fonts</a>
- in the
- <a href="definitions.html#TERMS_FAMILY">family</a>
- current at the time it was invoked. As of 1.1.9-a, this behaviour
- has been changed. <strong>EW</strong> affects only the font
- current at the time it's invoked, and remains in effect for that
- font every time the font is called, hence must be reset to zero to
- cancel its effect (<code>.EW 0</code>) on that font.
- <p>
- <strong>NOTE:</strong> By default, <strong>EW</strong> does not deposit a
- <a href="#BR">break</a>
- (<strong>BR</strong>) when it's invoked if you're in one of the
- <a href="definitions.html#TERMS_FILL">fill</a>
- modes (i.e.
- <a href="#QUAD">QUAD</a>
- <strong>L, R, C, J</strong> or
- <a href="#JUSTIFY">JUSTIFY</a>).
- If you want
- <strong>EW</strong> to break at the ends of the previous
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- while you're in a fill mode, tell <strong>mom</strong>
- that's what you want by invoking the
- <a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
- toggle macro.
- <p>
- <!---BR_AT_LINE_KERN--->
- <hr width="66%" align="left">
- <a name="BR_AT_LINE_KERN"><h3><u>Break before line kerning</u></h3></a>
- <br>
- <nobr>Macro: <strong>BR_AT_LINE_KERN</strong> toggle</nobr>
- <br>
- <p>
- By default, in
- <a href="definitions.html#TERMS_FILLED">fill</a>
- modes (i.e.
- <a href="#QUAD">QUAD</a>
- <strong>L, R, C, J</strong> or
- <a href="#JUSTIFY">JUSTIFY</a>)
- <strong>mom</strong> does not break
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- when you invoke <strong>RW</strong> or <strong>EW</strong>.
- If you'd like her to break input lines prior to <strong>RW</strong>
- or <strong>EW</strong>, invoke <strong>BR_AT_INPUT_LINE</strong>
- without any argument. To disable the breaks, invoke
- <strong>BR_AT_INPUT_LINE</strong> with any argument (<strong>OFF,
- QUIT, Q, X</strong>...), like this
- <p>
- <pre>
- .BR_AT_LINE_KERN OFF
- or
- .BR_AT_LINE_KERN X
- </pre>
- In <strong>QUAD L, R</strong> or <strong>C</strong>,
- <strong>mom</strong> simply breaks the line. In <strong>QUAD J</strong>
- (or <strong>JUSTIFY</strong>, which is the same thing), she breaks
- and
- <a href="definitions.html#TERMS_FORCE">force justifies</a>
- the line prior to <strong>EW</strong> or <strong>RW</strong>.
- <br>
- <!---KERN--->
- <hr width="66%" align="left">
- <a name="KERN"><h3><u>Automatic kerning</u></h3></a>
- <br>
- <nobr>Macro: <strong>KERN</strong> toggle</nobr>
- <br>
- <p>
- By itself (i.e. with no argument), <strong>KERN</strong> turns
- automatic pairwise
- <a href="definitions.html#TERMS_KERN">kerning</a>
- on. With any argument (e.g. OFF, Q, X), pairwise kerning is turned
- off.
- <p>
- Kerning of individual character pairs can be controlled with the
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>
- <strong>\*[BU <n>]</strong> and <strong>\*[FU <n>]</strong>. See
- <a href="inlines.html#INLINE_KERNING_MOM">Inline Escapes, kerning</a>.
- <p>
- <!---LIGATURES--->
- <hr width="66%" align="left">
- <a name="LIGATURES"><h3><u>Automatic ligature generation</u></h3></a>
- <br>
- <nobr>Macro: <strong>LIGATURES</strong> toggle</nobr>
- <br>
- Alias: <strong>LIG</strong>
- <p>
- Provided your current font has
- <a href="definitions.html#TERMS_LIGATURES">ligatures</a>,
- <strong>LIGATURES</strong>, by itself, turns on automatic
- generation of ligatures. When automatic ligature generation is
- on, simply typing the letters of a ligature combination will
- produce the correct ligature upon output. For example, if you
- type the word "finally", the fi combination will be
- output as an fi ligature. Generally speaking, ligatures are A
- Good Thing, hence <strong>mom</strong> has them on by default.
- <p>
- <strong>LIGATURES</strong> with any argument turns automatic
- ligature generation off.
- <p>
- <strong>NOTE:</strong> Not all fonts support ligatures.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_MODIFICATIONS"></a>
- <a name="MODIFICATIONS">
- <h2><u>Type modifications: pseudo-italic, -bold, -condensed, -extended</u></h2>
- </a>
- It sometimes happens that a PostScript
- <a href="definitions.html#TERMS_FAMILY">family</a>
- doesn't contain all the fonts you need. You might, for example,
- be missing an italic font, or a bold font. Or you might not be able
- to get your hands on a condensed family. That's where these macros
- and inline escapes come in. With them, you can fake the fonts
- you're missing. A word of caution, though: "faked"
- fonts are just that--faked. You should only use them as a
- last resort, and then only sparingly. A word or two or a line
- or two in a faked font will pass unnoticed; large patches of
- type in a faked font look typographically cheap.
- <br>
- <a name="INDEX_MODIFICATIONS">
- <h3><u>Type modifications macro list</u></h3>
- </a>
- <ul>
- <li><strong>Pseudo italic</strong>
- <ul>
- <li><a href="#SETSLANT">SETSLANT</a> -- degree of pseudo-italicizing
- <li><a href="#SLANT_INLINE">\*[SLANT]</a> -- inline escape for pseudo-italicizing type
- </ul>
- <li><strong>Pseudo bold</strong>
- <ul>
- <li><a href="#SETBOLDER">SETBOLDER</a> -- amount of emboldening
- <li><a href="#BOLDER_INLINE">\*[BOLDER]</a> -- inline escape for emboldening type
- </ul>
- <li><strong>Pseudo condensed</strong>
- <ul>
- <li><a href="#CONDENSE">CONDENSE</a> -- percentage for pseudo-condensed type
- <li><a href="#COND_INLINE">\*[COND]</a> -- inline escape for pseudo-condensed type
- </ul>
- <li><strong>Pseudo extended</strong>
- <ul>
- <li><a href="#EXTEND">EXTEND</a> -- percentage for pseudo-extended type
- <li><a href="#EXT_INLINE">\*[EXT]</a> -- inline escape for pseudo-extending
- </ul>
- </ul>
- <!---SETSLANT--->
- <hr width="66%" align="left">
- <a name="SETSLANT"><h3><u>Set degree of slant for pseudo-italicizing</u></h3></a>
- <br>
- <nobr>Macro: <strong>SETSLANT</strong> <degrees to slant type> | RESET</nobr>
- <p>
- Pseudo-italicizing of type is accomplished by slanting a roman font
- a certain number of degrees to the right. <strong>SETSLANT</strong>
- lets you fix the number of degrees. <strong>Mom</strong>'s
- default is 15, which produces an acceptable approximation of an
- italic font. If you want another value -- say, 13 degrees --
- you'd set it by entering
- <p>
- <pre>
- .SETSLANT 13
- </pre>
- If you change the degree of slant and later want to set it back
- to the <strong>mom</strong> default, do
- <p>
- <pre>
- .SETSLANT RESET
- </pre>
- <strong>NOTE:</strong> By itself, <strong>SETSLANT</strong>
- will not start pseudo-italicizing type; it merely tells
- <strong>mom</strong> what degree of slant you want. To start
- pseudo-italicizing, use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <strong>\*[SLANT]</strong>.
- <p>
- <!---\*[SLANT]--->
- <hr width="66%" align="left">
- <a name="SLANT_INLINE"><h3><u>Pseudo italic on/off</u></h3></a>
- <br>
- Inline: <strong>\*[SLANT] -- turn pseudo-italic on</strong>
- <br>
- Inline: <strong>\*[SLANTX] -- turn pseudo-italic off</strong>
- <p>
- <strong>\*[SLANT]</strong> begins pseudo-italicizing type.
- <strong>\*[SLANTX]</strong> turns the feature off. Both are
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>,
- therefore they should not appear as separate lines, but rather
- be embedded in text lines, like this:
- <p>
- <pre>
- Not \*[SLANT]everything\*[SLANTX] is as it seems.
- </pre>
- Alternatively, if you wanted the whole line pseudo-italicized,
- you'd do
- <p>
- <pre>
- \*[SLANT]Not everything is as it seems.\*[SLANTX]
- </pre>
- Once <strong>\*[SLANT]</strong> is invoked, it remains in effect
- until turned off.
- <p>
- <strong>NOTE:</strong> If you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
- with
- <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
- <strong>mom</strong> underlines pseudo-italics by default. To
- change this behaviour, use the special macro
- <a href="docprocessing.html#SLANT_MEANS_SLANT">SLANT_MEANS_SLANT</a>.
- <p>
- <!---SETBOLDER--->
- <hr width="66%" align="left">
- <a name="SETBOLDER"><h3><u>Set amount of emboldening</u></h3></a>
- <br>
- <nobr>Macro: <strong>SETBOLDER</strong> <amount of emboldening, in machine units> | RESET</nobr>
- <p>
- Emboldening of type is accomplished by printing characters
- twice; the second printing is slightly offset from the first,
- effectively "thickening" the character.
- <strong>SETBOLDER</strong> lets you set the number of
- <a href="definitions.html#TERMS_UNITS">machine units</a>
- for the offset. <strong>Mom</strong>'s default is 700 units, which
- produces an acceptable approximation of a bold font. If you want
- another value -- say, 500 units -- you'd set it by entering
- <p>
- <pre>
- .SETBOLDER 500
- </pre>
- If you change the emboldening offset and later want to set it back
- to the <strong>mom</strong> default, do
- <p>
- <pre>
- .SETBOLDER RESET
- </pre>
- <strong>NOTE:</strong> By itself, <strong>SETBOLDER</strong>
- will not start emboldening type; it merely tells
- <strong>mom</strong> what you want the emboldening offset to be.
- To start emboldening, use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <strong>\*[BOLDER]</strong>.
- <p>
- <!---\*[BOLDER]--->
- <hr width="66%" align="left">
- <a name="BOLDER_INLINE"><h3><u>Emboldening on/off</u></h3></a>
- <br>
- Inline: <strong>\*[BOLDER] -- turn emboldening on</strong>
- <br>
- Inline: <strong>\*[BOLDERX] -- turn emboldening off</strong>
- <p>
- <strong>\*[BOLDER]</strong> begins emboldening type.
- <strong>\*[BOLDERX]</strong> turns the feature off. Both are
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>,
- therefore they should not appear as separate lines, but rather
- be embedded in text lines, like this:
- <p>
- <pre>
- Not \*[BOLDER]everything\*[BOLDERX] is as it seems.
- </pre>
- Alternatively, if you wanted the whole line emboldened,
- you'd do
- <p>
- <pre>
- \*[BOLDER]Not everything is as it seems.\*[BOLDERX]
- </pre>
- Once <strong>\*[BOLDER]</strong> is invoked, it remains in effect
- until turned off.
- <p>
- <strong>NOTE:</strong> If you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
- with
- <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
- <strong>mom</strong> ignores <strong>\*[BOLDER]</strong>
- requests.
- <p>
- <!---CONDENSE--->
- <hr width="66%" align="left">
- <a name="CONDENSE"><h3><u>Set percentage for pseudo-condensed type</u></h3></a>
- <br>
- <nobr>Macro: <strong>CONDENSE</strong> <pseudo-condense percentage></nobr>
- <p>
- Pseudo-condensing of type is accomplished by reducing the width of
- characters at a given point size without reducing their height,
- effectively narrowing them so they look like condensed type.
- <strong>CONDENSE</strong> tells <strong>mom</strong> what
- percentage of the normal character width you want the characters
- to be condensed.
- <p>
- <strong>Mom</strong> has no default value for
- <strong>CONDENSE</strong>, therefore you must set it before using the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <a href="#COND_INLINE">\*[COND]</a>.
- 80 percent of the normal character width is a good value, and
- you'd set it like this:
- <p>
- <pre>
- .CONDENSE 80
- </pre>
- <strong>NOTE:</strong> By itself, <strong>CONDENSE</strong>
- will not start pseudo-condensing type; it merely tells
- <strong>mom</strong> what percentage of the normal character
- width you want characters to be condensed.
- To start pseudo-condensing, use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <strong>\*[COND]</strong>.
- <p>
- <strong>Additional note:</strong> Make sure that pseudo-condensing
- is off (with
- <a href="#COND_INLINE">\*[CONDX]</a>)
- before before making any changes to the pseudo-condense percentage
- with <strong>CONDENSE</strong>.
- <p>
- <!---\*[COND]--->
- <hr width="66%" align="left">
- <a name="COND_INLINE"><h3><u>Pseudo-condensing on/off</u></h3></a>
- <br>
- Inline: <strong>\*[COND] -- turn pseudo-condensing on</strong>
- <br>
- Inline: <strong>\*[CONDX] -- turn pseudo-condensing off</strong>
- <p>
- <strong>\*[COND]</strong> begins pseudo-condensing type.
- <strong>\*[CONDX]</strong> turns the feature off. Both are
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>,
- therefore they should not appear as separate lines, but rather
- be embedded in text lines, like this:
- <p>
- <pre>
- \*[COND]Not everything is as it seems.\*[CONDX]
- </pre>
- <strong>\*[COND]</strong> remains in effect until you turn it
- off with <strong>\*[CONDX]</strong>.
- <p>
- <strong>IMPORTANT:</strong> You MUST turn <strong>\*[COND]</strong>
- off before making any changes to the point size of your type, either
- via the
- <a href="#PS">PT_SIZE</a>
- macro or with the <strong>\s</strong> inline escape. If you wish
- the new point size to be pseudo-condensed, simply reinvoke
- <strong>\*[COND]</strong> afterwards. Equally,
- <strong>\*[COND]</strong> must be turned off before changing the
- condense percentage with <a href="#CONDENSE">CONDENSE</a>.
- <p>
- <strong>NOTE:</strong> If you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
- with
- <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
- <strong>mom</strong> ignores <strong>\*[COND]</strong>
- requests.
- <p>
- <!---EXTEND--->
- <hr width="66%" align="left">
- <a name="EXTEND"><h3><u>Set percentage for pseudo-extended type</u></h3></a>
- <br>
- <nobr>Macro: <strong>EXTEND</strong> <pseudo-extend percentage></nobr>
- <p>
- Pseudo-extending of type is accomplished by increasing the width of
- characters at a given point size without increasing their height,
- effectively widening them so they look like extended type.
- <strong>EXTEND</strong> tells <strong>mom</strong> what
- percentage of the normal character width you want the characters
- to be extended.
- <p>
- <strong>Mom</strong> has no default value for
- <strong>EXTEND</strong>, therefore you must set it before using the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <a href="#EXT_INLINE">\*[EXT]</a>.
- 120% of the normal character width is a good value, and
- you'd set it like this:
- <p>
- <pre>
- .EXTEND 120
- </pre>
- <strong>NOTE:</strong> By itself, <strong>EXTEND</strong>
- will not start pseudo-extending type; it merely tells
- <strong>mom</strong> what percentage of the normal character
- width you want characters to be extended.
- To start pseudo-extending, use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- <strong>\*[EXT]</strong>.
- <p>
- <strong>Additional note:</strong> Make sure that
- pseudo-extending is off (with
- <a href="#EXT_INLINE">\*[EXTX]</a>)
- before before making any changes to the pseudo-extend percentage
- with <strong>EXTEND</strong>.
- <p>
- <!---\*[EXT]--->
- <hr width="66%" align="left">
- <a name="EXT_INLINE"><h3><u>Pseudo-extending on/off</u></h3></a>
- <br>
- Inline: <strong>\*[EXT] -- turn pseudo-extending on</strong>
- <br>
- Inline: <strong>\*[EXTX] -- turn pseudo-extending off</strong>
- <p>
- <strong>\*[EXT]</strong> begins pseudo-extending type.
- <strong>\*[EXTX]</strong> turns the feature off. Both are
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>,
- therefore they should not appear as separate lines, but rather
- be embedded in text lines, like this:
- <p>
- <pre>
- \*[EXT]Not everything is as it seems.\*[EXTX]
- </pre>
- <strong>\*[EXT]</strong> remains in effect until you turn it
- off with <strong>\*[EXTX]</strong>.
- <p>
- <strong>IMPORTANT:</strong> You MUST turn <strong>\*[EXT]</strong>
- off before making any changes to the point size of your type, either
- via the
- <a href="#PS">PT_SIZE</a>
- macro or with the <strong>\s</strong> inline escape. If you wish
- the new point size to be pseudo-extended, simply reinvoke
- <strong>\*[EXT]</strong> afterwards. Equally,
- <strong>\*[EXT]</strong> must be turned off before changing the
- extend percentage with <a href="#EXTEND">EXTEND</a>.
- <p>
- <strong>NOTE:</strong> If you're using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
- with
- <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
- <strong>mom</strong> ignores <strong>\*[EXT]</strong>
- requests.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_ALDRLD"></a>
- <a name="ALDRLD">
- <h2><u>Vertical movement</u></h2>
- </a>
- The two macros in this section allow you to move down or up on the page
- relative to the current
- <a href="definitions.html#TERMS_BASELINE">baseline</a>.
- <a name="INDEX_ALDRLD">
- <h3><u>Vertical movement macro list</u></h3>
- </a>
- <ul>
- <li><a href="#ALD">ALD</a> -- Advance Lead
- <li><a href="#RLD">RLD</a> -- Reverse Lead
- </ul>
- <!---ALD--->
- <hr width="66%" align="left">
- <a name="ALD"><h3><u>Advance Lead (move downward)</u></h3></a>
- <br>
- <nobr>Macro: <strong>ALD</strong> <distance to move downward></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>ALD</strong> takes one argument: the distance to move downward
- on the page relative to the current vertical position.
- <p>
- Used by itself, or preceded by
- <a href="#BR">BR</a>,
- <strong>ALD</strong> will advance by one line space plus the
- distance you specify. Preceded by
- <a href="#EL">EL</a>,
- it will advance by exactly the distance you specify.
- <p>
- <strong>ALD</strong> requires a unit of measure. Decimal fractions
- are allowed, and values may be combined. Therefore, to move down
- on the page by 1/4 of an inch, you could enter either
- <p>
- <pre>
- .ALD .25i
- or
- .ALD 1P+6p
- </pre>
- As the mnemonic (<strong>A</strong>dvance
- <strong>L</strong>ea<strong>D</strong>) suggests, you'll most often
- use <strong>ALD</strong> with
- <a href="definitions.html#TERMS_PICASPOINTS">points</a>
- of lead.
- <p>
- <strong>NOTE:</strong> if you want to use <strong>ALD</strong>
- at the top of a page (i.e. to advance to the starting position
- of type on a page), combine the value you want with -1v (minus
- one line space), like this:
- <p>
- <pre>
- .ALD 1i-1v
- </pre>
- At the top of a page, this will advance one inch from the
- top edge of the paper. Without the -1v, the same command would
- advance one inch from the top of the page plus the distance of
- one line space.
- <p>
- <strong>Important:</strong> Do NOT use <strong>ALD</strong> in this
- way if you have set a top margin with
- <a href="#T_MARGIN">T_MARGIN</a>
- or
- <a href="#PAGE">PAGE</a>.
- <p>
- <!---RLD--->
- <hr width="66%" align="left">
- <a name="RLD"><h3><u>Reverse Lead (move upward)</u></h3></a>
- <br>
- <nobr>Macro: <strong>RLD</strong> <distance to move upward></nobr>
- <br>
- <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>RLD</strong> takes one argument: the distance to move
- upward on the page relative to the current vertical position.
- <p>
- Used by itself, or preceded by
- <a href="#BR">BR</a>,
- <strong>RLD</strong> will advance by one line space, then
- reverse by the distance you specify. Preceded by
- <a href="#EL">EL</a>,
- it will reverse by exactly the distance you specify.
- <p>
- <strong>RLD</strong> requires a unit of measure. Decimal fractions
- are allowed, and values may be combined. Therefore, to move up
- on the page by 1/4 of an inch, you could enter either
- <p>
- <pre>
- .RLD .25i
- or
- .RLD 1P+6p
- </pre>
- As the mnemonic (<strong>R</strong>dvance
- <strong>L</strong>ea<strong>D</strong>) suggests, you'll most often
- use <strong>RLD</strong> with
- <a href="definitions.html#TERMS_PICASPOINTS">points</a>
- of lead.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_TABS"></a>
- <a name="TABS">
- <h2><u>Tabs</u></h2>
- </a>
- <strong>Mom</strong> provides two different kinds of tab setup:
- typesetting tabs and string tabs. Neither one has anything to
- do with the tab key on your keyboard, and both are utterly
- divorced from groff's notion of tabs. I recommend reading this
- section carefully in order to understand how
- <strong>mom</strong> handles tabs.
- <p>
- <strong>NOTE:</strong> see the section
- <a href="typemacdoc.html#TYPESETTING">Using typesetting macros during document processing</a>
- for re-assuring information on the use of tabs during
- <a href="docprocessing.html#DOCPROCESSING">document processing</a>.
- <p>
- <a name="TYPESETTING_TABS"><h3><u>Typesetting tabs</u></h3></a>
- <p>
- Typesetting tabs are defined by both an indent from the left margin and
- a line length. This is quite different from typewriter-style tab stops
- (the groff norm) that only define the left indent. In conjunction
- with the
- <a href="#MULTI_COLUMNS">multi-column macros</a>,
- typesetting tabs significantly facilitate
- tabular and columnar work.
- <p>
- Typesetting tabs are created with the
- <a href="#TAB_SET">TAB_SET</a>
- macro. <strong>TAB_SET</strong> identifies the tab (by number),
- establishes its left indent and line length, and optionally sets
- a quad direction and fill mode. After tabs have been created with
- <strong>TAB_SET</strong>, they can be called at any time with the
- <a href="#TAB">TAB</a>
- macro.
- <p>
- <a name="TYPESETTING_TABS_TUT"><h3><u>Quickie tutorial on typesetting tabs</u></h3></a>
- <p>
- Say you want to set up three tabs to produce an employee evaluation
- that looks something like this:
- <p>
- <a name="TYPSETTING_TABS_SAMPLE"></a>
- <pre>
- CRITERION EVALUATION COMMENTS
- Service Good Many clients specifically request
- support from Joe by name.
- Punctuality Satisfactory Tends to arrive after 8:00am, but
- often works through lunch hour.
- Team spirit Needs work Persistently gives higher priority
- to helping clients than respecting
- organizational hierarchy.
- </pre>
- You want the first tab ("CRITERION")
- <br>
- <ul>
- <li>to begin at the left margin of the page (i.e. no indent)
- <li>to have a line length of 5 picas
- <li>to be set flush left
- </ul>
- <br>
- Tabs must be numbered, and each has to be set up with a separate
- <a href="#TAB_SET">TAB_SET</a>
- line. Therefore, to set up tab 1, you enter
- <p>
- <pre>
- .TAB_SET 1 0 5P L
- | | | |
- tab #__| | | |__direction
- | |
- indent__| |__length
- </pre>
- You want the second tab ("EVALUATION")
- <br>
- <ul>
- <li>to begin 8 picas from the left margin
- <li>to have a length of 9 picas
- <li>to be set centred.
- </ul>
- <br>
- You set it up like this:
- <p>
- <pre>
- .TAB_SET 2 8P 9P C
- | | | |
- tab #__| | | |__direction
- | |
- indent__| |__length
- </pre>
- You want the third tab ("COMMENTS")
- <br>
- <ul>
- <li>to begin 19 picas from the left margin
- <li>to have a length of 17 picas
- <li>to be set flush left, <a href="definitions.html#TERMS_FILLED">filled</a>
- </ul>
- <br>
- The setup looks like this:
- <p>
- <pre>
- .TAB_SET 3 19P 17P L QUAD
- | | | | |
- | | | | |__fill output lines
- | | | |
- tab #__| | | |__direction
- | |
- indent__| |__length
- </pre>
- Once the tabs are set up, you can call them in one of two ways:
- <br>
- <ul>
- <li><a href="#TAB">TAB</a> (with the tab
- number as an argument) breaks the current line,
- advances one linespace, and calls the tab.
- <li><a href="#TN">TN</a> (Tab Next) keeps
- you on the current line and moves over to the next
- tab in sequence (i.e. from 1 to 2, 2 to 3, etc.).
- </ul>
- <br>
- To exit from tabs and restore your original left margin, line length,
- quad direction and fill mode, use
- <a href="#TQ">TQ</a>
- (Tab Quit).
- <p>
- Here's how the input for our sample employee evaluation looks
- (with some introductory parameters):
- <p>
- <pre>
- .PAGE 8.5i 11i 1i 1i 1i
- .FAMILY T
- .FT R
- .PT_SIZE 14
- .LS 16
- .QUAD LEFT
- .KERN
- .HY OFF
- .SS 0
- .TAB_SET 1 0 5P L
- .TAB_SET 2 8P 9P C
- .TAB_SET 3 19P 17P L QUAD
- .TAB 1
- CRITERION
- .TN
- EVALUATION
- .TN
- COMMENTS
- .SP
- .TAB 1
- Service
- .TN
- Good
- .TN
- Many clients specifically request support from Joe by name.
- .SP
- .TAB 1
- Punctuality
- .TN
- Satisfactory
- .TN
- Tends to arrive after 8:00am, but often works through lunch hour.
- .SP
- .TAB 1
- Team spirit
- .TN
- Needs work
- .TN
- Persistently gives higher priority to helping clients
- than respecting organizational hierarchy.
- .TQ
- </pre>
- Try setting this up and previewing it with
- <p>
- <pre>
- groff -mom -X <filename>
- </pre>
- Notice how <kbd>.TN</kbd> simply moves over to the next tab,
- while the combination <kbd>.SP/.TAB 1</kbd> breaks the
- line, advances by one extra linespace, and calls the first tab.
- <p>
- Notice, too, how the <kbd>QUAD</kbd> argument passed to
- tab 3 means you don't have to worry about the length of
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>;
- <strong>mom</strong>
- <a href="definitions.html#TERMS_FILLED">fills</a>
- the tab and sets the type flush left.
- <p>
- <a name="STRING_TABS"><h3><u>String tabs (autotabs)</u></h3></a>
- <p>
- String tabs let you mark off tab positions with
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>
- embedded in
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>.
- Left indents and line lengths are calculated from the beginning and
- end positions of the marks. This is especially useful when tab
- indents and lengths need to be determined from the text that goes in
- each tab.
- <p>
- Setting up string tabs is a two-step procedure. First, you enter an
- input line in which you mark off where you want tabs to begin and end.
- (This is often best done in conjunction with the
- <a href="goodies.html#SILENT">SILENT</a>
- macro.)
- <p>
- Next, you invoke the
- <a href="#ST">ST</a>
- macro for every string tab you defined, and optionally pass quad and
- fill information to it. That done, string tabs are called with
- the
- <a href="#TAB">TAB</a>
- macro, just like typesetting tabs.
- <p>
- In combination with the
- <a href="goodies.html#PAD">PAD</a>
- macro and the groff inline escape
- <a href="inlines.html#INLINE_HORIZONTAL_GROFF">\h</a>
- (move horizontally across the page) or <strong>mom</strong>'s
- <a href="inlines.html#INLINE_HORIZONTAL_MOM">\*[FWD <distance>]</a>
- (move forward) inline, string tabs provide
- tremendous flexibility in setting up complex tab structures.
- <p>
- <a name="STRING_TABS_TUT"><h3><u>Quickie tutorial on string tabs</u></h3></a>
- <p>
- Say you want to set up tabs for the
- <a href="#TYPSETTING_TABS_SAMPLE">employee evaluation form</a>
- used as an example in the
- <a href="#TYPESETTING_TABS_TUT">typesetting tabs tutorial</a>.
- This time, though, you want to play around with the point size of
- type, so you can't know exactly how long the tabs will be or where
- they should start. All you know is
- <br>
- <ul>
- <li>CRITERION is the longest line in tab 1
- <li>EVALUATION is the longest line in tab 2
- <li>tab 3 should extend to the current right margin
- <li>you want a 1 pica gutter between each tab
- </ul>
- <br>
- This is an ideal job for string tabs.
- <p>
- The first thing you need for string tabs is an
- <a href="definitions.html#TERMS_INPUTLINE">input line</a>
- with tab positions marked on it. Tabs are marked with the
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>
- <a href="#ST_INLINE">\*[ST<n>]</a>
- and
- <a href="#ST_INLINE">\*[ST<n>X]</a>,
- where <strong><n></strong>
- is the number you want the tab to have. (In this example, we
- enclose the input line with the
- <a href="goodies.html#SILENT">SILENT</a>
- macro so the line doesn't print. We also use the
- <a href="goodies.html#PAD">PAD</a>
- macro to permit defining tab 3 as simply "the amount of
- space remaining on the input line.")
- <p>
- The setup looks like this:
- <p>
- <pre>
- .SILENT
- .PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
- .SILENT OFF
- </pre>
- The long line after <kbd>.PAD</kbd> looks scary, but it isn't.
- Here's what it means when broken down into its component parts:
- <br>
- <ul>
- <li>The longest line in tab 1 is "CRITERION", so we
- enclose CRITERION with begin/end markers for string tab 1:
- <p>
- <kbd>\*[ST1]CRITERION\*[ST1X]</kbd>
- <br>
- <li>We want a 1 pica (12 points) gutter between tab 1 and 2,
- so we insert 12 points of space with \*[FWD 12p]
- (<strong>F</strong>or<strong>W</strong>ar<strong>D</strong> 12 points):
- <p>
- <kbd>\*[FWD 12p]</kbd>
- <br>
- <li>The longest line in tab 2 is "EVALUATION", so
- we enclose EVALUATION with begin/end markers for string
- tab 2:
- <p>
- <kbd>\*[ST2]EVALUATION\*[ST2X]</kbd>
- <br>
- <li>We want 1 pica (12 points) between tab 2 and 3, so we
- insert 12 points of space with another \*[FWD 12p]:
- <p>
- <kbd>\*[FWD 12p]</kbd>
- <br>
- <li>We want tab 3 to be as long as whatever space remains on
- the current line length, so we enclose the
- <a href="goodies.html#PAD_MARKER">pad marker</a>
- (#) with begin/end markers for string tab 3:
- <p>
- <kbd>\*[ST3]#\*[ST3X]</kbd>
- <br>
- </ul>
- <br>
- The tabs are now defined, but they require
- <a href="definitions.html#TERMS_QUAD">quad direction</a>
- and
- <a href="definitions.html#TERMS_FILLED">fill</a>
- information. For each string tab defined above, enter a
- separate
- <a href="#ST">ST</a>
- line, like this:
- <p>
- <pre>
- .ST 1 L
- .ST 2 L
- .ST 3 L QUAD
- | | |
- | | |__fill output lines
- | |
- tab__| |__direction
- number
- </pre>
- From here on in, you call the tabs with
- <a href="#TAB">TAB</a>
- and
- <a href="#TN">TN</a>
- just like typesetting tabs (see
- <a href="#TYPESETTING_TABS_TUT">typesetting tabs tutorial</a>).
- <p>
- Here's the complete setup and entry for the sample employee
- evaluation form utilizing string tabs.
- <p>
- <pre>
- .PAGE 8.5i 11i 1i 1i 1i
- .FAMILY T
- .FT R
- .PT_SIZE 14
- .LS 16
- .QUAD LEFT
- .KERN
- .HY OFF
- .SS 0
- .SILENT
- .PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
- .SILENT OFF
- .ST 1 L
- .ST 2 L
- .ST 3 L QUAD
- .TAB 1
- CRITERION
- .TN
- EVALUATION
- .TN
- COMMENTS
- .SP
- .TAB 1
- Service
- .TN
- Good
- .TN
- Many clients specifically request support from Joe by name.
- .SP
- .TAB 1
- Punctuality
- .TN
- Satisfactory
- .TN
- Tends to arrive after 8:00am, but often works through lunch hour.
- .SP
- .TAB 1
- Team spirit
- .TN
- Needs work
- .TN
- Persistently gives higher priority to helping clients
- than respecting organizational hierarchy.
- .TQ
- </pre>
- Try setting this up and previewing it with
- <p>
- <pre>
- groff -mom -X <filename>
- </pre>
- Now, change the point size of the above sample to 12 and preview
- it again. You'll see that the tab structure remains identical (tab
- 1=CRITERION, tab 2=EVALUATION, tab 3=space remaining, and the gutter
- between tabs is still 1 pica), while the position and length
- of the tabs have altered because of the new point size.
- <p>
- Now try increasing the gutters to 2 picas (<kbd>\*[FWD 24p]</kbd> or
- <kbd>\*[FWD 2P]</kbd> instead of <kbd>\*[FWD 12p]</kbd>). Preview the
- file again, and notice how the tab structure remains the same, but
- the gutters are wider.
- <p>
- <a name="INDEX_TABS">
- <h3><u>Tabs macro list</u></h3>
- </a>
- <ul>
- <li><a href="#TAB_SET">TAB_SET</a> (create typesetting tabs)
- <li><a href="#INLINE_ST">\*[ST]...\*[STX]</a> (inline escapes for marking String Tabs)
- <li><a href="#ST">ST</a> (set String Tabs)
- <li><a href="#TAB">TAB</a> (call tabs)
- <li><a href="#TN">TN</a> (Tab Next; call next tab in a sequence)
- <li><a href="#TQ">TQ</a> (Tab Quit)
- </ul>
- <!---TAB_SET--->
- <hr width="66%" align="left">
- <a name="TAB_SET"><h3><u>Set up typesetting tabs</u></h3></a>
- <br>
- <nobr>Macro: <strong>TAB_SET</strong> <tab number> <indent> <length> L | R | C | J [ QUAD ]</nobr>
- <br>
- <em>*<indent> and <length> require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>TAB_SET</strong> creates typesetting tabs that later can be
- called with
- <a href="#TAB">TAB</a>.
- Typesetting tabs are numbered, and defined by an indent, a length,
- and a "direction", hence <strong>TAB_SET</strong> has
- four required arguments:
- <br>
- <ul>
- <li>a tab number
- <li>an indent (measured from the left margin of the page,
- or, if you're already in a tab, from the left margin of the tab)
- <li>a length
- <li>a direction
- </ul>
- <br>
- To set up a centred tab 6 picas long and 9 points from the left
- margin, you'd enter
- <p>
- <pre>
- .TAB_SET 1 9p 6P C
- </pre>
- The tab number in the above ("1") is simply an
- identifier. It could have been 4, or 17, or 296. There's no
- need to set up tabs in numerical sequence.
- <p>
- By default, tabs are in
- <a href="definitions.html#TERMS_NOFILL">nofill</a>
- mode, meaning you can enter text in tabs on a line-for-line basis
- without having to use the
- <a href="#BR">BR</a>
- macro. If you want a tab to be
- <a href="definitions.html#TERMS_FILLED">filled</a>,
- pass the optional argument <strong>QUAD</strong>, which will
- make the tab behave as if you'd entered <kbd>.QUAD L | R |
- C</kbd>.
- <p>
- For
- <a href="definitions.html#TERMS_JUST">justified</a>
- tabs, simply pass the argument <strong>J</strong> (without the
- <strong>QUAD</strong> argument), like this:
- <p>
- <pre>
- .TAB 1 9p 6P J
- </pre>
- Once tabs are set, they can be called at any time with the
- <a href="#TAB">TAB #</a>
- macro, where "#" is the number of the desired tab.
- <p>
- You can set up any number of typesetting tabs. However, be
- aware that
- <a href="#STRING_TABS">string tabs</a>
- are also called with <strong>TAB #</strong>, so be careful that you
- don't set up a typesetting tab numbered, say, 4, when you already
- have a string tab numbered 4. Every tab, typesetting or string,
- must have a unique numeric identifier.
- <p>
- <strong>NOTE:</strong> If you use <strong>TAB_SET</strong> while
- you're currently inside a tab, the indent argument is the distance from
- the tab's left margin, not the left margin of the page. Therefore,
- you should exit tabs (with
- <a href="#TQ">TQ</a>)
- before creating new tabs (unless, of course, you want to set
- up a tab structure within the confines of an existing tab).
- <p>
- <strong>IMPORTANT:</strong> Turn all indents off (see
- <a href="#INDENTS">Indents</a>)
- before setting up tabs with <strong>TAB_SET</strong>, or
- <strong>mom</strong> may get confused.
- <p>
- <!---INLINE_ST--->
- <hr width="66%" align="left">
- <a name="INLINE_ST"><h3><u>Mark positions of string tabs</u></h3></a>
- <br>
- Inlines: <strong>\*[ST<number>]...\*[ST<number>X]</strong>
- <br>
- <em>*<a href="definitions.html#TERMS_QUAD">Quad</a>
- direction must be LEFT or JUSTIFY (see
- <a href="#QUAD">QUAD</a>
- and
- <a href="#JUSTIFY">JUSTIFY</a>)
- or the
- <a name="definitions.html#TERMS_NOFILL">no-fill mode</a>
- set to
- <a href="#LRC">LEFT</a>.
- Please see
- <a href="#IMPORTANT">IMPORTANT</a>,
- below.</em>
- <p>
- String tabs need to be marked off with
- <a href="definitions.html#TERMS_INLINES">inline escapes</a>
- before being set up with the
- <a href="#ST">ST</a>
- macro. Any input line may contain string tab markers.
- <i><number></i>, above, means the numeric identifier of
- the tab. The following shows a sample input line with string
- tab markers.
- <p>
- <pre>
- \*[ST1]Now is the time\*[ST1X] for all \*[ST2]good men\*ST2X] to come to the aid of the party.
- </pre>
- 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". Inline escapes (e.g. font or point size
- changes, or horizontal movements, including
- <a href="goodies.html#PAD">padding</a>)
- are taken into account when <strong>mom</strong> determines the
- position and length of string tabs.
- <p>
- 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.
- <p>
- Once string tabs have been marked in input lines, they have to
- be "set" with
- <a href="#ST">ST</a>,
- after which they may be called, by number, with
- <a href="#TAB">TAB</a>.
- <p>
- <strong>NOTE:</strong> 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
- <a href="#SILENT">SILENT</a>
- macro.
- <p>
- <a name="IMPORTANT"><strong>IMPORTANT:</strong></a>
- Owing to the way groff processes
- <a href="definitions.html#TERMS_INPUTLINE">input lines</a>
- and turns them into
- <a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>,
- it is not possible for <strong>mom</strong> to "guess" the
- correct starting position of string tabs marked off in lines that
- are centered or set flush right.
- <p>
- Equally, she cannot guess the starting position if a line is fully
- justified and broken with
- <a href="#SPREAD">SPREAD</a>.
- <p>
- In other words, in order to use string tabs,
- <a href="#LRC">LEFT</a>
- must be active, or, if
- <a href="#QUAD">QUAD LEFT</a>
- or
- <a href="#JUSTIFY">JUSTIFY</a>
- are active, the line on which the string tabs are marked must be
- broken "manually" with
- <a href="#BR">BR</a>
- (but not
- <a href="#SPREAD">SPREAD</a>).
- <p>
- To circumvent this behaviour, I recommend using the
- <a href="goodies.html#PAD">PAD</a>
- to set up string tabs in centered or flush right lines. Say, for
- example, you want to use a string tab to underscore the text of a
- centered line with a rule. Rather than this,
- <p>
- <pre>
- .CENTER
- \*[ST1]A line of text\*[ST1X]\c
- .EL
- .ST 1
- .TAB 1
- .PT_SIZE 24
- .ALD 3p
- \*[RULE]
- .RLD 3p
- .TQ
- </pre>
- you should do:
- <p>
- <pre>
- .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
- </pre>
- <p>
- <!---ST--->
- <hr width="66%" align="left">
- <a name="ST"><h3><u>Set string tabs</u></h3></a>
- <br>
- <nobr>Macro: <strong>ST</strong> <tab number> L | R | C | J [ QUAD ]</nobr>
- <p>
- After string tabs have been marked off on an input line (see
- <a href="#INLINE_ST">\*[ST]...\*[STX]</a>),
- you need to "set" them by giving them a direction
- and, optionally, the <strong>QUAD</strong> argument. In this
- respect, <strong>ST</strong> is like
- <a href="#TAB_SET">TAB_SET</a>
- except that you don't have to give <strong>ST</strong> an indent
- or a line length (that's already taken care of, inline, by
- <kbd>\*[ST]...\*[STX]</kbd>). If you want string tab 1 to be
- left, enter
- <p>
- <pre>
- .ST 1 L
- </pre>
- If you want it to be left and
- <a href="definitions.html#TERMS_FILLED">filled</a>, enter
- <p>
- <pre>
- .ST 1 L QUAD
- </pre>
- If you want it to be justified, enter
- <p>
- <pre>
- .ST 1 J
- </pre>
- See the
- <a href="#STRING_TABS_TUT">Quickie tutorial on string tabs</a>
- for a full explanation of setting up string tabs.
- <p>
- <!---TAB--->
- <hr width="66%" align="left">
- <a name="TAB"><h3><u>Call tabs</u></h3></a>
- <br>
- <nobr>Macro: <strong>TAB</strong> <tab number></nobr>
- <br>
- Alias: <strong>TB</strong>
- <p>
- After tabs have been defined (either with
- <a href="#TAB_SET">TAB_SET</a>
- or
- <a href="#ST">ST</a>),
- <strong>TAB</strong> moves to whatever tab number you pass it as
- an argument. For example,
- <p>
- <pre>
- .TAB 3
- </pre>
- moves you to tab 3.
- <p>
- <a name="NOTE_TN"></a>
- <strong>NOTE:</strong> <strong>TAB</strong> breaks the line preceding
- it and advances 1 linespace. Hence,
- <p>
- <pre>
- .TAB 1
- A line of text in tab 1.
- .TAB 2
- A line of text in tab 2.
- </pre>
- produces, on output
- <p>
- <pre>
- A line of text in tab 1.
- A line of text in tab 2.
- </pre>
- If you want the tabs to line up, use
- <a href="#TN">TN</a>
- (Tab Next), like this:
- <p>
- <pre>
- .TAB 1
- A line of text in tab 1.
- .TN
- A line of text in tab 2.
- </pre>
- which produces
- <p>
- <pre>
- A line of text in tab 1. A line of text in tab 2.
- </pre>
- 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
- <a href="#MULTI_COLUMNS">multi-column</a> macros.
- <p>
- <strong>ADDITIONAL NOTE:</strong> Any indents in effect prior to
- calling a tab are automatically turned off by <strong>TAB</strong>.
- If you were happily zipping 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 6 picas plus the 2 pica indent.
- <p>
- <!---TN--->
- <hr width="66%" align="left">
- <a name="TN"><h3><u>Tab Next</u></h3></a>
- <br>
- Macro: <strong>TN</strong>
- <br>
- <em>*In tabs that aren't given the QUAD argument when they're set up
- with
- <a href="#TAB_SET">TAB_SET</a>
- or
- <a href="#ST">ST</a>, you must terminate the line preceding
- <kbd>TN</kbd> with the \c inline escape. See the
- <a href="#TN_NOTE">ADDITIONAL NOTE</a>,
- <br>
- *If you find remembering whether to put in the <kbd>\c</kbd>
- bothersome, you may prefer to use the
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- alternative to
- <kbd>.TN</kbd>,
- <a href="inlines.html#TB+">\*[TB+]</a>,
- which works consistently regardless of the fill mode.</em>
- <p>
- <strong>TN</strong> moves over to the next tab in numeric
- sequence (tab n+1) without advancing on the page. See the
- <a href="#NOTE_TN">NOTE</a>
- in the description of the <strong>TAB</strong> macro for an
- example of how <strong>TN</strong> works.
- <p>
- <strong>NOTE:</strong> You <em>must</em> put text in the
- <a href="definitions.html#TERMS_INPUTLINE">input line</a>
- immediately after <strong>TN</strong>. "Stacking" of
- <strong>TN</strong>'s is not allowed. In other words, you cannot
- do
- <p>
- <pre>
- .TAB 1
- Some text
- .TN
- Some more text
- .TN
- .TN
- Yet more text
- </pre>
- The above example, assuming tabs numbered from 1 to 4, should be entered
- <p>
- <pre>
- .TAB 1
- Some text
- .TN
- Some more text
- .TAB 4
- Yet more text
- </pre>
- <p>
- <a name="TN_NOTE"><strong>ADDITIONAL NOTE:</strong></a>
- In versions of mom prior to 1.1.9, <strong>TN</strong> did not
- always work as advertised on the last
- <a name="TERMS_OUTPUTLINE">output line</a>
- of pages that contained a footer trap (e.g. one set with
- <a href="#B_MARGIN">B_MARGIN</a>
- or in documents formatted using the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>).
- <p>
- <strong>TN</strong> has been re-written so that this should no longer be the
- case. However, in order for it to work in tabs that have not been
- given a <kbd>QUAD</kbd> argument (see
- <a href="#TAB_SET">TAB_SET</a>
- and
- <a href="#ST">ST</a>)
- you must always "join" <strong>.TN</strong> to the line
- before it using the
- <a href="#JOIN">\c</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>,
- as in the following example:
- <p>
- <pre>
- .TAB_SET 1 0 1P L
- .TAB_SET 2 1P 20P L
- .TAB 1
- 1.\c
- .TN
- The first rule of survival is "make and keep good friends."
- </pre>
- When output, the example will look like this:
- <p>
- <pre>
- 1. The first rule of survival is "make and keep good friends."
- </pre>
- Conversely, if you did give a <kbd>QUAD</kbd> argument
- to <strong>TAB_SET</strong> or <strong>ST</strong>, the
- <strong>\c</strong> must not be used.
- <p>
- <!---TQ--->
- <hr width="66%" align="left">
- <a name="TQ"><h3><u>Tab Quit</u></h3></a>
- <br>
- Macro: <strong>TQ</strong>
- <br>
- <p>
- <strong>TQ</strong> takes you out of whatever tab you were in,
- advances 1 linespace, and restores the left margin, line length,
- quad direction and
- <a href="definitions.html#TERMS_FILLED">fill mode</a>
- that were in effect prior to invoking any tabs.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_MULTI_COLUMNS"></a>
- <a name="MULTI_COLUMNS">
- <h2><u>Multi-Columns</u></h2>
- </a>
- 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
- <a href="definitions.html#TERMS_BASELINE">baseline</a>
- of the first line in the previous tab. To demonstrate:
- <p>
- <pre>
- .TAB 1
- Carrots
- Potatoes
- Broccoli
- .TAB 2
- $1.99/5 lbs
- $0.25/lb
- $0.99/bunch
- </pre>
- produces, on output
- <p>
- <pre>
- Carrots
- Potatoes
- Broccoli
- $1.99/5 lbs
- $0.25/lb
- $0.99/bunch
- </pre>
- The multi-column macros allow you to set tabs in columnar
- fashion, rather than line by line. When you invoke multi-column
- mode (with
- <a href="#MCO">MCO</a>),
- <strong>mom</strong> saves the position of the current baseline.
- <a href="#MCR">MCR</a>
- (Multi-column return) at any point while multi-columns are on
- returns you to the saved position. Exiting multi-columns
- (<a href="#MCX">MCX</a>)
- quits the current tab (if you're in one) and moves you to the
- bottom of the longest column. (Note that you do not have to use
- multi-columns in conjunction with tabs.)
- <p>
- Using our example above, but setting it in multi-column mode,
- <p>
- <pre>
- .MCO
- .TAB 1
- Carrots
- Potatoes
- Broccoli
- .MCR
- .TAB 2
- $1.99/5 lbs
- $0.25/lb
- $0.99/bunch
- .MCX
- </pre>
- produces
- <p>
- <pre>
- Carrots $1.99/5 lbs
- Potatoes $0.25/lb
- Broccoli $0.99/bunch
- </pre>
- <strong>NOTE:</strong> Do not confuse <strong>MCO</strong> with
- the
- <a href="docprocessing.html#COLUMNS">COLUMNS</a>
- macro in the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- <p>
- <a name="INDEX_MULTI_COLUMNS">
- <h3><u>Columns macro list</u></h3>
- </a>
- <ul>
- <li><a href="#MCO">MCO (begin multi-column setting)</a>
- <li><a href="#MCR">MCR (return to top of column)</a>
- <li><a href="#MCX">MCX (exit multi-columns)</a>
- </ul>
- <!---MCO--->
- <hr width="66%" align="left">
- <a name="MCO"><h3><u>Begin multi-column setting</u></h3></a>
- <br>
- Macro: <strong>MCO</strong>
- <br>
- <p>
- <strong>MCO</strong>
- (<strong>M</strong>ulti-<strong>C</strong>olumn <strong>O</strong>n)
- is the macro you use to begin multi-column setting. It marks
- the current
- <a href="definitions.html#TERMS_BASELINE">baseline</a>
- as the top of your columns, for use later with
- <a href="#MCR">MCR</a>. See the
- <a href="#MULTI_COLUMNS">introduction to columns</a>
- for an explanation of multi-columns and some sample
- input.
- <p>
- <strong>NOTE:</strong> Do not confuse <strong>MCO</strong> with
- the
- <a href="docprocessing.html#COLUMNS">COLUMNS</a>
- macro in the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- <p>
- <!---MCR--->
- <hr width="66%" align="left">
- <a name="MCR"><h3><u>Return to top of column</u></h3></a>
- <br>
- Macro: <strong>MCR</strong>
- <br>
- <p>
- Once you've turned multi-columns on (with
- <a href="#MCO">MCO</a>),
- <strong>MCR</strong>, at any time, returns you to the top of
- your columns.
- <p>
- <!---MCX--->
- <hr width="66%" align="left">
- <a name="MCX"><h3><u>Exit multi-columns</u></h3></a>
- <br>
- <nobr>Macro: <strong>MCX</strong> [ <distance to advance below longest column> ]</nobr>
- <br>
- <em>*Optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>MCX</strong> takes you out of any tab you were in (by silently
- invoking
- <a href="#TQ">TQ</a>) and advances to the bottom of the longest
- column.
- <p>
- Without an argument, <strong>MCX</strong> advances 1 linespace
- below the longest column. Linespace, in this instance, is the
- <a href="definitions.html#TERMS_LEADING">leading</a>
- in effect <em>at the moment <strong>MCX</strong> is
- invoked.</em>
- <p>
- If you pass the <nobr><distance> argument to</nobr>
- <strong>MCX</strong>, it advances 1 linespace below the longest
- column (see above) PLUS the distance specified by the argument.
- The argument requires a unit of measure; therefore, to advance
- an extra 6 points below where <strong>MCX</strong> would
- normally place you, you'd enter
- <p>
- <pre>
- .MCX 6p
- </pre>
- <strong>NOTE:</strong> If you wish to advance a precise distance
- below the
- <a href="definitions.html#TERMS_BASELINE">baseline</a>
- of the longest column, use <strong>MCX</strong> with an
- argument of 0 (zero; no unit of measure required) in conjunction
- with the
- <a href="#ALD">ALD</a>
- macro, like this:
- <p>
- <pre>
- .MCX 0
- .ALD 24p
- </pre>
- The above advances to precisely 24 points below the baseline
- of the longest column.
- <p>
- <hr>
- <!====================================================================>
- <a name="INTRO_INDENTS"></a>
- <a name="INDENTS">
- <h2><u>Indents</u></h2>
- </a>
- With <strong>mom</strong>'s indents, you can indent from the left,
- the right, or both margins. In addition, <strong>mom</strong>
- provides temporary left indents (i.e. only one line is indented,
- as at the start of a paragraph) and "hanging" left indents
- (the reverse of a temporary indent; the first line isn't indented,
- subsequent lines are).
- <p>
- <a name="INDENTS_TUT"><h3><u>A brief explanation of how mom handles indents</u></h3></a>
- <p>
- <strong>Mom</strong> provides five kinds of indents: left, right,
- both, temporary, and hanging. Each is invoked by its own name:
- <br>
- <ul>
- <li><strong>IL</strong> = <strong>I</strong>ndent <strong>L</strong>eft
- <li><strong>IR</strong> = <strong>I</strong>ndent <strong>R</strong>ight
- <li><strong>IB</strong> = <strong>I</strong>ndent <strong>B</strong>oth
- <li><strong>HI</strong> = <strong>H</strong>anging <strong>I</strong>ndent
- <li><strong>TI</strong> = <strong>T</strong>emporary <strong>I</strong>ndent
- </ul>
- <br>
- In addition, there are four macros to control exiting from
- indents:
- <br>
- <ul>
- <li><strong>IQ</strong> = quit all active indents
- <li><strong>ILX</strong> = exit indent style left
- <li><strong>IRX</strong> = exit indent style right
- <li><strong>IBX</strong> = exit indent style both
- </ul>
- <br>
- This section deals exclusively with <strong>IL, IR</strong> and
- <strong>IB</strong>. For an explanation
- of hanging and temporary indents -- how they work and how to use
- them -- see
- <a href="#HI">Hanging indents</a>
- and
- <a href="#TI">Temporary indents</a>.
- <p>
- The first time you invoke any of <strong>mom</strong>'s indents,
- you must supply a measure. For example,
- <p>
- <pre>
- .IL 2P
- </pre>
- indents text 2 picas from the left margin (or current tab
- indent).
- <p>
- When you want to exit the above indent, use either
- <p>
- <pre>
- .IQ
- or
- .ILX
- </pre>
- The next time you want the same indent, invoke it without the
- argument, like this:
- <p>
- <pre>
- .IL
- </pre>
- As you can see, once you've supplied a measure to an indent macro
- <strong>mom</strong> stores the value, obviating the need to repeat
- it on subsequent invocations. And <strong>mom</strong> doesn't just
- store the measure -- she hangs on to it tenaciously. Arguments passed
- to <strong>IL, IR</strong> and <strong>IB</strong> are additive.
- Consider the following:
- <p>
- <pre>
- .LL 20P
- .IR 2P \"Indent right by 2 picas
- A first block of text...
- ...
- ...
- .IQ \"Turn indent off
- A second block of text...
- ...
- ...
- .IR 2P \"Indent right by an additional 2 picas (i.e. 4 picas)
- A third block of text...
- ...
- ...
- </pre>
- The first block of text is right indented by 2 picas (i.e. the line
- length is shortened by 2 picas to 18 picas). The second block of
- text, after <strong>IQ</strong>, is, as you'd expect, set to the full
- measure. The third block of text -- the one to pay attention to --
- is not right indented by 2 picas, but rather by 4 picas.
- <strong>Mom</strong> adds the value of arguments to <strong>IL,
- IR</strong> and <strong>IB</strong> to whatever value is already
- in effect.
- <p>
- If you wanted the third block of text in the example above to
- be right indented by just 2 picas (the original measure given to
- <strong>IR</strong>), you would enter <kbd>.IR</kbd> without an
- argument.
- <p>
- Because indent arguments are additive, putting a minus sign in front
- of the argument can be used to subtract from the current value.
- In the following example, the first line is indented 18 points, the
- second is indented 36 points (18+18), and the third is again indented
- 18 points (36-18).
- <p>
- <pre>
- .IL 18p \"Indent left by 18 points = 18 points
- Now is the time
- .IL 18p \"Indent left by 18 points more = 36 points
- for all good men to come
- .IL -18p \"Indent left by 18 points less = 18 points
- to the aid of the party.
- </pre>
- Sometimes, you may want to clear out the stored indent values -- let
- <strong>mom</strong> start indenting with a clean slate, as it were.
- Giving the optional argument <kbd>CLEAR</kbd> to any of the
- "indent quit" macros resets them to zero.
- <br>
- <ul>
- <li><strong>IQ CLEAR</strong> = quit and clear all indents
- <li><strong>ILX CLEAR</strong> = quit and clear indent style left
- <li><strong>IRX CLEAR</strong> = quit and clear indent style right
- <li><strong>IBX CLEAR</strong> = quit and clear indent style both
- </ul>
- <br>
- Indent styles may be combined and manipulated separately. You could,
- for example, have a left indent of 4 picas and a right indent of 6
- picas and control each separately, as in the following example.
- <p>
- <pre>
- .IL 4P \"Indent left 4 picas
- .IR 6P \"Indent right 6 picas
- Some text
- .IRX \"Turn off the right indent only
- More text \"Text is still indented 4 picas left
- </pre>
- If, at <kbd>.IRX</kbd>, you wanted the text afterwards to have no
- indents (either left or right), you would enter <kbd>.IQ</kbd>,
- which exits all indent styles at once.
- <p>
- <strong>A word of advice:</strong> Indents are best used only when
- you have a compelling reason not to change the current left margin or
- line length. In many instances where indents might seem expedient,
- it's better to use tabs, or actually change the left margin or the
- line length. <strong>Mom</strong>'s indenting macros are flexible
- and powerful, but easy to get tangled up in. Personally, I don't
- use them much, except for cutarounds and multi-level lists ŕ la html,
- at which they excel.
- <p>
- <strong>NOTE:</strong> see the section
- <a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
- for information and advice on using indents with the
- <a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
- <p>
- <a name="INDEX_INDENTS"><h3><u>Indents macro list</u></h3>
- <ul>
- <li><a href="#IL">IL</a> (Indent left)
- <li><a href="#IR">IR</a> (Indent right)
- <li><a href="#IB">IB</a> (Indent both)
- <li><a href="#TI">TI</a> (Temporary indent, left)
- <li><a href="#HI">HI</a> (Hanging Indent)
- <ul>
- <li><a href="#NUM_LISTS">A recipe for numbered lists</a>
- </ul>
- <li><a href="#IQ">IQ</a> (Quit indents, all)
- <li><a href="#IQ">ILX</a> (Exit indent style left)
- <li><a href="#IQ">IRX</a> (Exit indent style right)
- <li><a href="#IQ">IBX</a> (Exit indent style both)
- </ul>
- <!---IL--->
- <hr width="66%" align="left">
- <a name="IL"><h3><u>Indent left</u></h3></a>
- <br>
- <nobr>Macro: <strong>IL</strong> [ <measure> ]</nobr>
- <br>
- <em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>IL</strong> indents text from the left margin of the page,
- or if you're in a tab, from the left edge of the tab. Once
- <strong>IL</strong> is on, the left indent is applied uniformly to
- every subsequent line of text, even if you change the line length.
- <p>
- The first time you invoke <strong>IL</strong>, you must give it a
- measure. Subsequent 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
- <a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- may be used to specify a text-dependent measure, in which case
- no unit of measure is required. For example,
- <p>
- <pre>
- .IL \w'margarine'
- </pre>
- indents text by the width of the word "margarine".
- <p>
- With no argument, <strong>IL</strong> indents by its last
- active value. See the
- <a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
- for more details.
- <p>
- <strong>NOTE:</strong> Calling a tab (with
- <a href="#TAB">TAB</a>)
- automatically cancels any active indents.
- <p>
- <strong>ADDITIONAL NOTE:</strong> Invoking <strong>IL</strong>
- automatically turns off <strong>IB</strong>.
- <p>
- <!---IR--->
- <hr width="66%" align="left">
- <a name="IR"><h3><u>Indent right</u></h3></a>
- <br>
- <nobr>Macro: <strong>IR</strong> [ <measure> ]</nobr>
- <br>
- <em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>IR</strong> indents text from the right margin of the
- page, or if you're in a tab, from the end of the tab.
- <p>
- The first time you invoke <strong>IR</strong>, you must give it a
- measure. Subsequent invocations with a measure add to the previous
- indent measure. A minus sign may be prepended to the argument to
- subtract from the current indent measure. The
- <a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- may be used to specify a text-dependent measure, in which case
- no unit of measure is required. For example,
- <p>
- <pre>
- .IR \w'jello'
- </pre>
- indents text by the width of the word "jello".
- <p>
- With no argument, <strong>IR</strong> indents by its last
- active value. See the
- <a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
- for more details.
- <p>
- <strong>NOTE:</strong> Calling a tab (with
- <a href="#TAB">TAB</a>)
- automatically cancels any active indents.
- <p>
- <strong>ADDITIONAL NOTE:</strong> Invoking <strong>IR</strong>
- automatically turns off <strong>IB</strong>.
- <p>
- <!---IB--->
- <hr width="66%" align="left">
- <a name="IB"><h3><u>Indent both</u></h3></a>
- <br>
- <nobr>Macro: <strong>IB</strong> [ <left measure> <right measure> ]</nobr>
- <br>
- <em>*The optional arguments require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- <strong>IB</strong> allows you to set or invoke a left and a right
- indent at the same time.
- <p>
- At its first invocation, you must supply a measure for both indents;
- at subsequent invocations when you wish to supply a measure, both must
- be given again. As with <strong>IL</strong> and <strong>IR</strong>,
- the measures 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.
- <p>
- <strong>A word of advice:</strong> If you need to manipulate left and
- right indents separately, use a combination of <strong>IL</strong>
- and <strong>IR</strong> instead of <strong>IB</strong>. You'll
- save yourself a lot of grief.
- <p>
- A minus sign may be prepended to the arguments to subtract from their
- current values. The
- <a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
- <a href="definitions.html#TERMS_INLINES">inline escape</a>
- may be used to specify text-dependent measures, in which case
- no unit of measure is required. For example,
- <p>
- <pre>
- .IB \w'margarine' \w'jello'
- </pre>
- left indents text by the width of the word "margarine"
- and right indents by the width of "jello".
- <p>
- Like <strong>IL</strong> and <strong>IR</strong>, <strong>IB</strong>
- with no argument indents by its last active values. See the
- <a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
- for more details.
- <p>
- <strong>NOTE:</strong> Calling a tab (with
- <a href="#TAB">TAB</a>)
- automatically cancels any active indents.
- <p>
- <strong>ADDITIONAL NOTE:</strong> Invoking <strong>IB</strong>
- automatically turns off <strong>IL</strong> and
- <strong>IR</strong>.
- <p>
- <!---TI--->
- <hr width="66%" align="left">
- <a name="TI"><h3><u>Temporary (left) indent</u></h3></a>
- <br>
- <nobr>Macro: <strong>TI</strong> [ <measure> ]</nobr>
- <br>
- <em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- 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. (<strong>Mom</strong>'s
- <a href="docprocessing.html#PP">PP</a>
- macro, for example, uses a temporary indent.)
- <p>
- The first time you invoke <strong>TI</strong>, you must give it
- a measure. If you want to indent the first line of a
- paragraph by, say, 2
- <a href="definitions.html#TERMS_EM">ems</a>,
- do
- <p>
- <pre>
- .TI 2m
- </pre>
- Subsequent invocations of <strong>TI</strong> do not require you
- to supply a measure; <strong>mom</strong> keeps track of the
- last measure you gave it.
- <p>
- Because temporary indents are temporary, there's no need to turn
- them off.
- <p>
- <strong>IMPORTANT:</strong> Unlike <strong>IL, IR</strong> and
- <strong>IB</strong>, measures given to <strong>TI</strong>
- are NOT additive. In the following example, the second <kbd>.TI
- 2P</kbd> is exactly 2 picas.
- <p>
- <pre>
- .TI 1P
- The beginning of a paragraph...
- .TI 2P
- The beginning of another paragraph...
- </pre>
- <!---HI--->
- <hr width="66%" align="left">
- <a name="HI"><h3><u>Hanging indent</u></h3></a>
- <br>
- <nobr>Macro: <strong>HI</strong> [ <measure> ]</nobr>
- <br>
- <em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
- <p>
- A hanging indent looks like this:
- <p>
- <pre>
- 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...
- </pre>
- The first line of text "hangs" outside the left
- margin.
- <p>
- In order to use hanging indents, you must first have a left indent
- active (set with either
- <a href="#IL">IL</a>
- or
- <a href="#IB">IB</a>).
- <strong>Mom</strong> will not hang text outside the left margin set with
- <a href="#L_MARGIN">L_MARGIN</a>
- or outside the left margin of a tab.
- <p>
- The first time you invoke <strong>HI</strong>, you must give it
- a measure. If you want the first line of a paragraph to hang by,
- say, 1 pica, do
- <p>
- <pre>
- .IL 1P
- .HI 1P
- </pre>
- Subsequent invocations of <strong>HI</strong> do not require you
- to supply a measure; <strong>mom</strong> keeps track of the
- last measure you gave it.
- <p>
- Generally speaking, you should invoke <strong>HI</strong> immediately
- prior to the line you want hung (i.e. without any intervening
- <a href="definitions.html#TERMS_CONTROLLINES">control lines</a>).
- And because hanging indents affect only one line, there's no need to turn
- them off.
- <p>
- <a name="NUM_LISTS"><h3><u>A recipe for numbered lists</u></h3></a>
- <p>
- <strong>PLEASE NOTE: mom</strong> now has macros for setting lists (see
- <a href="docelement.html#LIST_INTRO">Nested lists</a>),
- making this recipe superfluous. It remains here in the hope that
- it will clarify the use of hanging indents generally, if no longer
- specifically.
- <p>
- Consider the following example:
- <p>
- <pre>
- .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.' \"Indent left by 2 figure spaces and a period
- .HI \w'\0\0.' \"Hang first line of text back by 2 figure spaces and a period
- 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?
- </pre>
- First, we invoke a left indent with a measure equal to the width
- of 2
- <a href="definitions.html#TERMS_FIGURESPACE">figures spaces</a>
- plus a period (using the
- <a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
- 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 begin 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.
- <p>
- Notice that subsequent invocations of <strong>HI</strong> without a
- measure produce exactly the same effect.
- <p>
- Paste the example above into a file and preview it with <kbd>groff -mom -X
- <filename></kbd> to see hanging indents in action.
- <p>
- <strong>IMPORTANT:</strong> Unlike <strong>IL, IR</strong> and
- <strong>IB</strong>, measures given to <strong>HI</strong>
- are NOT additive. Each time you pass a measure to
- <strong>HI</strong>, the measure is treated literally.
- <p>
- <!---IX--->
- <hr width="66%" align="left">
- <a name="IQ"><h3><u>Quitting indents</u></h3></a>
- <br>
- <nobr>Macro: <strong>IQ</strong> [ CLEAR ] (quit any/all indents -- see <strong>*IMPORTANT NOTE</strong>)</nobr>
- <br>
- <nobr>Macro: <strong>ILX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>L</strong>eft)</nobr>
- <br>
- <nobr>Macro: <strong>IRX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>R</strong>ight)</nobr>
- <br>
- <nobr>Macro: <strong>IBX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>B</strong>oth)</nobr>
- <p>
- <strong>*IMPORTANT NOTE:</strong>
- <br>
- <em>Formerly, the macro for quitting all indents was</em>
- <strong>.IX</strong><em>. This usage is now deprecated, in favour
- of</em> <strong>.IQ</strong><em>.</em> <strong>.IX</strong> <em>will
- continue to behave as before, but</em> <strong>mom</strong> <em>will
- issue a warning to stderr indicating that you should update your
- documents.
- <br>
- As a consequence of this change,</em>
- <strong>ILX, IRX</strong> <em>and</em> <strong>IBX</strong> <em>may
- now also be invoked as</em> <strong>ILQ, IRQ</strong> <em>and</em>
- <strong>IBQ</strong><em>. Both forms are acceptable.</em>
- <p>
- 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.
- <p>
- If you pass these macros the optional argument <strong>CLEAR</strong>,
- 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 supply
- a measure again.
- <p>
- <strong>IQ CLEAR</strong>, as you'd suspect, quits and clears
- the values for all indent styles at once.
- <p>
- <hr>
- <a href="goodies.html#TOP">Next</a>
- <a href="definitions.html#TOP">Prev</a>
- <a href="#TOP">Top</a>
- <a href="toc.html">Back to Table of Contents</a>
- </body>
- </html>