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