summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPTPi <PTPi>2013-10-30 19:15:09 +0000
committerPTPi <PTPi>2013-10-30 19:15:09 +0000
commit37f300566c617f30b63eb8d708f418a30df493d8 (patch)
tree128fe8504df2980912a58502f723c8cba73f197d
parent50a975b230d9cb96f0fe800ffad19f2467e4d402 (diff)
downloadgroff-37f300566c617f30b63eb8d708f418a30df493d8.tar.gz
Expanded and improved float and tbl handling.
Fixes to AUTOLEAD, SMARTQUOTES, and CODE from patches supplied by Robin Haberkorn. Doc updates and revisions.
-rw-r--r--contrib/mom/ChangeLog4
-rw-r--r--contrib/mom/NEWS4
-rw-r--r--contrib/mom/examples/mom-pdf.mom15
-rw-r--r--contrib/mom/momdoc/docelement.html2
-rw-r--r--contrib/mom/momdoc/docprocessing.html203
-rw-r--r--contrib/mom/momdoc/headfootpage.html13
-rw-r--r--contrib/mom/momdoc/images.html404
-rw-r--r--contrib/mom/momdoc/letters.html6
-rw-r--r--contrib/mom/momdoc/macrolist.html38
-rw-r--r--contrib/mom/momdoc/reserved.html60
-rw-r--r--contrib/mom/momdoc/toc.html8
-rw-r--r--contrib/mom/momdoc/typesetting.html41
-rw-r--r--contrib/mom/om.tmac1038
13 files changed, 1254 insertions, 582 deletions
diff --git a/contrib/mom/ChangeLog b/contrib/mom/ChangeLog
index 408f8d05..896c9e06 100644
--- a/contrib/mom/ChangeLog
+++ b/contrib/mom/ChangeLog
@@ -1,3 +1,7 @@
+* Wed Oct 30 2013
+
+o Expanded and improved float/tbl handling.
+
* Sat Sep 14 2013
o .TS/.TE extended to support multi-page tables with headers.
diff --git a/contrib/mom/NEWS b/contrib/mom/NEWS
index 077f8f77..08ddabb5 100644
--- a/contrib/mom/NEWS
+++ b/contrib/mom/NEWS
@@ -5,6 +5,10 @@
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
+Release 2.0-b
+-------------
+Improved and expanded float and tbl support.
+
Release 2.0-a
-------------
FORCE argument added to FLOAT; immediately breaks to a new page
diff --git a/contrib/mom/examples/mom-pdf.mom b/contrib/mom/examples/mom-pdf.mom
index 5a03148b..c4e8aa3f 100644
--- a/contrib/mom/examples/mom-pdf.mom
+++ b/contrib/mom/examples/mom-pdf.mom
@@ -1,3 +1,4 @@
+.PAPER A4
.\" Reference macros (metadata)
.TITLE "Producing PDFs" "with groff and mom"
.PDF_TITLE "\*[$TITLE]
@@ -28,7 +29,6 @@
.HEADER_LEFT "James, Schaffter"
.\" Page, style, formatting
.PRINTSTYLE TYPESET
-.PAPER A4
.L_MARGIN 2.5c
.R_MARGIN 2.5c
.B_MARGIN 2.5c
@@ -106,7 +106,7 @@
.TOC_ENTRY_STYLE 2 FONT I
.TOC_LEAD 14
.\"
-.DOCHEADER_ADVANCE 4.5c \" Begin this distance down from top of page
+.DOCHEADER_ADVANCE 5c \" Begin this distance down from top of page
.\"
.START
.\"
@@ -184,7 +184,7 @@ from any part of the document.
Furthermore, \*[cod]NAMED\|<id>\*[codx] stores the text of the
heading for use later on when linking to it (see
.PDF_LINK internal SUFFIX ). +
-If headings are being numbered, the heading number is included.
+If headings are being numbered, the heading number is prepended.
.HEADING 2 NAMED target "Creating destination points at arbitrary locations"
.PP
Any part of a document can be a link destination, not just headings.
@@ -245,11 +245,13 @@ URL. Clicking on them causes a browser window to pop up with the
destination address.
.PP2
The format of the macro to create external links is similar to the
-one for creating internal links links links.
+one for creating internal links:
.COD "\&.PDF_WWW_LINK <url> [PREFIX <text>] [SUFFIX <text>] [\[dq]<hotlink text>\[dq]]"
\*[cod]<url>\*[codx] is any valid URL, usually a web address;
\*[cod]PREFIX\|<text>\*[codx] and \*[cod]SUFFIX\|<text>\*[codx] have
-exactly the same meaning.
+exactly the same meaning, as does \*[cod]<hotlink text>\*[codx],
+which furthermore accepts the same expandos, \*[cod]\[dq]+\[dq]\*[codx] and
+\*[cod]\[dq]*\[dq]\*[codx].
.PP2
.RW .1
If no hotlink text is given, then \*[cod]<url>\*[codx] is
@@ -509,12 +511,11 @@ within mom source files (see
do not require a corresponding \[-P-p<papersize>] option on the
command line. It is even possible to create documents with
unequal-sized pages.
-.NO_SHIM
.HEADING 2 NAMED pdf-diff \
"Differences between pdfmom and pdfroff"
.PP
Several features described in this manual are not available when
-using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff] or
+using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff], or
\[groff]\~\[-Tps]\~\[-mpdfmark].
.SP .25v
.QUAD LEFT
diff --git a/contrib/mom/momdoc/docelement.html b/contrib/mom/momdoc/docelement.html
index 4c2cfcd8..9bd85b44 100644
--- a/contrib/mom/momdoc/docelement.html
+++ b/contrib/mom/momdoc/docelement.html
@@ -3856,7 +3856,7 @@ Tag: FOOTNOTE <kbd class="macro-args">&lt;toggle&gt; [ BREAK | BR ] | INDENT LEF
</div>
<p class="requires">
-&bull;&nbsp;<kbd>&lt;indent value&gt;</kbd> requires a <a href="definitions.html#unitofmeasure">unit of measure</a>
+&bull;&nbsp;<kbd><span style="font-style: normal">&lt;indent value&gt;</span></kbd> requires a <a href="definitions.html#unitofmeasure">unit of measure</a>
<br/>
See <span style="font-style: normal"><a href="#footnote-note">HYPER-IMPORTANT NOTE</a></span>.
</p>
diff --git a/contrib/mom/momdoc/docprocessing.html b/contrib/mom/momdoc/docprocessing.html
index 41df3fe2..9d1c5040 100644
--- a/contrib/mom/momdoc/docprocessing.html
+++ b/contrib/mom/momdoc/docprocessing.html
@@ -96,14 +96,14 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
</ul></li>
</ul>
</div>
-<div class="mini-toc-col-2" style="margin-top: -.5em;">
+<div class="mini-toc-col-2" style="margin-top: -1em;">
<br/>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#doc-lead-adjust"><b>Adjust linespacing to fill pages</b></a>
<ul class="toc-docproc">
<li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
<li><a href="#shim">SHIM</a> &ndash; get document leading back on track
- <ul>
+ <ul class="toc-docproc">
<li><a href="#automatic-shimming">Automatic shimming (headings, etc)</a></li>
</ul></li>
</ul></li>
@@ -121,31 +121,33 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
<li><a href="#columns">COLUMNS</a></li>
<li><a href="#breaking-columns">Breaking columns manually</a>
<ul class="toc-docproc">
- <li><a href="#col-next">COL_NEXT</a></li>
- <li><a href="#col-break">COL_BREAK</a></li>
+ <li><a href="#col-next">COL_NEXT</a> and <a href="#col-break">COL_BREAK</a></li>
</ul></li>
</ul></li>
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#style-after-start">Changing basic type and formatting<br/><span style="display: block; margin-top: -.3em;">parameters after START</span></a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#behaviour"><b>Behaviour of the typesetting macros during document processing</b></a></li>
- <li><a href="docprocessing.html#index-doc-param"><b>Post-START global style change macros</b></a>
+ <li><a href="docprocessing.html#intro-doc-param"><b>Changing document-wide style parameters after START</b></a>
<ul class="toc-docproc">
- <li><a href="#doc-left-margin">DOC_LEFT_MARGIN</a></li>
- <li><a href="#doc-right-margin">DOC_RIGHT_MARGIN</a></li>
- <li><a href="#doc-line-length">DOC_LINE_LENGTH</a></li>
- <li><a href="#doc-family">DOC_FAMILY</a></li>
- <li><a href="#doc-pt-size">DOC_PT_SIZE</a></li>
- <li><a href="#doc-lead">DOC_LEAD</a></li>
- <li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
- <li><a href="#doc-quad">DOC_QUAD</a></li>
+ <li><a href="docprocessing.html#index-doc-param">Post-START global style change macros</a>
+ <ul class="toc-docproc">
+ <li><a href="#doc-left-margin">DOC_LEFT_MARGIN</a></li>
+ <li><a href="#doc-right-margin">DOC_RIGHT_MARGIN</a></li>
+ <li><a href="#doc-line-length">DOC_LINE_LENGTH</a></li>
+ <li><a href="#doc-family">DOC_FAMILY</a></li>
+ <li><a href="#doc-pt-size">DOC_PT_SIZE</a></li>
+ <li><a href="#doc-lead">DOC_LEAD</a></li>
+ <li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
+ <li><a href="#doc-quad">DOC_QUAD</a></li>
+ </ul></li>
</ul></li>
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#terminating">Terminating a document</a></h3>
</div>
</div>
-<div class="rule-medium" style="clear: both;"><hr/></div>
+<div class="rule-short"><hr/></div>
<!-- ==================================================================== -->
@@ -368,7 +370,7 @@ By default, mom automatically applies shimming
<ul>
<li><i>before</i> headings</li>
<li><i>around</i> quotes and blockquotes</li>
- <li><i>after</i> PDF images and floats</li>
+ <li><i>after</i> PDF images, floats, and tables</li>
</ul>
<p>
@@ -391,8 +393,9 @@ or just before
<a href="docelement.html#quote">QUOTE</a>,
<a href="docelement.html#blockquote">BLOCKQUOTE</a>,
<a href="images.html#pdf-image">PDF_IMAGE</a>
-or
<a href="images.html#float">FLOAT</a>.
+or
+<a href="images.html#ts">TS</a>.
</p>
<div class="box-tip">
@@ -1735,47 +1738,46 @@ page with a nasty message.
<p class="tip-bottom">
<span class="important">Just as important:</span>
-PRINTSTYLE <b>must precede any and all page and style parameters
-associated with a document.</b> This applies primarily to, but is by
-no means restricted to, PRINTSTYLE <kbd>TYPESET</kbd>. PRINTSTYLE
-sets up complete templates that include default papersize, margins,
-family, fonts, point sizes, and so on. Therefore, changes to any
-aspect of document style must come afterwards.
-</p>
-</div>
-
-<p>
-<kbd>TYPESET</kbd>, as the argument implies, typesets
-documents (by default in Times Roman; see
-<a href="#typeset-defaults">TYPESET defaults</a>).
-You have full access to all the
-<a href="typesetting.html#macros-typesetting">typesetting macros</a>
-as well as the
-<a href="definitions.html#style-control">style control macros</a>
-of document processing.
-</p>
-
-<p>
-As mentioned above, PRINTSTYLE <kbd>TYPESET</kbd> must come before
-any changes to mom&#8217;s default typographic settings. For
-example,
+PRINTSTYLE <b>must precede any and all page and style
+parameters associated with a document</b> with the exception of
+<kbd>PAPER</kbd>, <kbd>PAGEWIDTH</kbd>, and/or
+<kbd>PAGELENGTH</kbd>, which should be placed at the top of your
+file. PRINTSTYLE sets up complete templates that include default
+margins, family, fonts, point sizes, and so on. Therefore, changes
+to any aspect of document style must come afterwards. For example,
<br/>
<span class="pre-in-pp">
.PAPER A4
.LS 14
+ .QUAD LEFT
.PRINTSTYLE TYPESET
</span>
-will not changes mom&#8217;s default paper size to A4,
-nor her default document leading 14 points, whereas
+will not change mom&#8217;s default document leading to 14 points,
+nor the default justification style (fully justified) to left
+justified, whereas
<br/>
<span class="pre-in-pp">
- .PRINTSTYLE TYPESET
.PAPER A4
+ .PRINTSTYLE TYPESET
.LS 14
+ .QUAD LEFT
</span>
will.
</p>
+</div>
+
+<p>
+<kbd>TYPESET</kbd>, as the argument implies, typesets
+documents (by default in Times Roman; see
+<a href="#typeset-defaults">TYPESET defaults</a>).
+You have full access to all the
+<a href="typesetting.html#macros-typesetting">typesetting macros</a>
+as well as the
+<a href="definitions.html#style-control">style control macros</a>
+of document processing.
+</p>
+
<p>
With <kbd>TYPEWRITE</kbd>, mom does her best to reproduce the look
and feel of typewritten, double-spaced copy (see
@@ -2177,11 +2179,10 @@ PRINTSTYLE.
<div class="box-tip">
<p class="tip">
-<span class="note">Note:</span>
-Don&#8217;t use the macros listed in
+<span class="important">Important:</span>
+Do not use the macros listed in
<a href="#doc-param-macros">Changing document-wide typesetting parameters after START</a>
-prior to START; they are exclusively for use
-afterwards.
+prior to START; they are exclusively for use afterwards.
</p>
</div>
@@ -2288,10 +2289,11 @@ with no underscore. You&#8217;d create a file, let&#8217;s call it
control macros.
<br/>
<span class="pre-in-pp">
- .HEAD_FAMILY H
- .HEAD_FONT BI
- .HEAD_QUAD L
- .HEAD_UNDERLINE OFF
+ .HEADING_STYLE 1 \
+ FAMILY H \
+ FONT BI \
+ QUAD L \
+ NO_UNDERSCORE
</span>
Then, in the preliminary document set-up section of your main file,
you&#8217;d include the style sheet, or template, like this:
@@ -3294,12 +3296,28 @@ the tops of pages after the first.)
Using LS to temporarily change leading within
a document will almost certainly result in a
- bottom margin that doesn&#8217;t align with
- the bottom margin of subsequent pages. You&#8217;ll
+ bottom margin that doesn&#8217;t align with the
+ bottom margin of subsequent pages. You&#8217;ll
need to use the SHIM macro to get mom back on
track when you&#8217;re ready to return to the
document&#8217;s default leading.
+
+ AUTOLEAD &bull;Invoked before START, sets the overall document
+ leading as a function of the overall document
+ point size (ie the point size used in paragraphs);
+ subsequently disabled after START, except for calls
+ to DOC_PT_SIZE
+
+ &bull;DOC_LEAD before DOC_PT_SIZE cancels the AUTOLEAD
+ set before START
+
+ &bull;Invoked after START, remains in effect for all
+ subsequent point size changes made with PT_SIZE,
+ but does not affect the leading of the document
+ element tags (eg HEADING, PP, QUOTE...), or calls
+ to DOC_PT_SIZE
+
QUAD &bull;Changes quad for the duration of the
current tag only. As soon as another document
element tag is entered, the quad reverts to
@@ -3414,19 +3432,35 @@ macro immediately after ADD_SPACE.
<!-- *** -->
-<h2 id="intro-doc-param" class="macro-group">Changing basic type and formatting parameters after START</h2>
+<h2 id="intro-doc-param" class="macro-group">Changing document-wide style parameters after START</h2>
<p>
-In the normal course of things, you establish the basic type
+In the normal course of things, you establish the basic type style
parameters of a document prior to invoking
<a href="#start">START</a>,
using the
<a href="typesetting.html#macros-typesetting">typesetting macros</a>
-(<b>L_MARGIN, FAMILY, PT_SIZE, LS,</b> etc). After
-START, you <i>must</i> use the following macros to make
-global changes to the basic type parameters of a document.
+(<b>L_MARGIN, FAMILY, PT_SIZE, LS,</b> etc). After START, you must
+use the following macros if you wish to make global changes to the
+basic type style parameters, for example changing the overall leading or
+the justification style.
</p>
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span>
+Because these macros globally update the chosen parameter, they
+should only be used immediately prior to
+<a href="rectoverso.html#collate">COLLATE</a>
+or, if an occasional effect is desired,
+<a href="typesetting.html#newpage">NEWPAGE</a>.
+<a href="#doc-pt-size">DOC_PT_SIZE</a>,
+for example, updates the point size of every page element, including
+headers, footers, page numbers, and so on, which is almost certainly
+not what you want in the middle of a page.
+</p>
+</div>
+
<div class="macro-list-container">
<h3 id="index-doc-param" class="macro-list">Post-START global style change macros</h3>
<ul class="macro-list">
@@ -3461,7 +3495,12 @@ Macro: <b>DOC_LEFT_MARGIN</b> <kbd class="macro-args">&lt;left margin&gt;</kbd>
<li>the argument is the same as for
<a href="typesetting.html#l-margin">L_MARGIN</a>
</li>
- <li>changes all left margins to the new value</li>
+ <li>changes all left margins, including headers, footers, and page
+ numbers to the new value
+ </li>
+ <li>any document elements that use a left indent calculate
+ the indent from the new value
+ </li>
<li>the line length remains the same (ie the right margin
shifts when you change the left margin)
</li>
@@ -3487,19 +3526,10 @@ Macro: <b>DOC_RIGHT_MARGIN</b> <kbd class="macro-args">&lt;right margin&gt;</kbd
<li>the argument is the same as for
<a href="typesetting.html#r-margin">R_MARGIN</a>
</li>
- <li>changes all right margins, including
- <a href="definitions.html#docheader">docheaders</a>,
- headers (or footers) and page numbering to the new value;
- for changing the right margin of
- <a href="definitions.html#running">running text</a>
- only, use
- <a href="typesetting.html#r-margin">R_MARGIN</a>
- (see
- <a href="#behaviour">typesetting macros during
- document processing</a>,
- entry for R_MARGIN)
+ <li>changes all right margins, including headers, footers, and
+ page numbers to the new value;
</li>
- <li>all mom commands that include a right indent calculate
+ <li>any document elements that use a right indent calculate
the indent from the new value
</li>
</ul>
@@ -3527,13 +3557,6 @@ Macro: <b>DOC_LINE_LENGTH</b> <kbd class="macro-args">&lt;length&gt;</kbd>
<li>exactly equivalent to changing the right margin with
DOC_RIGHT_MARGIN (see
<a href="#doc-right-margin">above</a>);
- for changing the line length of
- <a href="definitions.html#running">running text</a>
- only, use
- <a href="typesetting.html#linelength">LL</a>
- (see
- <a href="#behaviour">typesetting macros during document processing</a>,
- entry for LL)
</li>
</ul>
@@ -3603,6 +3626,12 @@ Macro: <b>DOC_PT_SIZE</b> <kbd class="macro-args">&lt;point size&gt;</kbd>
the pertinent document element for instructions on
how to do this)
</li>
+ <li>if
+ <a href="typesetting.html#autolead">AUTOLEAD</a>
+ was invoked before START; the value of AUTOLEAD will be used
+ to update the leading of all document element tags except
+ FOOTNOTE and EPIGRAPH
+ </li>
</ul>
<!-- -DOC_LEAD- -->
@@ -3641,21 +3670,13 @@ Macro: <b>DOC_LEAD</b> <kbd class="macro-args">&lt;points&gt; [ ADJUST ]</kbd>
leading adjustment as explained in
<a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a>
</li>
+ <li>if
+ <a href="typesetting.html#autolead">AUTOLEAD</a>
+ was invoked before START; the value of that AUTOLEAD will be
+ cancelled
+ </li>
</ul>
-<div class="box-important">
-<p class="tip">
-<span class="important">Important:</span>
-Do not use DOC_LEAD in the middle of a page! It should always and
-only be invoked immediately prior to a new page, like this:
-<br/>
-<span class="pre-in-pp">
- .DOC_LEAD &lt;new value&gt;
- .NEWPAGE
-</span>
-</p>
-</div>
-
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
diff --git a/contrib/mom/momdoc/headfootpage.html b/contrib/mom/momdoc/headfootpage.html
index 4201cd4b..67fed271 100644
--- a/contrib/mom/momdoc/headfootpage.html
+++ b/contrib/mom/momdoc/headfootpage.html
@@ -102,7 +102,7 @@ FDL in the main directory of the groff source package.
<h3 class="toc toc-docproc-header" style="margin-top: .75em;"><a class="header-link" href="#pagination-intro">Pagination</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#index-pagination">Pagination macros</a></li>
- <li><a href="#index-pagination-control">Pagination control macros and defaults</a></li>
+ <li><a href="#index-paginate-control">Pagination control macros and defaults</a></li>
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#blank-pages">Inserting blank pages into a document</a></h3>
@@ -336,7 +336,7 @@ bottom of each page), the vertical spacing and placement of page
numbers, whether at the top or the bottom of the page, is managed
exactly as if the page numbers were headers (or footers), and are
controlled by the same macros. See
-<a href="#index-pagination-control">Pagination control</a>.
+<a href="#index-paginate-control">Pagination control</a>.
</p>
<div class="rule-short"><hr/></div>
@@ -2057,7 +2057,7 @@ draft-style copy.
<!-- -PAGINATE_CONTROL- -->
<div class="macro-list-container">
-<h3 id="index-pagination-control" class="macro-list">Pagination control macros and defaults</h3>
+<h3 id="index-paginate-control" class="macro-list">Pagination control macros and defaults</h3>
<ol style="margin-top: -1.5em; padding-bottom: 6px;">
<li><a href="#paginate-general">Family/font/size/colour</a></li>
@@ -2108,6 +2108,13 @@ at the top right position, enter
</span>
</p>
+<div id="pagenum-pos-note" class="box-tip" style="margin-top: 1em;">
+<p class="tip">
+<span class="note">Note:</span>
+HEADERS must be OFF for PAGENUM_POS TOP to work.
+</p>
+</div>
+
<h4 id="pagenum-hyphens" class="docs" style="margin-top: -1em;">3. Enclose page numbers with hyphens (on or off)</h4>
<div class="box-macro-args" style="margin-top: 1em;">
diff --git a/contrib/mom/momdoc/images.html b/contrib/mom/momdoc/images.html
index c13075c4..8754d72f 100644
--- a/contrib/mom/momdoc/images.html
+++ b/contrib/mom/momdoc/images.html
@@ -21,7 +21,7 @@ FDL in the main directory of the groff source package.
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
- <title>Mom -- Graphics, tbl support, and floats</title>
+ <title>Mom -- Graphics, floats, and preprocessor support</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
@@ -39,7 +39,7 @@ FDL in the main directory of the groff source package.
</tr>
</table>
-<h1 class="docs">Graphics, tbl support, and floats</h1>
+<h1 class="docs">Graphics, floats, and preprocessor support</h1>
<div style="width: 55%; margin: auto;">
<ul class="no-enumerator" style="margin-left: -1em;">
@@ -51,7 +51,15 @@ FDL in the main directory of the groff source package.
</ul></li>
<li><a href="#pdf-image">The PDF_IMAGE macro</a></li>
<li><a href="#pspic">The PSPIC macro</a></li>
- <li><a href="#tbl">tbl support</a></li>
+ <li><a href="#preprocessor-support">Preprocessor support</a>
+ <ul style="margin-left: -.5em; list-style-type: disc;">
+ <li><a href="#tbl">tbl</a>
+ <ul style="margin-left: -1.25em;"><li><a href="#ts-te">.TS / .TH / .TE macros and arguments</a></li>
+ </ul></li>
+ <li><a href="#pic">pic</a></li>
+ <li><a href="#eqn">eqn</a></li>
+ <li><a href="#refer">refer</a></li>
+ </ul></li>
<li><a href="#floats-intro">Introduction to floats</a></li>
<li><a href="#float">The FLOAT macro</a></li>
</ul>
@@ -296,25 +304,24 @@ image; <kbd>width</kbd> and <kbd>height</kbd> give the desired
width and height of the image as you wish it to appear within the
document. The width and height arguments may have
<a href="definitions.html#unitofmeasure">units of measure</a>
-attached; the default unit of measure is
-<kbd>i</kbd>. PSPIC will scale the graphic
-uniformly in the x and y directions so that it is no more than
-<kbd>width</kbd> wide and <kbd>height</kbd> high. By default, the
-graphic will be horizontally centred. The <kbd>-L</kbd> and
-<kbd>-R</kbd> options cause the graphic to be left-aligned and
-right-aligned, respectively. The <kbd>-I</kbd> option causes
-the graphic to be indented by <kbd>&lt;n&gt;</kbd>; the default unit of
-measure is <kbd>m</kbd>
+attached; the default unit of measure is <kbd>i</kbd>. PSPIC will
+scale the graphic uniformly in the x and y directions so that
+it is no more than <kbd>width</kbd> wide and <kbd>height</kbd>
+high. By default, the graphic will be horizontally centred. The
+<kbd>-L</kbd> and <kbd>-R</kbd> options cause the graphic to be
+left-aligned and right-aligned, respectively. The <kbd>-I</kbd>
+option causes the graphic to be indented by <kbd>&lt;n&gt;</kbd>;
+the default unit of measure is <kbd>m</kbd>
(<a href="definitions.html#em">ems</a>).
</p>
</div>
<p>
-It is not necessary to pass PSPIC the
-<kbd>&lt;width&gt;</kbd> and <kbd>&lt;height&gt;</kbd> arguments unless
-you are scaling the image, in which case you will most likely need
-the original dimensions of the EPS image&#8217;s bounding box.
-These can be found with
+It is not necessary to pass PSPIC the <kbd>&lt;width&gt;</kbd>
+and <kbd>&lt;height&gt;</kbd> arguments unless you are scaling
+the image, in which case you will most likely need the original
+dimensions of the EPS image&#8217;s bounding box. These can be
+found with
<span class="pre-in-pp">
gs -q -dBATCH -dNOPAUSE -sDEVICE=bbox &lt;image file&gt;.pdf 2&gt;&amp;1 \
| grep "%%BoundingBox" | cut -d " " -f4,5
@@ -341,8 +348,8 @@ macros.
Additionally, EPS images inserted into
<a href="definitions.html#running">running text</a>
will almost certainly disrupt the baseline placement of running
-text. In order to get mom back on track after
-invoking <kbd>.PSPIC</kbd>, I strongly recommend using the
+text. In order to get mom back on track after invoking
+<kbd>.PSPIC</kbd>, I strongly recommend using the
<a href="docprocessing.html#shim">SHIM</a>
macro so that the bottom margin of running text falls where it
should. Please note that with PDF_IMAGE, this is not necessary.
@@ -359,124 +366,361 @@ with
<div class="rule-medium"><hr/></div>
-<h2 id="tbl" class="docs">tbl support</h2>
+<h2 id="preprocessor-support" class="docs">Preprocessor support</h2>
+
+<h3 id="tbl" class="docs">tbl support</h3>
<p>
Mom documents can include tables generated with the groff
-pre-processor, <kbd>tbl</kbd>. <kbd>tbl</kbd> usage is beyond the
-scope of this documentation, but is covered fully in <kbd>man(1)
-tbl</kbd>.
+pre-processor, <kbd>tbl</kbd>. <kbd>tbl</kbd> usage itself is beyond
+the scope of this documentation, but is covered in the manpage
+<kbd>tbl(1)</kbd>. You can also download a copy of
+<a href="http://plan9.bell-labs.com/10thEdMan/tbl.pdf">Tbl - A Program to Format Tables</a>,
+which, in addition to providing a thorough introduction to <kbd>tbl</kbd>,
+contains some fine examples.
</p>
<p>
Tables formatted with <kbd>tbl</kbd> begin with the macro
-<kbd>.TS</kbd>
-(<b>T</b>able <b>S</b>art)
-and end with <kbd>.TE</kbd>
-(<b>T</b>able <b>E</b>nd).
-Depending on where you want your tables output in a document, you will likely
-need to wrap your <kbd>tbl</kbd> code inside a
+<kbd>.TS</kbd> (<b>T</b>able <b>S</b>art) and end with
+<kbd>.TE</kbd> (<b>T</b>able <b>E</b>nd). Depending on where you
+want your tables output in a document, you may need to wrap
+your <kbd>tbl</kbd> code inside a
<a href="#floats-intro">float</a>,
-or use the <kbd>H</kbd> extension to <kbd>.TS</kbd>. If you put
-<kbd>tbl</kbd> code inside a float, the table will be output
-immediately if it fits on the page, or defered to the top of the
-next page if it doesn&#8217;t. If you prefer a table to begin where
-you say and span over to the next page, or if you know for certain
-your table will run to multiple pages, use <kbd>.TS H</kbd>.
+or pass the <kbd>H</kbd> argument to <kbd>.TS</kbd>.
+</p>
+
+<p>
+If you put <kbd>tbl</kbd> code inside a float, the table will be
+output immediately if it fits on the page, or deferred to the top
+of the next page if it doesn&#8217;t. If you prefer a table to
+begin where you say and span over to the next page, or if you know
+for certain a boxed table will run to multiple pages, simply pass the
+<kbd>H</kbd> argument to <kbd>.TS</kbd>, along with a corresponding
+<a href="#th"><kbd>TH</kbd></a>.
</p>
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-If you use <kbd>.TS H</kbd> to create a table that spans multiple
-pages, do not attempt to wrap the table inside a float. <kbd>.TS
-H</kbd> and <kbd>.FLOAT</kbd> are mutually exclusive. <b>FLOAT</b>
-&#8220;collects&#8221; the table and outputs it where convenient,
-whereas <kbd>.TS H</kbd> begins the table immediately and spans
-multiple pages, with a table header, if necessary.
+If you use <kbd>.TS H</kbd> to create a boxed table that spans
+multiple pages, do not attempt to wrap the table inside a float.
+For the purposes of boxed, multipage tables, <kbd>.TS H</kbd> and
+<kbd>.FLOAT</kbd> should be considered mutually exclusive. This
+restriction is imposed by the <kbd>tbl</kbd> preprocessor itself,
+not groff or mom.
+</p>
+</div>
+
+<h4 id="tbl-placement" class="docs">tbl placement in mom docs</h4>
+
+<p>
+If you use <kbd>.TS</kbd> without the <kbd>H</kbd> argument (and
+therefore no <kbd>.TH</kbd>), tables that fit on the page are output
+in position. If there is not enough room to output the table,
+<kbd>tbl</kbd> will abort with message instructing you to use
+<kbd>.TS H/.TH</kbd>.
+</p>
+
+<p>
+If you give <kbd>.TS</kbd> the <kbd>H</kbd> argument (with a
+corresponding <kbd>.TH</kbd>), tables will be output in position and
+span as many pages as necessary to complete output. A table header
+will be printed at the top of each page&#8217;s table output. In the
+event that there is not enough room to print the table header and
+at least one row of table data near the bottom of a page, mom will
+break to a new page before beginning table output, leaving a blank
+in
+<a href="definitions.html#running">running text</a>.
+</p>
+
+<p>
+Boxed tables inside
+<a href="#floats-intro">floats</a>
+are output in position if they fit on the page. If not, they are
+deferred to the top of the next page without a break in running
+text. Boxed tables within floats may not, however, span multiple
+pages; mom will abort with a message should a boxed table in a float
+run longer than the page.
+</p>
+
+<p>
+Unboxed tables inside floats may span multiple pages provided the
+<kbd>SPAN</kbd> argument has been given to
+<a href="#float">FLOAT</a>.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+The vertical spacing around unfloated tables may appear slightly
+unequal, especially if there are several tables on the page. This
+is a result of
+<a href="docprocessing.html#shim">shimming</a>
+that mom applies automatically after each table. You may
+disable shimming with <kbd>.NO_SHIM</kbd>, or by giving the
+<kbd>NO_SHIM</kbd> argument to <kbd>.TE</kbd>. In either case, you
+will still likely want to adjust the spacing around with table with
+<a href="typesetting.html#ald">ALD</a>
+or
+<a href="typesetting.html#rld">RLD</a>.
+Tables inside floats are more easily adjusted with the
+<kbd>ADJUST</kbd> argument to
+<a href="#float">FLOAT</a>.
</p>
</div>
<div class="macro-id-overline">
-<h3 id="ts-te" class= "macro-id">.TS/.TE</h3>
+<h3 id="ts-te" class= "macro-id">.TS / .TH / .TE</h3>
</div>
<div class="box-macro-args">
-Macro: <b>TS</b> <kbd class="macro-args">[ BOXED | H ]</kbd>
+Macro: <a href="#ts"><b>TS</b></a> <kbd class="macro-args">[ H ] [ BOXED ] [ CENTER ] [ NEEDS ]</kbd>
<br/>
-Macro: <b>TH</b>
+Macro: <a href="#th"><b>TH</b></a> <kbd class="macro-args">(optional, only if .TS H)</kbd>
<br/>
-Macro: <b>TE</b>
+Macro: <a href="#te"><b>TE</b></a> <kbd class="macro-args">[ "caption" ] [ &lt;distance&gt; ] [ LEFT | CENTER | RIGHT ] [ NO_SHIM ]</kbd>
</div>
<p>
Tables to be formatted with <kbd>tbl</kbd> begin with the macro
-<kbd>.TS</kbd> and end with <kbd>.TE</kbd>. Formatting
-instructions, per <kbd>man tbl</kbd> come between the two macros.
+<kbd>.TS</kbd> and end with <kbd>.TE</kbd>. Global <kbd>tbl</kbd>
+options (&#8220;flags&#8221;), formatting, and data (per
+<kbd>tbl(1)</kbd>) come between the two macros.
<br/>
<span class="pre-in-pp">
.TS
- &lt;tbl commands and data&gt;
+ &lt;tbl options, formatting, and data&gt;
.TE
</span>
Tables may be wrapped inside a
<a href="#float-intro">float</a>,
in which case, the entire table will be output on the current page
-if it fits, or defered to the next page if it doesn&#8217;t.
+if it fits, or deferred to the next page if it doesn&#8217;t.
<br/>
<span class="pre-in-pp">
.FLOAT
.TS
- &lt;tbl commands and data&gt;
+ &lt;tbl options, formatting, and data&gt;
.TE
.FLOAT OFF
</span>
-If a table inside a float is to be boxed (ie have a frame or border
-around it), you must give the optional argument <kbd>BOXED</kbd> to
-<kbd>.TS</kbd>, as in this example:
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TS macro</h4>
+</div>
+
+<p>
+The <b>TS</b> macro must be invoked before entering a <kbd>tbl</kbd>
+block. You may give as many or as few of its arguments as required,
+in any order.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'H'</h5>
+
+<p>
+With the <b>H</b> argument, a table will span as many pages as
+necessary, with or without a running header. The placement of the
+corresponding
+<a href="#th"><kbd>.TH</kbd></a>,
+which is required whenever the <b>H</b> argument is given,
+determines what, if anything, goes in the header. Compare the
+following:
+<span class="pre-in-pp">
+ .TS H .TS H
+ c s s c s s
+ c s s c s s
+ c c c c c c
+ n n n. n n n.
+ Percent Increase .TH
+ 2002-2012 Percent Increase
+ .TH 2002-2012
+ &lt;tbl data&gt; &lt;tbl data&gt;
+ .TE .TE
+</span>
+The first example will create a table that spans multiple
+pages if necessary, with a running header (&#8220;Percent
+Increase&nbsp;/&nbsp;2002-2012&#8221;) for that table appearing at
+the top of each page until the table ends. The second example,
+equally, may run to several pages, but without the running header.
+See
+<a href="#th"><b>TH</b></a>
+for an explanation of <kbd>.TH</kbd> placement.
+</p>
+
+<div id="h-tip" class="box-tip">
+<p class="tip">
+<span class="note">Tip:</span>
+Generally speaking, it&#8217;s a good idea to get into the habit
+of using <kbd>.TS H</kbd> all the time, since there are no
+circumstances under which it fails, whereas <kbd>.TS</kbd> without
+<kbd>H</kbd> will fail on tables that exceed the page length.
+</p>
+</div>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'BOXED'</h5>
+
+<p>
+If a table is to be boxed (ie <kbd>tbl</kbd> is given the flags
+<kbd>'box'</kbd> or <kbd>'allbox'</kbd>) you must pass the argument
+<kbd>BOXED</kbd> to <kbd>.TS</kbd>, as in this example:
<br/>
<span class="pre-in-pp">
- .FLOAT
.TS BOXED
- allbox center;
+ allbox;
c s s
c c c
n n n.
- &lt;tbl commands and data&gt;
+ &lt;tbl data&gt;
.TE
- .FLOAT OFF
</span>
-Unboxed tables inside a float require no special argument to
-<kbd>.TS</kbd>.
</p>
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'CENTER'</h5>
+
<p>
-If you prefer a table to start where you say and span multiple
-pages, or if you know for certain the table will run to several
-pages, do not use the <b>FLOAT</b> macro. Instead, invoke
-<kbd>.TS</kbd> with the <kbd>H</kbd> argument, enter any
-<kbd>tbl</kbd> global options (per <kbd>man(1) tbl</kbd>), and
-follow the last line of the global options, which terminates with
-a period, with text for the table header. Afterwards, invoke the
-macro, <kbd>.TH</kbd>, then begin entering table data, as in the
-following:
-<br/>
+If a table is to be centered on the page, (ie <kbd>tbl</kbd> is
+given the <kbd>'center'</kbd> flag), you must pass the argument
+<kbd>CENTER</kbd> to <kbd>.TS</kbd>, as in this example, which
+creates a (possibly) multipage boxed table, centered on the page,
+with a running header.
<span class="pre-in-pp">
- .TS H
+ .TS H BOXED CENTER
allbox center;
c s s
+ c s s
c c c
n n n.
- AT&T Common Stock
+ Percent Increase
+ 2002-2012
.TH
- &lt;tbl commands and data&gt;
+ &lt;tbl data&gt;
.TE
</span>
-In the example, &#8220;AT&T Common Stock&#8221; will be the
-table&#8217;s header, printed at the start of the table and at the
-top of the table on all subsequent pages.
</p>
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NEEDS'</h5>
+
+<p>
+If a table is not inside a float and you pass <kbd>.TS </kbd> the
+<kbd>H</kbd> argument (which you should; see the tip
+<a href="#h-tip">here</a>),
+mom begins output immediately where the table occurs in the input
+file <i>if there is enough room on the output page for the table
+header plus at least one row of table data</i>. If there isn't
+enough room, mom breaks to a new page before beginning the table,
+leaving a gap in
+<a href="definitions.html#running">running text</a>
+at the bottom of the previous page. If, for aesthetic reasons,
+you would prefer that mom require more than one row of table data
+beneath the header near the bottom of a page, you may increase the
+number with the <kbd>NEEDS</kbd> argument, followed by the desired
+number of rows.
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TH macro</h4>
+</div>
+
+<p>
+The <b>TH</b> macro (<b>T</b>able <b>H</b>eader), which is required
+when you begin a table with <kbd>.TS H</kbd>, allows you to
+determine what goes in a table&#8217;s running header if it spans
+multiple pages. If you place it immediately underneath your
+<kbd>tbl</kbd> formatting specifications, the last line of which
+always ends with a period (see <kbd>tbl(1)</kbd>), there will
+be no running header. If you place it under the first row of
+<kbd>tbl</kbd> data, the first row will form the header; under the
+second row, the first and second rows form the header, and so on.
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TE macro</h4>
+</div>
+
+<p>
+<kbd>tbl</kbd> blocks must be terminated with <kbd>.TE</kbd>.
+Arguments to <b>TE</b> are optional. If <kbd>&#8220;&lt;caption&gt;&#8221;</kbd>
+is given, you may use as many or as few of the subsequent arguments
+as you wish, in any order.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">&#8220;&lt;caption&gt;&#8221;</h5>
+
+<p>
+If you wish a table to have a caption, or label, underneath, surround the
+caption in double-quotes after <kbd>.TE</kbd>, like this:
+<span class="pre-in-pp">
+ .TE "Table 1"
+</span>
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">&lt;distance&gt;</h5>
+
+<p>
+If you would like to increase the space between the bottom of a
+table and its caption, enter the increase with a digit to which is
+appended a
+<a href="definitions.html#unitofmeasure">unit of measure</a>:
+<span class="pre-in-pp">
+ .TE "Table 1" 3p
+</span>
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">LEFT | CENTER | RIGHT</h5>
+
+<p>
+By default, mom aligns captions with the left side of tables. If
+this is what you want, you may enter <kbd>LEFT</kbd>, or simply skip
+stating where you want the caption. If you would prefer centered or
+right placement, use <kbd>CENTER</kbd> or <kbd>RIGHT</kbd>.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">NO_SHIM</h5>
+
+<p>
+By default, mom adds
+<a href="docprocessing.html#shim">shimming</a>
+underneath tables. This behaviour may be disabled with the
+<kbd>NO_SHIM</kbd> argument, which, moreover, can be used for tables
+without a caption, like this:
+<span class="pre-in-pp">
+ .TE NO_SHIM
+</span>
+</p>
+
+<div class="rule-medium"><hr/></div>
+
+<h3 id="pic" class="docs">pic support</h3>
+
+<p>
+At present, mom has no integrated support or special features
+for the <b>pic</b> preprocessor, however <b>pic</b> may be used
+successfully within a mom document. Generally, it&#8217;s best to
+wrap <b>pic</b> blocks within a float (see below). If you want
+your <b>pic</b>s centred, you must include <kbd>-mpic</kbd> in the
+options passed to <kbd>pdfmom</kbd> or <kbd>groff</kbd>.
+</p>
+
+<h3 id="eqn" class="docs">eqn support</h3>
+
+<p>
+At present, mom has no integrated support or special features
+for the <b>eqn</b> preprocessor, however <b>eqn</b> may be used
+successfully within a mom document. Generally, it&#8217;s best to
+wrap <b>eqn</b> blocks within a float (see below).
+</p>
+
+<h3 id="refer" class="docs">refer support</h3>
+
+<p>
+<b>refer</b> support is covered in the section
+<a href="refer.html">Bibliographies and references</a>.
+</p>
+
+<div class="rule-medium"><hr/></div>
+
<h2 id="floats-intro" class="docs">Introduction to floats</h2>
<p>
@@ -557,7 +801,7 @@ or
</div>
<div class="box-macro-args">
-Macro: <b>FLOAT</b> <kbd class="macro-args">[ FORCE ] [ ADJUST +|-&lt;amount&gt; ] | &lt;anything&gt;</kbd>
+Macro: <b>FLOAT</b> <kbd class="macro-args">[ FORCE ] [ ADJUST +|-&lt;amount&gt; ] [ SPAN ] | &lt;anything&gt;</kbd>
</div>
<div class="box-tip">
@@ -602,6 +846,14 @@ for a discussion of automatic shimming.
the following page.
</p>
+<p>
+The <kbd>SPAN</kbd> argument tells mom that a float, if deferred,
+may carry onto multiple pages. Please note that <kbd>SPAN</kbd> may
+not be used for floats containing a boxed table; mom will abort with
+a warning should this occur. Unboxed tables, on the other hand, are
+acceptable within floats that are given the <kbd>SPAN</kbd> argument.
+</p>
+
<div class="box-tip">
<p class="tip-top">
<span class="note">Note:</span>
diff --git a/contrib/mom/momdoc/letters.html b/contrib/mom/momdoc/letters.html
index 6a5b9944..1d109ba2 100644
--- a/contrib/mom/momdoc/letters.html
+++ b/contrib/mom/momdoc/letters.html
@@ -100,6 +100,12 @@ Underwood by a shapely secretary with 1940s gams.
</p>
<p>
+Please note that if you choose <kbd>PRINTSTYLE TYPEWRITE</kbd>,
+there's no need to give the <kbd>SINGLESPACE</kbd> option, as this
+is the unalterable default for letters.
+</p>
+
+<p>
After the START macro, you enter headers pertinent to your letter:
the date, the addressee (in business correspondence, typically both
name and address), the addresser (that&#8217;s you; in business
diff --git a/contrib/mom/momdoc/macrolist.html b/contrib/mom/momdoc/macrolist.html
index 7b458e53..0cb16caf 100644
--- a/contrib/mom/momdoc/macrolist.html
+++ b/contrib/mom/momdoc/macrolist.html
@@ -70,7 +70,7 @@ elsewhere in the documentation.
<li><a href="#qr-15">Colour</a></li>
<li><a href="#qr-16">Dropcaps</a></li>
<li><a href="#qr-17">Utilities</a></li>
- <li><a href="#qr-18">Graphics, images and floats</a></li>
+ <li><a href="#qr-18">Graphical objects and images</a></li>
</ul>
<h3 class="docs" style="margin-top: -.5em;">DOCUMENT PROCESSING MACROS</h3>
<ul style="margin-top: .5em; margin-left: 0; padding-left: 0; list-style-type: none;">
@@ -82,12 +82,14 @@ elsewhere in the documentation.
<li><a href="#qr-24">Initiate document processing</a></li>
</ul>
</div>
-<ul style="margin-top: 2.7em; margin-left: 0; padding-left: 0; list-style-type: none;">
+<ul style="margin-top: 1.75em; margin-left: 0; padding-left: 0; list-style-type: none;">
<li><a href="#qr-25">Epigraphs</a></li>
<li><a href="#qr-26">Headings</a></li>
<li><a href="#qr-30">Paragraphs</a></li>
<li><a href="#qr-31">Quotes (line for line quotes)</a> </li>
<li><a href="#qr-32">Blockquotes (cited passages of text)</a></li>
+ <li><a href="#qr-49">Floats</a></li>
+ <li><a href="#qr-50">tbl support</a></li>
<li><a href="#qr-33">Code snippets (inserting bits of programming code)</a></li>
<li><a href="#qr-34">Author linebreaks (section breaks)</a></li>
<li><a href="#qr-35">Document termination string</a></li>
@@ -551,7 +553,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphics, images and floats</th>
+<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphical objects and images</th>
</tr>
<tr>
<td><a href="graphical.html#drh">DRH</a></td><td>-- draw a horizontal rule</td>
@@ -574,11 +576,6 @@ elsewhere in the documentation.
<tr>
<td><a href="images.html#pspic">PSPIC</a></td><td>-- insert a PostScript image</td>
</tr>
-<tr>
-<td style="vertical-align: top"><a href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, output on next page
-<br/>
-&nbsp;&nbsp;&nbsp;if necessary</td>
-</tr>
</table>
<div style="display: inline-block; margin-top: 1em; margin-bottom: .5em; border-bottom: 2px solid #302419;"><kbd>DOCUMENT PROCESSING MACROS</kbd></div>
@@ -796,6 +793,31 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
+<th id="qr-49" class="quick-ref" colspan="2" >+++Floats </th>
+</tr>
+<td style="vertical-align: top"><a href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, output on next page
+<br/>
+&nbsp;&nbsp;&nbsp;if necessary</td>
+</tr>
+</table>
+
+<table class="quick-ref">
+<tr>
+<th id="qr-50" class="quick-ref" colspan="2" >+++tbl support </th>
+</tr>
+<tr>
+<td><a href="docelement.html#blockquote">TS</a></td><td>-- begin a tbl block</td>
+</tr>
+<tr>
+<td><a href="docelement.html#blockquote-general">TH</a></td><td>-- running table header (after TS H)</td>
+</tr>
+<tr>
+<td><a href="docelement.html#always-fullspace-quotes">TE</a></td><td>-- end tbl block</td>
+</tr>
+</table>
+
+<table class="quick-ref">
+<tr>
<th id="qr-33" class="quick-ref" colspan="2" >+++ Code snippets</th>
</tr>
<tr>
diff --git a/contrib/mom/momdoc/reserved.html b/contrib/mom/momdoc/reserved.html
index b941cb6a..505783e7 100644
--- a/contrib/mom/momdoc/reserved.html
+++ b/contrib/mom/momdoc/reserved.html
@@ -50,12 +50,17 @@ else instead.
</p>
<p>
-Anyone interested in playing around inside mom&#8217;s macro file
-(om.tmac) will find this list useful as well since it lists all (I
-hope) the macros, strings, diversions, aliases and number registers
+Anyone interested in hacking/patching mom&#8217;s macro file
+(om.tmac) will also find this list useful since it lists most of
+the macros, strings, diversions, aliases, and number registers
mom uses, along with brief descriptions of their functions.
</p>
+<p>
+Please note that PDF-related macros, strings, and registers are not
+included.
+</p>
+
<div class="rule-medium"><hr/></div>
<span class="pre" style="scroll: none;">
@@ -295,7 +300,7 @@ mom uses, along with brief descriptions of their functions.
#NOFILL Are we in a nofill mode? (boolean)
#NOFILL_MODE Nofill mode
#OLD_LEAD Lead in effect prior to changing it with .vs
- in .LS
+ in .LS or .AUTOLEAD
#OPEN_CLOSE Manipulates character " to print `` or ''
#ORIGINAL_L_LENGTH Used in LIST for IB processing; holds \n[.l]
p Output line horiz position at end of
@@ -311,13 +316,13 @@ mom uses, along with brief descriptions of their functions.
in effect (booleand off, i.e. to 0, when
QUAD &lt;arg&gt; or JUSTIFY is called)
#PT_SIZE Point size (fractional) in units (alias)
- #PT_SIZE_SET Was point size set with PT_SIZE? (boolean)
#Q_AT_TOP Does a quote start at the top of a new page?
(boolean)
#QUAD In autoquad mode? (boolean)
#QUIT Tells LIST whether to exit lists completely
(boolean)
#REMOVE Used in LIST OFF cleanup
+ #RESTORE_FILL Used to restore \[.u] state if temporarily changed
#RESTORE_LEAD Lead value in effect prior to AUTOLEAD
#RESTORE_LINE_LENGTH Restores actual line length in RULE
#RESTORE_LN_NUMBER Start linenumbering again with stored
@@ -1013,6 +1018,14 @@ mom uses, along with brief descriptions of their functions.
QUIT_LISTS Exit lists cleanly and completely
SET_LIST_INDENT Restore indent of a prev. level of list
SHIM Advance to next "valid" baseline
+ TBL*CLEANUP Remove selected registers and strings created
+ by TS/TH/TE
+ TBL*GET_QUAD Establish quad of tbl caption
+ tbl*float-warning If tbl in a float exceeds page limits
+ tbl*print-header Administrivia for printing tbl headers
+ tbl@top-hook Trap-invoked (HEADER); prints running tbl header
+ and moves FOOTER/FN_OVERFLOW_TRAP_POS traps
+ to accommodate tbl
TERMINATE .em that ensures deferred footnotes get output
on final pages
TRAPS Sets hdrftr traps; optionally adjusts #DOC_LEAD
@@ -1032,6 +1045,7 @@ mom uses, along with brief descriptions of their functions.
CLOSING_TEXT Closing (i.e. Yours truly,)
EPI_TEXT Epigraph text
END_NOTES Endnotes text
+ FLOAT*DIV Float content
FN_IN_DIVER Footnotes gathered from inside a diversion
FN_OVERFLOW Excess footnotes when B_MARGIN is reached
FOOTNOTES Text of footnotes
@@ -1042,6 +1056,7 @@ mom uses, along with brief descriptions of their functions.
RUNON_FOOTNOTES Special diversion for run-on footnotes
RUNON_FN_IN_DIVER Special diversion for run-on footnotes inside
(block)quotes
+ tbl*header-div Running tbl header
TOC_ENTRIES TOC entries
<span style="display: block; margin-top: -.5em; margin-bottom: -2.5em;">+++NUMBER REGISTERS+++</span>
@@ -1173,6 +1188,7 @@ mom uses, along with brief descriptions of their functions.
#DIVER_FN Register that tells FOOTNOTE whether to
"move" or "defer" a footnote collected
inside a diversion
+ defer / new-defer Appended to FLOAT*DIV: if float deferred
#DEFER_BIB_SPACING Tells DEFAULTS to do BIBLIOGRAPHY_SPACING
if it was called before START
#DEFER_PAGINATION Tells COLLATE to restore pagination (from
@@ -1187,6 +1203,8 @@ mom uses, along with brief descriptions of their functions.
#DEPTH_2 Doc header depth without lead adjustment
(#DOCHEADER_LINES * #DOC_LEAD)
#DEPTH_TO_B_MARGIN Page length minus #B_MARGIN
+ D-float Depth of float containing/ending with
+ DRH, DRV, DBX, or DCL
#DIVERSIONS_HY_MARGIN A reasonable value for .hym applied to
QUOTE, BLOCKQUOTE and EPIGRAPH to
avoid excessive hyphenation if these are
@@ -1352,6 +1370,10 @@ mom uses, along with brief descriptions of their functions.
#FIRST_DOC_TITLE_PN Page number of 1st (collated) doc (for TOC)
#FIRST_DOC_TOC_PN_PADDING Padding for 1st page number of 1st (collated) doc
(for TOC)
+ float*after-shim / \n[nl]; tests if SHIM has stayed on the same
+ float*before-shim baseline
+ float-span Float can run to multiple pages? (boolean)
+ float*with-tbl Float contains a tbl block
#FN_AUTOLEAD Autolead value of footnotes
#FN_BL_INDENT Left indent of INDENT BOTH in footnotes
#FN_BR_INDENT Right indent of INDENT BOTH in footnotes
@@ -1419,6 +1441,7 @@ mom uses, along with brief descriptions of their functions.
#FOOTERS_WERE_ON Were footers on? - used in FINIS and BLANKPAGE
(boolean)
#FOOTNOTE_COLOR Colorize footnotes? (boolean)
+ #FORCE Force float? (boolean)
#FROM_BIB_STRING Tells UNDERSCORE it's underscoring $BIB_STRING
#FROM_COVER Tells UNDERSCORE it's underscoring on a cover
#FROM_DOC_COVER Tells UNDERSCORE it's underscoring on a doccover
@@ -1823,6 +1846,21 @@ mom uses, along with brief descriptions of their functions.
#SUSPEND_PAGINATION Suspend pagination prior to endnotes?
#SWITCH_HDRFTR Switch HDRFTR_LEFT and HDRFTR_RIGHT?
(boolean)
+ tbl*boxed tbl has box or allbox (boolean)
+ tbl*center-label-on-table Is tbl caption centered? (boolean)
+ tbl*have-header tbl has a running header (boolean)
+ tbl*header-ht Depth of tbl*header-div
+ tbl*left-label-on-table Is tbl caption quad left? (boolean)
+ tbl*move-fn-overflow-trap Whether to move FN_OVERFLOW_TRAP_POS
+ to accommodate tbl
+ tbl*move-fn-overflow Amount by which to change
+ FN_OVERFLOW_TRAP_POS to accommodate tbl
+ tbl*move-footer Amount by which to change FOOTER trap
+ to accommodate tbl
+ tbl*move-footer-trap Whether to move FOOTER trap to accommodate
+ tbl
+ tbl*no-shim Whether to SHIM tbl (boolean)
+ tbl*right-label-on-table Is tbl caption quad right? (boolean)
#T_MARGIN_LEAD_ADJ \n[.v]-12000; ensures critically accurate
placement of first lines on pages when
doc processing is not being used and
@@ -1850,8 +1888,12 @@ mom uses, along with brief descriptions of their functions.
#TOC_SH_SIZE_CHANGE ps in/decrease of toc subhead entries
#TOC_TITLE_INDENT Indent of toc doc title entries
#TOC_TITLE_SIZE_CHANGE ps in/decrease of toc doc title entries
+ @TOP Controls .ns at page top;
+ trap-invoked (FOOTER); mostly trap-removed
+ (RR_@TOP)
#TOTAL_FIELDS Total number of letter header fields
#TRAP \n[.t]-1 (used in DO_QUOTE)
+ #TW Width of tbl block
#UNADJUSTED_DOC_LEAD Argument passed to DOC_LEAD prior to
adjusting (set in TRAPS)
#UNDERLINE_ITALIC For TYPEWRITE. (boolean)
@@ -2157,6 +2199,9 @@ mom uses, along with brief descriptions of their functions.
$FINIS_COLOR Color of FINIS string
$FINIS_STRING What to print when FINIS macro is
invoked
+ float-adj:bottom A + or - sign
+ float-adj:top A + or - sign
+ float*type Used with tbl; 'boxed' or 'table'
FN_MARK Inline, gets #FN_MARK ( \n[ln] )
$FN_CLOSE_BRACKET Close bracket for line-number identified
footnotes
@@ -2330,6 +2375,11 @@ mom uses, along with brief descriptions of their functions.
$SUBTITLE_SIZE_CHANGE ps in/decrease of subtitle
$SUBTITLE_PT_SIZE Absolute ps of subtitle
$SUITE The #SUITE number register
+ tbl*center 'C' if set
+ tbl*label Text of tbl caption
+ tbl*needs # of rows of tbl data required to print
+ tbl near bottom of page
+ tbl*user-add-space User-added space before a tbl caption
$TITLE Concatenated args pass to TITLE
$TITLE_&lt;n&gt; Title items
$TITLE_COLOR Color of title
diff --git a/contrib/mom/momdoc/toc.html b/contrib/mom/momdoc/toc.html
index aa6af78a..efdf15bb 100644
--- a/contrib/mom/momdoc/toc.html
+++ b/contrib/mom/momdoc/toc.html
@@ -21,7 +21,7 @@ FDL in the main directory of the groff source package.
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
- <title>Mom, version 2.0-a_1 -- Table of Contents</title>
+ <title>Mom, version 2.1-b -- Table of Contents</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
@@ -32,7 +32,7 @@ FDL in the main directory of the groff source package.
<div class="page">
<div class="version">
- mom, version 2.0-a_1
+ mom, version 2.1-b
</div>
<h1 class="toc" style="margin-top: 9px;">Table of Contents</h1>
@@ -98,7 +98,7 @@ FDL in the main directory of the groff source package.
<li><a href="#prelim">Preliminary document setup</a></li>
<li><a href="#typemacdoc">Behaviour of the typesetting macros during document processing</a></li>
<li><a href="#tags">The document element tags</a> &ndash; headings, paragraphs, quotes, footnotes, etc.</li>
- <li><a href="#images">Graphics, tbl support, and floats</a></li>
+ <li><a href="#images">Graphics, floats, and preprocessor support</a></li>
<li><a href="#hdrftr">Page headers and footers</a></li>
<li><a href="#paginate">Pagination</a></li>
<li><a href="#rv">Recto/verso printing and collating</a></li>
@@ -346,7 +346,7 @@ FDL in the main directory of the groff source package.
<li><a href="docelement.html#margin-notes-intro">5.4.13 Margin notes</a></li>
<li><a href="docelement.html#finis-intro">5.4.14 Document termination string</a> &ndash; FINIS</li>
</ul></li>
- <li><a id="images" class="highlight" href="images.html#top">5.5 GRAPHICS, tbl SUPPORT, AND FLOATS</a>
+ <li><a id="images" class="highlight" href="images.html#top">5.5 GRAPHICS, FLOATS, AND PREPROCESSOR SUPPORT</a>
<ul>
<li><a href="images.html#images-intro">5.5.1 Inserting images and graphics</a></li>
<li><a href="images.html#converting">5.5.2 Image conversion and file processing</a></li>
diff --git a/contrib/mom/momdoc/typesetting.html b/contrib/mom/momdoc/typesetting.html
index 7d0790cb..800842a5 100644
--- a/contrib/mom/momdoc/typesetting.html
+++ b/contrib/mom/momdoc/typesetting.html
@@ -300,6 +300,12 @@ for information on ensuring groff respects your
PAGEWIDTH.
</p>
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAGEWIDTH</kbd>,
+when you need it, should be placed at the top of your files.
+</p>
+</div>
<!-- -PAGELENGTH- -->
<div class="macro-id-overline">
@@ -326,6 +332,13 @@ Please read the
for information on ensuring groff respects your PAGELENGTH.
</p>
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAGELENGTH</kbd>,
+when you need it, should be placed at the top of your files.
+</p>
+</div>
+
<!-- -PAPER- -->
<div class="macro-id-overline">
@@ -337,7 +350,7 @@ Macro: <b>PAPER</b> <kbd class="macro-args">&lt;paper type&gt;</kbd>
</div>
<p>
-PAPER provides a convenient way to set the page dimensions for some
+PAPER provides a convenient way to set the dimensions for some
common printer sheet sizes. <kbd>&lt;paper&nbsp;type&gt;</kbd> can
be one of:
<br/>
@@ -367,6 +380,13 @@ Please read the
for information on ensuring groff respects your PAPER size.
</p>
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAPER</kbd> when you
+need it, should be placed at the top of your files.
+</p>
+</div>
+
<!-- -L_MARGIN- -->
<div class="macro-id-overline">
@@ -1187,6 +1207,12 @@ Macro: <b>AUTOLEAD</b> <kbd class="macro-args">&lt;amount of automatic leading&g
</div>
<p class="requires">
&bull;&nbsp;Does not require a <a href="definitions.html#unitofmeasure">unit of measure</a>
+<br/>
+(Please see
+<a href=""></a>
+for information on using
+<span style="font-style: normal">AUTOLEAD</span> during document
+processing.)
</p>
<p>
@@ -1225,6 +1251,15 @@ Automatic updating of the linespacing continues until you enter a
<a href="#leading">LS</a>.
</p>
+<div class="box-tip">
+<p class="tip">
+<span class="experts">Experts:</span> Please note that the groff
+<a href="definitions.html#primitives">primitives</a>,
+<kbd>.vs</kbd> and <kbd>.ps</kbd>, are unaffected by, and have no
+effect, on AUTOLEAD.
+</p>
+</div>
+
<p>
If you give AUTOLEAD the optional FACTOR argument, AUTOLEAD
calculates the line space as a factor of the
@@ -1770,8 +1805,8 @@ line and have it came out fully justified.
<div class="box-tip">
<p class="tip">
<span class="experts">Experts:</span> SPREAD is an alias for
-<kbd>.brp</kbd> You can use either, or mix
-&#8217;n&#8217; match with impunity.
+<kbd>.brp</kbd> You can use either, or mix &#8217;n&#8217; match
+with impunity.
</p>
</div>
diff --git a/contrib/mom/om.tmac b/contrib/mom/om.tmac
index 5cfe1139..99b6cc2e 100644
--- a/contrib/mom/om.tmac
+++ b/contrib/mom/om.tmac
@@ -23,9 +23,9 @@ for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-Version 2.0-a_1
----------------
-Antoine de St-Exupéry asserted that elegance in engineering is
+Version 2.1-b
+-------------
+Antoine de St-Exupéry asserted that elegance in engineering is
achieved not when there is nothing left to add, but when there is
nothing left to take away.
@@ -40,8 +40,9 @@ to a macro means that any argument turns the feature off.
Thanks to everyone who has contributed suggestions and patches, and
to those whose GPL'd work has been plundered. Special thanks to
-Werner Lemberg (margin notes), Tadziu Hoffman (underlining), and
-Deri James (pdf integration).
+Werner Lemberg (margin notes), Tadziu Hoffman (underlining),
+Deri James (pdf integration), Robin Haberkorn (tbl integration and
+float management).
..
.\" %beginstrip%
\#
@@ -279,7 +280,7 @@ end
. nr #PAGE_WIDTH \\$1
. if !r#L_MARGIN .L_MARGIN \\n[.o]
. if !r#R_MARGIN .R_MARGIN 1i
-. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
+. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'\c
.END
\#
\# L_MARGIN
@@ -385,7 +386,7 @@ end
\#
.MAC PAGELENGTH END
. pl \\$*
-. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
+. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'\c
.END
\#
\# =====================================================================
@@ -614,20 +615,27 @@ end
\# <point size of type>
\# *Function:
\# Sets point size to user supplied value in scaled points.
-\# If #AUTO_LEAD is on, sets .vs to #AUTOLEAD_VALUE+#PT_SIZE.
+\# If #AUTO_LEAD is on, resets lead accordingly.
\# *Notes:
\# Must NOT use a unit of measure.
\#
.MAC PT_SIZE END
. if \\n[#PRINT_STYLE]=1 .return
. if \\n[#IGNORE] .return
-. nr #PT_SIZE_SET 1
. ps \\$1
-. if \\n[#AUTO_LEAD] \{\
-. ie \\n[#AUTOLEAD_FACTOR] .vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
-. el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
-. \}
. nr #PT_SIZE_IN_UNITS \\n[.ps]
+. ie '\\$0'DOC_PT_SIZE' \{\
+. if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
+. br
+. nr #NEW_DOC_PT_SIZE \\n[.ps]
+. if \\n[#DOC_AUTOLEAD] \{\
+. ie !\\n[#DOC_AUTOLEAD_FACTOR] .nr #AUTOLEADING \\n[#DOC_AUTOLEAD]
+. el .nr #AUTOLEADING \\n[.ps]*\\n[#DOC_AUTOLEAD]/1000-\\n[.ps]
+. nr #DOC_LEAD \\n[.ps]+\\n[#AUTOLEADING]
+. nr #RESET_TRAPS 1
+. \}
+. \}
+. el .if \\n[#AUTO_LEAD] .vs \\n[.ps]u+\\n[#AUTOLEADING]u
.END
\#
\# SIZE (inline)
@@ -662,9 +670,11 @@ end
. if \\n[#IGNORE] .return
. if \\n[#AUTO_LEAD] \{\
. rr #AUTO_LEAD
-. rr #AUTOLEAD_FACTOR
+. rr #AUTOLEAD_VALUE
+. rr #AUTOLEADING
. \}
. vs \\$1
+. if \\n[.t]<\\n[.v] 'bp
. if \\n[#TOP] \{\
. nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
. sp -\\n[#TOP_BASELINE_ADJ]u
@@ -673,11 +683,6 @@ end
. \}
.END
\#
-.MAC RESET_LEAD END
-' vs
-. ch RESET_LEAD
-.END
-\#
\# AUTOLEAD
\# --------
\# *Argument:
@@ -695,16 +700,15 @@ end
.MAC AUTOLEAD END
. if \\n[#PRINT_STYLE]=1 .return
. if \\n[#IGNORE] .return
-. nr #AUTO_LEAD 1
+. nr #AUTO_LEAD 1 \" autolead on or off
. nr #OLD_LEAD \\n[.v]
-. nr #AUTOLEAD_VALUE (p;\\$1)
-. ie \\n[#NUM_ARGS]=2 \{\
-. if '\\$2'FACTOR' \{\
-. nr #AUTOLEAD_FACTOR 1
-. vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
-. \}
+. nr #AUTOLEAD_VALUE (p;\\$1) \" arg x 1000
+. ie '\\$2'FACTOR' \{\
+. if !\\n[#DOCS] .nr #DOC_AUTOLEAD_FACTOR \\n[#AUTOLEAD_VALUE] \" save for DOC_PT_SIZE
+. nr #AUTOLEADING \\n[.ps]*\\n[#AUTOLEAD_VALUE]/1000-\\n[.ps]
. \}
-. el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
+. el .nr #AUTOLEADING \\n[#AUTOLEAD_VALUE]
+. vs \\n[.ps]u+\\n[#AUTOLEADING]u
. if \\n[#TOP] \{\
. nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
. sp -\\n[#TOP_BASELINE_ADJ]u
@@ -1228,122 +1232,131 @@ end
\# *Arguments:
\# [ ,, ] | [ << ] | [ >> ] | <anything>
\# or
-\# [ DA | DE | ES | FR | IT | NL | NO | PT | SV ] | <anything>
+\# [ DA | DE | EN | ES | FR | IT | NL | NO | PT | SV ] | <anything>
\# *Function:
\# Turns smartquotes on (optionally with a quoting style from the
\# argument list, or off).
+\# If no quoting style is given, then EN (English) is used by default.
+\# If no quoting style is given and smart quotes have been turned off
+\# previously, the old quoting style will be restored.
\# *Notes:
\# The " character is read outside the macro when mom is
\# processed. The strings for open/close ($QUOTE<n>) are then
\# defined in the macro.
\#
.char " \\*[$QUOTE\\n[#OPEN_CLOSE]]\R'#OPEN_CLOSE (1-\\n[#OPEN_CLOSE])'
+.nr #SQ_ON 0
\#
.MAC SMARTQUOTES END
-. rr #ARGS_TO_SQ
-. if \\n[#RESTORE_SQ]=1 \{\
-. rr #RESTORE_SQ
-. ie '\\*[$RESTORE_SQ]'' \{\
-. ds $QUOTE0 \[lq]
-. ds $QUOTE1 \[rq]
-. \}
-. el \{\
+.\" First " will be translated to $QUOTE0
+. nr #OPEN_CLOSE 0
+. if '\\$1'' \{\
+. if !'\\*[$RESTORE_SQ]'' \{\
. SMARTQUOTES \\*[$RESTORE_SQ]
. return
. \}
+.\" Default smart quotes (English)
+. ds $QUOTE0 \[lq]
+. ds $QUOTE1 \[rq]
+. ds $RESTORE_SQ EN
+. nr #SQ_ON 1
+. return
. \}
-. ie '\\$1'' \{\
-. nr #OPEN_CLOSE 0
+. if '\\$1',,' \{\
+. ds $QUOTE0 \[Bq]
+. ds $QUOTE1 \[lq]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'<<' \{\
+. ds $QUOTE0 \[Fo]
+. ds $QUOTE1 \[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'>>' \{\
+. ds $QUOTE0 \[Fc]
+. ds $QUOTE1 \[Fo]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'DA' \{\
+. ds $QUOTE0 \[Fc]
+. ds $QUOTE1 \[Fo]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'DE' \{\
+. ds $QUOTE0 \[Bq]
+. ds $QUOTE1 \[lq]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'EN' \{\
. ds $QUOTE0 \[lq]
. ds $QUOTE1 \[rq]
. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
. \}
-. el \{\
-. if '\\$1',,' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Bq]
-. ds $QUOTE1 \[lq]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'<<' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fo]
-. ds $QUOTE1 \[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'>>' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fc]
-. ds $QUOTE1 \[Fo]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'DA' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fc]
-. ds $QUOTE1 \[Fo]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'DE' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Bq]
-. ds $QUOTE1 \[lq]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'ES' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[lq]
-. ds $QUOTE1 \[rq]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'FR' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fo]\|
-. ds $QUOTE1 \|\[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'IT' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fo]\|
-. ds $QUOTE1 \|\[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'NL' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[rq]
-. ds $QUOTE1 \[rq]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'NO' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fo]
-. ds $QUOTE1 \[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'PT' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fo]
-. ds $QUOTE1 \[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. if '\\$1'SV' \{\
-. nr #ARGS_TO_SQ 1
-. ds $QUOTE0 \[Fc]
-. ds $QUOTE1 \[Fc]
-. ds $RESTORE_SQ \\$1
-. \}
-. \}
-. if !r#ARGS_TO_SQ \{\
-. ie !'\\$1'' \{\
-.\" Turn smartquotes off
-. ds $QUOTE0 \[dq]
-. ds $QUOTE1 \[dq]
-. \}
-. el \{\
-. ds $QUOTE0 \[lq]
-. ds $QUOTE1 \[rq]
-. nr #RESTORE_SQ 1
-. \}
+. if '\\$1'ES' \{\
+. ds $QUOTE0 \[lq]
+. ds $QUOTE1 \[rq]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'FR' \{\
+. ds $QUOTE0 \[Fo]\|
+. ds $QUOTE1 \|\[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'IT' \{\
+. ds $QUOTE0 \[Fo]\|
+. ds $QUOTE1 \|\[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'NL' \{\
+. ds $QUOTE0 \[rq]
+. ds $QUOTE1 \[rq]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'NO' \{\
+. ds $QUOTE0 \[Fo]
+. ds $QUOTE1 \[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'PT' \{\
+. ds $QUOTE0 \[Fo]
+. ds $QUOTE1 \[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
+. \}
+. if '\\$1'SV' \{\
+. ds $QUOTE0 \[Fc]
+. ds $QUOTE1 \[Fc]
+. ds $RESTORE_SQ \\$1
+. nr #SQ_ON 1
+. return
. \}
+.\" None of the above -> turn smartquotes off
+. ds $QUOTE0 \[dq]
+. ds $QUOTE1 \[dq]
+. nr #SQ_ON 0
.END
\#
.ds $QUOTE0 \[lq]
@@ -2803,6 +2816,9 @@ end
. vpt 1
. rr #RESTORE_TRAP
. \}
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if !(\\n[.d]+\\n[#WEIGHT])<\\n[D-float] .nr D-float \\n[.d]+\\n[#WEIGHT]
+. \}
.END
\#
\# RULE
@@ -3374,7 +3390,7 @@ end
. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. el \{\
-. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
+. ll \\n[.l]u-\\n[#R_INDENT]u
. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. \}
@@ -3386,7 +3402,7 @@ end
. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. el \{\
-. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
+. ll \\n[.l]u-\\n[#R_INDENT]u
. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. \}
@@ -3408,7 +3424,7 @@ end
. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. el \{\
-. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
+. ll \\n[.l]u-\\n[#BR_INDENT]u
. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. \}
@@ -3424,7 +3440,7 @@ end
. \}
. el \{\
. in \\n[#BL_INDENT]u
-. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
+. ll \\n[.l]u-\\n[#BR_INDENT]u
. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. \}
@@ -3926,6 +3942,26 @@ y\\R'#DESCENDER \\n[.cdp]'
\# DOCUMENT PROCESSING MACROS, STRINGS AND ALIASES
\# ===============================================
\#
+\# DOC_MACRO_ERROR
+\# ----------
+\# *Arguments:
+\# None.
+\# *Function:
+\# Warning message if DOC_<PARAMETER> called before START.
+\#
+.MAC DOC_MACRO_ERROR END
+. if '\\$1'DOC_L_MARGIN' .ds $REPLACEMENT L_MARGIN
+. if '\\$1'DOC_R_MARGIN' .ds $REPLACEMENT R_MARGIN
+. if '\\$1'DOC_LINE_LENGTH' .ds $REPLACEMENT LL
+. if '\\$1'DOC_FAMILY' .ds $REPLACEMENT "FAMILY or FAM
+. if '\\$1'DOC_PT_SIZE' .ds $REPLACEMENT PT_SIZE
+. if '\\$1'DOC_LEAD' .ds $REPLACEMENT LS
+. if '\\$1'DOC_QUAD' .ds $REPLACEMENT QUAD
+. tm1 "[mom]: \\$1 at line \\n[.c] of '\\n[.F]' should not be used before START.
+. tm1 " Use \\*[$REPLACEMENT] instead.
+. ab Aborting.
+.END
+\#
\# +++PAGE DIMENSIONS+++
\#
\# PAPER SIZE
@@ -4024,11 +4060,16 @@ y\\R'#DESCENDER \\n[.cdp]'
. ie '\\$2'SINGLESPACE' \{\
. nr #SINGLE_SPACE 1
. vs 12
+. ie \\n[#DOC_TYPE]=4 .nr #FOOTER_ADJ \\n[.v]
+. el .nr #FOOTER_ADJ \\n[.v]*2
. nr #ORIGINAL_DOC_LEAD \\n[.v]
. \}
. el \{\
-. vs 24
-. nr #ORIGINAL_DOC_LEAD \\n[.v]
+. if !\\n[#DOC_TYPE]=4 \{\
+. vs 24
+. nr #FOOTER_ADJ \\n[.v]
+. nr #ORIGINAL_DOC_LEAD \\n[.v]
+. \}
. \}
. QUAD L
. HY OFF
@@ -4058,8 +4099,11 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
. FAMILY T
. FT R
-. if !\\n[#DOC_TYPE]=4 .PT_SIZE 12.5
-. if !\\n[#DOC_TYPE]=4 .LS 16
+. if !\\n[#DOC_TYPE]=4 .ps 12.5
+. if !\\n[#DOC_TYPE]=4 .vs 16
+.\" In DEFAULTS, TRAPS is run with this leading, so we need a register to
+.\" hold it for use with the .sp in FOOTER
+. nr #FOOTER_ADJ 12000
. JUSTIFY
. HY
. HY_SET 2 36p 1p
@@ -4615,7 +4659,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. substring $AUTHORS 0 -3
. ds PDF_AUTHORS \\*[$AUTHORS]
. pdfmomclean PDF_AUTHORS
-\#. pdfinfo /Author \\*[PDF_AUTHORS]
. nop \!x X ps:exec [/Author (\\*[PDF_AUTHORS]) /DOCINFO pdfmark
.END
\#
@@ -4726,8 +4769,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #DOC_TYPE 4
. L_MARGIN 1.125i
. R_MARGIN 1.125i
-. PT_SIZE 12
-. LS 13.5
+. ps 12
+. vs 13.5
+. nr #FOOTER_ADJ \\n[.v]
. DOCHEADER OFF
. PARA_INDENT 3m
. INDENT_FIRST_PARAS
@@ -5345,6 +5389,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if '\\$0'DOCHEADER_QUAD' \
. ds $DOCHEADER_QUAD \\$1
. if '\\$0'DOC_QUAD' \{\
+. if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
. ds $DOC_QUAD \\$1
. QUAD \\*[$DOC_QUAD]
. \}
@@ -5400,20 +5445,24 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !r #DOC_HEADER .DOCHEADER
. if !r #HEADERS_ON .HEADERS
. if !r #PAGINATE .PAGINATE
-. if \\n[#FOOTERS_ON] \{\
-. HEADERS OFF
-. if \\n[#PAGE_NUM_POS_SET]=0 .PAGENUM_POS TOP CENTER
-. \}
+.\"
. if !r #HEADER_MARGIN .HEADER_MARGIN 4P+6p
. if !r #HEADER_GAP .HEADER_GAP 3P
+.\"
. if \\n[#FOOTERS_ON] \{\
-. if \\n![#PAGINATE] \{\
+. HEADERS OFF
+. ie \\n[#PAGINATE] \
+. if \\n[#PAGE_NUM_POS_SET]=0 .PAGENUM_POS TOP CENTER
+. el \
. if !\\n[#T_MARGIN] .T_MARGIN 6P
-. \}
. \}
. if !\\n[#HEADERS_ON] \{\
. if !\\n[#FOOTERS_ON] \{\
-. if !r #T_MARGIN .T_MARGIN 6P
+. ie \\n[#PAGE_NUM_V_POS]=1 \{\
+. HEADER_MARGIN \\n[#HEADER_MARGIN]
+. HEADER_GAP \\n[#HEADER_GAP]
+. \}
+. el .if !r #T_MARGIN .T_MARGIN 6P
. \}
. \}
. if !r #T_MARGIN .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP]
@@ -5445,6 +5494,7 @@ y\\R'#DESCENDER \\n[.cdp]'
.\"
. nr #DOC_LEAD \\n[#LEAD]
. nr #DOC@LEAD \\n[#DOC_LEAD]
+. if \\n[#AUTO_LEAD] .nr #DOC_AUTOLEAD \\n[#AUTOLEAD_VALUE]
.\" #SAVED_DOC_LEAD is set in COLLATE
. if \\n[#SAVED_DOC_LEAD] \{\
. if !\\n[#TOC] \{\
@@ -5858,11 +5908,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. el .vs \\n[#ORIGINAL_DOC_LEAD]u/2u
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
-. AUTOLEAD \\n[#FN_AUTOLEAD]
+. ps \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
+. vs \\n[.ps]u+\\n[#FN_AUTOLEAD]
. \}
. nr #FN_LEAD \\n[#LEAD]
-. if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u
. ev
. di
. if \\n[#RESTORE_AUTO_LEAD] \{\
@@ -5872,6 +5921,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. ie !\\n[#COLLATE] \{\
.\" DOC_LEAD adjusted (or not) here
. TRAPS
+. if \\n[#REMOVE_ADJ] .DOC_LEAD \\n[#DOC_LEAD]u-\\n[#DOC_LEAD_ADJ]u
.\" Endnote, bibliography and toc leading
. nr #OK_PROCESS_LEAD 1
. nr #RESTORE_DOC_LEAD \\n[.v]
@@ -5903,7 +5953,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #DEFER_BIB_SPACING
. \}
. \}
-. DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
+. nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
. nr #B_MARGIN \\n[#RESTORE_B_MARGIN]
. \}
. el \{\
@@ -5938,6 +5988,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\\*[$MN-arg9]
. \}
. if \\n[#PRINT_STYLE]=1 .nr #IGNORE 1
+. if \\n[#AUTO_LEAD] \{\
+. rr #AUTO_LEAD
+. rr #AUTOLEAD_VALUE
+. \}
.END
\#
\# ====================================================================
@@ -6097,8 +6151,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$TITLE_1]'' \{\
. FAMILY \\*[$TITLE_FAM]
. FT \\*[$TITLE_FT]
-. PT_SIZE \\*[$TITLE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$TITLE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
. ie \\n[#TITLE_COLOR]=1 \
@@ -6109,7 +6163,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$SUBTITLE_1]'' \{\
. FAMILY \\*[$SUBTITLE_FAM]
. FT \\*[$SUBTITLE_FT]
-. PT_SIZE \\*[$SUBTITLE_PT_SIZE]
+. ps \\*[$SUBTITLE_PT_SIZE]
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
. ie \\n[#SUBTITLE_COLOR]=1 \
@@ -6120,7 +6174,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$AUTHOR_1]'' \{\
. FAMILY \\*[$AUTHOR_FAM]
. FT \\*[$AUTHOR_FT]
-. PT_SIZE \\*[$AUTHOR_PT_SIZE]
+. ps \\*[$AUTHOR_PT_SIZE]
. ie \\n[#ATTRIBUTE_COLOR]=1 \
. PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
. el .PRINT \&\\*[$ATTRIBUTE_STRING]
@@ -6134,16 +6188,16 @@ y\\R'#DESCENDER \\n[.cdp]'
. DOC_HEADER_QUAD
. FAMILY \\*[$TITLE_FAM]
. FT \\*[$TITLE_FT]
-. PT_SIZE \\*[$TITLE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$TITLE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
.\" Chapter title only
. ie '\\*[$CHAPTER]'' \{\
. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$CHAPTER_TITLE_FAM]
. FT \\*[$CHAPTER_TITLE_FT]
-. PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$CHAPTER_TITLE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
. \}
. nr #ARG_NUM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
@@ -6168,8 +6222,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$CHAPTER_TITLE_FAM]
. FT \\*[$CHAPTER_TITLE_FT]
-. PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$CHAPTER_TITLE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
. ALD \\n[.v]u/4u \" Put a little space before the chapter title
. \}
. nr #ARG_NUM 0 1
@@ -6190,8 +6244,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. DOC_HEADER_QUAD
. FAMILY \\*[$TITLE_FAM]
. FT \\*[$TITLE_FT]
-. PT_SIZE \\*[$TITLE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$TITLE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
. if !'\\*[$TITLE_1]'' \{\
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
@@ -6203,7 +6257,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$SUBTITLE]'' \{\
. FAMILY \\*[$SUBTITLE_FAM]
. FT \\*[$SUBTITLE_FT]
-. PT_SIZE \\*[$SUBTITLE_PT_SIZE]
+. ps \\*[$SUBTITLE_PT_SIZE]
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
. ie \\n[#SUBTITLE_COLOR]=1 \
@@ -6214,7 +6268,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$AUTHOR_1]'' \{\
. FAMILY \\*[$AUTHOR_FAM]
. FT \\*[$AUTHOR_FT]
-. PT_SIZE \\*[$AUTHOR_PT_SIZE]
+. ps \\*[$AUTHOR_PT_SIZE]
. ie \\n[#ATTRIBUTE_COLOR]=1 \
. PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
. el .PRINT \&\\*[$ATTRIBUTE_STRING]
@@ -6222,8 +6276,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. FAMILY \\*[$DOCTYPE_FAM]
. FT \\*[$DOCTYPE_FT]
-. PT_SIZE \\*[$DOCTYPE_PT_SIZE]
-. LS \\n[#DOCHEADER_LEAD]u
+. ps \\*[$DOCTYPE_PT_SIZE]
+. vs \\n[#DOCHEADER_LEAD]u
. ALD \\n[#DOCHEADER_LEAD]u
. nr #FROM_DOCTYPE 1
. if \\n[#DOCTYPE_COLOR]=1 .COLOR \\*[$DOCTYPE_COLOR]
@@ -6671,7 +6725,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el .vs \\n[#DOC_LEAD]u
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. LS \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
+. vs \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
. nr #\\*[DOC_]COVER_LEAD \\n[#LEAD]
. \}
. if \\n[.ns] .rs
@@ -6949,7 +7003,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. fam \\*[$\\*[DOC_]COVER_DOCTYPE_FAM]
. ft \\*[$\\*[DOC_]COVER_DOCTYPE_FT]
. ps \\*[$\\*[DOC_]COVER_DOCTYPE_PT_SIZE]
-. SP
+. sp
. if \\n[#DOC_TYPE]=3 \{\
. if \\n[#\\*[DOC_]COVER_DOCTYPE]=1 \{\
. ie \\n[#PRINT_STYLE]=1 \{\
@@ -6985,8 +7039,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el \{\
. fam \\*[$\\*[DOC_]COVER_COPYRIGHT_FAM]
. ft \\*[$\\*[DOC_]COVER_COPYRIGHT_FT]
-. PT_SIZE \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
-. AUTOLEAD \\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]
+. ps \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
+. vs \\n[.ps]u+\\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]
. nr #COPYRIGHT_V_ADJ \\n[#DOC_LEAD]-\\n[.v]
. sp \\n[#COPYRIGHT_V_ADJ]u
. rr #COPYRIGHT_V_ADJ
@@ -7007,7 +7061,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. fam \\*[$\\*[DOC_]COVER_MISC_FAM]
. ft \\*[$\\*[DOC_]COVER_MISC_FT]
-. PT_SIZE \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
+. ps \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
. \}
. QUAD \\*[$\\*[DOC_]COVER_MISC_QUAD]
. ie !'\\*[$MISC_\\*[DOC_]COVER_1]'' \{\
@@ -7143,6 +7197,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# Macro to begin document processing
\#
.MAC START END
+. nr #DOCS 1
. if \\n[TOC.RELOCATE]==2 \{\
. if !\\n[TOC_BH] .TOC_BEFORE_HERE
. \}
@@ -7159,7 +7214,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. fl
. ab [mom]: PRINTSTYLE missing. Aborting '\\n[.F]'.
. \}
-. nr #DOCS 1
. if \\n[#LINENUMBERS]=1 \{\
. NUMBER_LINES OFF
. nr #LINENUMBERS 2
@@ -7175,10 +7229,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. \}
. \}
. DEFAULTS
-.\" Quote and blockquote default leads are the same as #DOC_LEAD, so
-.\" they have to be set after DEFAULTS (where DOC_LEAD is finalized)
-. if !r#Q_AUTOLEAD .nr #Q_LEAD \\n[#DOC_LEAD]
-. if !r#BQ_AUTOLEAD .nr #BQ_LEAD \\n[#DOC_LEAD]
+. rr #RESET_TRAPS
. if !r#EN_Q_AUTOLEAD .nr #EN_Q_LEAD \\n[#EN_LEAD]
. if !r#EN_BQ_AUTOLEAD .nr #EN_BQ_LEAD \\n[#EN_LEAD]
.\" TOC/recto-verso stuff
@@ -7244,7 +7295,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. \}
. \}
. nop
-. sp |\\n[#DOCHEADER_ADVANCE]u-1v
+. sp |\\n[#DOCHEADER_ADVANCE]u-\\n[#DOC_LEAD]u
. PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM]
. as $TOC_TITLE_ITEM \|
. if \\n[#PREFIX_CH_NUM] \{\
@@ -7295,7 +7346,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. \}
. el \{\
. if \\n[#AUTO_LEAD] .nr #RESTORE_AUTO_LEAD 1
-. if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
+. if \\n[#PRINT_STYLE]=2 .vs \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
. if \\n[#RESTORE_AUTO_LEAD] \{\
. nr #AUTO_LEAD 1
. nr #AUTOLEAD_VALUE \\n[#SAVED_AUTOLEAD_VALUE]
@@ -7484,9 +7535,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. \}
. \}
. \}
-. if \\n[#AUTO_LEAD] .nr #RESTORE_AUTO_LEAD 1
-. LS \\n[#DOC_LEAD]u
-. if \\n[#RESTORE_AUTO_LEAD] .nr #AUTO_LEAD 1
+. vs \\n[#DOC_LEAD]u
. if \\n[#ADJ_DOC_LEAD]=1 \{\
. ie !r#ADVANCE_FROM_TOP \{\
. if \\n[#DOC_HEADER]=1 .SHIM
@@ -7582,6 +7631,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# Affects everything on the page.
\#
.MAC DOC_LEFT_MARGIN END
+. if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
. br
. nr #DOC_L_MARGIN (\\$1)
. L_MARGIN \\n[#DOC_L_MARGIN]u
@@ -7613,6 +7663,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# Affects everything on the page.
\#
.MAC DOC_LINE_LENGTH END
+. if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
. br
. nr #DOC_L_LENGTH (\\$1)
. LL \\n[#DOC_L_LENGTH]u
@@ -7629,6 +7680,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# Affects everything except headers and footers.
\#
.MAC DOC_FAMILY END
+. if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
. br
. ds $DOC_FAM \\$1
. ds $FAMILY \\*[$DOC_FAM]
@@ -7655,12 +7707,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# DOC_PT_SIZE is the basis for calculating all type sizes in
\# a document. Ignored if PRINTSTYLE TYPEWRITE.
\#
-.MAC DOC_PT_SIZE END
-. if \\n[#IGNORE] .return
-. br
-. PT_SIZE \\$1
-. nr #DOC_PT_SIZE \\n[#PT_SIZE]
-.END
+.ALIAS DOC_PT_SIZE PT_SIZE
\#
\# DOCUMENT LEAD
\# -------------
@@ -7682,10 +7729,18 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\#
.MAC DOC_LEAD END
. if \\n[#IGNORE] .return
+. if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
. br
. vs \\$1
+. rr #DOC_AUTOLEAD
+. rr #DOC_AUTOLEAD_FACTOR
. nr #DOC_LEAD \\n[#LEAD]
-. if '\\$2'ADJUST' .TRAPS
+. nr #RESET_TRAPS 1
+. if !\\n[#ADJ_DOC_LEAD] .nr #REMOVE_ADJ 1
+. if !'\\$0'DOC_LEAD' \{\
+. if '\\$2'ADJUST' .TRAPS
+. rr #RESET_TRAPS
+. \}
.END
\#
\# ADJUST DOCUMENT LEAD
@@ -7982,13 +8037,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$EPI_FAM]
. FT \\*[$EPI_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
+. ps \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
. if \\n[#EPI_COLOR]=1 \{\
. nf
\m[\\*[$EPI_COLOR]]
. EOL
. \}
-. AUTOLEAD \\n[#EPI_AUTOLEAD]
+. vs \\n[.ps]u+\\n[#EPI_AUTOLEAD]
. nr #EPI_LEAD \\n[#LEAD]
. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD]
. \}
@@ -8055,13 +8110,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$EPI_FAM]
. FT \\*[$EPI_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
-. if \\n[#EPI_COLOR]=1 \{\
-. nf
+. ps \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
+. if \\n[#EPI_COLOR]=1 \{\
+. nf
\m[\\*[$EPI_COLOR]]
-. EOL
-. \}
-. AUTOLEAD \\n[#EPI_AUTOLEAD]
+. EOL
+. \}
+. vs \\n[.ps]u+\\n[#EPI_AUTOLEAD]
. QUAD \\*[$EPI_QUAD]
. nr #DIVERSIONS_HY_MARGIN (p;\\n[.ps]u*2.75)/1000
. HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p
@@ -8113,7 +8168,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. RLD \\n[#SHIM]u
. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH]
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
+. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. if !\\n[#SINGLE_SPACE]=1 .ALD \\n[#DOC_LEAD]u
@@ -8138,7 +8193,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. nr #EPI_FITS 1
. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH]
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
+. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
. \}
. ie \\n[#PRINT_STYLE]=1 \{\
. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \
@@ -8157,13 +8212,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el \{\
. nr #EPI_LINES_TO_TRAP 0 1
. while \\n[#EPI_LEAD]*\\n+[#EPI_LINES_TO_TRAP]<\\n[#TRAP_DISTANCE] \{\
-. nr #LOOP 1
+. nr #LOOP 1
. \}
. nr #EPI_LINES_TO_TRAP -1
. nr #EPI_WHITESPACE \
(\\n[#EPI_LINES_TO_TRAP]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_TRAP]*\\n[#EPI_LEAD])
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
+. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
. \}
. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
. ALD \\n[#EPI_WHITESPACE]u
@@ -8286,7 +8341,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
.MAC FINIS END
. if !\\n[@TOP] \{\
. if \\n[.t]<=2v \{\
-. tm1 "[mom]: Insufficient room to print \\$0 on last page.
+. tm1 "[mom]: '\\n[.F]': Insufficient room to print \\$0 on last page.
. return
. \}
. \}
@@ -8904,7 +8959,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. fam \\*[$HDRFTR_LEFT_FAM]
. ft \\*[$HDRFTR_LEFT_FT]
. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_LEFT_SIZE_CHANGE]
-. vs 12
. if \\n[#FOOTERS_ON] \{\
. di NULL
. SIZESPECS
@@ -8928,13 +8982,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el \
. PRINT \\*[$HDRFTR_LEFT]
. \}
-. el .PRINT \&
+. el .nop \&
. \}
. if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
. fam \\*[$HDRFTR_CENTER_FAM]
. ft \\*[$HDRFTR_CENTER_FT]
. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_CENTER_SIZE_CHANGE]
-. vs 12
. if \\n[#FOOTERS_ON] \{\
. di NULL
. SIZESPECS
@@ -8965,7 +9018,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. fam \\*[$HDRFTR_RIGHT_FAM]
. ft \\*[$HDRFTR_RIGHT_FT]
. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE]
-. vs 12
. if \\n[#FOOTERS_ON] \{\
. di NULL
. SIZESPECS
@@ -9166,6 +9218,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
\# still isn't brilliant, but at least it's comprehensible.
\#
.MAC HEADER END
+. vpt 0
+. if \\n[#NEW_DOC_PT_SIZE] .nr #DOC_PT_SIZE \\n[#NEW_DOC_PT_SIZE]
+. rr #NEW_DOC_PT_SIZE
+. if \\n[#RESET_TRAPS] .TRAPS
+. if \\n[#REMOVE_ADJ] .nr #DOC_LEAD -\\n[#DOC_LEAD_ADJ]
+. rr #REMOVE_ADJ
+. rr #RESET_TRAPS
. MNtop
. rr #FROM_FOOTER
. nr #FROM_HEADER 1
@@ -9198,7 +9257,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. fam \\*[$HDRFTR_FAM]
. ft R
. ps \\n[#DOC_PT_SIZE]u\\*[$HDRFTR_SIZE_CHANGE]
-. vs 12
. \}
. nr #HDRFTR_PT_SIZE \\n[#PT_SIZE]
. if \\n[#CAPS_ON] \{\
@@ -9218,18 +9276,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. sp -1v
. ie \\n[#HEADERS_ON] \{\
. PRINT_HDRFTR
-. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
. el \{\
-. ie \\n[#PAGE_NUM_V_POS]=1 \{\
-. ie \\n[#PAGINATE] \{\
+. if \\n[#PAGE_NUM_V_POS]=1 \{\
+. if \\n[#PAGINATE] \{\
. PRINT_PAGE_NUMBER
-. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
-. el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
-. el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
+. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. if \\n[#PRINT_STYLE]=1 \{\
. if \\n[#ENDNOTES]=1 \{\
. if \\n[#EN_SINGLESPACE] \{\
@@ -9279,7 +9334,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. \}
. \}
. el .ns
-. ns
. if \\n[#COLUMNS] \{\
. nr #FN_COUNT_FOR_COLS 0 1
. nr #L_MARGIN \\n[#DOC_L_MARGIN]
@@ -9359,7 +9413,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. rr #RESTORE_PAGINATION
. \}
. ch RR_@TOP
-. wh \\n[nl]u+1u RR_@TOP
+. ie \\n[tbl*have-header] .rr @TOP
+. el .wh \\n[nl]u+1u RR_@TOP
. if d PDF*IMAGE \{\
. rs
. nf
@@ -9367,35 +9422,84 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. sp \\n[pdf-img:depth]u
. PDF_IMAGE_CLEAN
. \}
+. if (\\n[float*defer]>0):(\\n[defer]=0) \{\
+. nf
+. if !\\n[tbl*no-top-hook] .tbl@top-hook
+. rr tbl*no-top-hook
+. \}
. if \\n[defer] \{\
+. ev protect
+. evc 0
. rs
. sp |\\n[#T_MARGIN]u-\\n[.v]u
-. ev protect
+. if '\\*[float*type:1]'boxed' \{\
+. if (\\n[.t] > 1)&(\\n[float-depth:1] > \\n[.t]) \
+. tbl*float-warning
+. \}
. nf
-. nr defer-count \\n[defer]
-. nr loop-count 0 1
+. nr defer-count \\n[defer]
+. nr loop-count 0 1
+. nr new-defer 0 1
. while \\n+[loop-count]<=\\n[defer-count] \{\
-. FLOAT*DIV:\\n[loop-count]
-. if \\n[D-float:\\n[loop-count]] \{\
-. sp \
--\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
-. rr D-float:\\n[loop-count]
+. if \\n[defer] .rnn defer float*defer \" So .if \n[defer] is skipped during float output
+. vpt
+. if \\n[loop-count]>1 .SHIM
+. sp 1u
+. nr #NEXT_TRAP \\n[.t]
+. sp -1u
+. if '\\*[float*type:\\n[loop-count]]'table' \{\
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+. ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
+. \}
+. ie !\\n[float-span:\\n[loop-count]] \{\
+. ie ((\\n[float-depth:\\n[loop-count]]-\\n[.v])>\\n[#NEXT_TRAP]):(\\n[D-float:\\n[loop-count]]>\\n[#NEXT_TRAP]) \{\
+.\" Insufficient space, defer to next page
+. rn FLOAT*DIV:\\n[loop-count] NEW*FLOAT*DIV:\\n+[new-defer]
+. rnn float-depth:\\n[loop-count] new-float-depth:\\n[new-defer]
+. rnn D-float:\\n[loop-count] new-D-float:\\n[new-defer]
+. \}
+. el \{\
+. output-float
+. \}
. \}
-. rm FLOAT*DIV:\\n[loop-count]
-. rr float-depth:\\n[loop-count]
-. \}
-. ev
+. el \{\
+. output-float
+. \}
+. \}
+. rm FLOAT*DIV:\\n[loop-count]
+. rr float-depth:\\n[loop-count]
+. rm tbl*header-div:\\n[loop-count]
+. rm float*type:\\n[loop-count]
+.\" FLOAT arrays are empty now
+.\" Rename new arrays (FLOATs deferred to next page) to proper names
+. nr loop-count 0 1
+. rnn new-defer defer
+. while \\n+[loop-count]<=\\n[defer] \{\
+. rn NEW*FLOAT*DIV:\\n[loop-count] FLOAT*DIV:\\n[loop-count]
+. rnn new-float-depth:\\n[loop-count] float-depth:\\n[loop-count]
+. rnn new-D-float:\\n[loop-count] D-float:\\n[loop-count]
+. \}
+. rr float*defer
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+. ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+. nr float*before-shim \\n[nl]
. SHIM
-\# Invoke table header hook.
-\# Will print table header for multipage tables
-. rr defer
+. nr float*after-shim \\n[nl]
+. if '\\*[float*type:\\n[loop-count]]'boxed' \
+. if \\n[float*before-shim]=\\n[float*after-shim] .sp
+. if '\\*[float*type:\\n[loop-count]]'table' \
+. if \\n[float*before-shim]=\\n[float*after-shim] .sp
+. ev
+. nr tbl*have-header 0
. rr loop-count
. rr defer-count
+. rr float*before-shim
+. rr float*after-shim
. rm float-adj
. rm float-adj:top
. rm float-adj:bottom
. \}
-. tbl@top-hook
+. vpt
.END
\#
\# ====================================================================
@@ -9498,9 +9602,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. rr #OVERFLOW_RIGHT
. \}
. \}
-\# Table bottom hook, draws the table borders in
-\# multipage boxed tables.
-. tbl@bottom-hook
. ch MN_OVERFLOW_TRAP
. nr #L_MARGIN_DIFF \\n[#L_MARGIN]-\\n[#DOC_L_MARGIN]
. if !\\n[#FN_DEFER] \{\
@@ -9522,7 +9623,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. rm FOOTNOTES
. if d RUNON_FOOTNOTES .rm RUNON_FOOTNOTES
. if \\n[#PRINT_STYLE]=1 .vs \\n[#SAVED_LEAD]u
-. if \\n[#PRINT_STYLE]=2 .LS \\n[#SAVED_LEAD]u
+. if \\n[#PRINT_STYLE]=2 .vs \\n[#SAVED_LEAD]u
. if '\\n[.z]'FN_OVERFLOW' \{\
. di
. nr #FN_OVERFLOW_DEPTH \\n[#DIVER_DEPTH]
@@ -9545,7 +9646,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
. nr #L_MARGIN \\n[.o]
. if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
-. LS \\n[#SAVED_LEAD]u
+. vs \\n[#SAVED_LEAD]u
. if \\n[#PREV_FN_DEFERRED] \{\
. nr #PREV_FN_DEFERRED 2
. \}
@@ -9555,7 +9656,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#RESET_FN_COUNTERS]=1 \{\
. rr #RESET_FN_COUNTERS
. PROCESS_FN_IN_DIVER
-. LS \\n[#SAVED_LEAD]u
+. vs \\n[#SAVED_LEAD]u
. nr #FN_COUNT \\n[#FN_COUNT] 1
. nr #FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS] 1
. rm FN_IN_DIVER
@@ -9651,7 +9752,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el \{\
. ev FOOTER
. vpt 0
-. sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#UNADJUSTED_DOC_LEAD]u
+. sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#FOOTER_ADJ]u
. mk y
. \}
. UNDERLINE OFF
@@ -9816,11 +9917,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
.MAC HEADING END
. if !\B'\\$1' \{\
. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. if r #QUOTE .rr #QUOTE
. if r #END_QUOTE .rr #END_QUOTE
. if r #EPIGRAPH .rr #EPIGRAPH
+. vs \\n[#DOC_LEAD]u
. if \\$1<\\n[#LEVEL] \
. nr #ACTIVE_LEVELS \\n[#LEVEL] \" loop count for resetting numbering registers
. nr #LAST_LEVEL \\n[#LEVEL] \" used during TOC collection, if SPACE_TOC_ITEMS
@@ -9870,7 +9972,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#NUM_ARGS]>1 \{\
. tm1 "[mom]: Error at line \\n[.c], \\$0.
. tm1 " PARAHEAD may not be given more than 1 line of text.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. vpt 0
. if !(\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) .sp -1v
@@ -9891,7 +9993,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. fam \\*[$HEAD_\\n[#LEVEL]_FAM]
. ft \\*[$HEAD_\\n[#LEVEL]_FT]
-. ps \\*[$HEAD_\\n[#LEVEL]_SIZE]
+. ps \\n[#DOC_PT_SIZE]u+\\*[$HEAD_\\n[#LEVEL]_SIZE]
. nf
. \}
.\" Numbering
@@ -9949,7 +10051,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. el \{\
. FAMILY \\*[$TOC_HEAD_\\n[#LEVEL]_FAM]
. FT \\*[$TOC_HEAD_\\n[#LEVEL]_FT]
-. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+. ps \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
. \}
.\" Indents for TOC heading levels.
.\" First, numbered heads. @LEVEL here is #LEVEL+1
@@ -10240,7 +10342,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
.MAC HEADING_STYLE END
. if !\B'\\$1' \{\
. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. nr #LEVEL \\$1
. if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1
@@ -10255,13 +10357,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. shift
. if '\\$1'' \{\
. tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule weight.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $HEAD_\\n[#LEVEL]_UL_WEIGHT \\$1
. shift
. if '\\$1'' \{\
. tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule gap.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $HEAD_\\n[#LEVEL]_UL_GAP \\$1
. shift
@@ -10275,19 +10377,19 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. shift
. if '\\$1'' \{\
. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule weight.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $HEAD_\\n[#LEVEL]_UL2_WEIGHT \\$1
. shift
. if '\\$1'' \{\
. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule gap.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $HEAD_\\n[#LEVEL]_UL2_GAP_1 \\$1
. shift
. if '\\$1'' \{\
. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires an inter-rule gap.
-. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $HEAD_\\n[#LEVEL]_UL2_GAP_2 \\$1
. shift
@@ -10802,8 +10904,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. ie \\n[#ENDNOTE] \{\
. FAMILY \\*[$EN_FAM]
. FT \\*[$EN_FT]
-. PT_SIZE \\n[#EN_PS]u
-. vs \\n[#EN_LEAD]u
+. ps \\n[#EN_PS]u
+. vs \\n[#EN_LEAD]u
. QUAD \\*[$EN_QUAD]
. \}
. el \{\
@@ -10813,8 +10915,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. rm $SAVED_PP_FT
. \}
. FT \\*[$PP_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u
-. LS \\n[#DOC_LEAD]u
+. ps \\n[#DOC_PT_SIZE]u
+. vs \\n[#DOC_LEAD]u
. QUAD \\*[$DOC_QUAD]
. \}
. \}
@@ -10858,9 +10960,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if '\\n[.z]'END_NOTES' \
. ti \\n[#EN_PP_INDENT]u+\\n[#EN_TEXT_INDENT]u
. \}
-. if !\\n[#PP]=0 \{\
-. if r #START .rr #START
-. \}
+. if r #START .rr #START
. if r #QUOTE .rr #QUOTE
. if r #END_QUOTE .rr #END_QUOTE
. if r #HEAD .rr #HEAD
@@ -11059,19 +11159,17 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$QUOTE_FAM]
. FT \\*[$QUOTE_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
-. ie !r #Q_AUTOLEAD .LS \\n[#Q_LEAD]u
+. ps \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
+. ie !r #Q_AUTOLEAD .vs \\n[#DOC_LEAD]u
. el \{\
-. AUTOLEAD \\n[#Q_AUTOLEAD]
-. if r #QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. vs \\n[.ps]u+\\n[#Q_AUTOLEAD]
. nr #Q_LEAD \\n[.v]
. \}
. if \\n[#ENDNOTE] \{\
-. PT_SIZE \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
-. ie !r #EN_Q_AUTOLEAD .LS \\n[#EN_Q_LEAD]u
+. ps \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
+. ie !r #EN_Q_AUTOLEAD .vs \\n[#EN_Q_LEAD]u
. el \{\
-. AUTOLEAD \\n[#EN_Q_AUTOLEAD]
-. if r #ENDNOTE_QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. vs \\n[.ps]u+\n[#EN_Q_AUTOLEAD]
. nr #EN_Q_LEAD \\n[.v]
. \}
. \}
@@ -11124,6 +11222,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. shift
. \}
. ie '\\$1'' \{\
+. ds #RESTORE_FAM \\n[.fam]
+. ds #RESTORE_FT \\n[.sty]
. ie \\n[#PRINT_STYLE]=1 \{\
. CODE_FAMILY C
. ie \\n[#CODE_FT]=1 .ft \\*[$CODE_FT]
@@ -11157,15 +11257,17 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if !\\n[#CODE_SIZE_ADJ]=0 \{\
. ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
. \}
-. if \\n[#RESTORE_SQ]=1 \{\
+. if \\n[#SQ_ON] \{\
. nr #SQ_WAS_ON 1
. SMARTQUOTES OFF
. \}
. \}
. \}
. el \{\
-. fam
-. ft
+. fam \\*[#RESTORE_FAM]
+. ft \\*[#RESTORE_FT]
+. rm #RESTORE_FAM
+. rm #RESTORE_FT
. if !\\n[#CODE_SIZE_ADJ]=0 .ps
. rchar '
. if \\n[#CODE_COLOR]=1 .gcolor
@@ -11311,19 +11413,17 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$BQUOTE_FAM]
. FT \\*[$BQUOTE_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
-. ie !r #BQ_AUTOLEAD .LS \\n[#BQ_LEAD]u
+. ps \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
+. ie !r #BQ_AUTOLEAD .vs \\n[#DOC_LEAD]u
. el \{\
-. AUTOLEAD \\n[#BQ_AUTOLEAD]
-. if r #BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. vs \\n[.ps]u+\\n[#BQ_AUTOLEAD]
. nr #BQ_LEAD \\n[.v]
. \}
. if \\n[#ENDNOTE] \{\
-. PT_SIZE \\n[#EN_PS]u\\*[$BQUOTE_SIZE_CHANGE]
-. ie !r#EN_BQ_AUTOLEAD .LS \\n[#EN_BQ_LEAD]u
+. ps \\n[#EN_PS]u\\*[$BQUOTE_SIZE_CHANGE]
+. ie !r#EN_BQ_AUTOLEAD .vs \\n[#EN_BQ_LEAD]u
. el \{\
-. AUTOLEAD \\n[#EN_BQ_AUTOLEAD]
-. if r #ENDNOTE_BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. vs \\n[.ps]u+\\n[#EN_BQ_AUTOLEAD]
. nr #EN_BQ_LEAD \\n[.v]
. \}
. \}
@@ -11825,7 +11925,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
. ta \\n[.l]u
. FAMILY \\*[$PAGE_NUM_FAM]
. FT \\*[$PAGE_NUM_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$PAGE_NUM_SIZE_CHANGE]
+. ps \\n[#DOC_PT_SIZE]u\\*[$PAGE_NUM_SIZE_CHANGE]
. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
. if \\n[#PAGE_NUM_V_POS]=1 .vs 0
. if o \{\
@@ -12141,7 +12241,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\h'-\\n[#FN_RULE_WEIGHT]u'\
\D'l \\n[#FN_RULE_LENGTH]u 0'\
\v'+\\n[#FN_RULE_ADJ]u+\\n[#FN_RULE_WEIGHT_ADJ]u'
-\!. PT_SIZE \\n[#DOC_PT_SIZE]u\\*$[FN_SIZE_CHANGE]
+\!. ps \\n[#DOC_PT_SIZE]u\\*$[FN_SIZE_CHANGE]
. QUAD \\*[$FN_QUAD]
. \}
. el \{\
@@ -12428,8 +12528,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. FAMILY \\*[$FN_FAM]
. FT \\*[$FN_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
-. AUTOLEAD \\n[#FN_AUTOLEAD]
+. ps \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
+. vs \\n[.ps]u+(\\n[#FN_AUTOLEAD]u*1000u)
. QUAD \\*[$FN_QUAD]
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
@@ -12696,7 +12796,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.\" Restore sentence spacing
. if \\n[#PRINT_STYLE]=2 \{\
-. if d $RESTORE_SS_VAR .SS \\*[$RESTORE_SS_VAR]
+. if d $RESTORE_SS_VAR .SS \\*[$RESTORE_SS_VAR]
. rm $RESTORE_SS_VAR
. \}
. rr #FN_R_INDENT
@@ -13052,12 +13152,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PREV_FN_DEFERRED]=2 \{\
. if \\n[#FN_COUNT_AT_FOOTER]>1 .rr #PREV_FN_DEFERRED
. \}
-. if !\\n[#FN_DEFER] \{\
+. ie !\\n[#FN_DEFER] \{\
. nr #FN_COUNT 0 1
. nr #FN_DEPTH 0
. nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
. \}
-. if r #FN_DEFER \{\
+. el \{\
. if \\n[#FN_DEFER]=1 .nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
. if \\n[#FN_DEFER]=2 \{\
. nr #FN_DEPTH 0
@@ -13652,7 +13752,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$EN_TITLE_FAM]
. FT \\*[$EN_TITLE_FT]
-. PT_SIZE \\n[#EN_PS]u\\*[$EN_TITLE_SIZE_CHANGE]
+. ps \\n[#EN_PS]u\\*[$EN_TITLE_SIZE_CHANGE]
. \}
. sp
. if !'\\*[$EN_TITLE]'' \{\
@@ -13678,7 +13778,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
. if \\n[#EN_NUMBER]=1 .sp
-. if \\n[#EN_MARKER_STYLE]=3 .PT_SIZE -2
+. if \\n[#EN_MARKER_STYLE]=3 .ps -2
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. if \\n[#EN_NUMBER]=1 \{\
@@ -13687,17 +13787,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#EN_MARKER_STYLE]=1 \{\
. FAMILY \\*[$EN_NUMBER_FAM]
. FT \\*[$EN_NUMBER_FT]
-. PT_SIZE \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
+. ps \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
. \}
. if \\n[#EN_MARKER_STYLE]=2 \{\
. FAMILY \\*[$EN_LN_FAM]
. FT \\*[$EN_LN_FT]
-. PT_SIZE \\n[#EN_PS]u\\*[$EN_LN_SIZE_CHANGE]
+. ps \\n[#EN_PS]u\\*[$EN_LN_SIZE_CHANGE]
. \}
. if \\n[#EN_MARKER_STYLE]=3 \{\
. FAMILY \\*[$EN_NUMBER_FAM]
. FT \\*[$EN_NUMBER_FT]
-. PT_SIZE \\n[#PT_SIZE_IN_UNITS]u*6u/10u
+. ps \\n[#PT_SIZE_IN_UNITS]u*6u/10u
. \}
. \}
.\" Build string for line-numbered endnotes
@@ -13749,7 +13849,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. rm $EN_LINENUMBER
. \}
. if \\n[#EN_MARKER_STYLE]=3 \{\
-. PT_SIZE \" Reset ps changed to get width of s-script numbers
+. ps \" Reset ps changed to get width of s-script numbers
. ie \\n[#PRINT_STYLE]=1 \{\
.\" Vertical raise amount here is less than when the same string is printed in
.\" the body of the text because number precedes a cap.
@@ -13789,7 +13889,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$EN_FAM]
. FT \\*[$EN_FT]
-. PT_SIZE \\n[#EN_PS]u
+. ps \\n[#EN_PS]u
. \}
. \}
. el \{\
@@ -13934,7 +14034,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. FAMILY \\*[$EN_STRING_FAM]
. FT \\*[$EN_STRING_FT]
-. PT_SIZE \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
+. ps \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
. vs \\n[#EN_LEAD]u
. if \\n[#ENDNOTE_STRING_COLOR]=1 \{\
. TRAP OFF
@@ -14258,7 +14358,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. FAMILY \\*[$BIB_STRING_FAM]
. FT \\*[$BIB_STRING_FT]
-. PT_SIZE \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
+. ps \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
. vs \\n[#BIB_LEAD]u
. \}
. if '\\*[$BIB_STRING_QUAD]'L' .LEFT
@@ -14283,7 +14383,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. CAPS OFF
. FAMILY \\*[$BIB_FAMILY]
. FT \\*[$BIB_FT]
-. PT_SIZE -\\*[$BIB_STRING_SIZE_CHANGE]
+. ps -\\*[$BIB_STRING_SIZE_CHANGE]
. if \\n[#PRINT_STYLE]=1 \{\
. ie \\n[#SINGLE_SPACE]=1 .ALD \\n[#BIB_LEAD]*3u
. el \{\
@@ -14357,12 +14457,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. ie '\\$0'HD_TO_TOC' \{\
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+\!. ps \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
. \}
. el \{\
\!. FAMILY \\*[$TOC_TITLE_FAM]
\!. FT \\*[$TOC_TITLE_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE]
+\!. ps \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE] N
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
@@ -14417,7 +14517,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PRINT_STYLE]=2 \{\
\!. FAMILY \\*[$TOC_PN_FAM]
\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
+\!. ps \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
. \}
\!. TAB 100
\!. PRINT \\*[LEADER]\c
@@ -14690,11 +14790,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. COLLATE
. if \\n[#PRINT_STYLE]=1 \{\
. rr #IGNORE
-. LS 24
+. vs 24
. nr #IGNORE 1
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. LS \\n[#TOC_LEAD]u
+. vs \\n[#TOC_LEAD]u
. \}
. if \\n[#FINIS] \{\
. if \\n[#FOOTERS_WERE_ON] .FOOTERS \" Finally, turn footers on if they were on
@@ -14724,7 +14824,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#SLANT_ON] \{\
\*[SLANTX]\c
. \}
-. DOC_LINE_LENGTH \\n[#DOC_L_LENGTH]u
. \\*[$TOC_HEADER_QUAD]
. PAGENUM_STYLE \\*[$TOC_PN_STYLE]
. PDF_BOOKMARK 1 \\*[$TOC_HEADER_STRING]
@@ -14732,7 +14831,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$TOC_HEADER_FAM]
. FT \\*[$TOC_HEADER_FT]
-. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
+. ps \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
. \}
. nr #TOC_PS
. ie \\n[#PRINT_STYLE]=1 \{\
@@ -15571,7 +15670,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. LL \\n[#DOC_L_LENGTH]u
. QUAD $DOC_QUAD
. nr #SAVED_DOC_LEAD \\n[#DOC_LEAD]
-. LS \\n[#DOC_LEAD]u
+. vs \\n[#DOC_LEAD]u
\*[SLANTX]
\*[CONDX]
\*[EXTX]
@@ -15832,6 +15931,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. vpt 1
..
\#
+.MAC output-float END
+. FLOAT*DIV:\\n[loop-count]
+. vpt 0
+. if \\n[D-float:\\n[loop-count]] \{\
+. sp \
+-\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
+. rr D-float:\\n[loop-count]
+. \}
+.END
+\#
\# FLOAT
\# -----
\# *Arguments:
@@ -15848,9 +15957,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" Case where upcoming .br breaks to a new page, causing a defered float
.\" to be output by HEADER and the defer register to be cleared.
. nr pagenum \\n%+\\n[#PAGE_NUM_ADJ]
-.\" Possibly breaks to a new page.
. br
-. if !(\\n%+\\n[#PAGE_NUM_ADJ])=\\n[pagenum] .nr broken*at*float 1
+.\" Possibly breaks to a new page. This may create problems, so the
+.\" condition and a flag are set here, commented out for possible
+.\" later use.
+.\"
+.\" if !(\\n%+\\n[#PAGE_NUM_ADJ])=\\n[pagenum] .nr broken*at*float 1
+.\"
.\" Clear .ns when a single line of running text precededs float
.\" at the top of the page.
. if \\n[nl]=\\n[#T_MARGIN] \{\
@@ -15859,13 +15972,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. sp
. vpt
. \}
-. rr #ARG_NUM
-. nr #ARG_NUM 0 1
-. nr #OPTS \\n[#NUM_ARGS]
. if '\\$1'FORCE' \{\
. nr #FORCE 1
. shift
. \}
+. if '\\$1'SPAN' \{\
+. nr float-span 1
+. shift
+. \}
. if '\\$1'ADJUST' \{\
. shift
. ds float-adj:top \\$1
@@ -15885,15 +15999,29 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. el \{\
. br
. di
+. if \\n[float*with-table] \
+. if !\\n[tbl*have-header] .ev
. ev
-. if ((\\n[dn]-\\n[.v])>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
-. ie \\n[@TOP] \{\
-. rs
-. sp
-. \}
+. if \\n[tbl*boxed] .nr dn +.65v
+. if (\\n[dn]>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
+. ie \\n[@TOP] \
+. if !\\n[tbl*boxed] .rs
. el \{\
. if !\\n[defer] .nr defer 0 1
. rn FLOAT*DIV FLOAT*DIV:\\n+[defer]
+. if \\n[float-span] \
+. if !\\n[tbl*boxed] .rnn float-span float-span:\\n[defer]
+. if \\n[float*with-tbl] \{\
+. rr float*with-tbl
+. ie \\n[tbl*boxed] \{\
+. ds float*type:\\n[defer] boxed
+. rr float-span
+. \}
+. el .ds float*type:\\n[defer] table
+. if !'\\*[tbl*center]'' .nr float*tbl-center:\\n[defer] 1
+. rn tbl*header-div tbl*header-div:\\n[defer]
+. rm tbl*center
+. \}
. if \\n[D-float] .nr D-float:\\n[defer] \\n[D-float]
. nr float-depth:\\n[defer] \\n[dn]
. if \\n[#FORCE] \{\
@@ -15904,14 +16032,35 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. sp 0\\*[float-adj:top]\\*[float-adj]
-. if \\n[boxed-table] .sp 1-.35v
+. if \\n[float*with-tbl] \{\
+. ie \\n[tbl*boxed] \{\
+. if !\\n[@TOP] .sp .65v
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+. if !\\n[#FN_DEPTH] \
+. ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
+. \}
+. el .sp
+. \}
. if \\n[.u] .nr #RESTORE_FILL 1
. nf
+. if \\n[@TOP] \{\
+. nr no-adjust 1
+. rr @TOP
+. nop
+. \}
. FLOAT*DIV
-. if \\n[boxed-table] \{\
-. if \\n[dn]=\\n[bx-tbl-depth] .sp .35v
-. rr boxed-table
-. rr bx-tbl-depth
+. rm tbl*header-div
+. if \\n[float*with-tbl] \{\
+. ie \\n[tbl*boxed] \{\
+. if \\n[dn]=\\n[bx-tbl-depth] .sp .35v
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+. ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+. rr tbl*boxed
+. rr bx-tbl-depth
+. \}
+. el .if '\\*[tbl*label]'' .sp
+. rr float*with-tbl
+. rm tbl*center
. \}
. if \\n[D-float] \{\
. sp -\\n[dn]u+\\n[#DOC_LEAD]u+\\n[D-float]u
@@ -15920,19 +16069,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. fi
. rr #RESTORE_FILL
. \}
-. if \\n[broken*at*float] \{\
-. if !\\n[defer] \{\
-. sp -\\n[.v]u
-. rr broken*at*float
-. \}
-. \}
. rm FLOAT*DIV
-. sp 0\\*[float-adj:bottom]\\*[float-adj]
+. if !\\n[no-adjust] .sp 0\\*[float-adj:bottom]\\*[float-adj]
. SHIM
-. rr D-float
. rm float-adj
+. rm no-adjust
. rm float-adj:top
. rm float-adj:bottom
+. rr D-float
. rr #FORCE
. \}
.END
@@ -15952,6 +16096,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC RR_@TOP END \" Trap-invoked after first line of text on a new page
. rr @TOP
+. if \\n[.vpt]=0 .vpt
.END
\#
.MAC TRAPS END
@@ -15966,8 +16111,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" Plant header trap
. wh 0 HEADER
. \}
-.\" Adjust lead so last line of text falls on B_MARGIN,...
-. ie \\n[#ADJ_DOC_LEAD]=1 \{\
+.\" Adjust lead so last line of text falls on B_MARGIN
. nr #LINES_PER_PAGE 0 1
. nr #DOC_LEAD_ADJ 0 1
. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#ORIGINAL_B_MARGIN]-\\n[#DOC_LEAD]
@@ -15991,22 +16135,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" Set #B_MARGIN to 1 machine unit lower on the page than #VISUAL_B_MARGIN
. nr #B_MARGIN \\n[#B_MARGIN]+(\\n[#FOOTER_DIFF]-1)
.\" Set the FN_OVERFLOW_TRAP position
-. nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\n[#FN_LEAD]
+. nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]-\\n[#FN_LEAD]
. if \\n[#PRINT_STYLE]=1 .nr #FN_OVERFLOW_TRAP_POS \\n[#ORIGINAL_B_MARGIN]u
-. \}
-.\" ...or calculate new B_MARGIN based on # of lines (at #DOC_LEAD) that fit
-.\" on the page.
-. el \{\
-. nr #LINES_PER_PAGE 0 1
-. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#B_MARGIN]
-. while \\n[#T_MARGIN]+(\\n[#DOC_LEAD]*\\n+[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN] \{\
-.
-. \}
-. nr #VISUAL_B_MARGIN \\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD]-\\n[#DOC_LEAD])
-. nr #FOOTER_DIFF (\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n[#VISUAL_B_MARGIN]
-. nr #B_MARGIN \\n[#B_MARGIN]+(\\n[#FOOTER_DIFF]-1)
-. nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\n[#FN_LEAD]
-. \}
.\" Set footer and footnote overflow traps
. if !\\n[#NO_TRAP_RESET] \{\
. nr #FN_COUNT 0 1
@@ -16777,24 +16907,49 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.nr tbl*have-header 0
.ds T&
\#
-\# Boxed tables in floats don't play nice with vertical spacing,
-\# hence the BOXED arg. Compensation is applied in FLOAT.
-\# 'H' arg starts a multi-page table with a repeated header.
-\#
.MAC TS END
-. nr #TABLE 1
-. ie '\\n[.z]'FLOAT*DIV' \{\
-. if '\\$1'BOXED' \
-. if !\\n[.d] .nr boxed-table 1
+. br
+. rr tbl*have-header
+. if '\\n[.z]'FLOAT*DIV' .nr float*with-tbl 1 \" Removed in FLOAT
+. if !'\\n[.z]'FLOAT*DIV' \{\
+. if \\n[.t]=1 \
+. if !\\n[@TOP] .NEWPAGE
+. \}
+. rr tbl*boxed
+. rm tbl*label
+. nr #ARGS 0 1
+. nr #COUNT 4
+. while \\n+[#ARGS]<=\\n[#COUNT] \{\
+. if '\\$1'H' .nr tbl*have-header 1
+. if '\\$1'BOXED' .nr tbl*boxed 1
+. if '\\$1'CENTER' .ds tbl*center \\$1
+. if '\\$1'NEEDS' .nr tbl*needs \\$2
+. shift
. \}
-. el \{\
-. if '\\$1'H' \{\
-. nr tbl*have-header 1
-. sp .5v
-. ev table
-. evc 0
-. di tbl*header-div
-. \}
+. if !\\n[tbl*needs] .nr tbl*needs 1
+. if \\n[@TOP] \{\
+. if !'\\n[.z]'FLOAT*DIV' \{\
+. rr @TOP
+. vpt 0
+. rs
+. nop \&
+. sp |\\n[#T_MARGIN]u-1v
+. vpt
+. \}
+. \}
+. nr tbl*move-footer-trap 1
+. nr tbl*move-footer \\n[#VARIABLE_FOOTER_POS]-\\n[#DOC_LEAD]
+. nr tbl*move-fn-overflow-trap 1
+. nr tbl*move-fn-overflow \\n[#FN_OVERFLOW_TRAP_POS]-\\n[#DOC_LEAD]
+. ch FOOTER \\n[tbl*move-footer]u
+. if !\\n[#FN_DEPTH] .ch FN_OVERFLOW_TRAP -\\n[tbl*move-fn-overflow]u
+. if !'\\n[.z]'FLOAT*DIV' .sp
+. substring tbl*center 0 0
+. if '\\*[tbl*center]'C' .nr tbl*center-label 1
+. if \\n[tbl*have-header] \{\
+. ev table-header
+. evc 0
+. di tbl*header-div
. \}
.END
\#
@@ -16802,36 +16957,158 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie '\\n[.z]'tbl*header-div' \{\
. nr T. 0
. T#
-. br
. di
. ev
+. if !'\\n[.z]'FLOAT*DIV' \{\
+. ie !'\\n[tbl*boxed]'' .ne \\n[dn]u+\\n[tbl*needs]
+. el .ne \\n[dn]u+2p+\\n[tbl*needs]
+. \}
. ie (\\n[dn]-\\n[.v])>\\n[.t] \{\
. if !\\n[@TOP] .@error ridiculously long table header
-. ds@need \\n[dn]
. tbl*print-header
. \}
. el \{\
. nr tbl*header-ht \\n[dn]
-. ds@need \\n[dn]u+1v
. tbl*print-header
. \}
. \}
. el .@error .TH without .TS H
+.\" When centering a boxed table inside a float, .T# won't place
+.\" vertical rules in the correct horizontal position unless .ll is
+.\" given a nominal value (can be anything) and an indent is set
+.\" manually.
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if !'\\*[tbl*center]'' \{\
+. if \\n[tbl*boxed] \{\
+. nr float*ll \\n[.l]
+. ll 0
+. in \\n[float*ll]u-\\n[TW]u/2u
+. \}
+. \}
+. \}
.END
\#
.MAC TE END
-. if !'\\$*'' \{\
-. if !'\\$3'' .sp \\$3
-. if !'\\$2'' .QUAD \\$2
-. ie '\\$1'NO_SHIM' .nr tbl*no-shim 1
-. el .PRINT \\$1
+. ev tbl*end \" Needed because of .ad changes
+. evc 0
+. nf
+. ie '\\$1'NO_SHIM' .nr tbl*no-shim 1
+. el .ds tbl*label \\$1
+. shift
+. ie \B'\\$1' \{\
+. ds tbl*user-add-space \\$1
+. nr tbl*left-label-on-table 1
+. shift
+. if !'\\$1'NO_SHIM' \{\
+. TBL*GET_QUAD \\$1
+. shift
+. \}
+. \}
+. el \{\
+. if !'\\$1'NO_SHIM' \{\
+. ie !'\\$1'' \{\
+. TBL*GET_QUAD \\$1
+. shift
+. if \B'\\$1' \{\
+. ds tbl*user-add-space \\$1
+. nr tbl*left-label-on-table 1
+. \}
+. \}
+. el .nr tbl*left-label-on-table 1
+. shift
+. \}
+. if '\\$1'NO_SHIM' .nr tbl*no-shim 1
+. if \\n[.t]<\\n[.v] \{\
+. nr tbl*label-warning 1
+. if d tbl*header-div .rm tbl*header-div
+. \}
+. rr tbl*move-footer-trap
+. rr tbl*move-footer
+. rr tbl*move-fn-overflow-trap
+. rr tbl*move-fn-overflow
+. ie !\\n[tbl*center-label] \{\
+. if \\n[tbl*center-label-on-table] .ll \\n[TW]u
+. if \\n[tbl*right-label-on-table] .ll \\n[TW]u
+. \}
+. el \{\
+. if \\n[tbl*left-label-on-table] .in \\n[.l]u-\\n[TW]u/2u
+. if \\n[tbl*center-label-on-table] \
+. if \\n[.i] .in 0
+. if \\n[tbl*right-label-on-table] .ll -((\\n[.l]u-\\n[TW]u)/2u)
+. \}
+. SIZESPECS
+. if !'\\*[tbl*label]'' \{\
+. ie \\n[tbl*label-warning] \{\
+. tm1 "[mom]: '\\n[.F]', line \\n[.c]: Insufficient room for table caption, output page \\n[#PAGENUMBER].
+. tm1 " Skipping caption, but continuing to process.
+. NEWPAGE
+. \}
+. el \{\
+. ie !'\\*[tbl*user-add-space]'' .sp \\*[tbl*user-add-space]
+. el .sp \\n[#CAP_HEIGHT]u/4u
+. PRINT \\*[tbl*label]
+. br
+. \}
. \}
+. if \\n[tbl*boxed] \
+. if '\\*[tbl*label]'' .sp
+. ll
. if '\\n[.z]'FLOAT*DIV' .nr bx-tbl-depth \\n[.d]
-. if '\\n[.z]'tbl*header-div' .@error .TS H but no .TH before .TE
-. nr tbl*have-header 0
-. rr #TABLE
-. if !\\n[tbl*no-shim] .SHIM
+. if '\\n[.z]'tbl*header-div' \{\
+. @error .TS with 'H' flag but no corresponding .TH
+. ab Aborting.
+. \}
+. ev
+. if !\\n[tbl*no-shim] \{\
+. if !'\\n[.z]'FLOAT*DIV' \{\
+. nr tbl*before-shim \\n[nl]
+. SHIM
+. nr tbl*after-shim \\n[nl]
+. if \\n[tbl*before-shim]=\\n[tbl*after-shim] .sp
+. \}
+. \}
+. TBL*CLEANUP
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.END
+\#
+.MAC TBL*GET_QUAD END
+. QUAD \\$1
+. ds tbl*label-quad \\$1
+. substring tbl*label-quad 0 0
+. if '\\*[tbl*label-quad]'L' .nr tbl*left-label-on-table 1
+. if '\\*[tbl*label-quad]'C' .nr tbl*center-label-on-table 1
+. if '\\*[tbl*label-quad]'R' .nr tbl*right-label-on-table 1
+.END
+\#
+.MAC TBL*CLEANUP END
+. rr tbl*before-shim
+. rr tbl*after-shim
+. if !'\\n[.z]'FLOAT*DIV' \{\
+. rm tbl*center
+. if !'\\n[.z]'FLOAT*DIV' .rm tbl*header-div
+. \}
. rr tbl*no-shim
+. rm tbl*user-add-space
+. rm tbl*label-quad
+. rr tbl*center-label
+. rr tbl*left-label-on-table
+. rr tbl*center-label-on-table
+. rr tbl*right-label-on-table
+. rr tbl*label-warning
+.END
+\#
+.MAC tbl@top-hook END
+. if \\n[tbl*have-header] \{\
+. if !\\n[.ne] \{\
+. rr @TOP
+. ch RR_@TOP
+. tbl*print-header
+. \}
+. \}
+. if \\n[tbl*move-footer-trap] \
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+. if \\n[tbl*move-fn-overflow-trap] \
+. ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
.END
\#
.MAC tbl*print-header END
@@ -16839,29 +17116,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nf
. nr fill 1
. \}
-. tbl*header-div
-. if fill=1 \{\
-. fi
-. rr fill
+. ie d tbl*header-div:\\n[loop-count] \{\
+. tbl*header-div:\\n[loop-count]
. \}
+. el .tbl*header-div
+. if '\\n[.z]'FLOAT*DIV' \
+. if !'\\*[tbl*center]'' .ce 1000
. mk #T
.END
\#
-.MAC tbl@top-hook END
-. ie \\n[tbl*have-header] \{\
-. tbl*print-header
-. \}
-. el .if \\n[#TABLE] \{\
-. rs
-. sp
-. \}
+.MAC tbl@bottom-hook END
+.\" Not currently used
.END
\#
-.MAC tbl@bottom-hook END
-. if \\n[tbl*have-header] \{\
-. nr T. 1
-. T#
-. \}
+.MAC tbl*float-warning END
+. tm1 "[mom]: Table in FLOAT, output page \\n[#PAGENUMBER], exceeds page vertical limits.
+. tm1 " Multipage tables cannot be contained within floats.
+. ab Aborting.
.END
\#
.MAC ds@need END \" Move vertically until there is enough space for \$1
@@ -17016,7 +17287,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# versions of the definitions found in the refer module of s.tmac.
\#
.de @error
-.tm \\n[.F]:\\n[.c]: macro error: \\$*
+.tm [mom]: '\\n[.F]', line \\n[.c]: \\$*
..
\#
\# Underlining unavoidably turns off sentence spacing.
@@ -18080,7 +18351,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr MN-right 0
. nr MN-active 0
. rr MN-shifted
-. ch FOOTER -\\n[#B_MARGIN]u
+\#. ch FOOTER -\\n[#B_MARGIN]u
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
..
\#
\# MNbottom-left
@@ -18326,9 +18598,8 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
. el .nr LEVEL_REQ \\n[CURRENT_LEVEL]
. \}
. ds PDF_TX \\$*
-\#. asciify PDF_TX
. pdfmomclean PDF_TX
-.\" . ev protect
+.\" . ev protect
. nr PDF_LEV (\\n[LEVEL_REQ]*\\n[#PDF_BOOKMARKS_OPEN])
. ie '\\*[.T]'ps' \{\
. if !'\\*[PDF_NM]'' \{\
@@ -18338,7 +18609,7 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
. pdfbookmark \\n[PDF_LEV] \\*[PDF_TX]
. \}
. el .pdfbookmark \\*[PDF_NM] \\n[PDF_LEV] \\$*
-.\" . ev
+.\" . ev
. nr CURRENT_LEVEL \\n[LEVEL_REQ]
. rr LEVEL_REQ
. rr PDF_LEV
@@ -18357,7 +18628,6 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
.MAC PDF_TITLE END
. ds pdftitle \\$*
. pdfmomclean pdftitle
-\#. pdfinfo /Title \\*[pdftitle]
. nop \!x X ps:exec [/Title (\\*[pdftitle]) /DOCINFO pdfmark
.END
\#