928 lines
31 KiB
HTML
928 lines
31 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
|
<title>Mom -- Goodies</title>
|
|
</head>
|
|
<body bgcolor="#dfdfdf">
|
|
|
|
<!====================================================================>
|
|
|
|
<a href="inlines.html#TOP">Next</a>
|
|
<a href="typesetting.html#TOP">Prev</a>
|
|
<a href="toc.html">Back to Table of Contents</a>
|
|
|
|
<a name="TOP"></a>
|
|
<a name="GOODIES">
|
|
<h2><u>Goodies</u></h2>
|
|
</a>
|
|
|
|
<a name="INTRO_GOODIES"></a>
|
|
The macros in this section are a collection of useful (and sometimes
|
|
nearly indispensible) routines to simplify typesetting.
|
|
|
|
<a name="INDEX_GOODIES">
|
|
<h3><u>Goodies list</u></h3>
|
|
</a>
|
|
|
|
<ul>
|
|
<li><a href="#ALIAS">ALIAS</a> (rename macros)
|
|
<li><a href="#SILENT">SILENT</a> ("hide" input lines from output)
|
|
<li><a href="#TRAP">TRAP</a> (suspend/re-invoke traps)
|
|
<li><a href="#SMARTQUOTES">SMARTQUOTES</a>
|
|
<li><a href="#CAPS">CAPS</a> (convert to upper case)
|
|
<br>
|
|
<li><strong>Underscore/underline</strong>
|
|
<ul>
|
|
<li><a href="#UNDERSCORE">UNDERSCORE</a> (single underscore)
|
|
<li><a href="#UNDERSCORE2">UNDERSCORE2</a> (double underscore)
|
|
<li><a href="#UNDERLINE">UNDERLINE</a> (underline -- Courier only!)
|
|
<li><a href="#UL">\*[UL]</a> (inline escape to underline -- Courier only!)
|
|
</ul>
|
|
<li><strong>Padding</strong>
|
|
<ul>
|
|
<li><a href="#PAD">PAD</a> (insert equalized space into lines)
|
|
<li><a href="#PAD_MARKER">PAD_MARKER</a> (change/set the marker used with <strong>PAD</strong>)
|
|
</ul>
|
|
<li><strong>Leaders</strong>
|
|
<ul>
|
|
<li><a href="#LEADER">\*[LEADER]</a> (inline escape to add leaders to a line)
|
|
<li><a href="#LEADER_CHARACTER">LEADER_CHARACTER</a> (change/set the leader character)
|
|
</ul>
|
|
<li><strong>Drop caps</strong>
|
|
<ul>
|
|
<li><a href="#DROPCAP">DROPCAP</a> (set a drop cap)
|
|
<li><strong>Support macros for DROPCAP</strong>
|
|
<ul>
|
|
<li><a href="#DROPCAP_FAMILY">DROPCAP_FAMILY</a> (change drop cap family)
|
|
<li><a href="#DROPCAP_FONT">DROPCAP_FONT</a> (change drop cap font)
|
|
<li><a href="#DROPCAP_ADJUST">DROPCAP_ADJUST</a> (alter size of drop cap)
|
|
<li><a href="#DROPCAP_GUTTER">DROPCAP_GUTTER</a> (change space between drop cap and running text)
|
|
</ul>
|
|
</ul>
|
|
<li><strong>Superscript</strong>
|
|
<ul>
|
|
<li><a href="#SUP">\*[SUP]</a> (set superscript)
|
|
<li><a href="#CONDSUP">\*[CONDSUP]</a> (set condensed superscript)
|
|
<li><a href="#EXTSUP">\*[EXTSUP}</a> (set extended superscript)
|
|
</ul>
|
|
</ul>
|
|
|
|
<!---ALIAS--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="ALIAS"><h3><u>Rename macros</u></h3></a>
|
|
<br>
|
|
Macro: <strong>ALIAS</strong> <var><new name> <old name></var>
|
|
|
|
<p>
|
|
The <strong>ALIAS</strong> macro may well be your best friend. With it,
|
|
you can change the name of a macro to anything you like
|
|
(provided the new name is not already being used by
|
|
<strong>mom</strong>; see the
|
|
<a href="reserved.html#RESERVED">list of reserved words</a>).
|
|
<p>
|
|
Groff has always been a bit intimidating for new users because
|
|
its standard macro packages use very terse macro names.
|
|
<strong>Mom</strong> doesn't like people to feel intimidated; she wants
|
|
them to feel welcome. Consequently, she tries for easy-to-grasp,
|
|
self-explanatory macro names. However, <strong>mom</strong> knows
|
|
that people have their own ways of thinking, their own preferences,
|
|
their own habits. Some of her macro names may not suit you; they
|
|
might be too long, or aren't what you automatically think of
|
|
when you want to do a particular thing, or might conflict with habits
|
|
you've developed over the years.
|
|
<p>
|
|
If you don't like one of <strong>mom</strong>'s macro names,
|
|
say, PAGEWIDTH, change it, like this:
|
|
<p>
|
|
<pre>
|
|
.ALIAS PW PAGEWIDTH
|
|
| |
|
|
new__| |__official
|
|
name name
|
|
</pre>
|
|
|
|
The first argument to <strong>ALIAS</strong> is the new name you want
|
|
for a macro. The second is the "official" name by
|
|
which the macro is normally invoked. After <strong>ALIAS</strong>,
|
|
either can be used.
|
|
<p>
|
|
Note that in <strong>ALIAS</strong>, you do NOT include the period
|
|
(dot) that precedes the macro when it's a
|
|
<a href="definitions.html#TERMS_CONTROLLINES">control line</a>.
|
|
<p>
|
|
<strong>NOTE:</strong> If you use <strong>ALIAS</strong> a lot,
|
|
and always for the same things, consider creating an aliases
|
|
file of the form
|
|
<p>
|
|
<pre>
|
|
.ALIAS <new name> <old name>
|
|
.ALIAS <new name> <old name>
|
|
.ALIAS <new name> <old name>
|
|
...etc
|
|
</pre>
|
|
|
|
Put the file someplace convenient and source it at the
|
|
beginning of your documents using the groff
|
|
<a href="definitions.html#TERMS_PRIMITIVES">primitive</a>
|
|
<strong>.so</strong>. Assuming that you've created an aliases file
|
|
called mom_aliases in your home directory under a directory
|
|
called <code>Mom</code>, you'd source it by placing
|
|
<p>
|
|
<pre>
|
|
.so /home/<username>/Mom/mom_aliases
|
|
</pre>
|
|
|
|
at the top of your documents.
|
|
<p>
|
|
If you share documents that make use of an alias file, remember that
|
|
other people don't have the file! Paste the whole thing at the top
|
|
of your documents, please.
|
|
<p>
|
|
<strong>EXPERTS:</strong> <strong>ALIAS</strong> is an alias of
|
|
<code>.als</code>. You can use either, or mix 'n' match with
|
|
impunity.
|
|
<br>
|
|
|
|
<!---SILENT--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="SILENT"><h3><u>Hide input lines from output</u></h3></a>
|
|
<br>
|
|
Macro: <strong>SILENT</strong> <var>toggle</var>
|
|
<br>
|
|
Alias: <strong>COMMENT</strong>
|
|
|
|
<p>
|
|
Sometimes, you want to "hide"
|
|
<a href="definitions.html#TERMS_INPUTLINE">input lines</a>
|
|
from final output. This is most likely to be the case when setting
|
|
up string tabs (see the
|
|
<a href="STRING_TABS_TUT">quickie tutorial on string tabs</a>
|
|
for an example), but there are other places where you might want input
|
|
lines to be invisible as well. Any place you don't want input lines
|
|
to appear in the output, use the <strong>SILENT</strong> macro.
|
|
<p>
|
|
<strong>SILENT</strong> is a toggle. Invoking it without an argument
|
|
turns it on; any argument turns it off. E.g.,
|
|
<p>
|
|
<pre>
|
|
.SILENT
|
|
A line of text
|
|
.SILENT OFF
|
|
</pre>
|
|
|
|
The line "A line of text" will not appear in the
|
|
output copy.
|
|
<p>
|
|
<strong>SILENT</strong> is aliased as <strong>COMMENT</strong>.
|
|
If you want to insert non-printing comments into your documents,
|
|
you may prefer this.
|
|
<p>
|
|
<strong>NOTE: SILENT</strong> does not automatically break an
|
|
<a href="definitions.html#TERMS_INPUTLINE">input line</a>
|
|
(see
|
|
<a href="typesetting.html#BR">BR</a>)
|
|
when you're in one of the
|
|
<a href="definitions.html#TERMS_FILLED">fill modes</a>
|
|
(<a href="typesetting.html#JUSTIFY">JUSTIFY</a>
|
|
or
|
|
<a href="typesetting.html#QUAD">QUAD L | R | C | J</a>).
|
|
The same applies to tabs
|
|
(<a href="typesetting.html#TAB_SET">typesetting</a>
|
|
or
|
|
<a href="typesetting.html#ST">string</a>)
|
|
to which you've passed the <strong>J</strong> or <strong>QUAD</strong>
|
|
argument. You must insert <code>.BR</code> yourself, or risk a
|
|
portion of your text disappearing into a black hole.
|
|
<br>
|
|
|
|
<!---TRAP--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="TRAP"><h3><u>Suspend/re-invoke traps</u></h3></a>
|
|
<br>
|
|
Macro: <strong>TRAP</strong> <var>toggle</var>
|
|
|
|
<p>
|
|
Traps are vertical positions on the output page at which you or
|
|
<strong>mom</strong> have instructed groff to start doing
|
|
something automatically. Commonly, this is near the bottom of
|
|
the page, where automatic behind-the-scenes processing is needed
|
|
in order for one page to finish and another to start.
|
|
<p>
|
|
Sometimes, traps get sprung when you don't want them, notably
|
|
when using the
|
|
<a href="#EL">EL</a>
|
|
and
|
|
<a href="#TN">TN</a>
|
|
macros. If this happens, surround just the offending macros and
|
|
input lines with
|
|
<p>
|
|
<pre>
|
|
.TRAP OFF
|
|
...
|
|
.TRAP
|
|
</pre>
|
|
|
|
<strong>TRAP</strong> is a toggle, therefore any argument
|
|
turns it off (i.e. suspends the trap), and no argument turns it
|
|
(back) on.
|
|
<p>
|
|
Have a look at the <strong>IMPORTANT</strong> sections
|
|
of <strong>EL</strong> and <strong>TN</strong> to see
|
|
<strong>TRAP</strong> in action.
|
|
<br>
|
|
|
|
<!---SMARTQUOTES--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="SMARTQUOTES"><h3><u>Smartquotes</u></h3></a>
|
|
<br>
|
|
Macro: <strong>SMARTQUOTES</strong> <var>toggle</var>
|
|
|
|
<p>
|
|
<strong>SMARTQUOTES</strong> converts all instances of the
|
|
inch-mark, (<kbd>"</kbd> -- also called a "doublequote"),
|
|
into the appropriate instances of true open- and close-doublequotes.
|
|
<p>
|
|
Typographically, there is a difference between the inch-mark and
|
|
doublequotes -- a BIG difference. Sadly, typewriters and computer
|
|
keyboards supply only one: the inch-mark. While using inches for
|
|
doublequotes is, and always has been, acceptable in typewriter-style
|
|
copy, it has never been, and, God willing, never will be acceptable in
|
|
typeset copy. Failure to turn inches into quotes is the first thing
|
|
a professional typesetter notices in documents prepared by amateurs.
|
|
And you don't want to look like an amateur, do you?
|
|
<p>
|
|
When preparing documents for typesetting, by all means, use the
|
|
inch-mark. Just make sure to turn <strong>SMARTQUOTES</strong>
|
|
on. <strong>SMARTQUOTES</strong> is a toggle, so invoking it with
|
|
no argument turns it on, and invoking it with any argument at all
|
|
turns it off.
|
|
<p>
|
|
If you're using the
|
|
<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
|
|
with
|
|
<a href="#PRINTSTYLE">PRINTSTYLE TYPESET</a>,
|
|
<strong>SMARTQUOTES</strong> is on by default; with
|
|
<a href="#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
|
|
it's off by default (and should probably stay that way).
|
|
<p>
|
|
<strong>NOTE:</strong> <strong>SMARTQUOTES</strong> does not work on
|
|
single quotes, which most people input with the apostrophe (found at
|
|
the right-hand end of the "home row" on a QWERTY keyboard).
|
|
Groff will interpret all instances of the apostrophe as an apostrophe,
|
|
making the symbol useless as an open-single-quote. For open single
|
|
quotes, input the backtick character typically found under the tilde
|
|
on most keyboards. (Pour nous autres, "backtick" veut dire
|
|
l'accent grave.)
|
|
Here's an example of correct input copy with single quotes:
|
|
<p>
|
|
<pre>
|
|
"But she said, `I don't want to!'"
|
|
</pre>
|
|
|
|
<strong>ADDITIONAL NOTE:</strong> Whether or not you have
|
|
<strong>SMARTQUOTES</strong> turned on, get into the habit of entering
|
|
the foot- and inch-marks, when you need them, with the
|
|
<a href="definitions.html#TERMS_INLINES">inline escapes</a>
|
|
<strong>\*[FOOT]</strong> and <strong>\*[INCH]</strong>, instead
|
|
of <kbd>'</kbd> and <kbd>"</kbd>.
|
|
<br>
|
|
|
|
<!---CAPS--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="CAPS"><h3><u>Convert to upper case</u></h3></a>
|
|
<br>
|
|
Macro: <strong>CAPS</strong> <var>toggle</var>
|
|
|
|
<p>
|
|
<strong>CAPS</strong> converts all lower case letters to upper
|
|
case. Primarily, it's a support macro used by the
|
|
<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>,
|
|
but you may find it helpful on occasion. <strong>CAPS</strong>
|
|
is a toggle, therefore no argument turns it on, any argument
|
|
turns it off.
|
|
<p>
|
|
<pre>
|
|
.CAPS
|
|
All work and no play makes Jack a dull boy.
|
|
.CAPS OFF
|
|
</pre>
|
|
|
|
produces, on output
|
|
<p>
|
|
<pre>
|
|
ALL WORK AND NO PLAY MAKES JACK A DULL BOY.
|
|
</pre>
|
|
|
|
<!---UNDERSCORE--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="UNDERSCORE"><h3><u>Single underscore</u></h3></a>
|
|
<br>
|
|
Macro: <strong>UNDERSCORE</strong> <var>[ <distance below baseline> ] "<string>"</var>
|
|
<br>
|
|
<em>*Optional argument requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
|
|
|
|
<p>
|
|
By default, <strong>UNDERSCORE</strong> places an underscore 2 points
|
|
beneath the required
|
|
<a href="definitions.html#TERMS_STRINGARGUMENT">string argument</a>.
|
|
The string must be enclosed in double-quotes, like this:
|
|
<p>
|
|
<pre>
|
|
.UNDERSCORE "Unmonitored monopolies breed high prices and poor products."
|
|
</pre>
|
|
|
|
If you wish to change the distance of the rule from the
|
|
baseline, use the optional argument <i><distance below
|
|
baseline></i> (with a unit of measure).
|
|
<p>
|
|
<pre>
|
|
.UNDERSCORE 3p "Unmonitored monopolies breed high prices and poor products."
|
|
</pre>
|
|
|
|
The above places the underscore 3 points below the baseline.
|
|
<p>
|
|
<a name="NOTES_UNDERSCORE"></a>
|
|
<strong>NOTES:</strong>
|
|
<br>
|
|
<strong>UNDERSCORE</strong> does not work across line breaks in output
|
|
copy, which is to say that you can't underscore a multi-line passage
|
|
simply by putting the text of the whole thing in the string you pass
|
|
to <strong>UNDERSCORE</strong>. Each
|
|
<a href="definitions.html#TERMS_OUTPUTLINE">output line</a>
|
|
or portion of an output line you want underscored must be plugged
|
|
separately into <strong>UNDERSCORE</strong>. Bear in mind, though,
|
|
that underscoring should at best be an occasional effect in typeset
|
|
copy. If you want to emphasize an entire passage, it's much, much
|
|
better to change fonts (e.g. to italic or bold).
|
|
<p>
|
|
You can easily and successfully underline entire passages in simulated
|
|
typewriter-style copy (i.e. if your font is Courier, or you're using
|
|
the document processing macro
|
|
<a href="#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>),
|
|
with the
|
|
<a href="#UNDERLINE">UNDERLINE</a>
|
|
macro. <strong>UNDERLINE</strong> is designed specifically for this
|
|
purpose, but works only with the Courier font.
|
|
<p>
|
|
<strong>Mom</strong> doesn't always get the position and length
|
|
of the underscore precisely right in
|
|
<a href="definitions.html#TERMS_JUST">justified</a>
|
|
copy, although she's fine with all the other
|
|
<a href="definitions.html#TERMS_FILLED">fill modes</a>,
|
|
as well as with the no-fill modes. As of this writing, I have
|
|
no solution to the occasional problems with justified copy.
|
|
<p>
|
|
<strong>UNDERSCORE</strong> tends to confuse
|
|
<strong>gxditview</strong>, even though the output, when
|
|
printed, looks fine. Generally, I recommend using <strong>gv</strong>
|
|
to preview files anyway. See the section on
|
|
<a href="#PREVIEWING">previewing</a>.
|
|
<br>
|
|
|
|
<!---UNDERSCORE2--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="UNDERSCORE2"><h3><u>Double underscore</u></h3></a>
|
|
<br>
|
|
Macro: <strong>UNDERSCORE2</strong> <var>[ <distance below baseline> [ <distance between rules> ] ] "<string>"</var>
|
|
<br>
|
|
<em>*Optional arguments require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
|
|
|
|
<p>
|
|
By default, <strong>UNDERSCORE2</strong> places a double underscore
|
|
2 points beneath the required
|
|
<a href="definitions.html#TERMS_STRINGARGUMENT">string argument</a>.
|
|
The string must be enclosed in double-quotes, like this:
|
|
<p>
|
|
<pre>
|
|
.UNDERSCORE2 "Unmonitored monopolies breed high prices and poor products."
|
|
</pre>
|
|
|
|
The default distance between the two rules is 2 points.
|
|
<p>
|
|
If you wish to change the distance of the double underscore from
|
|
the baseline, use the optional argument <i><distance below
|
|
baseline></i> (with a unit of measure), e.g.,
|
|
<p>
|
|
<pre>
|
|
.UNDERSCORE2 3p "Unmonitored monopolies breed high prices and poor products."
|
|
</pre>
|
|
|
|
which places the double underscore 3 points below the baseline.
|
|
<p>
|
|
If you wish to change the distance between the two rules as
|
|
well, use the second optional argument <i><distance between
|
|
rules></i> (with a unit of measure). Be aware that you must
|
|
give a value for the first optional argument if you want to use
|
|
the second.
|
|
<p>
|
|
<strong>NOTE:</strong> the same restrictions and caveats apply
|
|
to <strong>UNDERSCORE2</strong> as to
|
|
<strong>UNDERSCORE</strong>. See the
|
|
<a href="#NOTES_UNDERSCORE">NOTES</a>
|
|
for <strong>UNDERSCORE</strong>.
|
|
<br>
|
|
|
|
<!---UNDERLINE--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="UNDERLINE"><h3><u>Underline text -- Courier font only!</u></h3></a>
|
|
<br>
|
|
Macro: <strong>UNDERLINE</strong> <var>toggle</var>
|
|
|
|
<p>
|
|
If your font is Courier, or you're using the document processing macro
|
|
<a href="#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
|
|
<strong>UNDERLINE</strong> allows you to underline words and
|
|
passages that, in typeset copy, would be italicised. You invoke
|
|
<strong>UNDERLINE</strong> as you do with all toggle macros --
|
|
by itself (i.e. with no argument) to initiate underlining, and
|
|
with any argument to turn underlining off.
|
|
<p>
|
|
When on, <strong>UNDERLINE</strong> underlines letters, words
|
|
and numbers, but not punctuation or spaces. This makes for more
|
|
readable copy than a solid underline.
|
|
<p>
|
|
<strong>NOTE:</strong> Underlining may also be turned on and off
|
|
<a href="definitions.html#TERMS_INLINES">inline</a>
|
|
with the escapes
|
|
<a href="#UL">\*[UL]...\*[ULX].</a>
|
|
<br>
|
|
|
|
<!---UL--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="UL"><h3><u>Inline escape for underlining -- Courier font only!</u></h3></a>
|
|
<br>
|
|
Inline: <strong>\*[UL]...\*[ULX]</strong>
|
|
|
|
<p>
|
|
If your font is Courier, or you're using the document processing macro
|
|
<a href="#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
|
|
<strong>\*[UL]...\*[ULX]</strong> underlines words and
|
|
passages that, in typeset copy, would be italicised.
|
|
<p>
|
|
<strong>\*[UL]</strong> underlines all letters, words and numbers
|
|
following it, but not punctuation or spaces. This makes for more
|
|
readable copy than a solid underline. When you no longer want
|
|
underlining, <strong>\*[ULX]</strong> turns underlining off.
|
|
<p>
|
|
The macro
|
|
<a href="#UNDERLINE">UNDERLINE</a>
|
|
and the inline escape <strong>\*[UL]</strong> are functionally
|
|
identical, hence
|
|
<p>
|
|
<pre>
|
|
.FAM C
|
|
.FT R
|
|
.PT_SIZE 12
|
|
.LS 24
|
|
.SS 0
|
|
.QUAD LEFT
|
|
Which should I heed?
|
|
.UNDERLINE
|
|
Just do it
|
|
.UNDERLINE OFF
|
|
or
|
|
.UNDERLINE
|
|
just say no?
|
|
.UNDERLINE OFF
|
|
</pre>
|
|
|
|
produces the same result as
|
|
<p>
|
|
<pre>
|
|
.FAM C
|
|
.FT R
|
|
.PT_SIZE 12
|
|
.LS 24
|
|
.SS 0
|
|
.QUAD LEFT
|
|
Which should I heed? \*[UL]Just do it\*[ULX] or \*[UL]just say no?\*[ULX]
|
|
</pre>
|
|
|
|
<!---PAD--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="PAD"><h3><u>Insert space into lines</u></h3></a>
|
|
<br>
|
|
Macro: <strong>PAD</strong> <var>"<string with pad markers inserted>"</var>
|
|
|
|
<p>
|
|
With <strong>PAD</strong>, you can insert unspecified amounts of
|
|
whitespace into a line.
|
|
<p>
|
|
<strong>PAD</strong> calculates the difference between the length of
|
|
text on the line and the distance remaining to its end, then inserts
|
|
the difference (as whitespace) at the place(s) you specify.
|
|
<p>
|
|
Take, for example, the following relatively common typesetting
|
|
situation, found at the bottom of legal agreements:
|
|
<p>
|
|
<pre>
|
|
Date Signature |
|
|
</pre>
|
|
|
|
The person signing the agreement is supposed to fill in the date
|
|
as well as a signature. Space needs to be left for both, but
|
|
the exact amount is neither known, nor important. All that
|
|
matters is that there be a little space after Date, and rather
|
|
more space after Signature. (In the above, | represents
|
|
the end of the line at the prevailing line length.)
|
|
<p>
|
|
The
|
|
<a href="#PADMARKER">pad marker</a>
|
|
(see below) is # (the pound or number sign on your keyboard) and
|
|
can be used multiple times in a line. With that in mind, here's how
|
|
you'd input the Date/Signature line (assuming a length of 30 picas):
|
|
<p>
|
|
<pre>
|
|
.LL 30P
|
|
.PAD "Date#Signature###"
|
|
</pre>
|
|
|
|
When the line is output, the space remaining on the line, after
|
|
"Date" and "Signature" have been taken into
|
|
account, is split into four (because there are four # signs).
|
|
One quarter of the space is inserted between Date and Signature,
|
|
the remainder is inserted after Signature.
|
|
<a name="PAD_EXAMPLE"></a>
|
|
<p>
|
|
One rarely wants merely to insert space in a line; one usually
|
|
wants to fill it with something, hence <strong>PAD</strong> is
|
|
particularly useful in conjunction with
|
|
<a href="#STRING_TABS">string tabs</a>.
|
|
The following uses the Date/Signature example above, but adds
|
|
rules into the whitespace through the use of string tabs and
|
|
groff's line drawing function,
|
|
<a href="#INLINE_LINEDRAWING_GROFF">\l</a>.
|
|
<p>
|
|
<pre>
|
|
.LL 30P
|
|
.PAD "Date\*[ST1]#\*[ST1X]Signature\*[ST2]###\*[ST2X]"
|
|
.EL
|
|
.ST 1 J
|
|
.ST 2 J
|
|
.TAB 1
|
|
\l'\n(.lu'
|
|
.TN
|
|
\l'\n(.lu'
|
|
.TQ
|
|
</pre>
|
|
|
|
If you're not a typesetter, and if you're new to groff, the
|
|
example probably looks like gibberish. My apologies. However,
|
|
remember that typesetting is a craft, and without having studied
|
|
the craft, it takes a while to grasp its concepts. Also,
|
|
although <strong>mom</strong> tries very hard to provide
|
|
consistent-looking, comprehensible alternatives to groff's
|
|
native
|
|
<a href="definitions.html#TERMS_INLINES">inline escapes</a>,
|
|
<strong>mom</strong> has not yet found a replacement for
|
|
<strong>\l</strong>.
|
|
<p>
|
|
Basically, what the example does is:
|
|
<br>
|
|
<ol>
|
|
<li>Pads the Date/Signature line (using the pad marker #),
|
|
encloses the padded space with two string tabs markers,
|
|
and outputs the line
|
|
<br>
|
|
<li>Sets the two string tabs (notice the use of
|
|
<a href="#EL">EL</a>
|
|
beforehand; you don't want <strong>mom</strong>
|
|
to advance a line at this point)
|
|
<br>
|
|
<li>Calls the first string tab and draws a rule to its full
|
|
length (<kbd>\l'\n(.lu'</kbd>; for an easier way to draw a rule
|
|
that fills a tab, see
|
|
<a href="inlines.html#INLINE_RULE_MOM">Full measure
|
|
rules</a>).
|
|
<br>
|
|
<li>Calls the second tab with
|
|
<a href="#TN">TN</a>
|
|
(which moves to tab 2 and stays on the same baseline)
|
|
then draws a rule to the full length of string tab 2
|
|
</ol>
|
|
<br>
|
|
Often, when setting up string tabs this way, you don't want the
|
|
padded line to print immediately. To accomplish this, use
|
|
<a href="#SILENT">SILENT</a>.
|
|
See the <a href="#STRING_TABS_TUT">quickie tutorial on string tabs</a>
|
|
for an example.
|
|
<p>
|
|
<strong>NOTE:</strong> Because the pound sign (#) is used as the pad
|
|
marker, you can't use it as a literal part of the pad string. If you
|
|
need the sign to appear in the text of a padded line, change the pad
|
|
marker with <a href="#PAD_MARKER">PAD_MARKER</a>. Also, be aware
|
|
that # as a pad marker only applies within the <strong>PAD</strong>
|
|
macro; at all other times it prints literally, just as you'd expect.
|
|
<p>
|
|
Another important consideration when using <strong>PAD</strong> is that
|
|
because the string must be enclosed in double-quotes, you can't use the
|
|
double-quote (") as part of the string. The way to circumvent
|
|
this is to use the groff
|
|
<a href="definitions.html#TERMS_INLINES">inline escapes</a>
|
|
<strong>\(lq</strong> and <strong>\(rq</strong> (leftquote and
|
|
rightquote respectively) whenever double-quotes are required in the
|
|
string passed to <strong>PAD</strong>.
|
|
<br>
|
|
|
|
<!---PAD_MARKER--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="PAD_MARKER"><h3><u>Change/set the marker used with PAD</u></h3></a>
|
|
<br>
|
|
Macro: <strong>PAD_MARKER</strong> <var><character to use as the pad marker></var>
|
|
|
|
<p>
|
|
If you need to change <strong>mom</strong>'s default pad marker
|
|
(#), either because you want a literal # in the padded line,
|
|
or simply because you want to use another character instead, use
|
|
<strong>PAD_MARKER</strong>, whose argument is the new pad marker
|
|
character you want.
|
|
<p>
|
|
<pre>
|
|
.PAD_MARKER @
|
|
</pre>
|
|
|
|
changes the pad marker to @.
|
|
<p>
|
|
Once you've changed the pad marker, the new marker remains in
|
|
effect for every instance of
|
|
<a href="#PAD">PAD</a>
|
|
until you change it again (say, back to the pound sign).
|
|
<br>
|
|
|
|
<!---\*[LEADER]--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="LEADER"><h3><u>Inline escape to add leaders to a line</u></h3></a>
|
|
<br>
|
|
Inline: <strong>\*[LEADER]</strong>
|
|
|
|
<p>
|
|
Whenever you want to fill a line or tab with
|
|
<a href="definitions.html#TERMS_LEADER">leaders</a>,
|
|
use the
|
|
<a href="definitions.html#TERMS_INLINES">inline escape</a>
|
|
<strong>\*[LEADER]</strong>. The remainder of the line or tab will be
|
|
filled with the leader character. <strong>Mom</strong>'s
|
|
default leader character is a period (dot), but you can change
|
|
it to any character you like with
|
|
<a href="#LEADER_CHARACTER">LEADER_CHARACTER</a>.
|
|
<p>
|
|
<strong>NOTE:</strong> <strong>\*[LEADER]</strong> fills lines
|
|
or tabs right to their end. You cannot insert leaders into a
|
|
line or tab and have text following the leader on the same line
|
|
or in the same tab. Should you wish to achieve such an effect
|
|
typographically, create tabs for each element of the line and
|
|
fill them appropriately with the text and leaders you need.
|
|
<a href="#STRING_TABS">String tabs</a> are perfect for this. An
|
|
example follows.
|
|
<p>
|
|
<pre>
|
|
.LL 30P
|
|
.PAD "Date\*[ST1]#\*[ST1X]Signature\*[ST2]###\*[ST2X]"
|
|
.EL
|
|
.ST 1 J
|
|
.ST 2 J
|
|
.TAB 1
|
|
\*[LEADER]
|
|
.TN
|
|
\*[LEADER]
|
|
.TQ
|
|
</pre>
|
|
|
|
The <strong>PAD</strong> line sets the words Date and Signature,
|
|
and marks string tabs around the pad space inserted in the line.
|
|
The string tabs are then "set", called, and filled
|
|
with leaders. The result looks like this:
|
|
<p>
|
|
<pre>
|
|
Date.............Signature.....................................
|
|
</pre>
|
|
|
|
<!---LEADER_CHARACTER--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="LEADER_CHARACTER"><h3><u>Change/set the leader character</u></h3></a>
|
|
<br>
|
|
Macro: <strong>LEADER_CHARACTER</strong> <var><character></var>
|
|
|
|
<p>
|
|
<strong>LEADER_CHARACTER</strong> takes one argument: a single
|
|
character you would like to be used for
|
|
<a href="definitions.html#TERMS_LEADER">leaders</a>.
|
|
(See
|
|
<a href="#LEADER">\*[LEADER]</a> for an explanation of how to
|
|
fill lines with leaders.)
|
|
<p>
|
|
For example, to change the leader character from <strong>mom</strong>'s
|
|
default (a period) to the underscore character, enter
|
|
<p>
|
|
<pre>
|
|
.LEADER_CHARACTER _
|
|
</pre>
|
|
|
|
<!---DROPCAP--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="DROPCAP"><h3><u>Drop caps</u></h3></a>
|
|
<br>
|
|
Macro: <strong>DROPCAP</strong> <var><dropcap letter> <number of lines to drop> [ COND <percentage> | EXT <percentage> ]</var>
|
|
|
|
<p>
|
|
The first two arguments to <strong>DROPCAP</strong> are the letter you
|
|
want to be the
|
|
<a href="definitions.html#TERMS_DROPCAP">drop cap</a>
|
|
and the number of lines you want it to drop. By default,
|
|
<strong>mom</strong> uses the current family and font for the drop cap.
|
|
<p>
|
|
The optional argument (COND or EXT) indicates that you want the
|
|
drop cap condensed (narrower) or extended (wider). If you use
|
|
<strong>COND</strong> or <strong>EXT</strong>, you must follow the
|
|
argument with the percentage of the letter's normal width you want
|
|
it condensed or extended. No percent sign (%) is required.
|
|
<p>
|
|
<strong>Mom</strong> will do her very best to get the drop cap to
|
|
line up with the first line of text indented beside it, then set
|
|
the correct number of indented lines, and restore your left margin
|
|
when the number of drop cap lines has been reached.
|
|
<p>
|
|
Beginning a paragraph with a drop cap "T" looks
|
|
like this:
|
|
<p>
|
|
<pre>
|
|
.DROPCAP T 3 COND 90
|
|
he 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...
|
|
</pre>
|
|
|
|
The drop cap, slightly condensed but in the current family and font,
|
|
will be three lines tall, with whatever text fills those three
|
|
lines indented to the right of the letter. The remainder of the
|
|
paragraph's text will revert to the left margin.
|
|
<p>
|
|
<strong>NOTE:</strong> When using the
|
|
<a href="docprocessing.html#DOCPROCESSING">document processing macro</a>
|
|
<a href="#PP">PP</a>,
|
|
<strong>DROPCAP</strong> only works
|
|
<br>
|
|
<ul>
|
|
<li>with initial paragraphs (i.e. at the start of the document,
|
|
or after
|
|
<a href="#HEAD">HEAD</a>),
|
|
<li>when <strong>DROPCAP</strong> comes immediately after <strong>PP</strong>,
|
|
<li>and when the
|
|
<a href="docprocessing.html#PRINTSTYLE">PRINTSTYLE</a>
|
|
is TYPESET.
|
|
</ul>
|
|
<br>
|
|
If these conditions aren't met, <strong>DROPCAP</strong> is silently ignored.
|
|
<p>
|
|
<strong>WARNING:</strong> <strong>DROPCAP</strong> puts a bit of
|
|
a strain on resource-challenged systems. If you have such a
|
|
system and use drop caps extensively in a document, be prepared
|
|
for a wait while <strong>mom</strong> does her thing.
|
|
|
|
<h3><a name="DROPCAP_SUPPORT"><u>Support macros for DROPCAP</u></a></h3>
|
|
Drop caps are the bane of most typesetters' existence. It's
|
|
very difficult to get the size of the drop cap right for the
|
|
number of drop lines, especially if the drop cap is in a
|
|
different family from the prevailing family of running text.
|
|
Not only that, but there's the gutter around the drop cap to
|
|
take into account, plus the fact that the letter may be too wide
|
|
or too narrow to look anything but odd or misplaced.
|
|
<p>
|
|
<strong>Mom</strong> solves the last of these problems with the
|
|
<strong>COND</strong> and <strong>EXT</strong> arguments. The
|
|
rest she solves with macros that change the default behaviour of
|
|
<strong>DROPCAP</strong>, namely
|
|
<p>
|
|
<a href="#DROPCAP_FAMILY">DROPCAP_FAMILY</a>,
|
|
<br>
|
|
<a href="#DROPCAP_FONT">DROPCAP_FONT</a>,
|
|
<br>
|
|
<a href="#DROPCAP_ADJUST">DROPCAP_ADJUST</a>
|
|
<br>
|
|
and
|
|
<br>
|
|
<a href="#DROPCAP_GUTTER">DROPCAP_GUTTER</a>.
|
|
<p>
|
|
These macros must, of course, come before you invoke
|
|
<strong>DROPCAP</strong>.
|
|
|
|
<h3><a name="DROPCAP_FAMILY"><u>DROPCAP_FAMILY</u></a></h3>
|
|
|
|
Set the drop cap family by giving
|
|
<strong>DROPCAP_FAMILY</strong> the name of the family you want,
|
|
e.g.
|
|
<p>
|
|
<pre>
|
|
.DROPCAP_FAMILY H
|
|
</pre>
|
|
|
|
which will set the family to Helvetica for the drop cap only.
|
|
|
|
<h3><a name="DROPCAP_FONT"><u>DROPCAP_FONT</u></a></h3>
|
|
|
|
Set the drop cap font by giving
|
|
<strong>DROPCAP_FONT</strong> the name of the font you want,
|
|
e.g.
|
|
<p>
|
|
<pre>
|
|
.DROPCAP_FONT I
|
|
</pre>
|
|
|
|
which will set the font to italic for the drop cap only.
|
|
|
|
<h3><a name="DROPCAP_ADJUST"><u>DROPCAP_ADJUST</u></a></h3>
|
|
|
|
If the size <strong>mom</strong> calculates for the drop cap
|
|
isn't precisely what you want, you can increase or decrease it
|
|
with <strong>DROPCAP_ADJUST</strong>, like this:
|
|
e.g.
|
|
<p>
|
|
<pre>
|
|
.DROPCAP_ADJUST +1
|
|
or
|
|
.DROPCAP_ADJUST -.75
|
|
</pre>
|
|
|
|
<strong>DROPCAP_ADJUST</strong> only understands
|
|
<a href="definitions.html#TERMS_PICASPOINTS">points</a>,
|
|
therefore do not append any
|
|
<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
|
|
to the argument. And always be sure to preprend the plus or
|
|
minus sign, depending on whether you want the drop cap larger or
|
|
smaller.
|
|
|
|
<h3><a name="DROPCAP_GUTTER"><u>DROPCAP_GUTTER</u></a></h3>
|
|
|
|
By default, <strong>mom</strong> puts three points of space
|
|
between the drop cap and the text indented beside it. If you
|
|
want another value, use <strong>DROPCAP_GUTTER</strong> (with a
|
|
unit of measure), like this:
|
|
<p>
|
|
<pre>
|
|
.DROPCAP_GUTTER 6p
|
|
</pre>
|
|
|
|
<!---\*[SUP]--->
|
|
|
|
<hr width="66%" align="left">
|
|
<a name="SUP"><h3><u>Superscript</u></h3></a>
|
|
<br>
|
|
Inlines: <strong>\*[SUP]...\*[SUPX]</strong>
|
|
|
|
<p>
|
|
Superscripts are accomplished
|
|
<a href="definitions.html#TERMS_INLINES">inline</a>.
|
|
Whenever you need one, typically for numerals, all you need to
|
|
do is surround the superscript with the inlines above.
|
|
<strong>\*[SUP]</strong> begins superscripting;
|
|
<strong>\*[SUPX]</strong> turns it off.
|
|
<a name="CONDSUP"></a>
|
|
<a name="EXTSUP"></a>
|
|
<p>
|
|
If your running type is
|
|
<a href="#COND_INLINE">pseudo-condensed</a>
|
|
or
|
|
<a href="#EXT_INLINE">pseudo-extended</a>
|
|
and you want your superscripts to be equivalently pseudo-condensed or
|
|
-extended, use <strong>\*[CONDSUP]...\*[CONDSUPX]</strong> or
|
|
<strong>\*[EXTSUP]...\*[EXTSUPX]</strong>.
|
|
<p>
|
|
The superscript inlines are primarily used by the
|
|
<a href="docprocessing.html#DOCPROCESSING">document processing macros</a>
|
|
for automatic generation of numbered footnotes. However, you may
|
|
find them useful for other purposes.
|
|
<p>
|
|
<strong>NOTE:</strong> <strong>Mom</strong> does a pretty fine job of
|
|
making superscripts look good in any font and at any size. If you're
|
|
fussy, though (and I am), about precise vertical placement, kerning,
|
|
weight, size, and so on, you may want to roll your own solution.
|
|
And sorry, there's no <strong>mom</strong> equivalent for subscripts.
|
|
I'm neither a mathematician nor a chemist, so I don't need them.
|
|
Of course, anyone who wishes to contribute a subscript routine to
|
|
<strong>mom</strong> will receive eternal blessings not only in this
|
|
lifetime, but in all lifetimes to come.
|
|
|
|
<p>
|
|
<hr>
|
|
<a href="inlines.html#TOP">Next</a>
|
|
<a href="typesetting.html#TOP">Prev</a>
|
|
<a href="#TOP">Top</a>
|
|
<a href="toc.html">Back to Table of Contents</a>
|
|
</body>
|
|
</html>
|