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> 12<a href="definitions.html#TOP">Prev</a> 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> <width of printer sheet></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> <length of printer sheet></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> <paper type></nobr> 207 208<p> 209<strong>PAPER</strong> provides a convenient way to set the page 210dimensions for some common printer sheet sizes. <nobr><paper 211type> 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> <left margin></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 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> <right margin></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> <top margin></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 <text> 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> <bottom margin></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><width> [ <length> [ <lm> [ <rm> [ <tm> [ <bm> ] ] ] ] ]</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><lm>, <rm>, <tm></nobr> 472and <nobr><bm> 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><tm> comes after <nobr><rm></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> <family></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 "ZCM", then 633setting the font to "I". 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> "remembers" 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 <some text> \" Bookman Medium Italic 655 .FAMILY H \" Helvetica family 656 <more text> \" 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 "Medium Condensed Roman" 666(<strong>mom</strong> extension "<strong>CD</strong>") 667in the Helvetica family: 668<p> 669<pre> 670 .FAMILY UN \" Univers family 671 .FT CD \" Medium Condensed 672 <some text> \" Univers Medium Condensed 673 .FAMILY H \" Helvetica family 674 <more text> \" 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 | <any other valid font style></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> <fallback font> [ 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 "if 817F" and "if S" (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, "TR" 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 "TR" 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> <size of type in points></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> <distance between lines></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> <amount of automatic leading> [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"manual" 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> <line length></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 "hang" 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 Macro: <strong>RIGHT</strong> 1219 Macro: <strong>CENTER</strong> 1220 (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 "join" <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> <space to add between lines></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 6p</code> and 1481<code>.ALD 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 "joined" 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> <+|-wordspace> | 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> <+sentence space> | 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"0" 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 <max. number of consecutive hyphenated lines></nobr> 1773<br> 1774<nobr>Macro: <strong>HY</strong> MARGIN <size of hyphenation margin></nobr> 1775<br> 1776<nobr>Macro: <strong>HY</strong> SPACE <extra interword spacing to prevent hyphenation></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> <lines> [ <margin> [ <space> ] ]</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. <lines>, <margin> and <space> 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> <amount of whitespace reduction between letters></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> <amount of whitespace expansion between letters></nobr> 2015<br> 2016 2017<p> 2018<strong>EW</strong> (Expand Whitespace) expands the amount of 2019whitespace between letters, effectively "loosening" 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 <n>]</strong> and <strong>\*[FU <n>]</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 "finally", 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: "faked" 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> <degrees to slant type> | 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> <amount of emboldening, in machine units> | RESET</nobr> 2280 2281<p> 2282Emboldening of type is accomplished by printing characters 2283twice; the second printing is slightly offset from the first, 2284effectively "thickening" 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> <pseudo-condense percentage></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> <pseudo-extend percentage></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> <distance to move downward></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> <distance to move upward></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 ("CRITERION") 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 ("EVALUATION") 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 ("COMMENTS") 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 <filename> 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 <distance>]</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<n>]</a> 2892and 2893<a href="#ST_INLINE">\*[ST<n>X]</a>, 2894where <strong><n></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 "the amount of 2901space remaining on the input line.") 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 "CRITERION", 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 "EVALUATION", 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 <filename> 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> <tab number> <indent> <length> L | R | C | J [ QUAD ]</nobr> 3060<br> 3061<em>*<indent> and <length> 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 "direction", 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 ("1") 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 "#" 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<number>]...\*[ST<number>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><number></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"time". String tab 2 starts at "good" and ends 3171after "men". 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 "set" 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 "guess" 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 "manually" 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> <tab number> 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 "set" 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> <tab number></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>. "Stacking" 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 "join" <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 "make and keep good friends." 3450</pre> 3451 3452When output, the example will look like this: 3453<p> 3454<pre> 3455 1. The first rule of survival is "make and keep good friends." 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> [ <distance to advance below longest column> ]</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><distance> 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 "hanging" 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> = quit all active indents 3694 <li><strong>ILX</strong> = exit indent style left 3695 <li><strong>IRX</strong> = exit indent style right 3696 <li><strong>IBX</strong> = 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"indent quit" macros resets them to zero. 3788<br> 3789<ul> 3790 <li><strong>IQ CLEAR</strong> = quit and clear all indents 3791 <li><strong>ILX CLEAR</strong> = quit and clear indent style left 3792 <li><strong>IRX CLEAR</strong> = quit and clear indent style right 3793 <li><strong>IBX CLEAR</strong> = 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> (Indent left) 3829 <li><a href="#IR">IR</a> (Indent right) 3830 <li><a href="#IB">IB</a> (Indent both) 3831 <li><a href="#TI">TI</a> (Temporary indent, left) 3832 <li><a href="#HI">HI</a> (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> (Quit indents, all) 3837 <li><a href="#IQ">ILX</a> (Exit indent style left) 3838 <li><a href="#IQ">IRX</a> (Exit indent style right) 3839 <li><a href="#IQ">IBX</a> (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> [ <measure> ]</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 "margarine". 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> [ <measure> ]</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 "jello". 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> [ <left measure> <right measure> ]</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 "margarine" 3963and right indents by the width of "jello". 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> [ <measure> ]</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> [ <measure> ]</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 "hangs" 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 "out to the left margin"). 4122Because we begin the first line with a number, a period, and a 4123figure space, the actual text ("The most important point...") 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<filename></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> [ CLEAR ] (quit any/all indents -- see <strong>*IMPORTANT NOTE</strong>)</nobr> 4145<br> 4146<nobr>Macro: <strong>ILX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>L</strong>eft)</nobr> 4147<br> 4148<nobr>Macro: <strong>IRX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>R</strong>ight)</nobr> 4149<br> 4150<nobr>Macro: <strong>IBX</strong> [ CLEAR ] (exit <strong>I</strong>ndent <strong>B</strong>oth)</nobr> 4151 4152<p> 4153<strong>*IMPORTANT NOTE:</strong> 4154<br> 4155 <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 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> 4184<a href="definitions.html#TOP">Prev</a> 4185<a href="#TOP">Top</a> 4186<a href="toc.html">Back to Table of Contents</a> 4187 4188</body> 4189</html> 4190