typesetting.html revision 151497
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2<html>
3<head>
4<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
5<title>Mom -- Typesetting Macros</title>
6</head>
7<body bgcolor="#dfdfdf">
8
9<!====================================================================>
10
11<a href="goodies.html#TOP">Next</a>&nbsp;&nbsp;
12<a href="definitions.html#TOP">Prev</a>&nbsp;&nbsp;
13<a href="toc.html">Back to Table of Contents</a>
14<p>
15<a name="TOP"></a>
16<a name="MACROS_TYPESETTING">
17	<h1 align="center"><u>THE TYPESETTING MACROS</u></h1>
18</a>
19
20<a href="#INTRO_MACROS_TYPESETTING">Introduction to the typesetting macros</a>
21<br>
22<ul>
23	<li><strong>PAGE SETUP</strong>
24	<ul>
25		<li><a href="#INTRO_SETUP">Introduction to Page Setup</a>
26		<li><a href="#INDEX_SETUP">List of macros</a>
27	</ul>
28	<li><strong>BASIC TYPESETTING PARAMETERS</strong>
29	<ul>
30		<li><a href="#INTRO_BASIC_PARAMS">Introduction to Basic Parameters</a>
31		<li><a href="#INDEX_BASIC">List of macros</a>
32	</ul>
33	<li><strong>JUSTIFYING, QUADDING, FILLING, BREAKING and JOINING LINES</strong>
34	<ul>
35		<li><a href="#INTRO_JUST_QUAD_FILL">Introduction to justify, quad, fill, break</a>
36		<li><a href="#INDEX_JUST">List of macros</a>
37	</ul>
38	<li><strong>TYPOGRAPHIC REFINEMENTS</strong>
39	<ul>
40		<li><a href="#INTRO_REFINEMENTS">Introduction to typographic refinements</a>
41		<li><a href="#INDEX_REFINEMENTS">List of macros</a>
42	</ul>
43	<li><strong>TYPE MODIFICATIONS -- pseudo italic, bold, condense, extend</strong>
44	<ul>
45		<li><a href="#INTRO_MODIFICATIONS">Introduction to type modifications</a>
46		<li><a href="#INDEX_MODIFICATIONS">List of macros</a>
47	</ul>
48	<li><strong>VERTICAL MOVEMENTS</strong>
49	<ul>
50		<li><a href="#INTRO_ALDRLD">Introduction to vertical movements</a>
51		<li><a href="#INDEX_ALDRLD">List of macros</a>
52	</ul>
53	<li><strong>TABS</strong>
54	<ul>
55		<li><a href="#INTRO_TABS">Introduction to tabs</a>
56		<li><a href="#TYPESETTING_TABS">Typesetting tabs</a>
57		<ul>
58		    <li><a href="#TYPESETTING_TABS_TUT">Quickie tutorial</a>
59		</ul>
60		<li><a href="#STRING_TABS">String tabs</a>
61		<ul>
62		    <li><a href="#STRING_TABS_TUT">Quickie tutorial</a>
63		</ul>
64		<li><a href="#INDEX_TABS">List of macros</a>
65	</ul>
66	<li><strong>MULTI-COLUMNS</strong>
67	<ul>
68		<li><a href="#INTRO_MULTI_COLUMNS">Introduction to multi-columns</a>
69		<li><a href="#INDEX_MULTI_COLUMNS">List of macros</a>
70	</ul>
71	<li><strong>INDENTS</strong>
72	<ul>
73		<li><a href="#INTRO_INDENTS">Introduction to indents</a>
74		<li><a href="#INDEX_INDENTS">List of macros</a>
75	</ul>
76	<li><strong>GOODIES</strong>
77	<ul>
78		<li><a href="goodies.html#GOODIES">Introduction to goodies</a>
79		<li><a href="goodies.html#INDEX_GOODIES">List of macros</a>
80	</ul>
81	<li><strong>INLINE ESCAPES</strong>
82	<ul>
83		<li><a href="inlines.html#INLINE_ESCAPES_INTRO">Introduction to inline escapes</a>
84		<li><a href="inlines.html#INDEX_INLINES">List of inline escapes</a>
85	</ul>
86</ul>
87<p>
88<hr>
89
90<h2><a name="INTRO_MACROS_TYPESETTING"><u>Introduction to the typesetting macros</u></a></h2>
91
92<strong>Mom</strong>'s typesetting macros provide access to
93groff's typesetting capabilities.  Aside from controlling basic
94type parameters (family, font, line length, point size, leading),
95<strong>mom</strong>'s macros fine-tune wordspacing, letterspacing,
96kerning, hyphenation, and so on.  In addition, <strong>mom</strong>
97has true typesetting tabs, string tabs, multiple indent styles,
98line padding, and a batch of other goodies.
99<p>
100In some cases, <strong>mom</strong>'s typesetting macros merely imitate
101groff primitives.  In others, they approach typesetting concerns in
102conceptually new ways (for groff, at least).  This should present no
103problem for newcomers to groff who are learning <strong>mom</strong>.
104Old groff hands should be careful.  Just because it looks like a
105duck and walks like a duck does not, in this instance, mean that it
106is a duck.  When using <strong>mom</strong>, stay away from groff
107primitives if <strong>mom</strong> provides a macro that accomplishes
108the same thing.
109<p>
110<strong>Mom</strong>'s typesetting macros can be used as a standalone
111package, independent of the
112<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
113With them, you can typeset on-the-fly.  Book covers, your best
114friend's r�sum�, a poster for a lost dog--none of these requires
115structured document processing (page headers, paragraphs, heads,
116footnotes, etc).  What they do demand is precise control over every
117element on the page.  The typesetting macros give you that control.
118<p>
119<hr>
120
121<!====================================================================>
122
123<a name="INTRO_SETUP"></a>
124
125<a name="PAGE_MARGINS">
126	<h2><u>Page setup: paper size and page margins</u></h2>
127</a>
128
129The page setup macros establish the physical dimensions of your
130page and the margins you want it to have.  <strong>Groff</strong>
131has defaults for these, but I recommend setting them at the top
132of your files anyway unless you're using <strong>mom</strong>'s
133<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
134and are content with her defaults.
135<p>
136The
137<a href="#PAPER">PAPER</a>
138macro provides a shortcut for setting the page to the correct dimensions
139for a number of well-known, established paper sizes.  The
140<a href="#PAGE">PAGE</a>
141macro provides a convenient way of setting the page dimensions and
142some or all of the page margins with a single macro.
143<p>
144
145<a name="INDEX_SETUP">
146	<h3><u>Page setup macros list</u></h3>
147</a>
148
149<ul>
150	<li><a href="#PAGEWIDTH">PAGEWIDTH</a> (page width)
151	<li><a href="#PAGELENGTH">PAGELENGTH</a> (page length)
152	<li><a href="#PAPER">PAPER</a> (common paper sizes)
153	<li><a href="#L_MARGIN">L_MARGIN</a> (left margin)
154	<li><a href="#R_MARGIN">R_MARGIN</a> (right margin)
155	<li><a href="#T_MARGIN">T_MARGIN</a> (top margin)
156	<li><a href="#B_MARGIN">B_MARGIN</a> (bottom margin)
157	<li><a href="#PAGE">PAGE</a> (page dimensions and margins all in one fell swoop)
158	<li><a href="#NEWPAGE">NEWPAGE</a> (start a new page)
159</ul>
160<p>
161
162<!---PAGEWIDTH--->
163
164<hr width="66%" align="left">
165	<a name="PAGEWIDTH"><h3><u>Page width</u></h3></a>
166<br>
167<nobr>Macro: <strong>PAGEWIDTH</strong> &lt;width of printer sheet&gt;</nobr>
168<br>
169<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
170
171<p>
172The argument to <strong>PAGEWIDTH</strong> is the width of your
173printer sheet.  <strong>PAGEWIDTH</strong> requires a unit of measure.
174Decimal fractions are allowed.  Hence, to tell <strong>mom</strong>
175the width of your printer sheet is 8-1/2 inches, you enter
176<p>
177<pre>
178	.PAGEWIDTH 8.5i
179</pre>
180
181<!---PAGELENGTH--->
182
183<hr width="66%" align="left">
184	<a name="PAGELENGTH"><h3><u>Page length</u></h3></a>
185<br>
186<nobr>Macro: <strong>PAGELENGTH</strong> &lt;length of printer sheet&gt;</nobr>
187<br>
188<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
189
190<p>
191<strong>PAGELENGTH</strong> tells <strong>mom</strong> how long your
192printer sheet is.  It works just like
193<strong>PAGEWIDTH</strong>.  Therefore, to tell
194<strong>mom</strong> your printer sheet is 11 inches long, you
195enter
196<p>
197<pre>
198	.PAGELENGTH 11i
199</pre>
200
201<!---PAPER--->
202
203<hr width="66%" align="left">
204	<a name="PAPER"><h3><u>Paper</u></h3></a>
205<br>
206<nobr>Macro: <strong>PAPER</strong> &lt;paper type&gt;</nobr>
207
208<p>
209<strong>PAPER</strong> provides a convenient way to set the page
210dimensions for some common printer sheet sizes.  <nobr>&lt;paper
211type&gt; can be one of:</nobr>
212<p>
213<pre>
214	LETTER
215	LEGAL
216	STATEMENT
217	TABLOID
218	LEDGER
219	FOLIO
220	QUARTO
221	10x14
222	EXECUTIVE
223	A3
224	A4
225	A5
226	B4
227	B5 
228</pre>
229
230Say, for example, you have A4-sized sheets in your printer.
231It's shorter (and easier) to enter
232<p>
233<pre>
234	.PAPER A4
235</pre>
236
237than to remember the correct dimensions and enter
238<p>
239<pre>
240	.PAGEWIDTH  595p
241	.PAGELENGTH 842p
242</pre>
243
244<!---L_MARGIN--->
245
246<hr width="66%" align="left">
247	<a name="L_MARGIN"><h3><u>Left margin</u></h3></a>
248<br>
249<nobr>Macro: <strong>L_MARGIN</strong> &lt;left margin&gt;</nobr>
250<br>
251<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
252
253<p>
254<strong>L_MARGIN</strong> establishes the distance from the left edge
255of the printer sheet at which you want your type to start.  It may
256be used any time, and remains in effect until you enter a new value.
257<p>
258<a href="#IL">Left indents</a>
259and
260<a href="#TABS">tabs</a>
261are calculated from the value you pass to <strong>L_MARGIN</strong>,
262hence it's always a good idea to invoke it before starting any serious
263typesetting.  A unit of measure is required.  Decimal fractions are
264allowed.  Therefore, to set the left margin at 3 picas (1/2 inch),
265you'd enter either
266<p>
267<pre>
268	.L_MARGIN 3P
269	&nbsp;&nbsp;or
270	.L_MARGIN .5i
271</pre>
272
273If you use the macros
274<a href="#PAGE">PAGE</a>,
275<a href="#PAGEWIDTH">PAGEWIDTH</a>
276or
277<a href="#PAPER">PAPER</a>
278without invoking <strong>L_MARGIN</strong> (either before
279or afterwards), <strong>mom</strong> automatically sets
280</strong>L_MARGIN</strong> to 1 inch.
281<p>
282<strong>NOTE:</strong> L_MARGIN behaves in a special way when you're
283using the
284<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
285See
286<a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
287for an explanation.
288<p>
289
290<!---R_MARGIN--->
291
292<hr width="66%" align="left">
293	<a name="R_MARGIN"><h3><u>Right margin</u></h3></a>
294<br>
295<nobr>Macro: <strong>R_MARGIN</strong> &lt;right margin&gt;</nobr>
296<br>
297<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
298
299<p>
300<strong>R_MARGIN</strong> establishes the amount of space you
301want between the end of typeset lines and the right hand edge
302of the printer sheet.  In other words, it sets the line length.
303<strong>R_MARGIN</strong> requires a unit of measure.  Decimal
304fractions are allowed.
305<p>
306The <a href="#LINELENGTH">line length macro</a> (<strong>LL</strong>) can
307be used in place of <strong>R_MARGIN</strong>.  In either case, the
308last one invoked sets the line length.  The choice of which to use is
309up to you.  In some instances, you may find it easier to think of a
310section of type as having a right margin.  In others, giving a line
311length may make more sense.
312<p>
313For example, if you're setting a page of type you know should have
3146-pica margins left and right, it makes sense to enter a left and
315right margin, like this:
316<p>
317<pre>
318	.L_MARGIN 6P
319	.R_MARGIN 6P
320</pre>
321
322That way, you don't have to worry about calculating the line
323length.  On the other hand, if you know the line length for a
324patch of type should be 17 picas and 3 points, entering the line
325length with <strong>LL</strong> is much easier than calculating the
326right margin.
327<p>
328<pre>
329	.LL 17P+3p
330</pre>
331
332If you use the macros
333<a href="#PAGE">PAGE</a>,
334<a href="#PAGEWIDTH">PAGEWIDTH</a>
335or
336<a href="#PAPER">PAPER</a>
337without invoking <strong>R_MARGIN</strong> afterwards,
338<strong>mom</strong> automatically sets <strong>R_MARGIN</strong>
339to 1 inch.  If you set a line length after these macros (with
340<a href="#LINELENGTH">LL</a>),
341the line length calculated by <strong>R_MARGIN</strong> is, of course,
342overridden.
343<p>
344<strong>IMPORTANT: R_MARGIN</strong>, if used, MUST come after
345<a href="#PAPER">PAPER</a>,
346<a href="#PAGEWIDTH">PAGEWIDTH</a>,
347<a href="#L_MARGIN">L_MARGIN</a>
348and/or
349<a href="#PAGE">PAGE</a>
350(if a right margin isn't given to <strong>PAGE</strong>).
351The reason is that <strong>R_MARGIN</strong> calculates line
352length from the overall page dimensions and the left margin.
353Obviously, it can't make the calculation if it doesn't know the page
354width and the left margin.
355<p>
356<strong>NOTE: R_MARGIN</strong> behaves in a special way
357when you're using the
358<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
359See
360<a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
361for an explanation.
362<p>
363
364<!---T_MARGIN--->
365
366<hr width="66%" align="left">
367	<a name="T_MARGIN"><h3><u>Top margin</u></h3></a>
368<br>
369<nobr>Macro: <strong>T_MARGIN</strong> &lt;top margin&gt;</nobr>
370<br>
371<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
372
373<p>
374<strong>T_MARGIN</strong> establishes the distance from the top of
375the printer sheet at which you want your type to start.  It requires
376a unit of measure, and decimal fractions are allowed.  To set a top
377margin of 2-1/2 centimetres, you'd enter
378<p>
379<pre>
380	.T_MARGIN 2.5c
381</pre>
382
383<strong>T_MARGIN</strong> calculates the vertical position of the
384first line of type on a page by treating the top edge of the printer
385sheet as a <a href="definitions.html#TERMS_BASELINE">baseline</a>.  Therefore,
386<p>
387<pre>
388	.T_MARGIN 1.5i
389</pre>
390
391puts the baseline of the first line of type 1-1/2 inches beneath
392the top of the page.
393<p>
394<strong>IMPORTANT:</strong> <strong>T_MARGIN</strong> does two
395things: it establishes the top margin for pages that come after
396it AND it moves to that position on the current page.  Therefore,
397<strong>T_MARGIN</strong> should only be used at the top of a file
398(prior to entering text) or after
399<a href="#NEWPAGE">NEWPAGE</a>,
400like this:
401<p>
402<pre>
403	.NEWPAGE
404	.T_MARGIN 6P
405	&lt;text&gt;
406</pre>
407
408<strong>NOTE:</strong> <strong>T_MARGIN</strong> means something
409slightly different when you're using the
410<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
411See
412<a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>
413for an explanation.
414<p>
415
416<!---B_MARGIN--->
417
418<hr width="66%" align="left">
419	<a name="B_MARGIN"><h3><u>Bottom margin</u></h3></a>
420<br>
421<nobr>Macro: <strong>B_MARGIN</strong> &lt;bottom margin&gt;</nobr>
422<br>
423<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
424
425<p>
426<strong>B_MARGIN</strong> sets a nominal position at the bottom
427of the page beyond which you don't want your type to go.  When the
428bottom margin is reached, <strong>mom</strong> starts a new page.
429<strong>B_MARGIN</strong> requires a unit of measure.  Decimal
430fractions are allowed.  To set a nominal bottom margin of 3/4 inch,
431enter
432<p>
433<pre>
434	.B_MARGIN .75i
435</pre>
436
437Obviously, if you haven't spaced the type on your pages so that
438the last lines fall perfectly at the bottom margin, the margin will
439vary from page to page.  Usually, but not always, the last line of
440type that fits on a page <em>before</em> the bottom margin causes
441<strong>mom</strong> to start a new page.
442<p>
443Occasionally, owing to a peculiarity in <strong>groff</strong>,
444an extra line will fall below the nominal bottom margin.  If you're
445using the
446<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>,
447this is unlikely to happen; the document processing macros are very
448hard-nosed about aligning bottom margins.
449<p>
450<strong>NOTE:</strong> The meaning of <strong>B_MARGIN</strong> is
451slightly different when you're using the document processing macros.
452See
453<a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>
454for an explanation.
455<p>
456
457<!---PAGE--->
458
459<hr width="66%" align="left">
460	<a name="PAGE"><h3><u>Page</u></h3></a>
461<br>
462Macro: <strong>PAGE</strong>
463<nobr>&lt;width&gt;&nbsp;[ &lt;length&gt; [ &lt;lm&gt; [ &lt;rm&gt; [ &lt;tm&gt; [ &lt;bm&gt; ] ] ] ] ]</nobr>
464<br>
465<em>*All arguments require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
466
467<p>
468<strong>PAGE</strong> lets you establish paper dimensions and page
469margins with a single macro.  The only required argument is page width.
470The rest are optional, <strong>but they must appear in order and you can't
471skip over any.</strong>  <nobr>&lt;lm&gt;, &lt;rm&gt;, &lt;tm&gt;</nobr>
472and <nobr>&lt;bm&gt; refer to the left, right, top and bottom</nobr>
473margins respectively.
474<p>
475Assuming your page dimensions are 11 inches by 17 inches, and that's
476all you want to set, enter
477<p>
478<pre>
479	.PAGE 11i 17i
480</pre>
481
482If you want to set the left margin as well, say, at 1 inch,
483<strong>PAGE</strong> would look like this:
484<p>
485<pre>
486	.PAGE 11i 17i 1i
487</pre>
488
489Now suppose you also want to set the top margin, say, at 1-1/2
490inches.  <nobr>&lt;tm&gt; comes after <nobr>&lt;rm&gt;</nobr></nobr>
491in the optional arguments, but you can't skip over any arguments,
492therefore to set the top margin, you must also give a right margin.
493The <strong>PAGE</strong> macro would look like this:
494<p>
495<pre>
496        .PAGE 11i 17i 1i 1i 1.5i
497                         |   |
498        required right___|   |___top margin
499                margin
500</pre>
501
502Clearly, <strong>PAGE</strong> is best used when you want a convenient
503way to tell <strong>mom</strong> just the dimensions of your printer
504sheet (width and length), or when you want to tell her everything
505about the page (dimensions and all the margins), for example
506<p>
507<pre>
508	.PAGE 8.5i 11i 45p 45p 45p 45p
509</pre>
510
511This sets up an 8-1/2 by 11 inch page with margins of 45 points
512(5/8-inch) all around.
513<p>
514<strong>NOTE:</strong> Only use <strong>PAGE</strong> at the
515start of a document, before entering any text.  And remember,
516when you're using the
517<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>,
518top margin and bottom margin mean something slightly different than
519when you're  using just the typesetting macros (see
520<a href="typemacdoc.html#TB_MARGINS">Top and bottom margins in document processing</a>).
521<p>
522Additionally, if you invoke <strong>PAGE</strong> with a top margin
523argument, any macros you invoke after <strong>PAGE</strong> will
524almost certainly move the
525<a href="definitions.html#TERMS_BASELINE">baseline</a>
526of the first line of text down by one linespace.  To compensate, do
527<p>
528<pre>
529	.RLD 1v
530</pre>
531
532immediately before entering any text, or, if it's feasible, make
533<strong>PAGE</strong> the last macro you invoke prior to entering text.
534<p>
535
536<!---NEWPAGE--->
537
538<hr width="66%" align="left">
539<a name="NEWPAGE"><h3><u>Start a new page</u></h3></a>
540<br>
541Macro: <strong>NEWPAGE</strong>
542
543<p>
544Whenever you want to start a new page, use <strong>NEWPAGE</strong>, by
545itself with no argument.  <strong>Mom</strong> will finish up
546processing the current page and move you to the top of a new one
547(subject to the top margin set with
548<a href="#T_MARGIN">T_MARGIN</a>.
549<p>
550<strong>Experts:</strong> Prior to version 1.1.9,
551<strong>NEWPAGE</strong> was simply an alias of
552<strong>.bp</strong>.  As of 1.1.9, <strong>NEWPAGE</strong>,
553is its own <strong>mom</strong> macro.  While the new macro
554should be backwardly compatible with documents created using
555pre-1.1.9 <strong>mom</strong>s, I suggest that from this version
556onward, if you were in the habit of using <strong>.bp</strong>
557whenever you wanted to break to a new page, you now begin to use
558<strong>NEWPAGE</strong> instead.
559<p>
560<hr>
561
562<!====================================================================>
563
564<a name="INTRO_BASIC_PARAMS"></a>
565
566<a name="BASIC_PARAMS">
567	<h2><u>Basic Typesetting Parameters</u></h2>
568</a>
569
570Basic parameter macros deal with the fundamental requirements
571for setting type: family, font, point size, leading and line length.
572<p>
573If you're using the typesetting macros only, the arguments passed
574to the basic parameter macros remain in effect until you change them.
575The document processing macros handle things differently.  See
576<a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
577for an explanation.
578<p>
579
580<a name="INDEX_BASIC"><h3><u>Basic parameter macros list</u></h3></a>
581<ul>
582	<li><a href="#FAMILY">FAMILY</a> (type family)
583	<li><a href="#FONT">FONT</a> (font)
584	<li><a href="#FALLBACK_FONT">FALLBACK_FONT</a> (for invalid fonts)
585	<li><a href="#PS">PT_SIZE</a> (point size of type)
586	<li><a href="#LEADING">LS</a> (line spacing/leading)
587	<li><a href="#AUTOLEAD">AUTOLEAD</a> (automatic line spacing)
588	<li><a href="#LINELENGTH">LL</a> (line length)
589</ul>
590
591<!---FAMILY--->
592
593<hr width="66%" align="left">
594<a name="FAMILY"><h3><u>Type family</u></h3></a>
595<br>
596<nobr>Macro: <strong>FAMILY</strong> &lt;family&gt;</nobr>
597<br>
598Alias: <strong>FAM</strong>
599
600<p>
601<strong>FAMILY</strong> takes one argument: the name of the
602<a href="definitions.html#TERMS_FAMILY">family</a>
603you want.  Groff comes with a number of PostScript families, each
604identified by a 1-, 2- or 3-letter mnemonic.  The standard families
605are:
606<table valign="baseline" summary="family">
607<tr><td width="15"><td><strong>A</strong><td>Avant Garde
608<tr><td><td><strong>BM</strong> <td>Bookman
609<tr><td><td><strong>H</strong><td>Helvetica
610<tr><td><td><strong>HN</strong><td>Helvetica Narrow
611<tr><td><td><strong>N</strong><td>New Century Schoolbook
612<tr><td><td><strong>P</strong><td>Palatino
613<tr><td><td><strong>T</strong><td>Times Roman</td></tr>
614<tr><td><td><strong>ZCM</strong><td>Zapf Chancery</td></tr>
615</table>
616<p>
617The argument you pass to <strong>FAMILY</strong> is the identifier at
618left, above.  For example, if you want Helvetica, enter
619<p>
620<pre>
621	.FAMILY H
622</pre>
623
624<strong>NOTE:</strong> The
625<a href="#FONT">font macro</a>
626(<strong>FT</strong>) lets you specify both the type family
627and the desired font with a single macro.  While this saves a few
628keystrokes, I recommend using <strong>FAMILY</strong> for family,
629and <strong>FT</strong> for font, except where doing so is genuinely
630inconvenient. <strong>ZCM</strong>, for example, only exists in one
631style: Italic (<strong>I</strong>).  Therefore, <kbd>.FT ZCMI</kbd>
632makes more sense than setting the family to &quot;ZCM&quot;, then
633setting the font to &quot;I&quot;.
634<p>
635<a name="FAM_ADD_NOTE"></a>
636<strong>ADDITIONAL NOTE:</strong> As of <strong>mom, version
6371.1.9-a</strong>, if you are running a version of groff lower
638than 1.19.2, you <em>MUST</em> follow all <strong>FAMILY</strong>
639requests with a <strong>FT</strong> request, otherwise
640<strong>mom</strong> will set all type up to the next
641<strong>FT</strong> request in the
642<a href="#FALLBACK_FONT">fallback font</a>.
643<p>
644If you are running a version of groff greater than or equal
645to 1.19.2, when you invoke the <strong>FAMILY</strong> macro,
646<strong>mom</strong> &quot;remembers&quot; the font style (Roman,
647Italic, etc) currently in use (if the font style exists in the new
648family) and will continue to use the same font style in the new
649family.  For example:
650<p>
651<pre>
652	.FAMILY BM   \" Bookman family
653	.FT     I    \" Medium Italic
654	&lt;some text&gt;  \" Bookman Medium Italic
655	.FAMILY H    \" Helvetica family
656	&lt;more text&gt;  \" Helvetica Medium Italic
657</pre>
658
659However, if the font style does not exist in the new family,
660<strong>mom</strong> will set all subsequent type in the
661<a href="#FALLBACK_FONT">fallback font</a>
662(by default, Courier Medium Roman) until she encounters a
663<a href="#FONT">.FT</a>
664request that's valid for the family.  For example, assuming
665you don't have the font &quot;Medium Condensed Roman&quot;
666(<strong>mom</strong> extension &quot;<strong>CD</strong>&quot;)
667in the Helvetica family:
668<p>
669<pre>
670	.FAMILY UN    \" Univers family
671	.FT     CD    \" Medium Condensed
672	&lt;some text&gt;   \" Univers Medium Condensed
673	.FAMILY H     \" Helvetica family
674	&lt;more text&gt;   \" Courier Medium Roman!
675</pre>
676
677In the above example, you must follow <kbd>.FAMILY H</kbd> with a
678<strong>FT</strong> request that's valid for Helvetica.
679<p>
680<strong>Experts:</strong>
681<br>
682If you add other PostScript families to groff's /font/devps directory,
683I recommend following the groff standard for naming families and fonts.
684For example, if you add the Garamond family, name the font files
685<p>
686<pre>
687	GARAMONDR
688	GARAMONDI
689	GARAMONDB
690	GARAMONDBI
691</pre>
692
693GARAMOND then becomes a legal family name you can pass to
694<strong>FAMILY</strong>.  (You could, of course, shorten GARAMOND to just
695G, or GD.)  R, I, B, and BI after GARAMOND are the roman, italic,
696bold and bold-italic fonts respectively.
697<p>
698Please see the Appendices,
699<a href="appendices.html#FONTS">Adding PostScript fonts to groff</a>,
700for information on adding fonts and families to groff, as well as
701to see a list of the extensions <strong>mom</strong> provides to
702groff's basic <strong>R, I, B, BI</strong> styles.
703<p>
704
705<!---FT--->
706
707<hr width="66%" align="left">
708<a name="FONT"><h3><u>Font</u></h3></a>
709<br>
710<nobr>Macro: <strong>FT</strong> R | I | B | BI | &lt;any other valid font style&gt;</nobr>
711
712<p>
713By default, groff permits <strong>FT</strong> to take one of four
714possible arguments specifying the desired font:
715<table valign="baseline" summary="font">
716<tr><td width="15"><td><strong>R</strong><td> = <td>(Medium) Roman
717<tr><td><td><strong>I</strong><td> = <td>(Medium) Italic
718<tr><td><td><strong>B</strong><td> = <td>Bold (Roman)
719<tr><td><td><strong>BI</strong><td> = <td>Bold Italic</td></tr>
720</table>
721<p>
722For example, if your
723<a href="definitions.html#TERMS_FAMILY">family</a>
724is Helvetica, entering
725<p>
726<pre>
727	.FT B
728</pre>
729
730will give you the Helvetica bold
731<a href="definitions.html#TERMS_FONT">font</a>.
732If your family were Palatino, you'd get the Palatino bold font.
733<p>
734(As of <strong>mom, version 1.1.9-a,</strong> the range of arguments
735that can be passed to <strong>FT</strong> has been considerably
736extended, allowing access to a greater variety of font
737<a href="definitions.html#TERMS_WEIGHT">weights</a>
738and
739<a href="definitions.html#TERMS_SHAPE">shapes</a>.
740Please see the
741<a href="#FONT_NOTE">NOTE</a>,
742below.)
743<p>
744How <strong>mom</strong> reacts to an invalid argument to
745<strong>FT</strong> depends on which version of groff you're using.
746If your groff version is greater than or equal to 1.19.2,
747<strong>mom</strong> will issue a warning and, depending on how
748you've set up the
749<a href="#FALLBACK_FONT">fallback font</a>,
750either continue processing using the fallback font, or abort
751(allowing you to correct the problem).  If your groff version is less
752than 1.19.2, <strong>mom</strong> will silently continue processing,
753using either the fallback font or the font that was in effect prior
754to the invalid <strong>FT</strong> call.
755<p>
756<strong>FT</strong> will also accept, as an argument, a full
757family+font name.  For example,
758<p>
759<pre>
760	.FT HB
761</pre>
762
763will set subsequent type in Helvetica Bold.  However, I strongly
764recommend keeping family and font separate except where doing so is
765genuinely inconvenient.
766<p>
767For inline control of fonts, see
768<a href="inlines.html#INLINE_FONTS_MOM">Inline Escapes, font control</a>.
769<p>
770<a name="FONT_NOTE"></a>
771<strong>NOTE: mom, versions 1.1.9-a</strong> and higher,
772considerably extends the range of arguments you can pass to
773<strong>FT</strong>, making it more convenient to add and access
774fonts of differing
775<a href="definitions.html#TERMS_WEIGHT">weights</a>
776and
777<a href="definitions.html#TERMS_SHAPE">shapes</a>
778within the same family.  Have a look
779<a href="appendices.html#STYLE_EXTENSIONS">here</a>
780for a list of the weight/style arguments <strong>mom</strong>
781allows.
782<p>
783Be aware, though, that you must have the fonts, correctly
784installed and named, in order to use the arguments.  (See
785<a href="appendices.html#HOWTO">How to create a PostScript font for use with groff</a>
786for how to add fonts to groff.)  Please also read the
787<a href="#FAM_ADD_NOTE">ADDITIONAL NOTE</a>
788found in the description of the <strong>FAMILY</strong> macro.
789<p>
790
791<!---FALLBACK_FONT--->
792
793<hr width="66%" align="left">
794<a name="FALLBACK_FONT"><h3><u>Fallback font</u></h3></a>
795<br>
796<nobr>Macro: <strong>FALLBACK_FONT</strong> &lt;fallback font&gt; [ ABORT | WARN ] | ABORT | WARN</nobr>
797
798<p>
799In the event that you pass an invalid argument to
800<a href="#FONT">.FAMILY</a>
801(i.e. a non-existent family), <strong>mom</strong>, by default, uses
802the fallback font, Courier Medium Roman (CR), in order to continue
803processing your file.
804<p>
805If you'd prefer another fallback font, pass
806<strong>FALLBACK_FONT</strong> the <strong>full family+font name
807of the font you'd like</strong>.  For example, if you'd rather the
808fallback font were Times Roman Medium Roman,
809
810<pre>
811	.FALLBACK_FONT TR
812</pre>
813<p>
814would do the trick.
815<p>
816Additionally, if your version of groff accepts accepts &quot;if
817F&quot; and &quot;if S&quot; (see
818<a href="#FAM_ADD_NOTE">above</a>),
819<strong>mom</strong> issues a warning whenever a
820<strong>font style</strong> set with
821<a href="#FONT">.FT</a>
822does not exist, either because you haven't registered the style
823(see
824<a href="appendices.html#REGISTER_STYLE">here</a>
825for instructions on registering styles), or because the font style
826does not exist in the current family set with
827<a href="#FAMILY">.FAMILY</a>.
828By default, <strong>mom</strong> then aborts, which allows you to
829correct the problem.
830<p>
831If you'd prefer that <strong>mom</strong> not abort on non-existent
832fonts, but rather continue processing using a fallback font,
833you can pass <strong>FALLBACK_FONT</strong> the argument
834<strong>WARN</strong>, either by itself, or in conjunction with your
835chosen fallback font.
836<p>
837<strong>Some examples of invoking FALLBACK_FONT:</strong>
838<br>
839<ul>
840	<li><kbd>.FALLBACK_FONT WARN</kbd>
841		<br>
842		<strong>mom</strong> will issue a warning whenever you try
843		to access a non-existent font but will continue processing
844		your file with the default fallback font, Courier Medium Roman.
845	<li><kbd>.FALLBACK_FONT TR WARN</kbd>
846		<br>
847		<strong>mom</strong> will issue a warning whenever you try
848		to access a non-existent font but will continue processing
849		your file with a fallback font of Times Roman Medium Roman;
850		additionally, &quot;TR&quot; will be the fallback font whenever
851		you try to access a <strong>family</strong> that does not exist.
852	<li><kbd>.FALLBACK_FONT TR ABORT</kbd>
853		<br>
854		<strong>mom</strong> will abort whenever you try to access a
855		non-existent font, and will use the fallback font
856		&quot;TR&quot; whenever you try to access a <strong>family</strong>
857		that does not exist.
858</ul>
859<p>
860If, for some reason, you want to revert to ABORT, just enter
861<kbd>.FALLBACK_FONT ABORT</kbd> and <strong>mom</strong> will once
862again abort on font errors.
863<p>
864
865<!---PT_SIZE--->
866
867<hr width="66%" align="left">
868<a name="PS"><h3><u>Point size of type</u></h3></a>
869<br>
870<nobr>Macro: <strong>PT_SIZE</strong> &lt;size of type in points&gt;</nobr>
871<br>
872<em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
873
874<p>
875<strong>PT_SIZE</strong> (Point Size) takes one argument: the size of type
876in points.  Unlike most other macros that establish the size or measure
877of something, <strong>PT_SIZE</strong> does not require that you supply a
878unit of measure since it's a near universal convention that type size
879is measured in points.  Therefore, to change the type size to, say,
88011 points, enter
881<p>
882<pre>
883	.PT_SIZE 11
884</pre>
885
886Point sizes may be fractional (e.g.  10.25 or 12.5).
887<p>
888You can prepend a plus or a minus sign to the argument to
889<strong>PT_SIZE</strong>, in which case the point size will be changed by +
890or - the original value.  For example, if the point size is 12,
891and you want 14, you can do
892<p>
893<pre>
894	.PT_SIZE +2
895</pre>
896
897then later reset it to 12 with
898<p>
899<pre>
900	.PT_SIZE -2
901</pre>
902
903The size of type can also be changed inline.  See
904<a href="inlines.html#INLINE_SIZE_MOM">Inline Escapes, changing point size</a>.
905<p>
906<strong>NOTE:</strong> It is unfortunate that the <kbd>pic</kbd>
907pre-processor uses <strong>PS</strong>, and thus
908<strong>mom</strong>'s macro for setting point sizes can't use it.
909However, if you aren't using <kbd>pic</kbd>, you might want to
910alias <strong>PT_SIZE</strong> as <strong>PS</strong>, since
911there'd be no conflict.
912<p>
913<pre>
914	.ALIAS PS PT_SIZE
915</pre>
916
917would allow you to set point sizes with <kbd>.PS</kbd>.
918<p>
919
920<!---LS--->
921
922<hr width="66%" align="left">
923<a name="LEADING"><h3><u>Line spacing/leading</u></h3></a>
924<br>
925<nobr>Macro: <strong>LS</strong> &lt;distance between lines&gt;</nobr>
926<br>
927<em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
928
929<p>
930<strong>LS</strong> (Line Space) takes one argument: the distance you want, typically
931in points, from baseline to baseline of type.  The argument may
932be fractional (e.g. 12.25 or 14.5).  Like <strong>PT_SIZE</strong>,
933<strong>LS</strong> does not require a unit of measure, since
934<a href="definitions.html#TERMS_LEADING">leading</a>
935is most often given in points.  Therefore, to set the linespace to
93614 points, you would enter
937<p>
938<pre>
939	.LS 14
940</pre>
941
942However, if you wish, you may specify a unit of measure by appending
943it directly to the argument passed to <strong>LS</strong>.  For example,
944if you want a linespace of 1/4 of an inch, enter
945<p>
946<pre>
947	.LS .25i
948</pre>
949
950You can prepend a plus or a minus sign to the argument to
951<strong>LS</strong>, in which case the line spacing will be changed
952by + or - the original value.  For example, if the line spacing is
95314 points, and you want 17 points, you can do
954<p>
955<pre>
956	.LS +3
957</pre>
958
959then later reset it to 14 points with
960<p>
961<pre>
962	.LS -3
963</pre>
964
965<strong>Experts:</strong>
966<br>
967<strong>LS</strong> should not be confused with the groff primitive
968<strong>ls</strong>.  <strong>LS</strong> acts like <strong>vs</strong>.
969<strong>mom</strong> does not provide a macro analogous to
970<strong>ls</strong>.
971<p>
972
973<!---AUTOLEAD--->
974
975<hr width="66%" align="left">
976<a name="AUTOLEAD"><h3><u>Automatic line spacing</u></h3></a>
977<br>
978<nobr>Macro: <strong>AUTOLEAD</strong> &lt;amount of automatic leading&gt; [FACTOR]</nobr>
979<br>
980<em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
981
982<p>
983Without the <strong>FACTOR</strong> argument, <strong>AUTOLEAD</strong>
984calculates the linespace for you by adding its argument to the
985current point size of type. All subsequent <strong>PT_SIZE</strong>
986requests automatically update the linespacing by the autolead amount.
987<p>
988Used in this way, <strong>AUTOLEAD</strong> does not require a unit
989of measure; points is assumed.  However, you may use an alternate
990unit of measure by appending it to the argument.  The argument may
991be a decimal fraction (e.g. .5 or 2.75).
992<p>
993As an example, if your current point size of type is 12, entering
994<p>
995<pre>
996	.AUTOLEAD 2
997</pre>
998
999changes the linespace to 14 points, regardless any linespacing
1000already in effect.  From here on, every change to the size of type
1001(with <strong>PT_SIZE</strong>, not
1002<a href="definitions.html#TERMS_INLINES">inline</a>)
1003changes the linespace as well.  If you decrease the type size to 9
1004points, the leading decreases to 11 points.  If you increase the type
1005size to 16 points, the leading increases to 18 points.
1006<p>
1007Automatic updating of the linespacing continues until you enter a
1008&quot;manual&quot; line space value with <strong>LS</strong>.
1009<p>
1010If you give <strong>AUTOLEAD</strong> the optional
1011<strong>FACTOR</strong> argument, <strong>AUTOLEAD</strong>
1012calculates the line space as a factor of the
1013<a href="definitions.html#TERMS_NUMERICARGUMENT">numeric argument</a>
1014you gave <strong>AUTOLEAD</strong>.  For example, if your point
1015size is 12,
1016<p>
1017<pre>
1018	.AUTOLEAD 1.125 FACTOR
1019</pre>
1020sets the leading at 13.5 points.  If you change the point size
1021to 14, the leading automatically changes to 15.75 (14 x 1.125).
1022<p>
1023<strong>NOTE:</strong> There's no need to prepend a plus sign (+)
1024to <strong>AUTOLEAD</strong>'s argument, although you may do so if you
1025wish.
1026<p>
1027
1028<!---LL--->
1029
1030<hr width="66%" align="left">
1031<a name="LINELENGTH"><h3><u>Line length</u></h3></a>
1032<br>
1033<nobr>Macro: <strong>LL</strong> &lt;line length&gt;</nobr>
1034<br>
1035<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
1036
1037<p>
1038<strong>LL</strong> (Line Length) takes one argument: the distance from the
1039left margin of the page to the maximum allowable point on the
1040right at which groff should place type.  The line length, in
1041other words, as the macro suggests.
1042<p>
1043<strong>LL</strong> requires a unit of measure.  Therefore, to set the line
1044length to 39 picas, you would enter
1045<p>
1046<pre>
1047	.LL 39P
1048</pre>
1049
1050As with other macros that require a unit of measure, the argument to
1051<strong>LL</strong> may be fractional.  For example,
1052<p>
1053<pre>
1054	.LL 4.5i
1055</pre>
1056
1057sets the line length to 4-1/2 inches.
1058
1059<p>
1060Additionally, you may express a new line length relative to the
1061current line length by prepending a plus or minus sign to the
1062argument.  Thus, if you wanted to increase the line length by 3
1063<a href="definitions.html#TERMS_PICASPOINTS">points</a>, you could
1064do
1065<p>
1066<pre>
1067	.LL +3p
1068</pre>
1069
1070This is especially handy when you want to &quot;hang&quot;
1071punctuation outside the right margin since you can pass groff's
1072<a href="inlines.html#INLINE_STRINGWIDTH_GROFF"><strong>\w</strong></a>
1073escape as the argument to <strong>LL</strong>, like this:
1074<p>
1075<pre>
1076	.LL +\w'.'u
1077</pre>
1078
1079The above example increases the current line length by the width of
1080a period.  Notice that you must append the
1081<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>,
1082<strong>u</strong>, to the escape since .LL requires a unit of
1083measure.
1084
1085<p>
1086<strong>NOTE:</strong> The <a href="#R_MARGIN">right margin
1087macro</a> (<strong>R_MARGIN</strong>) can also be used to set line
1088length.
1089<p>
1090<hr>
1091
1092<!====================================================================>
1093
1094<a name="INTRO_JUST_QUAD_FILL"></a>
1095
1096<a name="JUST_QUAD_FILL">
1097	<h2><u>Justifying, quadding, filling and breaking lines</u></h2>
1098</a>
1099
1100The justification and quadding macros deal with how type aligns along
1101the left and right margins.  In a nutshell, type either aligns at the
1102left margin, at the right margin, at both margins, or at neither margin
1103(centred).
1104<p>
1105These macros also determine whether or not
1106<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
1107are joined and
1108<a href="definitions.html#TERMS_FILLED">filled</a>
1109during output.
1110<p>
1111Additionally, macros that deal with how to break
1112<a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>
1113are covered in this section, as is the
1114<a href="definitions.html#TERMS_INLINES">inline escape</a>
1115for joining input lines.
1116<p>
1117You may encounter some words here that are unfamiliar.  Refer to
1118<a href="definitions.html#TERMS_TYPESETTING">Typesetting terms</a>
1119and
1120<a href="definitions.html#TERMS_GROFF">Groff terms</a>
1121for an explanation.
1122
1123<a name="INDEX_JUST"><h3><u>Justification, quad, fill, and break macro list</u></h3></a>
1124<p>
1125<ul>
1126	<li><strong>Fill modes</strong>
1127	<ul>
1128		<li><a href="#JUSTIFY">JUSTIFY</a> (set lines justified)
1129		<li><a href="#QUAD">QUAD</a> (set filled lines flush left, right or centred)
1130	</ul>
1131	<li><strong>Nofill modes</strong>
1132	<ul>
1133		<li><a href="#LRC">LEFT</a> (set non-filled lines flush left)
1134		<li><a href="#LRC">RIGHT</a> (set non-filled lines flush right)
1135		<li><a href="#LRC">CENTER</a> (set non-filled lines centred)
1136	</ul>
1137	<li><strong>Breaking lines</strong>
1138	<ul>
1139		<li><a href="#BR">BR</a> (manually break an output line)
1140		<li><a href="#EL">EL</a> (break a line without advancing to the next output line)
1141		<li><a href="#SPACE">SPACE</a> (break a line and add space before the next output line)
1142		<li><a href="#SPREAD">SPREAD</a> (break and force-justify an output line)
1143	</ul>
1144	<li><strong>Joining input lines in
1145	<a href="definitions.html#TERMS_NOFILL">nofill mode</a></strong>
1146	<ul>
1147		<li><a href="#JOIN">\c</a> inline escape
1148	</ul>
1149</ul>
1150
1151<!---JUSTIFY--->
1152
1153<hr width="66%" align="left">
1154<a name="JUSTIFY"><h3><u>Justify lines</u></h3></a>
1155<br>
1156Macro: <strong>JUSTIFY</strong>
1157<br>
1158<a href="definitions.html#TERMS_FILLED"><em>Fill mode</em></a>
1159
1160<p>
1161<strong>JUSTIFY</strong> doesn't take an argument. 
1162<a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
1163after <strong>JUSTIFY</strong> are
1164<a href="definitions.html#TERMS_FILLED">filled</a> and
1165<a href="definitions.html#TERMS_JUST">justified</a>
1166upon output.
1167<p>
1168To break lines and prevent them from being filled and justified,
1169use the
1170<a href="#BR">BR</a> macro.
1171<p>
1172
1173<!---QUAD--->
1174
1175<hr width="66%" align="left">
1176<a name="QUAD"><h3><u>Quad lines left, right, or centre</u></h3></a>
1177<br>
1178<nobr>Macro: <strong>QUAD</strong> L | LEFT | R | RIGHT | C | CENTER | J | JUSTIFY</nobr>
1179<br>
1180Alias: <strong>FILL</strong>
1181<br>
1182<a href="definitions.html#TERMS_FILLED"><em>Fill mode</em></a>
1183
1184<p>
1185<strong>QUAD</strong> takes one argument: the direction in which lines
1186should be
1187<a href="definitions.html#TERMS_QUAD">quadded</a>.
1188<a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
1189after <strong>QUAD</strong> are 
1190<a href="definitions.html#TERMS_FILLED">filled</a>
1191upon output.
1192<p>
1193If <strong>L</strong> or <strong>LEFT</strong>, type is set flush
1194along the left margin.
1195<p>
1196If <strong>R</strong> or <strong>RIGHT</strong>, type is
1197set flush along the right margin.
1198<p>
1199If <strong>C</strong> or <strong>CENTER</strong> type is set centred
1200on the current line length.
1201<p>
1202<strong>J</strong> and <strong>JUSTIFY</strong> justify text,
1203and are included as a convenience only.  Obviously, if text is
1204justified, it isn't quadded.  <strong>QUAD J</strong> and
1205<strong>QUAD JUSTIFY</strong> have exactly the same effect as <a
1206href="#JUSTIFY">JUSTIFY</a>.
1207<p>
1208To break lines and prevent them from being filled, use the
1209<a href="#BR">BR</a> macro.
1210<p>
1211
1212<!---LEFT, RIGHT, CENTER--->
1213
1214<hr width="66%" align="left">
1215<a name="LRC"><h3><u>Set non-filled lines flush left, right, or centred</u></h3></a>
1216<br>
1217Macro: <strong>LEFT</strong>
1218&nbsp;&nbsp;Macro: <strong>RIGHT</strong>
1219&nbsp;&nbsp;Macro: <strong>CENTER</strong>
1220&nbsp;(alias <strong>CENTRE</strong>)
1221<br>
1222<a href="definitions.html#TERMS_NOFILL"><em>Nofill mode</em></a>
1223
1224<p>
1225<strong>LEFT</strong>, <strong>RIGHT</strong> and
1226<strong>CENTER</strong> let you enter text on a line for line basis
1227without having to use the
1228<a href="#BR">BR</a> macro after each line.
1229Consider the following:
1230<p>
1231<pre>
1232	.QUAD LEFT
1233	So runs my dream, but what am I?
1234	.BR
1235	An infant crying in the night
1236	.BR
1237	An infant crying for the light
1238	.BR
1239	And with no language but a cry.
1240	.BR
1241</pre>
1242
1243Because text after <strong>QUAD</strong> is
1244<a href="definitions.html#TERMS_FILLED">filled</a>, you have to use the
1245<a href="#BR">BR</a>
1246macro to prevent the lines from running together.  Not only is this
1247annoying to type, it's awkward to read in a text editor.  Much better
1248to do
1249<p>
1250<pre>
1251	.LEFT
1252	So runs my dream, but what am I?
1253	An infant crying in the night
1254	An infant crying for the light
1255	And with no language but a cry.
1256</pre>
1257
1258<strong>IMPORTANT:</strong> Because <strong>LEFT</strong>,
1259<strong>RIGHT</strong> and <strong>CENTER</strong> are nofill
1260modes, groff does not always respect the current line length.
1261<a href="definitions.html#TERMS_INPUTLINE">Input lines</a>
1262that run long may exceed it, or get broken in undesirable ways.
1263Therefore, when using these three macros, you should preview your
1264work to ensure that all lines fit as expected.
1265<p>
1266
1267<!---BR--->
1268
1269<hr width="66%" align="left">
1270<a name="BR"><h3><u>Manually break lines</u></h3></a>
1271<br>
1272Macro: <strong>BR</strong>
1273
1274<p>
1275When using <strong>JUSTIFY</strong> or <strong>QUAD</strong>,
1276<strong>BR</strong> tells <strong>mom</strong> about partial lines
1277that you want broken (as opposed to
1278<a href="definitions.html#TERMS_FILLED">filled</a>).
1279Any partial
1280<a href="definitions.html#TERMS_OUTPUTLINE">output line</a>
1281that immediately precedes <strong>BR</strong> will be
1282<a href="definitions.html#TERMS_QUAD">quadded</a>
1283in the direction of the current quad, or set flush left if text is
1284<a href="definitions.html#TERMS_JUST">justified</a>.
1285
1286<p>
1287Most of the time, you won't need the <strong>BR</strong> macro.
1288In fill modes, <strong>mom</strong> tries to be sensible about
1289where breaks are needed.  If the nature of a macro is such that under
1290most circumstances you'd expect a break, <strong>mom</strong> puts
1291it in herself.  Equally, in macros where a break isn't normally
1292desirable, no break occurs.  This means text files don't get cluttered
1293with annoying <strong>BR</strong>'s.
1294<p>
1295<strong>NOTE:</strong> Lines of text in
1296<a href="definitions.html#TERMS_NOFILL">nofill mode</a>
1297never require a <strong>BR</strong>.  Furthermore, in nofill mode,
1298ALL macros cause a break.  If a break is not desired, use the
1299<a href="#JOIN">\c</a>
1300<a href="definitions.html#TERMS_INLINES">inline escape</a>.
1301
1302<p>
1303<strong>Experts: BR</strong> is an alias for <strong>br</strong>.
1304You can use either, or mix 'n' match with impunity.
1305<p>
1306
1307<!---EL--->
1308
1309<hr width="66%" align="left">
1310<a name="EL"><h3><u>Manually break a line without advancing on the page</u></h3></a>
1311<br>
1312Macro: <strong>EL</strong>
1313<br>
1314<em>*In nofill modes (LEFT, RIGHT, CENTER), you must terminate the
1315line input preceding EL with the </em><kbd>\c</kbd><em> inline
1316escape.  See
1317<a href="#EL_NOTES">NOTES</a>,
1318below.
1319<br>
1320*If you find remembering whether to put in the <kbd>\c</kbd>
1321bothersome, you may prefer to use the
1322<a href="definitions.html#TERMS_INLINES">inline escape</a>
1323alternative to 
1324<kbd>.EL</kbd>,
1325<a href="inlines.html#B">\*[B]</a>,
1326which works consistently regardless of the fill mode.
1327<br>
1328*EL does not work after the PAD macro.
1329See
1330<a href="goodies.html#PAD">PAD</a>
1331for the way around this</em>.
1332<p>
1333The mnemonic "EL" is borrowed from old Compugraphic typesetting
1334systems, where it stood for "End Line."  Conceptually,
1335<strong>EL</strong> is equivalent to the notion of a carriage return
1336with no linefeed.
1337
1338<p>
1339<em>Note to groff jocks:</em> <strong>EL</strong> is
1340unrelated to groff's <strong>.el</strong>.  If you find the
1341similarity confusing, you may want to alias <strong>EL</strong> as
1342something else (but don't use <strong>EOL</strong>; it's already
1343taken.)
1344
1345<p>
1346<strong>EL</strong>'s function is simple: it breaks a line without
1347advancing on the page.
1348<a name="EL_EXAMPLE">As</a>
1349an example of where you might use it,
1350imagine that you're working from marked-up copy.  The markup
1351indicates 24 points of space between two given lines, but the
1352prevailing line spacing is 12.5 points.  You may find it more
1353convenient to break the first line with <strong>EL</strong> and
1354instruct <strong>mom</strong> to advance 24 points to the next line
1355instead of calculating the lead that needs to be added to 12.5 to
1356get 24.  To demonstrate:
1357<p>
1358<pre>
1359	.LEFT
1360	.LS 12.5
1361	A line of text.\c
1362	.EL
1363	.ALD 24p
1364	The next line of text.
1365</pre>
1366
1367may be more intuitive than
1368<p>
1369<pre>
1370	.LEFT
1371	.LS 12.5
1372	A line of text.
1373	.ALD 11.5p
1374	The next line of text.
1375</pre>
1376
1377The first example has the further advantage that should you wish
1378to change the prevailing line space but keep the 24 points lead,
1379you don't have to recalculate the extra space.
1380<p>
1381"ALD" in the above examples stands for "<strong>A</strong>dvance
1382<strong>L</strong>ea<strong>D</strong>" (another mnemonic borrowed
1383from Compugraphic), which is covered in the section
1384<a href="#ALDRLD">Vertical movement</a>.
1385<p>
1386<a name="EL_NOTES"><strong>NOTES:</strong></a>
1387<p>
1388In versions of mom prior to 1.1.9, <strong>EL</strong> did not
1389always work as advertised on the last
1390<a name="TERMS_OUTPUTLINE">output line</a>
1391of pages that contained a footer trap (e.g. one set with
1392<a href="#B_MARGIN">B_MARGIN</a>
1393or in  documents formatted using the
1394<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>).
1395<p>
1396<strong>EL</strong> has been re-written so that this should no longer be the
1397case.  However, in order for it to work in the
1398<a href="definitions.html#TERMS_NOFILL">nofill</a>
1399modes
1400(<a href="#LRC">LEFT</a>,
1401<a href="#LRC">RIGHT</a>
1402or
1403<a href="#LRC">CENTER</a>),
1404you must always &quot;join&quot; <strong>.EL</strong> to the line
1405before it using the
1406<a href="#JOIN">\c</a>
1407<a href="definitions.html#TERMS_INLINES">inline escape</a>,
1408like this:
1409<p>
1410<pre>
1411	.LEFT
1412	A line I don't want to advance\c
1413	.EL
1414</pre>
1415
1416Conversely, in
1417<a href="definitions.html#TERMS_FILLED">fill modes</a>
1418(<a href="#QUAD">QUAD LEFT</a>,
1419<a href="#QUAD">QUAD RIGHT</a>,
1420<a href="#QUAD">QUAD CENTER</a>
1421or
1422<a href="#JUSTIFY">JUSTIFY</a>),
1423the <strong>\c</strong> must not be used.
1424<p>
1425If <strong>EL</strong> is used after most macros or groff
1426<a href="definitions.html#TERMS_PRIMITIVES">primitives</a>
1427(see the exception, below), you don't have to worry about this,
1428regardless of the fill mode.  Just type <kbd>.EL</kbd>
1429<br>
1430
1431<!---SP--->
1432
1433<hr width="66%" align="left">
1434<a name="SPACE"><h3><u>Break lines and add space between</u></h3></a>
1435<br>
1436<nobr>Macro: <strong>SPACE</strong> &lt;space to add between lines&gt;</nobr>
1437<br>
1438Alias: <strong>SP</strong>
1439
1440<p>
1441<strong>SPACE</strong> breaks a line, just like
1442<strong>BR</strong>, then adds space after the line.  With no
1443argument, it adds an extra line space of a value equal to the
1444current
1445<a href="definitions.html#TERMS_LEADING">leading</a>.
1446If you pass it a numeric argument without supplying a
1447<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>,
1448it advances that number of extra line spaces.  For example:
1449<p>
1450<pre>
1451	.SPACE
1452</pre>
1453
1454breaks the line then adds an extra linespace, whereas
1455<p>
1456<pre>
1457	.SPACE 2
1458</pre>
1459
1460breaks the line and adds two extra linespaces.
1461
1462<p>
1463If you supply a unit of measure, <strong>SPACE</strong> breaks the
1464line then advances one linespace (at the current
1465<a href="definitions.html#TERMS_LEADING">leading</a>)
1466PLUS the specified amount of extra space given to
1467<strong>SPACE</strong>,
1468as in
1469<p>
1470<pre>
1471	.SPACE 6p
1472</pre>
1473
1474which breaks the line and advances one full linespace plus six
1475points.
1476
1477<p>
1478<strong>SUGGESTION: SPACE</strong> and
1479<a href="#ALD">ALD</a>
1480can be used interchangeably (<code>.SPACE&nbsp;6p</code> and
1481<code>.ALD&nbsp;6p</code> are equivalent).  However,
1482<strong>ALD</strong> without an argument does nothing, whereas
1483<strong>SPACE</strong> without an argument adds an extra line
1484space.  I recommend using <strong>SPACE</strong> when you
1485want an extra line space (or multiple thereof), and
1486<strong>ALD</strong> whenever you want some other value of space
1487after a line.
1488
1489<p>
1490<strong>Experts: SPACE</strong> is an alias of <strong>sp</strong>.
1491You can use either, or mix 'n' match with impunity.
1492<p>
1493
1494<!---SPREAD--->
1495
1496<hr width="66%" align="left">
1497<a name="SPREAD"><h3><u>Break and force justify (spread) lines</u></h3></a>
1498<br>
1499Macro: <strong>SPREAD</strong>
1500
1501<p>
1502Sometimes, you need to break a line of
1503<a href="definitions.html#TERMS_JUST">justified</a>
1504text and have it come out fully justified, not
1505<a href="definitions.html#TERMS_QUAD">quadded</a>
1506left the way it would be with the <strong>BR</strong> macro.
1507An example of where you'd do this would be when you want to prevent a
1508word at the end of a line from being hyphenated (say, a proper name).
1509<strong>SPREAD</strong> is the macro that lets you break the line
1510and have it came out fully justified.
1511
1512<p>
1513<strong>Experts: SPREAD</strong> is an alias for <strong>brp</strong>.
1514You can use either, or mix 'n' match with impunity.
1515<p>
1516
1517<!---JOIN--->
1518
1519<hr width="66%" align="left">
1520<a name="JOIN"><h3><u>Join input lines</u></h3></a>
1521<br>
1522Inline: <strong>\c</strong>
1523
1524<p>
1525Sometimes, especially when in one of the
1526<a href="definitions.html#TERMS_NOFILL">nofill modes</a>,
1527a macro will cause a break where you don't want one.  In order
1528to prevent this from happening (in other words, to join
1529<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
1530together, forming one
1531<a href="definitions.html#TERMS_OUTPUTLINE">output line</a>),
1532use the groff
1533<a href="definitions.html#TERMS_INLINES">inline escape</a>
1534<strong>\c</strong> at the end of each input line to
1535be joined to another, like this:
1536<p>
1537<pre>
1538	.LEFT
1539	.FAMILY T
1540	.FT R
1541	Some lines of text to be \c
1542	.FAMILY H
1543	.FT B
1544	joined \c
1545	.FAMILY T
1546	.FT R
1547	together.
1548</pre>
1549
1550Upon output, the lines will be joined together to read
1551<p>
1552<pre>
1553	Some lines of text to be joined together.
1554</pre>
1555
1556with the word &quot;joined&quot; in Helvetica bold.  Note the
1557space before <strong>\c</strong>.  Without it, the last three
1558words of the output line would read
1559<p>
1560<pre>
1561	bejoinedtogether
1562</pre>
1563
1564Please also note that had the example been in one of the
1565<a href="definitions.html#TERMS_FILLED">fill modes</a>,
1566there'd have been no need for the <strong>\c</strong>.  
1567<p>
1568<strong>Addendum:</strong> The example, above, is designed to
1569demonstrate the use of <strong>\c</strong>.  However, an easier and
1570more intuitive way to accomplish the family/font change in the
1571example would be with the groff
1572<a href="definitions.html#TERMS_INLINES">inline escape</a>,
1573<a href="inlines.html#INLINE_FONTS_GROFF">\f</a>.
1574<p>
1575<pre>
1576	Some lines of text to be \f[HB]joined\*[PREV] together.
1577</pre>
1578<p>
1579<hr>
1580
1581<!====================================================================>
1582
1583<a name="INTRO_REFINEMENTS"></a>
1584
1585<a name="REFINEMENTS">
1586	<h2><u>Typographic refinements</u></h2>
1587</a>
1588
1589The macros in this section help you tweak groff's behaviour,
1590ensuring that your documents look typographically professional.
1591<br>
1592
1593<a name="INDEX_REFINEMENTS">
1594	<h3><u>Typographic refinements macro list</u></h3>
1595</a>
1596<ul>
1597	<li><strong>Word and sentence spacing</strong>
1598	<ul>
1599		<li><a href="#WS">WS</a> (word spacing)
1600		<li><a href="#SS">SS</a> (sentence space)
1601	</ul>
1602	<li><strong>Letter spacing (track kerning)</strong>
1603	<ul>
1604		<li><a href="#RW">RW</a> (reduce whitespace)
1605		<li><a href="#EW">EW</a> (expand whitespace)
1606		<li><a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
1607	</ul>
1608	<li><strong>Hyphenation</strong>
1609	<ul>
1610		<li><a href="#HY">HY</a> (turn auto hyphenation on/off, or set specific hyphenation parameters)
1611		<li><a href="#HY_SET">HY_SET</a> (set all hyphenation parameters)
1612	</ul>
1613	<li><strong>Automatic kerning and ligatures</strong>
1614	<ul>
1615		<li><a href="#KERN">KERN</a> (turn automatic pairwise kerning on or off)
1616		<li><a href="#LIGATURES">LIGATURES</a> (turn automatic generation of ligatures on or off)
1617	</ul>
1618</ul>
1619
1620<!---WS--->
1621
1622<hr width="66%" align="left">
1623<a name="WS"><h3><u>Word spacing</u></h3></a>
1624<br>
1625<nobr>Macro: <strong>WS</strong> &lt;+|-wordspace&gt; | DEFAULT</nobr>
1626
1627<p>
1628<strong>WS</strong> (Word Space) increases or decreases the amount
1629of space between words.  In
1630<a href="definitions.html#TERMS_NOFILL">nofill modes</a>,
1631or if
1632<a href="#QUAD">QUAD</a>
1633is in effect, the space between words is fixed.  Therefore, if you
1634change the word spacing with <strong>WS</strong>, the change applies
1635uniformly to the space between every word on every line.  However,
1636when text is
1637<a href="definitions.html#TERMS_JUST">justified</a>,
1638the space between words varies from line to line (in order to justify
1639the text).  Consequently, the change you make with <strong>WS</strong>
1640represents the minimum (and ideal) space groff will try to put between
1641words before deciding whether to hyphenate a final word or to stretch
1642the word spacing.
1643
1644<p>
1645Word space is relative to type size.  Knowing how it's calculated is
1646unimportant. What matters is having a sense of how the value passed
1647to <strong>WS</strong> affects the look of your type.  Generally,
1648in/decreasing the word space by a value of 1 or 2 produces a difference
1649that in many cases is scarcely visible; in/decreasing by a value of 5
1650or so produces a subtle but noticeable difference; and in/decreasing
1651by a value greater than 10 is always apparent.  You should preview
1652your work to assess the effect of <strong>WS</strong>.
1653
1654<p>
1655<a name="WS_USAGE"><strong>WS</strong></a>
1656takes as its argument a whole number preceded by a plus or minus sign.
1657Therefore, to decrease the word space slightly, you might enter
1658<p>
1659<pre>
1660	.WS -4
1661</pre>
1662
1663To increase it by a noticeable amount, you might enter
1664<p>
1665<pre>
1666	.WS +12
1667</pre>
1668
1669You can reset the word spacing to its previous value by switching
1670the plus or minus sign, like this:
1671<p>
1672<pre>
1673	.WS +4
1674	A line of text
1675	.WS -4
1676</pre>
1677
1678The <code>.WS -4</code> undoes the effect of <code>.WS
1679+4</code>.  You can also reset <strong>WS</strong> to
1680its groff default by entering
1681<p>
1682<pre>
1683	.WS DEFAULT
1684</pre>
1685
1686This can be particularly useful if you've been playing around
1687with plus and minus values, and can't remember by how much you
1688have to in/decrease the word space to get it back to normal.
1689<p>
1690
1691<!---SS--->
1692
1693<hr width="66%" align="left">
1694<a name="SS"><h3><u>Sentence space</u></h3></a>
1695<br>
1696<nobr>Macro: <strong>SS</strong> &lt;+sentence space&gt; | 0 | DEFAULT</nobr>
1697
1698<p>
1699<strong>SS</strong> (Sentence Space) tells groff how to treat double
1700spaces it encounters between sentences in
1701<a href="definitions.html#TERMS_INPUTLINE">input lines</a>.
1702If you use <strong>SS</strong>, input sentences with two spaces
1703after them AND input sentences that fall at the end of input lines
1704all receive a normal word space plus an additional amount of space
1705whose size is determined by the + value passed as an argument to
1706<strong>SS</strong>.  Thus,
1707<p>
1708<pre>
1709	.SS +2
1710</pre>
1711
1712means that input sentences with two spaces after them receive a normal
1713word space PLUS the +2 value passed to <strong>SS</strong>.
1714<p>
1715Like
1716<strong>WS</strong>, increasing the sentence space by a value of
17171 or 2 produces a difference that in many cases is scarcely visible;
1718increasing by a value of 5 or so produces a subtle but noticeable
1719difference (i.e. the space between double-spaced input sentences will
1720be slightly but visibly greater than the space between words); and
1721increasing by a value greater than 10 is always apparent.  You should
1722preview your work to assess the effect of <strong>SS</strong>.
1723<p>
1724There's an additional argument you can pass <strong>SS</strong>:
1725the number zero (without the + sign).  It's the argument you'll
1726use most often.  Typeset copy should never have two spaces between
1727sentences, and the "zero" argument tells groff to give the extra
1728spaces no space at all (effectively removing them).  Therefore,
1729if you double-space your sentences (as you should when writing in a
1730text editor), get in the habit of putting
1731<p>
1732<pre>
1733	.SS 0
1734</pre>
1735
1736at the top of your files.
1737
1738<p>
1739If you do use <strong>SS</strong> for something other than ensuring
1740that you don't get unwanted sentence spaces in output copy, you
1741can set or reset the sentence space to the groff default (the same
1742width as a word space, i.e. double-spaced input sentences will appear
1743double-spaced on output as well) with
1744<p>
1745<pre>
1746	.SS DEFAULT
1747</pre>
1748
1749If you're using the
1750<a href="docprocessing.html">document processing macros</a>
1751and your
1752<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE</a>
1753is <strong>TYPEWRITE</strong>, <code>.SS DEFAULT</code> is the default,
1754because you <em>do</em> want double spaces between sentences in copy
1755that imitates the look of a typewritten document.
1756<p>
1757<strong>IMPORTANT: SS</strong> with an argument other than
1758&quot;0&quot; should only be used if you're of the old (and wise)
1759school of typists that puts two spaces between sentences.  If you
1760ignore this advice and use <strong>SS</strong> when you habitually
1761put only one space between sentences, you risk producing output where
1762the space between sentences is not equal.
1763<p>
1764
1765<!---HY--->
1766
1767<hr width="66%" align="left">
1768<a name="HY"><h3><u>Automatic hyphenation control</u></h3></a>
1769<br>
1770<nobr>Macro: <strong>HY</strong> toggle</nobr>
1771<br>
1772<nobr>Macro: <strong>HY</strong> LINES &lt;max. number of consecutive hyphenated lines&gt;</nobr>
1773<br>
1774<nobr>Macro: <strong>HY</strong> MARGIN &lt;size of hyphenation margin&gt;</nobr>
1775<br>
1776<nobr>Macro: <strong>HY</strong> SPACE &lt;extra interword spacing to prevent hyphenation&gt;</nobr>
1777<br>
1778<nobr>Macro: <strong>HY</strong> DEFAULT</nobr>
1779<br>
1780Aliases: <strong>HYPHENATE, HYPHENATION</strong>
1781
1782<p>
1783<strong>HY</strong>, as you can see, can be invoked with a number of
1784arguments.  In all cases, the aliases <strong>HYPHENATE</strong>
1785or <strong>HYPHENATION</strong> can be used in place of
1786<strong>HY</strong>.  To aid in understanding the various arguments
1787you can pass to <strong>HY</strong>, I've broken them down into
1788separate sections.
1789
1790<h3><u>1. HY</u></h3>
1791<strong>HY</strong> by itself (i.e. with no argument) simply turns
1792automatic hyphenation on.  Any argument other than <strong>LINES,
1793MARGIN, SPACE</strong> or <strong>DEFAULT</strong>, turns automatic
1794hyphenation off.  For example, as explained in
1795<a href="intro.html#MACRO_ARGS">How to read macro arguments</a>,
1796you could turn <strong>HY</strong> off by entering
1797<p>
1798<pre>
1799	.HY OFF
1800	   or
1801	.HY X
1802	   or
1803	.HY END
1804</pre>
1805
1806<strong>HY</strong> observes the following default hyphenation rules:
1807<br>
1808<ol>
1809	<li>Last lines (i.e. ones that will spring a trap--typically
1810	the last line on a page) will not be hyphenated.
1811	<li>The first and last two characters of a word are never
1812	split off.
1813</ol>
1814
1815<h3><u>2. HY LINES</u></h3>
1816<strong>HY LINES</strong> sets the maximum number of consecutive
1817hyphenated lines that will appear in output copy.  2 is a very
1818good choice, and you'd set it with
1819<p>
1820<pre>
1821	.HY LINES 2
1822</pre>
1823
1824By default, when you turn automatic hyphenation on, there is no
1825limit to the number of consecutive hyphenated lines.
1826
1827<p>
1828<strong>NOTE:</strong>
1829<a href="definitions.html#TERMS_DISCRETIONARYHYPHEN">Discretionary hyphens</a>
1830count when groff is figuring out how many lines to hyphenate;
1831explicit hyphens do not.
1832
1833<h3><u>3. HY MARGIN</u></h3>
1834<strong>HY MARGIN</strong> sets the amount of room allowed at
1835the end of a line before hyphenation is tripped (e.g. if there's
1836only 6 points left at the end of a line, groff won't try to hyphenate
1837the next word).  <strong>HY MARGIN</strong> only applies if you're
1838using
1839<a href="#QUAD">QUAD</a>, and is really only useful if you're
1840using <strong>QUAD LEFT</strong>.
1841
1842<p>
1843As an example, if you don't want groff to hyphenate words when there's
1844only 18 points of space left at the end of a left-quadded line,
1845you'd enter
1846<p>
1847<pre>
1848	.HY MARGIN 18p
1849</pre>
1850
1851<strong>NOTE:</strong> The numeric argument after <strong>HY
1852MARGIN</strong> requires a
1853<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
1854
1855<h3><u>4. HY SPACE</u></h3>
1856<strong>HY SPACE</strong> sets an amount of extra interword
1857space that groff will <em>try</em> to put between words on a
1858line in order to PREVENT hyphenation.  <strong>HY SPACE</strong>
1859applies only to
1860<a href="definitions.html#TERMS_JUST">justified lines</a>.  Generally speaking,
1861you'll want this value to be quite small, since too big a value
1862will result in lines with gaping holes between the words.  A reasonable
1863value might be half a point, or one point, which you'd set with
1864<p>
1865<pre>
1866	.HY SPACE .5p
1867	    or
1868	.HY SPACE 1p
1869</pre>
1870
1871<strong>NOTE:</strong> The numeric argument after <strong>HY
1872SPACE</strong> requires a
1873<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
1874
1875<h3><u>5. HY DEFAULT</u></h3>
1876<strong>HY DEFAULT</strong> resets automatic hyphenation to its
1877default behaviour, cancelling any changes made with <strong>LINES,
1878MARGIN,</strong> and/or <strong>SPACE</strong>.
1879
1880<h3><u>A note on hyphenation in general</u></h3>
1881Hyphenation is a necessary evil.  If it can be avoided, it should be.
1882If it can't be, it should occur infrequently.  That's the reason for
1883the number of parameters you can set with <strong>HY</strong>.
1884
1885<p>
1886Furthermore, hyphenation in
1887<a href="definitions.html#TERMS_RAG">rag</a>
1888copy requires a great deal of attention.  At best, it should be
1889avoided completely by individually adjusting the number of words
1890on consecutive lines to achieve a pleasing, natural-looking rag.  
1891Since such adjustments are often too fussy for document
1892processing, I recommend playing around with <strong>HY MARGIN</strong>
1893a bit if your copy looks hyphen-heavy.
1894<p>
1895
1896<!---HY_SET--->
1897
1898<hr width="66%" align="left">
1899<a name="HY_SET"><h3><u>Set hyphenation parameters all at once</u></h3></a>
1900<br>
1901<nobr>Macro: <strong>HY_SET</strong> &lt;lines&gt; [ &lt;margin&gt; [ &lt;space&gt; ] ]</nobr>
1902<br>
1903Alias: <strong>HYSET</strong>
1904
1905<p>
1906<strong>HY_SET</strong> lets you set the parameters for hyphenation
1907with a single macro.  &lt;lines&gt;, &lt;margin&gt; and &lt;space&gt;
1908correspond to the numeric values required by
1909<strong>LINES</strong>, <strong>MARGIN</strong> and
1910<strong>SPACE</strong> as described
1911<a href="#HY">above</a>.
1912
1913<p>
1914To set just the maximum number of consecutive hyphenated lines,
1915you'd enter
1916<p>
1917<pre>
1918	.HY_SET 2
1919</pre>
1920
1921If you wanted the same number of maximum consecutive hyphenated lines
1922and a hyphenation margin for use with
1923<a href="definitions.html#TERMS_RAG">rag</a>
1924copy,
1925<p>
1926<pre>
1927	.HY_SET 2 36p
1928</pre>
1929
1930would set the hyphenation margin to 36 points.
1931
1932<p>
1933If you wanted the same number of maximum consecutive hyphenated
1934lines and a hyphenation space of 2 points for use with
1935<a href="definitions.html#TERMS_JUST">justified</a>
1936copy, 
1937<p>
1938<pre>
1939	.HYSET 2 0 2p
1940</pre>
1941
1942is how you'd do it.
1943<p>
1944
1945<!---RW--->
1946
1947<hr width="66%" align="left">
1948<a name="RW"><h3><u>Reduce whitespace</u></h3></a>
1949<br>
1950<nobr>Macro: <strong>RW</strong> &lt;amount of whitespace reduction between letters&gt;</nobr>
1951<br>
1952
1953<p>
1954<strong>RW</strong> (Reduce Whitespace) and its corresponding macro,
1955<strong>EW</strong> (Expand Whitespace), allow you to tighten
1956(or loosen)
1957<a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>
1958by uniformly reducing or expanding the space between characters.
1959This is particularly useful when you want to squeeze or stretch
1960lines on a narrow measure.
1961
1962<p>
1963The value passed to <strong>RW</strong> may be a whole number or a
1964decimal fraction.  Since a value of 1 produces a noticeable reduction
1965in the space between letters at text sizes, you'll most likely use
1966small decimal values when tightening lines.  For example,
1967<p>
1968<pre>
1969	.RW .1
1970	  or
1971	.RW .2
1972</pre>
1973
1974may be just enough to squeeze an extra character or two on a
1975line without the change in letter spacing being obvious.  I
1976highly recommend previewing your work to assess the effect of
1977<strong>RW</strong>.
1978
1979<p>
1980<p>
1981<strong>IMPORTANT:</strong> In versions prior to 1.1.9-a,
1982<strong>RW</strong> affected all
1983<a href="definitions.html#TERMS_FONT">fonts</a>
1984in the
1985<a href="definitions.html#TERMS_FAMILY">family</a>
1986current at the time it was invoked.  As of 1.1.9-a, this behaviour
1987has been changed.  <strong>RW</strong> affects only the font
1988current at the time it's invoked, and remains in effect for that
1989font every time the font is called, hence must be reset to zero to
1990cancel its effect (<code>.RW 0</code>) on that font.
1991<p>
1992<strong>NOTE:</strong> By default, <strong>RW</strong> does not deposit a 
1993<a href="#BR">break</a>
1994(<strong>BR</strong>) when it's invoked if you're in one of the
1995<a href="definitions.html#TERMS_FILL">fill</a>
1996modes (i.e.
1997<a href="#QUAD">QUAD</a>
1998<strong>L, R, C, J</strong> or
1999<a href="#JUSTIFY">JUSTIFY</a>).
2000If you want
2001<strong>RW</strong> to break at the ends of the previous
2002<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
2003while you're in a fill mode, tell <strong>mom</strong>
2004that's what you want by invoking the
2005<a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
2006toggle macro.
2007<p>
2008
2009<!---EW--->
2010
2011<hr width="66%" align="left">
2012<a name="EW"><h3><u>Expand whitespace</u></h3></a>
2013<br>
2014<nobr>Macro: <strong>EW</strong> &lt;amount of whitespace expansion between letters&gt;</nobr>
2015<br>
2016
2017<p>
2018<strong>EW</strong> (Expand Whitespace) expands the amount of
2019whitespace between letters, effectively &quot;loosening&quot; lines
2020of type.
2021
2022<p>
2023The value passed to <strong>EW</strong> may be a whole number or a
2024decimal fraction.  Since a value of 1 produces a noticeable
2025expansion in the space between letters at text sizes, you'll most likely use
2026small decimal values when loosening lines.  For example,
2027<p>
2028<pre>
2029	.EW .1
2030	  or
2031	.EW .2
2032</pre>
2033
2034may be just enough to open up a line without the change in letter
2035spacing being obvious.  I highly recommend previewing your work to
2036assess the effect of <strong>EW</strong>.
2037<p>
2038<strong>IMPORTANT:</strong> In versions prior to 1.1.9-a,
2039<strong>EW</strong> affected all
2040<a href="definitions.html#TERMS_FONT">fonts</a>
2041in the
2042<a href="definitions.html#TERMS_FAMILY">family</a>
2043current at the time it was invoked.  As of 1.1.9-a, this behaviour
2044has been changed.  <strong>EW</strong> affects only the font
2045current at the time it's invoked, and remains in effect for that
2046font every time the font is called, hence must be reset to zero to
2047cancel its effect (<code>.EW 0</code>) on that font.
2048<p>
2049<strong>NOTE:</strong> By default, <strong>EW</strong> does not deposit a 
2050<a href="#BR">break</a>
2051(<strong>BR</strong>) when it's invoked if you're in one of the
2052<a href="definitions.html#TERMS_FILL">fill</a>
2053modes (i.e.
2054<a href="#QUAD">QUAD</a>
2055<strong>L, R, C, J</strong> or
2056<a href="#JUSTIFY">JUSTIFY</a>).
2057If you want
2058<strong>EW</strong> to break at the ends of the previous
2059<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
2060while you're in a fill mode, tell <strong>mom</strong>
2061that's what you want by invoking the
2062<a href="#BR_AT_LINE_KERN">BR_AT_LINE_KERN</a>
2063toggle macro.
2064<p>
2065
2066<!---BR_AT_LINE_KERN--->
2067
2068<hr width="66%" align="left">
2069<a name="BR_AT_LINE_KERN"><h3><u>Break before line kerning</u></h3></a>
2070<br>
2071<nobr>Macro: <strong>BR_AT_LINE_KERN</strong> toggle</nobr>
2072<br>
2073
2074<p>
2075By default, in
2076<a href="definitions.html#TERMS_FILLED">fill</a>
2077modes (i.e.
2078<a href="#QUAD">QUAD</a>
2079<strong>L, R, C, J</strong> or
2080<a href="#JUSTIFY">JUSTIFY</a>)
2081<strong>mom</strong> does not break
2082<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
2083when you invoke <strong>RW</strong> or <strong>EW</strong>.
2084If you'd like her to break input lines prior to <strong>RW</strong>
2085or <strong>EW</strong>, invoke <strong>BR_AT_INPUT_LINE</strong>
2086without any argument.  To disable the breaks, invoke
2087<strong>BR_AT_INPUT_LINE</strong> with any argument (<strong>OFF,
2088QUIT, Q, X</strong>...), like this
2089<p>
2090<pre>
2091	.BR_AT_LINE_KERN OFF
2092	    or
2093	.BR_AT_LINE_KERN X
2094</pre>
2095
2096In <strong>QUAD L, R</strong> or <strong>C</strong>,
2097<strong>mom</strong> simply breaks the line.  In <strong>QUAD J</strong>
2098(or <strong>JUSTIFY</strong>, which is the same thing), she breaks
2099and
2100<a href="definitions.html#TERMS_FORCE">force justifies</a>
2101the line prior to <strong>EW</strong> or <strong>RW</strong>.
2102<br>
2103
2104<!---KERN--->
2105
2106<hr width="66%" align="left">
2107<a name="KERN"><h3><u>Automatic kerning</u></h3></a>
2108<br>
2109<nobr>Macro: <strong>KERN</strong> toggle</nobr>
2110<br>
2111
2112<p>
2113By itself (i.e. with no argument), <strong>KERN</strong> turns
2114automatic pairwise
2115<a href="definitions.html#TERMS_KERN">kerning</a>
2116on.  With any argument (e.g. OFF, Q, X), pairwise kerning is turned
2117off.
2118<p>
2119Kerning of individual character pairs can be controlled with the
2120<a href="definitions.html#TERMS_INLINES">inline escapes</a>
2121<strong>\*[BU &lt;n&gt;]</strong> and <strong>\*[FU &lt;n&gt;]</strong>.  See
2122<a href="inlines.html#INLINE_KERNING_MOM">Inline Escapes, kerning</a>.
2123<p>
2124
2125<!---LIGATURES--->
2126
2127<hr width="66%" align="left">
2128<a name="LIGATURES"><h3><u>Automatic ligature generation</u></h3></a>
2129<br>
2130<nobr>Macro: <strong>LIGATURES</strong> toggle</nobr>
2131<br>
2132Alias: <strong>LIG</strong>
2133
2134<p>
2135Provided your current font has
2136<a href="definitions.html#TERMS_LIGATURES">ligatures</a>,
2137<strong>LIGATURES</strong>, by itself, turns on automatic
2138generation of ligatures.  When automatic ligature generation is
2139on, simply typing the letters of a ligature combination will
2140produce the correct ligature upon output.  For example, if you
2141type the word &quot;finally&quot;, the fi combination will be
2142output as an fi ligature.  Generally speaking, ligatures are A
2143Good Thing, hence <strong>mom</strong> has them on by default.
2144<p>
2145<strong>LIGATURES</strong> with any argument turns automatic
2146ligature generation off.
2147<p>
2148<strong>NOTE:</strong> Not all fonts support ligatures.
2149<p>
2150<hr>
2151
2152<!====================================================================>
2153
2154<a name="INTRO_MODIFICATIONS"></a>
2155
2156<a name="MODIFICATIONS">
2157	<h2><u>Type modifications: pseudo-italic, -bold, -condensed, -extended</u></h2>
2158</a>
2159
2160It sometimes happens that a PostScript 
2161<a href="definitions.html#TERMS_FAMILY">family</a>
2162doesn't contain all the fonts you need.  You might, for example,
2163be missing an italic font, or a bold font.  Or you might not be able
2164to get your hands on a condensed family.  That's where these macros
2165and inline escapes come in.  With them, you can fake the fonts
2166you're missing.  A word of caution, though: &quot;faked&quot;
2167fonts are just that--faked.  You should only use them as a
2168last resort, and then only sparingly.  A word or two or a line
2169or two in a faked font will pass unnoticed; large patches of
2170type in a faked font look typographically cheap.
2171<br>
2172
2173<a name="INDEX_MODIFICATIONS">
2174	<h3><u>Type modifications macro list</u></h3>
2175</a>
2176
2177<ul>
2178	<li><strong>Pseudo italic</strong>
2179	<ul>
2180		<li><a href="#SETSLANT">SETSLANT</a> -- degree of pseudo-italicizing
2181		<li><a href="#SLANT_INLINE">\*[SLANT]</a> -- inline escape for pseudo-italicizing type
2182	</ul>
2183	<li><strong>Pseudo bold</strong>
2184	<ul>
2185		<li><a href="#SETBOLDER">SETBOLDER</a> -- amount of emboldening
2186		<li><a href="#BOLDER_INLINE">\*[BOLDER]</a> -- inline escape for emboldening type
2187	</ul>
2188	<li><strong>Pseudo condensed</strong>
2189	<ul>
2190		<li><a href="#CONDENSE">CONDENSE</a> -- percentage for pseudo-condensed type
2191		<li><a href="#COND_INLINE">\*[COND]</a> -- inline escape for pseudo-condensed type
2192	</ul>
2193	<li><strong>Pseudo extended</strong>
2194	<ul>
2195		<li><a href="#EXTEND">EXTEND</a> -- percentage for pseudo-extended type
2196		<li><a href="#EXT_INLINE">\*[EXT]</a> -- inline escape for pseudo-extending
2197	</ul>
2198</ul>
2199
2200<!---SETSLANT--->
2201
2202<hr width="66%" align="left">
2203<a name="SETSLANT"><h3><u>Set degree of slant for pseudo-italicizing</u></h3></a>
2204<br>
2205<nobr>Macro: <strong>SETSLANT</strong> &lt;degrees to slant type&gt; | RESET</nobr>
2206
2207<p>
2208Pseudo-italicizing of type is accomplished by slanting a roman font
2209a certain number of degrees to the right.  <strong>SETSLANT</strong>
2210lets you fix the number of degrees.  <strong>Mom</strong>'s
2211default is 15, which produces an acceptable approximation of an
2212italic font.  If you want another value -- say, 13 degrees --
2213you'd set it by entering
2214<p>
2215<pre>
2216	.SETSLANT 13
2217</pre>
2218
2219If you change the degree of slant and later want to set it back
2220to the <strong>mom</strong> default, do
2221<p>
2222<pre>
2223	.SETSLANT RESET
2224</pre>
2225
2226<strong>NOTE:</strong> By itself, <strong>SETSLANT</strong>
2227will not start pseudo-italicizing type; it merely tells
2228<strong>mom</strong> what degree of slant you want.  To start
2229pseudo-italicizing, use the
2230<a href="definitions.html#TERMS_INLINES">inline escape</a>
2231<strong>\*[SLANT]</strong>.
2232<p>
2233
2234<!---\*[SLANT]--->
2235
2236<hr width="66%" align="left">
2237<a name="SLANT_INLINE"><h3><u>Pseudo italic on/off</u></h3></a>
2238<br>
2239Inline: <strong>\*[SLANT] -- turn pseudo-italic on</strong>
2240<br>
2241Inline: <strong>\*[SLANTX] -- turn pseudo-italic off</strong>
2242
2243<p>
2244<strong>\*[SLANT]</strong> begins pseudo-italicizing type.
2245<strong>\*[SLANTX]</strong> turns the feature off.  Both are
2246<a href="definitions.html#TERMS_INLINES">inline escapes</a>,
2247therefore they should not appear as separate lines, but rather
2248be embedded in text lines, like this:
2249<p>
2250<pre>
2251	Not \*[SLANT]everything\*[SLANTX] is as it seems.
2252</pre>
2253
2254Alternatively, if you wanted the whole line pseudo-italicized,
2255you'd do
2256<p>
2257<pre>
2258	\*[SLANT]Not everything is as it seems.\*[SLANTX]
2259</pre>
2260
2261Once <strong>\*[SLANT]</strong> is invoked, it remains in effect
2262until turned off.
2263
2264<p>
2265<strong>NOTE:</strong> If you're using the
2266<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
2267with
2268<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
2269<strong>mom</strong> underlines pseudo-italics by default.  To
2270change this behaviour, use the special macro
2271<a href="docprocessing.html#SLANT_MEANS_SLANT">SLANT_MEANS_SLANT</a>.
2272<p>
2273
2274<!---SETBOLDER--->
2275
2276<hr width="66%" align="left">
2277<a name="SETBOLDER"><h3><u>Set amount of emboldening</u></h3></a>
2278<br>
2279<nobr>Macro: <strong>SETBOLDER</strong> &lt;amount of emboldening, in machine units&gt; | RESET</nobr>
2280
2281<p>
2282Emboldening of type is accomplished by printing characters
2283twice; the second printing is slightly offset from the first,
2284effectively &quot;thickening&quot; the character.
2285<strong>SETBOLDER</strong> lets you set the number of
2286<a href="definitions.html#TERMS_UNITS">machine units</a>
2287for the offset.  <strong>Mom</strong>'s default is 700 units, which
2288produces an acceptable approximation of a bold font.  If you want
2289another value -- say, 500 units -- you'd set it by entering
2290<p>
2291<pre>
2292	.SETBOLDER 500
2293</pre>
2294
2295If you change the emboldening offset and later want to set it back
2296to the <strong>mom</strong> default, do
2297<p>
2298<pre>
2299	.SETBOLDER RESET
2300</pre>
2301
2302<strong>NOTE:</strong> By itself, <strong>SETBOLDER</strong>
2303will not start emboldening type; it merely tells
2304<strong>mom</strong> what you want the emboldening offset to be.
2305To start emboldening, use the
2306<a href="definitions.html#TERMS_INLINES">inline escape</a>
2307<strong>\*[BOLDER]</strong>.
2308<p>
2309
2310<!---\*[BOLDER]--->
2311
2312<hr width="66%" align="left">
2313<a name="BOLDER_INLINE"><h3><u>Emboldening on/off</u></h3></a>
2314<br>
2315Inline: <strong>\*[BOLDER] -- turn emboldening on</strong>
2316<br>
2317Inline: <strong>\*[BOLDERX] -- turn emboldening off</strong>
2318
2319<p>
2320<strong>\*[BOLDER]</strong> begins emboldening type.
2321<strong>\*[BOLDERX]</strong> turns the feature off.  Both are
2322<a href="definitions.html#TERMS_INLINES">inline escapes</a>,
2323therefore they should not appear as separate lines, but rather
2324be embedded in text lines, like this:
2325<p>
2326<pre>
2327	Not \*[BOLDER]everything\*[BOLDERX] is as it seems.
2328</pre>
2329
2330Alternatively, if you wanted the whole line emboldened,
2331you'd do
2332<p>
2333<pre>
2334	\*[BOLDER]Not everything is as it seems.\*[BOLDERX]
2335</pre>
2336
2337Once <strong>\*[BOLDER]</strong> is invoked, it remains in effect
2338until turned off.
2339
2340<p>
2341<strong>NOTE:</strong> If you're using the
2342<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
2343with
2344<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
2345<strong>mom</strong> ignores <strong>\*[BOLDER]</strong>
2346requests.
2347<p>
2348
2349<!---CONDENSE--->
2350
2351<hr width="66%" align="left">
2352<a name="CONDENSE"><h3><u>Set percentage for pseudo-condensed type</u></h3></a>
2353<br>
2354<nobr>Macro: <strong>CONDENSE</strong> &lt;pseudo-condense percentage&gt;</nobr>
2355
2356<p>
2357Pseudo-condensing of type is accomplished by reducing the width of
2358characters at a given point size without reducing their height,
2359effectively narrowing them so they look like condensed type.
2360<strong>CONDENSE</strong> tells <strong>mom</strong> what
2361percentage of the normal character width you want the characters
2362to be condensed.
2363<p>
2364<strong>Mom</strong> has no default value for
2365<strong>CONDENSE</strong>, therefore you must set it before using the
2366<a href="definitions.html#TERMS_INLINES">inline escape</a>
2367<a href="#COND_INLINE">\*[COND]</a>.
236880 percent of the normal character width is a good value, and
2369you'd set it like this:
2370<p>
2371<pre>
2372	.CONDENSE 80
2373</pre>
2374
2375<strong>NOTE:</strong> By itself, <strong>CONDENSE</strong>
2376will not start pseudo-condensing type; it merely tells
2377<strong>mom</strong> what percentage of the normal character
2378width you want characters to be condensed.
2379To start pseudo-condensing, use the
2380<a href="definitions.html#TERMS_INLINES">inline escape</a>
2381<strong>\*[COND]</strong>.
2382<p>
2383<strong>Additional note:</strong> Make sure that pseudo-condensing
2384is off (with
2385<a href="#COND_INLINE">\*[CONDX]</a>)
2386before before making any changes to the pseudo-condense percentage
2387with <strong>CONDENSE</strong>.
2388<p>
2389
2390<!---\*[COND]--->
2391
2392<hr width="66%" align="left">
2393<a name="COND_INLINE"><h3><u>Pseudo-condensing on/off</u></h3></a>
2394<br>
2395Inline: <strong>\*[COND] -- turn pseudo-condensing on</strong>
2396<br>
2397Inline: <strong>\*[CONDX] -- turn pseudo-condensing off</strong>
2398
2399<p>
2400<strong>\*[COND]</strong> begins pseudo-condensing type.
2401<strong>\*[CONDX]</strong> turns the feature off.  Both are
2402<a href="definitions.html#TERMS_INLINES">inline escapes</a>,
2403therefore they should not appear as separate lines, but rather
2404be embedded in text lines, like this:
2405<p>
2406<pre>
2407	\*[COND]Not everything is as it seems.\*[CONDX]
2408</pre>
2409
2410<strong>\*[COND]</strong> remains in effect until you turn it
2411off with <strong>\*[CONDX]</strong>.
2412
2413<p>
2414<strong>IMPORTANT:</strong> You MUST turn <strong>\*[COND]</strong>
2415off before making any changes to the point size of your type, either
2416via the
2417<a href="#PS">PT_SIZE</a>
2418macro or with the <strong>\s</strong> inline escape.  If you wish
2419the new point size to be pseudo-condensed, simply reinvoke
2420<strong>\*[COND]</strong> afterwards.  Equally,
2421<strong>\*[COND]</strong> must be turned off before changing the
2422condense percentage with <a href="#CONDENSE">CONDENSE</a>.
2423
2424<p>
2425<strong>NOTE:</strong> If you're using the
2426<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
2427with
2428<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
2429<strong>mom</strong> ignores <strong>\*[COND]</strong>
2430requests.
2431<p>
2432
2433<!---EXTEND--->
2434
2435<hr width="66%" align="left">
2436<a name="EXTEND"><h3><u>Set percentage for pseudo-extended type</u></h3></a>
2437<br>
2438<nobr>Macro: <strong>EXTEND</strong> &lt;pseudo-extend percentage&gt;</nobr>
2439
2440<p>
2441Pseudo-extending of type is accomplished by increasing the width of
2442characters at a given point size without increasing their height,
2443effectively widening them so they look like extended type.
2444<strong>EXTEND</strong> tells <strong>mom</strong> what
2445percentage of the normal character width you want the characters
2446to be extended.
2447<p>
2448<strong>Mom</strong> has no default value for
2449<strong>EXTEND</strong>, therefore you must set it before using the
2450<a href="definitions.html#TERMS_INLINES">inline escape</a>
2451<a href="#EXT_INLINE">\*[EXT]</a>.
2452120% of the normal character width is a good value, and
2453you'd set it like this:
2454<p>
2455<pre>
2456	.EXTEND 120
2457</pre>
2458
2459<strong>NOTE:</strong> By itself, <strong>EXTEND</strong>
2460will not start pseudo-extending type; it merely tells
2461<strong>mom</strong> what percentage of the normal character
2462width you want characters to be extended.
2463To start pseudo-extending, use the
2464<a href="definitions.html#TERMS_INLINES">inline escape</a>
2465<strong>\*[EXT]</strong>.
2466
2467<p>
2468<strong>Additional note:</strong> Make sure that
2469pseudo-extending is off (with
2470<a href="#EXT_INLINE">\*[EXTX]</a>)
2471before before making any changes to the pseudo-extend percentage
2472with <strong>EXTEND</strong>.
2473<p>
2474
2475<!---\*[EXT]--->
2476
2477<hr width="66%" align="left">
2478<a name="EXT_INLINE"><h3><u>Pseudo-extending on/off</u></h3></a>
2479<br>
2480Inline: <strong>\*[EXT] -- turn pseudo-extending on</strong>
2481<br>
2482Inline: <strong>\*[EXTX] -- turn pseudo-extending off</strong>
2483
2484<p>
2485<strong>\*[EXT]</strong> begins pseudo-extending type.
2486<strong>\*[EXTX]</strong> turns the feature off.  Both are
2487<a href="definitions.html#TERMS_INLINES">inline escapes</a>,
2488therefore they should not appear as separate lines, but rather
2489be embedded in text lines, like this:
2490<p>
2491<pre>
2492	\*[EXT]Not everything is as it seems.\*[EXTX]
2493</pre>
2494
2495<strong>\*[EXT]</strong> remains in effect until you turn it
2496off with <strong>\*[EXTX]</strong>.
2497
2498<p>
2499<strong>IMPORTANT:</strong> You MUST turn <strong>\*[EXT]</strong>
2500off before making any changes to the point size of your type, either
2501via the
2502<a href="#PS">PT_SIZE</a>
2503macro or with the <strong>\s</strong> inline escape.  If you wish
2504the new point size to be pseudo-extended, simply reinvoke
2505<strong>\*[EXT]</strong> afterwards.  Equally,
2506<strong>\*[EXT]</strong> must be turned off before changing the
2507extend percentage with <a href="#EXTEND">EXTEND</a>.
2508
2509<p>
2510<strong>NOTE:</strong> If you're using the
2511<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
2512with
2513<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
2514<strong>mom</strong> ignores <strong>\*[EXT]</strong>
2515requests.
2516<p>
2517<hr>
2518
2519<!====================================================================>
2520
2521<a name="INTRO_ALDRLD"></a>
2522
2523<a name="ALDRLD">
2524	<h2><u>Vertical movement</u></h2>
2525</a>
2526
2527The two macros in this section allow you to move down or up on the page
2528relative to the current
2529<a href="definitions.html#TERMS_BASELINE">baseline</a>.
2530
2531<a name="INDEX_ALDRLD">
2532	<h3><u>Vertical movement macro list</u></h3>
2533</a>
2534<ul>
2535	<li><a href="#ALD">ALD</a> -- Advance Lead
2536	<li><a href="#RLD">RLD</a> -- Reverse Lead
2537</ul>
2538
2539<!---ALD--->
2540
2541<hr width="66%" align="left">
2542	<a name="ALD"><h3><u>Advance Lead (move downward)</u></h3></a>
2543<br>
2544<nobr>Macro: <strong>ALD</strong> &lt;distance to move downward&gt;</nobr>
2545<br>
2546<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
2547
2548<p>
2549<strong>ALD</strong> takes one argument: the distance to move downward
2550on the page relative to the current vertical position.
2551<p>
2552Used by itself, or preceded by
2553<a href="#BR">BR</a>,
2554<strong>ALD</strong> will advance by one line space plus the
2555distance you specify.  Preceded by
2556<a href="#EL">EL</a>,
2557it will advance by exactly the distance you specify.
2558<p>
2559<strong>ALD</strong> requires a unit of measure.  Decimal fractions
2560are allowed, and values may be combined.  Therefore, to move down
2561on the page by 1/4 of an inch, you could enter either
2562<p>
2563<pre>
2564	.ALD .25i
2565	    or
2566	.ALD 1P+6p
2567</pre>
2568
2569As the mnemonic (<strong>A</strong>dvance
2570<strong>L</strong>ea<strong>D</strong>) suggests, you'll most often
2571use <strong>ALD</strong> with
2572<a href="definitions.html#TERMS_PICASPOINTS">points</a>
2573of lead.
2574
2575<p>
2576<strong>NOTE:</strong> if you want to use <strong>ALD</strong>
2577at the top of a page (i.e. to advance to the starting position
2578of type on a page), combine the value you want with -1v (minus
2579one line space), like this:
2580<p>
2581<pre>
2582	.ALD 1i-1v
2583</pre>
2584
2585At the top of a page, this will advance one inch from the
2586top edge of the paper.  Without the -1v, the same command would
2587advance one inch from the top of the page plus the distance of
2588one line space.
2589<p>
2590<strong>Important:</strong> Do NOT use <strong>ALD</strong> in this
2591way if you have set a top margin with
2592<a href="#T_MARGIN">T_MARGIN</a>
2593or
2594<a href="#PAGE">PAGE</a>.
2595<p>
2596
2597<!---RLD--->
2598
2599<hr width="66%" align="left">
2600	<a name="RLD"><h3><u>Reverse Lead (move upward)</u></h3></a>
2601<br>
2602<nobr>Macro: <strong>RLD</strong> &lt;distance to move upward&gt;</nobr>
2603<br>
2604<em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
2605
2606<p>
2607<strong>RLD</strong> takes one argument: the distance to move
2608upward on the page relative to the current vertical position.
2609<p>
2610Used by itself, or preceded by
2611<a href="#BR">BR</a>,
2612<strong>RLD</strong> will advance by one line space, then
2613reverse by the distance you specify.  Preceded by
2614<a href="#EL">EL</a>,
2615it will reverse by exactly the distance you specify.
2616<p>
2617<strong>RLD</strong> requires a unit of measure.  Decimal fractions
2618are allowed, and values may be combined.  Therefore, to move up
2619on the page by 1/4 of an inch, you could enter either
2620<p>
2621<pre>
2622	.RLD .25i
2623	    or
2624	.RLD 1P+6p
2625</pre>
2626
2627As the mnemonic (<strong>R</strong>dvance
2628<strong>L</strong>ea<strong>D</strong>) suggests, you'll most often
2629use <strong>RLD</strong> with
2630<a href="definitions.html#TERMS_PICASPOINTS">points</a>
2631of lead.
2632<p>
2633<hr>
2634
2635<!====================================================================>
2636
2637<a name="INTRO_TABS"></a>
2638
2639<a name="TABS">
2640	<h2><u>Tabs</u></h2>
2641</a>
2642
2643<strong>Mom</strong> provides two different kinds of tab setup:
2644typesetting tabs and string tabs.  Neither one has anything to
2645do with the tab key on your keyboard, and both are utterly
2646divorced from groff's notion of tabs.  I recommend reading this
2647section carefully in order to understand how
2648<strong>mom</strong> handles tabs.
2649<p>
2650<strong>NOTE:</strong> see the section
2651<a href="typemacdoc.html#TYPESETTING">Using typesetting macros during document processing</a>
2652for re-assuring information on the use of tabs during
2653<a href="docprocessing.html#DOCPROCESSING">document processing</a>.
2654<p>
2655
2656<a name="TYPESETTING_TABS"><h3><u>Typesetting tabs</u></h3></a>
2657<p>
2658Typesetting tabs are defined by both an indent from the left margin and
2659a line length.  This is quite different from typewriter-style tab stops
2660(the groff norm) that only define the left indent.  In conjunction
2661with the
2662<a href="#MULTI_COLUMNS">multi-column macros</a>,
2663typesetting tabs significantly facilitate
2664tabular and columnar work.
2665<p>
2666Typesetting tabs are created with the
2667<a href="#TAB_SET">TAB_SET</a>
2668macro. <strong>TAB_SET</strong> identifies the tab (by number),
2669establishes its left indent and line length, and optionally sets
2670a quad direction and fill mode.  After tabs have been created with
2671<strong>TAB_SET</strong>, they can be called at any time with the
2672<a href="#TAB">TAB</a>
2673macro.
2674<p>
2675
2676<a name="TYPESETTING_TABS_TUT"><h3><u>Quickie tutorial on typesetting tabs</u></h3></a>
2677<p>
2678Say you want to set up three tabs to produce an employee evaluation
2679that looks something like this:
2680<p>
2681<a name="TYPSETTING_TABS_SAMPLE"></a>
2682<pre>
2683	CRITERION       EVALUATION     COMMENTS
2684
2685	Service           Good         Many clients specifically request
2686	                               support from Joe by name.
2687
2688	Punctuality    Satisfactory    Tends to arrive after 8:00am, but
2689	                               often works through lunch hour.
2690
2691	Team spirit     Needs work     Persistently gives higher priority
2692	                               to helping clients than respecting
2693	                               organizational hierarchy.
2694</pre>
2695
2696You want the first tab (&quot;CRITERION&quot;)
2697<br>
2698<ul>
2699	<li>to begin at the left margin of the page (i.e. no indent)
2700	<li>to have a line length of 5 picas
2701	<li>to be set flush left
2702</ul>
2703<br>
2704Tabs must be numbered, and each has to be set up with a separate
2705<a href="#TAB_SET">TAB_SET</a>
2706line.  Therefore, to set up tab 1, you enter
2707<p>
2708<pre>
2709   .TAB_SET  1  0  5P  L
2710             |  |  |   |
2711      tab #__|  |  |   |__direction
2712                |  |
2713        indent__|  |__length
2714</pre>
2715
2716You want the second tab (&quot;EVALUATION&quot;)
2717<br>
2718<ul>
2719	<li>to begin 8 picas from the left margin
2720	<li>to have a length of 9 picas
2721	<li>to be set centred.
2722</ul>
2723<br>
2724You set it up like this:
2725<p>
2726<pre>
2727   .TAB_SET  2  8P  9P  C
2728             |  |   |   |
2729      tab #__|  |   |   |__direction
2730                |   |
2731        indent__|   |__length
2732</pre>
2733
2734You want the third tab (&quot;COMMENTS&quot;)
2735<br>
2736<ul>
2737	<li>to begin 19 picas from the left margin
2738	<li>to have a length of 17 picas
2739	<li>to be set flush left, <a href="definitions.html#TERMS_FILLED">filled</a>
2740</ul>
2741<br>
2742The setup looks like this:
2743<p>
2744<pre>
2745   .TAB_SET  3  19P  17P  L  QUAD
2746             |   |    |   |    |
2747             |   |    |   |    |__fill output lines
2748             |   |    |   |
2749      tab #__|   |    |   |__direction
2750                 |    |
2751         indent__|    |__length
2752</pre>
2753
2754Once the tabs are set up, you can call them in one of two ways:
2755<br>
2756<ul>
2757	<li><a href="#TAB">TAB</a> (with the tab
2758		number as an argument) breaks the current line,
2759		advances one linespace, and calls the tab.
2760	<li><a href="#TN">TN</a> (Tab Next) keeps
2761		you on the current line and moves over to the next
2762		tab in sequence (i.e. from 1 to 2, 2 to 3, etc.).
2763</ul>
2764<br>
2765To exit from tabs and restore your original left margin, line length,
2766quad direction and fill mode,  use
2767<a href="#TQ">TQ</a>
2768(Tab Quit).
2769<p>
2770Here's how the input for our sample employee evaluation looks
2771(with some introductory parameters):
2772<p>
2773<pre>
2774	.PAGE 8.5i 11i 1i 1i 1i
2775	.FAMILY  T
2776	.FT      R
2777	.PT_SIZE 14
2778	.LS      16
2779	.QUAD    LEFT
2780	.KERN
2781	.HY OFF
2782	.SS 0
2783	.TAB_SET 1 0   5P  L
2784	.TAB_SET 2 8P  9P  C
2785	.TAB_SET 3 19P 17P L QUAD
2786	.TAB 1
2787	CRITERION
2788	.TN
2789	EVALUATION
2790	.TN
2791	COMMENTS
2792	.SP
2793	.TAB 1
2794	Service
2795	.TN
2796	Good
2797	.TN
2798	Many clients specifically request support from Joe by name.
2799	.SP
2800	.TAB 1
2801	Punctuality
2802	.TN
2803	Satisfactory
2804	.TN
2805	Tends to arrive after 8:00am, but often works through lunch hour.
2806	.SP
2807	.TAB 1
2808	Team spirit
2809	.TN
2810	Needs work
2811	.TN
2812	Persistently gives higher priority to helping clients
2813	than respecting organizational hierarchy.
2814	.TQ
2815</pre>
2816
2817Try setting this up and previewing it with
2818<p>
2819<pre>
2820	groff -mom -X &lt;filename&gt;
2821</pre>
2822
2823Notice how <kbd>.TN</kbd> simply moves over to the next tab,
2824while the combination <kbd>.SP/.TAB 1</kbd> breaks the
2825line, advances by one extra linespace, and calls the first tab.
2826<p>
2827Notice, too, how the <kbd>QUAD</kbd> argument passed to
2828tab 3 means you don't have to worry about the length of
2829<a href="definitions.html#TERMS_INPUTLINE">input lines</a>;
2830<strong>mom</strong>
2831<a href="definitions.html#TERMS_FILLED">fills</a>
2832the tab and sets the type flush left.
2833<p>
2834<a name="STRING_TABS"><h3><u>String tabs (autotabs)</u></h3></a>
2835<p>
2836String tabs let you mark off tab positions with
2837<a href="definitions.html#TERMS_INLINES">inline escapes</a>
2838embedded in
2839<a href="definitions.html#TERMS_INPUTLINE">input lines</a>.
2840Left indents and line lengths are calculated from the beginning and
2841end positions of the marks.  This is especially useful when tab
2842indents and lengths need to be determined from the text that goes in
2843each tab.
2844<p>
2845Setting up string tabs is a two-step procedure.  First, you enter an
2846input line in which you mark off where you want tabs to begin and end.
2847(This is often best done in conjunction with the
2848<a href="goodies.html#SILENT">SILENT</a>
2849macro.)
2850<p>
2851Next, you invoke the
2852<a href="#ST">ST</a>
2853macro for every string tab you defined, and optionally pass quad and
2854fill information to it.  That done, string tabs are called with
2855the
2856<a href="#TAB">TAB</a>
2857macro, just like typesetting tabs.
2858<p>
2859In combination with the
2860<a href="goodies.html#PAD">PAD</a>
2861macro and the groff inline escape
2862<a href="inlines.html#INLINE_HORIZONTAL_GROFF">\h</a>
2863(move horizontally across the page) or <strong>mom</strong>'s
2864<a href="inlines.html#INLINE_HORIZONTAL_MOM">\*[FWD &lt;distance&gt;]</a>
2865(move forward) inline, string tabs provide
2866tremendous flexibility in setting up complex tab structures.
2867<p>
2868<a name="STRING_TABS_TUT"><h3><u>Quickie tutorial on string tabs</u></h3></a>
2869<p>
2870Say you want to set up tabs for the
2871<a href="#TYPSETTING_TABS_SAMPLE">employee evaluation form</a>
2872used as an example in the
2873<a href="#TYPESETTING_TABS_TUT">typesetting tabs tutorial</a>.
2874This time, though, you want to play around with the point size of
2875type, so you can't know exactly how long the tabs will be or where
2876they should start.  All you know is
2877<br>
2878<ul>
2879	<li>CRITERION is the longest line in tab 1
2880	<li>EVALUATION is the longest line in tab 2
2881	<li>tab 3 should extend to the current right margin
2882	<li>you want a 1 pica gutter between each tab
2883</ul>
2884<br>
2885This is an ideal job for string tabs.
2886<p>
2887The first thing you need for string tabs is an
2888<a href="definitions.html#TERMS_INPUTLINE">input line</a>
2889with tab positions marked on it.  Tabs are marked with the
2890<a href="definitions.html#TERMS_INLINES">inline escapes</a>
2891<a href="#ST_INLINE">\*[ST&lt;n&gt;]</a>
2892and
2893<a href="#ST_INLINE">\*[ST&lt;n&gt;X]</a>,
2894where <strong>&lt;n&gt;</strong>
2895is the number you want the tab to have.  (In this example, we
2896enclose the input line with the
2897<a href="goodies.html#SILENT">SILENT</a>
2898macro so the line doesn't print.  We also use the
2899<a href="goodies.html#PAD">PAD</a>
2900macro to permit defining tab 3 as simply &quot;the amount of
2901space remaining on the input line.&quot;)
2902<p>
2903The setup looks like this:
2904<p>
2905<pre>
2906	.SILENT
2907	.PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
2908	.SILENT OFF
2909</pre>
2910
2911The long line after <kbd>.PAD</kbd> looks scary, but it isn't.
2912Here's what it means when broken down into its component parts:
2913<br>
2914<ul>
2915	<li>The longest line in tab 1 is &quot;CRITERION&quot;, so we
2916		enclose CRITERION with begin/end markers for string tab 1:
2917		<p>
2918		<kbd>\*[ST1]CRITERION\*[ST1X]</kbd>
2919		<br>
2920	<li>We want a 1 pica (12 points) gutter between tab 1 and 2,
2921		so we insert 12 points of space with \*[FWD 12p]
2922		(<strong>F</strong>or<strong>W</strong>ar<strong>D</strong> 12 points):
2923		<p>
2924		<kbd>\*[FWD 12p]</kbd>
2925		<br>
2926	<li>The longest line in tab 2 is &quot;EVALUATION&quot;, so
2927		we enclose EVALUATION with begin/end markers for string
2928		tab 2:
2929		<p>
2930		<kbd>\*[ST2]EVALUATION\*[ST2X]</kbd>
2931		<br>
2932	<li>We want 1 pica (12 points) between tab 2 and 3, so we
2933		insert 12 points of space with another \*[FWD 12p]:
2934		<p>
2935		<kbd>\*[FWD 12p]</kbd>
2936		<br>
2937	<li>We want tab 3 to be as long as whatever space remains on
2938		the current line length, so we enclose the
2939		<a href="goodies.html#PAD_MARKER">pad marker</a>
2940		(#) with begin/end markers for string tab 3:
2941		<p>
2942		<kbd>\*[ST3]#\*[ST3X]</kbd>
2943		<br>
2944</ul>
2945<br>
2946The tabs are now defined, but they require
2947<a href="definitions.html#TERMS_QUAD">quad direction</a>
2948and
2949<a href="definitions.html#TERMS_FILLED">fill</a>
2950information.  For each string tab defined above, enter a
2951separate
2952<a href="#ST">ST</a>
2953line, like this:
2954<p>
2955<pre>
2956	.ST  1  L
2957	.ST  2  L
2958	.ST  3  L  QUAD
2959	     |  |   |
2960	     |  |   |__fill output lines
2961	     |  |
2962	tab__|  |__direction
2963	number
2964</pre>
2965
2966From here on in, you call the tabs with
2967<a href="#TAB">TAB</a>
2968and
2969<a href="#TN">TN</a>
2970just like typesetting tabs (see
2971<a href="#TYPESETTING_TABS_TUT">typesetting tabs tutorial</a>).
2972<p>
2973Here's the complete setup and entry for the sample employee
2974evaluation form utilizing string tabs.
2975<p>
2976<pre>
2977	.PAGE 8.5i 11i 1i 1i 1i
2978	.FAMILY  T
2979	.FT      R
2980	.PT_SIZE 14
2981	.LS      16
2982	.QUAD    LEFT
2983	.KERN
2984	.HY OFF
2985	.SS 0
2986	.SILENT
2987	.PAD "\*[ST1]CRITERION\*[ST1X]\*[FWD 12p]\*[ST2]EVALUATION\*[ST2X]\*[FWD 12p]\*[ST3]#\*[ST3X]"
2988	.SILENT OFF
2989	.ST  1  L
2990	.ST  2  L
2991	.ST  3  L  QUAD
2992	.TAB 1
2993	CRITERION
2994	.TN
2995	EVALUATION
2996	.TN
2997	COMMENTS
2998	.SP
2999	.TAB 1
3000	Service
3001	.TN
3002	Good
3003	.TN
3004	Many clients specifically request support from Joe by name.
3005	.SP
3006	.TAB 1
3007	Punctuality
3008	.TN
3009	Satisfactory
3010	.TN
3011	Tends to arrive after 8:00am, but often works through lunch hour.
3012	.SP
3013	.TAB 1
3014	Team spirit
3015	.TN
3016	Needs work
3017	.TN
3018	Persistently gives higher priority to helping clients
3019	than respecting organizational hierarchy.
3020	.TQ
3021</pre>
3022
3023Try setting this up and previewing it with
3024<p>
3025<pre>
3026	groff -mom -X &lt;filename&gt;
3027</pre>
3028
3029Now, change the point size of the above sample to 12 and preview
3030it again.  You'll see that the tab structure remains identical (tab
30311=CRITERION, tab 2=EVALUATION, tab 3=space remaining, and the gutter
3032between tabs is still 1 pica), while the position and length 
3033of the tabs have altered because of the new point size.
3034<p>
3035Now try increasing the gutters to 2 picas (<kbd>\*[FWD 24p]</kbd> or
3036<kbd>\*[FWD 2P]</kbd> instead of <kbd>\*[FWD 12p]</kbd>).  Preview the
3037file again, and notice how the tab structure remains the same, but
3038the gutters are wider.
3039<p>
3040
3041<a name="INDEX_TABS">
3042	<h3><u>Tabs macro list</u></h3>
3043</a>
3044
3045<ul>
3046	<li><a href="#TAB_SET">TAB_SET</a> (create typesetting tabs)
3047	<li><a href="#INLINE_ST">\*[ST]...\*[STX]</a> (inline escapes for marking String Tabs)
3048	<li><a href="#ST">ST</a> (set String Tabs)
3049	<li><a href="#TAB">TAB</a> (call tabs)
3050	<li><a href="#TN">TN</a> (Tab Next; call next tab in a sequence)
3051	<li><a href="#TQ">TQ</a> (Tab Quit)
3052</ul>
3053
3054<!---TAB_SET--->
3055
3056<hr width="66%" align="left">
3057	<a name="TAB_SET"><h3><u>Set up typesetting tabs</u></h3></a>
3058<br>
3059<nobr>Macro: <strong>TAB_SET</strong> &lt;tab number&gt; &lt;indent&gt; &lt;length&gt;  L | R | C | J [ QUAD ]</nobr>
3060<br>
3061<em>*&lt;indent&gt; and &lt;length&gt; require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3062
3063<p>
3064<strong>TAB_SET</strong> creates typesetting tabs that later can be
3065called with
3066<a href="#TAB">TAB</a>.
3067Typesetting tabs are numbered, and defined by an indent, a length,
3068and a &quot;direction&quot;, hence <strong>TAB_SET</strong> has
3069four required arguments:
3070<br>
3071<ul>
3072	<li>a tab number
3073	<li>an indent (measured from the left margin of the page,
3074	or, if you're already in a tab, from the left margin of the tab)
3075	<li>a length
3076	<li>a direction
3077</ul>
3078<br>
3079To set up a centred tab 6 picas long and 9 points from the left
3080margin, you'd enter
3081<p>
3082<pre>
3083	.TAB_SET 1 9p 6P C
3084</pre>
3085
3086The tab number in the above (&quot;1&quot;) is simply an
3087identifier.  It could have been 4, or 17, or 296.  There's no
3088need to set up tabs in numerical sequence.
3089<p>
3090By default, tabs are in
3091<a href="definitions.html#TERMS_NOFILL">nofill</a>
3092mode, meaning you can enter text in tabs on a line-for-line basis
3093without having to use the
3094<a href="#BR">BR</a>
3095macro.  If you want a tab to be
3096<a href="definitions.html#TERMS_FILLED">filled</a>,
3097pass the optional argument <strong>QUAD</strong>, which will
3098make the tab behave as if you'd entered <kbd>.QUAD L | R |
3099C</kbd>.
3100<p>
3101For
3102<a href="definitions.html#TERMS_JUST">justified</a>
3103tabs, simply pass the argument <strong>J</strong> (without the
3104<strong>QUAD</strong> argument), like this:
3105<p>
3106<pre>
3107	.TAB 1 9p 6P J
3108</pre>
3109
3110Once tabs are set, they can be called at any time with the
3111<a href="#TAB">TAB #</a>
3112macro, where &quot;#&quot; is the number of the desired tab.
3113<p>
3114You can set up any number of typesetting tabs.  However, be
3115aware that
3116<a href="#STRING_TABS">string tabs</a>
3117are also called with <strong>TAB #</strong>, so be careful that you
3118don't set up a typesetting tab numbered, say, 4, when you already
3119have a string tab numbered 4.  Every tab, typesetting or string,
3120must have a unique numeric identifier.
3121<p>
3122<strong>NOTE:</strong> If you use <strong>TAB_SET</strong> while
3123you're currently inside a tab, the indent argument is the distance from
3124the tab's left margin, not the left margin of the page.  Therefore,
3125you should exit tabs (with
3126<a href="#TQ">TQ</a>)
3127before creating new tabs (unless, of course, you want to set
3128up a tab structure within the confines of an existing tab).
3129<p>
3130<strong>IMPORTANT:</strong> Turn all indents off (see
3131<a href="#INDENTS">Indents</a>)
3132before setting up tabs with <strong>TAB_SET</strong>, or
3133<strong>mom</strong> may get confused.
3134<p>
3135
3136<!---INLINE_ST--->
3137
3138<hr width="66%" align="left">
3139	<a name="INLINE_ST"><h3><u>Mark positions of string tabs</u></h3></a>
3140<br>
3141Inlines: <strong>\*[ST&lt;number&gt;]...\*[ST&lt;number&gt;X]</strong>
3142<br>
3143<em>*<a href="definitions.html#TERMS_QUAD">Quad</a>
3144direction must be LEFT or JUSTIFY (see
3145<a href="#QUAD">QUAD</a>
3146and
3147<a href="#JUSTIFY">JUSTIFY</a>)
3148or the
3149<a name="definitions.html#TERMS_NOFILL">no-fill mode</a>
3150set to
3151<a href="#LRC">LEFT</a>.
3152Please see
3153<a href="#IMPORTANT">IMPORTANT</a>,
3154below.</em>
3155<p>
3156String tabs need to be marked off with
3157<a href="definitions.html#TERMS_INLINES">inline escapes</a>
3158before being set up with the
3159<a href="#ST">ST</a>
3160macro.  Any input line may contain string tab markers.
3161<i>&lt;number&gt;</i>, above, means the numeric identifier of
3162the tab.  The following shows a sample input line with string
3163tab markers.
3164<p>
3165<pre>
3166	\*[ST1]Now is the time\*[ST1X] for all \*[ST2]good men\*ST2X] to come to the aid of the party.
3167</pre>
3168
3169String tab 1 begins at the start of the line and ends after the word
3170&quot;time&quot;.  String tab 2 starts at &quot;good&quot; and ends
3171after &quot;men&quot;.  Inline escapes (e.g. font or point size
3172changes, or horizontal movements, including
3173<a href="goodies.html#PAD">padding</a>)
3174are taken into account when <strong>mom</strong> determines the
3175position and length of string tabs.
3176<p>
3177Up to nineteen string tabs may be marked (not necessarily all on
3178the same line, of course), and they must be numbered between 1
3179and 19.
3180<p>
3181Once string tabs have been marked in input lines, they have to
3182be &quot;set&quot; with
3183<a href="#ST">ST</a>,
3184after which they may be called, by number, with
3185<a href="#TAB">TAB</a>.
3186<p>
3187<strong>NOTE:</strong> Lines with string tabs marked off in them
3188are normal input lines, i.e. they get printed, just like any
3189input line.  If you want to set up string tabs without the line
3190printing, use the
3191<a href="#SILENT">SILENT</a>
3192macro.
3193<p>
3194<a name="IMPORTANT"><strong>IMPORTANT:</strong></a>
3195Owing to the way groff processes
3196<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
3197and turns them into
3198<a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>,
3199it is not possible for <strong>mom</strong> to &quot;guess&quot; the
3200correct starting position of string tabs marked off in lines that
3201are centered or set flush right.
3202<p>
3203Equally, she cannot guess the starting position if a line is fully
3204justified and broken with
3205<a href="#SPREAD">SPREAD</a>.
3206<p>
3207In other words, in order to use string tabs,
3208<a href="#LRC">LEFT</a>
3209must be active, or, if
3210<a href="#QUAD">QUAD LEFT</a>
3211or
3212<a href="#JUSTIFY">JUSTIFY</a>
3213are active, the line on which the string tabs are marked must be
3214broken &quot;manually&quot; with
3215<a href="#BR">BR</a>
3216(but not
3217<a href="#SPREAD">SPREAD</a>).
3218<p>
3219To circumvent this behaviour, I recommend using the
3220<a href="goodies.html#PAD">PAD</a>
3221to set up string tabs in centered or flush right lines.  Say, for
3222example, you want to use a string tab to underscore the text of a
3223centered line with a rule.  Rather than this,
3224<p>
3225<pre>
3226	.CENTER
3227	\*[ST1]A line of text\*[ST1X]\c
3228	.EL
3229	.ST 1
3230	.TAB 1
3231	.PT_SIZE 24
3232	.ALD 3p
3233	\*[RULE]
3234	.RLD 3p
3235	.TQ
3236</pre>
3237
3238you should do:
3239<p>
3240<pre>
3241	.QUAD CENTER
3242	.PAD "#\*[ST1]A line of text\*[ST1X]#"
3243	.EL
3244	.ST 1
3245	.TAB 1
3246	.PT_SIZE 24
3247	.ALD 3p
3248	\*[RULE] \" Note that you can't use \*[UP ] or \*[DOWN] with \*[RULE]
3249	.RLD 3p
3250	.TQ
3251</pre>
3252
3253<p>
3254
3255<!---ST--->
3256
3257<hr width="66%" align="left">
3258	<a name="ST"><h3><u>Set string tabs</u></h3></a>
3259<br>
3260<nobr>Macro: <strong>ST</strong> &lt;tab number&gt;  L | R | C | J [ QUAD ]</nobr>
3261
3262<p>
3263After string tabs have been marked off on an input line (see
3264<a href="#INLINE_ST">\*[ST]...\*[STX]</a>),
3265you need to &quot;set&quot; them by giving them a direction
3266and, optionally, the <strong>QUAD</strong> argument.  In this
3267respect, <strong>ST</strong> is like
3268<a href="#TAB_SET">TAB_SET</a>
3269except that you don't have to give <strong>ST</strong> an indent
3270or a line length (that's already taken care of, inline, by
3271<kbd>\*[ST]...\*[STX]</kbd>).  If you want string tab 1 to be
3272left, enter
3273<p>
3274<pre>
3275	.ST 1 L
3276</pre>
3277
3278If you want it to be left and
3279<a href="definitions.html#TERMS_FILLED">filled</a>, enter
3280<p>
3281<pre>
3282	.ST 1 L QUAD
3283</pre>
3284
3285If you want it to be justified, enter
3286<p>
3287<pre>
3288	.ST 1 J
3289</pre>
3290
3291See the
3292<a href="#STRING_TABS_TUT">Quickie tutorial on string tabs</a>
3293for a full explanation of setting up string tabs.
3294<p>
3295
3296<!---TAB--->
3297
3298<hr width="66%" align="left">
3299<a name="TAB"><h3><u>Call tabs</u></h3></a>
3300<br>
3301<nobr>Macro: <strong>TAB</strong> &lt;tab number&gt;</nobr>
3302<br>
3303Alias: <strong>TB</strong>
3304<p>
3305After tabs have been defined (either with
3306<a href="#TAB_SET">TAB_SET</a>
3307or
3308<a href="#ST">ST</a>),
3309<strong>TAB</strong> moves to whatever tab number you pass it as
3310an argument.  For example,
3311<p>
3312<pre>
3313	.TAB 3
3314</pre>
3315
3316moves you to tab 3.
3317<p>
3318<a name="NOTE_TN"></a>
3319<strong>NOTE:</strong> <strong>TAB</strong> breaks the line preceding
3320it and advances 1 linespace.  Hence,
3321<p>
3322<pre>
3323	.TAB 1
3324	A line of text in tab 1.
3325	.TAB 2
3326	A line of text in tab 2.
3327</pre>
3328
3329produces, on output
3330<p>
3331<pre>
3332	A line of text in tab 1.
3333	                           A line of text in tab 2.
3334</pre>
3335
3336If you want the tabs to line up, use
3337<a href="#TN">TN</a>
3338(Tab Next), like this:
3339<p>
3340<pre>
3341	.TAB 1
3342	A line of text in tab 1.
3343	.TN
3344	A line of text in tab 2.
3345</pre>
3346
3347which produces
3348<p>
3349<pre>
3350	A line of text in tab 1.   A line of text in tab 2.
3351</pre>
3352
3353If the text in your tabs runs to several lines, and you want the
3354first lines of each tab to align, you must use the
3355<a href="#MULTI_COLUMNS">multi-column</a> macros.
3356<p>
3357<strong>ADDITIONAL NOTE:</strong> Any indents in effect prior to
3358calling a tab are automatically turned off by <strong>TAB</strong>.
3359If you were happily zipping down the page with a left indent of 2
3360picas turned on, and you call a tab whose indent from the left margin
3361is 6 picas, your new distance from the left margin will be 6 picas,
3362not 6 picas plus the 2 pica indent.
3363<p>
3364
3365<!---TN--->
3366
3367<hr width="66%" align="left">
3368<a name="TN"><h3><u>Tab Next</u></h3></a>
3369<br>
3370Macro: <strong>TN</strong>
3371<br>
3372<em>*In tabs that aren't given the QUAD argument when they're set up
3373with
3374<a href="#TAB_SET">TAB_SET</a>
3375or
3376<a href="#ST">ST</a>, you must terminate the line preceding
3377<kbd>TN</kbd> with the \c inline escape.  See the
3378<a href="#TN_NOTE">ADDITIONAL NOTE</a>,
3379<br>
3380*If you find remembering whether to put in the <kbd>\c</kbd>
3381bothersome, you may prefer to use the
3382<a href="definitions.html#TERMS_INLINES">inline escape</a>
3383alternative to 
3384<kbd>.TN</kbd>,
3385<a href="inlines.html#TB+">\*[TB+]</a>,
3386which works consistently regardless of the fill mode.</em>
3387
3388<p>
3389<strong>TN</strong> moves over to the next tab in numeric
3390sequence (tab n+1) without advancing on the page.  See the
3391<a href="#NOTE_TN">NOTE</a>
3392in the description of the <strong>TAB</strong> macro for an
3393example of how <strong>TN</strong> works.
3394<p>
3395<strong>NOTE:</strong> You <em>must</em> put text in the
3396<a href="definitions.html#TERMS_INPUTLINE">input line</a>
3397immediately after <strong>TN</strong>. &quot;Stacking&quot; of
3398<strong>TN</strong>'s is not allowed.  In other words, you cannot
3399do
3400<p>
3401<pre>
3402	.TAB 1
3403	Some text
3404	.TN
3405	Some more text
3406	.TN
3407	.TN
3408	Yet more text
3409</pre>
3410
3411The above example, assuming tabs numbered from 1 to 4, should be entered
3412<p>
3413<pre>
3414	.TAB 1
3415	Some text
3416	.TN
3417	Some more text
3418	.TAB 4
3419	Yet more text
3420</pre>
3421<p>
3422<a name="TN_NOTE"><strong>ADDITIONAL NOTE:</strong></a>
3423In versions of mom prior to 1.1.9, <strong>TN</strong> did not
3424always work as advertised on the last
3425<a name="TERMS_OUTPUTLINE">output line</a>
3426of pages that contained a footer trap (e.g. one set with
3427<a href="#B_MARGIN">B_MARGIN</a>
3428or in  documents formatted using the
3429<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>).
3430<p>
3431<strong>TN</strong> has been re-written so that this should no longer be the
3432case.  However, in order for it to work in tabs that have not been
3433given a <kbd>QUAD</kbd> argument (see
3434<a href="#TAB_SET">TAB_SET</a>
3435and
3436<a href="#ST">ST</a>)
3437you must always &quot;join&quot; <strong>.TN</strong> to the line
3438before it using the
3439<a href="#JOIN">\c</a>
3440<a href="definitions.html#TERMS_INLINES">inline escape</a>,
3441as in the following example:
3442<p>
3443<pre>
3444	.TAB_SET 1 0  1P  L
3445	.TAB_SET 2 1P 20P L
3446	.TAB 1
3447	1.\c
3448	.TN
3449	The first rule of survival is &quot;make and keep good friends.&quot;
3450</pre>
3451
3452When output, the example will look like this:
3453<p>
3454<pre>
3455	1.  The first rule of survival is &quot;make and keep good friends.&quot;
3456</pre>
3457
3458Conversely, if you did give a <kbd>QUAD</kbd> argument
3459to <strong>TAB_SET</strong> or <strong>ST</strong>, the
3460<strong>\c</strong> must not be used.
3461<p>
3462
3463<!---TQ--->
3464
3465<hr width="66%" align="left">
3466<a name="TQ"><h3><u>Tab Quit</u></h3></a>
3467<br>
3468Macro: <strong>TQ</strong>
3469<br>
3470
3471<p>
3472<strong>TQ</strong> takes you out of whatever tab you were in,
3473advances 1 linespace, and restores the left margin, line length,
3474quad direction and
3475<a href="definitions.html#TERMS_FILLED">fill mode</a>
3476that were in effect prior to invoking any tabs.
3477<p>
3478<hr>
3479
3480<!====================================================================>
3481
3482<a name="INTRO_MULTI_COLUMNS"></a>
3483
3484<a name="MULTI_COLUMNS">
3485	<h2><u>Multi-Columns</u></h2>
3486</a>
3487
3488Tabs are not by nature columnar, which is to say that if the text
3489inside a tab runs to several lines, calling another tab does not
3490automatically move to the
3491<a href="definitions.html#TERMS_BASELINE">baseline</a>
3492of the first line in the previous tab.  To demonstrate:
3493<p>
3494<pre>
3495	.TAB 1
3496	Carrots
3497	Potatoes
3498	Broccoli
3499	.TAB 2
3500	$1.99/5 lbs
3501	$0.25/lb
3502	$0.99/bunch
3503</pre>
3504
3505produces, on output
3506<p>
3507<pre>
3508	Carrots
3509	Potatoes
3510	Broccoli
3511	           $1.99/5 lbs
3512	           $0.25/lb
3513	           $0.99/bunch
3514</pre>
3515
3516The multi-column macros allow you to set tabs in columnar
3517fashion, rather than line by line.  When you invoke multi-column
3518mode (with
3519<a href="#MCO">MCO</a>),
3520<strong>mom</strong> saves the position of the current baseline.
3521<a href="#MCR">MCR</a>
3522(Multi-column return) at any point while multi-columns are on
3523returns you to the saved position.  Exiting multi-columns
3524(<a href="#MCX">MCX</a>)
3525quits the current tab (if you're in one) and moves you to the
3526bottom of the longest column.  (Note that you do not have to use
3527multi-columns in conjunction with tabs.)
3528<p>
3529Using our example above, but setting it in multi-column mode,
3530<p>
3531<pre>
3532	.MCO
3533	.TAB 1
3534	Carrots
3535	Potatoes
3536	Broccoli
3537	.MCR
3538	.TAB 2
3539	$1.99/5 lbs
3540	$0.25/lb
3541	$0.99/bunch
3542	.MCX
3543</pre>
3544
3545produces
3546<p>
3547<pre>
3548	Carrots   $1.99/5 lbs
3549	Potatoes  $0.25/lb
3550	Broccoli  $0.99/bunch
3551</pre>
3552
3553<strong>NOTE:</strong> Do not confuse <strong>MCO</strong> with
3554the
3555<a href="docprocessing.html#COLUMNS">COLUMNS</a>
3556macro in the
3557<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
3558<p>
3559<a name="INDEX_MULTI_COLUMNS">
3560	<h3><u>Columns macro list</u></h3>
3561</a>
3562<ul>
3563	<li><a href="#MCO">MCO (begin multi-column setting)</a>
3564	<li><a href="#MCR">MCR (return to top of column)</a>
3565	<li><a href="#MCX">MCX (exit multi-columns)</a>
3566</ul>
3567
3568<!---MCO--->
3569
3570<hr width="66%" align="left">
3571<a name="MCO"><h3><u>Begin multi-column setting</u></h3></a>
3572<br>
3573Macro: <strong>MCO</strong>
3574<br>
3575
3576<p>
3577<strong>MCO</strong>
3578(<strong>M</strong>ulti-<strong>C</strong>olumn <strong>O</strong>n)
3579is the macro you use to begin multi-column setting.  It marks
3580the current
3581<a href="definitions.html#TERMS_BASELINE">baseline</a>
3582as the top of your columns, for use later with
3583<a href="#MCR">MCR</a>.  See the
3584<a href="#MULTI_COLUMNS">introduction to columns</a>
3585for an explanation of multi-columns and some sample
3586input.
3587<p>
3588<strong>NOTE:</strong> Do not confuse <strong>MCO</strong> with
3589the
3590<a href="docprocessing.html#COLUMNS">COLUMNS</a>
3591macro in the
3592<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
3593<p>
3594
3595<!---MCR--->
3596
3597<hr width="66%" align="left">
3598<a name="MCR"><h3><u>Return to top of column</u></h3></a>
3599<br>
3600Macro: <strong>MCR</strong>
3601<br>
3602
3603<p>
3604Once you've turned multi-columns on (with
3605<a href="#MCO">MCO</a>),
3606<strong>MCR</strong>, at any time, returns you to the top of
3607your columns.
3608<p>
3609
3610<!---MCX--->
3611
3612<hr width="66%" align="left">
3613<a name="MCX"><h3><u>Exit multi-columns</u></h3></a>
3614<br>
3615<nobr>Macro: <strong>MCX</strong> [ &lt;distance to advance below longest column&gt; ]</nobr>
3616<br>
3617<em>*Optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3618
3619<p>
3620<strong>MCX</strong> takes you out of any tab you were in (by silently
3621invoking
3622<a href="#TQ">TQ</a>) and advances to the bottom of the longest
3623column.
3624<p>
3625Without an argument, <strong>MCX</strong> advances 1 linespace
3626below the longest column.  Linespace, in this instance, is the
3627<a href="definitions.html#TERMS_LEADING">leading</a>
3628in effect <em>at the moment <strong>MCX</strong> is
3629invoked.</em>
3630<p>
3631If you pass the <nobr>&lt;distance&gt; argument to</nobr>
3632<strong>MCX</strong>, it advances 1 linespace below the longest
3633column (see above) PLUS the distance specified by the argument.
3634The argument requires a unit of measure; therefore, to advance
3635an extra 6 points below where <strong>MCX</strong> would
3636normally place you, you'd enter
3637<p>
3638<pre>
3639	.MCX 6p
3640</pre>
3641
3642<strong>NOTE:</strong> If you wish to advance a precise distance
3643below the
3644<a href="definitions.html#TERMS_BASELINE">baseline</a>
3645of the longest column, use <strong>MCX</strong> with an
3646argument of 0 (zero; no unit of measure required) in conjunction
3647with the
3648<a href="#ALD">ALD</a>
3649macro, like this:
3650<p>
3651<pre>
3652	.MCX 0
3653	.ALD 24p
3654</pre>
3655
3656The above advances to precisely 24 points below the baseline
3657of the longest column.
3658<p>
3659<hr>
3660
3661<!====================================================================>
3662
3663<a name="INTRO_INDENTS"></a>
3664
3665<a name="INDENTS">
3666	<h2><u>Indents</u></h2>
3667</a>
3668
3669With <strong>mom</strong>'s indents, you can indent from the left,
3670the right, or both margins.  In addition, <strong>mom</strong>
3671provides temporary left indents (i.e. only one line is indented,
3672as at the start of a paragraph) and &quot;hanging&quot; left indents
3673(the reverse of a temporary indent; the first line isn't indented,
3674subsequent lines are).
3675<p>
3676<a name="INDENTS_TUT"><h3><u>A brief explanation of how mom handles indents</u></h3></a>
3677<p>
3678<strong>Mom</strong> provides five kinds of indents: left, right,
3679both, temporary, and hanging.  Each is invoked by its own name:
3680<br>
3681<ul>
3682	<li><strong>IL</strong> = <strong>I</strong>ndent <strong>L</strong>eft
3683	<li><strong>IR</strong> = <strong>I</strong>ndent <strong>R</strong>ight
3684	<li><strong>IB</strong> = <strong>I</strong>ndent <strong>B</strong>oth
3685	<li><strong>HI</strong> = <strong>H</strong>anging <strong>I</strong>ndent
3686	<li><strong>TI</strong> = <strong>T</strong>emporary <strong>I</strong>ndent
3687</ul>
3688<br>
3689In addition, there are four macros to control exiting from
3690indents:
3691<br>
3692<ul>
3693	<li><strong>IQ</strong>&nbsp;&nbsp;= quit all active indents
3694	<li><strong>ILX</strong>&nbsp;= exit indent style left
3695	<li><strong>IRX</strong>&nbsp;= exit indent style right
3696	<li><strong>IBX</strong>&nbsp;= exit indent style both
3697</ul>
3698<br>
3699This section deals exclusively with <strong>IL, IR</strong> and
3700<strong>IB</strong>.  For an explanation
3701of hanging and temporary indents -- how they work and how to use
3702them -- see
3703<a href="#HI">Hanging indents</a>
3704and
3705<a href="#TI">Temporary indents</a>.
3706<p>
3707The first time you invoke any of <strong>mom</strong>'s indents,
3708you must supply a measure.  For example,
3709<p>
3710<pre>
3711	.IL 2P
3712</pre>
3713
3714indents text 2 picas from the left margin (or current tab
3715indent).
3716<p>
3717When you want to exit the above indent, use either
3718<p>
3719<pre>
3720	.IQ
3721	 or
3722	.ILX
3723</pre>
3724
3725The next time you want the same indent, invoke it without the
3726argument, like this:
3727<p>
3728<pre>
3729	.IL
3730</pre>
3731
3732As you can see, once you've supplied a measure to an indent macro
3733<strong>mom</strong> stores the value, obviating the need to repeat
3734it on subsequent invocations.  And <strong>mom</strong> doesn't just
3735store the measure -- she hangs on to it tenaciously.  Arguments passed
3736to <strong>IL, IR</strong> and <strong>IB</strong> are additive.
3737Consider the following:
3738<p>
3739<pre>
3740	.LL 20P
3741	.IR 2P    \"Indent right by 2 picas
3742	A first block of text...
3743	...
3744	...
3745	.IQ       \"Turn indent off
3746	A second block of text...
3747	...
3748	...
3749	.IR 2P    \"Indent right by an additional 2 picas (i.e. 4 picas)
3750	A third block of text...
3751	...
3752	...
3753</pre>
3754
3755The first block of text is right indented by 2 picas (i.e. the line
3756length is shortened by 2 picas to 18 picas).  The second block of
3757text, after <strong>IQ</strong>, is, as you'd expect, set to the full
3758measure.  The third block of text -- the one to pay attention to --
3759is not right indented by 2 picas, but rather by 4 picas.
3760<strong>Mom</strong> adds the value of arguments to <strong>IL,
3761IR</strong> and <strong>IB</strong> to whatever value is already
3762in effect. 
3763<p>
3764If you wanted the third block of text in the example above to
3765be right indented by just 2 picas (the original measure given to
3766<strong>IR</strong>), you would enter <kbd>.IR</kbd> without an
3767argument.
3768<p>
3769Because indent arguments are additive, putting a minus sign in front
3770of the argument can be used to subtract from the current value.
3771In the following example, the first line is indented 18 points, the
3772second is indented 36 points (18+18), and the third is again indented
377318 points (36-18).
3774<p>
3775<pre>
3776	.IL 18p     \"Indent left by 18 points      = 18 points
3777	Now is the time
3778	.IL 18p     \"Indent left by 18 points more = 36 points
3779	for all good men to come
3780	.IL -18p    \"Indent left by 18 points less = 18 points
3781	to the aid of the party.
3782</pre>
3783
3784Sometimes, you may want to clear out the stored indent values -- let
3785<strong>mom</strong> start indenting with a clean slate, as it were.
3786Giving the optional argument <kbd>CLEAR</kbd> to any of the
3787&quot;indent quit&quot; macros resets them to zero.
3788<br>
3789<ul>
3790	<li><strong>IQ CLEAR</strong>&nbsp;&nbsp;= quit and clear all indents
3791	<li><strong>ILX CLEAR</strong>&nbsp;= quit and clear indent style left
3792	<li><strong>IRX CLEAR</strong>&nbsp;= quit and clear indent style right
3793	<li><strong>IBX CLEAR</strong>&nbsp;= quit and clear indent style both
3794</ul>
3795<br>
3796Indent styles may be combined and manipulated separately.  You could,
3797for example, have a left indent of 4 picas and a right indent of 6
3798picas and control each separately, as in the following example.
3799<p>
3800<pre>
3801	.IL 4P     \"Indent left 4 picas
3802	.IR 6P     \"Indent right 6 picas
3803	Some text
3804	.IRX       \"Turn off the right indent only
3805	More text  \"Text is still indented 4 picas left
3806</pre>
3807
3808If, at <kbd>.IRX</kbd>, you wanted the text afterwards to have no
3809indents (either left or right), you would enter <kbd>.IQ</kbd>,
3810which exits all indent styles at once.
3811<p>
3812<strong>A word of advice:</strong> Indents are best used only when
3813you have a compelling reason not to change the current left margin or
3814line length.  In many instances where indents might seem expedient,
3815it's better to use tabs, or actually change the left margin or the
3816line length.  <strong>Mom</strong>'s indenting macros are flexible
3817and powerful, but easy to get tangled up in.  Personally, I don't
3818use them much, except for cutarounds and multi-level lists � la html,
3819at which they excel.
3820<p>
3821<strong>NOTE:</strong> see the section
3822<a href="typemacdoc.html#TYPESETTING">Typesetting Macros in Document Processing</a>
3823for information and advice on using indents with the
3824<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>.
3825<p>
3826<a name="INDEX_INDENTS"><h3><u>Indents macro list</u></h3>
3827<ul>
3828	<li><a href="#IL">IL</a>&nbsp;&nbsp;(Indent left)
3829	<li><a href="#IR">IR</a>&nbsp;&nbsp;(Indent right)
3830	<li><a href="#IB">IB</a>&nbsp;&nbsp;(Indent both)
3831	<li><a href="#TI">TI</a>&nbsp;&nbsp;(Temporary indent, left)
3832	<li><a href="#HI">HI</a>&nbsp;&nbsp;(Hanging Indent)
3833	<ul>
3834		<li><a href="#NUM_LISTS">A recipe for numbered lists</a>
3835	</ul>
3836	<li><a href="#IQ">IQ</a>&nbsp;&nbsp;(Quit indents, all)
3837	<li><a href="#IQ">ILX</a>&nbsp;(Exit indent style left)
3838	<li><a href="#IQ">IRX</a>&nbsp;(Exit indent style right)
3839	<li><a href="#IQ">IBX</a>&nbsp;(Exit indent style both)
3840</ul>
3841
3842<!---IL--->
3843
3844<hr width="66%" align="left">
3845<a name="IL"><h3><u>Indent left</u></h3></a>
3846<br>
3847<nobr>Macro: <strong>IL</strong> [ &lt;measure&gt; ]</nobr>
3848<br>
3849<em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3850
3851<p>
3852<strong>IL</strong> indents text from the left margin of the page,
3853or if you're in a tab, from the left edge of the tab.  Once
3854<strong>IL</strong> is on, the left indent is applied uniformly to
3855every subsequent line of text, even if you change the line length.
3856<p>
3857The first time you invoke <strong>IL</strong>, you must give it a
3858measure.  Subsequent invocations with a measure add to the previous
3859measure.  A minus sign may be prepended to the argument to subtract
3860from the current measure.  The
3861<a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
3862<a href="definitions.html#TERMS_INLINES">inline escape</a>
3863may be used to specify a text-dependent measure, in which case
3864no unit of measure is required.  For example,
3865<p>
3866<pre>
3867	.IL \w'margarine'
3868</pre>
3869
3870indents text by the width of the word &quot;margarine&quot;.
3871<p>
3872With no argument, <strong>IL</strong> indents by its last
3873active value.  See the
3874<a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
3875for more details.
3876<p>
3877<strong>NOTE:</strong> Calling a tab (with
3878<a href="#TAB">TAB</a>)
3879automatically cancels any active indents.
3880<p>
3881<strong>ADDITIONAL NOTE:</strong> Invoking <strong>IL</strong>
3882automatically turns off <strong>IB</strong>.
3883<p>
3884
3885<!---IR--->
3886
3887<hr width="66%" align="left">
3888<a name="IR"><h3><u>Indent right</u></h3></a>
3889<br>
3890<nobr>Macro: <strong>IR</strong> [ &lt;measure&gt; ]</nobr>
3891<br>
3892<em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3893
3894<p>
3895<strong>IR</strong> indents text from the right margin of the
3896page, or if you're in a tab, from the end of the tab.
3897<p>
3898The first time you invoke <strong>IR</strong>, you must give it a
3899measure.  Subsequent invocations with a measure add to the previous
3900indent measure.  A minus sign may be prepended to the argument to
3901subtract from the current indent measure.  The
3902<a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
3903<a href="definitions.html#TERMS_INLINES">inline escape</a>
3904may be used to specify a text-dependent measure, in which case
3905no unit of measure is required.  For example,
3906<p>
3907<pre>
3908	.IR \w'jello'
3909</pre>
3910
3911indents text by the width of the word &quot;jello&quot;.
3912<p>
3913With no argument, <strong>IR</strong> indents by its last
3914active value.  See the
3915<a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
3916for more details.
3917<p>
3918<strong>NOTE:</strong> Calling a tab (with
3919<a href="#TAB">TAB</a>)
3920automatically cancels any active indents.
3921<p>
3922<strong>ADDITIONAL NOTE:</strong> Invoking <strong>IR</strong>
3923automatically turns off <strong>IB</strong>.
3924<p>
3925
3926<!---IB--->
3927
3928<hr width="66%" align="left">
3929<a name="IB"><h3><u>Indent both</u></h3></a>
3930<br>
3931<nobr>Macro: <strong>IB</strong> [ &lt;left measure&gt; &lt;right measure&gt; ]</nobr>
3932<br>
3933<em>*The optional arguments require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3934
3935<p>
3936<strong>IB</strong> allows you to set or invoke a left and a right
3937indent at the same time.
3938<p>
3939At its first invocation, you must supply a measure for both indents;
3940at subsequent invocations when you wish to supply a measure, both must
3941be given again.  As with <strong>IL</strong> and <strong>IR</strong>,
3942the measures are added to the values previously passed to the macro.
3943Hence, if you wish to change just one of the values, you must
3944give an argument of zero to the other.
3945<p>
3946<strong>A word of advice:</strong> If you need to manipulate left and
3947right indents separately, use a combination of <strong>IL</strong>
3948and <strong>IR</strong> instead of <strong>IB</strong>.  You'll
3949save yourself a lot of grief.
3950<p>
3951A minus sign may be prepended to the arguments to subtract from their
3952current values.  The
3953<a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
3954<a href="definitions.html#TERMS_INLINES">inline escape</a>
3955may be used to specify text-dependent measures, in which case
3956no unit of measure is required.  For example,
3957<p>
3958<pre>
3959	.IB \w'margarine' \w'jello'
3960</pre>
3961
3962left indents text by the width of the word &quot;margarine&quot;
3963and right indents by the width of &quot;jello&quot;.
3964<p>
3965Like <strong>IL</strong> and <strong>IR</strong>, <strong>IB</strong>
3966with no argument indents by its last active values.  See the
3967<a href="#INDENTS_TUT">brief explanation of how mom handles indents</a>
3968for more details.
3969<p>
3970<strong>NOTE:</strong> Calling a tab (with
3971<a href="#TAB">TAB</a>)
3972automatically cancels any active indents.
3973<p>
3974<strong>ADDITIONAL NOTE:</strong> Invoking <strong>IB</strong>
3975automatically turns off <strong>IL</strong> and
3976<strong>IR</strong>.
3977<p>
3978
3979<!---TI--->
3980
3981<hr width="66%" align="left">
3982<a name="TI"><h3><u>Temporary (left) indent</u></h3></a>
3983<br>
3984<nobr>Macro: <strong>TI</strong> [ &lt;measure&gt; ]</nobr>
3985<br>
3986<em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
3987
3988<p>
3989A temporary indent is one that applies only to the first line of
3990text that comes after it.  Its chief use is indenting the first
3991line of paragraphs.  (<strong>Mom</strong>'s
3992<a href="docprocessing.html#PP">PP</a>
3993macro, for example, uses a temporary indent.)
3994<p>
3995The first time you invoke <strong>TI</strong>, you must give it
3996a measure.  If you want to indent the first line of a
3997paragraph by, say, 2
3998<a href="definitions.html#TERMS_EM">ems</a>,
3999do
4000<p>
4001<pre>
4002	.TI 2m
4003</pre>
4004
4005Subsequent invocations of <strong>TI</strong> do not require you
4006to supply a measure; <strong>mom</strong> keeps track of the
4007last measure you gave it.
4008<p>
4009Because temporary indents are temporary, there's no need to turn
4010them off.
4011<p>
4012<strong>IMPORTANT:</strong> Unlike <strong>IL, IR</strong> and
4013<strong>IB</strong>, measures given to <strong>TI</strong>
4014are NOT additive.  In the following example, the second <kbd>.TI
40152P</kbd> is exactly 2 picas.
4016<p>
4017<pre>
4018	.TI 1P
4019	The beginning of a paragraph...
4020	.TI 2P
4021	The beginning of another paragraph...
4022</pre>
4023
4024<!---HI--->
4025
4026<hr width="66%" align="left">
4027<a name="HI"><h3><u>Hanging indent</u></h3></a>
4028<br>
4029<nobr>Macro: <strong>HI</strong> [ &lt;measure&gt; ]</nobr>
4030<br>
4031<em>*The optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
4032
4033<p>
4034A hanging indent looks like this:
4035<p>
4036<pre>
4037	The thousand injuries of Fortunato I had borne as best I
4038	    could, but when he ventured upon insult, I vowed
4039	    revenge.  You who so well know the nature of my soul
4040	    will not suppose, however, that I gave utterance to a
4041	    threat, at length I would be avenged...
4042</pre>
4043
4044The first line of text &quot;hangs&quot; outside the left
4045margin.
4046<p>
4047In order to use hanging indents, you must first have a left indent
4048active (set with either
4049<a href="#IL">IL</a>
4050or
4051<a href="#IB">IB</a>).
4052<strong>Mom</strong> will not hang text outside the left margin set with
4053<a href="#L_MARGIN">L_MARGIN</a>
4054or outside the left margin of a tab.
4055<p>
4056The first time you invoke <strong>HI</strong>, you must give it
4057a measure.  If you want the first line of a paragraph to hang by,
4058say, 1 pica, do
4059<p>
4060<pre>
4061	.IL 1P
4062	.HI 1P
4063</pre>
4064
4065Subsequent invocations of <strong>HI</strong> do not require you
4066to supply a measure; <strong>mom</strong> keeps track of the
4067last measure you gave it.
4068<p>
4069Generally speaking, you should invoke <strong>HI</strong> immediately
4070prior to the line you want hung (i.e. without any intervening
4071<a href="definitions.html#TERMS_CONTROLLINES">control lines</a>).
4072And because hanging indents affect only one line, there's no need to turn
4073them off.
4074<p>
4075<a name="NUM_LISTS"><h3><u>A recipe for numbered lists</u></h3></a>
4076<p>
4077<strong>PLEASE NOTE: mom</strong> now has macros for setting lists (see
4078<a href="docelement.html#LIST_INTRO">Nested lists</a>),
4079making this recipe superfluous.  It remains here in the hope that
4080it will clarify the use of hanging indents generally, if no longer
4081specifically.
4082<p>
4083Consider the following example:
4084<p>
4085<pre>
4086	.PAGE 8.5i 11i 1i 1i 1i 1i
4087	.FAMILY  T
4088	.FT      R
4089	.PT_SIZE 12
4090	.LS      14
4091	.JUSTIFY
4092	.KERN
4093	.SS 0
4094	.IL \w'\0\0.'    \"Indent left by 2 figure spaces and a period
4095	.HI \w'\0\0.'    \"Hang first line of text back by 2 figure spaces and a period
4096	1.\0The most important point to be considered is whether the
4097	answer to the meaning of life, the universe, and everything
4098	really is 42.  We have no-one's word on the subject except
4099	Mr. Adams'.
4100	.HI
4101	2.\0If the answer to the meaning of life, the universe,
4102	and everything is indeed 42, what impact does this have on
4103	the politics of representation?  42 is, after all not a
4104	prime number.  Are we to infer that prime numbers don't
4105	deserve equal rights and equal access in the universe?
4106	.HI
4107	3.\0If 42 is deemed non-exclusionary, how do we present it
4108	as the answer and, at the same time, forestall debate on its
4109	exclusionary implications?
4110</pre>
4111
4112First, we invoke a left indent with a measure equal to the width
4113of 2
4114<a href="definitions.html#TERMS_FIGURESPACE">figures spaces</a>
4115plus a period (using the
4116<a href="inlines.html#INLINE_STRINGWIDTH_GROFF">\w</a>
4117inline escape).  At this point, the left indent is active; text
4118afterwards would normally be indented.  However, we invoke a hanging
4119indent of exactly the same width, which hangs the first line (and
4120first line only!) to the left of the indent by the same distance
4121(in this case, that means &quot;out to the left margin&quot;).
4122Because we begin the first line with a number, a period, and a
4123figure space, the actual text (&quot;The most important point...&quot;)
4124starts at exactly the same spot as the indented lines that
4125follow.
4126<p>
4127Notice that subsequent invocations of <strong>HI</strong> without a
4128measure produce exactly the same effect.
4129<p>
4130Paste the example above into a file and preview it with <kbd>groff -mom -X
4131&lt;filename&gt;</kbd> to see hanging indents in action.
4132<p>
4133<strong>IMPORTANT:</strong> Unlike <strong>IL, IR</strong> and
4134<strong>IB</strong>, measures given to <strong>HI</strong>
4135are NOT additive.  Each time you pass a measure to
4136<strong>HI</strong>, the measure is treated literally.
4137<p>
4138
4139<!---IX--->
4140
4141<hr width="66%" align="left">
4142<a name="IQ"><h3><u>Quitting indents</u></h3></a>
4143<br>
4144<nobr>Macro: <strong>IQ</strong>&nbsp;&nbsp;[ CLEAR ]&nbsp;&nbsp;(quit any/all indents -- see <strong>*IMPORTANT NOTE</strong>)</nobr>
4145<br>
4146<nobr>Macro: <strong>ILX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit <strong>I</strong>ndent <strong>L</strong>eft)</nobr>
4147<br>
4148<nobr>Macro: <strong>IRX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit <strong>I</strong>ndent <strong>R</strong>ight)</nobr>
4149<br>
4150<nobr>Macro: <strong>IBX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit <strong>I</strong>ndent <strong>B</strong>oth)</nobr>
4151
4152<p>
4153<strong>*IMPORTANT NOTE:</strong>
4154<br>
4155&nbsp;&nbsp;&nbsp;&nbsp;<em>Formerly, the macro for quitting all indents was</em>
4156<strong>.IX</strong><em>.  This usage is now deprecated, in favour
4157of</em> <strong>.IQ</strong><em>.</em> <strong>.IX</strong> <em>will
4158continue to behave as before, but</em> <strong>mom</strong> <em>will
4159issue a warning to stderr indicating that you should update your
4160documents.
4161<br>
4162&nbsp;&nbsp;&nbsp;&nbsp;As a consequence of this change,</em>
4163<strong>ILX, IRX</strong> <em>and</em> <strong>IBX</strong> <em>may
4164now also be invoked as</em> <strong>ILQ, IRQ</strong> <em>and</em>
4165<strong>IBQ</strong><em>.  Both forms are acceptable.</em>
4166<p>
4167Without an argument, the macros to quit indents merely restore your
4168original margins and line length.  The measures stored in the
4169indent macros themselves are saved so you can call them again without
4170having to supply a measure.
4171<p>
4172If you pass these macros the optional argument <strong>CLEAR</strong>,
4173they not only restore your original left margin and line length,
4174but also clear any values associated with a  particular indent style.
4175The next time you need an indent of the same style, you have to supply
4176a measure again.
4177<p>
4178<strong>IQ CLEAR</strong>, as you'd suspect, quits and clears
4179the values for all indent styles at once.
4180
4181<p>
4182<hr>
4183<a href="goodies.html#TOP">Next</a>&nbsp;&nbsp;
4184<a href="definitions.html#TOP">Prev</a>&nbsp;&nbsp;
4185<a href="#TOP">Top</a>&nbsp;&nbsp;
4186<a href="toc.html">Back to Table of Contents</a>
4187
4188</body>
4189</html>
4190