diff options
Diffstat (limited to 'contrib/mom/momdoc/typesetting.html')
-rw-r--r-- | contrib/mom/momdoc/typesetting.html | 3726 |
1 files changed, 3726 insertions, 0 deletions
diff --git a/contrib/mom/momdoc/typesetting.html b/contrib/mom/momdoc/typesetting.html new file mode 100644 index 00000000..6bce803a --- /dev/null +++ b/contrib/mom/momdoc/typesetting.html @@ -0,0 +1,3726 @@ +<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> + +<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 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> + <li><a href="#STRING_TABS">String tabs</a> + <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#INTRO_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> +<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. Document 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. +<br> +<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 letter, legal, and A4 printer sheets. 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. +<br> + +<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> + +<!---PAGEWIDTH---> + +<hr width="66%" align="left"> + <a name="PAGEWIDTH"><h3><u>Page width</u></h3></a> +<br> +Macro: <strong>PAGEWIDTH</strong> <var><width of printer sheet></var> +<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> +Macro: <strong>PAGELENGTH</strong> <var><length of printer sheet></var> +<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> +Macro: <strong>PAPER</strong> <var><paper type></var> + +<p> +<strong>PAPER</strong> provides a convenient way to set the page +dimensions for some common printer sheet sizes. <var><paper +type></var> can be one of: +<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> +Macro: <strong>L_MARGIN</strong> <var><left margin></var> +<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. +<br> + +<!---R_MARGIN---> + +<hr width="66%" align="left"> + <a name="R_MARGIN"><h3><u>Right margin</u></h3></a> +<br> +Macro: <strong>R_MARGIN</strong> <var><right margin></var> +<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:</strong> R_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. +<br> + +<!---T_MARGIN---> + +<hr width="66%" align="left"> + <a name="T_MARGIN"><h3><u>Top margin</u></h3></a> +<br> +Macro: <strong>T_MARGIN</strong> <var><top margin></var> +<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 centimeters, 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. +<br> + +<!---B_MARGIN---> + +<hr width="66%" align="left"> + <a name="B_MARGIN"><h3><u>Bottom margin</u></h3></a> +<br> +Macro: <strong>B_MARGIN</strong> <var><bottom margin></var> +<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. +<br> + +<!---PAGE---> + +<hr width="66%" align="left"> + <a name="PAGE"><h3><u>Page</u></h3></a> +<br> +Macro: <strong>PAGE</strong> +<var><width> [ <length> [ <lm> [ <rm> [ <tm> [ <bm> ] ] ] ] ]</var> +<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> <var><lm>, <rm>, <tm></var> +and <var><bm></var> refer to the left, right, top and bottom +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. <var><tm></var> comes after <var><rm></var> +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. +<br> + +<!---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> <strong>NEWPAGE</strong> is an alias of +<strong>.bp</strong>. You can use either, or mix 'n' match with +impunity. +<br> +<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. +<br> + +<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="#PS">PS</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> +Macro: <strong>FAMILY</strong> <var><family></var> +<br> +Alias: <strong>FAM</strong> + +<p> +<strong>FAMILY</strong> takes one argument: the name of the type family +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>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> +</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 to 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. +<p> +<strong>Experts:</strong> +<br> +If you add other PostScript families to groff's /font/devps directory, +be sure to follow 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. +<br> + +<!---FT---> + +<hr width="66%" align="left"> +<a name="FONT"><h3><u>Font</u></h3></a> +<br> +Macro: <strong>FT</strong> <var>R | I | B | BI</var> + +<p> +<strong>FT</strong> takes one of four possible arguments specifying the +desired font: +<table valign="baseline" summary="font"> +<tr><td width="15"><td><strong>R</strong><td> = <td>roman +<tr><td><td><strong>I</strong><td> = <td>italic +<tr><td><td><strong>B</strong><td> = <td>bold +<tr><td><td><strong>BI</strong><td> = <td>bold-italic</td></tr> +</table> +<p> +For example, if your family is Helvetica, entering +<p> +<pre> + .FT B +</pre> + +will give you the Helvetica bold font. If your family were +Palatino, you'd get the Palatino bold font. +<p> +You can specify both family and font in the <strong>FT</strong> macro. +As an example, +<p> +<pre> + .FT HB +</pre> + +sets the font to Helvetica bold. I strongly recommend keeping +family and font separate. +<p> +Fonts can also be changed inline. See +<a href="inlines.html#INLINE_FONTS_MOM">Inline Escapes, font control</a>. +<br> + +<!---PS---> + +<hr width="66%" align="left"> +<a name="PS"><h3><u>Point size of type</u></h3></a> +<br> +Macro: <strong>PS</strong> <var><size of type in points></var> +<br> +<em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em> + +<p> +<strong>PS</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>PS</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> + .PS 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>PS</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> + .PS +2 +</pre> + +then later reset it to 12 with +<p> +<pre> + .PS -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>. +<br> + +<!---LS---> + +<hr width="66%" align="left"> +<a name="LEADING"><h3><u>Line spacing/leading</u></h3></a> +<br> +Macro: <strong>LS</strong> <var><distance between lines></var> +<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>PS</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>. +<br> + +<!---AUTOLEAD---> + +<hr width="66%" align="left"> +<a name="AUTOLEAD"><h3><u>Automatic line spacing</u></h3></a> +<br> +Macro: <strong>AUTOLEAD</strong> <var><amount of automatic leading> [FACTOR]</var> +<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>PS</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>PS</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. +<br> + +<!---LL---> + +<hr width="66%" align="left"> +<a name="LINELENGTH"><h3><u>Line length</u></h3></a> +<br> +Macro: <strong>LL</strong> <var><line length></var> +<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> +<strong>NOTE:</strong> The <a href="#R_MARGIN">right margin +macro</a> (<strong>R_MARGIN</strong>) can also be used to set line +length. +<br> +<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 +(centered). +<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 output 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> + +<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 centered) + </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 centered) + </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 lines</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. +<br> + +<!---QUAD---> + +<hr width="66%" align="left"> +<a name="QUAD"><h3><u>Quad lines left, right, or center</u></h3></a> +<br> +Macro: <strong>QUAD</strong> <var>L | LEFT | R | RIGHT | C | CENTER | J | JUSTIFY</var> +<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 centered +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. +<br> + +<!---LEFT, RIGHT, CENTER---> + +<hr width="66%" align="left"> +<a name="LRC"><h3><u>Set non-filled lines flush left, right, or centered</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. +<br> + +<!---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. +<br> + +<!---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> + +<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> +Every once in a while, the need arises for breaking a line without +advancing on the page. Imagine, for example, 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, rather than calculating the lead that needs +to be added to 12.5 to get 24. To demonstrate: +<p> +<pre> + .LS 12.5 + A line of text. + .EL + .ALD 24p + The next line of text. +</pre> + +may be more instuitive than +<p> +<pre> + .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> +<strong>IMPORTANT:</strong> +<strong>EL</strong> does not work as advertised on the last +<a name="TERMS_OUTPUTLINE">output line</a> +of pages that contain 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>). +The reason is that the <strong>EL</strong> macro itself deposits +a line break that trips the trap (hey, I like that -- +"trips the trap"), and once the trap has been sprung, +<strong>mom</strong> can't recover. She places the line after +the <strong>EL</strong> on the next page. +<p> +If you need <strong>EL</strong> functionality on the last line of +a page with a footer trap, turn the trap off with +<a href="goodies.html#TRAP">TRAP</a>, +as in this example: +<p> +<pre> + 3. + .TRAP OFF + .EL + .TRAP + \*[FP12]Establish, once and for all, if 42 really is the answer. +</pre> + +The above looks something like this upon output: +<p> +<pre> + 3. Establish, once and for all, if 42 really is the answer. +</pre> + +with "3." flush at the left margin, and "Establish, +once and for all..." on the same line as "3." but +starting 12 points in from the left margin. +<p> +If you hadn't turned the trap off for <kbd>.EL</kbd>, +"3." would have appeared at the bottom of the page by +itself, with "Establish, once and for all..." +appearing at the top of the next page. +<br> + +<!---SP---> + +<hr width="66%" align="left"> +<a name="SPACE"><h3><u>Break lines and add space between</u></h3></a> +<br> +Macro: <strong>SPACE</strong> <var><space to add between lines></var> +<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. 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 adds the specified amount of extra space to the current +linespace, as in +<p> +<pre> + .SPACE 6p +</pre> + +which breaks the line then adds six points of space to the current +linespace. + +<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. +<br> + +<!---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. +<br> + +<!---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>. +<br> +<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> +Macro: <strong>WS</strong> <var><+|-wordspace> | DEFAULT</var> + +<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. +<br> + +<!---SS---> + +<hr width="66%" align="left"> +<a name="SS"><h3><u>Sentence space</u></h3></a> +<br> +Macro: <strong>SS</strong> <var><+sentence space> | 0 | DEFAULT</var> + +<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. +<br> + +<!---HY---> + +<hr width="66%" align="left"> +<a name="HY"><h3><u>Automatic hyphenation control</u></h3></a> +<br> +Macro: <strong>HY</strong> <var>toggle</var> +<br> +Macro: <strong>HY</strong> <var>LINES <max. number of consecutive hyphenated lines></var> +<br> +Macro: <strong>HY</strong> <var>MARGIN <size of hyphenation margin></var> +<br> +Macro: <strong>HY</strong> <var>SPACE <extra interword spacing to prevent hyphenation></var> +<br> +Macro: <strong>HY</strong> <var>DEFAULT</var> +<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> + +<p> +<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>, <strong>HY</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> + +<p> +<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> + +<p> +<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> + +<p> +<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>4. HY DEFAULT</u></h3> + +<p> +<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> + +<p> +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 +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. +<br> + +<!---HY_SET---> + +<hr width="66%" align="left"> +<a name="HY_SET"><h3><u>Set hyphenation parameters all at once</u></h3></a> +<br> +Macro: <strong>HY_SET</strong> <var><lines> [ <margin> [ <space> ] ]</var> +<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. +<br> + +<!---RW---> + +<hr width="66%" align="left"> +<a name="RW"><h3><u>Reduce whitespace</u></h3></a> +<br> +Macro: <strong>RW</strong> <var><amount of whitespace reduction between letters></var> +<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> <strong>RW</strong> affects all +<a href="definitions.html#TERMS_FONT">fonts</a> +in the +<a href="definitions.html#TERMS_FAMILY">family</a> +current at the time it's invoked. It must be reset to zero to +cancel its effect (<code>.RW 0</code>) on those fonts, or reinvoked +(possibly with a different value) if you change family. +<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 want +<strong>RW</strong> to break at the ends of the previous +<a href="definitions.html#TERMS_INPUTLINE">input lines</a>, +you can 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. +<br> + +<!---EW---> + +<hr width="66%" align="left"> +<a name="EW"><h3><u>Expand whitespace</u></h3></a> +<br> +Macro: <strong>EW</strong> <var><amount of whitespace expansion between letters></var> +<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>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 want +<strong>EW</strong> to break at the ends of the previous +<a href="definitions.html#TERMS_INPUTLINE">input lines</a>, +you can 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. +<br> + +<!---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> +Macro: <strong>BR_AT_LINE_KERN</strong> <var>toggle</var> +<br> + +<p> +By default, <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 <strong>mom</strong> 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> +<br> + +<!---KERN---> + +<hr width="66%" align="left"> +<a name="KERN"><h3><u>Automatic kerning</u></h3></a> +<br> +Macro: <strong>KERN</strong> <var>toggle</var> +<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#]</strong> and <strong>\*[FU#]</strong>. See +<a href="inlines.html#INLINE_KERNING_MOM">Inline Escapes, kerning</a>. +<br> + +<!---LIGATURES---> + +<hr width="66%" align="left"> +<a name="LIGATURES"><h3><u>Automatic ligature generation</u></h3></a> +<br> +Macro: <strong>LIGATURES</strong> <var>toggle</var> +<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. +<br> +<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-italicising + <li><a href="#SLANT_INLINE">\*[SLANT]</a> -- inline escape for pseudo-italicising 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-italicising</u></h3></a> +<br> +Macro: <strong>SETSLANT</strong> <var><degrees to slant type> | RESET</var> + +<p> +Pseudo-italicising 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-italicising type; it merely tells +<strong>mom</strong> what degree of slant you want. To start +pseudo-italicising, use the +<a href="definitions.html#TERMS_INLINES">inline escape</a> +<strong>\*[SLANT]</strong>. +<br> + +<!---\*[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-italicising 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-italicised, +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>. +<br> + +<!---SETBOLDER---> + +<hr width="66%" align="left"> +<a name="SETBOLDER"><h3><u>Set amount of emboldening</u></h3></a> +<br> +Macro: <strong>SETBOLDER</strong> <var><amount of emboldening, in machine units> | RESET</var> + +<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>. +<br> + +<!---\*[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. +<br> + +<!---CONDENSE---> + +<hr width="66%" align="left"> +<a name="CONDENSE"><h3><u>Set percentage for pseudo-condensed type</u></h3></a> +<br> +Macro: <strong>CONDENSE</strong> <var><pseudo-condense percentage></var> + +<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>. +<br> + +<!---\*[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">PS</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. +<br> + +<!---EXTEND---> + +<hr width="66%" align="left"> +<a name="EXTEND"><h3><u>Set percentage for pseudo-extended type</u></h3></a> +<br> +Macro: <strong>EXTEND</strong> <var><pseudo-extend percentage></var> + +<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 percent 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>. +<br> + +<!---\*[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">PS</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. +<br> +<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> +Macro: <strong>ALD</strong> <var><distance to move downward></var> +<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>. +<br> + +<!---RLD---> + +<hr width="66%" align="left"> + <a name="RLD"><h3><u>Reverse Lead (move upward)</u></h3></a> +<br> +Macro: <strong>RLD</strong> <var><distance to move upward></var> +<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. +<br> +<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. + +<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 multi-column macros, typesetting tabs significantly facilitate +tabular and columnar work. +<p> +Typesetting tabs are created with the <strong>TAB_SET</strong> +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 +<strong>TAB</strong> macro. +<p> +<strong>NOTE:</strong> see the section +<a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a> +for information and advice on using tabs with the +<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>. + +<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 centered. +</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 + .PS 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. + +<a name="STRING_TABS"><h3><u>String tabs (autotabs)</u></h3></a> +<p> +String tabs let you mark off tab positions inline. 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">\*[FP#]</a> +(Forward Points) inline, string tabs provide +tremendous flexibility in setting up complex tab structures. + +<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> +<strong>\*[ST#]</strong> and <strong>\*[ST#X]</strong>. (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]\*[FP12]\*[ST2]EVALUATION\*[ST2X]\*[FP12]\*[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 \*[FP12] + (<strong>F</strong>orward <strong>P</strong>oints 12): + <p> + <kbd>\*[FP12]</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 \*[FP12]: + <p> + <kbd>\*[FP12]</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 utilising string tabs. +<p> +<pre> + .PAGE 8.5i 11i 1i 1i 1i + .FAMILY T + .FT R + .PS 14 + .LS 16 + .QUAD LEFT + .KERN + .HY OFF + .SS 0 + .SILENT + .PAD "\*[ST1]CRITERION\*[ST1X]\*[FP12]\*[ST2]EVALUATION\*[ST2X]\*[FP12]\*[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 (put an additional +<kbd>\*[FP12]</kbd> after each <kbd>\*[FP12]</kbd>). Preview the +file again, and notice how the tab structure remains the same, but +the gutters are wider. + + +<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 typsetting tabs</u></h3></a> +<br> +Macro: <strong>TAB_SET</strong> <var><tab number> <indent> <length> L | R | C | J [ QUAD ]</var> +<br> +Alias: <strong>TS</strong> +<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 centered 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. +<br> + +<!---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> + +<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> +<strong>IMPORTANT:</strong> Do not try to set up string tabs on +a line that is broken with +<a href="#SPREAD">SPREAD</a>. +<strong>Mom</strong> calculates string tab positions and lengths +as she reads the input line, not after the line has undergone +manipulations to the word spacing. +<br> + +<!---ST---> + +<hr width="66%" align="left"> + <a name="ST"><h3><u>Set string tabs</u></h3></a> +<br> +Macro: <strong>ST</strong> <var><tab number> L | R | C | J [ QUAD ]</var> + +<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. +<br> + +<!---TAB---> + +<hr width="66%" align="left"> +<a name="TAB"><h3><u>Call tabs</u></h3></a> +<br> +Macro: <strong>TAB</strong> <var><tab number></var> +<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. +<br> + +<!---TN---> + +<hr width="66%" align="left"> +<a name="TN"><h3><u>Tab Next</u></h3></a> +<br> +Macro: <strong>TN</strong> +<br> + +<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> <strong>TN</strong> is like +<a href="#EL">EL</a> +in that it doesn't work as advertised on the last line before a +footer trap is sprung. If you need to use <strong>TN</strong> +on the last line of a page with a footer trap, turn the trap off with +<a href="goodies.html#TRAP">TRAP</a>, +as in this example: +<p> +<pre> + .TAB_SET 1 0 1P L + .TAB_SET 2 1P 20P L + .TAB 1 + .TRAP OFF + 1. + .TN + The first rule of survival is "make and keep good friends." + .TRAP +</pre> + +The above, at the bottom of a page, will look something like this: +<p> +<pre> + 1. The first rule of survival is "make and keep good friends." +</pre> + +If you hadn't turned the trap off before <kbd>.TN</kbd>, +"1." would have appeared as the last line on the page, +with "The first rule of survival..." being the first +line on the next page. +<br> + +<!---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. +<br> +<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>. + +<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 late 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>. +<br> + +<!---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. +<br> + +<!---MCX---> + +<hr width="66%" align="left"> +<a name="MCX"><h3><u>Exit multi-columns</u></h3></a> +<br> +Macro: <strong>MCX</strong> <var>[ <distance to advance below longest column> ]</var> +<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 <var><distance></var> argument to +<strong>MCX</strong>, it advances 1 linespace below the longest +column (see above) PLUS the distance specified by the argumemnt. +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. +<br> +<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). + +<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>IX</strong> = exit 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> + .IX + 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... + ... + ... + .IX \"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>IX</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>IX 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 afterward to have no +indents (either left or right), you would enter <kbd>.IX</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 idents with the +<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>. + +<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="#IX">IX</a> (Exit indents, all) + <li><a href="#IX">ILX</a> (Exit indent style left) + <li><a href="#IX">IRX</a> (Exit indent style right) + <li><a href="#IX">IBX</a> (Exit indent style both) +</ul> + +<!---IL---> + +<hr width="66%" align="left"> +<a name="IL"><h3><u>Indent left</u></h3></a> +<br> +Macro: <strong>IL</strong> <var>[ <measure> ]</var> +<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 esacpe</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> +automtically turns off <strong>IB</strong>. +<br> + +<!---IR---> + +<hr width="66%" align="left"> +<a name="IR"><h3><u>Indent right</u></h3></a> +<br> +Macro: <strong>IR</strong> <var>[ <measure> ]</var> +<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 esacpe</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> +automtically turns off <strong>IB</strong>. +<br> + +<!---IB---> + +<hr width="66%" align="left"> +<a name="IB"><h3><u>Indent both</u></h3></a> +<br> +Macro: <strong>IB</strong> <var>[ <left measure> <right measure> ]</var> +<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 esacpe</a> +may be used to specify text-dependent measures, in which case +no unit of measure is required. For example, +<p> +<pre> + .IB \w'margaraine' \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> +automtically turns off <strong>IL</strong> and +<strong>IR</strong>. +<br> + +<!---TI---> + +<hr width="66%" align="left"> +<a name="TI"><h3><u>Temporary (left) indent</u></h3></a> +<br> +Macro: <strong>TI</strong> <var>[ <measure> ]</var> +<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. It's 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> +Macro: <strong>HI</strong> <var>[ <measure> ]</var> +<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. + +<a name="NUM_LISTS"><h3><u>A recipe for numbered lists</u></h3></a> +<p> +A common use for hanging indents is setting numbered lists. +Consider the following example: +<p> +<pre> + .PAGE 8.5i 11i 1i 1i 1i 1i + .FAMILY T + .FT R + .PS 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 +afterward 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. +<br> + +<!---IX---> + +<hr width="66%" align="left"> +<a name="IX"><h3><u>Quitting indents</u></h3></a> +<br> +Macro: <strong>IX</strong> <var>[ CLEAR ]</var> (quit any/all indents) +<br> +Macro: <strong>ILX</strong> <var>[ CLEAR ]</var> (quit <strong>IL</strong>) +<br> +Macro: <strong>IRX</strong> <var>[ CLEAR ]</var> (quit <strong>IR</strong>) +<br> +Macro: <strong>IBX</strong> <var>[ CLEAR ]</var> (quit <strong>IB</strong>) + +<p> +Without an argument, the macros to quit indents merely restore your +original left margin 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>IX 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> |