groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Groff-commit] groff/contrib/mom BUGS ChangeLog NEWS copyright...


From: Werner LEMBERG
Subject: [Groff-commit] groff/contrib/mom BUGS ChangeLog NEWS copyright...
Date: Sat, 14 May 2005 03:07:14 -0400

CVSROOT:        /cvsroot/groff
Module name:    groff
Branch:         
Changes by:     Werner LEMBERG <address@hidden> 05/05/14 07:07:13

Modified files:
        contrib/mom    : BUGS ChangeLog NEWS copyright om.tmac 
        contrib/mom/examples: README.txt elvis_syntax elvis_syntax.new 
                              sample_docs.mom 
        contrib/mom/momdoc: appendices.html color.html cover.html 
                            docelement.html docprocessing.html 
                            goodies.html headfootpage.html inlines.html 
                            intro.html letters.html macrolist.html 
                            reserved.html toc.html typemacdoc.html 
                            typesetting.html using.html 
Added files:
        contrib/mom/momdoc: refer.html 

Log message:
        *Thu May 12 2005
        
        o Added margin notes capability
        
        o Added mom-specific refer support; refer calls can be embedded in
        running text, sent to footnotes or endnotes, or collected for
        output on a bibliography page; also added mom-specific refer
        control macros
        
        o Added bibliography page capability, with full suite of control
        macros
        
        o Added referencing of footnotes and endnotes by line number
        
        o Added capability to have footnotes run on when footnotes are
        being referenced by line number
        
        o Added a post footnote space option, in case users want a little
        space between their footnotes
        
        o Added ENDNOTE_MARKER_STYLE, so user can choose between endnotes
        identified by a numerical marker in the text, or by line number
        
        o Added control macros to accommodate differing needs for endnotes
        identified by line number
        
        o Added ENDNOTE_TITLE_SPACE, so user can control starting position
        of the endnotes page title
        
        o Extended LIST so that it accepts lowercase alpha, uppercase roman
        numeral and lowercase roman numeral enumerators; also added a
        "prefix" argument (which comes *after* the separator argument)
        
        o Changed RESET_LIST so that it can reset a list to any number,
        letter, or roman numeral, instead of just 1, a, A, I and i
        
        o Change to handling of footnote/endnote markers in text; input
        lines before FOOTNOTE still require \c, but input line after
        FOOTNOTE OFF must be entered as a literal continuation of the
        line before FOOTNOTE, including any required word space or
        punctuation (this so users can get the footnote marker in text
        either before or after the punctuation without hassle)
        
        o Added QUOTE_AUTOLEAD and BLOCKQUOTE_AUTOLEAD, so user can have
        quotes and blockquotes leaded differently from running text
        
        o Reworked QUOTE and BLOCKQUOTE to accommodate _AUTOLEAD control;
        spacing above and below quotes is equalized *on a per quote
        basis* (not completely happy with this, but at least it gives
        users some flexibility in designing (block)quotes)
        
        *Fri Mar 18 2005
        
        o Added mom.vim to /examples

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/BUGS.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/ChangeLog.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/NEWS.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/copyright.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/om.tmac.diff?tr1=1.26&tr2=1.27&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/examples/README.txt.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/examples/elvis_syntax.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/examples/elvis_syntax.new.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/examples/sample_docs.mom.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/refer.html?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/appendices.html.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/color.html.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/cover.html.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/docelement.html.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/docprocessing.html.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/goodies.html.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/headfootpage.html.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/inlines.html.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/intro.html.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/letters.html.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/macrolist.html.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/reserved.html.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/toc.html.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/typemacdoc.html.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/typesetting.html.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/groff/groff/contrib/mom/momdoc/using.html.diff?tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: groff/contrib/mom/BUGS
diff -u groff/contrib/mom/BUGS:1.18 groff/contrib/mom/BUGS:1.19
--- groff/contrib/mom/BUGS:1.18 Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/BUGS      Sat May 14 07:07:12 2005
@@ -5,6 +5,8 @@
 Post to the groff mailing list with bug reports, questions and
 suggestions, or contact me directly at:
 
+    address@hidden
+    or
     address@hidden
 
 If writing me directly, please include the word "groff" or "mom" in
@@ -15,6 +17,19 @@
 
 ========================================================================
 
+Version 1.2-f
+============
+
+Multiple line subheads near page bottom sometimes printing one line
+of subhead at page bottom, and subsequent lines on next page.
+---Fixed---
+
+Post-quote spacing still wonky when paragraph spacing is turned on.
+---Fixed--- (for good would be nice)
+
+RULE not always resetting quad and quad value.
+---Fixed---
+
 Version 1.2-e
 =============
 
Index: groff/contrib/mom/ChangeLog
diff -u groff/contrib/mom/ChangeLog:1.30 groff/contrib/mom/ChangeLog:1.31
--- groff/contrib/mom/ChangeLog:1.30    Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/ChangeLog Sat May 14 07:07:12 2005
@@ -1,3 +1,58 @@
+*Thu May 12 2005
+
+o Added margin notes capability
+
+o Added mom-specific refer support; refer calls can be embedded in
+  running text, sent to footnotes or endnotes, or collected for
+  output on a bibliography page; also added mom-specific refer
+  control macros
+
+o Added bibliography page capability, with full suite of control
+  macros
+
+o Added referencing of footnotes and endnotes by line number
+
+o Added capability to have footnotes run on when footnotes are
+  being referenced by line number
+
+o Added a post footnote space option, in case users want a little
+  space between their footnotes
+
+o Added ENDNOTE_MARKER_STYLE, so user can choose between endnotes
+  identified by a numerical marker in the text, or by line number
+
+o Added control macros to accommodate differing needs for endnotes
+  identified by line number
+
+o Added ENDNOTE_TITLE_SPACE, so user can control starting position
+  of the endnotes page title
+
+o Extended LIST so that it accepts lowercase alpha, uppercase roman
+  numeral and lowercase roman numeral enumerators; also added a
+  "prefix" argument (which comes *after* the separator argument)
+
+o Changed RESET_LIST so that it can reset a list to any number,
+  letter, or roman numeral, instead of just 1, a, A, I and i
+
+o Change to handling of footnote/endnote markers in text; input
+  lines before FOOTNOTE still require \c, but input line after
+  FOOTNOTE OFF must be entered as a literal continuation of the
+  line before FOOTNOTE, including any required word space or
+  punctuation (this so users can get the footnote marker in text
+  either before or after the punctuation without hassle)
+
+o Added QUOTE_AUTOLEAD and BLOCKQUOTE_AUTOLEAD, so user can have
+  quotes and blockquotes leaded differently from running text
+
+o Reworked QUOTE and BLOCKQUOTE to accommodate _AUTOLEAD control;
+  spacing above and below quotes is equalized *on a per quote
+  basis* (not completely happy with this, but at least it gives
+  users some flexibility in designing (block)quotes)
+
+*Fri Mar 18 2005
+
+o Added mom.vim to /examples
+
 *Thu Jan 20 2005
 
 o Added \*[TB+] and \*[B] to give inline functionality of .TN and
@@ -11,6 +66,10 @@
 
 *Wed Jan 19 2005
 
+o New macro, ADD_SPACE, so that extra space can be added at the
+  top of a new page in document processing; the .ns call in HEADER
+  was making additional space impossible
+
 o Reworked handling of ALD/SPACE/SP and LS when they're used at
   the tops of pages during pure (i.e. non-docprocessing)
   typesetting.  First lines were still wandering.  Should also be
@@ -19,7 +78,6 @@
   first baseline (i.e. merely sets the lead for the text that
   follows).
 
-
 *Tue Dec 14 2004
 
 o Fixed a small problem with spacing under quotes when paragraph
Index: groff/contrib/mom/NEWS
diff -u groff/contrib/mom/NEWS:1.17 groff/contrib/mom/NEWS:1.18
--- groff/contrib/mom/NEWS:1.17 Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/NEWS      Sat May 14 07:07:12 2005
@@ -1,3 +1,35 @@
+Release 1.3
+-----------
+
+Added line numbering capabilities, with controls.
+
+Footnotes and endnotes can now be referenced by line number.
+
+Added ability to adjust vertical position of the title that appears
+on the first endnotes page.
+
+Footnotes can run on when being referenced by line number.
+
+Footnotes now have a post-footnote spacing option, for adding
+a little space between footnotes.
+
+Extended LIST so it accepts alpha, ROMAN and roman enumerators.
+
+Added margin notes capability.
+
+Added refer support.
+
+Added bibliography page support.
+
+Added QUOTE_AUTOLEAD and BLOCKQUOTE_AUTOLEAD, so user can have
+quotes and blockquotes leaded differently from running text.
+
+Change: the input line immediately after FOOTNOTE OFF must be
+entered as a literal continuation of the line prior to FOOTNOTE,
+including any initial spaces or punctuation marks.  This allows
+for hassle-free placing of footnote markers in running text either
+before or after punctuation marks.
+
 Release 1.2-f
 -------------
 
Index: groff/contrib/mom/copyright
diff -u groff/contrib/mom/copyright:1.3 groff/contrib/mom/copyright:1.4
--- groff/contrib/mom/copyright:1.3     Tue Aug 31 20:17:20 2004
+++ groff/contrib/mom/copyright Sat May 14 07:07:12 2005
@@ -1,6 +1,6 @@
 AUTHOR
 ------
-Peter Schaffter (address@hidden)
+Peter Schaffter (address@hidden) (address@hidden) 
 320 Gordon St.
 Fergus, Ontario
 CANADA
@@ -9,7 +9,7 @@
 ========================================================================
 
 The groff macro file om.tmac and the html documentation pertaining
-to it are copyright (c) 2004 Peter Schaffter.
+to it are copyright (c) 2004, 2005 Peter Schaffter.
 
 om.tmac is issued under the GNU General Public License, a full copy of
 which can be had at
Index: groff/contrib/mom/examples/README.txt
diff -u groff/contrib/mom/examples/README.txt:1.2 
groff/contrib/mom/examples/README.txt:1.3
--- groff/contrib/mom/examples/README.txt:1.2   Mon Aug  9 09:07:47 2004
+++ groff/contrib/mom/examples/README.txt       Sat May 14 07:07:12 2005
@@ -90,4 +90,26 @@
 higher, and to use elvis_syntax.new for mom highlighting.
 
 I'll be very happy if someone decides to send me syntax highlighting
-rules for vim and emacs. :)
+rules for emacs. :)
+
+***mom.vim***
+
+Christian V. J. Brüssow has kindly contributed a set of mom syntax
+highlighting rules for use with vim.  Copy the file to your
+~/.vim/syntax directory, then, if your vim isn't already set up to
+do so, enable mom syntax highlighting with
+
+    :syntax enable
+
+or
+
+    :syntax on
+
+Please note: I don't use vim, so I won't be making changes to this
+file myself.  Christian Brüssow is the maintainer of the ruleset,
+which is available on the Web at
+
+    http://www.cvjb.de/comp/vim/mom.vim
+
+Contact Christian (address@hidden) if you have any suggestions or
+requests.
Index: groff/contrib/mom/examples/elvis_syntax
diff -u groff/contrib/mom/examples/elvis_syntax:1.9 
groff/contrib/mom/examples/elvis_syntax:1.10
--- groff/contrib/mom/examples/elvis_syntax:1.9 Wed Dec  8 07:57:47 2004
+++ groff/contrib/mom/examples/elvis_syntax     Sat May 14 07:07:12 2005
@@ -47,6 +47,7 @@
 font args UP DOWN BCK FWD BU BP FU FP
 font args ROM IT BD BDI PREV
 font args ST
+font args SUSPEND RESUME
 
 prefix            { \{ \{\
 font braces       { \{ \{\
Index: groff/contrib/mom/examples/elvis_syntax.new
diff -u groff/contrib/mom/examples/elvis_syntax.new:1.7 
groff/contrib/mom/examples/elvis_syntax.new:1.8
--- groff/contrib/mom/examples/elvis_syntax.new:1.7     Wed Dec  8 07:57:47 2004
+++ groff/contrib/mom/examples/elvis_syntax.new Sat May 14 07:07:12 2005
@@ -50,21 +50,22 @@
 font args BLOCK QUAD
 font args LEFT RIGHT CENTER CENTRE JUSTIFY TOP BOTTOM L R C J
 font args OFF QUIT END EXIT DONE NO ALL
-font args PAGE NUMBER STAR
+font args PAGE NUMBER STAR LINE
 font args LETTER LEGAL EXECUTIVE LEDGER TABLOID QUARTO FOLIO
 font args 10x14 A3 A4 A5 B4 B5
 font args SINGLESPACE
 font args FACTOR
-font args DASH BULLET ALPHA DIGIT USER
+font args DASH BULLET ALPHA DIGIT USER ROMAN roman alpha
+font args SUSPEND RESUME
 font args RGB CYM CMYK GRAY GREY
 font args COND CONDX EXT EXTX SUP SUPX CONDSUP CONDSUPX EXTSUP EXTSUPX
 font args BOLDER BOLDERX SLANT SLANTX
-font args UP DOWN BCK FWD BU BP FU FP
+font args UP DOWN BCK FWD BU BP FU FP FN_MARK EN_MARK
 font args ROM IT BD BDI PREV
 font args ST
 
-prefix            { \{ \} \{\
-font braces       { \{ \} \{\
+prefix            { \{ \} \{\ }
+font braces       { \{ \} \{\ }
 prefix            [ ]
 font brackets     [ ]
 prefix            \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc 
\(sq \(lq \(rq
Index: groff/contrib/mom/examples/sample_docs.mom
diff -u groff/contrib/mom/examples/sample_docs.mom:1.2 
groff/contrib/mom/examples/sample_docs.mom:1.3
--- groff/contrib/mom/examples/sample_docs.mom:1.2      Mon Aug  9 09:07:47 2004
+++ groff/contrib/mom/examples/sample_docs.mom  Sat May 14 07:07:12 2005
@@ -378,7 +378,7 @@
 Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
 ali\%quyam erat, sed diam voluptua.
 .FOOTNOTE OFF
-elitr sed diam nonumy eirmod tempor invidunt.  Ut labore et do\%lo\%re
+ elitr sed diam nonumy eirmod tempor invidunt.  Ut labore et do\%lo\%re
 magna ali\%quyam erat, sed diam voluptua.  At vero eos et accusam et
 justo duo do\%lo\%res et ea rebum.  Stet clita kasd gubergren no sea.
 \#
@@ -408,7 +408,7 @@
 Takimata sadipscing elitr, sed diam nonumy eirmod tempor invidunt
 ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
 .FOOTNOTE OFF
-sanctus est lorem. Ipsum dolor sit amet, consetetur
+ sanctus est lorem. Ipsum dolor sit amet, consetetur
 sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
 et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.  At vero eos et
 accusam et justo duo do\%lo\%res et ea rebum amet.  Consetetur sadipscing
@@ -446,7 +446,7 @@
 magna ali\%quyam.  Erat sed diam voluptua, at vero eos et accusam et
 justo.
 .FOOTNOTE OFF
-Et do\%lo\%re et magna ali\%quyam erat, sed diam voluptua, at vero.
+ Et do\%lo\%re et magna ali\%quyam erat, sed diam voluptua, at vero.
 Eos et accusam et justo duo.
 .BLOCKQUOTE OFF
 \#
@@ -495,7 +495,7 @@
 .FOOTNOTE
 Aliquyam nonumy eirmod tempor invidunt ut labore.
 .FOOTNOTE OFF
-erat, sed diam
+ erat, sed diam
 voluptua at vero eos et accusam.  Et justo duo do\%lo\%res et ea rebum,
 stet clita kasd gubergren, no sea takimata.
 .PP
@@ -555,7 +555,7 @@
 Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
 ali\%quyam erat, sed diam voluptua.
 .FOOTNOTE OFF
-elitr sed diam nonumy eirmod tempor invidunt.  Ut labore et do\%lo\%re
+ elitr sed diam nonumy eirmod tempor invidunt.  Ut labore et do\%lo\%re
 magna ali\%quyam erat, sed diam voluptua.  At vero eos et accusam et
 justo duo do\%lo\%res et ea rebum.  Stet clita kasd gubergren no sea
 takimata lorem.  Ipsum dolor sit amet, consetetur sadipscing elitr.
Index: groff/contrib/mom/momdoc/appendices.html
diff -u groff/contrib/mom/momdoc/appendices.html:1.6 
groff/contrib/mom/momdoc/appendices.html:1.7
--- groff/contrib/mom/momdoc/appendices.html:1.6        Tue Aug 31 20:17:20 2004
+++ groff/contrib/mom/momdoc/appendices.html    Sat May 14 07:07:12 2005
@@ -597,8 +597,10 @@
 I've ever owned have been hand-me-downs -- several generations
 out-of-date and &quot;resource challenged&quot;.  Disk space has
 always been an issue, as has processor speed and available RAM.
-One of the reasons I run Linux is that it has helped enormously to
-get the most out of my poor little boxes.
+One of the reasons I run GNU/Linux is that it has helped enormously
+to get the most out of my poor little boxes.  (It has been pointed
+out to me that NetBSD might be an even better choice of operating
+systems for computers with limited resources.)
 <p>
 In Linux-land, the choice of typesetting systems basically comes down
 to groff or TeX.  Both are wonderful -- monumental achievements if you
@@ -616,7 +618,7 @@
 Owing to its very long history, it -- and its &quot;power users&quot;
 -- have remained stuck in a time warp.  Most common macro packages
 still look as they did in those decades when memory was exorbitantly
-expensive, and every byte mattered.  Documentation -- not always
+expensive and every byte mattered.  Documentation -- not always
 easy to find -- is written as if all readers are computer whizzes,
 or at least have a university degree in one of the higher sciences.
 <p>
@@ -668,7 +670,10 @@
 (subscription information available
 <a href="http://ffii.org/mailman/listinfo/groff/";>here</a>)
 or contact me, Peter Schaffter,  directly at
+<i>&#112;&#101;&#116;&#101;&#114;&#64;&#102;&#97;&#117;&#115;&#116;&#117;&#115;&#46;&#100;&#121;&#110;&#46;&#99;&#97;</i>
+or
 
<i>&#112;&#116;&#112;&#105;&#64;&#103;&#111;&#108;&#100;&#101;&#110;&#46;&#110;&#101;&#116;</i>.
+
 <p>
 Please include the word &quot;mom&quot; or &quot;groff&quot; in the
 Subject: line of any message sent to my personal address, or you
@@ -676,7 +681,7 @@
 <p>
 If you want to visit <strong>mom</strong>'s homepage, you'll find
 it
-<a href="http://www.ncf.ca/~df191/mom.html";>here</a>.
+<a href="http://faustus.dyn.ca/mom/mom.html";>here</a>.
 <p>
 <hr>
 <a href="reserved.html#TOP">Next</a>&nbsp;&nbsp;
Index: groff/contrib/mom/momdoc/color.html
diff -u groff/contrib/mom/momdoc/color.html:1.2 
groff/contrib/mom/momdoc/color.html:1.3
--- groff/contrib/mom/momdoc/color.html:1.2     Fri Jun  4 06:43:08 2004
+++ groff/contrib/mom/momdoc/color.html Sat May 14 07:07:13 2005
@@ -104,7 +104,7 @@
     <li><a href="#NEWCOLOR">NEWCOLOR</a>
     <li><a href="#XCOLOR">XCOLOR</a>
     <li><a href="#COLOR">COLOR</a>
-    <li><a href="#COLOR_INLINE">\*[&lt;colorname&gt;</a> inline escape
+    <li><a href="#COLOR_INLINE">\*[&lt;colorname&gt;]</a> inline escape
 </ul>
 <p>
 
@@ -113,7 +113,7 @@
 <hr width="66%" align="left">
 <a name="NEWCOLOR"><h3><u>Creating (initializing) a colour with 
NEWCOLOR</u></h3></a>
 <br>
-Macro: <strong>NEWCOLOR</strong> <var>&lt;colour name&gt; [&lt;colour 
scheme&gt;] &lt;colour components&gt;</var>
+<nobr>Macro: <strong>NEWCOLOR</strong> &lt;colour name&gt; [&lt;colour 
scheme&gt;] &lt;colour components&gt;<wbr>
 
 <p>
 <strong>NEWCOLOR</strong> lets you create a colour, rather like an
@@ -194,7 +194,7 @@
 <hr width="33%" align="left">
 <a name="XCOLOR"><h3><u>Initializing a colour with XCOLOR</u></h3>
 <br>
-Macro: <strong>XCOLOR</strong> <var>&lt;X color name&gt; [&lt;alias&gt;]</var>
+<nobr>Macro: <strong>XCOLOR</strong> &lt;X color name&gt; [&lt;alias&gt;]<wbr>
 <br>
 <em>*&lt;X color name&gt; must be all one word, all lower case.
 <br>
@@ -290,7 +290,7 @@
 <hr width="33%" align="left">
 <a name="COLOR"><h3><u>Invoking a color</u></h3>
 <br>
-Macro: <strong>COLOR</strong> <var>&lt;colorname&gt;</var>
+<nobr>Macro: <strong>COLOR</strong> &lt;colorname&gt;<wbr>
 <br>
 <a name="COLOR_INLINE">Inline: <strong>\*[&lt;colorname&gt;]</strong></a>
 <p>
Index: groff/contrib/mom/momdoc/cover.html
diff -u groff/contrib/mom/momdoc/cover.html:1.4 
groff/contrib/mom/momdoc/cover.html:1.5
--- groff/contrib/mom/momdoc/cover.html:1.4     Mon Aug  9 09:07:48 2004
+++ groff/contrib/mom/momdoc/cover.html Sat May 14 07:07:13 2005
@@ -8,12 +8,12 @@
 
 <!====================================================================>
 
-<a href="letters.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="refer.html#TOP">Next</a>&nbsp;&nbsp;
 <a href="rectoverso.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 <p>
 
-<a name="COVER_TOP">
+<a name="TOP">
 <h1 align="center"><u>CREATING A COVER PAGE</u></h1>
 </a>
 
@@ -183,9 +183,9 @@
        <br>
        Macro: <strong>DOC_COVER</strong>
        <br>
-       Required argument: <var>TITLE | DOCTITLE | COVERTITLE | CHAPTER | 
CHAPTER_TITLE | CHAPTER+TITLE</var>
+       Required argument: <nobr>TITLE | DOCTITLE | COVERTITLE | CHAPTER | 
CHAPTER_TITLE | CHAPTER+TITLE<wbr>
        <br>
-       Optional arguments: <var>[ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC 
]</var>
+       Optional arguments: <nobr>[ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC 
]<wbr>
        <p>
        <em>*Note: these macros should be placed in the
        &quot;style-sheet&quot; section of your document setup (see the
@@ -361,9 +361,9 @@
 <hr width="66%" align="left">
 <p>
 <a name="ON_OFF"></a>
-       Macro: <strong>COVERS</strong> <var>&lt;toggle&gt;</var>
+       <nobr>Macro: <strong>COVERS</strong> &lt;toggle&gt;<wbr>
        <br>
-       Macro: <strong>DOC_COVERS</strong> <var>&lt;toggle&gt;</var>
+       <nobr>Macro: <strong>DOC_COVERS</strong> &lt;toggle&gt;<wbr>
 </a>
 <p>
 By default, if you give <strong>mom</strong> a
@@ -504,7 +504,7 @@
 
 <p>
 <hr>
-<a href="letters.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="refer.html#TOP">Next</a>&nbsp;&nbsp;
 <a href="rectoverso.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="#TOP">Top</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
Index: groff/contrib/mom/momdoc/docelement.html
diff -u groff/contrib/mom/momdoc/docelement.html:1.14 
groff/contrib/mom/momdoc/docelement.html:1.15
--- groff/contrib/mom/momdoc/docelement.html:1.14       Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/docelement.html    Sat May 14 07:07:13 2005
@@ -62,10 +62,10 @@
 <p>
 The control macros for document processing tags let you
 &quot;design&quot; the look of all the parts of your documents --
-should you wish.  At a bare minimum, all tags have macros to
-change <strong>mom</strong>'s defaults for family, font
-and point size.  Where appropriate, there are macros to control 
-leading, indents and quad as well.
+should you wish.  At a bare minimum, all tags have macros to change
+<strong>mom</strong>'s defaults for family, font, point size and
+colour.  Where appropriate, there are macros to control leading,
+indents and quad as well.
 <p>
 In addition, many tags have special macros to control features that
 are pertinent to those tags alone.  Have a look at the section dealing
@@ -221,7 +221,7 @@
                <li><a href="#PARAHEAD">PARAHEAD</a>
                <li><a href="#PARAHEAD_CONTROL">Parahead control</a>
        </ul>
-       <li><a href="#LINEBREAK_INTRO">Linebreaks (author linebreaks)</a>
+       <li><a href="#LINEBREAK_INTRO">Linebreaks (author linebreaks, section 
breaks)</a>
        <ul>
                <li><a href="#LINEBREAK">LINEBREAK</a>
                <li><a href="#LINEBREAK_CHAR">Linebreak character</a>
@@ -245,30 +245,49 @@
                </ul>
                <li><a href="#LIST_CONTROL">List control</a>
        </ul>
+       <li><a href="#NUMBER_LINES_INTRO">Line numbering</a>
+       <ul>
+               <li><a href="#NUMBER_LINES">NUMBER_LINES</a>
+               <li><a href="#NUMBER_LINES_CONTROL">Control macros</a> (for 
QUOTE and BLOCKQUOTE)
+       </ul>
        <li><a href="#FOOTNOTE_INTRO">Footnotes</a>
        <ul>
                <li><a href="#FOOTNOTE">FOOTNOTE</a>
                <li><a href="#FOOTNOTE_CONTROL">Footnote control</a>
        </ul>
-       <li><a href="#FINIS_INTRO">Document termination</a>
-       <ul>
-               <li><a href="#FINIS">FINIS</a>
-               <ul>
-                       <li><a href="#FINIS_STRING">Changing the FINIS 
string</a>
-                       <li><a href="#FINIS_COLOR">Changing the FINIS colour</a>
-               </ul>
-       </ul>
        <li><a href="#ENDNOTE_INTRO">Endnotes</a>
        <ul>
                <li><a href="#ENDNOTE">ENDNOTE</a>
                <li><a href="#ENDNOTE_CONTROL">Endnote control</a>
        </ul>
+       <li><a href="#MARGIN_NOTES_INTRO">Margin notes</a>
+       <ul>
+               <li><a href="#MN_INIT">MN_INIT</a> -- initialize margin notes
+               <li><a href="#MN">MN</a> -- start and end a margin note
+       </ul>
+    <li><a href="refer.html#TOP">Bibliographies and references</a>
+    <ul>
+        <li><a href="refer.html#REF">REF</a>
+        <li><a href="refer.html#ENDNOTE_REFS">ENDNOTE_REFS</a>
+        <li><a href="refer.html#FOOTNOTE_REFS">FOOTNOTE_REFS</a>
+        <li><a href="refer.html#BRACKET_REFS">Embedded references</a>
+        <li><a href="refer.html#BIBLIOGRAPHY">BIBLIOGRAPHY</a>
+        <li><a href="refer.html#BIBLIOGRAPHY_TYPE">BIBLIOGRAPHY_TYPE</a>
+    </ul>
+       <li><a href="#BLANK_PAGE_TITLE">Blank pages</a>
        <li><a href="#TOC_INTRO">Table of contents</a>
        <ul>
                <li><a href="#TOC">TOC</a>
                <li><a href="#TOC_CONTROL">Table of contents control</a>
        </ul>
-       <li><a href="#BLANK_PAGE_TITLE">Blank page</a>
+       <li><a href="#FINIS_INTRO">Document termination</a>
+       <ul>
+               <li><a href="#FINIS">FINIS (Document termination)</a>
+       </ul>
+       <ul>
+               <li><a href="#FINIS_STRING">Changing the FINIS string</a>
+               <li><a href="#FINIS_COLOR">Changing the FINIS colour</a>
+       </ul>
 </ul>
 <hr>
 
@@ -299,7 +318,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="EPIGRAPH">
-       Macro: <strong>EPIGRAPH</strong> <var>&lt;toggle&gt; | [ BLOCK 
]</var></a>
+       <nobr>Macro: <strong>EPIGRAPH</strong> &lt;toggle&gt; | [ BLOCK 
]</a><wbr>
 </a>
 
 <p>
@@ -759,7 +778,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HEAD">
-       Macro: <strong>HEAD</strong> <var>&quot;&lt;text of head&gt;&quot; [ 
&quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; ... ] ]</var>
+       <nobr>Macro: <strong>HEAD</strong> &quot;&lt;text of head&gt;&quot; [ 
&quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; ... ] ]<wbr>
 </a>
 
 <p>
@@ -984,7 +1003,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="SUBHEAD">
-       Macro: <strong>SUBHEAD</strong> <var>&quot;&lt;text of 
subhead&gt;&quot; [ &quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; 
... ] ]</var>
+       <nobr>Macro: <strong>SUBHEAD</strong> &quot;&lt;text of 
subhead&gt;&quot; [ &quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; 
... ] ]<wbr>
 </a>
 <p>
 The argument to <strong>SUBHEAD</strong> is the text of the subhead,
@@ -1092,7 +1111,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PARAHEAD">
-       Macro: <strong>PARAHEAD</strong> <var>&quot;&lt;text of 
parahead&gt;&quot;</var>
+       <nobr>Macro: <strong>PARAHEAD</strong> &quot;&lt;text of 
parahead&gt;&quot;<wbr>
 </a>
 <p>
 <strong>PARAHEAD</strong> must come AFTER
@@ -1241,7 +1260,7 @@
 <h3><u>Linebreak character control macro</u></h3>
 <p>
 <a name="LINEBREAK_CHAR">
-       Macro: <strong>LINEBREAK_CHAR</strong> <var>[ &lt;character&gt; ] [ 
&lt;iterations&gt; [ &lt;vertical adjustment&gt; ] ]</var>
+       <nobr>Macro: <strong>LINEBREAK_CHAR</strong> [ &lt;character&gt; ] [ 
&lt;iterations&gt; [ &lt;vertical adjustment&gt; ] ]<wbr>
 </a>
 <br>
 Alias: <strong>SECTION_CHAR</strong>
@@ -1291,7 +1310,7 @@
 <h3><u>Linebreak colour control macro</u></h3>
 <p>
 <a name="LINEBREAK_COLOR">
-       Macro: <strong>LINEBREAK_COLOR</strong> <var>&lt;color name&gt;</var>
+       <nobr>Macro: <strong>LINEBREAK_COLOR</strong> &lt;color name&gt;<wbr>
 </a>
 <p>
 To change the colour of the linebreak character(s), simply invoke
@@ -1359,6 +1378,34 @@
 as does the control macro
 <a href="#QUOTE_INDENT">QUOTE_INDENT</a>.
 <p>
+<strong>Version 1.3: mom</strong>'s handling of the vertical
+whitespace around quotes has changed slightly.  In versions prior
+to 1.3, it was not possible to alter the
+<a href="definitions.html#TERMS_LEADING">leading</a>
+of quotes and blockquotes (which was the same as the document
+leading), ensuring that the vertical whitespace remained consistent,
+as described above.  In 1.3 and later, it is possible to change the
+leading of quotes and blockquote via
+the <strong>QUOTE_AUTOLEAD</strong> and
+<strong>BLOCKQUOTE_AUTOLEAD</strong>macro.  Now, if your quote
+(or blockquote) leading differs from the document leading,
+<strong>mom</strong> attempts to observe the same rules for vertical
+whitespace outlined above; however, she will also insert a small,
+flexible amount of extra whitespace around the quotes to make sure
+the whitespace is equal, top and bottom.  Since she does this on a
+quote by quote basis, rather than by figuring out how much extra
+whitespace is needed to adjust <em>all</em> quotes on a page,
+the spacing around multiple quotes on the same page will differ
+slightly, although each will be balanced between lines of normal
+<a href="definitions.html#TERMS_RUNNING">running text</a>,
+top and bottom.  (The inability to scan an entire page and insert
+equalized whitespace at marked places is a limitation of groff,
+which, by and large, works in a linear, line by line fashion.)
+If you don't provide <strong>mom</strong> with a
+<strong>QUOTE_AUTOLEAD</strong>, quotes are leaded at the default
+for normal running text, meaning that multiple quotes on the same
+page are all spaced identically.
+<p>
 <a name="QUOTE_TIP"><strong>TIP:</strong></a>
 If you want to include snippets of programming code in
 <strong>mom</strong> documents, you may come acropper of the fact
@@ -1407,7 +1454,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="QUOTE">
-       Macro: <strong>QUOTE</strong> <var>toggle</var>
+       <nobr>Macro: <strong>QUOTE</strong> toggle<wbr>
 </a>
 
 <p>
@@ -1428,7 +1475,7 @@
 
 <a name="QUOTE_CONTROL"><h3><u>Quote control macros</u></h3></a>
 <ol>
-       <li><a href="#QUOTE_GENERAL">Family/font/size/colour/indent</a>
+       <li><a href="#QUOTE_GENERAL">Family/font/size/leading/colour/indent</a>
        <li><a href="#ALWAYS_FULLSPACE_QUOTES">Spacing above and below (typeset 
only)</a>
        <li><a href="#UNDERLINE_QUOTES">Underline quotes (typewrite only)</a>
        <li><a href="#BREAK_QUOTE">Manually break a footnoted quote that 
crosses pages/columns</a>
@@ -1440,13 +1487,14 @@
 <a href="#CONTROL_MACRO_ARGS">Arguments to the control macros</a>.
 <p>
 <pre>
-.QUOTE_FAMILY default = prevailing document family; default is Times Roman
-.QUOTE_FONT   default = italic
-.QUOTE_SIZE   default = +0 (i.e. same size as paragraph text)
-.QUOTE_COLOR  default = black
-<a name="QUOTE_INDENT">.QUOTE_INDENT default = paragraph indent x 3 (typeset); 
x 2 (typewrite)</a>
-             (note that this macro also sets the indents (left and right)
-              for blockquotes)
+.QUOTE_FAMILY   default = prevailing document family; default is Times Roman
+.QUOTE_FONT     default = italic; underlined in TYPEWRITE
+.QUOTE_SIZE     default = +0 (i.e. same size as paragraph text)
+.QUOTE_AUTOLEAD default = none; leading of quotes is the same as paragraphs
+.QUOTE_COLOR    default = black
+<a name="QUOTE_INDENT">.QUOTE_INDENT   default = paragraph indent x 3 
(typeset); x 2 (typewrite)</a>
+               (note that this macro also sets the indents (left and right)
+                for blockquotes)
 </pre>
 
 <a name="ALWAYS_FULLSPACE_QUOTES"><h3><u>2. Spacing above and below -- 
ALWAYS_FULLSPACE_QUOTES (typeset only)</u></h3></a>
@@ -1539,19 +1587,8 @@
 off from running text with a small amount of vertical whitespace top
 and bottom.  (See
 <a href="#QUOTE_SPACING">above</a>
-for a complete explanation of how this is managed, and how to control it.)
-<p>
-You may notice that <strong>BLOCKQUOTE</strong> has no macro to
-control
-<a href="definitions.html#TERMS_LEADING">leading</a>,
-although you can change the point size.  There are Very Good
-Reasons for this.  If you can't live with the limitation, change
-the leading of blockquotes (after invoking the tag) with
-<a href="typesetting.html#LS">LS</a>,
-but know that there will be Bottom Margin Consequences unless you
-use the
-<a href="docprocessing.html#SHIM">SHIM</a>
-macro after you turn the blockquote off.
+for a complete explanation of how this is managed, and how to control it.
+Be sure to read the section <strong>Version 1.3</strong>.)
 <p>
 
 <!---BLOCKQUOTE--->
@@ -1559,7 +1596,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="BLOCKQUOTE">
-       Macro: <strong>BLOCKQUOTE</strong> <var>toggle</var>
+       <nobr>Macro: <strong>BLOCKQUOTE</strong> toggle<wbr>
        <br>
        Aliases: <strong>CITE, CITATION</strong>
 </a>
@@ -1593,7 +1630,7 @@
 
 <a name="BLOCKQUOTE_CONTROL"><h3><u>Blockquote control macros</u></h3></a>
 <ol>
-       <li><a 
href="#BLOCKQUOTE_GENERAL">Family/font/size/colour/quad/indent</a>
+       <li><a 
href="#BLOCKQUOTE_GENERAL">Family/font/size/leading/colour/quad/indent</a>
        <li><a href="#ALWAYS_FULLSPACE_QUOTES">Spacing above and below (typeset 
only)</a>
        <li><a href="#BREAK_QUOTE">Manually break a footnoted blockquote that 
crosses pages/columns</a>
 </ol>
@@ -1604,13 +1641,14 @@
 <a href="#CONTROL_MACRO_ARGS">Arguments to the control macros</a>.
 <p>
 <pre>
-.BLOCKQUOTE_FAMILY default = prevailing document family; default is Times Roman
-.BLOCKQUOTE_FONT   default = italic
-.BLOCKQUOTE_SIZE   default = -1 (point)
-.BLOCKQUOTE_COLOR  default = black
-.BLOCKQUOTE_QUAD   default = left
-.QUOTE_INDENT      default = paragraph indent x 3 (typeset); x 2 
(typewrite)</a>
-                  (note that this macro also sets the left indent for quotes)
+.BLOCKQUOTE_FAMILY   default = prevailing document family; default is Times 
Roman
+.BLOCKQUOTE_FONT     default = roman
+.BLOCKQUOTE_SIZE     default = -1 (point)
+.BLOCKQUOTE_AUTOLEAD default = none; leading of blockquotes is the same as 
paragraphs
+.BLOCKQUOTE_COLOR    default = black
+.BLOCKQUOTE_QUAD     default = left
+.BLOCKQUOTE_INDENT   default = paragraph indent x 3 (typeset); x 2 
(typewrite)</a>
+                    (note that this macro also sets the left indent for quotes)
 </pre>
 
 <a name="ALWAYS_FULLSPACE_QUOTES"><h3><u>2. Spacing above and below -- 
ALWAYS_FULLSPACE_QUOTES (typeset only)</u></h3></a>
@@ -1651,7 +1689,7 @@
 every item in the list, you invoke the macro, <strong>ITEM</strong>,
 followed by the text of the item.  When a list is finished, you
 exit the list with <strong>LIST OFF</strong> (or
-<strong>QUIT</strong>, <strong>END</strong>, <strong>X</strong>,
+<strong>QUIT</strong>, <strong>END</strong>, <strong>BACK</strong>,
 etc.)
 <p>
 By default <strong>mom</strong> starts each list with the enumerator
@@ -1674,7 +1712,7 @@
 
 In other words, <strong>mom</strong> does not, by default, indent
 entire lists.  Indenting a list is controlled by the macro,
-<a href="#"SHIFT_LIST>SHIFT_LIST</a>.
+<a href="#SHIFT_LIST">SHIFT_LIST</a>.
 (This is a design decision; there are too many instances where a
 default indent is not desirable.)  Equally, <strong>mom</strong>
 does not add any extra space above or below lists.
@@ -1682,7 +1720,8 @@
 Lists can be nested (as in the example above).  In other words, you
 can set lists within lists, each with an enumerator (and possibly,
 indent) of your choosing.  In nested lists, each invocation of
-<strong>LIST OFF</strong> takes you back to the previous depth (or
+<strong>LIST OFF</strong> (you may prefer to use <strong>LIST
+BACK</strong>) takes you back to the previous depth (or
 level) of list, with that list's enumerator and indent intact.  The
 final <strong>LIST OFF</strong> exits lists completely and returns
 you to the left margin of running text.
@@ -1696,8 +1735,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="LIST">
-       Macro: <strong>LIST</strong> <var>[ BULLET | DASH | DIGIT | ALPHA | 
USER ] [ &lt;separator&gt; | &lt;user-defined enumerator&gt; ] [ &lt;off&gt; 
]</var></a>
-
+       <nobr>Macro: <strong>LIST</strong> [ BULLET | DASH | DIGIT | ALPHA | 
alpha | ROMAN&lt;n&gt; | roman&lt;n&gt; | USER &lt;string&gt;] [ 
&lt;separator&gt; | &lt;user-defined enumerator&gt; ] [ &lt;prefix&gt; ] [ 
&lt;off&gt; ]</a><wbr>
 <p>
 Invoked by itself (i.e. with no argument), <strong>LIST</strong>
 initializes a list (with bullets as the default enumerator).
@@ -1705,77 +1743,184 @@
 <a href="#ITEM">.ITEM</a>,
 on a line by itself, is treated as a list item.
 <p>
+<strong>NOTE:</strong> Every time you invoke <strong>LIST</strong>
+to start a list (as opposed to
+<a href="#LIST_EXIT">exiting one</a>),
+you must supply an enumerator (and optionally, a separator) for the
+list, unless you want <strong>mom</strong>'s default enumerator,
+which is a bullet.  Within nested lists, <strong>mom</strong>
+stores the enumerator, separator and indent for any list you return
+<em>backwards</em> to (i.e. with <strong>LIST OFF</strong>), but
+does not store any information for lists you move <em>forward</em>
+to.
+<br>
+
+<h3><u>The first argument--enumerator style</u></h3>
+<p>
 The optional arguments <strong>BULLET</strong>,
-<strong>DASH</strong>, <strong>DIGIT</strong> (for Arabic
-numerals), <strong>ALPHA</strong> (for lowercase letters) and
-<strong>USER</strong> allow you to say what kind of enumerator you
-want for a given list.
-<p>
-If you choose <strong>DIGIT</strong> or <strong>ALPHA</strong>, you
-may enter the optional argument <strong>separator</strong> to say
-what kind of separator you want after the enumerator.  The separator
-can be anything you like.  The default for <strong>DIGIT</strong> is
-a period (dot), like this:
+<strong>DASH</strong>, <strong>DIGIT</strong> (for
+Arabic numerals), <strong>ALPHA</strong> (for uppercase
+letters), <strong>alpha</strong> (for lowercase letters),
+<strong>ROMAN&lt;n&gt;</strong> (for uppercase roman numerals),
+<strong>roman&lt;n&gt;</strong> (for lowercase roman numerals) tell
+<strong>mom</strong> what kind of enumerator to use for a given
+list.
+<p>
+The arguments, <strong>ROMAN&lt;n&gt;</strong> and
+<strong>roman&lt;n&gt;</strong>, are special.  You must append to
+them a digit (arabic, e.g.  "1" or "9" or "17") saying how many items
+a particular roman-numeralled <strong>LIST</strong> is going to
+have. <strong>Mom</strong> requires this information in order to
+align roman numerals sensibly, and will abort--with a message--if
+you don't provide it.
+<p>
+A roman-numeralled list containing, say, five items, would be set
+up like this:
+<p>
+<pre>
+       .LIST roman5        producing        i)   Item 1.
+       .ITEM                                ii)  Item 2.
+       Item 1.                              iii) Item 3.
+       .ITEM                                iv)  Item 4.
+       Item 2.                              v)   Item 5.
+       .ITEM
+       Item 3
+       .ITEM
+       Item 4
+       .ITEM
+       Item 5
+</pre>
+
+<p>
+The argument, <strong>USER</strong>, lets you make up your own
+enumerator, and must be followed by a second argument: what you'd
+like the enumerator to look like.  For example, if you want a list
+enumerated with
+<strong>=&gt;</strong>,
+<p>
+<pre>
+       .LIST USER =&gt;
+       .ITEM
+       A list item
+</pre>
+
+will produce
+<p>
+<pre>
+       =&gt; A list item
+</pre>
+
+<strong>Please note:</strong> if the argument to
+<strong>USER</strong> contains spaces, you must enclose the argument
+in double quotes.
+
+<br>
+
+<h3><u>The second argument--separator style</u></h3>
+<p>
+If you choose <strong>DIGIT</strong>, <strong>ALPHA</strong>,
+<strong>alpha</strong>, <strong>ROMAN&lt;n&gt;</strong>, or
+<strong>roman&lt;n&gt;</strong>, you may enter the optional
+argument, <strong>separator</strong>, to say what kind of separator
+you want after the enumerator.  The separator can be anything you
+like.  The default for <strong>DIGIT</strong> is a period (dot),
+like this:
 <p>
 <pre>
        1. A list item
 </pre>
 
-The default separator for <strong>ALPHA</strong> is a right
-parenthesis, like this:
+The default separator for <strong>ALPHA</strong>,
+<strong>alpha</strong>, <strong>ROMAN&lt;n&gt;</strong> and
+<strong>roman&lt;n&gt;</strong> is a right parenthesis, like this:
 <p>
 <pre>
-       a) A list item
+       a) An alpha-ed list item
+       b) A second alpha-ed list item
+
+          or
+
+       i)  A roman-ed list item
+       ii) A second roman-ed item
 </pre>
 
-If you want digits with a right-parenthesis separator, you'd do
+If you'd prefer, say, digits with right-parenthesis separators
+instead of the default period, you'd do
 <p>
 <pre>
        .LIST DIGIT )
        .ITEM
-       A list item
+       A numberd list item
 </pre>
 
 which would produce
 <p>
 <pre>
-       1) A list item
+       1) A numbered list item
 </pre>
 
-<strong>BULLET</strong>, <strong>DASH</strong> and
+<strong>Please note: BULLET</strong>, <strong>DASH</strong> and
 <strong>USER</strong> do not take a separator.
+<br>
+
+<h3><u>The third argument--prefix style</u></h3>
 <p>
-<strong>USER</strong> lets you make up your own enumerator.  For
-example, if you want a list enumerated with <strong>=&gt;</strong>,
+Additionally, you may give a prefix (i.e. a character that comes
+<em>before</em> the enumerator) when your enumerator style for a
+particular list is <strong>DIGIT</strong>, <strong>ALPHA</strong>,
+<strong>alpha</strong>, <strong>ROMAN&lt;n&gt;</strong>
+or <strong>roman&lt;n&gt;</strong>.  In the arguments to
+<strong>LIST</strong>, the prefix comes <em>after</em> the
+separator, which may seem counter-intuitive, so please be careful.
+<p>
+A prefix can be anything you like.  Most likely, you'll want some
+kind of open-bracket, such as a left parenthesis.  If, for example,
+you want a <strong>DIGIT</strong> list with the numbers enclosed in
+parentheses, you'd enter
 <p>
 <pre>
-       .LIST USER =&gt;
+       .LIST DIGIT ) (
        .ITEM
-       A list item
+       The first item on the list.
+       .ITEM
+       The second item on the list.
 </pre>
 
-will produce
+which would produce 
 <p>
 <pre>
-       =&gt; A list item
+       (1) The first item on the list.
+       (2) The second item on the list.
 </pre>
 
-If the argument to <strong>USER</strong> contains spaces, you must
-enclose the argument in double quotes.
+<strong>Please note: BULLET</strong>, <strong>DASH</strong> and
+<strong>USER</strong> do not take a prefix.
+<br>
+
+<a name="LIST_EXIT"></a>
+<h3><u>Exiting lists--.LIST OFF/BACK or .QUIT_LISTS</u></h3>
+<p>
+Any single argument to <strong>LIST</strong> other
+than <strong>BULLET</strong>, <strong>DASH</strong>,
+<strong>DIGIT</strong>, <strong>ALPHA</strong>,
+<strong>alpha</strong>, <strong>ROMAN&lt;n&gt;</strong>,
+<strong>roman&lt;n&gt;</strong> or <strong>USER</strong> (e.g.
+<strong>LIST</strong> <kbd>OFF</kbd> or <strong>LIST</strong>
+<kbd>BACK</kbd>) takes you out of the current list.
 <p>
-Any single argument other than <strong>BULLET</strong>,
-<strong>DASH</strong>, <strong>DIGIT</strong>,
-<strong>ALPHA</strong> or <strong>USER</strong> takes you out of the
-current list.  If you are at the first list-level (or -depth),
+If you are at the first list-level (or "list-depth"),
 <strong>mom</strong> returns you to the left margin of running text.
 Any indents that were in effect prior to setting the list are fully
-restored.  If you are in a nested list, <strong>mom</strong> moves
-you back one list-level and restores the enumerator, separator and
-indent appropriate to that level.
-<p>
-Each invocation of <strong>LIST</strong> must be matched by a
-corresponding <strong>LIST OFF</strong> in order to fully exit
-lists.  For example, 
+restored.
+<p>
+If you are in a nested list, <strong>mom</strong> moves you
+<em>back one list-level</em> (i.e. does not take you out of the
+list structure) and restores the enumerator, separator and indent
+appropriate to that level.
+<p>
+Each invocation of <strong>LIST</strong> should be be matched by
+a corresponding <strong>LIST OFF</strong> in order to fully exit
+lists.  For example,
 <p>
 <pre>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
@@ -1809,14 +1954,10 @@
        sed diam nonumy eirmod tempor invidunt ut labore.
 </pre>
 
-<strong>NOTE:</strong> Every time you invoke <strong>LIST</strong>
-to start a list (as opposed to exiting one), you must supply an
-enumerator (and optionally, a separator) for the list, unless you
-want <strong>mom</strong>'s default enumerator, which is a bullet.
-Within nested lists, <strong>mom</strong> stores the enumerator,
-separator and indent for any list you return <em>backwards</em> to
-(i.e. with <strong>LIST OFF</strong>), but does not store any
-information for lists you move <em>forward</em> to.
+Alternatively, you may use the single-purpose macro,
+<strong>QUIT_LISTS</strong>, to get yourself out of a list
+structure.  In the example above, the two <kbd>.LIST OFF</kbd>
+lines could be replaced with a single <kbd>.QUIT_LISTS</kbd>.
 <p>
 
 <hr width="33%" align="left">
@@ -1924,11 +2065,11 @@
 
 <a name="RESET_LIST"><h3><u>2. Resetting an initialized list's enumerator -- 
RESET_LIST</u></h3></a>
 <p>
-In nested lists, if your choice of list enumerator for a given level
-of list is either <strong>DIGIT</strong> or <strong>ALPHA</strong>,
-you may sometimes want to reset the list's enumerator back to
-&quot;1&quot; or &quot;a&quot; when you return, within the nest, to
-that list.  Consider the following:
+In nested lists, if your choice of list enumerator for a given
+level of list is <strong>DIGIT</strong>, <strong>ALPHA</strong>,
+<strong>alpha</strong>, <strong>ROMAN</strong> or
+<strong>roman</strong>, you may sometimes want to reset the list's
+enumerator when you return to that list.  Consider the following:
 <p>
 <pre>
        Things to do religiously each and every day:
@@ -1943,19 +2084,25 @@
           c) canned tuna on Sunday
 </pre>
 
-Normally, within a nested list, when you return to an alpha- or
-digit-enumerated list, the enumerator continues incrementing from
-where it left off.  That means, in the example above, the normal
-state of affairs for the alpha'ed list under &quot;2.  Feed the
-cat&quot; would be c), d) and e).  The solution, in such a case, is
-simply to reset the enumerator --before <strong>ITEM</strong>!--
+Normally, within a nested list, when you return to an
+incrementally-enumerated list, the enumerator continues incrementing
+from where it left off.  That means, in the example above, the
+normal state of affairs for the alpha'ed list under &quot;2.  Feed
+the cat&quot; would be c), d) and e).  The solution, in such a case,
+is simply to reset the enumerator --before <strong>ITEM</strong>!--
 with the macro, <strong>RESET_LIST</strong>.
 <p>
-<strong>RESET_LIST</strong> does exactly what it says -- resets the
-list -- and doesn't take any arguments.
+By default, with no argument, <strong>RESET_LIST</strong> resets the
+enumerator to 1, A, a, I or i depending on the style of enumerator.
+You may, if you wish, pass <strong>RESET_LISTS</strong> a numeric
+argument representing the starting enumerator for the reset (if
+different from "1"), although I can't at present think of a use for
+this feature.
 <p>
 <a name="PAD_LIST_DIGITS"><h3><u>3. Padding digit enumerators 
(PAD_LIST_DIGITS)</a></u></h3></a>
 <p>
+<strong><u>Arabic digits</u></strong>
+<p>
 When your choice of enumerators is <strong>DIGIT</strong> AND the
 number of items in the list exceeds nine (9), you have to make a
 design decision: should <strong>mom</strong> leave room for the
@@ -1986,6 +2133,411 @@
 Of course, if the number of items in the list is less than ten
 (10), there's no need for <strong>PAD_LIST_DIGITS</strong>.
 <p>
+<strong><u>Roman numerals</u></strong>
+<p>
+By default, <strong>mom</strong> sets roman numerals in lists flush
+left.  The <strong>&lt;n&gt;</strong> argument appended to
+<strong>ROMAN&lt;n&gt;</strong> or <strong>roman&lt;n&gt;</strong>
+allows her to calculate how much space to put after each numeral in
+order to ensure that the text of items lines up properly.
+<p>
+If you'd like the roman numerals to line up flush right (i.e. be
+padded "left"), simply invoke <strong>PAD_LIST_DIGITS</strong>
+<kbd>LEFT</kbd> after <strong>LIST</strong> <kbd>ROMAN&lt;n&gt;</kbd>
+or <strong>LIST</strong> <kbd>roman&lt;n&gt;</kbd> amd before
+<strong>ITEM</strong>.
+<p>
+<hr>
+
+<!---LINE NUMBERING--->
+
+<a name="NUMBER_LINES_INTRO"><h2><u>Line numbering</u></h2></a>
+<ul>
+       <li><a href="#NUMBER_LINES">Macro: NUMBER_LINES</a>
+       <li><a href="#NUMBER_LINES_CONTROL">Control macros</a> (for quotes and 
blockquotes)
+</ul>
+
+<p>
+<strong>Mom</strong>'s line-numbering capabilities are not as flexible
+as most of her other document processing macros.  The reason is
+that groff's underlying line-numbering
+<a href="definitions.html#TERMS_PRIMITIVEX">primitive</a>,
+<kbd>.nm</kbd>, is, well...primtive.  It is not possible, for
+example, to select a particular family or font for use exclusively
+with line numbers.  Nor is it possible to set the
+<a href="definitions.html#TERMS_GUTTER">gutter</a>
+using any
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
+other than the
+<a href="definitions.html#TERMS_FIGURESPACE">figure space</a>.
+<p>
+That said, when you turn line-numbering on, <strong>mom</strong>,
+by default
+<br>
+<a name="NUMBER_LINES_DEFAULTS"></a>
+<ul>
+    <li>numbers every line of paragraph text; line-numbering is
+        suspended for all other document processing tags (like
+        docheaders, epigraphs, heads, subheads, etc.) and special
+        pages (covers, endotes, bibliographies, etc.); be aware,
+        though, that if you turn
+        <a href="definitions.html#TERMS_DOCHEADER">docheaders</a>
+       off (with
+       <a href="docprocessing.html#DOCHEADER">DOCHEADER</a> 
<strong>OFF</strong>)
+       and create your own docheader, <strong>mom</strong>
+       <em>will</em> line-number your custom docheader
+    <li>doesn't touch your line length; line numbers are hung
+        outside your current left margin (as set with
+        <a href="typesetting.html#L_MARGIN">L_MARGIN</a>,
+        <a href="typesetting.html#PAGE">PAGE</a>
+        or
+        <a href="docprocessing.html#DOC_LEFT_MARGIN">DOC_LEFT_MARGIN</a>),
+        regardless of any indents that may be active
+    <li>separates line numbers from running text by two
+        <a href="definitions.html#TERMS_FIGURESPACE">figure spaces</a>.
+</ul>
+<p>
+Line numbering may be enabled and disabled for
+<a href="#QUOTE">QUOTE</a>
+and/or
+<a href="#BLOCKQUOTE">BLOCKQUOTE</a>
+in one of three styles.  See
+<a href="#NUMBER_LINES_CONTROL">Line numbering control macros for quotes and 
blockquotes</a>.
+<p>
+The first time you invoke
+<a href="#NUMBER_LINES">NUMBER_LINES</a>
+you must, at a minimum, tell it what line number you want the
+<em>next</em>
+<a href="definitions.html#TERMS_OUTPUTLINE">output line</a>
+to have.  Optional arguments allow you to state which lines should
+be numbered (e.g. every five or every ten lines), and the gutter to
+place between line numbers and
+<a href="definitions.html#TERMS_RUNNING">running text</a>.
+<p>
+Subsequently, you can turn line-numbering off, either permanently,
+or resume it later at a place of your choosing.  When you
+resume line-numbering, the line numbers pick up where you left off.
+<p>
+
+<!---NUMBER_LINES--->
+
+<hr width="66%" align="left">
+<p>
+<nobr>
+<a name="NUMBER_LINES">
+       <nobr>Macro: <strong>NUMBER_LINES</strong> &lt;start number&gt; [ 
&lt;which lines to number&gt; [ &lt;gutter&gt; ] ]<wbr>
+    <br>
+       <nobr>Macro: <strong>NUMBER_LINES</strong>  &lt;anything&gt; | 
RESUME<wbr>
+    <br>
+</a>
+<wbr>
+
+<p>
+<strong>NUMBER_LINES</strong> does what it says: prints line
+numbers, to the left of
+<a href="definitions.html#TERMS_OUTPUTLINE">output lines</a>
+of paragraph text.  One of the chief reasons for wanting numbered
+lines is in order to identify footnotes or endnotes by line number
+instead of by a marker in the text.  (See
+<a href="#FOOTNOTE_LINENUMBERS">.FOOTNOTE_MARKER_STYLE LINE</a>
+for instructions on line-numbered footnotes, and
+<a href="#ENDNOTE_MARKER_STYLE">.ENDNOTE_MARKER_STYLE</a>
+for instructions on line-numbered endnotes.)
+<p>
+Every time you invoke <strong>NUMBER_LINES</strong>, unless you are
+using the arguments <strong>OFF</strong> (<strong>QUIT</strong>,
+<strong>END</strong>, <strong>X</strong>, etc.) or
+<strong>RESUME</strong> you must, at a minimum, pass it one
+argument, namely the number (digit) you want the <em>next</em>
+<a href="definitions.html#TERMS_OUTPUTLINE">output line</a>
+to have.  For example,
+<pre>
+       .NUMBER_LINES 3
+</pre>
+
+will prepend the number, 3, to the next output line.
+<p>
+Normally, of course, you will number lines of text starting at 1.
+All you have to do in that case is ensure that
+<pre>
+       .NUMBER_LINES 1
+</pre>
+
+precedes your first line of input text, which will also be the
+first line of output text.
+<p>
+You can alter <strong>mom</strong>'s default line numbering
+behaviour (see
+<a href="#NUMBER_LINES_DEFAULT">above</a>)
+with the optional arguments <strong>&lt;which lines to
+number&gt;</strong> and <strong>&lt;gutter&gt;</strong>.
+<p>
+<strong>&lt;which lines to number&gt;</strong> instructs
+<strong>NUMBER_LINES</strong> to number only certain lines, e.g.
+every two lines or every five lines.  If you want, say, only every
+five lines to have a prepended number, you'd do
+<pre>
+       .NUMBER_LINES 1 5
+</pre>
+
+<strong>GOTCHA!</strong>  The argument to <strong>&lt;which
+lines to number&gt;</strong> only numbers those lines that are
+multiples of the argument.  Hence, in the above example, line
+number "1" will <em>not</em> be numbered, since "1" is not a
+multiple of "5".
+<p>
+If you wanted line number "1" to be numbered, you'd have to invoke
+<kbd>.NUMBER_LINES 1 1</kbd> before the first output line, then
+study your <em>output</em> copy and determine where best to insert
+the following in your <em>input</em> copy:
+<pre>
+       .NUMBER_LINES \n(ln 5
+</pre>
+
+(The escape, <kbd>\n(ln</kbd>, ensures that
+<strong>NUMBER_LINES</strong> automatically supplies the correct
+value for the first argument, <strong>&lt;start
+number&gt;</strong>.)
+<p>
+Following this recipe, line number 1 will be numbered; subsequently,
+only line numbers that are multiples of 5 will be numbered.  A
+little experimentation may be required to determine the best place
+for it.
+<p>
+The optional argument, <strong>&lt;gutter&gt;</strong>, tells
+<strong>mom</strong> how much space to put between the line numbers
+and the running text.
+<p>
+<strong>Note</strong>: when giving a value for
+<strong>&lt;gutter&gt;</strong>, you cannot skip the
+<strong>&lt;which lines to number&gt;</strong> argument.  Either
+fill in the desired value, or use two double-quotes
+(<strong>""</strong>) to have <strong>mom</strong> use the value
+formerly in effect.
+<p>
+<strong>&lt;gutter&gt;</strong> does not require (or even accept) a
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
+The argument you pass to it is the number of
+<a href="definitions.html#TERMS_FIGURESPACE">figure spaces</a>
+you want between line numbers and running text.
+<strong>Mom</strong>'s default gutter is two figure spaces.  If
+you'd like a wider gutter, say, four figures spaces, you'd do
+<pre>
+       .NUMBER_LINES 1 1 4
+                       |
+                       +-- Notice you *must* supply a value
+                           for the 2nd argument in order to supply
+                           a value for the 3rd.
+</pre>
+
+<p>
+After you've set up line-numbering, <strong>NUMBER_LINES</strong>
+can be used to control line numbering.
+<br>
+<h3><u>Line-numbering control</u></h3>
+<p>
+<strong>NUMBER_LINES OFF</strong> (or <strong>END, QUIT, X,</strong> etc.)
+turns line-numbering off.
+<p>
+Sometimes, you merely want to suspend line-numbering.  In that case,
+turn line numbering off with <strong>NUMBER_LINES OFF</strong>.
+Later, when you want it to resume, enter
+<pre>
+       .NUMBER_LINES RESUME
+</pre>
+
+Line numbering will resume exactly where it left off.  If this is
+not what you want--say you want to reset the line number to "1"--simply
+invoke <strong>NUMBER_LINES</strong> with whatever arguments
+are needed for the desired result.
+<p>
+<strong>Extra Notes:</strong>
+<br>
+<ol>
+    <li>In document processing, you may invoke <strong>NUMBER_LINES</strong>
+        either before or after <strong>START</strong>.
+        <strong>Mom</strong> doesn't care.
+    <li>If you're collating documents with
+        <a href="rectoverso.html#COLLATE">COLLATE</a>,
+        you should re-invoke, at a minimum, <kbd>.NUMBER_LINES
+        1</kbd> for each collated document, in order to ensure that
+        each begins with the number "1" prepended to the first line
+        (unless, of course, that is not what you want).
+    <li>Occasionally, you may want to change the current gutter
+        between line numbers and running text without knowing
+        what the next output line number should be.  Since
+        <strong>NUMBER_LINES</strong> requires this number
+        as its first argument, in such instances, pass
+        <strong>NUMBER_LINES</strong> as its first argument the
+        escape <kbd>\n(ln</kbd>.
+        <p>
+        For example, if you were numbering every 5 lines with a
+        gutter of 2 (figure spaces) and you needed to change the
+        gutter to 4 (figures spaces),
+        <p>
+        <kbd>&nbsp;&nbsp;&nbsp;&nbsp;.NUMBER_LINES \n(ln 5 4</kbd>
+        <p>
+        would do the trick.
+    <li>If you're using margin notes in a document, be sure to set
+        the gutter for margin notes wide enough to allow room for
+        the line numbers.
+    <li><strong>Mom</strong> (groff, actually), only numbers lines
+        <em>to the left of text</em>.  For aesthetic reason,
+        therefore, the use of line numbering when setting a document
+        in columns is discouraged.  However, should you wish to
+        number lines when setting in columns, make sure the
+        <a href="definitions.html#TERMS_GUTTER">gutter(s)</a>
+        between columns is wide enough to leave room for the
+        numbers.
+</ol>
+<hr width="33%" align="left">
+
+<a name="NUMBER_LINES_CONTROL"><h3><u>Line numbering control macros for QUOTE 
and BLOCKQUOTE</u></h3></a>
+<ol>
+       <li><a href="#NUMBER_QUOTE_LINES">NUMBER_QUOTE_LINES</a>
+       <li><a href="#NUMBER_BLOCKQUOTE_LINES">NUMBER_BLOCKQUOTE_LINES</a>
+       <li><a href="#NUMBER_LINES_QUOTES">Setting up line numbering in quotes 
and blockquotes on a case by case basis</a>
+</ol>
+
+<a name="NUMBER_QUOTE_LINES"><h3><u>1. NUMBER_QUOTE_LINES</u></h3></a>
+<p>
+If you'd like <strong>mom</strong> to number lines of output text
+in a
+<a href="#QUOTE">QUOTE</a>
+as part of the same order and sequence as paragraph text, simply
+invoke <strong>NUMBER_QUOTE_LINES</strong> by itself.
+<p>
+There is a catch with numbering quotes, though.  Owing to groff's
+restriction of accepting only the figure space as the line number
+gutter's unit of measure, it is not possible for line numbers
+in quotes to hang outside a document's overall left margin and
+be reliably flush with the line numbers of paragraph text.
+Conseqently, line numbers in quotes hang to the left of the quote,
+separated from the quote by the <strong>&lt;gutter&gt;</strong>
+argument.
+<p>
+If you'd like to change the gutter for quotes line-numbered in
+this way, invoke <strong>NUMBER_QUOTE_LINES</strong> with a digit
+representing the number of
+<a href="definitions.html#TERMS_FIGURESPACE">figure spaces</a>
+you'd like between the line numbers and the quoted text, like this:
+<pre>
+       .NUMBER_QUOTE_LINES 1
+</pre>
+
+With the above, line numbers in quotes (and only quotes) will have
+a gutter of 1 figure space.
+<p>
+If you are using "line numbering style" for footnotes
+(<a href="#FOOTNOTE_MARKER_STYLE">FOOTNOTE_MARKER_STYLE</a> 
<strong>LINE</strong>),
+you may not wish to have quotes <em>visibly</em> line-numbered, but
+still want to embed footnotes inside quotes.  In order to do that,
+<strong>mom</strong> allows you to say <strong>NUMBER_QUOTE_LINES
+SILENT</strong>.
+<p>
+When you invoke <strong>NUMBER_QUOTE_LINES</strong>
+<kbd>SILENT</kbd>, <strong>mom</strong> continues to increment line
+numbers while quotes are being output, but they won't appear in the
+output copy.  (Compare this with <strong>mom</strong>'s default
+behaviour of <em>suspending</em> incrementing of line numbers
+during the output of quotes.)  This allows you to embed
+line-numbered footnotes inside quotes and have the line number
+"label" in the footnote come out sensibly.
+<p>
+Once having turned <strong>NUMBER_QUOTE_LINES</strong> on, you
+may disable it with <strong>NUMBER_QUOTE_LINES OFF</strong> (or
+<strong>QUIT</strong>, <strong>END</strong>, <strong>X</strong>,
+etc).
+<p>
+
+<a name="NUMBER_BLOCKQUOTE_LINES"><h3><u>2. 
NUMBER_BLOCKQUOTE_LINES</u></h3></a>
+<p>
+If you'd like <strong>mom</strong> to number lines of output text
+in a
+<a href="#QUOTE">BLOCKQUOTE</a>
+as part of the same order and sequence as paragraph text, simply
+invoke <strong>NUMBER_BLOCKQUOTE_LINES</strong> by itself.
+<p>
+There is a catch with numbering blockquotes, though.  Owing to
+groff's restriction of accepting only the figure space as the
+line number gutter's unit of measure, it is not possible for line
+numbers in blockquotes to hang outside a document's overall left
+margin and be reliably flush with the line numbers of paragraph
+text.  Conseqently, line numbers in blockquotes hang to the
+left of the blockquote, separated from the blockquote by the
+<strong>&lt;gutter&gt;</strong> argument.
+<p>
+If you'd like to change the gutter for blockquotes line-numbered in
+this way, invoke <strong>NUMBER_BLOCKQUOTE_LINES</strong> with a digit
+representing the number of
+<a href="definitions.html#TERMS_FIGURESPACE">figure spaces</a>
+you'd like between the line numbers and the blockquoted text, like
+this:
+<pre>
+       .NUMBER_BLOCKQUOTE_LINES 1
+</pre>
+
+With the above, line numbers in blockquotes (and only blockquotes)
+will have a gutter of 1 figure space.
+<p>
+If you are using "line numbering style" for footnotes
+(<a href="#FOOTNOTE_MARKER_STYLE">FOOTNOTE_MARKER_STYLE</a> 
<strong>LINE</strong>),
+you may not wish to have blockquotes <em>visibly</em> line-numbered,
+but still want to embed footnotes inside blockquotes.  In
+order to do that, <strong>mom</strong> allows you to say
+<strong>NUMBER_BLOCKQUOTE_LINES SILENT</strong>.
+<p>
+When you invoke <strong>NUMBER_BLOCKQUOTE_LINES</strong>
+<kbd>SILENT</kbd>, <strong>mom</strong> continues to increment line
+numbers while blockquotes are being output, but they won't appear in
+the output copy.  (Compare this with <strong>mom</strong>'s default
+behaviour of <em>suspending</em> incrementing of line numbers during
+the output of blockquotes.)  This allows you to embed line-numbered
+footnotes inside blockquotes and have the line number "label" in the
+footnote come out sensibly.
+<p>
+Once having turned <strong>NUMBER_BLOCKQUOTE_LINES</strong> on, you
+may disable it with <strong>NUMBER_BLOCKQUOTE_LINES OFF</strong> (or
+<strong>QUIT</strong>, <strong>END</strong>, <strong>X</strong>,
+etc).
+<p>
+
+<a name="NUMBER_LINES_QUOTES"><h3><u>3. Setting up line numbering in quotes 
and blockquotes on a case by case basis</u></h3></a>
+<p>
+Sometimes, you may want quotes or blockquotes to have a different
+line numbering scheme from the one used in the rest of the
+document.  Or, you may want line numbering enabled only inside a
+particular quote or blockquote.  A common reason for this would be
+if you were using the
+<a href="#QUOTE">QUOTE</a>
+macro to insert lines of programming code into a document.  (See
+<a href="#QUOTE_TIP">here</a>
+for suggestions about including programming code snippets in
+documents.)
+<p>
+To enable line numbering within quotes or blockquotes on a case by
+case basis, simply invoke <strong>NUMBER_LINES</strong>, with the
+arguments you need, immediately after entering <strong>QUOTE</strong>
+or <strong>BLOCKQUOTE</strong>.  (<strong>NUMBER_QUOTE_LINES</strong>
+and/or <strong>NUMBER_BLOCKQUOTE_LINES</strong> should be turned
+off if you're doing this.)  The quote or blockquote will then be
+line-numbered according to your specifications: the starting line
+number of the quote or blockquote will be the one you give as a
+first argument to <strong>NUMBER_LINES</strong>; which lines to
+number will be the value you pass to <strong>&lt;which lines to
+number&gt;</strong> (defaults to "1"); line numbers will hang
+to the left of the quote or blockquote, separated from the quote or
+blockquote by <strong>&lt;gutter&gt;</strong> (defaults to "2").
+<p>
+As soon as <strong>QUOTE</strong> or <strong>BLOCKQUOTE</strong> is
+turned off, line numbering ceases, not only with respect to
+subsequent paragraph text (if they are not being line-numbered),
+but also for any subsequent invocation of <strong>QUOTE</strong> or
+<strong>BLOCKQUOTE</strong>.  In other words, you must re-enable
+quote or blockquote line-numbering inside every instance of
+<strong>QUOTE</strong> or <strong>BLOCKQUOTE</strong> when
+line-numbering either of them on a case by case basis.
+<p>
 <hr>
 
 <!====================================================================>
@@ -1993,6 +2545,9 @@
 <a name="FOOTNOTE_INTRO"><h2><u>Footnotes</u></h2></a>
 <ul>
        <li><a href="#FOOTNOTE_BEHAVIOUR">Footnote behaviour</a>
+       <ul>
+               <li><a href="#FN_AND_PUNCT">Footnote markers and punctuation in 
the running text</a>
+       </ul>
        <li><a href="#FOOTNOTE">Tag: FOOTNOTE</a>
        <li><a href="#FOOTNOTE_CONTROL">FOOTNOTE control macros</a>
 </ul>
@@ -2007,19 +2562,63 @@
        .FOOTNOTE
        &lt;footnote about who the hell is Schelling&gt;
        .FOOTNOTE OFF
-       were generally the points of discussion presenting the most
+        were generally the points of discussion presenting the most
        of beauty to the imaginative Morella.
 </pre>
 
-and be done with it.  (Note the obligatory use of the
-<strong>\c</strong>
-<a href="definitions.html#TERMS_INLINES">inline escape</a>.)
-<strong>Mom</strong> takes care of everything:
-putting footnote markers in the body of the document, keeping track
-of how many footnotes are on the page, identifying the footnotes
-themselves appropriately, balancing them properly with the bottom
-margin, deferring footnotes that don't fit on the page...  Even if
-you're using
+and be done with it.
+<p>
+(Note the obligatory use of the <strong>\c</strong>
+<a href="definitions.html#TERMS_INLINES">inline escape</a>.
+It is required when your
+<a href="#FOOTNOTE_MARKER_STYLE">FOOTNOTE_MARKER_STYLE</a>
+is either <strong>STAR</strong> [star/dagger footnotes] or
+<strong>NUMBER</strong> [superscript numbers]; it is NOT to be used
+when the <strong>FOOTNOTE_MARKER_STYLE</strong> is
+<strong>LINE</strong>, or when footnote markers have been disabled
+with
+<a href="#FOOTNOTE_MARKERS">.FOOTNOTE_MARKERS</a>
+<strong>OFF</strong>.)
+<p>
+<strong>***Version 1.3 change***</strong>
+<p>
+As of version 1.3, the manner of entering the line
+<em>after</em> <strong>.FOOTNOTE OFF</strong> has changed
+to accommodate users' differing wishes with respect to
+the order of punctuation and footnote markers.  The
+correct way to enter the line after <strong>.FOOTNOTE
+OFF</strong>--<strong><em><u>ONLY</u></em></strong> if your
+<a href="#FOOTNOTE_MARKER_STYLE">FOOTNOTE_MARKER_STYLE</a> is
+<strong>STAR</strong> or <strong>NUMBER</strong>--is to input
+it as if it's literally a continuation of the line before
+<strong>.FOOTNOTE</strong>, and therefore begins with either a space
+or a punctuation mark, as in the two following examples.
+<p>
+<pre>
+          Example 1                                      Example 2
+          ---------                      ---------
+
+       A line of text,\c                               A line of text\c
+       .FOOTNOTE                                               .FOOTNOTE
+       A footnote line.                                A footnote line.
+       .FOOTNOTE OFF                                   .FOOTNOTE OFF
+        broken up with a comma.                , broken up with a comma.
+
+       (last line begins with                  (last line begins with
+        a literal space)                                the comma and a space)
+</pre>
+
+If your <strong>FOOTNOTE_MARKER_STYLE</strong> is line, none of
+this is a concern.
+<p>
+<strong>***End of version 1.3 change***</strong>
+<p>
+After you invoke <strong>FOOTNOTE</strong>, <strong>mom</strong>
+takes care of everything: putting footnote markers in the body of
+the document, keeping track of how many footnotes are on the page,
+identifying the footnotes themselves appropriately, balancing them
+properly with the bottom margin, deferring footnotes that don't fit
+on the page...  Even if you're using
 <a href="columns.html#COLUMNS">COLUMNS</a>,
 <strong>mom</strong> knows what to do, and Does The Right Thing.
 <p>
@@ -2043,6 +2642,7 @@
 between too little whitespace and too much, but when push comes to
 shove, she'll usually opt for ample over cramped.  The last lines of
 footnotes are always flush with the document's bottom margin.
+<a name="FOOTNOTE_RULES"></a>
 <p>
 If <strong>mom</strong> sees that a portion of a footnote cannot
 be fit on its page, she carries that portion over to the next
@@ -2084,7 +2684,7 @@
 add a blank after the second deferred footnote.  If you'd like a
 blank line separating both deferred footnotes from any footnotes
 proper to the page the deferred ones were moved to, add the space
-manually with by putting a 
+manually by putting a 
 <a href="typesetting.html#SPACE">.SPACE</a>
 command at the end of the footnote text, before
 <strong>FOOTNOTE OFF</strong> (or <strong>FOOTNOTE X, QUIT,
@@ -2117,12 +2717,53 @@
 for a solution.
 <p>
 
+<h3><u><a name="FN_AND_PUNCT">Footnote markers and punctuation in the running 
text</a></u></h3>
+
+<p>
+As of version 1.3, the manner of entering the line <em>after</em>
+<strong>.FOOTNOTE OFF</strong> has changed.  The correct way to
+enter the line after <strong>.FOOTNOTE OFF</strong> now is to
+input it as if it's literally a continuation of the line before
+<strong>.FOOTNOTE</strong>, and therefore begins with either a space
+or a punctuation mark, as in the two following examples.
+<p>
+<pre>
+          Example 1                                      Example 2
+          ---------                      ---------
+
+       A line of text,\c                               A line of text\c
+       .FOOTNOTE                                               .FOOTNOTE
+       A footnote line.                                A footnote line.
+       .FOOTNOTE OFF                                   .FOOTNOTE OFF
+        broken up with a comma.                , broken up with a comma.
+
+       (last line begins with                  (last line begins with
+        a literal space)                                the comma and a space)
+</pre>
+
+Care must be taken, though, if the punctuation mark that begins the
+line after <strong>FOOTNOTE OFF</strong> is a period (dot).  You
+<strong><em><u>must</u></em></strong> begin such lines with
+<strong>\&.</strong>, like this:
+<p>
+<pre>
+       end of a sentence\c
+       .FOOTNOTE
+       A footnote line.
+       .FOOTNOTE OFF
+       \&.  A new sentence...
+</pre>
+
+If you omit the <strong>\&.</strong>, the line will vanish!
+<p>
+
+
 <!---FOOTNOTE--->
 
 <hr width="66%" align="left">
 <p>
 <a name="FOOTNOTE">
-       Macro: <strong>FOOTNOTE</strong> <var>&lt;toggle&gt; | INDENT LEFT | 
RIGHT | BOTH &lt;indent value&gt;</var>
+       <nobr>Tag: <strong>FOOTNOTE</strong> &lt;toggle&gt; | INDENT LEFT | 
RIGHT | BOTH &lt;indent value&gt;<wbr>
        <br>
        <em>*See <a href="#FOOTNOTE_NOTE">HYPER-IMPORTANT NOTE</a>!!!</em>
        <br>
@@ -2164,19 +2805,39 @@
 that comes immediately before <strong>FOOTNOTE</strong> MUST terminate
 with a
 <a href="typesetting.html#JOIN">\c</a>
-inline escape.  Otherwise, the footnote marker for the word won't be attached 
to
-it (i.e. <strong>mom</strong> will insert a word space between the word
-and the marker).  See the
+inline escape if your
+<a href="#FOOTNOTE_MARKER_STYLE">FOOTNOTE_MARKER_STYLE</a>
+is either <strong>STAR</strong> or <strong>NUMBER</strong>.
+See the
 <a href="#FOOTNOTE_EXAMPLE">footnote example</a>
 above.
+<p>
+Additionally, the line <em>after</em> a <strong>FOOTNOTE
+OFF</strong> should be entered as if there were no interruption in
+the input text, i.e. the line should begin with a literal space or
+punctuation mark.  See
+<a href="#FN_AND_PUNCT">above</a>.
+<p>
+Do NOT use the <strong>\c</strong> inline escape if your
+<strong>FOOTNOTE_MARKER_STYLE</strong> is <strong>LINE</strong>, or
+if you have disabled footnote markers with
+<a href="#FOOTNOTE_MARKERS">.FOOTNOTE_MARKERS</a>
+<strong>OFF</strong>.  As well, the line after
+<strong>FOOTNOTE&nbsp;OFF</strong> should be entered normally.
 
 <p>
 <a name="FOOTNOTE_CONTROL"><h3><u>Footnote control macros</u></h3></a>
 <ol>
        <li><a href="#FOOTNOTE_GENERAL">Family/font/size/colour/lead/quad</a>
        <li><a href="#FOOTNOTE_MARKERS">Footnote markers</a> -- on or off
-       <li><a href="#FOOTNOTE_MARKER_STYLE">Footnote marker style</a> -- 
star+dagger or numbered
+       <li><a href="#FOOTNOTE_MARKER_STYLE">Footnote marker style</a> -- 
star+dagger, numbered or by line number
+       <ul>
+               <li><a 
href="#FOOTNOTE_LINENUMBER_BRACKETS">FOOTNOTE_LINENUMBER_BRACKETS</a>
+               <li><a 
href="#FOOTNOTE_LINENUMBER_SEPARATOR">FOOTNOTE_LINENUMBER_SEPARATOR</a>
+               <li><a 
href="#FOOTNOTES_RUN_ON">FOOTNOTES_RUN_ON</a>--line-numbered footnotes only
+       </ul>
        <li><a href="#RESET_FOOTNOTE_NUMBER">Reset footnote number</a> -- set 
footnote marker number to 1
+       <li><a href="#FOOTNOTE_SPACE">Inter-footnote spacing</a>
        <li><a href="#FOOTNOTE_RULE">Footnote rule</a> -- on or off
        <li><a href="#FOOTNOTE_RULE_LENGTH">Footnote rule length</a> -- length 
of footnote separator rule
        <li><a href="#FOOTNOTE_RULE_ADJ">Adjust vertical position of footnote 
separator rule</a>
@@ -2206,6 +2867,10 @@
 <strong>.FOOTNOTE_MARKERS</strong> with no argument.  Footnote markers
 are on by default.
 <p>
+If <strong>FOOTNOTE_MARKERS</strong> are disabled, do NOT use the
+<strong>\c</strong> inline escape to terminate the line before
+<strong>.FOOTNOTE</strong>.
+<p>
 
 <a name="FOOTNOTE_MARKER_STYLE"><h3><u>3. Footnote marker style -- 
FOOTNOTE_MARKER_STYLE</u></h3></a>
 <p>
@@ -2223,10 +2888,98 @@
 themselves.  By default, footnote numbers increase incrementally
 (prev. footnote number + 1) throughout the whole document.  You can
 ask <strong>mom</strong> to start each page's footnote numbers at 1
-with <strong>.RESET_FOOTNOTE_NUMBER</strong> (see below).
+with <strong>.RESET_FOOTNOTE_NUMBER</strong>
+(<a href="#RESET_FOOTNOTE_NUMBER">see below</a>.)
+<a name="FOOTNOTE_LINENUMBERS"><p></a>
+<p>
+<strong>.FOOTNOTE_MARKER_STYLE LINE</strong> lets you have
+footnotes which are identified by line number, rather than by a
+marker in the text.  (Note that
+<a href="#NUMBER_LINES">NUMBER_LINES</a>
+must be enabled in order to use this marker style.)
+<p>
+With <strong>FOOTNOTE_MARKER_STYLE LINE</strong>, <strong>mom</strong>
+will identify footnotes either by single line numbers, or line
+ranges.  If what you want is a single line number, you need only
+invoke <strong>.FOOTNOTE</strong>, <em>without terminating the text
+line before it with</em> <strong>\c</strong>, at the appropriate
+place in running text.
+<p>
+If you want a range of line numbers (e.g.&nbsp;[5-11]&nbsp;),
+insert, directly into the first line of the range you want, the
+<a href="definitions.html#TERMS_INLINES">inline escape</a>,
+<strong>\*[FN-MARK]</strong>.  For the terminating line number of
+the range, you need only invoke <strong>.FOOTNOTE</strong>, (again,
+without attaching <strong>\c</strong> to the text line before it).
+<strong>Mom</strong> is smart enough to figure out that where
+<strong>FOOTNOTE</strong> was invoked represents the terminating
+line number.  Range-numbered footnotes are always output on the page
+where <strong>FOOTNOTE</strong> was invoked, not the page where
+<strong>\*[FN-MARK]</strong> appears (subject, of course, to the
+rules for footnotes that fall too close to the bottom of a page, as
+outlined
+<a href="#FOOTNOTE_RULES">here</a>).
+<a name="FOOTNOTE_LINENUMBER_BRACKETS"></a>
+<p>
+<strong>Mom</strong>, by default, puts footnote line numbers inside
+square brackets.  The style of the brackets may be changed with
+the macro, <strong>FOOTNOTE_LINENUMBER_BRACKETS</strong>, which
+takes one of three possible arguments: <strong>PARENS</strong>
+("round" brackets), <strong>SQUARE</strong> (the default) or
+<strong>BRACES</strong> (curly braces).  If you prefer a
+shortform, the arguments, <strong>(</strong>, <strong>[</strong> or
+<strong>{</strong> may be used instead.
+<a name="FOOTNOTE_LINENUMBER_SEPARATOR"></a>
+<p>
+If you don't want the numbers enclosed in brackets, you may tell
+<strong>mom</strong> to use a "separator" instead.  A common
+separator would be the colon, but it can be anything you like.  The
+macro to do this is <strong>FOOTNOTE_LINENUMBER_SEPARATOR</strong>,
+which takes, as its single argument, the separator you want.  For
+safety and consistency's sake, ALWAYS enclose the argument in
+double-quotes.
+<p>
+The separator can be composed of any legal groff character, or any
+combination of characters. <strong>A word of caution:</strong> when
+using a separator, <strong>mom</strong> doesn't insert a space
+after the separator.  Hence, if you want the space (you probably
+do), you must make the space part of the argument you pass to
+<strong>FOOTNOTE_LINENUMBER_SEPARATOR</strong>.  For example,
+to get a colon separator with a space after it, you'd do
+<p>
+<pre>
+       .FOOTNOTE_LINENUMBER_SEPARATOR ": "
+</pre>
+
+<a name="FOOTNOTES_RUN_ON"><strong><u>RUN-ON FOOTNOTES</u></strong></a>
+<p>
+Finally, if your footnote marker style is <strong>LINE</strong>, you
+may instruct <strong>mom</strong> to do "run-on style" footnotes.
+Run-on footnotes do not treat footnotes as discrete entities, i.e.
+on a line by themselves.  Rather, each footnote is separated from
+the footnote before it by a space, so that the footnotes on any
+given page form a continuous block, like lines in a paragraph.  The
+macro to get
+<strong>mom</strong> to run footnotes on is
+<strong>.FOOTNOTES_RUN_ON</strong>.  Invoked by itself, it turns
+the feature on.  Invoked with any other argument
+(<strong>OFF</strong>, <strong>NO</strong>, etc.), it turns the
+feature off.  It is generally NOT a good idea to turn the feature
+on and off during the course of a single document.  If you do,
+<strong>mom</strong> will issue a warning if there's going to be a
+problem.  However, it is always perfectly safe to enable/disable the
+feature after
+<a href="rectoverso.html#COLLATE">COLLATE</a>.
 <p>
+The usual reason for wanting run-on footnotes is that you're
+using them to hold many, short references.  (See
+<a href="refer.html#TOP">here</a>
+for instructions on using the <strong>groff</strong> program,
+<strong>refer</strong>, to set up references.)
 
-<a name="RESET_FOOTNOTE_NUMBER"><h3><u>4. Reset footnote number -- RESET 
FOOTNOTE NUMBER</u></h3></a>
+<p>
+
+<a name="RESET_FOOTNOTE_NUMBER"><h3><u>4. Reset footnote number -- 
RESET_FOOTNOTE_NUMBER</u></h3></a>
 <p>
 <strong>.RESET_FOOTNOTE_NUMBER</strong>, by itself, resets
 footnote numbering so that the next footnote you enter is
@@ -2236,7 +2989,23 @@
 <strong>mom</strong> to start every page's footnote numbering at 1.
 <p>
 
-<a name="FOOTNOTE_RULE"><h3><u>5. Footnote rule -- FOOTNOTE_RULE</u></h3></a>
+<a name="FOOTNOTE_SPACE"><h3><u>5. Inter-footnote spacing -- 
FOOTNOTE_SPACE</u></h3></a>
+<p>
+If you'd like a little extra space between footnotes, you can have
+<strong>mom</strong> put it in for you by invoking
+<strong>.FOOTNOTE_SPACE</strong> with an argument representing the
+amount of extra space you'd like.  The argument to
+<strong>FOOTNOTE_SPACE</strong> requires a
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>.
+<p>
+In the following example, footnotes will be separated from each
+other by 3
+<a href="definitions.html#TERMS_PICASPOINTS">points</a>.
+<pre>
+       .FOOTNOTE_SPACE 3p
+</pre>
+
+<a name="FOOTNOTE_RULE"><h3><u>6. Footnote rule -- FOOTNOTE_RULE</u></h3></a>
 <p>
 If you don't want a footnote separator rule, toggle it off with
 <strong>.FOOTNOTE_RULE OFF</strong> (or <strong>END,
@@ -2245,12 +3014,11 @@
 print the rule.
 <p>
 
-<a name="FOOTNOTE_RULE_LENGTH"><h3><u>6. Footnote rule length -- 
FOOTNOTE_RULE_LENGTH</u></h3></a>
+<a name="FOOTNOTE_RULE_LENGTH"><h3><u>7. Footnote rule length -- 
FOOTNOTE_RULE_LENGTH</u></h3></a>
 <p>
 If you want to change the length of the footnote separator rule,
 invoke <strong>.FOOTNOTE_RULE_LENGTH</strong> with a length, like
 this,
-<p>
 <pre>
        .FOOTNOTE_RULE_LENGTH 1i
 </pre>
@@ -2263,7 +3031,7 @@
 <a href="docprocessing.html#PRINTSTYLE">PRINTSTYLES</a>.
 <p>
 
-<a name="FOOTNOTE_RULE_ADJ"><h3><u>7. Adjust vertical position of footnote 
separator rule -- FOOTNOTE_RULE_ADJ</u></h3></a>
+<a name="FOOTNOTE_RULE_ADJ"><h3><u>8. Adjust vertical position of footnote 
separator rule -- FOOTNOTE_RULE_ADJ</u></h3></a>
 <p>
 The footnote separator rule is actually a baseline rule that falls
 on the
@@ -2285,180 +3053,111 @@
 <a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
 is required.
 <p>
-<strong>Tip:</strong> If your
+<strong>Tip:</strong> If your document
 <a href="definitions.html#TERMS_LEADING">leading</a>
 is 2
 <a href="definitions.html#TERMS_PICASPOINTS">points</a>
 or less (e.g your
 <a href="definitions.html#TERMS_PS">point size</a>
 is 10 and your linespacing is 10, 11, or 12, lowering
-<strong>mom</strong>'s default footnote rule adjustment will almost
-certainly give you nicer looking results than leaving the
-adjustment at the default.  Furthermore, you can invoke
-<strong>FOOTNOTE_RULE_ADJ</strong> on any page (or in any column)
-in which footnotes appear, so that the placement of the footnote
-rule can be changed on-the-fly, should you wish to do so.
+<strong>mom</strong>'s default footnote rule adjustment will
+almost certainly give you nicer looking results than leaving
+the adjustment at the default.  Furthermore, you can invoke
+<strong>FOOTNOTE_RULE_ADJ</strong> on any page in which footnotes
+appear, or in any column, so that the placement of the footnote rule
+can be changed on-the-fly, should you wish to do so.
 <p>
 <hr>
 
 <!====================================================================>
 
-<a name="FINIS_INTRO"><h2><u>Terminate document processing</u></h2></a>
+<a name="ENDNOTE_INTRO"><h2><u>Endnotes</u></h2></a>
 <ul>
-       <li><a href="#FINIS">Tag: FINIS</a>
-       <li><a href="#FINIS_STRING">Changing the FINIS string</a>
+       <li><a href="#ENDNOTE_BEHAVIOUR">Endnote behaviour</a>
+       <ul>
+               <li><a href="#ENDNOTE_SPACING">A Note on Endnote Spacing</a>
+               <li><a href="#ENDNOTE_COLUMNS">Endnotes and columnar 
documents</a>
+       </ul>
+       <li><a href="#ENDNOTE">Tag: ENDNOTE</a>
+       <li><a href="#ENDNOTES">Macro: ENDNOTES</a> -- tell 
<strong>mom</strong> to output endnotes
+       <li><a href="#ENDNOTE_CONTROL">ENDNOTES control macros</a>
 </ul>
 
 <p>
-The use of <strong>FINIS</strong> is optional.  If you invoke it
-(at the end of a document before
-<a href="#TOC">TOC</a>
-or
-<a href="#ENDNOTES">ENDNOTES</a>),
-<strong>mom</strong>
-deposits the word END, centred after a blank line, beneath the last
-line of the document.  END is enclosed between
-<a href="definitions.html#TERMS_EM">em-dashes</a>.
-<p>
-<strong>Please note</strong> that in versions of
-<strong>mom</strong> prior to 1.1.9, <strong>FINIS</strong> used to
-turn off
-<a href="definitions.html#TERMS_FOOTER">footers</a>
-(if they were on) and page numbering (if page numbers were at the
-bottom of the page).  Damned if I can recall why I thought anyone
-would want this behaviour, but it has been removed.
-<p>
-If you're writing in a language other than English, you can
-change what <strong>mom</strong> prints for END with
-the control macro <strong>FINIS_STRING</strong>.
+Embedding endnotes into <strong>mom</strong> documents is accomplished
+the same way as embedding
+<a href="#FOOTNOTE_INTRO">footnotes</a>.  The example below is
+identical to the one shown in the
+<a href="#FOOTNOTE_EXAMPLE">introduction to footnotes</a>,
+except that <kbd>.FOOTNOTE</kbd> has been replaced with
+<kbd>.ENDNOTE</kbd>.
 <p>
+<a name="ENDNOTE_EXAMPLE"></a>
+<pre>
+       ...the doctrines of Identity as urged by Schelling\c
+       .ENDNOTE
+       &lt;endnote about who the hell is Schelling&gt;
+       .ENDNOTE OFF
+        were generally the points of discussion presenting the most
+       of beauty to the imaginative Morella.
+</pre>
 
-<!---FINIS--->
+As with footnotes, note the obligatory use of the <strong>\c</strong>
+<a href="definitions.html#TERMS_INLINES">inline escape</a>
+when your
+<a href="#ENDNOTE_MARKER_STYLE">ENDNOTE_MARKER_STYLE</a>
+is <strong>NUMBER</strong> (which marks endnotes references in
+<a href="definitions.html#TERMS_RUNNING">running text</a>
+with superscript numbers).  When the marker style is
+<strong>LINE</strong>, you must <em>not</em> use the
+<strong>\c</strong> escape.
+<p>
+<strong>***Version 1.3 change***</strong>
+<p>
+As of version 1.3, the manner of entering the line <em>after</em>
+<strong>.ENDNOTE OFF</strong> has changed to accommodate users'
+differing wishes with respect to the order of punctuation and
+endnote markers.  The correct way to enter the line after
+<strong>.ENDNOTE OFF</strong>--but <strong><em><u>NOT</u></em></strong>
+if your
+<a href="#ENDNOTE_MARKER_STYLE">ENDNOTE_MARKER_STYLE</a>
+is <strong>LINE</strong>--is to input it as if it's literally
+a continuation of the line before <strong>.ENDNOTE</strong>, and
+therefore begins with either a space or a punctuation mark, as in
+the two following examples.
+<p>
+<a name="EN_PUNCT"></a>
+<pre>
+          Example 1                                      Example 2
+          ---------                      ---------
+
+       A line of text,\c                               A line of text\c
+       .ENDNOTE                                                .ENDNOTE
+       A footnote line.                                A footnote line.
+       .ENDNOTE OFF                                    .ENDNOTE OFF
+        broken up with a comma.                , broken up with a comma.
 
-<hr width="66%" align="left">
-<p>
-<a name="FINIS">
-       Macro: <strong>FINIS</strong>
-</a>
+       (last line begins with                  (last line begins with
+        a literal space)                                the comma and a space)
+</pre>
 
-<p>
-The use of <strong>FINIS</strong> is optional, but if you use
-it, it should be the last macro you invoke in a document (before
-<a href="#ENDNOTES">ENDNOTES</a>
-or
-<a href="#TOC">TOC</a>).
-See
-<a href="#FINIS_INTRO">above</a>
-for a description of how <strong>FINIS</strong> behaves.
-<p>
-<strong>NOTE:</strong> If you don't use <strong>FINIS</strong>,
-and you don't want
-<a href="definitions.html#TERMS_FOOTER">footers</a>
-(if they're on) or a page number at the bottom of the last page of
-a document, you have to turn them off manually, as the last two
-lines of your document file, like this:
-<p>
-<pre>
-       .FOOTERS OFF
-       .PAGINATE OFF
-</pre>
-
-<a name="FINIS_STRING"><h3><u>Changing the FINIS string</u></h3></a>
-
-<p>
-By default, <strong>FINIS</strong> prints the word
-END between
-<a href="definitions.html#TERMS_EM">em-dashes</a>.
-If you'd like <strong>mom</strong> to print something else
-between the dashes, use the <strong>FINIS_STRING</strong> macro
-(anywhere in the document prior to <strong>FINIS</strong>).
-<p>
-For example, if your document's in French, you'd do
-<p>
-<pre>
-       .FINIS_STRING "FIN"
-</pre>
-
-Double-quotes must enclose the macro's argument.
-<p>
-<strong>NOTE:</strong> If you pass <strong>FINIS_STRING</strong>
-a blank string, i.e.
-<p>
-<pre>
-       .FINIS_STRING ""
-</pre>
-
-<strong>mom</strong> will still print the em-dashes if you
-invoke <strong>FINIS</strong>.  This, in effect, produces a
-short, centred horizontal rule that terminates the document.
-(In
-<a href="docprocessing.html.#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
-it's a short, dashed line composed of four hyphens.)
-
-<a name="FINIS_COLOR"><h3><u>Changing the FINIS colour</u></h3></a>
-<p>
-Invoking <strong>FINIS_COLOR</strong> with a pre-defined (or
-&quot;initalized&quot;) color changes the colour of both the FINIS
-string and the em-dashes that surround it.  If you use the
-<a href="definitions.html#TERMS_INLINE">inline escape</a>,
-<a href="color.html#COLOR_INLINE">\*[&lt;colorname&gt;]</a>,
-in the argument passed to <strong>FINIS</strong>, only the text
-will be in the new colour; the em-dashes will be in the default
-document colour (usually black).
-
-<p>
-<hr>
-
-<!====================================================================>
-
-<a name="ENDNOTE_INTRO"><h2><u>Endnotes</u></h2></a>
-<ul>
-       <li><a href="#ENDNOTE_BEHAVIOUR">Endnote behaviour</a>
-       <ul>
-               <li><a href="#ENDNOTE_SPACING">A Note on Endnote Spacing</a>
-               <li><a href="#ENDNOTE_COLUMNS">Endnotes and columnar 
documents</a>
-       </ul>
-       <li><a href="#ENDNOTE">Tag: ENDNOTE</a>
-       <li><a href="#ENDNOTES">Macro: ENDNOTES</a> -- tell 
<strong>mom</strong> to output endnotes
-       <li><a href="#ENDNOTE_CONTROL">ENDNOTES control macros</a>
-</ul>
-
-<p>
-Embedding endnotes into <strong>mom</strong> documents is accomplished
-the same way as embedding
-<a href="#FOOTNOTE_INTRO">footnotes</a>.  The example below is
-identical to the one shown in the
-<a href="#FOOTNOTE_EXAMPLE">introduction to footnotes</a>,
-except that <kbd>.FOOTNOTE</kbd> has been replaced with
-<kbd>.ENDNOTE</kbd>.
-<p>
-<a name="ENDNOTE_EXAMPLE"></a>
-<pre>
-       ...the doctrines of Identity as urged by Schelling\c
-       .ENDNOTE
-       &lt;endnote about who the hell is Schelling&gt;
-       .ENDNOTE OFF
-       were generally the points of discussion presenting the most
-       of beauty to the imaginative Morella.
-</pre>
-
-As with footnotes, note the obligatory use of the <strong>\c</strong>
-<a href="definitions.html#TERMS_INLINES">inline escape</a>.
+<strong>***End version 1.3 change***</strong>
 <p>
 Endnotes differ from footnotes in two ways (other than the fact that
 endnotes come at the end of a document whereas footnotes appear in the
 body of the document):
 <br>
 <ol>
-    <li>Endnotes are always numbered incrementally throughout a
-           document.  In other words, you don't get a choice of marker styles,
-           as you do with footnotes.
+    <li>When your <strong>ENDNOTE_MARKER_STYLE</strong> is
+        <strong>NUMBER</strong>, endnotes are always numbered
+        incrementally, starting at "1".
        <li>Endnotes MUST be output explicitly; <strong>mom</strong> does
                not output them for you.  In
                <a href="rectoverso.html#COLLATE">collated</a>
                documents, this allows you to choose whether you
                want the endnotes to appear at the end of each chapter or
-               section, or grouped together at the very end of the document.
+        article in a document, or grouped together at the very end
+        of the document.
 </ol>
 <p>
 Within endnotes, you may use the document element tags
@@ -2482,7 +3181,7 @@
 <p>
 
 <a name="ENDNOTE_BEHAVIOUR"><h3><u>Endnote behaviour</u></h3></a>
-<p>
+<br>
 When you output endnotes (with
 <a href="#ENDNOTES">ENDNOTES</a>),
 <strong>mom</strong> finishes processing the last page of your document,
@@ -2519,13 +3218,14 @@
 <a name="ENDNOTE_SPACING">
        <h3><u>A Note on Endnote Spacing</u></h3>
 </a>
+<br>
 On the endnotes page(s), each new endnote is separated from the
 previous endnote by a full line space.  This can result in a bottom
 margin that hangs, and is the one instance, other than the use of
 <a href="#PP_SPACE">PARA_SPACE</a>,
 where <strong>mom</strong> allows unequal bottom alignment of pages.
 Should you wish to correct this, by adding or subtracting small amounts
-of space between endnotes that appear together on an endnote page, make
+of space between endnotes that appear together on an endnotes page, make
 the adjustment (with
 <a href="typesetting.html#ALD">ALD</a>,
 <a href="typesetting.html#RLD">RLD</a>
@@ -2539,6 +3239,7 @@
 <a name="ENDNOTE_COLUMNS">
        <h3><u>Endnotes and columnar documents</u></h3>
 </a>
+<br>
 Formerly (pre 1.1.6), there was no way to set a document in columns
 (see
 <a href="docprocessing.html#COLUMNS">COLUMNS</a>)
@@ -2552,7 +3253,7 @@
 
 <p>
 <a name="ENDNOTE">
-       Macro: <strong>ENDNOTE</strong> <var>&lt;toggle&gt;</var>
+       <nobr>Macro: <strong>ENDNOTE</strong> &lt;toggle&gt;<wbr>
        <br>
        <em>*See <a href="#ENDNOTE_NOTE">HYPER-IMPORTANT NOTE</a>!!!</em>
 </a>
@@ -2570,23 +3271,36 @@
 tag.  Use <strong>PP</strong> only to introduce subsequent paragraphs.
 <p>
 <a name="ENDNOTE_NOTE"><strong>HYPER-IMPORTANT NOTE:</strong></a>
-The final word on the
+If your
+<a href="#ENDNOTE_MARKER_STYLE">ENDNOTE_MARKER_STYLE</a>
+is <strong>NUMBER</strong> (<strong>mom</strong>'s default), the
+final word on the
 <a href="definitions.html#TERMS_INPUTLINE">input line</a>
 that comes immediately before <strong>ENDNOTE</strong> MUST terminate
 with a
 <a href="typesetting.html#JOIN">\c</a>
-inline escape.  Otherwise, the endnote number for the word won't be attached to
-it (i.e. <strong>mom</strong> will insert a word space between the word
-and the number).  See the
+inline escape.  See the
 <a href="#ENDNOTE_EXAMPLE">endnote example</a>
 above.
 <p>
+Additionally, the line <em>after</em>
+<strong>.ENDNOTE&nbsp;OFF</strong> should be entered as if there
+were no interruption in the input text, i.e. the line should begin
+with a literal space or punctuation mark.  See the two
+<a href="#EN_PUNCT">examples</a>, 
+above.
+<p>
+If your <strong>ENDNOTE_MARKER_STYLE</strong> is
+<strong>LINE</strong>, do NOT use the <strong>\c</strong> escape,
+and enter the line after <strong>.ENDNOTE&nbsp;OFF</strong>
+normally.
+<p>
 
 <!---ENDNOTES--->
 
 <hr width="66%" align="left">
 <p>
-<a name="ENDNOTES">Macro: <strong>ENDNOTES</strong></a>
+<a name="ENDNOTES">Tag: <strong>ENDNOTES</strong></a>
 
 <p>
 Unlike footnotes, which <strong>mom</strong> automatically outputs at the
@@ -2635,7 +3349,7 @@
 <ol>
        <li><a href="#ENDNOTES_GENERAL"><strong>General endnotes-pages style 
control</strong></a>
                <ul>
-                       <li><a href="#ENDNOTE_GENERAL">Base family/font/quad 
for endnotes-pages</a>
+                       <li><a href="#ENDNOTE_STYLE">Base family/font/quad for 
endnotes-pages</a>
                        <li><a href="#ENDNOTE_PT_SIZE">Base point size for the 
endnotes-pages</a>
                        <li><a href="#ENDNOTE_LEAD">Leading of 
endnotes-pages</a>
                        <li><a href="#SINGLESPACE_ENDNOTES">Singlespace 
endnotes (for TYPEWRITE only)</a>
@@ -2671,6 +3385,12 @@
                </ul>
        <li><a href="#ENDNOTES_NUMBERING"><strong>Endnotes-pages endnote 
numbering style</strong></a>
                <ul>
+                       <li><a href="#ENDNOTE_MARKER_STYLE">Endnote marker 
style</a>--by numbers in the text, or by line number
+                       <ul>
+                               <li><a 
href="#ENDNOTE_LINENUMBER_GAP">ENDNOTE_LINENUMBER_GAP</a>
+                               <li><a 
href="#ENDNOTE_LINENUMBER_BRACKETS">ENDNOTE_LINENUMBER_BRACKETS</a>
+                               <li><a 
href="#ENDNOTE_LINENUMBER_SEPARATOR">ENDNOTE_LINENUMBER_SEPARATOR</a>
+                       </ul>
                        <li><a href="#ENDNOTE_NUMBER_CONTROL">Endnotes-pages 
endnote numbering style control</a>
                        <li><a href="#ENDNOTE_NUMBER_ALIGNMENT">Endnote 
numbering alignment</a>
                        <ul>
@@ -2683,7 +3403,7 @@
 
 <a name="ENDNOTES_GENERAL"><h2><u>1. General endnotes page style 
control</u></h2>
 
-<a name="ENDNOTE_GENERAL"><h3><u>*Endnote family/font/quad</u></h3></a>
+<a name="ENDNOTE_STYLE"><h3><u>*Endnote family/font/quad</u></h3></a>
 <p>
 See
 <a href="#CONTROL_MACRO_ARGS">Arguments to the control macros</a>.
@@ -2691,14 +3411,16 @@
 <pre>
 .ENDNOTE_FAMILY    default = prevailing document family; default is Times Roman
 .ENDNOTE_FONT      default = roman
-.ENDNOTE_QUAD      default = justified
+.ENDNOTE_QUAD*     default = justified
+
+*Note: ENDNOTE_QUAD must be set to either L or J
 </pre>
 
 <!---ENDNOTE_PT_SIZE--->
 
 <a name="ENDNOTE_PT_SIZE"><h3><u>*Endnote point size</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_PT_SIZE</strong> <var>&lt;base type size of 
endnotes&gt;</var>
+<nobr>Macro: <strong>ENDNOTE_PT_SIZE</strong> &lt;base type size of 
endnotes&gt;<wbr>
 
 <p>
 Unlike most other control macros that deal with size of document
@@ -2737,7 +3459,7 @@
 
 <a name="ENDNOTE_LEAD"><h3><u>*Endnote lead</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_LEAD</strong> <var>&lt;base leading of endnotes&gt; [ 
ADJUST ] </var>
+<nobr>Macro: <strong>ENDNOTE_LEAD</strong> &lt;base leading of endnotes&gt; [ 
ADJUST ] <wbr>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a>; points is assumed</em>
 
@@ -2787,7 +3509,7 @@
 
 <a name="SINGLESPACE_ENDNOTES"><h3><u>*Singlespace endnotes (TYPEWRITE 
only)</u></h3></a>
 <p>
-Macro: <strong>SINGLESPACE_ENDNOTES</strong> <var>&lt;toggle&gt;</var>
+<nobr>Macro: <strong>SINGLESPACE_ENDNOTES</strong> &lt;toggle&gt;<wbr>
 
 <p>
 If your 
@@ -2811,7 +3533,7 @@
 
 <a name="ENDNOTE_PARA_INDENT"><h3><u>*Endnote paragraph indenting</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_PARA_INDENT</strong> <var>&lt;amount to indent first 
line of paragraphs in endnotes&gt;</var>
+<nobr>Macro: <strong>ENDNOTE_PARA_INDENT</strong> &lt;amount to indent first 
line of paragraphs in endnotes&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -2839,7 +3561,7 @@
 
 <a name="ENDNOTE_PARA_SPACE"><h3><u>*Endnote paragraph spacing</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_PARA_SPACE</strong> <var>&lt;toggle&gt;</var>
+<nobr>Macro: <strong>ENDNOTE_PARA_SPACE</strong> &lt;toggle&gt;<wbr>
 
 <p>
 <strong>ENDNOTE_PARA_SPACE</strong> works exactly the same way as
@@ -2859,7 +3581,7 @@
 
 <a name="ENDNOTES_NO_COLUMNS"><h3><u>*Turning off column mode during endnotes 
output</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_NO_COLUMNS</strong> <var>&lt;toggle&gt;</var>
+<nobr>Macro: <strong>ENDNOTES_NO_COLUMNS</strong> &lt;toggle&gt;<wbr>
 
 <p>
 By default, if your document is
@@ -2881,7 +3603,7 @@
 
 <a name="ENDNOTES_PAGENUM_STYLE"><h3><u>*Endnotes-pages page numbering 
style</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_PAGENUM_STYLE</strong> <var>DIGIT | ROMAN | roman | 
ALPHA | alpha</var>
+<nobr>Macro: <strong>ENDNOTES_PAGENUM_STYLE</strong> DIGIT | ROMAN | roman | 
ALPHA | alpha<wbr>
 
 <p>
 Use this macro to set the page numbering style of endnotes pages.
@@ -2898,7 +3620,7 @@
 
 <a name="ENDNOTES_FIRST_PAGENUMBER"><h3><u>*Setting the first page number of 
endnotes pages</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_FIRST_PAGENUMBER</strong> <var>&lt;page # that appears 
on page 1 of endnotes&gt;</var>
+<nobr>Macro: <strong>ENDNOTES_FIRST_PAGENUMBER</strong> &lt;page # that 
appears on page 1 of endnotes&gt;<wbr>
 
 <p>
 Use this macro with caution.  If all endnotes for several
@@ -2920,7 +3642,7 @@
 
 <a name="ENDNOTES_NO_FIRST_PAGENUM"><h3><u>*Omitting a page number on the 
first page of endnotes</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_NO_FIRST_PAGENUM</strong> <var>&lt;toggle&gt;</var>
+<nobr>Macro: <strong>ENDNOTES_NO_FIRST_PAGENUM</strong> &lt;toggle&gt;<wbr>
 
 <p>
 This macro is for use only if <strong>FOOTERS</strong> are on.  It
@@ -2948,7 +3670,6 @@
 To restore normal document pagination after endnotes, invoke
 <strong>RESTORE_PAGINATION</strong> (again, with no argument)
 immediately after <strong>ENDNOTES</strong>.
-<p>
 
 <a name="ENDNOTES_HEADER_CONTROL"><h2><u>2. Endnotes-page header/footer 
control</u></h2></a>
 <p>
@@ -2989,7 +3710,7 @@
 
 <a name="ENDNOTES_HDRFTR_CENTER"><h3><u>*Endnotes page(s) header/footer centre 
string</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_HEADER_CENTER</strong> <var>toggle</var>
+<nobr>Macro: <strong>ENDNOTES_HEADER_CENTER</strong> toggle<wbr>
 
 <p>
 If your
@@ -3005,9 +3726,9 @@
 with any argument (<strong>OFF, QUIT, Q, X</strong>...).
 <p>
 
-<a name="ENDNOTES_ALLOWS_HEADERS"><h3><u>*Allow headers on 
endnotes_pages</u></h3></a>
+<a name="ENDNOTES_ALLOWS_HEADERS"><h3><u>*Allow headers on 
endnotes-pages</u></h3></a>
 <p>
-Macro: <strong>ENDNOTES_ALLOWS_HEADERS</strong> <var>&lt;none&gt; | ALL</var>
+<nobr>Macro: <strong>ENDNOTES_ALLOWS_HEADERS</strong> &lt;none&gt; | ALL<wbr>
 
 <p>
 By default, if <strong>HEADERS</strong> are on, <strong>mom</strong>
@@ -3036,7 +3757,7 @@
 
 <a name="ENDNOTE_STRING"><h3><u>*Endnotes-page first page head (title) 
string</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_STRING</strong> <var>&quot;&lt;head to print at the top 
of endnotes&gt;&quot;</var>
+<nobr>Macro: <strong>ENDNOTE_STRING</strong> &quot;&lt;head to print at the 
top of endnotes&gt;&quot;<wbr>
 
 <p>
 By default, <strong>mom</strong> prints the word &quot;ENDNOTES&quot;
@@ -3069,7 +3790,7 @@
 
 <a name="ENDNOTE_STRING_UNDERSCORE"><h3><u>*Endnotes-page head (title) 
underscoring</h3></u></a>
 <p>
-Macro: <strong>ENDNOTE_STRING_UNDERSCORE</strong> <var>toggle | 2</var>
+<nobr>Macro: <strong>ENDNOTE_STRING_UNDERSCORE</strong> toggle | 2<wbr>
 
 <p>
 Invoked by itself, <strong>ENDNOTE_STRING_UNDERSCORE</strong> will
@@ -3088,7 +3809,7 @@
 
 <a name="ENDNOTE_STRING_CAPS"><h3><u>*Endnotes-page head (title) automatic 
capitalization</h3></u></a>
 <p>
-Macro: <strong>ENDNOTE_STRING_CAPS</strong> <var>toggle</var>
+<nobr>Macro: <strong>ENDNOTE_STRING_CAPS</strong> toggle<wbr>
 
 <p>
 Invoked by itself, <strong>ENDNOTE_STRING_CAPS</strong> will
@@ -3112,7 +3833,7 @@
 <a name="ENDNOTES_DOC_TITLE"><h2><u>4. Endnote document-identification 
title</u></h2>
 <a name="ENDNOTE_TITLE"><h3><u>*Endnote document-identification title 
string</u></h3></a>
 <p>
-Macro: <strong>ENDNOTE_TITLE</strong> <var>&quot;&lt;title to identify a 
document in endnotes&gt;&quot;</var>
+<nobr>Macro: <strong>ENDNOTE_TITLE</strong> &quot;&lt;title to identify a 
document in endnotes&gt;&quot;<wbr>
 
 <p>
 By default, <strong>mom</strong> identifies the document(s) to which
@@ -3150,7 +3871,7 @@
 
 <a name="ENDNOTE_TITLE_UNDERSCORE"><h3><u>*Endnote document-identification 
title underscoring</h3></u></a>
 <p>
-Macro: <strong>ENDNOTE_TITLE_UNDERSCORE</strong> <var>toggle</var>
+<nobr>Macro: <strong>ENDNOTE_TITLE_UNDERSCORE</strong> toggle<wbr>
 
 <p>
 Invoked by itself, <strong>ENDNOTE_TITLE_UNDERSCORE</strong> will
@@ -3167,6 +3888,106 @@
 
 <a name="ENDNOTES_NUMBERING"><h2><u>5. Endnotes-pages endnote numbering 
style</u></h2>
 
+<a name="ENDNOTE_MARKER_STYLE"><h3><u>*Endnote marker style</u></h3></a>
+<p>
+The macro to control how endnotes are referenced is
+<strong>ENDNOTE_MARKER_STYLE</strong>.
+<p>
+By default, <strong>mom</strong> places superscript numbers in
+<a href="definitions.html#RUNNING">running text</a>
+to identify endnotes.  However, if you have
+<a href="#NUMBER_LINES">line-numbering</a>
+turned on, you may instruct <strong>mom</strong> not to put
+superscript numbers in the running text, but rather to reference
+endnotes by line number.  The command to do this is
+<p>
+<pre>
+       .ENDNOTE_MARKER_STYLE LINE
+</pre>
+
+With <strong>ENDNOTE_MARKER_STYLE LINE</strong>, <strong>mom</strong>
+will identify endnotes either by single line numbers, or line
+ranges.  If what you want is a single line number, you need only
+invoke <strong>.ENDNOTE</strong>, <em>without terminating the text
+line before it with</em> <strong>\c</strong>, at the appropriate
+place in running text.  (Should you wish to revert to
+<strong>mom</strong>'s default behaviour of placing a superscript
+number in the text to identify an endnote, you can invoke
+<strong>ENDNOTE_MARKER_STYLE</strong> with the argument,
+<strong>NUMBER</strong>.  It is not advisable to switch marker
+styles within a single document, for aesthetic reasons, but there
+is nothing to prevent you from doing so.)
+<p>
+If you want a range of line numbers (e.g.&nbsp;[5-11]&nbsp;),
+insert, directly into the first line of the range you want, the
+<a href="definitions.html#TERMS_INLINES">inline escape</a>,
+<strong>\*[EN-MARK]</strong>.  For the terminating line number of
+the range, you need only invoke <strong>.ENDNOTE</strong>, (again,
+without attaching <strong>\c</strong> to the text line before it).
+<strong>Mom</strong> is smart enough to figure out that where
+<strong>ENDNOTE</strong> was invoked represents the terminating
+line number.
+<a name="ENDNOTE_LINENUMBER_GAP"></a>
+<p>
+Given the impossibility of knowing, in advance, the "string length"
+of all the line numbers or ranges of line numbers that will be used
+in endnotes (the string length of 12 is two; the string length
+of 12-15 is 5), <strong>mom</strong> cannot "hang" line numbers
+and guarantee that they, and the endnote text, will align in a
+visually pleasing manner.  Consequently, <strong>mom</strong> sets
+the entirety of line-numbered endnotes completely flush left,
+<strong>including the line numbers themselves</strong>.  The line
+numbers (by default, enclosed in square brackets) are separated from
+the beginning of each endnote by a gap, so that a line-numbered
+endnote looks approximately like this:
+<p>
+<pre>
+       [1-2]   Notwithstanding, Frye later asserts that Christianity
+       is "a ghost  with the chains of a foul historical record of
+       cruelty clanking behind it."
+</pre>
+
+The default gap for <strong>PRINTSTYLE TYPESET</strong> and
+<strong>PRINSTYLE TYPEWRITE</strong> is 1.5
+<a href="definitions.html#TERMS_EM">ems</a>.
+You can change the size of the gap with the macro,
+<strong>ENDNOTE_LINENUMBER_GAP</strong>, which takes, as its single
+argument, the size of the gap.  The argument requires a
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>,
+so, for example, to change the gap to 2
+<a href="definitions.html#TERMS_PICASPOINTS">picas</a>,
+you'd do
+<p>
+<pre>
+       .ENDNOTE_LINENUMBER_GAP 2P
+</pre>
+
+<a name="ENDNOTE_LINENUMBER_BRACKETS"></a>
+By default, <strong>mom</strong> puts endnote line numbers inside
+square brackets.  The style of the brackets may be changed with
+the macro, <strong>ENDNOTE_LINENUMBER_BRACKETS</strong>, which
+takes one of three possible arguments: <strong>PARENS</strong>
+("round" brackets), <strong>SQUARE</strong> (the default) or
+<strong>BRACES</strong> (curly braces).  If you prefer a
+shortform, the arguments, <strong>(</strong>, <strong>[</strong> or
+<strong>{</strong> may be used instead.
+<a name="ENDNOTE_LINENUMBER_SEPARATOR"></a>
+<p>
+If you don't want the numbers enclosed in brackets, you may tell
+<strong>mom</strong> to use a "separator" instead.  A common
+separator would be the colon, but it can be anything you like.  The
+macro to do this is <strong>ENDNOTE_LINENUMBER_SEPARATOR</strong>,
+which takes, as its single argument, the separator you want.
+(If the argument contains spaces, don't forget to enclose the
+argument in double-quotes.)  The separator can be composed of
+any legal groff character, or any combination of characters.
+For example, to get a colon separator after the line number in
+line-numbered endnotes, you'd do
+<p>
+<pre>
+       .ENDNOTE_LINENUMBER_SEPARATOR :
+</pre>
+
 <a name="ENDNOTE_NUMBER_CONTROL"><h3><u>*Endnote numbering style 
control</u></h3></a>
 <p>
 See
@@ -3213,7 +4034,7 @@
 
 <p>
 <a name="ENDNOTE_NUMBERS_ALIGN_RIGHT">
-       Macro: <strong>ENDNOTE_NUMBERS_ALIGN_RIGHT</strong> <var>&lt;number of 
placeholders&gt;</var>
+       <nobr>Macro: <strong>ENDNOTE_NUMBERS_ALIGN_RIGHT</strong> &lt;number of 
placeholders&gt;<wbr>
 </a>
 <p>
 <strong>ENDNOTE_NUMBERS_ALIGN_RIGHT</strong> takes one (non-optional)
@@ -3236,6 +4057,7 @@
 
 to ensure that the numbers hang and are properly right-aligned.
 <p>
+
 <hr width="66%" align="left">
 
 <!---ENDNOTE_NUMBERS_ALIGN_LEFT--->
@@ -3265,6 +4087,321 @@
 
 <!====================================================================>
 
+<a name="MARGIN_NOTES_INTRO"><h2><u>Margin notes</u></h2></a>
+<ul>
+       <li><a href="#MARGIN_NOTES_BEHAVIOUR">Margin notes behaviour
+       <ul>
+               <li><a href="#MARGIN_NOTES_VERTICAL">Adjusting the vertical 
position of margin notes</a>
+       </ul>
+       <li><a href="#MN_INIT">Macro: MN_INIT</a> -- initialize margin notes
+       <li><a href="#MN">Tag: MN</a>
+</ul>
+
+<p>
+Margin notes are short annotations that appear in either the left
+or right margin of a document.  Sometimes they comment on the text.
+Sometimes they assist in following the "flow" of a document by
+summarizing the subject of a portion of text.  Sometimes they're
+comments to yourself in a draft copy.
+<p>
+The margin notes macros and routines in om.tmac
+(<strong>mom</strong>) are "mommified" versions of the margin notes
+macros and routines written by Werner Lemberg and patched by Gaius
+Mulley.
+<p>
+
+<a name="MARGIN_NOTES_BEHAVIOUR"<h3><u>Margin notes behaviour</u></h3>
+<p>
+First things first: before you enter your first margin note, you
+must "initialize" margin notes with
+<a href="#MN_INIT">MN_INIT</a>.
+<strong>MN_INIT</strong> sets up the style parameters for margin
+notes, including things like
+<a href="definitions.html#TERMS_FONT">font</a>,
+<a href="definitions.html#TERMS_FAMILY">family</a>
+and
+<a href="definitions.html#TERMS_LEADING">leading</a>.
+<p>
+After initializing margin notes, you create margin notes with the
+<a href="#MN">MN</a>
+macro.  Based on the argument you pass <strong>MN</strong>, your
+margin note will go in either the left or the right margin.
+<p>
+Margin notes are tricky from a typographic standpoint with respect
+to vertical placement.  Since the leading of margin notes may
+differ from that of
+<a href="definitions.html#TERMS_RUNNING">running text</a>,
+it's impossible for <strong>mom</strong> to guess whether to align
+the first lines of margin notes with a document
+<a href="definitions.html#TERMS_BASELINE">baseline</a>,
+whether to align the last lines of margin notes with a document
+baseline, or whether to center them, vertically, so that neither
+first nor last line aligns with anything!
+<p>
+Given this difficulty, <strong>mom</strong> always aligns the first
+line of any margin note with a document baseline.  If you want a
+different behaviour, you must adjust the position(s) of margin
+notes yourself, on a note by note basis.  (See
+<a href="#MARGIN_NOTES_VERTICAL">Adjusting the vertical position of margin 
notes</a>.)
+<p>
+Generally speaking, <strong>mom</strong> tries to place margin
+notes at the point where you invoke the tag,
+<a href="#MN">MN</a>.
+However, in the event that a margin note runs deep, she may not
+be able to place a subsequent margin note exactly where you want.
+In such an instance, <strong>mom</strong> will "shift" the margin
+note down on the page, placing it one (margin note)
+linespace beneath the previous margin note (plus whatever vertical
+space is required to get the first line to line up with a baseline
+of running text).  A warning will be issued, letting you know this
+has happened, and where.
+<p>
+Sometimes, if a margin note has to be shifted down, there simply
+isn't enough room to start the margin note on the page on which
+<strong>MN</strong> is invoked.  In that case, <strong>mom</strong>
+ignores the margin note entirely and issues a warning, letting you
+know what she's done, and where.
+<p>
+In the event that a margin note, sucessfully begun on a page, 
+runs past your bottom margin (or the last line before footnotes
+begin), the margin note will "flow" onto the next page.  If it is a
+"left" margin note, it will continue in the left margin.  If it is a
+"right" margin note, it will continue in the right margin.
+<p>
+If your document is being set in two columns, <strong>mom</strong>
+will sensibly and automatically set all margin notes pertaining
+to the left column in the left margin, and all margin notes
+pertaining to the right column in the right margin, regardless of
+the "direction" argument you give the <strong>MN</strong> tag.  If
+you try to use <strong>MN</strong> in documents of more than two
+columns, <strong>mom</strong> will ignore all margin notes, and
+issue warning for each.
+<p>
+<h3><u><a name="MARGIN_NOTES_VERTICAL">Adjusting the vertical position of 
margin notes</a></u></h3>
+<p>
+When the
+<a href="definitions.html#TERM_LEADING">leading</a>
+of margin notes differs from the leading used throughout a document,
+you may want to adjust the vertical position of individual margin
+notes.  This is most often going to be the case with margin notes
+that end near the bottom of the page, where you want the last line of
+the margin note to line up with the last line of text on the page.
+<p>
+Adjustments to the vertical position of margin notes must be done
+inside the margin note (i.e. after <strong>MN</strong>), at the
+top, before entering text.  The commands to use are
+\!<a href="typesetting.html#ALD">.ALD</a>
+(to lower the margin note), and
+\!<a href="typesetting.html#RLD">.RLD</a>
+(to raise it).  The <strong>\!</strong> <em>must</em> precede the
+macros, or they won't have any effect.
+
+<p>
+<hr width="66%" align="left">
+
+<!---MN_INIT--->
+
+<p>
+<a name="MN_INIT">
+       <nobr>Macro: <strong>MN_INIT</strong>&nbsp;[ ragged | symmetric ] &lt; 
left-width right-width gutter family+font point-size lead colour 
hyphenation-flags &gt;<wbr>
+</a>
+<p>
+Before you enter your first margin note, you must initialize
+all the parameters associated with margin notes with
+<strong>MN_INIT</strong>.  If you forget to do so,
+<strong>mom</strong> will issue a warning and abort.
+<p>
+The argument list is quite long; an
+explanation of each argument follows.  Any argument whose value you
+want to be the default must be entered as "" (i.e. two
+double-quotes with no space between them).  Defaults for each
+argument are given in the explanation below.
+<p>
+<strong>[ ragged | symmetric ]</strong>
+<br>
+If the first argument is "ragged", both left and right margin notes
+will be flush left.  If the first argument is "symmetric", left
+margin notes will be set flush <em>right</em>, and right margin
+notes will be set flush <em>left</em>.  The effect is something
+like this:
+<p>
+<pre>
+            A left    This is a meaningless batch        A right
+       margin note    of text whose sole purpose is      margin note
+         with just    to demonstrate how the sym-        with just
+       a few words    metric argument to MN sets left    a few words
+            in it.    and right margin notes.            in it.
+</pre>
+
+
+If the argument is omitted,
+or given as "", both left and right margin notes will be set
+justified.  (Justified is usually not a good idea, since the narrow
+measure of margin notes makes pleasing justification a near
+impossibility.)
+<p>
+<strong>left-width</strong>
+<br>
+The width of left margin notes.  A
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
+must be appended directly onto the argument.  The default is to set
+left margin notes right out to the edge of the page, which is
+almost certainly not what you want, so you should give a value for
+this argument if using left margin notes.
+<p>
+<strong>right-width</strong>
+<br>
+The width of right margin notes.  A
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
+must be appended directly onto the argument.  The default is to set
+right margin notes right out to the edge of the page, which is
+almost certainly not what you want, so you should give a value for
+this argument if using right margin notes.
+<p>
+<strong>gutter</strong>
+<br>
+The
+<a href="definitions.html#TERMS_GUTTER">gutter</a>
+between margin notes and
+<a href="definitions.html#TERMS_RUNNING">running text</a>.
+A
+<a href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a>
+must be appended directly onto the argument.  The gutter applies to
+both left and right margin notes. The default is 1
+<a href="definitions.html#TERMS_EM">em</a>.
+<p>
+<strong>font</strong>
+<br>
+The family+font for margin notes.  Yes, that's right: the family
+PLUS font combo.  For example, if you want Times Roman Medium,
+the argument must be TR.  If you want Palatino Medium Italic, the
+argument must be PI.  The default is the same family+font combo used
+for a document's paragraph text.
+<p>
+<strong>lead</strong>
+<br>
+The
+<a href="definitions.html#TERMS_LEADING">leading</a>
+of margin notes.  <strong>lead</strong> uses
+<a href="definitions.html#TERMS_PICASPOINTS">points</a>
+as its unit of measure, so don't tack a unit of measure onto the
+end of the argument.  The default lead is the same leading as
+is used for paragraph text (i.e. the document's base leading).
+For convenience and clarity, you may also give the word,
+<strong>DOC</strong>, to this argument, which indicates that the
+leading should be the same as the document's base leading.
+<p>
+<strong>colour</strong>
+<br>
+The colour of margin notes.  The colour must be pre-initialized
+with
+<a href="color.html#NEWCOLOR">NEWCOLOR</a>
+or
+<a href="color.html#XCOLOR">XCOLOR</a>.
+The default is black.
+<p>
+<strong>hyphenation-flags</strong>
+<br>
+A number telling <strong>groff</strong> how you want margin notes
+hyphenated.
+<p>
+<pre>
+       1 = hyphenate without restrictions
+       2 = do not hyphenate the last word on the page
+       4 = do not hyphenate the last two characters of a word
+       8 = do not hyphenate the first two characters of a word
+</pre>
+
+The values can be added together, so, for example, if you want
+neither the first two nor the last two characters of words
+hyphenated, the hyphenation-flag would be 12.  The default value is
+14 (i.e. 2+4+8).
+
+<p>
+<hr width="66%" align="left">
+
+<!---MN_INIT--->
+
+<p>
+<a name="MN">
+       <nobr>Macro: <strong>MN</strong>&nbsp;LEFT|RIGHT | &lt;anything&gt;<wbr>
+</a>
+<p>
+Once you've initialized margin notes with
+<a href="#MN_INIT">MN_INIT</a>,
+you can enter margin notes any time you like with
+<strong>MN</strong>.  An argument of <strong>LEFT</strong> will set
+a left margin note.  An argument of <strong>RIGHT</strong> will set
+a right margin note.
+<p>
+Any argument, such as <strong>OFF</strong> (or
+<strong>QUIT</strong>, <strong>END</strong>, <strong>X</strong>,
+etc) exits the current margin note.
+
+<p>
+<hr>
+
+<!====================================================================>
+
+<a name="BLANK_PAGE_TITLE"><h2><u>Inserting a blank page into the 
document</u></h2></a>
+<p>
+<a name="BLANK_PAGE">
+       <nobr>Macro: <strong>BLANKPAGE</strong> &lt;# of blank pages to 
insert&gt;<wbr>
+</a>
+
+<p>
+This one does exactly what you'd expect -- inserts a blank page into
+the document. <strong>Mom</strong> silently increments the page
+number of every blank page and keeps track of
+<a href="rectoverso.html#RECTO_VERSO">recto/verso</a>
+stuff, but otherwise, does nothing.  It's up to you, the user, to
+figure out what to do with this feature.  However, it's worth
+noting that without it, inserting completely blank pages, to use
+a vernacular Québécois phrase, &quot;c'est pas évident&quot;
+(somewhere between &quot;isn't easy&quot;, &quot;isn't
+obvious&quot; and &quot;isn't fun&quot;).
+<p>
+The argument to <strong>BLANK_PAGE</strong> is the number of blank
+pages to insert.  The argument is not optional, hence even if you
+only want one blank page, you have to tell <strong>mom</strong>:
+<p>
+<pre>
+       .BLANKPAGE 1
+</pre>
+
+<a name="FINIS_INTRO"><h2><u>Terminate document processing</u></h2></a>
+<ul>
+       <li><a href="#FINIS">Tag: FINIS</a>
+       <li><a href="#FINIS_STRING">Changing the FINIS string</a>
+</ul>
+
+<p>
+The use of <strong>FINIS</strong> is optional.  If you invoke it
+(at the end of a document before
+<a href="#TOC">TOC</a>
+or
+<a href="#ENDNOTES">ENDNOTES</a>),
+<strong>mom</strong>
+deposits the word END, centred after a blank line, beneath the last
+line of the document.  END is enclosed between
+<a href="definitions.html#TERMS_EM">em-dashes</a>.
+<p>
+<strong>Please note</strong> that in versions of
+<strong>mom</strong> prior to 1.1.9, <strong>FINIS</strong> used to
+turn off
+<a href="definitions.html#TERMS_FOOTER">footers</a>
+(if they were on) and page numbering (if page numbers were at the
+bottom of the page).  Damned if I can recall why I thought anyone
+would want this behaviour, but it has been removed.
+<p>
+If you're writing in a language other than English, you can
+change what <strong>mom</strong> prints for END with
+the control macro <strong>FINIS_STRING</strong>.
+<p>
+<hr>
+
+<!====================================================================>
+
 <a name="TOC_INTRO"><h2><u>Table of contents</u></h2></a>
 <ul>
        <li><a href="#TOC_BEHAVIOUR">TOC behaviour</a>
@@ -3426,7 +4563,7 @@
 
 <a name="TOC_PT_SIZE"><h3><u>*Toc point size</u></h3></a>
 <p>
-Macro: <strong>TOC_PT_SIZE</strong> <var>&lt;base type size of the 
toc&gt;</var>
+<nobr>Macro: <strong>TOC_PT_SIZE</strong> &lt;base type size of the 
toc&gt;<wbr>
 
 <p>
 Unlike most other control macros that deal with size of document
@@ -3463,7 +4600,7 @@
 
 <a name="TOC_LEAD"><h3><u>*Toc lead</u></h3></a>
 <p>
-Macro: <strong>TOC_LEAD</strong> <var>&lt;leading of the toc&gt; [ ADJUST 
]</var>
+<nobr>Macro: <strong>TOC_LEAD</strong> &lt;leading of the toc&gt; [ ADJUST 
]<wbr>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a>; points is assumed</em>
 
@@ -3511,7 +4648,6 @@
 <strong>ADDITIONAL NOTE:</strong> Tocs are always double-spaced in
 <strong>PRINTSTYLE TYPEWRITE</strong>, regardless of whether the
 body of the document is single-spaced.
-<p>
 
 <a name="TOC_PAGENUMBERING"><h2><u>2. Toc page numbering</u></h2></a>
 <p>
@@ -3538,7 +4674,7 @@
 
 <p>
 <a name="PAGINATE_TOC">
-       Macro: <strong>PAGINATE_TOC</strong> <var>&lt;toggle&gt;</var>
+       <nobr>Macro: <strong>PAGINATE_TOC</strong> &lt;toggle&gt;<wbr>
 </a>
 <p>
 By default, <strong>mom</strong> paginates the toc.  If you'd like
@@ -3561,7 +4697,7 @@
 <!---TOC_PAGENUM_STYLE--->
 
 <a name="TOC_PAGENUM_STYLE">
-       Macro: <strong>TOC_PAGENUM_STYLE</strong> <var>&lt;DIGIT | ROMAN | 
roman | ALPHA | alpha&gt;</var>
+       <nobr>Macro: <strong>TOC_PAGENUM_STYLE</strong> &lt;DIGIT | ROMAN | 
roman | ALPHA | alpha&gt;<wbr>
 </a>
 <p>
 By default, <strong>mom</strong> uses roman numerals to number
@@ -3574,7 +4710,6 @@
 </pre>
 
 <hr width="33%" align="left">
-<p>
 
 <a name="TOC_HEADER"><h2><u>3. Changing the toc header (title) string and 
style</u></h2></a>
 <p>
@@ -3734,7 +4869,7 @@
 
 <p>
 <a name="TOC_TITLE_ENTRY">
-       Macro: <strong>TOC_TITLE_ENTRY</strong> <var>&lt;&quot;alternate 
wording for a title entry in the toc&quot;&gt;</var>
+       <nobr>Macro: <strong>TOC_TITLE_ENTRY</strong> &lt;&quot;alternate 
wording for a title entry in the toc&quot;&gt;<wbr>
 </a>
 <p>
 In 
@@ -3779,7 +4914,7 @@
 
 <p>
 <a name="TOC_APPENDS_AUTHOR">
-       Macro: <strong>TOC_APPENDS_AUTHOR</strong> <var>&lt;none&gt; | 
&lt;&quot;name(s) of authors&quot;&gt;</var>
+       <nobr>Macro: <strong>TOC_APPENDS_AUTHOR</strong> &lt;none&gt; | 
&lt;&quot;name(s) of authors&quot;&gt;<wbr>
 </a>
 <p>
 In certain kinds of collated documents, different authors are
@@ -3812,7 +4947,7 @@
 
 <p>
 <a name="TOC_PADDING">
-       Macro: <strong>TOC_PADDING</strong> <var>&lt;# of placeholders to allow 
for page number listings&gt</var>
+       <nobr>Macro: <strong>TOC_PADDING</strong> &lt;# of placeholders to 
allow for page number listings&gt;<wbr>
 </a>
 <p>
 By default, <strong>mom</strong> allows room for 3 digits in the
@@ -3823,37 +4958,81 @@
        .TOC_PADDING 2
 </pre>
 
-<hr>
-
-<!====================================================================>
+<!---FINIS--->
 
-<a name="BLANK_PAGE_TITLE"><h2><u>Inserting a blank page into the 
document</u></h2></a>
+<hr width="66%" align="left">
 <p>
-<a name="BLANK_PAGE">
-       Macro: <strong>BLANKPAGE</strong> <var>&lt;# of blank pages to 
insert&gt;</var>
+<a name="FINIS">
+       Macro: <strong>FINIS</strong>
 </a>
 
 <p>
-This one does exactly what you'd expect -- inserts a blank page into
-the document. <strong>Mom</strong> silently increments the page
-number of every blank page and keeps track of
-<a href="rectoverso.html#RECTO_VERSO">recto/verso</a>
-stuff, but otherwise, does nothing.  It's up to you, the user, to
-figure out what to do with this feature.  However, it's worth
-noting that without it, inserting completely blank pages, to use
-a vernacular Québécois phrase, &quot;c'est pas évident&quot;
-(somewhere between &quot;isn't easy&quot;, &quot;isn't
-obvious&quot; and &quot;isn't fun&quot;).
+The use of <strong>FINIS</strong> is optional, but if you use
+it, it should be the last macro you invoke in a document (before
+<a href="#ENDNOTES">ENDNOTES</a>
+or
+<a href="#TOC">TOC</a>).
+See
+<a href="#FINIS_INTRO">above</a>
+for a description of how <strong>FINIS</strong> behaves.
 <p>
-The argument to <strong>BLANK_PAGE</strong> is the number of blank
-pages to insert.  The argument is not optional, hence even if you
-only want one blank page, you have to tell <strong>mom</strong>:
+<strong>NOTE:</strong> If you don't use <strong>FINIS</strong>,
+and you don't want
+<a href="definitions.html#TERMS_FOOTER">footers</a>
+(if they're on) or a page number at the bottom of the last page of
+a document, you have to turn them off manually, as the last two
+lines of your document file, like this:
 <p>
 <pre>
-       .BLANKPAGE 1
+       .FOOTERS OFF
+       .PAGINATE OFF
 </pre>
-<hr>
 
+<a name="FINIS_STRING"><h3><u>Changing the FINIS string</u></h3></a>
+
+<p>
+By default, <strong>FINIS</strong> prints the word
+END between
+<a href="definitions.html#TERMS_EM">em-dashes</a>.
+If you'd like <strong>mom</strong> to print something else
+between the dashes, use the <strong>FINIS_STRING</strong> macro
+(anywhere in the document prior to <strong>FINIS</strong>).
+<p>
+For example, if your document's in French, you'd do
+<p>
+<pre>
+       .FINIS_STRING "FIN"
+</pre>
+
+Double-quotes must enclose the macro's argument.
+<p>
+<strong>NOTE:</strong> If you pass <strong>FINIS_STRING</strong>
+a blank string, i.e.
+<p>
+<pre>
+       .FINIS_STRING ""
+</pre>
+
+<strong>mom</strong> will still print the em-dashes if you
+invoke <strong>FINIS</strong>.  This, in effect, produces a
+short, centred horizontal rule that terminates the document.
+(In
+<a href="docprocessing.html.#PRINTSTYLE">PRINTSTYLE TYPEWRITE</a>,
+it's a short, dashed line composed of four hyphens.)
+
+<a name="FINIS_COLOR"><h3><u>Changing the FINIS colour</u></h3></a>
+<p>
+Invoking <strong>FINIS_COLOR</strong> with a pre-defined (or
+&quot;initalized&quot;) color changes the colour of both the FINIS
+string and the em-dashes that surround it.  If you use the
+<a href="definitions.html#TERMS_INLINE">inline escape</a>,
+<a href="color.html#COLOR_INLINE">\*[&lt;colorname&gt;]</a>,
+in the argument passed to <strong>FINIS</strong>, only the text
+will be in the new colour; the em-dashes will be in the default
+document colour (usually black).
+
+<p>
+<hr>
 <a href="headfootpage.html#TOP">Next</a>&nbsp;&nbsp;
 <a href="docprocessing.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="#TOP">Top</a>&nbsp;&nbsp;
Index: groff/contrib/mom/momdoc/docprocessing.html
diff -u groff/contrib/mom/momdoc/docprocessing.html:1.20 
groff/contrib/mom/momdoc/docprocessing.html:1.21
--- groff/contrib/mom/momdoc/docprocessing.html:1.20    Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/docprocessing.html Sat May 14 07:07:13 2005
@@ -8,7 +8,7 @@
 
 <!====================================================================>
 
-<a href="docelement.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="typemacdoc.html#TOP">Next</a>&nbsp;&nbsp;
 <a href="color.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 <p>
@@ -199,7 +199,7 @@
                        </ul>
                </ul>
        
-               <li><a href="cover.html#COVER"><strong>CREATING A COVER 
PAGE</strong></a>
+               <li><a href="cover.html#TOP"><strong>CREATING A COVER 
PAGE</strong></a>
                <br>
                <li><a href="letters.html#LETTERS"><strong>WRITING 
LETTERS</strong></a>
                <ul>
@@ -674,7 +674,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="TITLE"></a>
-Macro: <strong>TITLE</strong> <var>&quot;&lt;title&gt;&quot;</var>
+<nobr>Macro: <strong>TITLE</strong> &quot;&lt;title&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -703,7 +703,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOCTITLE"></a>
-Macro: <strong>DOCTITLE</strong> <var>&quot;&lt;overall document 
title&gt;&quot;</var>
+<nobr>Macro: <strong>DOCTITLE</strong> &quot;&lt;overall document 
title&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -750,7 +750,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="SUBTITLE"></a>
-Macro: <strong>SUBTITLE</strong> <var>&quot;&lt;subtitle&gt;&quot;</var>
+<nobr>Macro: <strong>SUBTITLE</strong> &quot;&lt;subtitle&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -766,7 +766,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="AUTHOR"></a>
-Macro: <strong>AUTHOR</strong> <var>&quot;&lt;author string&gt;&quot; [ 
&quot;&lt;author2 string&gt;&quot; &quot;&lt;author3 string&gt;&quot; ... 
]</var>
+<nobr>Macro: <strong>AUTHOR</strong> &quot;&lt;author string&gt;&quot; [ 
&quot;&lt;author2 string&gt;&quot; &quot;&lt;author3 string&gt;&quot; ... ]<wbr>
 <br>
 <em>*Multiple arguments must all be enclosed in double-quotes</em>
 
@@ -798,7 +798,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="CHAPTER"></a>
-Macro: <strong>CHAPTER</strong> <var>&lt;chapter number&gt;</var>
+<nobr>Macro: <strong>CHAPTER</strong> &lt;chapter number&gt;<wbr>
 
 <p>
 The chapter number can be in any form you like -- a digit, a roman
@@ -839,7 +839,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="CHAPTER_TITLE"></a>
-Macro: <strong>CHAPTER_TITLE</strong> <var>&quot;&lt;chapter 
title&gt;&quot;</var>
+<nobr>Macro: <strong>CHAPTER_TITLE</strong> &quot;&lt;chapter 
title&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -885,7 +885,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DRAFT"></a>
-Macro: <strong>DRAFT</strong> <var>&lt;draft #&gt;</var>
+<nobr>Macro: <strong>DRAFT</strong> &lt;draft #&gt;<wbr>
 
 <p>
 <strong>DRAFT</strong> only gets used with
@@ -952,7 +952,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="REVISION"></a>
-Macro: <strong>REVISION</strong> <var>&lt;revision #&gt;</var>
+<nobr>Macro: <strong>REVISION</strong> &lt;revision #&gt;<wbr>
 
 <p>
 <strong>REVISION</strong> only gets used with
@@ -1029,7 +1029,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="COPYRIGHT"></a>
-Macro: <strong>COPYRIGHT</strong> <var>&quot;&lt;copyright info&gt;&quot;</var>
+<nobr>Macro: <strong>COPYRIGHT</strong> &quot;&lt;copyright info&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -1050,7 +1050,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="MISC"></a>
-Macro: <strong>MISC</strong> <var>&quot;&lt;argument 1&gt;&quot; 
[&quot;&lt;argument 2&gt;&quot; &quot;&lt;argument 3&gt;&quot; ...]</var>
+<nobr>Macro: <strong>MISC</strong> &quot;&lt;argument 1&gt;&quot; 
[&quot;&lt;argument 2&gt;&quot; &quot;&lt;argument 3&gt;&quot; ...]<wbr>
 <br>
 <em>*Multliple arguments must all be enclosed in double-quotes</em>
 
@@ -1081,9 +1081,9 @@
 <hr width="66%" align="left">
 <p>
 <a name="COVERTITLE"></a>
-Macro: <strong>COVERTITLE</strong> <var>&quot;&lt;user defined cover page 
title&gt;&quot;</var>
+<nobr>Macro: <strong>COVERTITLE</strong> &quot;&lt;user defined cover page 
title&gt;&quot;<wbr>
 <br>
-Macro: <strong>DOC_COVERTITLE</strong> <var>&quot;&lt;user defined document 
cover page title&gt;&quot;</var>
+<nobr>Macro: <strong>DOC_COVERTITLE</strong> &quot;&lt;user defined document 
cover page title&gt;&quot;<wbr>
 <br>
 <em>*Argument must be enclosed in double-quotes</em>
 
@@ -1137,7 +1137,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOCTYPE"></a>
-Macro: <strong>DOCTYPE</strong> <var>DEFAULT | CHAPTER | NAMED 
&quot;&lt;name&gt;&quot; | LETTER</var>
+<nobr>Macro: <strong>DOCTYPE</strong> DEFAULT | CHAPTER | NAMED 
&quot;&lt;name&gt;&quot; | LETTER<wbr>
 <p>
 The arguments <strong>DEFAULT, CHAPTER</strong> and
 <strong>NAMED</strong> tell <strong>mom</strong> what to put
@@ -1228,7 +1228,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PRINTSTYLE"></a>
-Macro: <strong>PRINTSTYLE</strong> <var>TYPESET | TYPEWRITE [ SINGLESPACE 
]</var>
+<nobr>Macro: <strong>PRINTSTYLE</strong> TYPESET | TYPEWRITE [ SINGLESPACE 
]<wbr>
 <br>
 <em>*Required for document processing.</em>
 <br>
@@ -1412,7 +1412,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="COPYSTYLE"></a>
-Macro: <strong>COPYSTYLE</strong> <var>DRAFT | FINAL</var>
+<nobr>Macro: <strong>COPYSTYLE</strong> DRAFT | FINAL<wbr>
 
 <p>
 <strong>Mom</strong>'s default <strong>COPYSTYLE</strong> is
@@ -1672,7 +1672,7 @@
 <hr width="66%" align="left">
 <a name="DOC_LEAD_ADJUST"><h3><u>Adjusting document leading to fill 
pages</u></h3></a>
 <br>
-Macro: <strong>DOC_LEAD_ADJUST</strong> <var>toggle</var>
+<nobr>Macro: <strong>DOC_LEAD_ADJUST</strong> toggle<wbr>
 <br>
 <em>*Must come after LS or AUTOLEAD and before START</em>
 
@@ -1747,7 +1747,7 @@
 <hr width="66%" align="left">
 <a name="DOCHEADER"><h3><u>Managing the docheader</u></h3></a>
 <br>
-Macro: <strong>DOCHEADER</strong> <var>&lt;toggle&gt; [ distance to advance 
from top of page ]</var>
+<nobr>Macro: <strong>DOCHEADER</strong> &lt;toggle&gt; [ distance to advance 
from top of page ]<wbr>
 <br>
 <em>*Must come before START; distance requires a <a 
href="#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -1962,11 +1962,11 @@
 of each docheader element separately:
 <p>
 <ul>
-<li><strong>TITLE_FAMILY</strong> <var>&lt;family&gt;</var>
-<li><strong>CHAPTER_TITLE_FAMILY</strong> <var>&lt;family&gt;</var>
-<li><strong>SUBTITLE_FAMILY</strong> <var>&lt;family&gt;</var>
-<li><strong>AUTHOR_FAMILY</strong> <var>&lt;family&gt;</var>
-<li><strong>DOCTYPE_FAMILY</strong> <var>&lt;family&gt;</var> (if
+<li><strong>TITLE_FAMILY</strong> <nobr>&lt;family&gt;<wbr>
+<li><strong>CHAPTER_TITLE_FAMILY</strong> <nobr>&lt;family&gt;<wbr>
+<li><strong>SUBTITLE_FAMILY</strong> <nobr>&lt;family&gt;<wbr>
+<li><strong>AUTHOR_FAMILY</strong> <nobr>&lt;family&gt;<wbr>
+<li><strong>DOCTYPE_FAMILY</strong> <nobr>&lt;family&gt; (if<wbr>
 <a href="#DOCTYPE">DOCTYPE</a> is NAMED)
 </ul>
 <p>
@@ -1982,11 +1982,11 @@
 of each docheader element separately:
 <p>
 <ul>
-<li><strong>TITLE_FONT</strong> <var>R | B | I | BI</var>
-<li><strong>CHAPTER_TITLE_FONT</strong> <var>R | B | I | BI</var>
-<li><strong>SUBTITLE_FONT</strong> <var>R | B | I | BI</var>
-<li><strong>AUTHOR_FONT</strong> <var>R | B | I | BI</var>
-<li><strong>DOCTYPE_FONT</strong> <var>R | B | I | BI</var> (if
+<li><strong>TITLE_FONT</strong> <nobr>R | B | I | BI<wbr>
+<li><strong>CHAPTER_TITLE_FONT</strong> <nobr>R | B | I | BI<wbr>
+<li><strong>SUBTITLE_FONT</strong> <nobr>R | B | I | BI<wbr>
+<li><strong>AUTHOR_FONT</strong> <nobr>R | B | I | BI<wbr>
+<li><strong>DOCTYPE_FONT</strong> <nobr>R | B | I | BI (if<wbr>
 <a href="#DOCTYPE">DOCTYPE</a> is NAMED)
 </ul>
 <p>
@@ -2006,8 +2006,8 @@
 <a href="color.html#XCOLOR">XCOLOR</a>.
 <p>
 <ul>
-       <li><strong>TITLE_COLOR</strong> <var>&lt;colorname&gt;</var>
-       <li><strong>CHAPTER_TITLE_COLOR</strong> <var>&lt;colorname&gt;</var>
+       <li><strong>TITLE_COLOR</strong> <nobr>&lt;colorname&gt;<wbr>
+       <li><strong>CHAPTER_TITLE_COLOR</strong> <nobr>&lt;colorname&gt;<wbr>
        <ul>
         <li><strong>Note: CHAPTER_TITLE_COLOR</strong> is needed
             only if you enter both a <strong>CHAPTER</strong>
@@ -2016,11 +2016,11 @@
             <strong>TITLE_COLOR</strong> takes care of colorizing
             the chapter header.
        </ul>
-       <li><strong>SUBTITLE_COLOR</strong> <var>&lt;colorname&gt;</var>
-       <li><strong>ATTRIBUTE_COLOR</strong> <var>&lt;colorname&gt;</var>
+       <li><strong>SUBTITLE_COLOR</strong> <nobr>&lt;colorname&gt;<wbr>
+       <li><strong>ATTRIBUTE_COLOR</strong> <nobr>&lt;colorname&gt;<wbr>
                (the &quot;by&quot; string that precedes the author[s] name[s])
-       <li><strong>AUTHOR_COLOR</strong> <var>&lt;colorname&gt;</var>
-       <li><strong>DOCTYPE_COLOR</strong>  <var>&lt;colorname&gt;</var> (if
+       <li><strong>AUTHOR_COLOR</strong> <nobr>&lt;colorname&gt;<wbr>
+       <li><strong>DOCTYPE_COLOR</strong>  <nobr>&lt;colorname&gt; (if<wbr>
                <a href="#DOCTYPE">DOCTYPE</a> is NAMED)
 </ul>
 <p>
@@ -2043,7 +2043,7 @@
 If you want to colourize the entire docheader, use the macro
 <p>
 <ul>
-<li><strong>DOCHEADER_COLOR</strong> <var>&lt;color name&gt;</var>.
+<li><strong>DOCHEADER_COLOR</strong> <nobr>&lt;color name&gt;.<wbr>
 </ul>
 
 <a name="CHANGE_SIZE"><h3><u>7. Adjust the size of docheader 
elements</u></h3></a>
@@ -2060,19 +2060,19 @@
 sizes are allowed.
 <p>
 <ul>
-<li><strong>TITLE_SIZE</strong> <var>&lt;+/-points&gt;</var>
+<li><strong>TITLE_SIZE</strong> <nobr>&lt;+/-points&gt;<wbr>
 <br>
 default = +3.5 (+4 if docheader title is &quot;Chapter #&quot;)
-<li><strong>CHAPTER_TITLE_SIZE</strong> <var>&lt;+/-points&gt;</var>
+<li><strong>CHAPTER_TITLE_SIZE</strong> <nobr>&lt;+/-points&gt;<wbr>
 <br>
 default = +4
-<li><strong>SUBTITLE_SIZE</strong> <var>&lt;+/-points&gt;</var>
+<li><strong>SUBTITLE_SIZE</strong> <nobr>&lt;+/-points&gt;<wbr>
 <br>
 default = +0
-<li><strong>AUTHOR_SIZE</strong> <var>&lt;+/-points&gt;</var>
+<li><strong>AUTHOR_SIZE</strong> <nobr>&lt;+/-points&gt;<wbr>
 <br>
 default = +0
-<li><strong>DOCTYPE_SIZE</strong> <var>&lt;+/-points&gt;</var> (if
+<li><strong>DOCTYPE_SIZE</strong> <nobr>&lt;+/-points&gt; (if<wbr>
 <a href="#DOCTYPE">DOCTYPE</a> is NAMED)
 <br>
 default = +3
@@ -2161,7 +2161,7 @@
 <hr width="66%" align="left">
 <a name="COLUMNS"><h3><u>COLUMNS</u></h3></a>
 <br>
-Macro: <strong>COLUMNS</strong> <var>&lt;number of columns&gt; &lt;width of 
gutters&gt;</var>
+<nobr>Macro: <strong>COLUMNS</strong> &lt;number of columns&gt; &lt;width of 
gutters&gt;<wbr>
 <br>
 <em>*Should be the last macro before START
 <br>
@@ -2311,7 +2311,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_LEFT_MARGIN">
-       Macro: <strong>DOC_LEFT_MARGIN</strong> <var>&lt;left margin&gt;</var>
+       <nobr>Macro: <strong>DOC_LEFT_MARGIN</strong> &lt;left margin&gt;<wbr>
 </a>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
@@ -2328,7 +2328,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_RIGHT_MARGIN">
-       Macro: <strong>DOC_RIGHT_MARGIN</strong> <var>&lt;right margin&gt;</var>
+       <nobr>Macro: <strong>DOC_RIGHT_MARGIN</strong> &lt;right margin&gt;<wbr>
 </a>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
@@ -2336,7 +2336,17 @@
 <ul>
        <li>the argument is the same as for
                <a href="typesetting.html#R_MARGIN">R_MARGIN</a>
-       <li>changes all right margins to the new value
+    <li>changes all right margins, including
+        <a href="definitions.html#TERMS_DOCHEADER">docheaders</a>,
+        headers (or footers) and page numbering to the new value;
+        for changing the right margin of
+        <a href="definitions.html#TERMS_RUNNING">running text</a>
+        only, use
+        <a href="typesetting.html#R_MARGIN">R_MARGIN</a>
+        (see
+        <a href="typemacdoc.html#TOP">Using typesetting macros during
+        document processing</a>,
+        entry for <strong>R_MARGIN</strong>)
        <li>all mom commands that include a right indent calculate
                the indent from the new value
 </ul>
@@ -2345,22 +2355,32 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_LINE_LENGTH">
-       Macro: <strong>DOC_LINE_LENGTH</strong> <var>&lt;length&gt;</var>
+       <nobr>Macro: <strong>DOC_LINE_LENGTH</strong> &lt;length&gt;<wbr>
 </a>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 <p>
 <ul>
        <li>the argument is the same as for
-               <a href="typesetting.html#LL">LL</a>
-       <li>equivalent to changing the right margin with DOC_RIGHT_MARGIN
+               <a href="typesetting.html#LINELENGTH">LL</a>
+    <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#TERMS_RUNNING">running text</a>
+        only, use
+        <a href="typesetting.html#LINELENGTH">LL</a>
+        (see
+        <a href="typemacdoc.html#TOP">Using typesetting macros during
+        document processing</a>,
+        entry for <strong>LL</strong>)
 </ul>
 <br>
 
 <hr width="66%" align="left">
 <p>
 <a name="DOC_FAMILY">
-       Macro: <strong>DOC_FAMILY</strong> <var>&lt;family&gt;</var>
+       <nobr>Macro: <strong>DOC_FAMILY</strong> &lt;family&gt;<wbr>
 </a>
 <p>
 <ul>
@@ -2378,7 +2398,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_PT_SIZE">
-       Macro: <strong>DOC_PT_SIZE</strong> <var>&lt;point size&gt;</var>
+       <nobr>Macro: <strong>DOC_PT_SIZE</strong> &lt;point size&gt;<wbr>
 </a>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a>; points is assumed</em>
@@ -2399,7 +2419,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_LEAD">
-       Macro: <strong>DOC_LEAD</strong> <var>&lt;points&gt; [ ADJUST ]</var>
+       <nobr>Macro: <strong>DOC_LEAD</strong> &lt;points&gt; [ ADJUST ]<wbr>
 </a>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a>; points is assumed</em>
@@ -2444,7 +2464,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="DOC_QUAD">
-       Macro: <strong>DOC_QUAD</strong> <var>L | R | C | J</var>
+       <nobr>Macro: <strong>DOC_QUAD</strong> L | R | C | J<wbr>
 </a>
 <p>
 <ul>
@@ -2456,7 +2476,7 @@
 <br>
 
 <hr>
-<a href="docelement.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="typemacdoc.html#TOP">Next</a>&nbsp;&nbsp;
 <a href="color.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="#TOP">Top</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
Index: groff/contrib/mom/momdoc/goodies.html
diff -u groff/contrib/mom/momdoc/goodies.html:1.13 
groff/contrib/mom/momdoc/goodies.html:1.14
--- groff/contrib/mom/momdoc/goodies.html:1.13  Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/goodies.html       Sat May 14 07:07:13 2005
@@ -84,7 +84,7 @@
 <hr width="66%" align="left">
 <a name="ALIAS"><h3><u>Rename macros</u></h3></a>
 <br>
-Macro: <strong>ALIAS</strong> <var>&lt;new name&gt; &lt;old name&gt;</var>
+<nobr>Macro: <strong>ALIAS</strong> &lt;new name&gt; &lt;old name&gt;<wbr>
 
 <p>
 The <strong>ALIAS</strong> macro may well be your best friend.  With it,
@@ -161,7 +161,7 @@
 <hr width="66%" align="left">
 <a name="SILENT"><h3><u>Hide input lines from output</u></h3></a>
 <br>
-Macro: <strong>SILENT</strong> <var>toggle</var>
+<nobr>Macro: <strong>SILENT</strong> toggle<wbr>
 <br>
 Alias: <strong>COMMENT</strong>
 
@@ -214,7 +214,7 @@
 <hr width="66%" align="left">
 <a name="TRAP"><h3><u>Suspend/re-invoke traps</u></h3></a>
 <br>
-Macro: <strong>TRAP</strong> <var>toggle</var>
+<nobr>Macro: <strong>TRAP</strong> toggle<wbr>
 
 <p>
 Traps are vertical positions on the output page at which you or
@@ -242,11 +242,11 @@
 <hr width="66%" align="left">
 <a name="SMARTQUOTES"><h3><u>Convert typewriter doublequotes to proper 
doublequotes</u></h3></a>
 <br>
-Macro: <strong>SMARTQUOTES</strong> <var>[&lt;off&gt;] [ ,, | &gt;&gt; | 
&lt;&lt; ]</var>
+<nobr>Macro: <strong>SMARTQUOTES</strong> [&lt;off&gt;] [ ,, | &gt;&gt; | 
&lt;&lt; ]<wbr>
 <br>
 or
 <br>
-Macro: <strong>SMARTQUOTES</strong> <var>DA | DE | ES | FR | IT | NL | NO | PT 
| SV</var>
+<nobr>Macro: <strong>SMARTQUOTES</strong> DA | DE | ES | FR | IT | NL | NO | 
PT | SV<wbr>
 
 <p>
 If you invoke <strong>SMARTQUOTES</strong> without an argument,
@@ -371,7 +371,7 @@
 <hr width="66%" align="left">
 <a name="CAPS"><h3><u>Convert to upper case</u></h3></a>
 <br>
-Macro: <strong>CAPS</strong> <var>toggle</var>
+<nobr>Macro: <strong>CAPS</strong> toggle<wbr>
 
 <p>
 <strong>CAPS</strong> converts all lower case letters to upper
@@ -398,7 +398,7 @@
 <hr width="66%" align="left">
 <a name="STRING"><h3><u>User-defined strings</u></h3></a>
 <br>
-Macro: <strong>STRING</strong> <var>&lt;name&gt; &lt;what you want in the 
string&gt;</var>
+<nobr>Macro: <strong>STRING</strong> &lt;name&gt; &lt;what you want in the 
string&gt;<wbr>
 
 <p>
 You may find sometimes that you have to type out portions of text
@@ -443,7 +443,7 @@
 <hr width="66%" align="left">
 <a name="UNDERSCORE"><h3><u>Single underscore</u></h3></a>
 <br>
-Macro: <strong>UNDERSCORE</strong> <var>[ &lt;distance below baseline&gt; ] 
&quot;&lt;string&gt;&quot;</var>
+<nobr>Macro: <strong>UNDERSCORE</strong> [ &lt;distance below baseline&gt; ] 
&quot;&lt;string&gt;&quot;<wbr>
 <br>
 <em>*Optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -510,7 +510,7 @@
 <hr width="66%" align="left">
 <a name="UNDERSCORE2"><h3><u>Double underscore</u></h3></a>
 <br>
-Macro: <strong>UNDERSCORE2</strong> <var>[ &lt;distance below baseline&gt; [ 
&lt;distance between rules&gt; ] ] &quot;&lt;string&gt;&quot;</var>
+<nobr>Macro: <strong>UNDERSCORE2</strong> [ &lt;distance below baseline&gt; [ 
&lt;distance between rules&gt; ] ] &quot;&lt;string&gt;&quot;<wbr>
 <br>
 <em>*Optional arguments require a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -554,7 +554,7 @@
 <hr width="66%" align="left">
 <a name="UNDERLINE"><h3><u>Underline text -- Courier font only!</u></h3></a>
 <br>
-Macro: <strong>UNDERLINE</strong> <var>toggle</var>
+<nobr>Macro: <strong>UNDERLINE</strong> toggle<wbr>
 
 <p>
 If your font is Courier, or you're using the document processing macro
@@ -632,7 +632,7 @@
 <hr width="66%" align="left">
 <a name="PAD"><h3><u>Insert space into lines</u></h3></a>
 <br>
-Macro: <strong>PAD</strong> <var>&quot;&lt;string with pad markers 
inserted&gt;&quot; [NOBREAK]</var>
+<nobr>Macro: <strong>PAD</strong> &quot;&lt;string with pad markers 
inserted&gt;&quot; [NOBREAK]<wbr>
 
 <p>
 With <strong>PAD</strong>, you can insert unspecified amounts of
@@ -756,7 +756,7 @@
 <hr width="66%" align="left">
 <a name="PAD_MARKER"><h3><u>Change/set the marker used with PAD</u></h3></a>
 <br>
-Macro: <strong>PAD_MARKER</strong> <var>&lt;character to use as the pad 
marker&gt;</var>
+<nobr>Macro: <strong>PAD_MARKER</strong> &lt;character to use as the pad 
marker&gt;<wbr>
 
 <p>
 If you need to change <strong>mom</strong>'s default pad marker
@@ -831,7 +831,7 @@
 <hr width="66%" align="left">
 <a name="LEADER_CHARACTER"><h3><u>Change/set the leader character</u></h3></a>
 <br>
-Macro: <strong>LEADER_CHARACTER</strong> <var>&lt;character&gt;</var>
+<nobr>Macro: <strong>LEADER_CHARACTER</strong> &lt;character&gt;<wbr>
 
 <p>
 <strong>LEADER_CHARACTER</strong> takes one argument: a single
@@ -853,7 +853,7 @@
 <hr width="66%" align="left">
 <a name="DROPCAP"><h3><u>Drop caps</u></h3></a>
 <br>
-Macro: <strong>DROPCAP</strong> <var>&lt;dropcap letter&gt; &lt;number of 
lines to drop&gt; [ COND &lt;percentage&gt; | EXT &lt;percentage&gt; ]</var>
+<nobr>Macro: <strong>DROPCAP</strong> &lt;dropcap letter&gt; &lt;number of 
lines to drop&gt; [ COND &lt;percentage&gt; | EXT &lt;percentage&gt; ]<wbr>
 
 <p>
 The first two arguments to <strong>DROPCAP</strong> are the letter you
Index: groff/contrib/mom/momdoc/headfootpage.html
diff -u groff/contrib/mom/momdoc/headfootpage.html:1.8 
groff/contrib/mom/momdoc/headfootpage.html:1.9
--- groff/contrib/mom/momdoc/headfootpage.html:1.8      Fri Jun  4 06:43:08 2004
+++ groff/contrib/mom/momdoc/headfootpage.html  Sat May 14 07:07:13 2005
@@ -293,7 +293,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HEADERS"></a>
-Macro: <strong>HEADERS</strong> <var>toggle</var>
+<nobr>Macro: <strong>HEADERS</strong> toggle<wbr>
 
 <p>
 <a href="definitions.html#TERMS_HEADER">Page headers</a>
@@ -332,7 +332,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="FOOTERS"></a>
-Macro: <strong>FOOTERS</strong> <var>toggle</var>
+<nobr>Macro: <strong>FOOTERS</strong> toggle<wbr>
 
 <p>
 <a href="definitions.html#TERMS_FOOTER">Page footers</a>
@@ -363,7 +363,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="FOOTER_ON_FIRST_PAGE"></a>
-Macro: <strong>FOOTER_ON_FIRST_PAGE</strong> <var>toggle</var>
+<nobr>Macro: <strong>FOOTER_ON_FIRST_PAGE</strong> toggle<wbr>
 
 <p>
 If you invoke
@@ -445,9 +445,9 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_RECTOVERSO"></a>
-Macro: <strong>HEADER_RECTO</strong> <var>LEFT | CENTER | RIGHT 
&quot;&lt;header recto string&gt;&quot;</var>
+<nobr>Macro: <strong>HEADER_RECTO</strong> LEFT | CENTER | RIGHT 
&quot;&lt;header recto string&gt;&quot;<wbr>
 <br>
-Macro: <strong>HEADER_VERSO</strong> <var>LEFT | CENTER | RIGHT 
&quot;&lt;header verso string&gt;&quot;</var>
+<nobr>Macro: <strong>HEADER_VERSO</strong> LEFT | CENTER | RIGHT 
&quot;&lt;header verso string&gt;&quot;<wbr>
 <br>
 
 <p>
@@ -620,15 +620,15 @@
 <a name="HDRFTR_STRINGS"><h3><u>Header/footer strings</u></h3></a>
 <p>
 <a name="HDRFTR_LEFT">
-       Macro: <strong>HEADER_LEFT</strong> <var>&quot;&lt;text of header 
left&gt;&quot; | #</var>
+       <nobr>Macro: <strong>HEADER_LEFT</strong> &quot;&lt;text of header 
left&gt;&quot; | #<wbr>
 </a>
 <br>
 <a name="HDRFTR_CENTER">
-       Macro: <strong>HEADER_CENTER</strong> <var>&quot;&lt;text of header 
centre&gt;&quot; | #</var>
+       <nobr>Macro: <strong>HEADER_CENTER</strong> &quot;&lt;text of header 
centre&gt;&quot; | #<wbr>
 </a>
 <br>
 <a name="HDRFTR_RIGHT">
-       Macro: <strong>HEADER_RIGHT</strong> <var>&quot;&lt;text of header 
right&gt;&quot; | #</var>
+       <nobr>Macro: <strong>HEADER_RIGHT</strong> &quot;&lt;text of header 
right&gt;&quot; | #<wbr>
 </a>
 
 <p>
@@ -653,7 +653,7 @@
 
 <a name="HDRFTR_CENTER_PAD"><h3><u>*Padding the header/footer centre 
string</u></h3></a>
 <p>
-Macro: <strong>HEADER_CENTER_PAD</strong> <var>LEFT | RIGHT &lt;amount of 
space by which to pad centre string left or right&gt;</var>
+<nobr>Macro: <strong>HEADER_CENTER_PAD</strong> LEFT | RIGHT &lt;amount of 
space by which to pad centre string left or right&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 <p>
@@ -862,7 +862,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="HDRFTR_GLOBAL_FAMILY">
-       Macro: <strong>HEADER_FAMILY</strong> <var>&lt;family&gt;</var>
+       <nobr>Macro: <strong>HEADER_FAMILY</strong> &lt;family&gt;<wbr>
 </a>
 
 <p>
@@ -881,7 +881,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="HDRFTR_GLOBAL_SIZE">
-       Macro: <strong>HEADER_SIZE</strong> <var>&lt;+|-number of 
points&gt;</var>
+       <nobr>Macro: <strong>HEADER_SIZE</strong> &lt;+|-number of 
points&gt;<wbr>
        <br>
        <em>*Argument is relative to the point size of type in paragraphs</em>
 </a>
@@ -950,7 +950,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="HDRFTR_COLOR">
-       Macro: <strong>HEADER_COLOR</strong> <var>&lt;colorname&gt;</var>
+       <nobr>Macro: <strong>HEADER_COLOR</strong> &lt;colorname&gt;<wbr>
 </a>
 
 <p>
@@ -992,7 +992,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="_FAMILY">
-       Macro: <strong>HEADER_&lt;POSITION&gt;_FAMILY</strong> 
<var>&lt;family&gt;</var>
+       <nobr>Macro: <strong>HEADER_&lt;POSITION&gt;_FAMILY</strong> 
&lt;family&gt;<wbr>
 </a>
 <p>
 Use <strong>HEADER_&lt;POSITION&gt;_FAMILY</strong> to change the
@@ -1009,7 +1009,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="_FONT">
-       Macro: <strong>HEADER_&lt;POSITION&gt;_FONT</strong> 
<var>&lt;font&gt;</var>
+       <nobr>Macro: <strong>HEADER_&lt;POSITION&gt;_FONT</strong> 
&lt;font&gt;<wbr>
 </a>
 <p>
 Use <strong>HEADER_&lt;POSITION&gt;_FONT</strong> to change the
@@ -1026,7 +1026,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="_SIZE">
-       Macro: <strong>HEADER_&lt;POSITION&gt;_SIZE</strong> <var>&lt;+|-number 
of points&gt;</var>
+       <nobr>Macro: <strong>HEADER_&lt;POSITION&gt;_SIZE</strong> 
&lt;+|-number of points&gt;<wbr>
 </a>
 <p>
 Use <strong>HEADER_&lt;POSITION&gt;_SIZE</strong> to change the size of any
@@ -1043,7 +1043,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="_CAPS">
-       Macro: <strong>HEADER_&lt;POSITION&gt;_CAPS</strong> <var>toggle</var>
+       <nobr>Macro: <strong>HEADER_&lt;POSITION&gt;_CAPS</strong> toggle<wbr>
 </a>
 <p>
 <strong>HEADER_&lt;POSITION&gt;_CAPS</strong> is a
@@ -1068,7 +1068,7 @@
 <hr width="33%" align="left">
 <p>
 <a name="_COLOR">
-       Macro: <strong>HEADER_&lt;POSITION&gt;_COLOR</strong> 
<var>&lt;colorname&gt;</var>
+       <nobr>Macro: <strong>HEADER_&lt;POSITION&gt;_COLOR</strong> 
&lt;colorname&gt;<wbr>
 </a>
 <p>
 <strong>HEADER_&lt;POSITION&gt;_COLOR</strong> allows you to set a
@@ -1127,7 +1127,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_MARGIN"></a>
-Macro: <strong>HEADER_MARGIN</strong> <var>&lt;distance to baseline of 
header&gt;</var>
+<nobr>Macro: <strong>HEADER_MARGIN</strong> &lt;distance to baseline of 
header&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -1227,7 +1227,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_GAP"></a>
-Macro: <strong>HEADER_GAP</strong> <var>&lt;distance from header to start of 
running text&gt;</var>
+<nobr>Macro: <strong>HEADER_GAP</strong> &lt;distance from header to start of 
running text&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -1319,7 +1319,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_RULE"></a>
-Macro: <strong>HEADER_RULE</strong> <var>toggle</var>
+<nobr>Macro: <strong>HEADER_RULE</strong> toggle<wbr>
 
 <p>
 By default, <strong>mom</strong> prints a header separator rule
@@ -1345,7 +1345,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_RULE_GAP"></a>
-Macro: <strong>HEADER_RULE_GAP</strong> <var>distance of rule beneath 
header</var>
+<nobr>Macro: <strong>HEADER_RULE_GAP</strong> distance of rule beneath 
header<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -1396,7 +1396,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="HDRFTR_RULE_COLOR"></a>
-Macro: <strong>HEADER_RULE_COLOR</strong> <var>&lt;colorname&gt;</var>
+<nobr>Macro: <strong>HEADER_RULE_COLOR</strong> &lt;colorname&gt;<wbr>
 
 <p>
 If you wish to change the colour of the header rule, invoke
@@ -1450,7 +1450,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PAGINATE"></a>
-Macro: <strong>PAGINATE</strong> <var>toggle</var>
+<nobr>Macro: <strong>PAGINATE</strong> toggle<wbr>
 <br>
 Alias: <strong>PAGINATION</strong>
 
@@ -1473,7 +1473,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PAGENUMBER"></a>
-Macro: <strong>PAGENUMBER</strong> <var>&lt;number&gt;</var>
+<nobr>Macro: <strong>PAGENUMBER</strong> &lt;number&gt;<wbr>
 
 <p>
 As is to be expected, pagination of documents begins at page 1.
@@ -1493,7 +1493,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PAGENUM_STYLE"></a>
-Macro: <strong>PAGENUM_STYLE</strong> <var>DIGIT | ROMAN | roman | ALPHA | 
alpha</var>
+<nobr>Macro: <strong>PAGENUM_STYLE</strong> DIGIT | ROMAN | roman | ALPHA | 
alpha<wbr>
 
 <p>
 <strong>PAGENUM_STYLE</strong> lets you tell
@@ -1513,7 +1513,7 @@
 <hr width="66%" align="left">
 <p>
 <a name="PAGENUM_ON_FIRST_PAGE"></a>
-Macro: <strong>PAGENUM_ON_FIRST_PAGE</strong> <var>toggle</var>
+<nobr>Macro: <strong>PAGENUM_ON_FIRST_PAGE</strong> toggle<wbr>
 
 <p>
 This macro applies only if you've enabled
@@ -1592,7 +1592,7 @@
 
 <a name="PAGENUM_POS"><h3><u>2. Page number position</u></h3></a>
 <p>
-Macro: <strong>PAGENUM_POS</strong> <var>TOP | BOTTOM&nbsp;&nbsp;LEFT | CENTER 
| RIGHT</var>
+<nobr>Macro: <strong>PAGENUM_POS</strong> TOP | BOTTOM&nbsp;&nbsp;LEFT | 
CENTER | RIGHT<wbr>
 
 <p>
 Use <strong>PAGENUM_POS</strong> to change the default position of
Index: groff/contrib/mom/momdoc/inlines.html
diff -u groff/contrib/mom/momdoc/inlines.html:1.13 
groff/contrib/mom/momdoc/inlines.html:1.14
--- groff/contrib/mom/momdoc/inlines.html:1.13  Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/inlines.html       Sat May 14 07:07:13 2005
@@ -409,7 +409,7 @@
 by using the inline escape, <strong>\*[B]</strong>.  Simply
 attach the escape to the end of any line.  Using the example
 given in the document entry for <strong>EL</strong>, you'd use
-<strong>\*[B}</strong> like this:
+<strong>\*[B]</strong> like this:
 
 <p>
 <pre>
@@ -476,7 +476,7 @@
 
 The above draws a rule the full measure of the 6-pica line length.
 <p>
-<strong>\*[$RULE]</strong> should appear on a line by itself.  In
+<strong>\*[RULE]</strong> should appear on a line by itself.  In
 <a href="definitions.html#TERMS_FILLED">fill modes</a>,
 (i.e.
 <a href="typesetting.html#QUAD">QUAD</a>
@@ -494,7 +494,7 @@
 <a href="typesetting.html#LRC">CENTER</a>),
 the <strong>.BR</strong> is not required.
 <p>
-Please note that <strong>\*[$RULE]</strong> draws the rule to the
+Please note that <strong>\*[RULE]</strong> draws the rule to the
 full measure, hence it <em>cannot</em> be used to fill the remainder
 of a partial line with a rule in this way:
 <p>
Index: groff/contrib/mom/momdoc/intro.html
diff -u groff/contrib/mom/momdoc/intro.html:1.9 
groff/contrib/mom/momdoc/intro.html:1.10
--- groff/contrib/mom/momdoc/intro.html:1.9     Mon Sep 13 15:57:39 2004
+++ groff/contrib/mom/momdoc/intro.html Sat May 14 07:07:13 2005
@@ -298,9 +298,9 @@
 The concise descriptions of macros in this documentation typically
 look like this:
 <blockquote>
-Macro: <strong>NAME</strong> <var>arguments</var>
+Macro: <strong>NAME</strong> <nobr>arguments<wbr>
 </blockquote>
-<var>arguments</var> lists the macro's arguments using conventions that
+<nobr>arguments<wbr> lists the macro's arguments using conventions that
 should be familiar to anyone who has ever read a manpage.  Briefly:
 <p>
 <ol>
@@ -329,14 +329,14 @@
 Since these macros toggle things on and off, the argument list
 simply reads
 <blockquote>
-<var>toggle</var>
+<nobr>toggle<wbr>
 </blockquote>
 <br>
 <hr>
 
 <h3>Example 1: an argument requiring double-quotes</h3>
 <blockquote>
-Macro: <strong>TITLE</strong> <var>&quot;&lt;title of document&gt;&quot;</var> 
+Macro: <strong>TITLE</strong> <nobr>&quot;&lt;title of document&gt;&quot;<wbr> 
 </blockquote>
 <p>
 The required argument to <strong>TITLE</strong> is the title of your
@@ -349,7 +349,7 @@
 
 <h3>Example 2: a macro with required and optional arguments</h3>
 <blockquote>
-Macro: <strong>TAB_SET</strong> <var>&lt;tab #&gt;  &lt;indent&gt;  
&lt;length&gt;  [ L | R | C | J [ QUAD ] ]</var> 
+Macro: <strong>TAB_SET</strong> <nobr>&lt;tab #&gt;  &lt;indent&gt;  
&lt;length&gt;  [ L | R | C | J [ QUAD ] ]<wbr> 
 </blockquote>
 <p>
 The first required argument is a number that identifies the tab (say,
@@ -377,7 +377,7 @@
 <a name="TOGGLE_EXAMPLE"></a>
 <h3>Example 3: a sample toggle macro:</h3>
 <blockquote>
-Macro: <strong>QUOTE</strong> <var>toggle</var> 
+Macro: <strong>QUOTE</strong> <nobr>toggle<wbr> 
 </blockquote>
 <p>
 <strong>QUOTE</strong> begins a section of quoted text in a document
Index: groff/contrib/mom/momdoc/letters.html
diff -u groff/contrib/mom/momdoc/letters.html:1.6 
groff/contrib/mom/momdoc/letters.html:1.7
--- groff/contrib/mom/momdoc/letters.html:1.6   Mon Aug  9 09:07:48 2004
+++ groff/contrib/mom/momdoc/letters.html       Sat May 14 07:07:13 2005
@@ -8,8 +8,8 @@
 
 <!====================================================================>
 
-<a href="typemacdoc.html#TOP">Next</a>&nbsp;&nbsp;
-<a href="cover.html#TOP">Prev</a>&nbsp;&nbsp;
+<a href="macrolist.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="refer.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 <p>
 
@@ -455,8 +455,8 @@
 
 <p>
 <hr>
-<a href="typemacdoc.html#TOP">Next</a>&nbsp;&nbsp;
-<a href="cover.html#TOP">Prev</a>&nbsp;&nbsp;
+<a href="macrolist.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="refer.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="#TOP">Top</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 </body>
Index: groff/contrib/mom/momdoc/macrolist.html
diff -u groff/contrib/mom/momdoc/macrolist.html:1.3 
groff/contrib/mom/momdoc/macrolist.html:1.4
--- groff/contrib/mom/momdoc/macrolist.html:1.3 Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/macrolist.html     Sat May 14 07:07:13 2005
@@ -114,6 +114,26 @@
 </tr>
 <tr>
        <td>&nbsp;</td>
+       <td><a href="#18">Lists</a></td>
+</tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a href="#51">Margin notes</a></td>
+</tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a href="#52">Line numbering</a></td>
+</tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a href="#54">References</a></td>
+</tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a href="#55">Bibliographies</a></td>
+</tr>
+<tr>
+       <td>&nbsp;</td>
        <td><a href="#41">Table of contents</a></td>
 </tr>
 <tr>
@@ -1099,9 +1119,14 @@
 </tr>
 <tr>
        <td>&nbsp;</td>
-       <td><a href="docelement.html#QUOTE_GENERAL">QUOTE_COLOR</a></td>
+       <td><a href="docelement.html#QUOTE_GENERAL">QUOTE_AUTOLEAD</a></td>
        <td><a 
href="docprocessing.html#UNDERLINE_QUOTES">UNDERLINE_QUOTES</a></td>
 </tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a href="docelement.html#QUOTE_GENERAL">QUOTE_COLOR</a></td>
+       <td>&nbsp;</td>
+</tr>
 </table>
 <p align="center">
 *Note that the use of QUOTE_INDENT sets the indent for both QUOTE
@@ -1135,9 +1160,13 @@
 </tr>
 <tr>
        <td>&nbsp;</td>
-       <td><a 
href="docelement.html#BLOCKQUOTE_GENERAL">BLOCKQUOTE_COLOR</a></td>
+       <td><a 
href="docelement.html#BLOCKQUOTE_GENERAL">BLOCKQUOTE_AUTOLEAD</a></td>
        <td>&nbsp;</td>
 </tr>
+<tr>
+       <td>&nbsp;</td>
+       <td><a 
href="docelement.html#BLOCKQUOTE_GENERAL">BLOCKQUOTE_COLOR</a></td>
+       <td>&nbsp;</td>
 </tr>
 </table>
 <p align="center">
@@ -1146,7 +1175,7 @@
 
 <a name="37"><h3 align="center">Author linebreaks</a>
 <br>
-(also called "scene breaks")
+(also called "scene" or "section" breaks)
 </h3>
 
 <table align="center" valign="center" border=1 cellpadding="10">
@@ -1210,6 +1239,11 @@
        <td>&nbsp;</td>
        <td><a 
href="docelement.html#FOOTNOTE_RULE_LENGTH">FOOTNOTE_RULE_LENGTH</a></td>
 </tr>
+<tr>
+       <td>&nbsp;</td>
+       <td>&nbsp;</td>
+       <td><a href="docelement.html#FOOTNOTES_RUN_ON">FOOTNOTES_RUN_ON</a></td>
+</tr>
 </table>
 <p align="center">
 *Indenting of footnotes is handled by arguments passed to FOOTNOTE.
@@ -1337,6 +1371,82 @@
 <br>
 **Applies to PRINTSTYLE TYPEWRITE only
 
+<a name="51"><h3 align="center">Margin notes</h3></a>
+
+<table align="center" valign="center" border=1 cellpadding="10">
+<tr>
+       <th>Initialize</th>
+       <th>Start</th>
+</tr>
+<tr>
+       <td align="center"><a href="docelement.html#MN_INIT">MN_INIT</a></td>
+       <td align="center"><a href="docelement.html#MN">MN</a></td>
+</tr>
+</table>
+
+<a name="52"><h3 align="center">Line numbering</h3></a>
+
+<table align="center" valign="center" border=1 cellpadding="10">
+<tr>
+       <th>Text</th>
+       <th>Quotes</th>
+       <th>Blockquotes</th>
+</tr>
+<tr>
+       <td align="center"><a 
href="docelement.html#NUMBER_LINES">NUMBER_LINES</a></td>
+       <td align="center"><a 
href="docelement.html#NUMBER_QUOTE_LINES">NUMBER_QUOTE_LINES</a></td>
+       <td align="center"><a 
href="docelement.html#NUMBER_BLOCKQUOTE_LINES">NUMBER_BLOCKQUOTE_LINES</a></td>
+</tr>
+</table>
+
+<a name="54"><h3 align="center">References</h3></a>
+
+<table align="center" valign="center" border=1 cellpadding="10">
+<tr>
+       <th>Begin/end refs</th>
+       <th>Footnote refs</th>
+       <th>Endnote refs</th>
+       <th>Embedded refs</th>
+</tr>
+<tr>
+       <td align="center"><a href="refer.html#REF">REF</a></td>
+       <td align="center"><a 
href="refer.html#FOOTNOTE_REFS">FOOTNOTE_REFS</a></td>
+       <td align="center"><a 
href="refer.html#ENDNOTE_REFS">ENDNOTE_REFS</a></td>
+       <td align="center"><a href="refer.html#BRACKET_REFS">REF( / 
REF)</a></td>
+</tr>
+<tr>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center"><a href="refer.html#BRACKET_REFS">REF( / 
REF)</a></td>
+</tr>
+<tr>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center"><a href="refer.html#BRACKET_REFS">REF[ / 
REF]</a></td>
+</tr>
+<tr>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center">&nbsp;</td>
+       <td align="center"><a href="refer.html#BRACKET_REFS">REF{ / 
REF}</a></td>
+</tr>
+</table>
+
+<a name="55"><h3 align="center">Bibliographies</h3></a>
+
+<table align="center" valign="center" border=1 cellpadding="10">
+<tr>
+       <th>Start bibliography page</th>
+       <th>Bibliography type</th>
+</tr>
+<tr>
+       <td align="center"><a 
href="refer.html#BIBLIOGRAPHY">BIBLIOGRAPHY</a></td>
+       <td align="center"><a 
href="refer.html#BIBLIOGRAPHY_TYPE">BIBLIOGRAPHY_TYPE</a></td>
+</tr>
+</table>
+
 <a name="41"><h3 align="center">Table of contents</h3></a>
 
 <table align="center" valign="center" border=1 cellpadding="10">
@@ -1661,8 +1771,10 @@
 <table align="center" valign="center" border=1 cellpadding="10">
 <tr>
        <th>Output a blank page</th>
-       <th>Collate multiple documents</th>
-    <th>Get leading back on track</th>
+       <th>Collate multiple
+        <br>documents</th>
+    <th>Get leading back
+        <br>on track</th>
 </tr>
 <tr align="center">
        <td><a href="docelement.html#BLANK_PAGE">BLANKPAGE</a></td>
Index: groff/contrib/mom/momdoc/reserved.html
diff -u groff/contrib/mom/momdoc/reserved.html:1.18 
groff/contrib/mom/momdoc/reserved.html:1.19
--- groff/contrib/mom/momdoc/reserved.html:1.18 Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/reserved.html      Sat May 14 07:07:13 2005
@@ -272,6 +272,8 @@
 #REMOVE                 Used in LIST OFF cleanup
 #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
+                        #NEXT_LN? (toggle)
 #RESTORE_PT_SIZE        Stores current point size (in units) prior
                         to underscore
 #R_INDENT               Value of right indent
@@ -491,42 +493,65 @@
 
 Document style
 --------------
-COPYSTYLE   Output style (DRAFT or FINAL)
-DEFAULTS    In START, sets defaults
-DOCTYPE     Kind of doc (DEFAULT, CHAPTER, NAMED, LETTER)
-PAGENUMBER  Page number that appears on 1st page of doc
-PAPER       Paper size (LETTER, LEGAL, A4)
-PRINTSTYLE  Print style (TYPEWRITE or TYPESET)
-
-Document tags
--------------
-ADD_SPACE       Special macro to add space to the top of a pages after
-                page 1; must be preceded by NEWPAGE
-BLOCKQUOTE      Block-indented, quoted text
-COL_BREAK       Breaks and spreads line before invocation; moves to
-                next column on page or 1st col of next page.  An alias
-                of COL_NEXT.
-COL_NEXT        Moves to next column on page or 1st col of next page
-ENDNOTE         Endnote
-ENDNOTES        Output endnotes
-EPIGRAPH        Epigraph before 1st para 
-FINIS           Prints --END--
-FOOTNOTE        Collects footnotes in text for printing at bottom of page
-HEAD            Section title (main heads)
-ITEM            Begin a list item
-LINEBREAK       Break between narrative sections
-LIST            Initialize a list
-PAD_LIST_DIGITS Leave space for two-numeral digit enumerators in a list
-PARAHEAD        Paragraph head
-PP              Paragraph
-QUOTE           Poetic or line for line quotes
-RESET_LIST      Reset digit or alpha list enumerator
-SHIFT_LIST      Move a list over to the right
-START           Prints info collected with doc info macros
-SUBHEAD         Subheads
+COPYSTYLE     Output style (DRAFT or FINAL)
+DEFAULTS      In START, sets defaults
+DOCTYPE       Kind of doc (DEFAULT, CHAPTER, NAMED, LETTER)
+PAGENUMBER    Page number that appears on 1st page of doc
+PAPER         Paper size (LETTER, LEGAL, A4)
+PRINTSTYLE    Print style (TYPEWRITE or TYPESET)
+NUMBER_LINES  Number output lines in the left margin
+
+Document tags and macros
+------------------------
+ADD_SPACE               Special macro to add space to the top of a pages after
+                        page 1; must be preceded by NEWPAGE
+BIBLIOGRAPHY            Begin a bibliography page
+BIBLIOGRAPHY_TYPE       LIST or PLAIN
+BLOCKQUOTE              Block-indented, quoted text
+COL_BREAK               Breaks and spreads line before invocation; moves to
+                        next column on page or 1st col of next page.  An alias
+                        of COL_NEXT.
+COL_NEXT                Moves to next column on page or 1st col of next page
+ENDNOTE                 Endnote
+ENDNOTE_REFS            Send REFs to endnotes
+ENDNOTES                Output endnotes
+EPIGRAPH                Epigraph before 1st para 
+FINIS                   Prints --END--
+FOOTNOTE                Collects footnotes in text for printing at bottom of 
page
+FOOTNOTE_REFS           Send REFs to footnotes
+HEAD                    Section title (main heads)
+HYPHENATE_REFS          Turn on/off hyphenation of REF references
+ITEM                    Begin a list item
+LINEBREAK               Break between narrative sections
+LIST                    Initialize a list
+MN                      Margin note
+MN_INIT                 Initialize parameters for margin notes
+NUMBER_LINES            Number text lines
+NUMBER_BLOCKQUOTE_LINES Number blockquote lines
+NUMBER_QUOTE_LINES      Number quote lines
+PAD_LIST_DIGITS         Leave space for two-numeral digit enumerators
+                        in a list
+PARAHEAD                Paragraph head
+PP                      Paragraph
+QUOTE                   Poetic or line for line quotes
+REF                     Wrapper around FOOTNOTE or ENDNOTE, depending
+                        on FOOTNOTE_REFS or ENDNOTE_REFS
+REF(                    Begin embedded reference, parens
+REF)                    End embedded reference, parens
+REF[                    Begin embedded reference, square brackets
+REF]                    End embedded reference, square brackets
+REF{                    Begin embedded reference, braces
+REF}                    End embedded reference, braces
+REF_INDENT              Amount of 2nd line indent of references for
+                        footnote, endnote or bibliography refs
+RESET_LIST              Reset digit or alpha list enumerator
+SHIFT_LIST              Move a list over to the right
+START                   Sets doc defaults and prints info collected
+                        with doc info macros
+SUBHEAD                 Subheads
 
 Headers/footers
---------------
+---------------
 BREAK_QUOTE          Manually break a footnoted quote that crosses
                      a page/column
 DO_FOOTER            Prints footer (after footnote processing, if any)
@@ -580,34 +605,6 @@
                          doc cover material
 DOC_COVER_LEAD           Lead in/decrease for doc cover pages
 
-***Endnotes***
-
-ENDNOTE_LEAD                Leading for endnotes page
-ENDNOTE_PARA_INDENT         First line indent of paras in multi-para
-                            endnotes
-ENDNOTE_PARA_SPACE          Whether to space paras in multi-para endnotes
-ENDNOTE_PT_SIZE             Base point size for endnotes page
-ENDNOTE_STRING              Endnotes page head
-ENDNOTE_STRING_CAPS         Capitalize the endnotes string
-ENDNOTE_STRING_UNDERSCORE   Underscoring of endnotes page head
-ENDNOTE_TITLE               Endnotes identifying title
-ENDNOTE_TITLE_UNDERSCORE    Underscoring of endnotes identifying title
-ENDNOTE_NUMBERS_ALIGN_RIGHT Hang endnote numbers and align right
-ENDNOTE_NUMBERS_ALIGN_LEFT  Don't hang endnote numbers and align left
-ENDNOTES_ALLOWS_HEADERS     Page headers on endnotes pages? (toggle)
-ENDNOTES_FIRST_PAGENUMBER   Page number to appear on page 1 of endnotes
-                            pages
-ENDNOTES_HDRFTR_CENTER      Print header/footer centre string on endnotes
-                            pages?
-ENDNOTES_HEADER_CENTER      Print header centre string on endnotes pages?
-ENDNOTES_FOOTER_CENTER      Print footer centre string on endnotes pages?
-ENDNOTES_NO_COLUMNS         Turn columnar mode off for endnotes pages
-ENDNOTES_NO_FIRST_PAGENUM   Don't print a pagenumber on page 1 of
-                            endnotes.
-ENDNOTES_PAGENUM_STYLE      Set numbering style for endnotes pages page
-                            numbers
-SINGLESPACE_ENDNOTES        Single space TYPEWRITE endnotes
-
 ***Epigraphs and finis***
 
 EPIGRAPH_AUTOLEAD        Autolead value for epigraphs
@@ -617,16 +614,75 @@
 
 ***Footnotes***
 
-FOOTNOTE_AUTOLEAD        Autolead to use in footnotes
-FOOTNOTE_MARKERS         Turns footnote markers on or off
-FOOTNOTE_MARKER_STYLE    STAR or NUMBER; default=STAR
-FOOTNOTE_RULE_ADJ        # of points to raise footnote rule from its
-                         baseline
-FOOTNOTE_RULE_LENGTH     Length of footnote separator rule
-FOOTNOTE_RULE            Turns printing of fn separator rule on or off;
-                         default is on
-RESET_FOOTNOTE_NUMBER    Reset fn# to 1, or, if arg PAGE, reset
-                         automatically to 1 on every page
+FOOTNOTE_AUTOLEAD             Autolead to use in footnotes
+FOOTNOTE_LINENUMBER_BRACKETS  Brackets for footnote linenumbers
+FOOTNOTE_LINENUMBER_SEPARATOR Separator for footnote linenumbers
+FOOTNOTE_MARKERS              Turns footnote markers on or off
+FOOTNOTE_MARKER_STYLE         STAR or NUMBER; default=STAR
+FOOTNOTE_RULE_ADJ             # of points to raise footnote rule from its
+                              baseline
+FOOTNOTE_RULE_LENGTH          Length of footnote separator rule
+FOOTNOTE_RULE                 Turns printing of fn separator rule on or off;
+                              default is on
+FOOTNOTE_SPACING              Post footnote item spacing
+FOOTNOTES_RUN_ON              Run footnotes on (line numbering mode only)
+RESET_FOOTNOTE_NUMBER         Reset fn# to 1, or, if arg PAGE, reset
+                              automatically to 1 on every page
+RUNON_WARNING                 Utility macro; warns if FOOTNOTES_RUN_ON
+                              was called when fn marker style is STAR or NUMBER
+
+***Endnotes***
+
+ENDNOTE_LEAD                 Leading for endnotes page
+ENDNOTE_LINENUMBER_BRACKETS  Brackets around line numbers identifying
+                             endnotes and text
+ENDNOTE_LINENUMBER_GAP       Amount of space to leave between line
+ENDNOTE_LINENUMBER_SEPARATOR Separator between line numbers identifying
+                             endnotes and the endnote item text
+                             endnotes and text
+ENDNOTE_MARKER_STYLE         NUMBER or LINE
+ENDNOTE_NUMBERS_ALIGN_RIGHT  Hang endnote numbers and align right
+ENDNOTE_NUMBERS_ALIGN_LEFT   Don't hang endnote numbers and align left
+ENDNOTE_PARA_INDENT          First line indent of paras in multi-para
+                             endnotes
+ENDNOTE_PARA_SPACE           Whether to space paras in multi-para endnotes
+ENDNOTE_PT_SIZE              Base point size for endnotes page
+ENDNOTE_STRING               Endnotes page head
+ENDNOTE_STRING_CAPS          Capitalize the endnotes string
+ENDNOTE_STRING_UNDERSCORE    Underscoring of endnotes page head
+ENDNOTE_TITLE                Endnotes identifying title
+ENDNOTE_TITLE_SPACE          Distance from top of page to endnotest title
+ENDNOTE_TITLE_UNDERSCORE     Underscoring of endnotes identifying title
+ENDNOTES_ALLOWS_HEADERS      Page headers on endnotes pages? (toggle)
+ENDNOTES_FIRST_PAGENUMBER    Page number to appear on page 1 of endnotes
+                             pages
+ENDNOTES_HDRFTR_CENTER       Print header/footer centre string on endnotes
+                             pages?
+ENDNOTES_HEADER_CENTER       Print header centre string on endnotes pages?
+ENDNOTES_FOOTER_CENTER       Print footer centre string on endnotes pages?
+ENDNOTES_NO_COLUMNS          Turn columnar mode off for endnotes pages
+ENDNOTES_NO_FIRST_PAGENUM    Don't print a pagenumber on page 1 of
+                             endnotes.
+ENDNOTES_PAGENUM_STYLE       Set numbering style for endnotes pages page
+                             numbers
+SINGLESPACE_ENDNOTES         Single space TYPEWRITE endnotes
+
+***Bibliographies***
+
+BIBLIOGRAPHY_ALLOWS_HEADERS    Allow headers on bib pages
+BIBLIOGRAPHY_FIRST_PAGENUMBER  Starting page number for bibliographies
+BIBLIOGRAPHY_HDRFTR_CENTER     Header/footer center string for bib pages
+BIBLIOGRAPHY_LEAD              Base lead of bib pages
+BIBLIOGRAPHY_NO_COLUMNS        De-columnize bibliographies
+BIBLIOGRAPHY_NO_FIRST_PAGENUM  Don't print a page number on the first
+                               page of bibliographies
+BIBLIOGRAPHY_PAGENUM_STYLE     Format for bib pages page numbering
+BIBLIOGRAPHY_PT_SIZE           Base point size for bib pages
+BIBLIOGRAPHY_SPACING           Post bib entry space
+BIBLIOGRAPHY_STRING            String for bib title
+BIBLIOGRAPHY_STRING_CAPS       Capitalize bib title string
+BIBLIOGRAPHY_STRING_UNDERSCORE Underscore bib title string
+SINGLESPACE_BIBLIOGRAPHY       Singlespace bibs if PRINTSTYLE TYPEWRITE
 
 ***Headers and footers***
 
@@ -705,6 +761,12 @@
 PARA_SPACE               Put a line space before paras
 PP_FONT                  Overall doc font
 
+***Quotes***
+
+Q_FITS                  Utility macro for DO_QUOTE
+Q_NOFIT                 Utility macro for DO_QUOTE
+QUOTE_AUTOLEAD          Leading of (block)quotes
+
 ***Line/section breaks***
 
 LINEBREAK_CHAR           Linebreak character, iterations and positioning
@@ -825,7 +887,11 @@
                      and after
 FN_OVERFLOW_TRAP     Fixed at B_MARGIN; if footnotes run longer than
                      B_MARGIN, diverts excess into FN_OVERFLOW
+GET_ROMAN_INDENT     Figures out amount of space to reserve
+                     for roman numerals in lists
 HDRFTR_RULE          Prints rule under header or over footer
+MN_OVERFLOW_TRAP     Trap-invoked macro to collect margin note
+                     overflows
 PRINT_FOOTNOTE_RULE  An alias of PRINT_FOOTNOTE; prints footnote
                      separator rule
 PRINT_HDRFTR         Prints header/footer (trap invoked)
@@ -837,6 +903,9 @@
 PROCESS_FN_IN_DIVER  Processes footnotes gathered in a diversion (called
                      at page/column breaks)
 REMOVE_INDENT        Removes indents set with CHECK_INDENT
+Q_FITS               Handles spacing of quotes when quote fits on the page
+Q_NOFIT              Handles spacing of quotes when quote does not fit on
+                     the page
 QUIT_LISTS           Exit lists cleanly and completely
 SET_LIST_INDENT      Restore indent of a prev. level of list
 SHIM                 Advance to next "legal" baseline
@@ -855,18 +924,21 @@
 
 +++DIVERSIONS+++
 
-B_QUOTE       Block (indented) quote text
-CLOSING       Closing (i.e. Yours truly,)
-EPI_TEXT      Epigraph text
-END_NOTES     Endnotes text
-FN_IN_DIVER   Footnotes gathered from inside a diversion
-FN_OVERFLOW   Excess footnotes when B_MARGIN is reached
-FOOTNOTES     Text of footnotes
-GREETING      Full salutation (e.g. Dear John Smith,)
-LETTERHEAD&lt;n&gt; Date, addresser, addressee or greeting;
-              &lt;n&gt; is from 1 to 4, supplied by #FIELD
-P_QUOTE       Line for line (poetic) quote text
-TOC_ENTRIES   TOC entries
+B_QUOTE           Block (indented) quote text
+CLOSING           Closing (i.e. Yours truly,)
+EPI_TEXT          Epigraph text
+END_NOTES         Endnotes text
+FN_IN_DIVER       Footnotes gathered from inside a diversion
+FN_OVERFLOW       Excess footnotes when B_MARGIN is reached
+FOOTNOTES         Text of footnotes
+GREETING          Full salutation (e.g. Dear John Smith,)
+LETTERHEAD&lt;n&gt;     Date, addresser, addressee or greeting;
+                  &lt;n&gt; is from 1 to 4, supplied by #FIELD
+P_QUOTE           Line for line (poetic) quote text
+RUNON_FOOTNOTES   Special diversion for run-on footnotes
+RUNON_FN_IN_DIVER Special diversion for run-on footnotes inside
+                  (block)quotes
+TOC_ENTRIES       TOC entries
 
 +++NUMBER REGISTERS+++
 
@@ -874,10 +946,15 @@
                            doesn't fall below what should be the
                            correct last printed line of running
                            text
+#ADD_BREAK                 Instructs FOOTNOTEs and ENDNOTEs to add
+                           a break afer processing a footnote if
+                           we're not in fill mode
+#ADJ_BIB_LEAD              Adjust BIB_LEAD? (toggle)
 #ADJ_DOC_LEAD              Adjust DOC_LEAD? (toggle)
 #ADJ_TOC_LEAD              Adjust TOC_LEAD? (toggle)
 #ARG_NUM                   Keeps track of number of args passed to a
                            macro
+#ARGS_TO_LIST              Was LIST passed some args? (toggle)
 #AUTHOR_[n]                Strings passed to AUTHOR
 #AUTHOR_LINES              # of lines of authors in doc header; odd=0
                            even=1
@@ -892,7 +969,29 @@
 #BMARG                     Position of unvarying bottom margin
                            during doc processing; required for
                            collecting footnotes inside diversions
+#BIB_ALLOWS_HEADERS        Put headers on bib pages? (toggle)
+#BIB_ALLOWS_HEADERS_ALL    Put headers on all bib pages? (toggle)
+#BIB_FIRST_PAGE            Tells PRINT_PAGE_NUMBER about bibliography
+                           first page number
+#BIB_FIRST_PN              Starting pagenumber for bibliographies
+#BIB_HDRFTR_CENTER         Put a center string in bib page headers?
+                           (toggle)
+#BIB_LEAD                  Bibliography lead, expressed in points
+#BIB_LIST                  Output bibs in list style? (toggle)
+#BIB_NO_COLS               De-columnize bibliographies? (toggle)
+#BIB_NO_FIRST_PN           Put a page number on the first page of
+                           bibliographies? (toggle)
+#BIB_SINGLESPACE           Single-space TYPEWRITE bibliographies? (toggle)
+#BIB_SPACE                 Post item space for bibliography pages
+#BIB_STRING_CAPS           Capitalize bib title? (toggle)
+#BIB_STRING_UNDERSCORE     Underscore bib title? 0=no; 1=yes; 2=double
+#BIB_PS                    Base point size for bibliography pages expressed
+                           in points
+#BIBLIOGRAPHY              Are we doing a bib page? (toggle)
+#BQ_AUTOLEAD               Register created by BLOCKQUOTE_AUTOLEAD
+#BQ_LEAD                   Leading of blockquotes
 #BQUOTE_COLOR              Colored blockquotes? (toggle)
+#BQUOTE_LN                 Number blockquotes? (toggle)
 #BROKEN_QUOTE              Did we invoke BREAK_QUOTE? (toggle)
 #CAP_HEIGHT_ADJUST         Tallest cap height of strings LEFT, CENTER,
                            and RIGHT in footers; used to place rule
@@ -936,8 +1035,12 @@
 #DIVER_FN                  Register that tells FOOTNOTE whether to
                            "move" or "defer" a footnote collected
                            inside a diversion
+#DEFER_BIB_SPACING         Tells DEFAULTS to do BIBLIOGRAPHY_SPACING
+                           if it was called before START
 #DEFER_PAGINATION          Tells COLLATE to restore pagination (from
                            RESTORE_PAGINATION
+#DELAY_SHIM                Instructs DO_QUOTE to delay SHIM when quote
+                           falls at the top of a page
 #DEPTH_1                   Doc header depth with lead adjustment
                            (#DOCHEADER_LINES * #DOCHEADER_LEAD)
 #DEPTH_2                   Doc header depth without lead adjustment
@@ -987,17 +1090,31 @@
 #DONE_ONCE                 Keeps track of how many times footnotes
                            have been collected inside the same diversion
 #DONT_RULE_ME              Rule this (apparent) first footnote? (toggle)
+#DIVER_LN_OFF              Turn linenumbering off in (block)quotes?
+                           (toggle)
 #DRAFT_WITH_PAGENUM        Are we attaching draft/revision info to page
                            number? (toggle)
 #EM_ADJUST                 Amount to raise \(em at END
 #EN_ALLOWS_HEADERS         Put page headers on endnotes pages? (toggle)
 #EN_ALLOWS_HEADERS_ALL     Put page headers on all endnotes pages?
                            (toggle)
+#EN_BQ_AUTOLEAD            Register created by EN_BLOCKQUOTE_AUTOLEAD
+#EN_BQ_LEAD                Leading of blockquotes on endnotes pages
+#EN_FIGURE_SPACE           Width of \0, for use with formatting endnotes
 #EN_FIRST_PAGE             Tells PRINT_PAGE_NUMBER about endnotes
                            first page number
 #EN_FIRST_PN               Page number that appears on page 1 of
                            endnotes pages.
+#EN_HDRFTR_CENTER          Should we print centre string of
+                           headers/footers on endnotes pages? (toggle)
 #EN_LEAD                   Lead of endnotes
+#EN_LN_BRACKETS            Are we using brackets for line-numbered
+                           endnotes (toggle)
+#EN_LN_SEP                 Are we using a separator for line-numbered
+                           endnotes (toggle)
+#EN_MARK                   \n(ln when \*[EN-MARK] is called
+#EN_MARK_2                 \n(ln when ENDNOTE is called
+#EN_MARKER_STYLE           1=NUMBER; 2=LINE
 #EN_NO_COLS                Do not set endnotes in columns? (toggle)
 #EN_NO_FIRST_PN            Put pagenumber on 1st page of endnotes?
                            (toggle)
@@ -1013,6 +1130,9 @@
                            endnotes
 #EN_PP_SPACE               Space multi-paras in endnotes? (toggle)
 #EN_PS                     ps of endnotes
+#EN_Q_AUTOLEAD             Register created by EN_QUOTE_AUTOLEAD
+#EN_Q_LEAD                 Leading of quotes on endnotes pages
+#EN_REF                    Put REFs in endnotes? (toggle)
 #EN_SINGLESPACE            Single space endnotes pages? (toggle)
 #EN_STRING_CAPS            Should ENDNOTES capitalize the endnotes
                            string? (toggle)
@@ -1024,9 +1144,8 @@
 #END_QUOTE                 For PP=0 indenting; did we just end a quote?
                            (toggle)
 #ENDNOTE                   Are we in an endnote? (toggle)
+#ENDNOTE_REFS              Are REFs going to endnotes? (toggle)
 #ENDNOTES                  Are we in an endnote (for FOOTERs; toggle)
-#EN_HDRFTR_CENTER          Should we print centre string of
-                           headers/footers on endnotes pages? (toggle)
 #EPI_ACTIVE                Are we in an epigraph? (toggle)
 #EPI_COLOR                 Colored epigraphs? (toggle)
 #EPI_DEPTH                 Depth of epigraph from first baseline to
@@ -1078,6 +1197,12 @@
 #FN_L_INDENT               Left indent of INDENT LEFT in footnotes
 #FN_LINES                  Number of lines in fn; used to calculate
                            fn depth
+#FN_LN_BRACKETS            Are footnote linenumber brackets being used?
+                           (toggle)
+#FN_LN_SEP                 Is a footnote linenumber separator being used?
+                           (toggle)
+#FN_MARK                   \n(ln when \*[FN-MARK] is called
+#FN_MARK_2                 \n(nl when FOOTNOTE is called
 #FN_MARKERS                Print footnote markers? (toggle)
 #FN_MARKER_STYLE           1=STAR; 2=NUMBER
 #FN_NUMBER                 The footnote number attached to running text
@@ -1087,10 +1212,12 @@
 #FN_OVERFLOW_TRAP_POS      The register that sets the position of
                            trap FN_OVERFLOW_TRAP.
 #FN_R_INDENT               Right indent of INDENT RIGHT in footnotes
+#FN_REF                    Put REFs in footnotes? (toggle)
 #FN_RULE_ADJ               # of points to raise footnote separator from
                            its baseline
 #FN_RULE_LENGTH            Length of footnote separator rule
 #FN_RULE                   Print fn rule? (toggle)
+#FN_SPACE                  Post footnote space
 #FN_WAS_DEFERED            Tells HEADER about a deferred footnote
 #FOOTER_DIFF               In TRAPS, the difference between the
                            original #B_MARGIN and #VISUAL_B_MARGIN
@@ -1155,25 +1282,32 @@
 #HOW_MANY                  Number of blank pages to output
 #IGNORE                    Should we ignore this macro? Set to 1 in
                            TYPEWRITE.
+#IN_BIB_LIST               Tells ITEM we're doing a bibliography in
+                           list style
 #INDENT_FIRST_PARAS        Indent first paras? (toggle)
 #INDENT_FIRSTS             Tells footnotes to leave INDENT_FIRST_PARAS
                            alone if it's on for running text.
 #ITALIC_MEANS_ITALIC       For TYPEWRITE.  1=yes; 0=no
+#L_LENGTH_FOR_EPI          Stores line length at top of doc for use
+                           with EPIGRAPH when columns are on
+#L_MARGIN_DIFF             Difference between DOC_L_MARGIN and
+                           L_MARGIN
 #LEFT_CAP_HEIGHT           Cap height of left string in headers/footers
-#LEGAL_BASELINE            Calculates vet. position of next legal
+#LEGAL_BASELINE            Calculates vert. position of next legal
                            baseline in SHIM
 #LETTER_STYLE              1=BUSINESS 2=PERSONAL
 #LINEBREAK                 Did we have a linebreak? (toggle)
 #LINEBREAK_COLOR           Colored linebreak? (toggle)
+#LINENUMBERS               Holds various states of line-numbering when
+                           line numbering is enabled
 #LINES_PER_PAGE            # of lines (at DOC_LEAD) that fit on
                            page after #B_MARGIN is set
-#L_LENGTH_FOR_EPI          Stores line length at top of doc for use
-                           with EPIGRAPH when columns are on
-#L_MARGIN_DIFF             Difference between DOC_L_MARGIN and
-                           L_MARGIN
+#LN                        Are line numbers on? (toggle)
 #MISC_&lt;n&gt;            Used to print "next" misc lines in DO_COVER
 #MISC_NUM                  Number of MISC lines
 #MISCS                     =#MISC_NUM in DO_COVER
+#MN_OVERFLOW_LEFT          If 1, left margin note text overflows
+#MN_OVERFLOW_RIGHT         If 1, right margin note text overflows
 #n%_AT_PAGENUM_SET         Page # from n% when PAGENUMBER invoked
 #NEEDS_SPACE               Instruct FOOTNOTE, when called by
                            PROCESS_FN_IN_DIVER, that if the footnote
@@ -1181,6 +1315,8 @@
                            raised by 1v (set in DIVER_FN_2_PRE)
 #NEXT_AUTHOR               Supplies correct digit to AUTHOR_&lt;#&gt;
                            when printing authors in doc header
+#NEXT_LN                   Next linenumber when \n(ln has to be stored
+                           because linenumbering suspended
 #NEXT_MISC                 Incrementing counter for misc lines in
                            DO_COVER
 #NO_BACK_UP                Instructs FN_OVERFLOW_TRAP not to
@@ -1249,20 +1385,34 @@
 #PRINT_STYLE               Typewrite=1, typeset=2
 #PT_SIZE_IN_UNITS          Stored value of \n[.ps] from last time
                            PT_SIZE was called
+#Q_AUTOLEAD                Register created by QUOTE_AUTOLEAD
 #Q_DEPTH                   Depth of quote
 #Q_FITS                    Does this quote fit on one page/column?
                            (toggle)
+#Q_LEAD                    Leading of quotes
+#Q_LEAD_DIFF               Difference between leading of running text
+                           and the leading used in quotes/blockquotes
+#Q_LEAD_REAL               Leading of quotes and blockquotes saved at the
+                           ends of their respective diversions
 #Q_L_LENGTH                Line length of quotes
 #Q_OFFSET                  Page offset for quotes
 #Q_OFFSET_VALUE            Factor by which to multiply PP_INDENT to
                            offset quotes
+#Q_PARTIAL_DEPTH           The amount of a quote/blockquote that fits at
+                           the bottom of a page when a quote/blockquote
+                           spans pages
 #Q_PP                      In PP, stores para # in QUOTE.  Removed in
                            ENDQUOTE.
+#Q_SPACE_ADJ               The flexible amount of whitespace to add before
+                           and after a quote/blockquote
 #Q_TOP                     Vertical place on page that a quote starts
 #QUOTE                     1=PQUOTE, 2=BQUOTE
 #QUOTE_COLOR               Color quotes (poetic)? (toggle)
+#QUOTE_LN                  Linenumber quotes? (toggle)
 #RECTO_VERSO               Switch HEADER_LEFT and HEADER_RIGHT on
                            alternate pages? (toggle); default=0
+#REF_HYPHENATE             Hyphenate REFs? (toggle)
+#REF_WARNING               Have we issued a ref warning? (toggle)
 #REPEAT                    Number of times to repeat linebreak
                            character
 #RESERVED_SPACE            Just enough room to put 1 more line of
@@ -1280,6 +1430,7 @@
                            #FULLSPACE_QUOTES (used in endnotes)
 #RESTORE_DOC_LEAD          Holds value of current doc lead (used in
                            endnotes)
+#RESTORE_HY                Restore hyphenation after .][? (toggle)
 #RESTORE_OFFSET            Page offset at moment footer trap is sprung;
                            not currently used
 #RESTORE_TOC_PN_PADDING    Saves #TOC_PN_PADDING in TOC prior to
@@ -1288,6 +1439,11 @@
                            headers/footers
 #RULED                     Tells FOOTNOTE if a rule (or space has been
                            put above the first footnote on the page
+#RUNON_FN_IN_DIVER         If #LN=1, if we're in a (block)quote, instructs
+                           FOOTNOTE to unformat diversion RUNON_FN_IN_DIVER
+#RUNON_FOOTNOTES           If #LN=1, instructs FOOTNOTE to unformat
+                           diversion RUNON_FOOTNOTES
+#RUN_ON                    Are we using run-on footnotes? (toggle)
 #SAVED_DIVER_FN_COUNT      In the case of a footnote inside a
                            diversion that should be treated as a
                            "normal" footnote, FOOTNOTE needs to
@@ -1311,6 +1467,7 @@
 #SAVED_FN_DEPTH_2          Footnote depth after to adding footnote
                            diversion depth to FN_DEPTH; used when
                            footnote text will overflow
+#SAVED_FOOTER_POS          Position of FOOTER in DO_QUOTE (hack)
 #SAVED_LEAD                In FOOTER and DO_FOOTER, stores the
                            lead in effect prior to outputting
                            FOOTNOTES or performing either
@@ -1322,11 +1479,14 @@
                            performed with the #SAVED_LEAD in
                            order to remove register #AUTO_LEAD or
                            #AUTO_LEAD_FACTOR.
+#SEP_TYPE                  Set to 1 if LIST separator is ( or [ or {
 #SH_LEAD_ADJUST            #DOC_LEAD/8 (TYPESET) or /2 (TYPEWRITE)
                            (used for subhead spacing)
 #SH_NUM                    Subhead number
 #SHIM                      Amount of lead required to advance to
                            next legal baseline
+#SILENT_BQUOTE_LN          "Silently" linenumber blockquotes? (toggle)
+#SILENT_QUOTE_LN           "Silently" linenumber quotes? (toggle)
 #SINGLE_SPACE              Is TYPEWRITE in single space mode? (toggle)
 #SKIP_FOOTER               If 1, instructs DO_FOOTER to do nothing
                            if B_MARGIN falls below FOOTER_MARGIN
@@ -1345,6 +1505,7 @@
                            PRINT_HDRFTR that START has been invoked,
                            allowing PRINT_HDRFTR to decide whether or
                            not to print a footer on page 1
+#START_FOR_MNinit          If 1, defer processing MN_INIT until #START
 #STORED_PP_INDENT          Temporarily holds value of #PP_INDENT
 #SUITE                     Current page number (for letters)
 #SUP_PT_SIZE               Point size of superscript
@@ -1408,12 +1569,31 @@
  
 +++STRINGS+++
 
+$1ST_LETTER                      First letter of first arg to LIST
+$ADJUST_BIB_LEAD                 2nd arg to BIBLIOGRAPHY_LEAD; if not blank
+                                 adjust bib leading
 $ATTRIBUTE_STRING               "by" line in doc header
 $AUTHOR_1...9                    Document author(s)
 $AUTHOR_FAM                      Family to use for author in doc header
 $AUTHOR_FT                       Font to use for author in doc header
 $AUTHOR_SIZE_CHANGE              ps in/decrease of author in doc header*
 $AUTHOR_PT_SIZE                  Absolute ps of authors
+$BIB_FAM                         Bibliography page family
+$BIB_FT                          Bibliography page font
+$BIB_LEAD                        Base leading for bibliographies
+$BIB_LIST_SEPARATOR              Separator between enumerator and text
+                                 when outputting bibliographies in LIST style
+$BIB_LIST_PREFIX                 Prefix before enumerator when outputting
+                                 bibliographies in LIST style
+$BIB_PN_STYLE                    Format of bibliography page numbers
+$BIB_SPACE                       Post entry space for bibliographies
+$BIB_STRING                      Bibliography title string
+$BIB_STRING_FAM                  Bib title family
+$BIB_STRING_FT                   Bib title font
+$BIB_STRING_QUAD                 Bib title quad
+$BIB_STRING_SIZE_CHANGE          Bib title size (+ or -)
+$BQ_LN_GUTTER                    Gutter between line numbers and bquotes in
+                                 bquotes
 $BQUOTE_COLOR                    Blockquote color
 $BQUOTE_FAM                      Family to use for blockquotes
 $BQUOTE_FT                       Font to use for blockquotes
@@ -1464,6 +1644,7 @@
 $COVER_MISC_FT                   Cover misc font
 $COVER_MISC_SIZE_CHANGE          Cover misc size*
 $COVER_MISC_COLOR                Cover misc color
+$CURRENT_EV                      \n[.ev] at REF_BRACKETS_START
 $DOC_COVER_FAM                   Overall doc cover family
 $DOC_COVER_COLOR                 Overall doc cover color
 $DOC_COVER_TITLE                 User-defined doc cover title string
@@ -1516,8 +1697,23 @@
 $DRAFT                           The draft number (string valued)
 $DRAFT_STRING                    What to print whenever the word "draft"
                                  is required
+EN_MARK                          Inline, gets #EN_MARK (\(ln)
+$EN_CLOSE_BRACKET                Close bracket for line-number enumerated
+                                 endnotes
 $EN_FAMILY                       Family for endnotes
 $EN_FT                           Font for endnotes
+$EN_LINENUMBER                   String to print for line-number enumerators
+                                 in line-numbered endnotes
+$EN_LN_FAM                       Family for line-numbers in line-number
+                                 identified endnotes
+$EN_LN_FT                        Font for line-numbers in line-number
+                                 identified endnotes
+$EN_LN_GAP                       Gap to leave in initial endnote lines
+                                 between line-number identifies and text
+$EN_OPEN_BRACKET                 Open bracket for line-number enumerated
+                                 endnotes
+$EN_LN_SIZE_CHANGE               Size change (+ or -) for line-numbers in
+                                 line-number identified endnotes
 $EN_PN_STYLE                     Pagenumbering style for endnotes pages
 $EN_QUAD                         Quad for endnotes
 $EN_STRING                       Endnotes page head
@@ -1542,12 +1738,23 @@
 $EPI_QUAD                        Quad in block-style epigraphs
                                  (justified or left)
 $EPI_SIZE_CHANGE                 ps in/decrease of epigraphs*
+$EVAL_BIB_SPACE                  Temporary string to find out if the
+                                 arg to BIBLIOGRAPHY_SPACING ended in "v"
 $FINIS_COLOR                     Color of FINIS string
 $FINIS_STRING                    What to print when FINIS macro is
                                  invoked
 $FIRST_DOC_TITLE                 1st doc's title captured in COLLATE
+FN_MARK                          Inline, gets #FN_MARK (\n(ln)
+$FN_CLOSE_BRACKET                Close bracket for line-number identified
+                                 footnotes
 $FN_FAM                          Family used in footnotes
 $FN_FT                           Font used in footnotes
+$FN_LINENUMBER                   String to print before footnotes when
+                                 line-numbering enabled for footnotes
+$FN_LN_SEP                       Separator after line-number identified
+                                 footnotes
+$FN_OPEN_BRACKET                 Open bracket for line-number identified
+                                 footnotes
 $FN_QUAD                         Quad used in footnotes
 $FN_SIZE_CHANGE                  ps in/decrease of footnotes*
 $FOOTNOTE_COLOR                  Footnote color
@@ -1592,7 +1799,16 @@
 $LINEBREAK_CHAR                  Character that marks line breaks
 $LINEBREAK_CHAR_V_ADJ            +|- amount by which to raise/lower
                                  linebreak character
+$LAST_CHAR                       Temporary string used to discover whether
+                                 user has remembered to put a digit after
+                                 ROMAN or roman in arg to LIST
 $LINEBREAK_COLOR                 Linebreak color
+$LIST_ARG_1                      The first arg to LIST (minus digits if
+                                 ROMAN or roman
+$LN_GUTTER                       Gutter to leave between line numbers
+                                 and text
+$LN_INC                          2nd arg to NUMBER_LINES as a string
+$LN_NUM                          1st arg to NUMBER_LINES as a string
 $MISC_COLOR                      Misc line color
 $MISC_QUAD                       Misc line quad
 PAGE#                            For use in hdrftr strings where page #
@@ -1606,10 +1822,21 @@
                                  default=LETTER
 $PH_COLOR                        Parahead color
 $PP_FT                           Font used in paragraphs
+$ROMAN_WIDTH                     The digit(s) appended to ROMAN or
+                                 roman LIST args
+$Q_LN_GUTTER                     Gutter between linenumbers and quotes
+                                 in quotes
 $QUOTE_COLOR                     Quote (poetic) color
 $QUOTE_FAM                       Family to use for pquotes
 $QUOTE_FT                        Font to use for pquotes
 $QUOTE_SIZE_CHANGE               ps in/decrease of pquotes*
+$REF_BIB_INDENT                  2nd line indent value for references in
+                                 bibliographies
+$REF_EN_INDENT                   2nd line indent value for references in
+                                 endnotes
+$REF_FN_INDENT                   2nd line indent value for references in
+                                 footnotes
+$RESTORE_SS_VAR                  Saves \*[$SS_VAR] for use with ref*build
 #REVISION                        The revision number (string valued)
 $REVISION_STRING                 What to print whenever the word
                                  "revision" is required
@@ -1774,168 +2001,195 @@
 
 +++The following are used for docelement type-style control+++
 
-AUTHOR_FAMILY              _FAMILY
-AUTHOR_FONT                _FONT
-AUTHOR_SIZE                _SIZE
-BLOCKQUOTE_COLOR           _COLOR
-BLOCKQUOTE_FAMILY          _FAMILY
-BLOCKQUOTE_FONT            _FONT
-BLOCKQUOTE_QUAD            _QUAD
-BLOCKQUOTE_SIZE            _SIZE
-CHAPTER_TITLE_COLOR        _COLOR
-CHAPTER_TITLE_FAMILY       _FAMILY
-CHAPTER_TITLE_FONT         _FONT
-CHAPTER_TITLE_SIZE         _SIZE
-COVER_COPYRIGHT_COLOR      _COLOR
-COVER_COPYRIGHT_FAMILY     _FAMILY
-COVER_COPYRIGHT_FONT       _FONT
-COVER_COPYRIGHT_QUAD       _QUAD
-COVER_COPYRIGHT_SIZE       _SIZE
-COVER_ATTRIBUTE_COLOR      _COLOR
-COVER_AUTHOR_COLOR         _COLOR
-COVER_AUTHOR_FAMILY        _FAMILY
-COVER_AUTHOR_FONT          _FONT
-COVER_AUTHOR_SIZE          _SIZE
-COVER_COLOR                _COLOR
-COVER_DOCTYPE_COLOR        _COLOR
-COVER_DOCTYPE_FAMILY       _FAMILY
-COVER_DOCTYPE_FONT         _FONT
-COVER_DOCTYPE_SIZE         _SIZE
-COVER_FAMILY               _FAMILY
-COVER_MISC_COLOR           _COLOR
-COVER_MISC_QUAD            _QUAD
-COVER_SUBTITLE_COLOR       _COLOR
-COVER_SUBTITLE_FAMILY      _FAMILY
-COVER_SUBTITLE_FONT        _FONT
-COVER_SUBTITLE_SIZE        _SIZE
-COVER_TITLE_COLOR          _COLOR
-COVER_TITLE_FAMILY         _FAMILY
-COVER_TITLE_FONT           _FONT
-COVER_TITLE_SIZE           _SIZE
-DOC_COVER_COPYRIGHT_COLOR  _COLOR
-DOC_COVER_COPYRIGHT_FAMILY _FAMILY
-DOC_COVER_COPYRIGHT_FONT   _FONT
-DOC_COVER_COPYRIGHT_QUAD   _QUAD
-DOC_COVER_COPYRIGHT_SIZE   _SIZE
-DOC_COVER_ATTRIBUTE_COLOR  _COLOR
-DOC_COVER_AUTHOR_COLOR     _COLOR
-DOC_COVER_AUTHOR_FAMILY    _FAMILY
-DOC_COVER_AUTHOR_FONT      _FONT
-DOC_COVER_AUTHOR_SIZE      _SIZE
-DOC_COVER_COLOR            _COLOR
-DOC_COVER_DOCTYPE_COLOR    _COLOR
-DOC_COVER_DOCTYPE_FAMILY   _FAMILY
-DOC_COVER_DOCTYPE_FONT     _FONT
-DOC_COVER_DOCTYPE_SIZE     _SIZE
-DOC_COVER_FAMILY           _FAMILY
-DOC_COVER_MISC_COLOR       _COLOR
-DOC_COVER_MISC_QUAD        _QUAD
-DOC_COVER_SUBTITLE_COLOR   _COLOR
-DOC_COVER_SUBTITLE_FAMILY  _FAMILY
-DOC_COVER_SUBTITLE_FONT    _FONT
-DOC_COVER_SUBTITLE_SIZE    _SIZE
-DOC_COVER_TITLE_COLOR      _COLOR
-DOC_COVER_TITLE_FAMILY     _FAMILY
-DOC_COVER_TITLE_FONT       _FONT
-DOC_COVER_TITLE_SIZE       _SIZE
-DOC_QUAD                   _QUAD
-DOCHEADER_COLOR            _COLOR
-DOCHEADER_FAMILY           _FAMILY
-DOCTYPE_FAMILY             _FAMILY
-DOCTYPE_FONT               _FONT
-DOCTYPE_SIZE               _SIZE
-ENDNOTE_FAMILY             _FAMILY
-ENDNOTE_FONT               _FONT
-ENDNOTE_NUMBER_FAMILY      _FAMILY
-ENDNOTE_NUMBER_FONT        _FONT
-ENDNOTE_NUMBER_SIZE        _SIZE
-ENDNOTE_QUAD               _QUAD
-ENDNOTE_STRING_FAMILY      _FAMILY
-ENDNOTE_STRING_FONT        _FONT
-ENDNOTE_STRING_QUAD        _QUAD
-ENDNOTE_STRING_SIZE        _SIZE
-ENDNOTE_TITLE_FAMILY       _FAMILY
-ENDNOTE_TITLE_FONT         _FONT
-ENDNOTE_TITLE_QUAD         _QUAD
-ENDNOTE_TITLE_SIZE         _SIZE
-EPIGRAPH_COLOR             _COLOR
-EPIGRAPH_FAMILY            _FAMILY
-EPIGRAPH_FONT              _FONT
-EPIGRAPH_QUAD              _QUAD
-EPIGRAPH_SIZE              _SIZE
-FINIS_COLOR                _COLOR
-FOOTNOTE_COLOR             _COLOR
-FOOTNOTE_FAMILY            _FAMILY
-FOOTNOTE_FONT              _FONT
-FOOTNOTE_QUAD              _QUAD
-FOOTNOTE_SIZE              _SIZE
-HDRFTR_CENTER_FAMILY       _FAMILY
-HDRFTR_CENTER_FONT         _FONT
-HDRFTR_CENTER_SIZE         _SIZE
-HDRFTR_COLOR               _COLOR
-HDRFTR_FAMILY              _FAMILY
-HDRFTR_LEFT_FAMILY         _FAMILY
-HDRFTR_LEFT_FONT           _FONT
-HDRFTR_LEFT_SIZE           _SIZE
-HDRFTR_RIGHT_FAMILY        _FAMILY
-HDRFTR_RIGHT_FONT          _FONT
-HDRFTR_RIGHT_SIZE          _SIZE
-HDRFTR_RULE_COLOR          _COLOR
-HDRFTR_SIZE                _SIZE
-HEAD_COLOR                 _COLOR
-HEAD_FAMILY                _FAMILY
-HEAD_FONT                  _FONT
-HEAD_QUAD                  _QUAD
-HEAD_SIZE                  _SIZE
-LINEBREAK_COLOR            _COLOR
-MISC_COLOR                 _COLOR
-MISC_QUAD                  _QUAD
-PAGENUM_COLOR              _COLOR
-PAGENUM_FAMILY             _FAMILY
-PAGENUM_FONT               _FONT
-PARAHEAD_COLOR             _COLOR
-PARAHEAD_FAMILY            _FAMILY
-PARAHEAD_FONT              _FONT
-PARAHEAD_SIZE              _SIZE
-QUOTE_COLOR                _COLOR
-QUOTE_FAMILY               _FAMILY
-QUOTE_FONT                 _FONT
-QUOTE_INDENT               _INDENT
-QUOTE_SIZE                 _SIZE
-SUBHEAD_COLOR              _COLOR
-SUBHEAD_FAMILY             _FAMILY
-SUBHEAD_FONT               _FONT
-SUBHEAD_SIZE               _SIZE
-SUBTITLE_COLOR             _COLOR
-SUBTITLE_FAMILY            _FAMILY
-SUBTITLE_FONT              _FONT
-SUBTITLE_SIZE              _SIZE
-TITLE_COLOR                _COLOR
-TITLE_FAMILY               _FAMILY
-TITLE_FONT                 _FONT
-TITLE_SIZE                 _SIZE
-TOC_FAM                    _FAMILY
-TOC_FAMILY                 _FAMILY
-TOC_HEADER_FAMILY          _FAMILY
-TOC_HEADER_FONT            _FONT
-TOC_HEADER_QUAD            _QUAD
-TOC_HEADER_SIZE            _SIZE
-TOC_HEAD_FAMILY            _FAMILY
-TOC_HEAD_FONT              _FONT
-TOC_HEAD_SIZE              _SIZE
-TOC_PARAHEAD_FAMILY        _FAMILY
-TOC_PARAHEAD_FONT          _FONT
-TOC_PARAHEAD_SIZE          _SIZE
-TOC_PN_FAMILY              _FAMILY
-TOC_PN_FONT                _FONT
-TOC_PN_SIZE                _SIZE
-TOC_PT_SIZE                _SIZE
-TOC_SUBHEAD_FAMILY         _FAMILY
-TOC_SUBHEAD_FONT           _FONT
-TOC_SUBHEAD_SIZE           _SIZE
-TOC_TITLE_FAMILY           _FAMILY
-TOC_TITLE_FONT             _FONT
-TOC_TITLE_SIZE             _SIZE
+AUTHOR_FAMILY                 _FAMILY
+AUTHOR_FONT                   _FONT
+AUTHOR_SIZE                   _SIZE
+BIBLIOGRAPHY_FAMILY           _FAMILY
+BIBLIOGRAPHY_FONT             _FONT
+BIBLIOGRAPHY_FOOTER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
+BIBLIOGRAPHY_FOOTER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
+BIBLIOGRAPHY_HEADER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
+BIBLIOGRAPHY_HEADER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
+BIBLIOGRAPHY_QUAD             _QUAD
+BIBLIOGRAPHY_STRING_FAMILY    _FAMILY
+BIBLIOGRAPHY_STRING_FONT      _FONT
+BIBLIOGRAPHY_STRING_QUAD      _QUAD
+BIBLIOGRAPHY_STRING_SIZE      _SIZE
+BLOCKQUOTE_AUTOLEAD           Q_AUTOLEAD
+BLOCKQUOTE_AUTOLEAD           QUOTE_AUTOLEAD
+BLOCKQUOTE_COLOR              _COLOR
+BLOCKQUOTE_FAMILY             _FAMILY
+BLOCKQUOTE_FONT               _FONT
+BLOCKQUOTE_QUAD               _QUAD
+BLOCKQUOTE_SIZE               _SIZE
+CHAPTER_TITLE_COLOR           _COLOR
+CHAPTER_TITLE_FAMILY          _FAMILY
+CHAPTER_TITLE_FONT            _FONT
+CHAPTER_TITLE_SIZE            _SIZE
+COVER_ATTRIBUTE_COLOR         _COLOR
+COVER_AUTHOR_COLOR            _COLOR
+COVER_AUTHOR_FAMILY           _FAMILY
+COVER_AUTHOR_FONT             _FONT
+COVER_AUTHOR_SIZE             _SIZE
+COVER_COLOR                   _COLOR
+COVER_COPYRIGHT_COLOR         _COLOR
+COVER_COPYRIGHT_FAMILY        _FAMILY
+COVER_COPYRIGHT_FONT          _FONT
+COVER_COPYRIGHT_QUAD          _QUAD
+COVER_COPYRIGHT_SIZE          _SIZE
+COVER_DOCTYPE_COLOR           _COLOR
+COVER_DOCTYPE_FAMILY          _FAMILY
+COVER_DOCTYPE_FONT            _FONT
+COVER_DOCTYPE_SIZE            _SIZE
+COVER_FAMILY                  _FAMILY
+COVER_MISC_COLOR              _COLOR
+COVER_MISC_QUAD               _QUAD
+COVER_SUBTITLE_COLOR          _COLOR
+COVER_SUBTITLE_FAMILY         _FAMILY
+COVER_SUBTITLE_FONT           _FONT
+COVER_SUBTITLE_SIZE           _SIZE
+COVER_TITLE_COLOR             _COLOR
+COVER_TITLE_FAMILY            _FAMILY
+COVER_TITLE_FONT              _FONT
+COVER_TITLE_SIZE              _SIZE
+DOC_COVER_ATTRIBUTE_COLOR     _COLOR
+DOC_COVER_AUTHOR_COLOR        _COLOR
+DOC_COVER_AUTHOR_FAMILY       _FAMILY
+DOC_COVER_AUTHOR_FONT         _FONT
+DOC_COVER_AUTHOR_SIZE         _SIZE
+DOC_COVER_COLOR               _COLOR
+DOC_COVER_COPYRIGHT_COLOR     _COLOR
+DOC_COVER_COPYRIGHT_FAMILY    _FAMILY
+DOC_COVER_COPYRIGHT_FONT      _FONT
+DOC_COVER_COPYRIGHT_QUAD      _QUAD
+DOC_COVER_COPYRIGHT_SIZE      _SIZE
+DOC_COVER_DOCTYPE_COLOR       _COLOR
+DOC_COVER_DOCTYPE_FAMILY      _FAMILY
+DOC_COVER_DOCTYPE_FONT        _FONT
+DOC_COVER_DOCTYPE_SIZE        _SIZE
+DOC_COVER_FAMILY              _FAMILY
+DOC_COVER_MISC_COLOR          _COLOR
+DOC_COVER_MISC_QUAD           _QUAD
+DOC_COVER_SUBTITLE_COLOR      _COLOR
+DOC_COVER_SUBTITLE_FAMILY     _FAMILY
+DOC_COVER_SUBTITLE_FONT       _FONT
+DOC_COVER_SUBTITLE_SIZE       _SIZE
+DOC_COVER_TITLE_COLOR         _COLOR
+DOC_COVER_TITLE_FAMILY        _FAMILY
+DOC_COVER_TITLE_FONT          _FONT
+DOC_COVER_TITLE_SIZE          _SIZE
+DOCHEADER_COLOR               _COLOR
+DOCHEADER_FAMILY              _FAMILY
+DOC_QUAD                      _QUAD
+DOCTYPE_FAMILY                _FAMILY
+DOCTYPE_FONT                  _FONT
+DOCTYPE_SIZE                  _SIZE
+ENDNOTE_BLOCKQUOTE_AUTOLEAD   Q_AUTOLEAD
+ENDNOTE_BLOCKQUOTE_AUTOLEAD   QUOTE_AUTOLEAD
+ENDNOTE_FAMILY                _FAMILY
+ENDNOTE_FONT                  _FONT
+ENDNOTE_LINENUMBER_FAMILY     _FAMILY
+ENDNOTE_LINENUMBER_FONT       _FONT
+ENDNOTE_LINENUMBER_SIZE       _SIZE
+ENDNOTE_NUMBER_FAMILY         _FAMILY
+ENDNOTE_NUMBER_FONT           _FONT
+ENDNOTE_NUMBER_SIZE           _SIZE
+ENDNOTE_QUAD                  _QUAD
+ENDNOTE_QUOTE_AUTLOEAD        Q_AUTOLEAD
+ENDNOTE_QUOTE_AUTOLEAD        QUOTE_AUTOLEAD
+ENDNOTE_STRING_FAMILY         _FAMILY
+ENDNOTE_STRING_FONT           _FONT
+ENDNOTE_STRING_QUAD           _QUAD
+ENDNOTE_STRING_SIZE           _SIZE
+ENDNOTE_TITLE_FAMILY          _FAMILY
+ENDNOTE_TITLE_FONT            _FONT
+ENDNOTE_TITLE_QUAD            _QUAD
+ENDNOTE_TITLE_SIZE            _SIZE
+EPIGRAPH_COLOR                _COLOR
+EPIGRAPH_FAMILY               _FAMILY
+EPIGRAPH_FONT                 _FONT
+EPIGRAPH_QUAD                 _QUAD
+EPIGRAPH_SIZE                 _SIZE
+FINIS_COLOR                   _COLOR
+FOOTNOTE_COLOR                _COLOR
+FOOTNOTE_FAMILY               _FAMILY
+FOOTNOTE_FONT                 _FONT
+FOOTNOTE_QUAD                 _QUAD
+FOOTNOTE_SIZE                 _SIZE
+HDRFTR_CENTER_FAMILY          _FAMILY
+HDRFTR_CENTER_FONT            _FONT
+HDRFTR_CENTER_SIZE            _SIZE
+HDRFTR_COLOR                  _COLOR
+HDRFTR_FAMILY                 _FAMILY
+HDRFTR_LEFT_FAMILY            _FAMILY
+HDRFTR_LEFT_FONT              _FONT
+HDRFTR_LEFT_SIZE              _SIZE
+HDRFTR_RIGHT_FAMILY           _FAMILY
+HDRFTR_RIGHT_FONT             _FONT
+HDRFTR_RIGHT_SIZE             _SIZE
+HDRFTR_RULE_COLOR             _COLOR
+HDRFTR_SIZE                   _SIZE
+HEAD_COLOR                    _COLOR
+HEAD_FAMILY                   _FAMILY
+HEAD_FONT                     _FONT
+HEAD_QUAD                     _QUAD
+HEAD_SIZE                     _SIZE
+LINEBREAK_COLOR               _COLOR
+MISC_COLOR                    _COLOR
+MISC_QUAD                     _QUAD
+PAGENUM_COLOR                 _COLOR
+PAGENUM_FAMILY                _FAMILY
+PAGENUM_FONT                  _FONT
+PARAHEAD_COLOR                _COLOR
+PARAHEAD_FAMILY               _FAMILY
+PARAHEAD_FONT                 _FONT
+PARAHEAD_SIZE                 _SIZE
+QUOTE_COLOR                   _COLOR
+QUOTE_FAMILY                  _FAMILY
+QUOTE_FONT                    _FONT
+QUOTE_INDENT                  _INDENT
+QUOTE_SIZE                    _SIZE
+REF_INDENT                    INDENT_REFS
+REF)                          REF_BRACKETS_END
+REF]                          REF_BRACKETS_END
+REF}                          REF_BRACKETS_END
+REF(                          REF_BRACKETS_START
+REF[                          REF_BRACKETS_START
+REF{                          REF_BRACKETS_START
+SUBHEAD_COLOR                 _COLOR
+SUBHEAD_FAMILY                _FAMILY
+SUBHEAD_FONT                  _FONT
+SUBHEAD_SIZE                  _SIZE
+SUBTITLE_COLOR                _COLOR
+SUBTITLE_FAMILY               _FAMILY
+SUBTITLE_FONT                 _FONT
+SUBTITLE_SIZE                 _SIZE
+TITLE_COLOR                   _COLOR
+TITLE_FAMILY                  _FAMILY
+TITLE_FONT                    _FONT
+TITLE_SIZE                    _SIZE
+TOC_FAM                       _FAMILY
+TOC_FAMILY                    _FAMILY
+TOC_HEADER_FAMILY             _FAMILY
+TOC_HEADER_FONT               _FONT
+TOC_HEADER_QUAD               _QUAD
+TOC_HEADER_SIZE               _SIZE
+TOC_HEAD_FAMILY               _FAMILY
+TOC_HEAD_FONT                 _FONT
+TOC_HEAD_SIZE                 _SIZE
+TOC_PARAHEAD_FAMILY           _FAMILY
+TOC_PARAHEAD_FONT             _FONT
+TOC_PARAHEAD_SIZE             _SIZE
+TOC_PN_FAMILY                 _FAMILY
+TOC_PN_FONT                   _FONT
+TOC_PN_SIZE                   _SIZE
+TOC_PT_SIZE                   _SIZE
+TOC_SUBHEAD_FAMILY            _FAMILY
+TOC_SUBHEAD_FONT              _FONT
+TOC_SUBHEAD_SIZE              _SIZE
+TOC_TITLE_FAMILY              _FAMILY
+TOC_TITLE_FONT                _FONT
+TOC_TITLE_SIZE                _SIZE
 </pre>
 
 <hr>
Index: groff/contrib/mom/momdoc/toc.html
diff -u groff/contrib/mom/momdoc/toc.html:1.15 
groff/contrib/mom/momdoc/toc.html:1.16
--- groff/contrib/mom/momdoc/toc.html:1.15      Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/toc.html   Sat May 14 07:07:13 2005
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
-<title>Mom, version 1.2-f -- Table of Contents</title>
+<title>Mom, version 1.3 -- Table of Contents</title>
 </head>
 <body bgcolor="#dfdfdf">
 
 <!====================================================================>
 
-<h1 align="center"><u>Table of Contents for mom, version 1.2-f</u></h1>
+<h1 align="center"><u>Table of Contents for mom, version 1.3</u></h1>
 
 The table of contents has grown quite large.  If you've been using
 <strong>mom</strong> for a while, you might prefer the
@@ -58,6 +58,7 @@
     <li><a href="#PAGINATE">Pagination</a>
     <li><a href="#RV">Recto/verso printing and collating</a>
     <li><a href="#COVER">Cover pages</a>
+    <li><a href="#REF">Bibliographies and references</a>
     <li><a href="#LETTER">Writing letters</a>
     <li><a href="#TYPEMACDOC">Using typesetting macros during document 
processing</a>
     <li><a href="#QUICK">Quick reference guide to mom</a>
@@ -217,7 +218,7 @@
                        </ul>
                        <li><a 
href="docprocessing.html#STYLE_BEFORE_START"><strong>5.3.4 Changing Type and 
Style Parameters <em>before</em> START</strong></a>
                        <ul>
-                               <li><a 
href="docprocessing.html#TYPE_BEFORE_START">5.3.4.1 Typesetting macros</a> -- 
usage
+                               <li><a 
href="docprocessing.html#TYPE_BEFORE_START">5.3.4.1 Typesetting macros before 
START</a> -- usage
                                <ul>
                                        <li><a 
href="docprocessing.html#COLOR">Colour</a>
                                </ul>
@@ -234,6 +235,8 @@
                        <ul>
                                <li><a 
href="docprocessing.html#INDEX_DOC_PARAM">5.3.6.1 Macro list</a>
                        </ul>
+<a name="TYPEMACDOC"></a>
+               <li><a href="typemacdoc.html#TYPESETTING"><strong>5.3.7 Using 
typesetting macros during document processing</strong></A>
                </ul>
 <a name="TAGS"></a>
                <li><a href="docelement.html#DOCELEMENT"><strong>5.4 THE 
DOCUMENT ELEMENT TAGS</strong></a>
@@ -248,15 +251,17 @@
                        <li><a href="docelement.html#HEAD_INTRO">5.4.4 Main 
heads</a>
                        <li><a href="docelement.html#SUBHEAD_INTRO">5.4.5 
Subheads</a>
                        <li><a href="docelement.html#PARAHEAD_INTRO">5.4.6 
Paragraph heads</a>
-                       <li><a href="docelement.html#LINEBREAK_INTRO">5.4.7 
Linebreaks</a> -- author linebreaks
-                       <li><a href="docelement.html#QUOTE_INTRO">5.4.8 
Quotes</a> -- line for line poetic quotes or unformatted, verbatim text
+                       <li><a href="docelement.html#LINEBREAK_INTRO">5.4.7 
Linebreaks</a> -- author linebreaks (section breaks)
+                       <li><a href="docelement.html#QUOTE_INTRO">5.4.8 
Quotes</a> -- line for line poetic quotes or unformatted, verbatim text (e.g. 
code snippets)
                        <li><a href="docelement.html#BLOCKQUOTE_INTRO">5.4.9 
Blockquotes</a> -- cited material
                        <li><a href="docelement.html#LIST_INTRO">5.4.10 
Lists</a> -- (nested) lists
-                       <li><a href="docelement.html#FOOTNOTE_INTRO">5.4.11 
Footnotes</a>
-                       <li><a href="docelement.html#ENDNOTE_INTRO">5.4.12 
Endnotes</a>
-                       <li><a href="docelement.html#BLANK_PAGE_TITLE">5.4.13 
Blank page</a>
-                       <li><a href="docelement.html#TOC_INTRO">5.4.14 Table of 
contents</a>
-                       <li><a href="docelement.html#FINIS_INTRO">5.4.15 
Document termination</a> -- FINIS
+                       <li><a href="docelement.html#NUMBER_LINES_INTRO">5.4.11 
Line numbering</a>
+                       <li><a href="docelement.html#FOOTNOTE_INTRO">5.4.12 
Footnotes</a>
+                       <li><a href="docelement.html#ENDNOTE_INTRO">5.4.13 
Endnotes</a>
+                       <li><a href="docelement.html#MARGIN_NOTES_INTRO">5.4.14 
Margin notes</a>
+                       <li><a href="docelement.html#BLANK_PAGE_TITLE">5.4.15 
Blank pages</a>
+                       <li><a href="docelement.html#TOC_INTRO">5.4.16 Table of 
contents</a>
+                       <li><a href="docelement.html#FINIS_INTRO">5.4.17 
Document termination</a> -- FINIS
                </ul>
 <a name="HDRFTR"></a>
                <li><a href="headfootpage.html#HEADFOOTPAGE"><strong>5.5 
DOCUMENT HEADERS AND FOOTERS</strong></a>
@@ -292,16 +297,17 @@
 <a name="COVER"></a>
                <li><a href="cover.html#COVER_TOP"><strong>5.8 CREATING COVER 
PAGES</strong></a>
                <br>
+<a name="REF"></a>
+               <li><a href="refer.html#REF_TOP"><strong>5.9 BIBLIOGRAPHIES AND 
REFERENCES</strong></a>
+               <br>
 <a name="LETTER"></a>
-               <li><a href="letters.html#LETTERS"><strong>5.9 WRITING 
LETTERS</strong></a>
+               <li><a href="letters.html#LETTERS"><strong>5.10 WRITING 
LETTERS</strong></a>
                <ul>
-                       <li><a href="letters.html#LETTERS_INTRO">5.9.1 
Introduction to writing letters</a>
-                       <li><a href="letters.html#TUTORIAL">5.9.2 Tutorial on 
writing letters</a>
-                       <li><a href="letters.html#LETTERS_DEFAULTS">5.9.3 
Default style for letters</a>
-                       <li><a href="letters.html#LETTERS_MACROS">5.9.4 The 
letter macros</a>
+                       <li><a href="letters.html#LETTERS_INTRO">5.10.1 
Introduction to writing letters</a>
+                       <li><a href="letters.html#TUTORIAL">5.10.2 Tutorial on 
writing letters</a>
+                       <li><a href="letters.html#LETTERS_DEFAULTS">5.10.3 
Default style for letters</a>
+                       <li><a href="letters.html#LETTERS_MACROS">5.10.4 The 
letter macros</a>
                </ul>
-<a name="TYPEMACDOC"></a>
-               <li><a href="typemacdoc.html#TYPESETTING"><strong>5.10 USING 
TYPESETTING MACROS DURING DOCUMENT PROCESSING</strong></a>
        </ul>
 <a name="QUICK"></a>
 <li><a href="macrolist.html#QUICK"><strong>6. QUICK REFERENCE GUIDE TO 
MOM</strong></a>
Index: groff/contrib/mom/momdoc/typemacdoc.html
diff -u groff/contrib/mom/momdoc/typemacdoc.html:1.8 
groff/contrib/mom/momdoc/typemacdoc.html:1.9
--- groff/contrib/mom/momdoc/typemacdoc.html:1.8        Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/typemacdoc.html    Sat May 14 07:07:13 2005
@@ -8,8 +8,8 @@
 
 <!====================================================================>
 
-<a href="macrolist.html#TOP">Next</a>&nbsp;&nbsp;
-<a href="letters.html#TOP">Prev</a>&nbsp;&nbsp;
+<a href="docelement.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="docprocessing.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 <p>
 
@@ -74,8 +74,6 @@
 if you encounter the problem of trying to get <strong>mom</strong>
 to put space at the tops of pages after the first.)
 
-
-<p>
 <pre>
 MACRO           EFFECT DURING DOCUMENT PROCESSING
 -----           ---------------------------------
@@ -229,8 +227,8 @@
 macro immediately after <strong>ADD_SPACE</strong>.
 <p>
 <hr>
-<a href="macrolist.html#TOP">Next</a>&nbsp;&nbsp;
-<a href="letters.html#TOP">Prev</a>&nbsp;&nbsp;
+<a href="docelement.html#TOP">Next</a>&nbsp;&nbsp;
+<a href="docprocessing.html#TOP">Prev</a>&nbsp;&nbsp;
 <a href="#TOP">Top</a>&nbsp;&nbsp;
 <a href="toc.html">Back to Table of Contents</a>
 </body>
Index: groff/contrib/mom/momdoc/typesetting.html
diff -u groff/contrib/mom/momdoc/typesetting.html:1.14 
groff/contrib/mom/momdoc/typesetting.html:1.15
--- groff/contrib/mom/momdoc/typesetting.html:1.14      Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/momdoc/typesetting.html   Sat May 14 07:07:13 2005
@@ -164,7 +164,7 @@
 <hr width="66%" align="left">
        <a name="PAGEWIDTH"><h3><u>Page width</u></h3></a>
 <br>
-Macro: <strong>PAGEWIDTH</strong> <var>&lt;width of printer sheet&gt;</var>
+<nobr>Macro: <strong>PAGEWIDTH</strong> &lt;width of printer sheet&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -183,7 +183,7 @@
 <hr width="66%" align="left">
        <a name="PAGELENGTH"><h3><u>Page length</u></h3></a>
 <br>
-Macro: <strong>PAGELENGTH</strong> <var>&lt;length of printer sheet&gt;</var>
+<nobr>Macro: <strong>PAGELENGTH</strong> &lt;length of printer sheet&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -203,12 +203,12 @@
 <hr width="66%" align="left">
        <a name="PAPER"><h3><u>Paper</u></h3></a>
 <br>
-Macro: <strong>PAPER</strong> <var>&lt;paper type&gt;</var>
+<nobr>Macro: <strong>PAPER</strong> &lt;paper type&gt;<wbr>
 
 <p>
 <strong>PAPER</strong> provides a convenient way to set the page
-dimensions for some common printer sheet sizes.  <var>&lt;paper
-type&gt;</var> can be one of:
+dimensions for some common printer sheet sizes.  <nobr>&lt;paper
+type&gt; can be one of:<wbr>
 <p>
 <pre>
        LETTER
@@ -246,7 +246,7 @@
 <hr width="66%" align="left">
        <a name="L_MARGIN"><h3><u>Left margin</u></h3></a>
 <br>
-Macro: <strong>L_MARGIN</strong> <var>&lt;left margin&gt;</var>
+<nobr>Macro: <strong>L_MARGIN</strong> &lt;left margin&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -292,7 +292,7 @@
 <hr width="66%" align="left">
        <a name="R_MARGIN"><h3><u>Right margin</u></h3></a>
 <br>
-Macro: <strong>R_MARGIN</strong> <var>&lt;right margin&gt;</var>
+<nobr>Macro: <strong>R_MARGIN</strong> &lt;right margin&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -366,7 +366,7 @@
 <hr width="66%" align="left">
        <a name="T_MARGIN"><h3><u>Top margin</u></h3></a>
 <br>
-Macro: <strong>T_MARGIN</strong> <var>&lt;top margin&gt;</var>
+<nobr>Macro: <strong>T_MARGIN</strong> &lt;top margin&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -418,7 +418,7 @@
 <hr width="66%" align="left">
        <a name="B_MARGIN"><h3><u>Bottom margin</u></h3></a>
 <br>
-Macro: <strong>B_MARGIN</strong> <var>&lt;bottom margin&gt;</var>
+<nobr>Macro: <strong>B_MARGIN</strong> &lt;bottom margin&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -460,7 +460,7 @@
        <a name="PAGE"><h3><u>Page</u></h3></a>
 <br>
 Macro: <strong>PAGE</strong>
-<var>&lt;width&gt;&nbsp;[ &lt;length&gt; [ &lt;lm&gt; [ &lt;rm&gt; [ 
&lt;tm&gt; [ &lt;bm&gt; ] ] ] ] ]</var>
+<nobr>&lt;width&gt;&nbsp;[ &lt;length&gt; [ &lt;lm&gt; [ &lt;rm&gt; [ 
&lt;tm&gt; [ &lt;bm&gt; ] ] ] ] ]<wbr>
 <br>
 <em>*All arguments require a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -468,8 +468,8 @@
 <strong>PAGE</strong> lets you establish paper dimensions and page
 margins with a single macro.  The only required argument is page width.
 The rest are optional, <strong>but they must appear in order and you can't
-skip over any.</strong>  <var>&lt;lm&gt;, &lt;rm&gt;, &lt;tm&gt;</var>
-and <var>&lt;bm&gt;</var> refer to the left, right, top and bottom
+skip over any.</strong>  <nobr>&lt;lm&gt;, &lt;rm&gt;, &lt;tm&gt;<wbr>
+and <nobr>&lt;bm&gt; refer to the left, right, top and bottom<wbr>
 margins respectively.
 <p>
 Assuming your page dimensions are 11 inches by 17 inches, and that's
@@ -487,7 +487,7 @@
 </pre>
 
 Now suppose you also want to set the top margin, say, at 1-1/2
-inches.  <var>&lt;tm&gt;</var> comes after <var>&lt;rm&gt;</var>
+inches.  <nobr>&lt;tm&gt; comes after <nobr>&lt;rm&gt;<wbr><wbr>
 in the optional arguments, but you can't skip over any arguments,
 therefore to set the top margin, you must also give a right margin.
 The <strong>PAGE</strong> macro would look like this:
@@ -593,7 +593,7 @@
 <hr width="66%" align="left">
 <a name="FAMILY"><h3><u>Type family</u></h3></a>
 <br>
-Macro: <strong>FAMILY</strong> <var>&lt;family&gt;</var>
+<nobr>Macro: <strong>FAMILY</strong> &lt;family&gt;<wbr>
 <br>
 Alias: <strong>FAM</strong>
 
@@ -707,7 +707,7 @@
 <hr width="66%" align="left">
 <a name="FONT"><h3><u>Font</u></h3></a>
 <br>
-Macro: <strong>FT</strong> <var>R | I | B | BI | &lt;any other valid font 
style&gt;</var>
+<nobr>Macro: <strong>FT</strong> R | I | B | BI | &lt;any other valid font 
style&gt;<wbr>
 
 <p>
 By default, groff permits <strong>FT</strong> to take one of four
@@ -793,7 +793,7 @@
 <hr width="66%" align="left">
 <a name="FALLBACK_FONT"><h3><u>Fallback font</u></h3></a>
 <br>
-Macro: <strong>FALLBACK_FONT</strong> <var>&lt;fallback font&gt; [ ABORT | 
WARN ] | ABORT | WARN</var>
+<nobr>Macro: <strong>FALLBACK_FONT</strong> &lt;fallback font&gt; [ ABORT | 
WARN ] | ABORT | WARN<wbr>
 
 <p>
 In the event that you pass an invalid argument to
@@ -867,7 +867,7 @@
 <hr width="66%" align="left">
 <a name="PS"><h3><u>Point size of type</u></h3></a>
 <br>
-Macro: <strong>PT_SIZE</strong> <var>&lt;size of type in points&gt;</var>
+<nobr>Macro: <strong>PT_SIZE</strong> &lt;size of type in points&gt;<wbr>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -922,7 +922,7 @@
 <hr width="66%" align="left">
 <a name="LEADING"><h3><u>Line spacing/leading</u></h3></a>
 <br>
-Macro: <strong>LS</strong> <var>&lt;distance between lines&gt;</var>
+<nobr>Macro: <strong>LS</strong> &lt;distance between lines&gt;<wbr>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -975,7 +975,7 @@
 <hr width="66%" align="left">
 <a name="AUTOLEAD"><h3><u>Automatic line spacing</u></h3></a>
 <br>
-Macro: <strong>AUTOLEAD</strong> <var>&lt;amount of automatic leading&gt; 
[FACTOR]</var>
+<nobr>Macro: <strong>AUTOLEAD</strong> &lt;amount of automatic leading&gt; 
[FACTOR]<wbr>
 <br>
 <em>*Does not require a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -1030,7 +1030,7 @@
 <hr width="66%" align="left">
 <a name="LINELENGTH"><h3><u>Line length</u></h3></a>
 <br>
-Macro: <strong>LL</strong> <var>&lt;line length&gt;</var>
+<nobr>Macro: <strong>LL</strong> &lt;line length&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -1175,7 +1175,7 @@
 <hr width="66%" align="left">
 <a name="QUAD"><h3><u>Quad lines left, right, or centre</u></h3></a>
 <br>
-Macro: <strong>QUAD</strong> <var>L | LEFT | R | RIGHT | C | CENTER | J | 
JUSTIFY</var>
+<nobr>Macro: <strong>QUAD</strong> L | LEFT | R | RIGHT | C | CENTER | J | 
JUSTIFY<wbr>
 <br>
 Alias: <strong>FILL</strong>
 <br>
@@ -1433,7 +1433,7 @@
 <hr width="66%" align="left">
 <a name="SPACE"><h3><u>Break lines and add space between</u></h3></a>
 <br>
-Macro: <strong>SPACE</strong> <var>&lt;space to add between lines&gt;</var>
+<nobr>Macro: <strong>SPACE</strong> &lt;space to add between lines&gt;<wbr>
 <br>
 Alias: <strong>SP</strong>
 
@@ -1622,7 +1622,7 @@
 <hr width="66%" align="left">
 <a name="WS"><h3><u>Word spacing</u></h3></a>
 <br>
-Macro: <strong>WS</strong> <var>&lt;+|-wordspace&gt; | DEFAULT</var>
+<nobr>Macro: <strong>WS</strong> &lt;+|-wordspace&gt; | DEFAULT<wbr>
 
 <p>
 <strong>WS</strong> (Word Space) increases or decreases the amount
@@ -1693,7 +1693,7 @@
 <hr width="66%" align="left">
 <a name="SS"><h3><u>Sentence space</u></h3></a>
 <br>
-Macro: <strong>SS</strong> <var>&lt;+sentence space&gt; | 0 | DEFAULT</var>
+<nobr>Macro: <strong>SS</strong> &lt;+sentence space&gt; | 0 | DEFAULT<wbr>
 
 <p>
 <strong>SS</strong> (Sentence Space) tells groff how to treat double
@@ -1767,15 +1767,15 @@
 <hr width="66%" align="left">
 <a name="HY"><h3><u>Automatic hyphenation control</u></h3></a>
 <br>
-Macro: <strong>HY</strong> <var>toggle</var>
+<nobr>Macro: <strong>HY</strong> toggle<wbr>
 <br>
-Macro: <strong>HY</strong> <var>LINES &lt;max. number of consecutive 
hyphenated lines&gt;</var>
+<nobr>Macro: <strong>HY</strong> LINES &lt;max. number of consecutive 
hyphenated lines&gt;<wbr>
 <br>
-Macro: <strong>HY</strong> <var>MARGIN &lt;size of hyphenation margin&gt;</var>
+<nobr>Macro: <strong>HY</strong> MARGIN &lt;size of hyphenation margin&gt;<wbr>
 <br>
-Macro: <strong>HY</strong> <var>SPACE &lt;extra interword spacing to prevent 
hyphenation&gt;</var>
+<nobr>Macro: <strong>HY</strong> SPACE &lt;extra interword spacing to prevent 
hyphenation&gt;<wbr>
 <br>
-Macro: <strong>HY</strong> <var>DEFAULT</var>
+<nobr>Macro: <strong>HY</strong> DEFAULT<wbr>
 <br>
 Aliases: <strong>HYPHENATE, HYPHENATION</strong>
 
@@ -1898,7 +1898,7 @@
 <hr width="66%" align="left">
 <a name="HY_SET"><h3><u>Set hyphenation parameters all at once</u></h3></a>
 <br>
-Macro: <strong>HY_SET</strong> <var>&lt;lines&gt; [ &lt;margin&gt; [ 
&lt;space&gt; ] ]</var>
+<nobr>Macro: <strong>HY_SET</strong> &lt;lines&gt; [ &lt;margin&gt; [ 
&lt;space&gt; ] ]<wbr>
 <br>
 Alias: <strong>HYSET</strong>
 
@@ -1947,7 +1947,7 @@
 <hr width="66%" align="left">
 <a name="RW"><h3><u>Reduce whitespace</u></h3></a>
 <br>
-Macro: <strong>RW</strong> <var>&lt;amount of whitespace reduction between 
letters&gt;</var>
+<nobr>Macro: <strong>RW</strong> &lt;amount of whitespace reduction between 
letters&gt;<wbr>
 <br>
 
 <p>
@@ -2011,7 +2011,7 @@
 <hr width="66%" align="left">
 <a name="EW"><h3><u>Expand whitespace</u></h3></a>
 <br>
-Macro: <strong>EW</strong> <var>&lt;amount of whitespace expansion between 
letters&gt;</var>
+<nobr>Macro: <strong>EW</strong> &lt;amount of whitespace expansion between 
letters&gt;<wbr>
 <br>
 
 <p>
@@ -2068,7 +2068,7 @@
 <hr width="66%" align="left">
 <a name="BR_AT_LINE_KERN"><h3><u>Break before line kerning</u></h3></a>
 <br>
-Macro: <strong>BR_AT_LINE_KERN</strong> <var>toggle</var>
+<nobr>Macro: <strong>BR_AT_LINE_KERN</strong> toggle<wbr>
 <br>
 
 <p>
@@ -2106,7 +2106,7 @@
 <hr width="66%" align="left">
 <a name="KERN"><h3><u>Automatic kerning</u></h3></a>
 <br>
-Macro: <strong>KERN</strong> <var>toggle</var>
+<nobr>Macro: <strong>KERN</strong> toggle<wbr>
 <br>
 
 <p>
@@ -2127,7 +2127,7 @@
 <hr width="66%" align="left">
 <a name="LIGATURES"><h3><u>Automatic ligature generation</u></h3></a>
 <br>
-Macro: <strong>LIGATURES</strong> <var>toggle</var>
+<nobr>Macro: <strong>LIGATURES</strong> toggle<wbr>
 <br>
 Alias: <strong>LIG</strong>
 
@@ -2202,7 +2202,7 @@
 <hr width="66%" align="left">
 <a name="SETSLANT"><h3><u>Set degree of slant for 
pseudo-italicizing</u></h3></a>
 <br>
-Macro: <strong>SETSLANT</strong> <var>&lt;degrees to slant type&gt; | 
RESET</var>
+<nobr>Macro: <strong>SETSLANT</strong> &lt;degrees to slant type&gt; | 
RESET<wbr>
 
 <p>
 Pseudo-italicizing of type is accomplished by slanting a roman font
@@ -2276,7 +2276,7 @@
 <hr width="66%" align="left">
 <a name="SETBOLDER"><h3><u>Set amount of emboldening</u></h3></a>
 <br>
-Macro: <strong>SETBOLDER</strong> <var>&lt;amount of emboldening, in machine 
units&gt; | RESET</var>
+<nobr>Macro: <strong>SETBOLDER</strong> &lt;amount of emboldening, in machine 
units&gt; | RESET<wbr>
 
 <p>
 Emboldening of type is accomplished by printing characters
@@ -2351,7 +2351,7 @@
 <hr width="66%" align="left">
 <a name="CONDENSE"><h3><u>Set percentage for pseudo-condensed type</u></h3></a>
 <br>
-Macro: <strong>CONDENSE</strong> <var>&lt;pseudo-condense percentage&gt;</var>
+<nobr>Macro: <strong>CONDENSE</strong> &lt;pseudo-condense percentage&gt;<wbr>
 
 <p>
 Pseudo-condensing of type is accomplished by reducing the width of
@@ -2435,7 +2435,7 @@
 <hr width="66%" align="left">
 <a name="EXTEND"><h3><u>Set percentage for pseudo-extended type</u></h3></a>
 <br>
-Macro: <strong>EXTEND</strong> <var>&lt;pseudo-extend percentage&gt;</var>
+<nobr>Macro: <strong>EXTEND</strong> &lt;pseudo-extend percentage&gt;<wbr>
 
 <p>
 Pseudo-extending of type is accomplished by increasing the width of
@@ -2541,7 +2541,7 @@
 <hr width="66%" align="left">
        <a name="ALD"><h3><u>Advance Lead (move downward)</u></h3></a>
 <br>
-Macro: <strong>ALD</strong> <var>&lt;distance to move downward&gt;</var>
+<nobr>Macro: <strong>ALD</strong> &lt;distance to move downward&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -2599,7 +2599,7 @@
 <hr width="66%" align="left">
        <a name="RLD"><h3><u>Reverse Lead (move upward)</u></h3></a>
 <br>
-Macro: <strong>RLD</strong> <var>&lt;distance to move upward&gt;</var>
+<nobr>Macro: <strong>RLD</strong> &lt;distance to move upward&gt;<wbr>
 <br>
 <em>*Requires a <a href="definitions.html#TERMS_UNITOFMEASURE">unit of 
measure</a></em>
 
@@ -3056,7 +3056,7 @@
 <hr width="66%" align="left">
        <a name="TAB_SET"><h3><u>Set up typesetting tabs</u></h3></a>
 <br>
-Macro: <strong>TAB_SET</strong> <var>&lt;tab number&gt; &lt;indent&gt; 
&lt;length&gt;  L | R | C | J [ QUAD ]</var>
+<nobr>Macro: <strong>TAB_SET</strong> &lt;tab number&gt; &lt;indent&gt; 
&lt;length&gt;  L | R | C | J [ QUAD ]<wbr>
 <br>
 <em>*&lt;indent&gt; and &lt;length&gt; require a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -3220,7 +3220,7 @@
 <a href="goodies.html#PAD">PAD</a>
 to set up string tabs in centered or flush right lines.  Say, for
 example, you want to use a string tab to underscore the text of a
-centered line with a thick rule.  Rather than this,
+centered line with a rule.  Rather than this,
 <p>
 <pre>
        .CENTER
@@ -3257,7 +3257,7 @@
 <hr width="66%" align="left">
        <a name="ST"><h3><u>Set string tabs</u></h3></a>
 <br>
-Macro: <strong>ST</strong> <var>&lt;tab number&gt;  L | R | C | J [ QUAD 
]</var>
+<nobr>Macro: <strong>ST</strong> &lt;tab number&gt;  L | R | C | J [ QUAD 
]<wbr>
 
 <p>
 After string tabs have been marked off on an input line (see
@@ -3298,7 +3298,7 @@
 <hr width="66%" align="left">
 <a name="TAB"><h3><u>Call tabs</u></h3></a>
 <br>
-Macro: <strong>TAB</strong> <var>&lt;tab number&gt;</var>
+<nobr>Macro: <strong>TAB</strong> &lt;tab number&gt;<wbr>
 <br>
 Alias: <strong>TB</strong>
 <p>
@@ -3612,7 +3612,7 @@
 <hr width="66%" align="left">
 <a name="MCX"><h3><u>Exit multi-columns</u></h3></a>
 <br>
-Macro: <strong>MCX</strong> <var>[ &lt;distance to advance below longest 
column&gt; ]</var>
+<nobr>Macro: <strong>MCX</strong> [ &lt;distance to advance below longest 
column&gt; ]<wbr>
 <br>
 <em>*Optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -3628,7 +3628,7 @@
 in effect <em>at the moment <strong>MCX</strong> is
 invoked.</em>
 <p>
-If you pass the <var>&lt;distance&gt;</var> argument to
+If you pass the <nobr>&lt;distance&gt; argument to<wbr>
 <strong>MCX</strong>, it advances 1 linespace below the longest
 column (see above) PLUS the distance specified by the argument.
 The argument requires a unit of measure; therefore, to advance
@@ -3844,7 +3844,7 @@
 <hr width="66%" align="left">
 <a name="IL"><h3><u>Indent left</u></h3></a>
 <br>
-Macro: <strong>IL</strong> <var>[ &lt;measure&gt; ]</var>
+<nobr>Macro: <strong>IL</strong> [ &lt;measure&gt; ]<wbr>
 <br>
 <em>*The optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -3887,7 +3887,7 @@
 <hr width="66%" align="left">
 <a name="IR"><h3><u>Indent right</u></h3></a>
 <br>
-Macro: <strong>IR</strong> <var>[ &lt;measure&gt; ]</var>
+<nobr>Macro: <strong>IR</strong> [ &lt;measure&gt; ]<wbr>
 <br>
 <em>*The optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -3928,7 +3928,7 @@
 <hr width="66%" align="left">
 <a name="IB"><h3><u>Indent both</u></h3></a>
 <br>
-Macro: <strong>IB</strong> <var>[ &lt;left measure&gt; &lt;right measure&gt; 
]</var>
+<nobr>Macro: <strong>IB</strong> [ &lt;left measure&gt; &lt;right measure&gt; 
]<wbr>
 <br>
 <em>*The optional arguments require a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -3981,7 +3981,7 @@
 <hr width="66%" align="left">
 <a name="TI"><h3><u>Temporary (left) indent</u></h3></a>
 <br>
-Macro: <strong>TI</strong> <var>[ &lt;measure&gt; ]</var>
+<nobr>Macro: <strong>TI</strong> [ &lt;measure&gt; ]<wbr>
 <br>
 <em>*The optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -4026,7 +4026,7 @@
 <hr width="66%" align="left">
 <a name="HI"><h3><u>Hanging indent</u></h3></a>
 <br>
-Macro: <strong>HI</strong> <var>[ &lt;measure&gt; ]</var>
+<nobr>Macro: <strong>HI</strong> [ &lt;measure&gt; ]<wbr>
 <br>
 <em>*The optional argument requires a <a 
href="definitions.html#TERMS_UNITOFMEASURE">unit of measure</a></em>
 
@@ -4141,13 +4141,13 @@
 <hr width="66%" align="left">
 <a name="IQ"><h3><u>Quitting indents</u></h3></a>
 <br>
-Macro: <strong>IQ</strong>&nbsp;&nbsp;<var>[ CLEAR ]&nbsp;&nbsp;</var>(quit 
any/all indents -- see <strong>*IMPORTANT NOTE</strong>)
+<nobr>Macro: <strong>IQ</strong>&nbsp;&nbsp;[ CLEAR ]&nbsp;&nbsp;(quit any/all 
indents -- see <strong>*IMPORTANT NOTE</strong>)<wbr>
 <br>
-Macro: <strong>ILX</strong>&nbsp;<var>[ CLEAR ]&nbsp;&nbsp;</var>(exit 
<strong>I</strong>ndent <strong>L</strong>eft)
+<nobr>Macro: <strong>ILX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit 
<strong>I</strong>ndent <strong>L</strong>eft)<wbr>
 <br>
-Macro: <strong>IRX</strong>&nbsp;<var>[ CLEAR ]&nbsp;&nbsp;</var>(exit 
<strong>I</strong>ndent <strong>R</strong>ight)
+<nobr>Macro: <strong>IRX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit 
<strong>I</strong>ndent <strong>R</strong>ight)<wbr>
 <br>
-Macro: <strong>IBX</strong>&nbsp;<var>[ CLEAR ]&nbsp;&nbsp;</var>(exit 
<strong>I</strong>ndent <strong>B</strong>oth)
+<nobr>Macro: <strong>IBX</strong>&nbsp;[ CLEAR ]&nbsp;&nbsp;(exit 
<strong>I</strong>ndent <strong>B</strong>oth)<wbr>
 
 <p>
 <strong>*IMPORTANT NOTE:</strong>
Index: groff/contrib/mom/momdoc/using.html
diff -u groff/contrib/mom/momdoc/using.html:1.6 
groff/contrib/mom/momdoc/using.html:1.7
--- groff/contrib/mom/momdoc/using.html:1.6     Mon Aug  9 09:07:48 2004
+++ groff/contrib/mom/momdoc/using.html Sat May 14 07:07:13 2005
@@ -185,7 +185,7 @@
 gxditview. Invoke it with
 <p>
 <pre>
-       groff -X -mom &lt;filename&gt;
+       groff -X -mom filename
 </pre>
 
 It's not particularly pretty, doesn't have many navigation
@@ -201,18 +201,24 @@
 <p>
 A surer way to preview documents is with <strong>gv</strong>
 (ghostview).  This involves processing documents with groff,
-directing the output to a temporary (PostScript) file, then opening
-the temporary file in <strong>gv</strong>.  While that may sound
-like a lot of work, I've set up my editor (elvis) to do it for me.
-Whenever I'm working on a document that needs previewing/checking,
-I fire up <strong>gv</strong> with the &quot;Watch File&quot;
-option turned on.  To look at the file, I tell elvis to process
-it (with groff) and send it to a temporary file (<kbd>groff
--mom filename &gt; filename.ps</kbd>), then open the file inside
-<strong>gv</strong>.  Ever after, when I want to look at any changes
-I make, I simply tell elvis to work his magic again.  The Watch File
-option in <strong>gv</strong> registers that the file has changed,
-and automatically loads the new version.  Voilà! -- instant previewing.
+and directing the output to a PostScript file, like this,
+<p>
+<pre>
+       groff -mom filename &gt; filename.ps
+</pre>
+then opening .ps file in <strong>gv</strong>.
+<p>
+While that may sound like a lot of work, I've set up my editor
+(elvis) to do it for me.  Whenever I'm working on a document that
+needs previewing/checking, I fire up <strong>gv</strong> with the
+&quot;Watch File&quot; option turned on.  To look at the file, I
+tell elvis to process it (with groff) and send it to a temporary
+file (<kbd>groff -mom filename &gt; filename.ps</kbd>), then open
+the file inside <strong>gv</strong>.  Ever after, when I want to
+look at any changes I make, I simply tell elvis to work his magic
+again.  The Watch File option in <strong>gv</strong> registers that
+the file has changed, and automatically loads the new version.
+Voilà! --instant previewing.
 
 <p>
 <hr>
Index: groff/contrib/mom/om.tmac
diff -u groff/contrib/mom/om.tmac:1.26 groff/contrib/mom/om.tmac:1.27
--- groff/contrib/mom/om.tmac:1.26      Mon Jan 24 08:23:21 2005
+++ groff/contrib/mom/om.tmac   Sat May 14 07:07:12 2005
@@ -1,49 +1,47 @@
 .\" om.tmac
-.\"
-.\" Mom -- a typesetting/document-processing macro set for groff.
-.\"
-.\" Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-.\"      Written by Peter Schaffter (address@hidden)
-.\"
-.\" This file is part of groff.
-.\"
-.\" groff is free software; you can redistribute it and/or modify it under
-.\" the terms of the GNU General Public License as published by the Free
-.\" Software Foundation; either version 2, or (at your option) any later
-.\" version.
-.\"
-.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
-.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-.\" for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License along
-.\" with groff; see the file COPYING.  If not, write to the Free Software
-.\" Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-.\"
-.\"
-.\"
-\# Version 1.2-f
-\# -------------
-\#
-\# 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.
-\#
-\# By those standards, mom is a Rube Goldberg contraption.  She was
-\# created over the years while groff, and my understanding of it,
-\# changed and evolved.  However, I'm a firm believer in "if it
-\# ain't broke, don't fix it," so I'm leaving any major clean-up
-\# of redundancies and whatnot for a rainy day.
-\#
-\# Inasmuch as possible, macros that turn a feature on or off follow
-\# a similar style.  Invoking the macro without an argument turns
-\# the feature on.  Invoking it with any other argument turns it off.
-\# Use of the argument OFF is recommended, but not required; users
-\# may find other conventions preferable (e.g. NO, X, END, QUIT, etc.).
-\#
-\# "<anything>" in the description of arguments that can be passed
-\# to a macro means that any argument turns the feature off.
+.ig
+Mom -- a typesetting/document-processing macro set for groff.
+
+Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+     Written by Peter Schaffter (address@hidden)
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING.  If not, write to the Free Software
+Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Version 1.3
+-----------
+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.
+
+By those standards, mom is a Rube Goldberg contraption.  She was
+created over the years while groff, and my understanding of it,
+changed and evolved.  However, I'm a firm believer in "if it
+ain't broke, don't fix it," so I'm leaving any major clean-up
+of redundancies and whatnot for a rainy day.
+
+Inasmuch as possible, macros that turn a feature on or off follow
+a similar style.  Invoking the macro without an argument turns
+the feature on.  Invoking it with any other argument turns it off.
+Use of the argument OFF is recommended, but not required; users
+may find other conventions preferable (e.g. NO, X, END, QUIT, etc.).
+
+"<anything>" in the description of arguments that can be passed
+to a macro means that any argument turns the feature off.
+..
 \#
 \# ====================================================================
 \#
@@ -53,6 +51,8 @@
 \# Check that GNU troff is being run
 .if !\n[.g]=1 \
 .  ab The mom macros require that you be running GNU troff.
+.if \n(.C \
+.   ab The groff mom macros do not work in compatibility mode.
 \# Add supplementary styles
 .sty \n[.fp] L       \"  Light Roman
 .sty \n[.fp] LI      \"  Light Italic
@@ -129,28 +129,30 @@
 .cflags 4 /\(en      \" So slash and en-dashes get broken
 .warn 8192
 \#
-\# About the warn level
-\# --------------------
-\#
-\# There's a lot of testing for the presence of number registers and
-\# strings in this macro file.  Many of the registers and strings
-\# pop into and out of existence on the fly.  For convenience, I
-\# often use
-\# 
-\#     .if \\n[whatever]    and    .if !\\n[whatever]
-\# 
-\# to test "if the register exists and is not empty." groff,
-\# encountering such tests when called with the -ww options, emits
-\# 
-\#     warning: number register whatever not defined.
-\# 
-\# Groff also warns about strings similarly tested for
-\# 
-\# The warn level, above, is high in order to shut off those
-\# warnings.  If you're futzing in this file and need more verbose
-\# warnings, either comment out ".warn 8192" or set the warnlevel
-\# to the one you need (but be ready for lots of what I've just
-\# described).
+.ig
+About the warn level
+--------------------
+
+There's a lot of testing for the presence of number registers and
+strings in this macro file.  Many of the registers and strings
+pop into and out of existence on the fly.  For convenience, I
+often use
+
+    .if \\n[whatever]    and    .if !\\n[whatever]
+
+to test "if the register exists and is (not) empty."  Groff,
+encountering such tests when called with the -ww options, emits
+
+    warning: number register whatever not defined.
+
+Groff also warns about strings similarly tested for.
+
+The warn level, above, is high in order to shut off those
+warnings.  If you're futzing in this file and need more verbose
+warnings, either comment out ".warn 8192" or set the warnlevel
+to the one you need (but be ready for lots of what I've just
+described).
+..
 \#
 \# ====================================================================
 \#
@@ -335,6 +337,7 @@
 \#
 .MAC NEWPAGE END
 .    br
+.    nr #NEWPAGE 1
 .    ie \\n[#B_MARGIN_SET]=1 \{\
 .       ie !\\n[#DOCS]=1 \{\
 .          ev NP
@@ -433,8 +436,14 @@
 \#   to $FAMILY.
 \#
 .MAC FAMILY END
-.    if \\n[#PRINT_STYLE]=1 \{ .return \}
-.    if \\n[#IGNORE]        \{ .return \}
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       fam C
+.       return
+.    \}
+.    if \\n[#IGNORE] \{\
+.       fam C
+.       return
+.    \}
 .    if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\
 .       ds $SAVED_STYLE \\n[.sty]
 .    \}
@@ -553,6 +562,7 @@
 \#   Does not require unit of measure.  LS automatically turns off AUTOLEAD.
 \#
 .MAC LS END
+.    br
 .    nr #OLD_LEAD \\n(.v
 .    if \\n[#PRINT_STYLE]=1 \{ .return \}
 .    if \\n[#IGNORE]        \{ .return \}
@@ -645,33 +655,35 @@
 .END
 \#
 \#
-\# INLINE KERNING AND HORIZONTAL MOVEMENT
-\# --------------------------------------
-\# *Kerning
-\#  Inline kerning provides a simple method for users to adjust the
-\#  amount of space between any two letters.  It's predicated on a
-\#  unit of measure "U", which is 1/36 of the current point size as
-\#  returned by \n[.ps].  E.g., if the current point size is 18,
-\#  \n[.ps] returns 18000u, therefore U=500u.  Since U remains
-\#  proportional relative to the current point size, the amount
-\#  of kerning between two letters as expressed in Us remains
-\#  visually similar regardless of changes in point size.
-\#
-\#  N.B.--the amount of inline kerning supplied by \*[BU<n>] or
-\#  \*[FU<n>] is added to or subtracted from any kerning that already
-\#  takes place between two characters when automatic kerning is
-\#  turned on.
-\#
-\#  In groff v. 1.17.2, it was not possible to pass arguments to macros that
-\#  were called with inline escapes, nor thence to evaluate conditional
-\#  expressions.  Consequently, each pseudo-escape \[BU<n>] had to be defined
-\#  separately with ".char".
-\#
-\#  As of v. 1.18, one can pass arguments to inline strings/macros,
-\#  hence it is now possible to do \*[BU n] where n, inline, is the desired
-\#  number of kern units.  The original .char definitions have been left in
-\#  for backward compatibility with documents created prior to mom-1.1.3c.
-\#
+.ig
+INLINE KERNING AND HORIZONTAL MOVEMENT
+--------------------------------------
+Kerning
+
+Inline kerning provides a simple method for users to adjust the
+amount of space between any two letters.  It's predicated on a
+unit of measure "U", which is 1/36 of the current point size as
+returned by \n[.ps].  E.g., if the current point size is 18,
+\n[.ps] returns 18000u, therefore U=500u.  Since U remains
+proportional relative to the current point size, the amount
+of kerning between two letters as expressed in Us remains
+visually similar regardless of changes in point size.
+
+N.B.--the amount of inline kerning supplied by \*[BU<n>] or
+\*[FU<n>] is added to or subtracted from any kerning that already
+takes place between two characters when automatic kerning is
+turned on.
+
+In groff v. 1.17.2, it was not possible to pass arguments to macros that
+were called with inline escapes, nor thence to evaluate conditional
+expressions.  Consequently, each pseudo-escape \[BU<n>] had to be defined
+separately with ".char".
+
+As of v. 1.18, one can pass arguments to inline strings/macros,
+hence it is now possible to do \*[BU n] where n, inline, is the desired
+number of kern units.  The original .char definitions have been left in
+for backward compatibility with documents created prior to mom-1.1.3c.
+..
 \#
 .nr #KERN_UNIT 36
 .ds BU   \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)'
@@ -690,13 +702,15 @@
 .\}
 .rr #LOOP
 \#
-\#
-\# *Horizontal movements
-\#  BP1...12.75 and FP1...12.75 move backwards or forwards inline by the
-\#  specified number of points.
-\#  Left in for backward compatibility with mom-1.1.3c, the
-\#  preferred methods for inline horizontal movements are now
-\#  \*[BCK <n><unit>] and \*[FWD <n><unit>].
+.ig
+Horizontal movements
+
+BP1...12.75 and FP1...12.75 move backwards or forwards inline by the
+specified number of points.
+Left in for backward compatibility with mom-1.1.3c, the
+preferred methods for inline horizontal movements are now
+\*[BCK <n><unit>] and \*[FWD <n><unit>].
+..
 \#
 .ds BCK  \h'-\\$1'
 .ds FWD  \h'\\$1'
@@ -808,10 +822,13 @@
 \#
 \# WHOLE LINE KERNING (RW and EW)
 \# -----------------------------
-\# The line kerning macros are special instances of track kerning,
-\# used where a complete line needs to be tightened (or relaxed) in
-\# order to accomodate or remove one or two more characters
-\# than the default justification permits.
+\#
+.ig
+The line kerning macros are special instances of track kerning,
+used where a complete line needs to be tightened (or relaxed) in
+order to accomodate or remove one or two more characters
+than the default justification permits.
+..
 \#
 \# *Argument:
 \#   <amount of overall "kerning" (letter spacing) to apply to the line>
@@ -825,22 +842,24 @@
 \# *Notes:
 \#   Decimal values are acceptable.
 \#
-\#   The groff documentation is a tad confusing about what unit of
-\#   measure is used in track kerning, only that the width of each
-\#   character is increased or decreased by the amount(s) passed as
-\#   arguments to .tkf, and something about linear function of point
-\#   size.  In fact, with the way I've put this macro together, it
-\#   doesn't matter.  All the user needs to know is that a value
-\#   of one will produce an unacceptably tight or loose line at most
-\#   text point sizes; therefore, effective use of RW and EW is in
-\#   the fractional range below 1 (e.g. .25, .5).  Given that RW
-\#   and EW are for massaging type, a certain amount of
-\#   experimentation and previewing is expected and necessary.
-\#
-\#   \n(.f holds the current font number, which is acceptable to .tkf.
-\#
-\#   RW and EW must be reset to 0 to cancel their effect on
-\#   subsequent output lines.
+.ig
+The groff documentation is a tad confusing about what unit of
+measure is used in track kerning, only that the width of each
+character is increased or decreased by the amount(s) passed as
+arguments to .tkf, and something about linear function of point
+size.  In fact, with the way I've put this macro together, it
+doesn't matter.  All the user needs to know is that a value of
+one will produce an unacceptably tight or loose line at most text
+point sizes; therefore, effective use of RW and EW is in the
+fractional range below 1 (e.g. .25, .5).  Given that RW and EW
+are for massaging type, a certain amount of experimentation and
+previewing is expected and necessary.
+
+\n(.f holds the current font number, which is acceptable to .tkf.
+
+RW and EW must be reset to 0 to cancel their effect on subsequent
+output lines.
+..
 \#
 .MAC RW END
 .    if \\n[#BR_AT_LINE_KERN] \{\
@@ -1008,11 +1027,13 @@
 \#
 \# ALD/RLD STRINGS
 \# ---------------
-\# The strings \*[ALD.25]...\*[ALD12.75] and their corresponding
-\# \*[RLD] forms have been left in for backward compatibility with
-\# documents created using mom-1.1.3c or earlier.  The prefered
-\# methods of advancing and reversing on the page inline are
-\# \*[UP <n><unit>] and \*[DOWN <n><unit>].
+.ig
+The strings \*[ALD.25]...\*[ALD12.75] and their corresponding
+\*[RLD] forms have been left in for backward compatibility with
+documents created using mom-1.1.3c or earlier.  The prefered methods
+of advancing and reversing on the page inline are \*[UP <n><unit>]
+and \*[DOWN <n><unit>].
+..
 \#
 .ds DOWN      \v'\\$1'
 .ds UP        \v'-\\$1'
@@ -1367,13 +1388,16 @@
 \#
 \# LEFT, RIGHT, AND CENTER
 \# -----------------------
-\# The purpose of these macros is to allow the user to enter lines
-\# of text that will be quadded LRC *without* the user having to
-\# enter .BR or .br between lines.  For the sake of consistency,
-\# all three appear to behave similarly (from the point of view of the user),
-\# although the underlying primitives don't.  For this reason, LEFT,
-\# RIGHT, and CENTER must be followed by .QUAD [L R C J] or .JUSTIFY
-\# to restore text to groff fill mode.
+\#
+.ig
+The purpose of these macros is to allow the user to enter lines of
+text that will be quadded LRC *without* the user having to enter .BR
+or .br between lines.  For the sake of consistency, all three appear
+to behave similarly (from the point of view of the user), although
+the underlying primitives don't.  For this reason, LEFT, RIGHT, and
+CENTER must be followed by .QUAD [L R C J] or .JUSTIFY to restore
+text to groff fill mode.
+..
 \#
 \# LEFT
 \# ----
@@ -1396,7 +1420,7 @@
 .    ce 0
 .    nf
 .    nr #PSEUDO_FILL 1
-\# Fix for a little conflict with DOCTYPE LETTER 
+.\" Fix for a little conflict with DOCTYPE LETTER 
 .    if '\\n(.z'LETTERHEAD1' \{ .rr #DATE_FIRST \}
 .END
 \#
@@ -1448,33 +1472,35 @@
 \#
 \# +++TABS+++
 \#
-\#   There are two different kinds of tabs available: typesetting tabs
-\#   and string tabs.
-\#
-\#   Typesetting tabs are set with TAB_SET, which requires a tab number,
-\#   an indent (offset) from the left margin and a length (optionally
-\#   with a quad direction and an instruction to fill lines).  After tabs
-\#   are set with TAB_SET, they are called with .TAB n, where "n"
-\#   corresponds to the number passed to TAB_SET as a valid tab number.
-\#
-\#   String tabs allow the user to mark off tab positions inline.  Tab
-\#   indents and lengths are calculated from the beginning and end
-\#   positions of the marks.  Up to 19 string tabs may be created,
-\#   numbered 1-19.  Once created, they are called with .TAB n,
-\#   just like typesetting tabs.
-\#
-\#   Setting up string tabs is a two-step procedure.  First, the user
-\#   enters an input line in which s/he wants to mark off string tabs.
-\#   The beginning of a tab is marked with \*[STn], where "n" is
-\#   the desired number of the tab.  The end of the the tab is marked
-\#   with \*[STnX].  All ST's must have a matching STX.  String tabs
-\#   may be nested.
-\#
-\#   Next, the user invokes .ST n for every string tab defined, and
-\#   optionally passes quad information to it.  That done, string tabs
-\#   can be called just like typesetting tabs.
-\#
-\#   String tabs don't preview properly with gxditview.  Use gv instead.
+.ig
+There are two different kinds of tabs available: typesetting tabs
+and string tabs.
+
+Typesetting tabs are set with TAB_SET, which requires a tab number,
+an indent (offset) from the left margin and a length (optionally
+with a quad direction and an instruction to fill lines).  After tabs
+are set with TAB_SET, they are called with .TAB n, where "n"
+corresponds to the number passed to TAB_SET as a valid tab number.
+
+String tabs allow the user to mark off tab positions inline.  Tab
+indents and lengths are calculated from the beginning and end
+positions of the marks.  Up to 19 string tabs may be created,
+numbered 1-19.  Once created, they are called with .TAB n,
+just like typesetting tabs.
+
+Setting up string tabs is a two-step procedure.  First, the user
+enters an input line in which s/he wants to mark off string tabs.
+The beginning of a tab is marked with \*[STn], where "n" is
+the desired number of the tab.  The end of the the tab is marked
+with \*[STnX].  All ST's must have a matching STX.  String tabs
+may be nested.
+
+Next, the user invokes .ST n for every string tab defined, and
+optionally passes quad information to it.  That done, string tabs
+can be called just like typesetting tabs.
+
+String tabs don't preview properly with gxditview.  Use gv instead.
+..
 \#
 \# Strings for string tab inlines
 \# ------------------------------
@@ -1551,40 +1577,43 @@
 \#
 \#   N.B. -- indents *must* be turned off before setting tabs
 \#
-\#   Examples:
-\#
-\#     .TAB_SET 1 2P+6p 12P C
-\#
-\#   means "create a tab numbered 1 that starts 2 picas and 6 points from
-\#   the left margin, is 12 picas long, and centre each input line."
-\#
-\#     .TAB_SET 1 2P+6P 12P C QUAD
-\#
-\#   means exactly the same thing, except that input lines are joined and
-\#   the area delimted by the tab filled with centered text.
-\#
-\#   TAB n can be called at any time after being set.
-\#
-\#   Tabs are NOT columnar in behaviour.  If the text inside a
-\#   tab runs to several lines, when you call the next tab a break
-\#   occurs, meaning that the new tab starts one line below the last
-\#   line in the previous tab.  For columnar behaviour, you must
-\#   use the multi-column macros in addition to tabs.
-\#
-\#   If you want tabs to line up bottom-line to bottom-line (most likely
-\#   single line tabs), use .TN (provided the tabs are numbered sequentially).
-\#   Otherwise, you must use .EL then .TAB <n> if you want them to align.
-\#
-\#   If you want to reset tabs, you must use .TQ before .TAB_SET.
-\#
-\#   Note that indents are turned off automatically whenever a new
-\#   tab is called with TAB <n>.
-\#
-\#   Tabs themselves are user-invoked using the TAB macro with a numeric
-\#   argument, e.g. TAB 1.
-\#
-\#   Generally, in order not to get confused, it's a good idea
-\#   to make sure all indents are off before setting tabs.
+.ig
+Examples:
+--------
+
+.TAB_SET 1 2P+6p 12P C
+
+means "create a tab numbered 1 that starts 2 picas and 6 points from
+the left margin, is 12 picas long, and centre each input line."
+
+.TAB_SET 1 2P+6P 12P C QUAD
+
+means exactly the same thing, except that input lines are joined and
+the area delimted by the tab filled with centered text.
+
+TAB n can be called at any time after being set.
+
+Tabs are NOT columnar in behaviour.  If the text inside a
+tab runs to several lines, when you call the next tab a break
+occurs, meaning that the new tab starts one line below the last
+line in the previous tab.  For columnar behaviour, you must
+use the multi-column macros in addition to tabs.
+
+If you want tabs to line up bottom-line to bottom-line (most likely
+single line tabs), use .TN (provided the tabs are numbered sequentially).
+Otherwise, you must use .EL then .TAB <n> if you want them to align.
+
+If you want to reset tabs, you must use .TQ before .TAB_SET.
+
+Note that indents are turned off automatically whenever a new
+tab is called with TAB <n>.
+
+Tabs themselves are user-invoked using the TAB macro with a numeric
+argument, e.g. TAB 1.
+
+Generally, in order not to get confused, it's a good idea
+to make sure all indents are off before setting tabs.
+..
 \#
 .MAC TAB_SET END
 .    br
@@ -1776,7 +1805,6 @@
 .    if \\n[#NUM_ARGS]=2 .ds \\$2 \m[\\$1]
 .END
 \#
-\#
 \# Pre-define xcolors black and white
 \#
 .ds black \m[black]
@@ -2376,7 +2404,8 @@
 .    if !d$PAD_MARKER .ds $PAD_MARKER #
 .    char \\*[$PAD_MARKER] \R'#PAD_COUNT \En[#PAD_COUNT]+1'
 .    ds $FAMILY_FOR_PAD \\n[.fam]
-.    fp \\n[.fp] \\*[$FONT]
+\#.    fp \\n[.fp] \\*[$FONT]
+.    fp \\n[.fp] \\n[.sty]
 .    ds $FONT_FOR_PAD   \\*[$FONT]
 .    nr #SIZE_FOR_PAD   \\n[.ps]
 .    ds $PAD_STRING \\$1
@@ -2425,14 +2454,15 @@
 \#
 \# +++LEADERS+++
 \#
-\#  The leader mechanism is primitive, but it works.  Basically,
-\#  every macro in this set that includes a line length also sets
-\#  a single groff tab stop at the right hand end of the line.
-\#  That way, whenever Ctrl-A is invoked (always at the end of
-\#  an input line), leader of the correct length gets deposited.
-\#  Ctrl-A is accessed by the string LEADER (i.e. inline, as
-\#  \*[LEADER]).  Leaders within tabs get their length from the
-\#  tab line length.
+.ig
+The leader mechanism is primitive, but it works.  Basically, every
+macro in this set that includes a line length also sets a single
+groff tab stop at the right hand end of the line.  That way,
+whenever Ctrl-A is invoked (always at the end of an input line),
+leader of the correct length gets deposited.  Ctrl-A is accessed by
+the string LEADER (i.e. inline, as \*[LEADER]).  Leaders within tabs
+get their length from the tab line length.
+..
 \#
 \# SET LEADER CHARACTER
 \# --------------------
@@ -2586,7 +2616,7 @@
 .       ps \\n[#PT_SIZE]u+100u
 .       SIZESPECS
 .       nr #GET_DC_HEIGHT \\n[#CAP_HEIGHT]
-.    \}
+.\}
 .    if d$DC_ADJUST \{ .ps \\*[$DC_ADJUST]p \}
 .    mk x
 .    sp \\n[#DC_LINES]v
@@ -2750,86 +2780,88 @@
 \#
 \# +++INDENTS+++
 \#
-\# There are five styles of indents: left, right, both, temporary,
-\# and hanging.  Each is set/invoked with a different macro.
-\# Indent macros begin with the letter "I", hence .IL means "indent left,"
-\# .IR means "indent right," and so on.
-\#
-\# The first time any of the indent macros is used, it requires an
-\# argument--the size of the indent (with a unit of measure).  The
-\# size may also be entered using the \w escape--very useful
-\# for numbered lists using HI.  The unit of measure is required.
-\# Subsequent invocations don't require the argument; the indent
-\# measure remains the same until it's changed by invoking the macro
-\# with an argument again.
-\#
-\# If no indents are in effect, the arguments passed to indent macros are
-\# measured from the left and right margins of the page.  If a left indent
-\# or a right indent is already in effect, the arguments passed to
-\# the indent macros are calculated from the current values; in other words,
-\# the arguments are additive.  If you quit an indent and later return
-\# to it, its value will be the value last in effect, unless you pass
-\# it an argument.  If you do pass an argument, it is added to the last
-\# value in effect, unless you cleared the indent with one of
-\# .I<LRB>X/Q macros.
-\#
-\# Example
-\# -------
-\#
-\# .IL 2P
-\# ...some text...
-\# .IL 2P
-\# ...some text...
-\# .IQ
-\# ...some text...
-\# .IL
-\# ...some text...
-\#
-\# The first .IL 2P indents text 2P from the left margin.  The second
-\# .IL 2P indents text by an additional 2P, i.e. 4P from the left margin.
-\# .IQ turns the indent off.  The last .IL (which has no argument)
-\# takes its value from the total of all arguments passed to .IL (in
-\# this case, 2P and 2P), therefore it indents 2P+2P from the left
-\# margin, i.e. 4P.  If you wanted the last .IL to indent just 2P,
-\# you'd either have to reset the .IL prior to .IQ (.IL -2P), or pass
-\# the last .IL the argument 2P.
-\#
-\# To reverse the sense of an indent added to an indent, you may use
-\# negative values.
-\#
-\# Indents can be turned off individually with ILX, IRX, and IBX.
-\# LEFT and RIGHT indents may be combined and manipulated
-\# separately, (e.g. you can have an IL of 2P and an IR of 4P
-\# operative at the same time, and then change, say, the IL to
-\# 4P--thereby left indenting 6P--while the IR remains at 4P.
-\#
-\# IB automatically turns off IL and IR.  They have to be reinvoked
-\# again when needed. IL and IR automatically turn IB off; it, too,
-\# has to be reinvoked with needed.
-\#
-\# All indents can be turned off at once with IQ.  The ILX, IRX, IBX,
-\# and IQ macros simply turn the indents off; the values stored in
-\# the respective indent macros (IL, IR, IB) remain in effect.  If
-\# the user wishes to clear the values, the I<LRB>X macros should be
-\# invoked with the single argument CLEAR.  IQ CLEAR clears out
-\# the values stored for all indent styles.
-\#
-\# Indents *must* be turned off before settting string tabs
-\# inside PAD.  Generally, in order not to get confused, it's a
-\# good idea to turn all indents off before setting any tabs.
-\#
-\# TI and HI are special cases.  There's no need to turn them off,
-\# since they affect only one line--the first after their
-\# invocation.  Like the other indent styles, the first time
-\# they're invoked, they require a value in iPpcm; each subsequent
-\# invocation without an argument will use the same value.  To
-\# change the value, simply pass a new value.  Values for TI and HI
-\# are *not* additive.
-\#
-\# HI presupposes that you already have a left or both indent on.
-\# HI will never hang a line outside the left margin of a document
-\# or column.  In other words, you must have IL or IB on before you
-\# can use HI.
+.ig
+There are five styles of indents: left, right, both, temporary,
+and hanging.  Each is set/invoked with a different macro.
+Indent macros begin with the letter "I", hence .IL means "indent left,"
+.IR means "indent right," and so on.
+
+The first time any of the indent macros is used, it requires an
+argument--the size of the indent (with a unit of measure).  The
+size may also be entered using the \w escape--very useful
+for numbered lists using HI.  The unit of measure is required.
+Subsequent invocations don't require the argument; the indent
+measure remains the same until it's changed by invoking the macro
+with an argument again.
+
+If no indents are in effect, the arguments passed to indent macros are
+measured from the left and right margins of the page.  If a left indent
+or a right indent is already in effect, the arguments passed to
+the indent macros are calculated from the current values; in other words,
+the arguments are additive.  If you quit an indent and later return
+to it, its value will be the value last in effect, unless you pass
+it an argument.  If you do pass an argument, it is added to the last
+value in effect, unless you cleared the indent with one of
+.I<LRB>X/Q macros.
+
+Example
+-------
+
+.IL 2P
+...some text...
+.IL 2P
+...some text...
+.IQ
+...some text...
+.IL
+...some text...
+
+The first .IL 2P indents text 2P from the left margin.  The second
+.IL 2P indents text by an additional 2P, i.e. 4P from the left margin.
+.IQ turns the indent off.  The last .IL (which has no argument)
+takes its value from the total of all arguments passed to .IL (in
+this case, 2P and 2P), therefore it indents 2P+2P from the left
+margin, i.e. 4P.  If you wanted the last .IL to indent just 2P,
+you'd either have to reset the .IL prior to .IQ (.IL -2P), or pass
+the last .IL the argument 2P.
+
+To reverse the sense of an indent added to an indent, you may use
+negative values.
+
+Indents can be turned off individually with ILX, IRX, and IBX.
+LEFT and RIGHT indents may be combined and manipulated
+separately, (e.g. you can have an IL of 2P and an IR of 4P
+operative at the same time, and then change, say, the IL to
+4P--thereby left indenting 6P--while the IR remains at 4P.
+
+IB automatically turns off IL and IR.  They have to be reinvoked
+again when needed. IL and IR automatically turn IB off; it, too,
+has to be reinvoked with needed.
+
+All indents can be turned off at once with IQ.  The ILX, IRX, IBX,
+and IQ macros simply turn the indents off; the values stored in
+the respective indent macros (IL, IR, IB) remain in effect.  If
+the user wishes to clear the values, the I<LRB>X macros should be
+invoked with the single argument CLEAR.  IQ CLEAR clears out
+the values stored for all indent styles.
+
+Indents *must* be turned off before settting string tabs
+inside PAD.  Generally, in order not to get confused, it's a
+good idea to turn all indents off before setting any tabs.
+
+TI and HI are special cases.  There's no need to turn them off,
+since they affect only one line--the first after their
+invocation.  Like the other indent styles, the first time
+they're invoked, they require a value in iPpcm; each subsequent
+invocation without an argument will use the same value.  To
+change the value, simply pass a new value.  Values for TI and HI
+are *not* additive.
+
+HI presupposes that you already have a left or both indent on.
+HI will never hang a line outside the left margin of a document
+or column.  In other words, you must have IL or IB on before you
+can use HI.
+..
 \#
 \# INDENT LEFT
 \# -----------
@@ -3625,7 +3657,7 @@
 .    if !d$CHAPTER_STRING        \{ .CHAPTER_STRING "Chapter" \}
 .    if !d$DRAFT_STRING          \{ .DRAFT_STRING "Draft"     \}
 .    if !d$REVISION_STRING       \{ .REVISION_STRING "Rev."   \}
-\# Default
+.\" Default
 .    if \\n[#DOC_TYPE]=1 \{\
 .       ie \\n[#COPY_STYLE]=1 \{\
 .          ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
@@ -3657,9 +3689,9 @@
 .          \}
 .       \}
 .    \}
-\# Chapter
+.\" Chapter
 .    if \\n[#DOC_TYPE]=2 \{\
-\# Copystyle DRAFT
+.\" Copystyle DRAFT
 .       ie \\n[#COPY_STYLE]=1 \{\
 .          ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
 .          el \{ .PAGENUM_STYLE roman \}
@@ -3669,13 +3701,13 @@
 .                   ie !'\\*[$CHAPTER_TITLE]'' \{\
 .                      ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
 .                   \}
-.                   el \{ .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING]\}
+.                   el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING]
 .                \}
 .                el \{\
 .                   ie !'\\*[$CHAPTER_TITLE]'' \{\
 .                      ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
 .                   \}
-.                   el \{ .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] 
\\*[$CHAPTER]\}
+.                   el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] \\*[$CHAPTER]
 .                \}
 .             \}
 .             el \{\
@@ -3788,7 +3820,7 @@
 .             \}
 .          \}
 .       \}
-\# Copystyle FINAL
+.\" Copystyle FINAL
 .       el \{\
 .          if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \}
 .          if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
@@ -3813,7 +3845,7 @@
 .          \}
 .       \}
 .    \}
-\# Named
+.\" Named
 .    if \\n[#DOC_TYPE]=3 \{\
 .       ie \\n[#COPY_STYLE]=1 \{\
 .          ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
@@ -3895,8 +3927,8 @@
 \#
 \#
 .MAC DRAFT END \"Draft number
-.    ie '\\$1'' \{ .ds $DRAFT \}
-.    el         \{ .ds $DRAFT " \\$1\}
+.    ie '\\$1'' .ds $DRAFT 
+.    el         .ds $DRAFT " \\$1
 .END
 \#
 \#
@@ -3914,7 +3946,7 @@
 .    nr #AUTHOR_NUM -1 1
 .    while \\n[#NUM_ARGS]>\\n[#AUTHOR_NUM] \{\
 .       ds $AUTHOR_\\n+[#AUTHOR_NUM] \\$\\n[#AUTHOR_NUM]
-.    \}
+.\}
 .    nr #NUM_AUTHORS \\n[#NUM_ARGS]%2 \"Use mod 2 to test if odd or even # of 
authors
 .    ie \\n[#NUM_AUTHORS]=1 \{ .nr #AUTHOR_LINES 0  \}
 .    el \{ .nr #AUTHOR_LINES 1 \}
@@ -3930,7 +3962,7 @@
 .    nr #MISC_NUM -1 1
 .    while \\n[#NUM_ARGS]>\\n[#MISC_NUM] \{\
 .       ds $MISC_\\n+[#MISC_NUM] \\$\\n[#MISC_NUM]
-.    \}
+.\}
 .    nr #NUM_MISCS \\n[#NUM_ARGS]
 .END
 \#
@@ -4097,15 +4129,19 @@
 \# TYPE-STYLE CONTROL MACROS
 \# -------------------------
 \#
-\# The control macros for family, font, size, quad and color are here
-\# grouped together.  Each (e.g. _FAMILY or _FONT) tests for a calling
-\# alias before performing the action(s) appropriate to the calling
-\# macro.  Defaults for all these guys are set in DEFAULTS, and
-\# listed in the "Control Macros" section of the documentation
-\# pertinent to the macro whose style is to be changed.
+.ig
+The control macros for family, font, size, quad and color are here
+grouped together.  Each (e.g. _FAMILY or _FONT) tests for a calling
+alias before performing the action(s) appropriate to the calling
+macro.  Defaults for all these guys are set in DEFAULTS, and listed
+in the "Control Macros" section of the documentation pertinent to
+the macro whose style is to be changed.
+..
 \#
 .MAC _FAMILY END
 .    if '\\$0'AUTHOR_FAMILY'                  .ds $AUTHOR_FAM \\$1
+.    if '\\$0'BIBLIOGRAPHY_FAMILY'            .ds $BIB_FAM \\$1
+.    if '\\$0'BIBLIOGRAPHY_STRING_FAMILY'     .ds $BIB_STRING_FAM \\$1
 .    if '\\$0'BLOCKQUOTE_FAMILY'              .ds $BQUOTE_FAM \\$1
 .    if '\\$0'CITATION_FAMILY'                .ds $BQUOTE_FAM \\$1
 .    if '\\$0'CITE_FAMILY'                    .ds $BQUOTE_FAM \\$1
@@ -4128,6 +4164,7 @@
 .    if '\\$0'DOCTYPE_FAMILY'                 .ds $DOCTYPE_FAM \\$1
 .    if '\\$0'ENDNOTE_FAMILY'                 .ds $EN_FAM \\$1
 .    if '\\$0'ENDNOTE_NUMBER_FAMILY'          .ds $EN_NUMBER_FAM \\$1
+.    if '\\$0'ENDNOTE_LINENUMBER_FAMILY'      .ds $EN_LN_FAM \\$1
 .    if '\\$0'ENDNOTE_STRING_FAMILY'          .ds $EN_STRING_FAM \\$1
 .    if '\\$0'ENDNOTE_TITLE_FAMILY'           .ds $EN_TITLE_FAM \\$1
 .    if '\\$0'EPIGRAPH_FAMILY'                .ds $EPI_FAM \\$1
@@ -4161,6 +4198,8 @@
 \#
 .MAC _FONT END
 .    if '\\$0'AUTHOR_FONT'                  .ds $AUTHOR_FT \\$1
+.    if '\\$0'BIBLIOGRAPHY_FONT'            .ds $BIB_FT \\$1
+.    if '\\$0'BIBLIOGRAPHY_STRING_FONT'     .ds $BIB_STRING_FT \\$1
 .    if '\\$0'BLOCKQUOTE_FONT'              .ds $BQUOTE_FT \\$1
 .    if '\\$0'CITATION_FONT'                .ds $BQUOTE_FT \\$1
 .    if '\\$0'CITE_FONT'                    .ds $BQUOTE_FT \\$1
@@ -4180,6 +4219,7 @@
 .    if '\\$0'DOCTYPE_FONT'                 .ds $DOCTYPE_FT \\$1
 .    if '\\$0'ENDNOTE_FONT'                 .ds $EN_FT \\$1
 .    if '\\$0'ENDNOTE_NUMBER_FONT'          .ds $EN_NUMBER_FT \\$1
+.    if '\\$0'ENDNOTE_LINENUMBER_FONT'      .ds $EN_LN_FT \\$1
 .    if '\\$0'ENDNOTE_STRING_FONT'          .ds $EN_STRING_FT \\$1
 .    if '\\$0'ENDNOTE_TITLE_FONT'           .ds $EN_TITLE_FT \\$1
 .    if '\\$0'EPIGRAPH_FONT'                .ds $EPI_FT \\$1
@@ -4205,6 +4245,7 @@
 \#
 .MAC _SIZE END
 .    if '\\$0'AUTHOR_SIZE'                  .ds $AUTHOR_SIZE_CHANGE \\$1
+.    if '\\$0'BIBLIOGRAPHY_STRING_SIZE'     .ds $BIB_STRING_SIZE_CHANGE \\$1
 .    if '\\$0'BLOCKQUOTE_SIZE'              .ds $BQUOTE_SIZE_CHANGE \\$1
 .    if '\\$0'CITATION_SIZE'                .ds $BQUOTE_SIZE_CHANGE \\$1
 .    if '\\$0'CITE_SIZE'                    .ds $BQUOTE_SIZE_CHANGE \\$1
@@ -4223,6 +4264,7 @@
 .    if '\\$0'DOC_COVER_TITLE_SIZE'         .ds $DOC_COVER_TITLE_SIZE_CHANGE 
\\$1
 .    if '\\$0'DOCTYPE_SIZE'                 .ds $DOCTYPE_SIZE_CHANGE \\$1
 .    if '\\$0'ENDNOTE_NUMBER_SIZE'          .ds $EN_NUMBER_SIZE_CHANGE \\$1
+.    if '\\$0'ENDNOTE_LINENUMBER_SIZE'      .ds $EN_LN_SIZE_CHANGE \\$1
 .    if '\\$0'ENDNOTE_STRING_SIZE'          .ds $EN_STRING_SIZE_CHANGE \\$1
 .    if '\\$0'ENDNOTE_TITLE_SIZE'           .ds $EN_TITLE_SIZE_CHANGE \\$1 
 .    if '\\$0'EPIGRAPH_SIZE'                .ds $EPI_SIZE_CHANGE \\$1
@@ -4421,6 +4463,12 @@
 \#
 \#
 .MAC _QUAD END
+.    if '\\$0'BIBLIOGRAPHY_QUAD' \{\
+.       ds $BIB_QUAD \\$1
+.       if '\\*[$BIB_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or 
J
+.       if '\\*[$BIB_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or 
J
+.    \}
+.    if '\\$0'BIBLIOGRAPHY_STRING_QUAD' .ds $BIB_STRING_QUAD \\$1
 .    if '\\$0'BLOCKQUOTE_QUAD'          .ds $BQUOTE_QUAD \\$1
 .    if '\\$0'CITATION_QUAD'            .ds $BQUOTE_QUAD \\$1
 .    if '\\$0'CITE_QUAD'                .ds $BQUOTE_QUAD \\$1
@@ -4432,7 +4480,11 @@
 .        ds $DOC_QUAD \\$1
 .        QUAD \\*[$DOC_QUAD]
 .    \}
-.    if '\\$0'ENDNOTE_QUAD'             .ds $EN_QUAD \\$1
+.    if '\\$0'ENDNOTE_QUAD' \{\
+.       ds $EN_QUAD \\$1
+.       if '\\*[$EN_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or J
+.       if '\\*[$EN_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or J
+.    \}
 .    if '\\$0'ENDNOTE_STRING_QUAD'      .ds $EN_STRING_QUAD \\$1
 .    if '\\$0'ENDNOTE_TITLE_QUAD'       .ds $EN_TITLE_QUAD \\$1
 .    if '\\$0'EPIGRAPH_QUAD'            .ds $EPI_QUAD \\$1
@@ -4510,14 +4562,14 @@
 .    \}
 .    if !r#HDRFTR_RULE       \{ .HDRFTR_RULE        \}
 .    if !r#PAGE_NUM_SET      \{ .PAGENUMBER 1       \}
-\# Read in number registers and strings for type parameters
+.\" Read in number registers and strings for type parameters
 .    nr #DOC_L_MARGIN \\n[#L_MARGIN]
 .    nr #DOC_L_LENGTH \\n[#L_LENGTH]
 .    nr #DOC_R_MARGIN \\n[#PAGE_WIDTH]-(\\n[#DOC_L_MARGIN]+\\n[#L_LENGTH])
 .    ds $DOC_FAM      \\*[$FAMILY]
 .    nr #DOC_PT_SIZE  \\n[#PT_SIZE]
 .    nr #DOC_LEAD     \\n[#LEAD]
-\# #SAVED_DOC_LEAD is set in COLLATE
+.\" #SAVED_DOC_LEAD is set in COLLATE
 .    if r#SAVED_DOC_LEAD \{\
 .       if !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] \{ .nr #RERUN_TRAPS 1 \}
 .    \}
@@ -4529,7 +4581,7 @@
 .    \}
 .    ds $DOC_QUAD     \\*[$QUAD_VALUE]
 .    ds $PP_FT        \\*[$FONT]
-\# Counters
+.\" Counters
 .    nr #PP 0
 .    nr #FN_NUMBER 0 1
 .    nr #EN_NUMBER 0 1
@@ -4538,7 +4590,7 @@
 .    RESET_HEAD_NUMBER
 .    RESET_SUBHEAD_NUMBER
 .    RESET_PARAHEAD_NUMBER
-\# General style defaults for both PRINTSTYLEs
+.\" General style defaults for both PRINTSTYLEs
 .    nr #PP_STYLE 1
 .    PARA_INDENT \\n[#PP_INDENT]u
 .    if !d$HDRFTR_FAM           \{ .HDRFTR_FAMILY  \\*[$DOC_FAM] \}
@@ -4560,21 +4612,22 @@
 .    if \\n[#HDRFTR_RIGHT_CAPS]=0 \{\
 .       if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE +0 \}
 .    \}
-.    if !d$FN_FAM          \{ .FOOTNOTE_FAMILY \\*[$DOC_FAM] \}
-.    if !d$FN_FT           \{ .FOOTNOTE_FONT R               \}
-.    if !d$FN_QUAD         \{ .FOOTNOTE_QUAD \\*[$DOC_QUAD]  \}
-.    if !r#FN_RULE         \{ .FOOTNOTE_RULE                 \}
-.    if !r#FN_MARKERS      \{ .FOOTNOTE_MARKERS              \}
-.    if !r#FN_MARKER_STYLE \{ .FOOTNOTE_MARKER_STYLE STAR    \}
-.    if !d$EN_PN_STYLE          \{ .ENDNOTES_PAGENUM_STYLE digit        \}
-.    if !d$EN_FAM               \{ .ENDNOTE_FAMILY \\*[$DOC_FAM]        \}
-.    if !d$EN_FN                \{ .ENDNOTE_FONT R                      \}
-.    if !d$EN_QUAD              \{ .ENDNOTE_QUAD \\*[$DOC_QUAD]         \}
-.    if !d$EN_STRING            \{ .ENDNOTE_STRING "Endnotes"           \}
-.    if !d$EN_STRING_FAM        \{ .ENDNOTE_STRING_FAMILY \\*[$EN_FAM]  \}
-.    if !d$EN_STRING_QUAD       \{ .ENDNOTE_STRING_QUAD CENTER          \}
-.    if !r#EN_STRING_UNDERSCORE \{ .ENDNOTE_STRING_UNDERSCORE 2         \}
-.    if !r#EN_STRING_CAPS       \{ .ENDNOTE_STRING_CAPS                 \}
+.    if !d$FN_FAM               \{ .FOOTNOTE_FAMILY \\*[$DOC_FAM]      \}
+.    if !d$FN_FT                \{ .FOOTNOTE_FONT R                    \}
+.    if !d$FN_QUAD              \{ .FOOTNOTE_QUAD \\*[$DOC_QUAD]       \}
+.    if !r#FN_RULE              \{ .FOOTNOTE_RULE                      \}
+.    if !r#FN_MARKERS           \{ .FOOTNOTE_MARKERS                   \}
+.    if !\\n[#FN_MARKER_STYLE]  \{ .FOOTNOTE_MARKER_STYLE STAR         \}
+.    if !\\n[#EN_MARKER_STYLE]  \{ .ENDNOTE_MARKER_STYLE NUMBER        \}
+.    if !d$EN_PN_STYLE          \{ .ENDNOTES_PAGENUM_STYLE digit       \}
+.    if !d$EN_FAM               \{ .ENDNOTE_FAMILY \\*[$DOC_FAM]       \}
+.    if !d$EN_FT                \{ .ENDNOTE_FONT R                     \}
+.    if !d$EN_QUAD              \{ .ENDNOTE_QUAD \\*[$DOC_QUAD]        \}
+.    if !d$EN_STRING            \{ .ENDNOTE_STRING "Endnotes"          \}
+.    if !d$EN_STRING_FAM        \{ .ENDNOTE_STRING_FAMILY \\*[$EN_FAM] \}
+.    if !d$EN_STRING_QUAD       \{ .ENDNOTE_STRING_QUAD CENTER         \}
+.    if !r#EN_STRING_UNDERSCORE \{ .ENDNOTE_STRING_UNDERSCORE 2        \}
+.    if !r#EN_STRING_CAPS       \{ .ENDNOTE_STRING_CAPS                \}
 .    if !d$EN_TITLE \{\
 .       ie \\n[#DOC_TYPE]=2 \{\
 .          ie '\\*[$CHAPTER]'' \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING]" \}
@@ -4589,73 +4642,83 @@
 .    if !r#EN_NUMBERS_ALIGN_LEFT \{\
 .       if !r#EN_NUMBERS_ALIGN_RIGHT \{ .ENDNOTE_NUMBERS_ALIGN_RIGHT 2  \}
 .    \}
-.    if !d$TOC_HEADER_STRING         \{ .TOC_HEADER_STRING "Contents"  \}
-.    if !d$TOC_HEADER_QUAD           \{ .TOC_HEADER_QUAD LEFT          \}
-.    if !d$TOC_PN_STYLE              \{ .TOC_PAGENUM_STYLE roman       \}
-.    if !r#TOC_PN_PADDING            \{ .TOC_PADDING   3               \}
-.    if !r#TOC_TITLE_INDENT          \{ .TOC_TITLE_INDENT    0         \}
-.    if !r#TOC_HEAD_INDENT           \{ .TOC_HEAD_INDENT     18p       \}
-.    if !r#TOC_SH_INDENT             \{ .TOC_SUBHEAD_INDENT  30p       \}
-.    if !r#TOC_PH_INDENT             \{ .TOC_PARAHEAD_INDENT 42p       \}
-\# String defaults for both PRINTSTYLEs
+.    if !d$EN_LN_GAP             \{ .ENDNOTE_LINENUMBER_GAP 1.5n              
\}
+.    if !d$BIB_PN_STYLE          \{ .BIBLIOGRAPHY_PAGENUM_STYLE digit         
\}
+.    if !d$BIB_FAM               \{ .BIBLIOGRAPHY_FAMILY \\*[$DOC_FAM]        
\}
+.    if !d$BIB_FT                \{ .BIBLIOGRAPHY_FONT R                      
\}
+.    if !d$BIB_QUAD              \{ .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD]         
\}
+.    if !d$BIB_STRING            \{ .BIBLIOGRAPHY_STRING "Bibliography"       
\}
+.    if !d$BIB_STRING_FAM        \{ .BIBLIOGRAPHY_STRING_FAMILY \\*[$BIB_FAM] 
\}
+.    if !d$BIB_STRING_QUAD       \{ .BIBLIOGRAPHY_STRING_QUAD CENTER          
\}
+.    if !r#BIB_STRING_UNDERSCORE \{ .BIBLIOGRAPHY_STRING_UNDERSCORE 2         
\}
+.    if !r#BIB_STRING_CAPS       \{ .BIBLIOGRAPHY_STRING_CAPS                 
\}
+.    if !d$TOC_HEADER_STRING     \{ .TOC_HEADER_STRING "Contents"  \}
+.    if !d$TOC_HEADER_QUAD       \{ .TOC_HEADER_QUAD LEFT          \}
+.    if !d$TOC_PN_STYLE          \{ .TOC_PAGENUM_STYLE roman       \}
+.    if !r#TOC_PN_PADDING        \{ .TOC_PADDING   3               \}
+.    if !r#TOC_TITLE_INDENT      \{ .TOC_TITLE_INDENT    0         \}
+.    if !r#TOC_HEAD_INDENT       \{ .TOC_HEAD_INDENT     18p       \}
+.    if !r#TOC_SH_INDENT         \{ .TOC_SUBHEAD_INDENT  30p       \}
+.    if !r#TOC_PH_INDENT         \{ .TOC_PARAHEAD_INDENT 42p       \}
+.\" String defaults for both PRINTSTYLEs
 .    ie \\n[#DOC_TYPE]=1 \{\
 .       ie '\\*[$DOC_TITLE]'' \{\
-.          if \\n[#USER_DEF_HDRFTR_LEFT]=0   \{ .ds $HDRFTR_LEFT 
\\*[$AUTHOR_1]\}
+.          if \\n[#USER_DEF_HDRFTR_LEFT]=0  .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .          rr #USER_DEF_HDRFTR_LEFT
-.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0  \{ .ds $HDRFTR_RIGHT \\*[$TITLE]\}
+.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
 .          rr #USER_DEF_HDRFTR_RIGHT
 .       \}
 .       el \{\
 .          if \\n[#COPY_STYLE]=1 \{ .DRAFT_WITH_PAGENUMBER \}
-.          if \\n[#USER_DEF_HDRFTR_LEFT]=0   \{ .ds $HDRFTR_LEFT 
\\*[$AUTHOR_1]\}
+.          if \\n[#USER_DEF_HDRFTR_LEFT]=0   .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .          rr #USER_DEF_HDRFTR_LEFT
-.          if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{ .ds $HDRFTR_CENTER 
\\*[$TITLE]\}
+.          if \\n[#USER_DEF_HDRFTR_CENTER]=0 .ds $HDRFTR_CENTER \\*[$TITLE]
 .          rr #USER_DEF_HDRFTR_CENTER
-.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0  \{ .ds $HDRFTR_RIGHT 
\\*[$DOC_TITLE]\}
+.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0  .ds $HDRFTR_RIGHT \\*[$DOC_TITLE]
 .          rr #USER_DEF_HDRFTR_RIGHT
 .       \}
 .    \}
 .    el \{\
-.       if \\n[#USER_DEF_HDRFTR_LEFT]=0   \{ .ds $HDRFTR_LEFT \\*[$AUTHOR_1]\}
+.       if \\n[#USER_DEF_HDRFTR_LEFT]=0  .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .       rr #USER_DEF_HDRFTR_LEFT
-.       if \\n[#USER_DEF_HDRFTR_RIGHT]=0  \{ .ds $HDRFTR_RIGHT \\*[$TITLE]\}
+.       if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
 .       rr #USER_DEF_HDRFTR_RIGHT
 .    \}
-.    if !d$ATTRIBUTE_STRING           \{ .ATTRIBUTE_STRING "by"            \}
-.    if !d$FINIS_STRING               \{ .FINIS_STRING "END"               \}
-\# Covers
+.    if !d$ATTRIBUTE_STRING         \{ .ATTRIBUTE_STRING "by" \}
+.    if !d$FINIS_STRING             \{ .FINIS_STRING "END"    \}
+.\" Covers
 .    if !r#DOC_COVERS_OFF           \{ .nr #DOC_COVERS 1           \}
 .    if !r#COVERS_OFF               \{ .nr #COVERS 1               \}
 .    if !d$COVER_COPYRIGHT_QUAD     \{ .COVER_COPYRIGHT_QUAD R     \}
 .    if !d$COVER_MISC_QUAD          \{ .COVER_MISC_QUAD L          \}
 .    if !d$DOC_COVER_COPYRIGHT_QUAD \{ .DOC_COVER_COPYRIGHT_QUAD R \}
 .    if !d$DOC_COVER_MISC_QUAD      \{ .DOC_COVER_MISC_QUAD L      \}
-\# Defaults for printstyle TYPEWRITE
+.\" Defaults for printstyle TYPEWRITE
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#UNDERLINE_QUOTES]=1 \{ .UNDERLINE_QUOTES         \}
 .       if \\n[#UNDERLINE_QUOTES]=0 \{ .UNDERLINE_QUOTES OFF     \}
-\# +Quotes and blockquotes
+.\" +Quotes and blockquotes
 .       if !r#Q_OFFSET_VALUE        \{ .QUOTE_INDENT      2      \}
-\# +Epigraphs
+.\" +Epigraphs
 .       if !r#EPI_OFFSET_VALUE      \{ .EPIGRAPH_INDENT   2      \}
-\# +Linebreaks
+.\" +Linebreaks
 .       if !d$LINEBREAK_CHAR        \{ .LINEBREAK_CHAR    * 3 2p \}
-\# +Footnotes
+.\" +Footnotes
 .       if !d$FN_SIZE_CHANGE        \{ .FOOTNOTE_SIZE     +0     \}
 .       if !r#FN_RULE_LENGTH        \{ .FOOTNOTE_RULE_LENGTH 2i  \}
-\# +Paragraph heads
+.\" +Paragraph heads
 .       if !r#PH_INDENT    \{ .PARAHEAD_INDENT \\n[#PP_INDENT]u/2u \}
-\# +Endnotes
+.\" +Endnotes
 .       if !r#EN_PP_INDENT \{ .ENDNOTE_PARA_INDENT \\n[#PP_INDENT] \}
-\# +Footnotes
+.\" +Footnotes
 .       if !r#FN_RULE_ADJ           \{ .FOOTNOTE_RULE_ADJ  6p    \}
-\# +Slant stuff
+.\" +Slant stuff
 .       if !r#SLANT_MEANS_SLANT \{\
 .          ie \\n[#UNDERLINE_SLANT]=1 \{ .UNDERLINE_SLANT \}
 .          el \{ .UNDERLINE_SLANT OFF \}
 .       \}
 .    \}
-\# Defaults for printstyle TYPESET
+.\" Defaults for printstyle TYPESET
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       if !d$DOCHEADER_LEAD_ADJ \{\
 .          ie !'\\*[$CHAPTER_TITLE]'' \{\
@@ -4666,97 +4729,97 @@
 .          \}
 .          el \{ .DOCHEADER_LEAD +0 \}
 .       \}
-\# +Cover
+.\" +Cover
 .       if !d$COVER_LEAD_ADJ \{ .COVER_LEAD +0 \}
 .       if !d$COVER_FAM \{ .COVER_FAMILY \\*[$DOC_FAM] \}
-\# (title)
+.\" (title)
 .       if !d$COVER_TITLE_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_TITLE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .COVER_TITLE_FAMILY \\*[$COVER_FAM] \}
 .       \}
 .       if !d$COVER_TITLE_FT          \{ .COVER_TITLE_FONT B    \}
 .       if !d$COVER_TITLE_SIZE_CHANGE \{ .COVER_TITLE_SIZE +3.5 \}
-\# (chapter title)
+.\" (chapter title)
 .       if !d$COVER_CHAPTER_TITLE_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$COVER_FAM] \}
 .       \}
-.       if !d$COVER_CHAPTER_TITLE_FT          \{ .COVER_CHAPTER_TITLE_FONT BI  
  \}
+.       if !d$COVER_CHAPTER_TITLE_FT          \{ .COVER_CHAPTER_TITLE_FONT BI 
\}
 .       if !d$COVER_CHAPTER_TITLE_SIZE_CHANGE \{ .COVER_CHAPTER_TITLE_SIZE +4 
\}
-\# (subtitle)
+.\" (subtitle)
 .       if !d$COVER_SUBTITLE_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .COVER_SUBTITLE_FAMILY \\*[$COVER_FAM] \}
 .       \}
 .       if !d$COVER_SUBTITLE_FT          \{ .COVER_SUBTITLE_FONT R  \}
 .       if !d$COVER_SUBTITLE_SIZE_CHANGE \{ .COVER_SUBTITLE_SIZE +0 \}
-\# (attribution and author[s])
+.\" (attribution and author[s])
 .       if !d$COVER_AUTHOR_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \}
 .          el      \{ .COVER_AUTHOR_FAMILY \\*[$COVER_FAM] \}
 .       \}
 .       if !d$COVER_AUTHOR_FT          \{ .COVER_AUTHOR_FONT I  \}
 .       if !d$COVER_AUTHOR_SIZE_CHANGE \{ .COVER_AUTHOR_SIZE +0 \}
-\# (doctype if "named")
+.\" (doctype if "named")
 .       if !d$COVER_DOCTYPE_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .COVER_DOCTYPE_FAMILY \\*[$COVER_FAM] \}
 .       \}
 .       if !d$COVER_DOCTYPE_FT          \{ .COVER_DOCTYPE_FONT BI \}
 .       if !d$COVER_DOCTYPE_SIZE_CHANGE \{ .COVER_DOCTYPE_SIZE +3 \}
-\# (copyright)
+.\" (copyright)
 .       if !d$COVER_COPYRIGHT_FAM \{\
 .          ie !d$COVER_FAM \{ .COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .COVER_COPYRIGHT_FAMILY \\*[$COVER_FAM] \}
 .       \}
 .       if !d$COVER_COPYRIGHT_FT          \{ .COVER_COPYRIGHT_FONT R  \}
 .       if !d$COVER_COPYRIGHT_SIZE_CHANGE \{ .COVER_COPYRIGHT_SIZE -2 \}
-\# +Doc cover
+.\" +Doc cover
 .       if !d$DOC_COVER_LEAD_ADJ \{ .DOC_COVER_LEAD +0 \}
 .       if !d$DOC_COVER_FAM \{ .DOC_COVER_FAMILY \\*[$DOC_FAM] \}
-\# (title)
+.\" (title)
 .       if !d$DOC_COVER_TITLE_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_COVER_FAM] \}
 .       \}
 .       if !d$DOC_COVER_TITLE_FT          \{ .DOC_COVER_TITLE_FONT B    \}
 .       if !d$DOC_COVER_TITLE_SIZE_CHANGE \{ .DOC_COVER_TITLE_SIZE +3.5 \}
-\# (chapter title)
+.\" (chapter title)
 .       if !d$DOC_COVER_CHAPTER_TITLE_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_CHAPTER_TITLE_FAMILY 
\\*[$DOC_FAM] \}
 .          el            \{ .DOC_COVER_CHAPTER_TITLE_FAMILY 
\\*[$DOC_COVER_FAM] \}
 .       \}
-.       if !d$DOC_COVER_CHAPTER_TITLE_FT          \{ 
.DOC_COVER_CHAPTER_TITLE_FONT BI    \}
+.       if !d$DOC_COVER_CHAPTER_TITLE_FT          \{ 
.DOC_COVER_CHAPTER_TITLE_FONT BI \}
 .       if !d$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \{ 
.DOC_COVER_CHAPTER_TITLE_SIZE +4 \}
-\# (subtitle)
+.\" (subtitle)
 .       if !d$DOC_COVER_SUBTITLE_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_COVER_FAM] \}
 .       \}
 .       if !d$DOC_COVER_SUBTITLE_FT          \{ .DOC_COVER_SUBTITLE_FONT R  \}
 .       if !d$DOC_COVER_SUBTITLE_SIZE_CHANGE \{ .DOC_COVER_SUBTITLE_SIZE +0 \}
-\# (attribution and author[s])
+.\" (attribution and author[s])
 .       if !d$DOC_COVER_AUTHOR_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \}
-.          el      \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM] \}
+.          el            \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM] \}
 .       \}
 .       if !d$DOC_COVER_AUTHOR_FT          \{ .DOC_COVER_AUTHOR_FONT I  \}
 .       if !d$DOC_COVER_AUTHOR_SIZE_CHANGE \{ .DOC_COVER_AUTHOR_SIZE +0 \}
-\# (doctype if "named")
+.\" (doctype if "named")
 .       if !d$DOC_COVER_DOCTYPE_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_COVER_FAM] \}
 .       \}
 .       if !d$DOC_COVER_DOCTYPE_FT          \{ .DOC_COVER_DOCTYPE_FONT BI \}
 .       if !d$DOC_COVER_DOCTYPE_SIZE_CHANGE \{ .DOC_COVER_DOCTYPE_SIZE +3 \}
-\# (copyright)
+.\" (copyright)
 .       if !d$DOC_COVER_COPYRIGHT_FAM \{\
 .          ie !d$DOC_COVER_FAM \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \}
 .          el            \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_COVER_FAM] \}
 .       \}
 .       if !d$DOC_COVER_COPYRIGHT_FT          \{ .DOC_COVER_COPYRIGHT_FONT R  
\}
 .       if !d$DOC_COVER_COPYRIGHT_SIZE_CHANGE \{ .DOC_COVER_COPYRIGHT_SIZE -2 
\}
-\# +Docheader
+.\" +Docheader
 .       if !d$DOCHEADER_FAM \{ .DOCHEADER_FAMILY \\*[$DOC_FAM] \}
 .       if !d$TITLE_FAM \{\
 .          ie !d$DOCHEADER_FAM \{ .TITLE_FAMILY \\*[$DOC_FAM]       \}
@@ -4778,22 +4841,22 @@
 .          el                  \{ .SUBTITLE_FAMILY \\*[$DOCHEADER_FAM] \}
 .       \}
 .       if !d$SUBTITLE_FT          \{ .SUBTITLE_FONT      R  \}
-.       if !d$SUBTITLE_SIZE_CHANGE \{ .SUBTITLE_SIZE      +0 \}
+.       if !d$SUBTITLE_SIZE_CHANGE \{ .SUBTITLE_SIZE     +0  \}
 .       if !d$AUTHOR_FAM \{\
 .          ie !d$DOCHEADER_FAM \{ .AUTHOR_FAMILY \\*[$DOC_FAM]       \}
 .          el                  \{ .AUTHOR_FAMILY \\*[$DOCHEADER_FAM] \}
 .       \}
-.       if !d$AUTHOR_FT          \{ .AUTHOR_FONT I  \}
+.       if !d$AUTHOR_FT          \{ .AUTHOR_FONT  I \}
 .       if !d$AUTHOR_SIZE_CHANGE \{ .AUTHOR_SIZE +0 \}
 .       if !d$DOCTYPE_FAM \{\
 .          ie !d$DOCHEADER_FAM \{ .DOCTYPE_FAMILY \\*[$DOC_FAM]       \}
 .          el                  \{ .DOCTYPE_FAMILY \\*[$DOCHEADER_FAM] \}
 .       \}
-.       if !d$DOCTYPE_FT           \{ .DOCTYPE_FONT       BI            \}
-.       if !d$DOCTYPE_SIZE_CHANGE  \{ .DOCTYPE_SIZE       +3            \}
-\# +Headers and footers
+.       if !d$DOCTYPE_FT           \{ .DOCTYPE_FONT       BI \}
+.       if !d$DOCTYPE_SIZE_CHANGE  \{ .DOCTYPE_SIZE       +3 \}
+.\" +Headers and footers
 .       if !d$HDRFTR_LEFT_FAM      \{ .HDRFTR_LEFT_FAMILY \\*[$DOC_FAM] \}
-.       if !d$HDRFTR_LEFT_FT       \{ .HDRFTR_LEFT_FONT   R             \}
+.       if !d$HDRFTR_LEFT_FT       \{ .HDRFTR_LEFT_FONT R               \}
 .       if \\n[#HDRFTR_LEFT_CAPS]  \{\
 .          if !d$HDRFTR_LEFT_SIZE_CHANGE \{ .HDRFTR_LEFT_SIZE  -2 \}
 .       \}
@@ -4810,47 +4873,47 @@
 .          if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE -2 \}
 .       \}
 .       if !d$HDRFTR_RIGHT_SIZE_CHANGE  \{ .HDRFTR_RIGHT_SIZE  -.5             
 \}
-\# +Heads
+.\" +Heads
 .       if !d$HEAD_FAM                  \{ .HEAD_FAMILY        \\*[$DOC_FAM]   
 \}
 .       if !d$HEAD_FT                   \{ .HEAD_FONT          B               
 \}
 .       if !d$HEAD_SIZE_CHANGE          \{ .HEAD_SIZE          +1              
 \}
 .       if !r#HEAD_SPACE                \{ .HEAD_SPACE                         
 \}
-\# +Subheads
+.\" +Subheads
 .       if !d$SH_FAM                    \{ .SUBHEAD_FAMILY     \\*[$DOC_FAM]   
 \}
 .       if !d$SH_FT                     \{ .SUBHEAD_FONT       B               
 \}
 .       if !d$SH_SIZE_CHANGE            \{ .SUBHEAD_SIZE       +.5             
 \}
-\# +Paragraph heads
+.\" +Paragraph heads
 .       if !d$PH_FAM                    \{ .PARAHEAD_FAMILY    \\*[$DOC_FAM]   
 \}
 .       if !d$PH_FT                     \{ .PARAHEAD_FONT      BI              
 \}
 .       if !d$PH_SIZE_CHANGE            \{ .PARAHEAD_SIZE      -.25            
 \}
 .       if !r#PH_INDENT                 \{ .PARAHEAD_INDENT 
\\n[#PP_INDENT]u/2u \}
-\# +Quotes
+.\" +Quotes
 .       if !d$QUOTE_FAM                 \{ .QUOTE_FAMILY       \\*[$DOC_FAM]   
 \}
 .       if !d$QUOTE_FT                  \{ .QUOTE_FONT         I               
 \}
 .       if !d$QUOTE_SIZE_CHANGE         \{ .QUOTE_SIZE         +0              
 \}
 .       if !r#Q_OFFSET_VALUE            \{ .QUOTE_INDENT       3               
 \}
-\# +Blockquotes
+.\" +Blockquotes
+.\"  Note: the leading for quotes and blockquotes is set after .DEFAULTS in 
START
 .       if !d$BQUOTE_FAM                \{ .BLOCKQUOTE_FAMILY  \\*[$DOC_FAM]   
 \}
 .       if !d$BQUOTE_FT                 \{ .BLOCKQUOTE_FONT    R               
 \}
 .       if !d$BQUOTE_SIZE_CHANGE        \{ .BLOCKQUOTE_SIZE    -1              
 \}
 .       if !d$BQUOTE_QUAD               \{ .BLOCKQUOTE_QUAD    LEFT            
 \}
-\# +Epigraphs
+.\" +Epigraphs
 .       if !d$EPI_FAM                   \{ .EPIGRAPH_FAMILY    \\*[$DOC_FAM]   
 \}
 .       if !d$EPI_FT                    \{ .EPIGRAPH_FONT      R               
 \}
 .       if !d$EPI_SIZE_CHANGE           \{ .EPIGRAPH_SIZE      -1.5            
 \}
 .       if !r#EPI_AUTOLEAD              \{ .EPIGRAPH_AUTOLEAD  2               
 \}
 .       if !d$EPI_QUAD                  \{ .EPIGRAPH_QUAD      \\*[$DOC_QUAD]  
 \}
 .       if !r#EPI_OFFSET_VALUE          \{ .EPIGRAPH_INDENT    3               
 \}
-\# +Linebreaks
+.\" +Linebreaks
 .       if !d$LINEBREAK_CHAR            \{ .LINEBREAK_CHAR     * 3 3p          
 \}
-\# +Footnotes
+.\" +Footnotes
 .       if !r#FN_RULE_LENGTH            \{ .FOOTNOTE_RULE_LENGTH 4P            
 \}
 .       if !r#FN_RULE_ADJ               \{ .FOOTNOTE_RULE_ADJ  3p              
 \}
 .       if !d$FN_SIZE_CHANGE            \{ .FOOTNOTE_SIZE      -2              
 \}
 .       if !r#FN_AUTOLEAD               \{ .FOOTNOTE_AUTOLEAD  2               
 \}
-\# +Endnotes
+.\" +Endnotes
 .       if !r#EN_PS                     \{ .ENDNOTE_PT_SIZE \\n[#DOC_PT_SIZE]u 
 \}
-.       if !d$EN_LEAD                   \{ .ENDNOTE_LEAD        14 ADJUST      
 \}
 .       if !d$EN_STRING_FT              \{ .ENDNOTE_STRING_FONT B              
 \}
 .       if !d$EN_STRING_SIZE_CHANGE     \{ .ENDNOTE_STRING_SIZE +1             
 \}
 .       if !d$EN_TITLE_FT               \{ .ENDNOTE_TITLE_FONT  B              
 \}
@@ -4858,34 +4921,54 @@
 .       if !d$EN_NUMBER_FT              \{ .ENDNOTE_NUMBER_FONT B              
 \}
 .       if !d$EN_NUMBER_SIZE_CHANGE     \{ .ENDNOTE_NUMBER_SIZE +0             
 \}
 .       if !r#EN_PP_INDENT              \{ .ENDNOTE_PARA_INDENT 1.5m           
 \}
-\# +Table of contents
+.\" +Bibliography
+.       if !r#BIB_LIST                  \{ .BIBLIOGRAPHY_TYPE LIST .           
     \}
+.       if !r#BIB_PS                    \{ .BIBLIOGRAPHY_PT_SIZE 
\\n[#DOC_PT_SIZE]u \}
+.       if !d$BIB_STRING_FT             \{ .BIBLIOGRAPHY_STRING_FONT B         
     \}
+.       if !d$BIB_STRING_SIZE_CHANGE    \{ .BIBLIOGRAPHY_STRING_SIZE +1        
     \}
+.\" +Table of contents
 .       if !d$TOC_FAM                   \{ .TOC_FAMILY  \\*[$DOC_FAM]          
 \}
 .       if !r#TOC_PS                    \{ .TOC_PT_SIZE \\n[#DOC_PT_SIZE]u     
 \}
 .       if !r#TOC_LEAD                  \{ .TOC_LEAD    \\n[#DOC_LEAD]u ADJUST 
 \}
 .       if !d$TOC_HEADER_FAM            \{ .TOC_HEADER_FAMILY \\*[$TOC_FAM]    
 \}
-.       if !d$TOC_HEADER_SIZE_CHANGE    \{ .TOC_HEADER_SIZE  +4                
 \}
-.       if !d$TOC_HEADER_FT             \{ .TOC_HEADER_FONT   B                
 \}
+.       if !d$TOC_HEADER_SIZE_CHANGE    \{ .TOC_HEADER_SIZE +4                 
 \}
+.       if !d$TOC_HEADER_FT             \{ .TOC_HEADER_FONT  B                 
 \}
 .       if !d$TOC_TITLE_FAM             \{ .TOC_TITLE_FAMILY \\*[$TOC_FAM]     
 \}
-.       if !d$TOC_PN_FAM                \{ .TOC_PN_FAMILY \\*[$TOC_FAM]        
 \}
-.       if !d$TOC_HEAD_FAM              \{ .TOC_HEAD_FAMILY \\*[$TOC_FAM]      
 \}
-.       if !d$TOC_SH_FAM                \{ .TOC_SUBHEAD_FAMILY \\*[$TOC_FAM]   
 \}
+.       if !d$TOC_PN_FAM                \{ .TOC_PN_FAMILY    \\*[$TOC_FAM]     
 \}
+.       if !d$TOC_HEAD_FAM              \{ .TOC_HEAD_FAMILY  \\*[$TOC_FAM]     
 \}
+.       if !d$TOC_SH_FAM                \{ .TOC_SUBHEAD_FAMILY  \\*[$TOC_FAM]  
 \}
 .       if !d$TOC_PH_FAM                \{ .TOC_PARAHEAD_FAMILY \\*[$TOC_FAM]  
 \}
-.       if !d$TOC_TITLE_FT              \{ .TOC_TITLE_FONT   BI                
 \}
-.       if !d$TOC_PN_FT                 \{ .TOC_PN_FONT   R                    
 \}
-.       if !d$TOC_HEAD_FT               \{ .TOC_HEAD_FONT   B                  
 \}
-.       if !d$TOC_SH_FT                 \{ .TOC_SUBHEAD_FONT   R               
 \}
-.       if !d$TOC_PH_FT                 \{ .TOC_PARAHEAD_FONT   I              
 \}
-.       if !d$TOC_TITLE_SIZE_CHANGE     \{ .TOC_TITLE_SIZE   +.5               
 \}
-.       if !d$TOC_PN_SIZE_CHANGE        \{ .TOC_PN_SIZE  +0                    
 \}
-.       if !d$TOC_HEAD_SIZE_CHANGE      \{ .TOC_HEAD_SIZE  +.5                 
 \}
+.       if !d$TOC_TITLE_FT              \{ .TOC_TITLE_FONT    BI               
 \}
+.       if !d$TOC_PN_FT                 \{ .TOC_PN_FONT       R                
 \}
+.       if !d$TOC_HEAD_FT               \{ .TOC_HEAD_FONT     B                
 \}
+.       if !d$TOC_SH_FT                 \{ .TOC_SUBHEAD_FONT  R                
 \}
+.       if !d$TOC_PH_FT                 \{ .TOC_PARAHEAD_FONT I                
 \}
+.       if !d$TOC_TITLE_SIZE_CHANGE     \{ .TOC_TITLE_SIZE    +.5              
 \}
+.       if !d$TOC_PN_SIZE_CHANGE        \{ .TOC_PN_SIZE       +0               
 \}
+.       if !d$TOC_HEAD_SIZE_CHANGE      \{ .TOC_HEAD_SIZE     +.5              
 \}
 .       if !d$TOC_SH_SIZE_CHANGE        \{ .TOC_SUBHEAD_SIZE  +0               
 \}
-.       if !d$TOC_PH_SIZE_CHANGE        \{ .TOC_PARAHEAD_SIZE  +0              
 \}
+.       if !d$TOC_PH_SIZE_CHANGE        \{ .TOC_PARAHEAD_SIZE +0               
 \}
 .    \}
+.\" +Refer support
+.    if !r#ENDNOTE_REFS \{ .nr #FN_REFS 1 \} 
+.    if '\\*[$REF_FN_INDENT]'' \{\
+.       if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS FOOTNOTE 2m   \}
+.       if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS FOOTNOTE 1.5m \}
+.    \}
+.    if '\\*[$REF_EN_INDENT]'' \{\
+.       if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS ENDNOTE 2m   \}
+.       if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS ENDNOTE 1.5m \}
+.    \}
+.    if '\\*[$REF_BIB_INDENT]'' \{\
+.       if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS BIBLIO 2m    \}
+.       if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS BIBLIO 1.5m  :\}
+.    \}
+.\" Adjust doc leading for PRINTSTYLE TYPESET
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       ie \\n[#ADJ_DOC_LEAD]=1 \{ .DOC_LEAD_ADJUST \}
 .       el \{ . \}
 .    \}
-\# This diversion is to get a value for #FN_AUTOLEAD
+.\" This diversion is to get a value for #FN_AUTOLEAD
 .    di NULL
 .       ev NULL
 .       if \\n[#PRINT_STYLE]=1 \{\
@@ -4902,29 +4985,43 @@
 .       ev
 .    di
 .    ie !\\n[#COLLATE] \{\
+.\" DOC_LEAD adjusted (or not) here
 .       TRAPS
 .       rr #DOC_LEAD_ADJUST_OFF
-\# Endnote and toc leading
+.\" Endnote, bibliography and toc leading
 .       nr #OK_PROCESS_LEAD 1
 .       nr #RESTORE_DOC_LEAD \\n(.v
 .       nr #RESTORE_B_MARGIN \\n[#B_MARGIN]
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          ie \\n[#SINGLE_SPACE] \{\
 .             ENDNOTE_LEAD 12 ADJUST
+.             BIBLIOGRAPHY_LEAD 12 ADJUST
 .          \}
 .          el \{\
 .             ie \\n[#EN_SINGLESPACE] \{ .ENDNOTE_LEAD 12 ADJUST \}
 .             el \{ .ENDNOTE_LEAD 24 ADJUST \}
+.             ie \\n[#BIB_SINGLESPACE] \{ .BIBLIOGRAPHY_LEAD 12 ADJUST \}
+.             el \{ .BIBLIOGRAPHY_LEAD 24 ADJUST \}
 .          \}
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          ie !d$EN_LEAD \{ .ENDNOTE_LEAD 14 ADJUST \}
 .          el \{ .ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD] \}
+.          ie !d$BIB_LEAD \{ .BIBLIOGRAPHY_LEAD 14 ADJUST \}
+.          el \{ .BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD] \}
 .          ie !d$TOC_LEAD \{ .TOC_LEAD \\n[#RESTORE_DOC_LEAD]u \}
 .          el \{ .TOC_LEAD \\*[$TOC_LEAD] \\*[$ADJUST_TOC_LEAD] \}
 .          rm $ADJUST_EN_LEAD
+.          rm $ADJUST_BIB_LEAD
 .          rm $ADJUST_TOC_LEAD
 .       \}
+.       ie !d$BIB_SPACE \{ .BIBLIOGRAPHY_SPACING 1v \}
+.       el \{\
+.          if \\n[#DEFER_BIB_SPACING]=1 \{\
+.             BIBLIOGRAPHY_SPACING \\*[$BIB_SPACE]
+.             rr #DEFER_BIB_SPACING
+.          \}
+.       \}
 .       DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
 .       nr #B_MARGIN \\n[#RESTORE_B_MARGIN]
 .    \}
@@ -4996,7 +5093,7 @@
 .                PRINT 
\m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
 .             \}
 .             el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.          \}
+.\}
 .       \}
 .       if \\n[#DOC_COVER]=1 \{\
 .          while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
@@ -5004,7 +5101,7 @@
 .                PRINT 
\m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
 .             \}
 .             el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.          \}
+.\}
 .       \}
 .    \}
 .    el \{\
@@ -5013,7 +5110,7 @@
 .             PRINT \m[\\*[$AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
 .          \}
 .          el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.       \}
+.\}
 .    \}
 .END
 \#
@@ -5057,7 +5154,7 @@
 .    FT      \\*[$TITLE_FT]
 .    PT_SIZE \\*[$TITLE_PT_SIZE]
 .    LS      \\n[#DOCHEADER_LEAD]u
-\# Chapter title only
+.\" Chapter title only
 .    ie '\\*[$CHAPTER]'' \{\
 .       ie !'\\*[$CHAPTER_TITLE]'' \{\
 .          if \\n[#PRINT_STYLE]=2 \{\
@@ -5078,7 +5175,7 @@
 .          el \{ .PRINT \\*[$CHAPTER_STRING] \}
 .       \}
 .    \}
-\# Chapter string, possibly with a chapter title
+.\" Chapter string, possibly with a chapter title
 .    el \{\
 .       ie \\n[#TITLE_COLOR]=1 \{\
 .          PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
@@ -5216,8 +5313,8 @@
 \#
 \#
 .MAC COVERTITLE END
-.    ie '\\$0'DOC_COVERTITLE' \{ .ds $DOC_COVER_TITLE \\$1\}
-.    el \{ .ds $COVER_TITLE \\$1\}
+.    ie '\\$0'DOC_COVERTITLE' .ds $DOC_COVER_TITLE \\$1
+.    el .ds $COVER_TITLE \\$1
 .END
 \#
 \#
@@ -5320,7 +5417,7 @@
 .       nr #COLUMNS_WERE_ON 1
 .       rr #COLUMNS
 .    \}
-\# Doc cover
+.\" Doc cover
 .    ie '\\$0'DO_DOC_COVER' \{\
 .       if !r#DOC_COVER_START_POS \{\
 .          nr #DOC_COVER_START_POS \\n[#PAGE_LENGTH]/3
@@ -5519,10 +5616,10 @@
 .                PRINT \\*[$MISC_\\n+[#NEXT_MISC]]
 .                br
 .             \}
-.          \}
+.\}
 .       \}
 .    \}
-\# Cover
+.\" Cover
 .    el \{\
 .       if !r#COVER_START_POS \{\
 .          nr #COVER_START_POS \\n[#PAGE_LENGTH]/3
@@ -5721,7 +5818,7 @@
 .                PRINT \\*[$MISC_\\n+[#NEXT_MISC]]
 .                br
 .             \}
-.          \}
+.\}
 .       \}
 .    \}
 .    EOL
@@ -5763,6 +5860,10 @@
 .       ab PRINTSTYLE missing
 .    \}
 .    nr #DOCS 1
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
 .    if \\n[#COLLATE] \{\
 .       COPYSTYLE \\*[$COPY_STYLE]
 .       nr #HEADERS_ON \\n[#HEADER_STATE]
@@ -5775,7 +5876,13 @@
 .       \}
 .    \}
 .    DEFAULTS
-\# Covers and doc covers
+.\" 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]   \}
+.    if !r#EN_Q_AUTOLEAD  \{ .nr #EN_Q_LEAD \\n[#EN_LEAD]  \}
+.    if !r#EN_BQ_AUTOLEAD \{ .nr #EN_BQ_LEAD \\n[#EN_LEAD] \}
+.\" Covers and doc covers
 .    if \\n[#DOC_COVERS]=1 \{\
 .       if \\n[#DOC_COVER]=1 \{\
 .          DO_DOC_COVER
@@ -5800,9 +5907,9 @@
 .          rr #COVER_MISC
 .       \}
 .    \}
-\# Collate related stuff
+.\" Collate related stuff
 .    ie \\n[#COLLATED_DOC]=1 \{\
-\# Collect TITLE for TOC.
+.\" Collect TITLE for TOC.
 .       nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .       af #TOC_ENTRY_PN \\g[#PAGENUMBER]
 .       ie \\n[#USER_SET_TITLE_ITEM] \{\
@@ -5837,9 +5944,9 @@
 .             rm $TOC_AUTHORS
 .          \}
 .       \}
-\# Note the use of \!, which transparently embeds the macros used
-\# in the TOC_ENTRIES diversion.  The elements they control must be
-\# processed literally when the diversion is output.
+.\" Note the use of \!, which transparently embeds the macros used
+.\" in the TOC_ENTRIES diversion.  The elements they control must be
+.\" processed literally when the diversion is output.
 .       ev TOC_EV
 .       da TOC_ENTRIES
 .       if \\n[#PRINT_STYLE]=1 \{\
@@ -5881,14 +5988,14 @@
 .       af #FIRST_DOC_TITLE_PN \\g[#PAGENUMBER]
 .       nr #FIRST_DOC_TOC_PN_PADDING \\n[#TOC_PN_PADDING]
 .    \}
-\# End TITLE collection
+.\" End TITLE collection
 .    if \\n[#PRINT_PAGENUM_ON_PAGE_1] \{\
 .       sp |\\n[#HEADER_MARGIN]u
 .       PRINT_PAGE_NUMBER
 .    \}
 .    rr #COLLATE
 .    rr #PAGINATION_STATE
-\# End collate stuff
+.\" End collate stuff
 .    ie \\n[#DOC_HEADER]=0 \{\
 .       PRINT \&
 .       if \\n[#DOC_TYPE]=4 \{\
@@ -5918,7 +6025,7 @@
 .    el \{\
 .       if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ] 
\}
 .       nr #DOCHEADER_LEAD \\n[#LEAD]
-\# Default
+.\" Default
 .       if \\n[#DOC_TYPE]=1 \{\
 .          PRINT \&
 .          sp |\\n[#DOCHEADER_ADVANCE]u-1v
@@ -5959,7 +6066,7 @@
 .                nr #NEXT_AUTHOR 0 1
 .                while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
 .                   PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.                \}
+.\}
 .                if \\n[#AUTHOR_LINES]=1 \{\
 .                    ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u \}
 .                    el \{ .ALD \\n[#DOC_LEAD]u/2u \}
@@ -5989,7 +6096,7 @@
 .          \}
 .          ev
 .       \}
-\# Chapter
+.\" Chapter
 .       if \\n[#DOC_TYPE]=2 \{\
 .          PRINT \&
 .          sp |\\n[#DOCHEADER_ADVANCE]u-1v
@@ -6041,7 +6148,7 @@
 .          \}
 .          ev
 .       \}
-\# Named
+.\" Named
 .       if \\n[#DOC_TYPE]=3 \{\
 .          PRINT \&
 .          sp |\\n[#DOCHEADER_ADVANCE]u-1v
@@ -6082,7 +6189,7 @@
 .                nr #NEXT_AUTHOR 0 1
 .                while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
 .                   PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.                \}
+.\}
 .                if \\n[#AUTHOR_LINES]=1 \{\
 .                    ie \\n[#SINGLE_SPACE] \{ .RLD \\n[#DOC_LEAD]u \}
 .                    el \{ .ALD \\n[#DOC_LEAD]u/2u \}
@@ -6139,18 +6246,37 @@
 .    QUAD \\*[$DOC_QUAD]
 .    CLEANUP_DEFAULTS
 .    nr #START_FOR_FOOTERS 1
+.    if \\n[#COLLATED_DOC]=1 \{\
+.       if !\\n[MNinit_DEFERRED]=1 \{\
+.          MN_INIT rerun
+.       \}
+.    \}
+.    if \\n[#MNinit_DEFERRED]=1 \{\
+.       rr #MNinit_DEFERRED
+.       nr #START_FOR_MNinit 1
+.       MN_INIT \\*[$MN-arg1] \\*[$MN-arg2] \\*[$MN-arg3] \\*[$MN-arg4] 
\\*[$MN-arg5] \\*[$MN-arg6] \\*[$MN-arg7] \\*[$MN-arg8] \\*[$MN-arg9]
+.    \}
+.    nr #START_FOR_MNinit 2
 .    if !\\n[#DOC_TYPE]=4 \{ .em TERMINATE \}
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
+.    if \\n[#RUN_ON]=1 \{\
+.       if \\n[#FN_MARKER_STYLE]=1 \{ .RUNON_WARNING \}
+.       if \\n[#FN_MARKER_STYLE]=2 \{ .RUNON_WARNING \}
+.    \}
 .END
 \#
 .MAC CLEANUP_DEFAULTS END
 .    nr #START 1
-\# "Family" strings for docheader
+.\" Family strings for docheader
 .    rm $AUTHOR_FAM
 .    rm $CHAPTER_TITLE_FAM
 .    rm $DOCTYPE_FAM
 .    rm $SUBTITLE_FAM
 .    rm $TITLE_FAM
-\# "Family" strings for cover
+.\" Family strings for cover
 .    rm $COVER_AUTHOR_FAM
 .    rm $COVER_CHAPTER_TITLE_FAM
 .    rm $COVER_COPYRIGHT_FAM
@@ -6158,7 +6284,7 @@
 .    rm $COVER_LEAD_ADJ
 .    rm $COVER_SUBTITLE_FAM
 .    rm $COVER_TITLE_FAM
-\# "Family" strings for doc cover
+.\" Family strings for doc cover
 .    rm $DOC_COVER_AUTHOR_FAM
 .    rm $DOC_COVER_CHAPTER_TITLE_FAM
 .    rm $DOC_COVER_COPYRIGHT_FAM
@@ -6166,15 +6292,15 @@
 .    rm $DOC_COVER_LEAD_ADJ
 .    rm $DOC_COVER_SUBTITLE_FAM
 .    rm $DOC_COVER_TITLE_FAM
-\# "Quad" args to copyright and misc
+.\" Quad args to copyright and misc
 .    rm $COVER_COPYRIGHT_QUAD
 .    rm $COVER_MISC_QUAD
 .    rm $DOC_COVER_COPYRIGHT_QUAD
 .    rm $DOC_COVER_MISC_QUAD
-\# Miscellaneous strings
+.\" Miscellaneous strings
 .    rm $TOC_TITLE_ITEM
 .    rm $DOCHEADER_LEAD_ADJ
-\# Various registers
+.\" Various registers
 .    rr #ADJ_DOC_LEAD
 .    rr #ADVANCE_FROM_TOP
 .    rr #AUTHOR_NUM
@@ -6408,18 +6534,19 @@
 .MAC PROCESS_SHIM END
 .    while \\n+[#LEGAL_BASELINE]<\\n[#CURRENT_V_POS] \{\
 .
-.    \}
+.\}
 .    nr #SHIM \\n[#LEGAL_BASELINE]-\\n[#CURRENT_V_POS]
 .END
 \#
+\#
 .MAC SHIM END
-.    nr #CURRENT_V_POS \\n(.d
 .    nr #LEGAL_BASELINE \\n[#T_MARGIN]-1v \\n[#DOC_LEAD]
+.    if !r#CURRENT_V_POS \{ .nr #CURRENT_V_POS \\n(.d \}
 .    ie r#ADVANCE_FROM_TOP \{\
 .       ie \\n[#CURRENT_V_POS]<(\\n[#T_MARGIN]-1v) \{\
 .          while \\n-[#LEGAL_BASELINE]>\\n[#CURRENT_V_POS] \{\
 .
-.          \}
+.\}
 .          nr #LEGAL_BASELINE +\\n[#DOC_LEAD]
 .          nr #SHIM \\n[#LEGAL_BASELINE]-\\n[#CURRENT_V_POS]
 .       \}
@@ -6431,6 +6558,7 @@
 .       PROCESS_SHIM
 .    \}
 .    ALD \\n[#SHIM]u
+.    rr #CURRENT_V_POS
 .END
 \#
 \#
@@ -6587,6 +6715,10 @@
 .MAC EPIGRAPH END
 .    nr #PP_STYLE 2
 .    nr #Q_PP     0
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
 .    if \\n[#START] \{\
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          if \\n[#AUTHOR_LINES]=1 \{ .ALD \\n[#DOC_LEAD]u \}
@@ -6743,7 +6875,7 @@
 .       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]
-.       \}
+.\}
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          RLD \\n[#DOC_LEAD]u
 .          if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\
@@ -6760,7 +6892,7 @@
 .          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]
-.          \}
+.\}
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .             if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \{ .ALD 
\\n[#EPI_WHITESPACE]u/2u \}
 .          \}
@@ -6778,12 +6910,12 @@
 .          nr #EPI_LINES_TO_TRAP 0 1
 .          while \\n[#EPI_LEAD]*\\n+[#EPI_LINES_TO_TRAP]<\\n[#TRAP_DISTANCE] 
\{\
 .                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]
-.          \}
+.\}
 .          if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{ .ALD 
\\n[#EPI_WHITESPACE]u \}
 .          if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{ .ALD 
\\n[#EPI_WHITESPACE]u-\\n[#DOC_LEAD]u \}
 .      \}
@@ -6832,7 +6964,7 @@
 .             nr #EPI_WHITESPACE 
(\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
 .             while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
 .                   nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.             \}
+.\}
 .             ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
 .          \}
 .          el \{\
@@ -6856,7 +6988,7 @@
 .          nr #EPI_WHITESPACE 
(\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
 .          while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
 .                nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.          \}
+.\}
 .          ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
 .          if \\n[#PRINT_STYLE]=1 \{\
 .             if !\\n[#SINGLE_SPACE] \{\
@@ -6884,6 +7016,10 @@
 .          mk dc
 .       \}
 .    \}
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
 .END
 \#
 \# ====================================================================
@@ -7249,21 +7385,23 @@
 \#   Creates or modifies register #SWITCH_HDRFTR, used to switch
 \#   default location of HDRFTR_LEFT and HDRFTR_RIGHT.
 \# *Notes:
-\#   Typically, the author string appears at the left of header/footers,
-\#   and the title string appears at the right.  This switches the
-\#   location of the two.  Useful in conjuction with RECTO_VERSO to
-\#   tweak switches on alternate pages to come out as the user wishes.
-\#   The assumption of RECTO_VERSO is that the first page of the document
-\#   (recto) is odd, and even though it has no header/footer, if it did have 
one,
-\#   it would print as AUTHOR...CENTER...TITLE (or whatever strings
-\#   the user has supplied for HDRFTR_LEFT/RIGHT), meaning that the
-\#   next page, which does have a header/footer, will come out as
-\#   TITLE...CENTER...AUTHOR (or whatever strings the user has
-\#   supplied for HDRFTR_LEFT/RIGHT).  SWITCH_HDRFTRS allows the user
-\#   to get the desired string in the desired place on the desired
-\#   recto/verso page.
 \#
-\#   Default is OFF.
+.ig
+Typically, the author string appears at the left of header/footers,
+and the title string appears at the right.  This switches the
+location of the two.  Useful in conjuction with RECTO_VERSO to tweak
+switches on alternate pages to come out as the user wishes.  The
+assumption of RECTO_VERSO is that the first page of the document
+(recto) is odd, and even though it has no header/footer, if it did
+have one, it would print as AUTHOR...CENTER...TITLE (or whatever
+strings the user has supplied for HDRFTR_LEFT/RIGHT), meaning that
+the next page, which does have a header/footer, will come out as
+TITLE...CENTER...AUTHOR (or whatever strings the user has supplied
+for HDRFTR_LEFT/RIGHT).  SWITCH_HDRFTRS allows the user to get the
+desired string in the desired place on the desired recto/verso page.
+
+Default is OFF.
+..
 \#
 .MAC SWITCH_HDRFTR END
 .    ie '\\$1'' \{ .nr #SWITCH_HDRFTR 1 \}
@@ -7715,6 +7853,7 @@
 \#   comprehensible.
 \#
 .MAC HEADER END
+.    MNtop
 .    rr #FROM_FOOTER
 .    nr #FROM_HEADER 1
 .    nr #LAST_FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS]
@@ -7759,7 +7898,7 @@
 .    \}
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#ENDNOTES]=1 \{\
-\# Single-spaced endotes have a different lead
+.\" Single-spaced endotes have a different lead
 .          if \\n[#EN_SINGLESPACE] \{\
 .             nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
 .             nr #DOC_LEAD \\n[#EN_LEAD]u
@@ -7809,6 +7948,7 @@
 .          nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
 .          po \\n[#Q_OFFSET]u
 .       \}
+.       ALD \\n[#Q_LEAD_DIFF]u
 .    \}
 .    if \\n[#EPIGRAPH] \{\
 .       ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
@@ -7859,6 +7999,7 @@
 .       ie \\n[#RESET_FN_NUMBER]=1 \{ .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1 \}
 .       el \{ .nr #FN_NUMBER \\n[#FN_NUMBER] 1 \}
 .       rm FN_IN_DIVER
+.       if dRUNON_FN_IN_DIVER \{ .rm RUNON_FN_IN_DIVER \}
 .    \}
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#SLANT_ON] \{\
@@ -7870,6 +8011,24 @@
 .    if !\\n[#FN_DEPTH] \{\
 .       if r#DIVERTED \{ .rr #DIVERTED \}
 .    \}
+.    if \\n[#MN_OVERFLOW_LEFT]=1 \{\
+.       MN LEFT
+.       nf
+.       MN_OVERFLOW_LEFT
+.       MN
+.    \}
+.    if \\n[#MN_OVERFLOW_RIGHT]=1 \{\
+.       MN RIGHT
+.       nf
+.       MN_OVERFLOW_RIGHT
+.       MN
+.    \}
+.    rm MN_OVERFLOW_LEFT
+.    rr #MN_OVERFLOW_LEFT
+.    rr #no-repeat-MN-left
+.    rm MN_OVERFLOW_RIGHT
+.    rr #MN_OVERFLOW_RIGHT
+.    rr #no-repeat-MN-right
 .END
 \#
 \# ====================================================================
@@ -7942,29 +8101,40 @@
 \#   FINAL respects PAGENUMBER.
 \#
 .MAC FOOTER END
-.    ev PAGE_BOTTOM
+.    ev PAGE_TRANSITION
+.    if \\n[MN-left]>0 \{\
+.       if !\\n[#no-repeat-MN-left]=1 \{\
+.          MNbottom-left
+.          nr #no-repeat-MN-left 1
+.       \}
+.       if '\\n(.z'MN_OVERFLOW_LEFT' \{\
+.          di
+.          nr #MN_OVERFLOW_LEFT 1
+.          rr #OVERFLOW_LEFT
+.       \}
+.    \}
+.    if \\n[MN-right]>0 \{\
+.       if (\\n[MN-right] > 0) \{\
+.          if !\\n[#no-repeat-MN-right]=1 \{\
+.             MNbottom-right
+.          \}
+.       \}
+.       if '\\n(.z'MN_OVERFLOW_RIGHT' \{\
+.          di
+.          nr #MN_OVERFLOW_RIGHT 1
+.          rr #OVERFLOW_RIGHT
+.       \}
+.    \}
+.    ch MN_OVERFLOW_TRAP
 .    nr #SAVED_LEAD \\n(.v
-\# I can't figure out why I thought I needed this next bit, but I'm
-\# leaving it in, commented out, in case I (re)discover what it was
-\# there for.
-\#
-\#.if \\n[#START]=1 \{\
-\#.bp
-\#.ev
-\#.rr #START
-\#.return
-\#.\}
 .    nr #L_MARGIN_DIFF \\n[#L_MARGIN]-\\n[#DOC_L_MARGIN]
 .    if !\\n[#FN_DEFER] \{\
 .       nr #DIVER_DEPTH 0
 .       if \\n[#FN_DEPTH] \{\
-\# #DIVERTED=2 doesn't seem to have a use anymore, but I'm leaving
-\# this in, commented out, in case I discover why I thought I needed
-\# it.
-\#
-\#.if \\n[#DIVERTED]=2 \{ .nr #FN_DEPTH -\\n[#VFP_DIFF] \}
 .          if \\n[#DIVERTED]=3 \{ .nr #FN_DEPTH +\\n[#VFP_DIFF] \}
+.          vpt 0
 .          sp 
|\\n[#PAGE_LENGTH]u-(\\n[#B_MARGIN]u+\\n[#FN_DEPTH]u-\\n[#DOC_LEAD]u)
+.          vpt 1
 .          po \\n[#DOC_L_MARGIN]u
 .          if \\n[#COLUMNS] \{\
 .             po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
@@ -7974,6 +8144,7 @@
 .          nf
 .          FOOTNOTES
 .          rm FOOTNOTES
+.          if dRUNON_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(.z'FN_OVERFLOW' \{\
@@ -7996,13 +8167,6 @@
 .          el \{ .sp |\\n(dcu \}
 .          po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
 .          nr #L_MARGIN \\n(.o
-\# #DIVERTED=2 doesn't seem to have a use anymore, but I'm leaving
-\# this in, commented out, in case I discover why I thought I needed
-\# it.
-\#
-\# Reverse the sense of #DIVERTED=2 (from above) if moving col to col
-\#.if \\n[#DIVERTED]=2 \{ .nr #FN_DEPTH +\\n[#VFP_DIFF] \}
-\#
 .          if \\n[#FN_DEPTH] \{ .PROCESS_FN_LEFTOVER \}
 .          LS \\n[#SAVED_LEAD]u
 .          if \\n[#PREV_FN_DEFERRED] \{\
@@ -8018,6 +8182,7 @@
 .             nr #FN_COUNT \\n[#FN_COUNT] 1
 .             nr #FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS] 1
 .             rm FN_IN_DIVER
+.             if dRUNON_FN_IN_DIVER \{ .rm RUNON_FN_IN_DIVER \}
 .          \}
 .          rr #DEFER_SPACE_ADDED
 .          if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
@@ -8066,16 +8231,19 @@
 \#   Resets CAPS and UNDERLINE if they were on.
 \#
 .MAC DO_FOOTER END
-\# Have to change position of FN_OVERFLOW_TRAP or it screws up the
-\# placement of page numbers (or footers).  It's reset to its original
-\# position at the end of the macro.
-.    ch FN_OVERFLOW_TRAP 20i
+.\" Have to change position of FN_OVERFLOW_TRAP or it screws up the
+.\" placement of page numbers (or footers).  It's reset to its original
+.\" position at the end of the macro.
+.    if r#SAVED_FOOTER_POS \{ .ch FOOTER \\n[#SAVED_FOOTER_POS]u \}
+.    rr #SAVED_FOOTER_POS
 .    ie (\\n[#FOOTER_MARGIN]+\\n(.v)>\\n[#B_MARGIN] \{\
 .       nr #SKIP_FOOTER 1
 .    \}
 .    el \{\
+.       vpt 0
 .       sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-1v
 .       mk y
+.       vpt 1
 .    \}
 .    ev FOOTER
 .    po \\n[#DOC_L_MARGIN]u
@@ -8117,9 +8285,10 @@
 .       rr #UNDERLINE_WAS_ON
 .    \}
 .    ev
-.    ch FN_OVERFLOW_TRAP -(\\n[#FN_OVERFLOW_TRAP_POS]u)
 .    rr #SAVED_LEAD
 .    bp
+.\" This ev pops the PAGE_TRANSITION environment still active at the
+.\" end of HEADER
 .    ev
 .END
 \#
@@ -8309,7 +8478,7 @@
 \#
 .MAC HEAD END
 .    br
-\# Collect head for TOC.
+.\" Collect head for TOC.
 .    nr #ARG_NUM 0 1
 .    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    af #TOC_ENTRY_PN \\g[#PAGENUMBER]
@@ -8318,8 +8487,8 @@
 .          as $TOC_HEAD_ITEM \\$[\\n+[#ARG_NUM]]\\|
 .       \}
 .       el \{\
-\# Note that in the .as lines, below, \ at the end has a literal
-\# space after it.
+.\" Note that in the .as lines, below, \ at the end has a literal
+.\" space after it.
 .          ie \\n[#NUMBER_HEAD] \{\
 .             ie \\n[#ARG_NUM]=0 \{\
 .                as $TOC_HEAD_ITEM \\n+[#HEAD_NUM].\0\\$[\\n+[#ARG_NUM]]\ 
@@ -8333,10 +8502,10 @@
 .             as $TOC_HEAD_ITEM \\$[\\n+[#ARG_NUM]]\ 
 .          \}
 .       \}
-.    \}
-\# Note the use of \!, which transparently embeds the macros used
-\# in the TOC_ENTRIES diversion.  The elements they control must be
-\# processed literally when the diversion is output.
+.\}
+.\" Note the use of \!, which transparently embeds the macros used
+.\" in the TOC_ENTRIES diversion.  The elements they control must be
+.\" processed literally when the diversion is output.
 .    ev TOC_EV
 .    da TOC_ENTRIES
 .    if \\n[#PRINT_STYLE]=1 \{\
@@ -8372,8 +8541,8 @@
 \!.  TQ
 .    di       
 .    ev
-\# End collection of head for TOC
-\# Process head
+.\" End collection of head for TOC
+.\" Process head
 .    nr #HEAD 1
 .    ev HEAD
 .    ll \\n[#L_LENGTH]u
@@ -8397,10 +8566,10 @@
 .    \}
 .    if r#QUOTE             \{ .rr #QUOTE \}
 .    if r#EPIGRAPH          \{ .rr #EPIGRAPH \}
-.    if \\n[#PRINT_STYLE]=1 \{ .ne 3 \}
+.    if \\n[#PRINT_STYLE]=1 \{ .ne \\n[#NUM_ARGS]+2 \}
 .    if \\n[#PRINT_STYLE]=2 \{\
-.       ie \\n[#HEAD_SPACE] \{ .ne 4 \}
-.       el \{ .ne 3 \}
+.       ie \\n[#HEAD_SPACE] \{ .ne \\n[#NUM_ARGS]+3 \}
+.       el \{ .ne \\n[#NUM_ARGS]+2 \}
 .    \}
 .    ie \\n[#START] \{\
 .       if \\n[#DOC_HEADER]=0 \{ .RLD 1v \}
@@ -8440,7 +8609,7 @@
 .          \}
 .       \}
 .    \}
-\# Print head
+.\" Print head
 .    nr #ARG_NUM 0 1
 .    if \\n[#HEAD_CAPS] \{ .CAPS \}
 .    if \\n[#PRINT_STYLE]=2 \{\
@@ -8472,7 +8641,7 @@
 .          el \{ .UNDERSCORE "\\$[\\n+[#ARG_NUM]]\}
 .          br
 .       \}
-.    \}
+.\}
 .    REMOVE_INDENT
 .    CAPS OFF
 .    ev
@@ -8511,7 +8680,7 @@
 \#
 .MAC SUBHEAD END
 .    br
-\# Collect subhead for TOC.
+.\" Collect subhead for TOC.
 .    nr #ARG_NUM 0 1
 .    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
@@ -8519,8 +8688,8 @@
 .          as $TOC_SH_ITEM \\$[\\n+[#ARG_NUM]]\\|
 .       \}
 .       el \{\
-\# Note that in the .as lines, below, \ at the end has a literal
-\# space after it.
+.\" Note that in the .as lines, below, \ at the end has a literal
+.\" space after it.
 .          ie \\n[#NUMBER_SH] \{\
 .             ie \\n[#ARG_NUM]=0 \{\
 .                as $TOC_SH_ITEM \\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]\ 
@@ -8534,10 +8703,10 @@
 .             as $TOC_SH_ITEM \\$[\\n+[#ARG_NUM]]\ 
 .          \}
 .       \}
-.    \}
-\# Note the use of \!, which transparently embeds the macros used
-\# in the TOC_ENTRIES diversion.  The elements they control must be
-\# processed literally when the diversion is output.
+.\}
+.\" Note the use of \!, which transparently embeds the macros used
+.\" in the TOC_ENTRIES diversion.  The elements they control must be
+.\" processed literally when the diversion is output.
 .    ev TOC_EV
 .    da TOC_ENTRIES
 .    if \\n[#PRINT_STYLE]=1 \{\
@@ -8573,8 +8742,8 @@
 \!.  TQ
 .    di       
 .    ev
-\# End collection of head for TOC
-\# Process subhead
+.\" End collection of head for TOC
+.\" Process subhead
 .    nr #ARG_NUM 0 1
 .    if r#QUOTE    \{ .rr #QUOTE    \}
 .    if r#Q_AT_TOP \{ .rr #Q_AT_TOP \}
@@ -8603,7 +8772,7 @@
 .    if \\n[#PRINT_STYLE]=2 \{ .nr #SH_LEAD_ADJUST \\n[#LEAD]/8 \}
 .    ie \\n[#START] \{ .RLD 1v \}
 .    el \{\
-.       ie ( \\n[#TRAP_DISTANCE] < \\n[#DOC_LEAD]*2 ) \{\
+.       ie ( \\n[#TRAP_DISTANCE] < (\\n[#DOC_LEAD]*(\\n[#NUM_ARGS]+1)) ) \{\
 .          ie \\n[#COLUMNS] \{ .COL_NEXT \}
 .          el \{ .bp \}
 .       \}
@@ -8625,7 +8794,7 @@
 .          \}
 .       \}
 .    \}
-\# Print subhead
+.\" Print subhead
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
 .          ie \\n[#NUMBER_SH] \{\
@@ -8653,7 +8822,7 @@
 .             UNDERSCORE "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
 .             br
 .          \}
-.       \}
+.\}
 .    \}
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \}
@@ -8686,7 +8855,7 @@
 .                PRINT "\\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
 .                br
 .             \}
-.          \}
+.\}
 .       \}
 .       el \{\
 .          ALD \\n[#DOC_LEAD]u
@@ -8695,7 +8864,7 @@
 .          if \\n[#EPIGRAPH]    \{ .RLD \\n[#DOC_LEAD]u \}
 .          while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
 .             PRINT "\\$[\\n+[#ARG_NUM]]
-.          \}
+.\}
 .          ALD \\n[#DOC_LEAD]u
 .       \}
 .    \}
@@ -8739,7 +8908,7 @@
 \#   PARAHEAD *must* come after PP.
 \#
 .MAC PARAHEAD END
-\# Collect parahead for TOC.
+.\" Collect parahead for TOC.
 .    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    ie \\n[#NUMBER_PH] \{\
 .       ds $TOC_PH_ITEM \\n+[#PH_NUM].\0\\$1\\|
@@ -8783,8 +8952,8 @@
 \!.  TQ
 .    di       
 .    ev
-\# End collection of parahead for TOC
-\# Process parahead
+.\" End collection of parahead for TOC
+.\" Process parahead
 .    if \\n[#SLANT_ON] \{\
 .       nr #SLANT_WAS_ON 1
 \E*[SLANTX]
@@ -8903,7 +9072,7 @@
 .    while \\$2>\\n[#REPEAT] \{\
 .       as $LINEBREAK_CHAR "\\ \\$1
 .       nr #REPEAT \\n[#REPEAT]+1
-.    \}
+.\}
 .   rr #REPEAT
 .END
 \#
@@ -9051,7 +9220,7 @@
 .             if \\n[#DATE_FIRST]=1 \{ .ALD \\n[#DOC_LEAD]u \}
 .             rr #DATE_FIRST
 .             rm LETTERHEAD\\n[#FIELD]
-.          \}
+.\}
 .          rr #FIELD
 .          rr #NUM_FIELDS
 .          rr #TOTAL_FIELDS
@@ -9233,6 +9402,24 @@
 .END
 \#
 \#
+\# QUOTE_AUTOLEAD
+\# --------------
+\# *Arguments:
+\#   <autolead value>
+\# *Function:
+\#   Sets autolead for quotes and/or blockquotes.
+\#
+.MAC QUOTE_AUTOLEAD END
+.    if '\\$0'QUOTE_AUTOLEAD'      \{ .nr #Q_AUTOLEAD \\$1 \}
+.    if '\\$0'BLOCKQUOTE_AUTOLEAD' \{ .nr #BQ_AUTOLEAD \\$1 \}
+.    if '\\$0'ENDNOTE_QUOTE_AUTOLEAD'      \{ .nr #EN_Q_AUTOLEAD \\$1 \}
+.    if '\\$0'ENDNOTE_BLOCKQUOTE_AUTOLEAD' \{ .nr #EN_BQ_AUTOLEAD \\$1 \}
+.END
+\#
+.ALIAS BLOCKQUOTE_AUTOLEAD         QUOTE_AUTOLEAD
+.ALIAS ENDNOTE_QUOTE_AUTOLEAD      QUOTE_AUTOLEAD
+.ALIAS ENDNOTE_BLOCKQUOTE_AUTOLEAD QUOTE_AUTOLEAD
+\#
 \# ALWAYS FULLSPACE QUOTES
 \# -----------------------
 \# *Arguments:
@@ -9262,12 +9449,25 @@
 \#
 .MAC QUOTE END
 .    br
+.    if \\n[#LINENUMBERS]=1 \{\
+.       nr #LINENUMBERS 2
+.       nr #NEXT_LN \\n(ln
+.       nm
+.    \}
 .    ie '\\$1'' \{\
 .       ev QUOTE
+.       if \\n[#LINENUMBERS]=2 \{\
+.          if \\n[#SILENT_QUOTE_LN]=1 \{ .nm \\n[#NEXT_LN] 1000 -4 \}
+.       \}
 .       nr #IN_DIVER 1
 .       nr #QUOTE 1
 .       di P_QUOTE
 .       ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
+.       if \\n[#LINENUMBERS]=2 \{\
+.          if \\n[#QUOTE_LN]=1 \{\
+.             nm \\n(ln "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
+.          \}
+.       \}
 .       ta \\n(.lu
 .       if \\n[#COLUMNS] \{\
 .          ll \\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
@@ -9282,7 +9482,20 @@
 .          FAMILY  \\*[$QUOTE_FAM]
 .          FT      \\*[$QUOTE_FT]
 .          PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
-.          LS      \\n[#DOC_LEAD]u
+.          ie !r#Q_AUTOLEAD  \{ .LS \\n[#Q_LEAD]u \}
+.          el \{\
+.             AUTOLEAD \\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 \}
+.             el \{\
+.                AUTOLEAD \\n[#EN_Q_AUTOLEAD]
+.                nr #EN_Q_LEAD \\n(.v
+.             \}
+.          \}
+.          nr #Q_LEAD_REAL \\n(.v
 .          LEFT
 .          if \\n[#QUOTE_COLOR]=1 \{\
 .             nf
@@ -9290,6 +9503,15 @@
 .             EOL
 .          \}
 .       \}
+.       if \\n[#LINENUMBERS]=2 \{\
+.          ie \\n[#QUOTE_LN]=1 \{\
+.             if '\\*[$Q_LN_GUTTER]'' .ds $Q_LN_GUTTER \\*[$LN_GUTTER]
+.             nm \\n(ln "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
+.          \}
+.          el \{\
+.             if !\\n[#SILENT_QUOTE_LN] \{ .NUMBER_LINES OFF \}
+.          \}
+.       \}
 .       nr #Q_TOP \\n(nl
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          if \\n[#UNDERLINE_QUOTES] \{\
@@ -9308,7 +9530,7 @@
 \#   <none> | <anything>
 \# *Function:
 \#   Indents quoted text in fill mode and shortens line length
-\#   accordingly, or turns BLOCKQUOTE off.
+\#   equivalently, or turns BLOCKQUOTE off.
 \# *Notes:
 \#   Owing to the need to bottom align TYPESET pages, quoted text gets
 \#   diverted so its depth can be measured (in DO_QUOTE) for determining
@@ -9319,8 +9541,16 @@
 \#
 .MAC BLOCKQUOTE END
 .    br
+.    if \\n[#LINENUMBERS]=1 \{\
+.       nr #LINENUMBERS 2
+.       nr #NEXT_LN \\n(ln
+.       nm
+.    \}
 .    ie '\\$1'' \{\
 .       ev BLOCKQUOTE
+.       if \\n[#LINENUMBERS]=2 \{\
+.          if \\n[#SILENT_BQUOTE_LN]=1 \{ .nm \\n[#NEXT_LN] 1000 -4 \}
+.       \}
 .       nr #IN_DIVER 1
 .       nr #QUOTE    2
 .       nr #PP_STYLE 2
@@ -9351,7 +9581,7 @@
 .       \}
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          TYPEWRITER
-.          vs  \\n[#DOC_LEAD]u
+.          vs \\n[#DOC_LEAD]u
 .          QUAD LEFT
 .          HY OFF
 .       \}
@@ -9359,10 +9589,20 @@
 .          FAMILY  \\*[$BQUOTE_FAM]
 .          FT      \\*[$BQUOTE_FT]
 .          PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
-.          LS      \\n[#DOC_LEAD]u
+.          ie !\\n[#BQ_AUTOLEAD] \{ .LS \\n[#BQ_LEAD]u \}
+.          el \{\
+.             AUTOLEAD \\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 \}
+.             el \{\
+.                AUTOLEAD \\n[#EN_BQ_AUTOLEAD]
+.                nr #EN_BQ_LEAD \\n(.v
+.             \}
 .          \}
+.          nr #Q_LEAD_REAL \\n(.v
 .          if \\n[#BQUOTE_COLOR]=1 \{\
 .             nf
 \m[\\*[$BQUOTE_COLOR]]
@@ -9373,6 +9613,15 @@
 .          HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p
 .          hy 14
 .       \}
+.       if \\n[#LINENUMBERS]=2 \{\
+.          ie \\n[#BQUOTE_LN]=1 \{\
+.             if '\\*[$BQ_LN_GUTTER]'' .ds $BQ_LN_GUTTER \\*[$LN_GUTTER]
+.             nm \\n(ln "" \\*[$BQ_LN_GUTTER] -3-\\*[$BQ_LN_GUTTER]
+.          \}
+.          el \{\
+.             if !\\n[#SILENT_BQUOTE_LN] \{ .NUMBER_LINES OFF \}
+.          \}
+.       \}
 .       nr #Q_TOP \\n(nl
 .       if \\n[#INDENT_FIRST_PARAS] \{\
 .          ie !\\n[#ENDNOTE] \{\
@@ -9406,6 +9655,10 @@
 \#
 .MAC DO_QUOTE END
 .    br
+.    if \\n[#DIVER_LN_OFF] \{\
+\!.     NUMBER_LINES OFF
+.       rr #DIVER_LN_OFF
+.    \}
 .    di
 .    rr #IN_DIVER
 .    if \\n[#RESET_FN_COUNTERS]=2 \{\
@@ -9420,11 +9673,20 @@
 .    nr #DONE_ONCE 0 1
 .    REMOVE_INDENT
 .    ev
+.    nr #Q_DEPTH (\\n[#DIVER_DEPTH]-\\n[#Q_LEAD_REAL])+\\n[#LEAD]
+.    nr #Q_LEAD_DIFF \\n[#LEAD]-\\n[#Q_LEAD_REAL]
+.    SILENT
+.    br
+.    nf
+.    nr #CURRENT_V_POS 
\\n(nl+\\n[#Q_LEAD_DIFF]+(\\n[#DIVER_DEPTH]-\\n[#Q_DEPTH_REAL])
+.    SHIM
+.    SILENT OFF
+.    nr #Q_SPACE_ADJ \\n[#SHIM]/2
+.    nr #TRAP \\n(.t-1
 .    if \\n[#ENDNOTE] \{\
 .       nr #RESET_QUOTE_SPACING \\n[#FULLSPACE_QUOTES]
 .       ALWAYS_FULLSPACE_QUOTES
 .    \}
-.    nr #Q_DEPTH \\n[#DIVER_DEPTH]+(\\n[#LEAD]*1)
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#START]=1 \{ . \}
 .       if \\n[#START]=0 \{\
@@ -9443,37 +9705,16 @@
 .          \}
 .       \}
 .       el \{\
-.          ie \\n[#Q_DEPTH]<\\n[#TRAP_DISTANCE] \{\
-.             nr #Q_FITS 1
-.             ie \\n[#HEAD]=1 \{ . \}
+.          ie \\n[#Q_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
+.             ie (\\n[#TRAP_DISTANCE]-1)-\\n[#Q_DEPTH]<\\n[#DOC_LEAD] \{\
+.                Q_NOFIT
+.             \}
 .             el \{\
-.                ie \\n[#START] \{ . \}
-.                el \{\
-.                   ie \\n[#FULLSPACE_QUOTES] \{\
-.                      ie \\n[#ENDNOTE] \{\
-.                         ALD \\n[#EN_LEAD]u
-.                      \}
-.                      el \{ .ALD \\n[#DOC_LEAD]u \}
-.                   \}
-.                   el \{\
-.                      ie \\n[#ENDNOTE] \{\
-.                         ALD \\n[#EN_LEAD]u/2u
-.                      \}
-.                      el \{ .ALD \\n[#DOC_LEAD]u/2u \}
-.                   \}
-.                \}
+.                Q_FITS
 .             \}
-.             if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \}
 .          \}
 .          el \{\
-.             rr #Q_FITS
-.             ie r#HEAD \{\
-.                if \\n[#HEAD]=1 \{ . \}
-.             \}
-.             el \{\
-.                ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u \}
-.                el \{ .ALD \\n[#DOC_LEAD]u \}
-.             \}
+.             Q_NOFIT
 .          \}
 .       \}
 .    \}
@@ -9485,6 +9726,13 @@
 .    if \\n[#ENDNOTE] \{\
 .       in +\\n[#EN_PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u
 .    \}
+.    ie \\n[#START]=1 \{\
+.       ie !\\n[#Q_LEAD_DIFF]<0 \{ .ALD \\n[#Q_SPACE_ADJ]u \}
+.       el \{ .RLD 0-\\n[#Q_LEAD_DIFF]u \}
+.    \}
+.    el \{\
+.       ALD \\n[#Q_SPACE_ADJ]u
+.    \}
 .    if \\n[#QUOTE]=1 \{\
 .       nf
 .       P_QUOTE
@@ -9499,32 +9747,57 @@
 .    \}
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       ie \\n[#START] \{\
-.          ie \\n[#PP_SPACE] \{ . \}
-.          el \{ .ALD \\n[#DOC_LEAD]u \}
+.          ie \\n[#PP_SPACE] \{\
+.
+.          \}
+.          el \{\
+.             ALD \\n[#DOC_LEAD]u
+.             SHIM
+.          \}
 .       \}
 .       el \{\
 .          ie \\n[#PP_SPACE] \{ . \}
 .          el \{\
-.             ie \\n[#HEAD]=1 \{ .ALD \\n[#DOC_LEAD]u \}
+.             ie \\n[#HEAD]=1 \{\
+.                ALD \\n[#DOC_LEAD]u
+.                SHIM
+.             \}
 .             el \{\
+.                ie \\n[#FULLSPACE_QUOTES] \{\
+.                   ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u \}
+.                   el \{ .ALD \\n[#DOC_LEAD]u \}
+.                \}
+.                el \{ .ALD (\\n[#DOC_LEAD]u/2u) \}
 .                ie \\n[#Q_FITS] \{\
 .                   ie \\n[#Q_TOP]=\\n[#PAGE_TOP] \{\
 .                      nr #Q_AT_TOP 1
-.                      ALD \\n[#DOC_LEAD]u
+.                      nr #DELAY_SHIM 1
 .                   \}
-.                   el \{\
-.                      ie \\n[#FULLSPACE_QUOTES] \{ .ALD \\n[#DOC_LEAD]u \}
-.                      el \{ .ALD \\n[#DOC_LEAD]u/2u \}
+.                   el \{ .SHIM \}
+.                \}
+.                el \{\
+.                   SHIM
+.\" Make sure that Q_LEAD_DIFF is not added to the first line of
+.\" normal text at the top of any page following output of a quote
+.\" whose last line falls on B_MARGIN of the previous page.
+.                   if 
\\n(nl=(\\n[#T_MARGIN]-\\n[#DOC_LEAD]+\\n[#Q_LEAD_DIFF]) \{\
+.                      PRINT \&
+.                      br
+.                      sp -1v-\\n[#Q_LEAD_DIFF]u
 .                   \}
 .                \}
-.                el \{ .ALD \\n[#DOC_LEAD]u \}
 .             \}
 .          \}
 .       \}
 .    \}
+.    if \\n[#LINENUMBERS]=2 \{\
+.       nr #LINENUMBERS 1
+.       ie \\n[#RESTORE_LN_NUM]=1 \{ .nm \\n[#NEXT_LN] \}
+.       el \{ .nm +0 \}
+.    \}
 .    if \\n[#ENDNOTE] \{ .nr #FULLSPACE_QUOTES \\n[#RESET_QUOTE_SPACING] \}
-.    if r#HEAD     \{ .rr #HEAD     \}
-.    if r#EPIGRAPH \{ .rr #EPIGRAPH \}
+.    if r#HEAD        \{ .rr #HEAD     \}
+.    if r#EPIGRAPH    \{ .rr #EPIGRAPH \}
 .    rr #Q_PP
 .    rr #LINEBREAK
 .    nr #PP_STYLE  1
@@ -9556,6 +9829,88 @@
 .       ENDNOTE_PARA_INDENT \\n[#RESET_EN_PP_INDENT]u
 .       QUAD \\*[EN_QUAD]
 .    \}
+.    if r#DELAY_SHIM \{\
+.       SHIM
+.       rr #DELAY_SHIM
+.    \}
+.END
+\#
+\#
+\# Utility macros for DO_QUOTE
+\# ---------------------------
+\#
+.MAC Q_FITS END
+.    nr #Q_FITS 1
+.    ie \\n[#HEAD]=1 \{\
+.       ALD \\n[#Q_LEAD_DIFF]u
+.    \}
+.    el \{\
+.       ie \\n[#START] \{ . \}
+.       el \{\
+.          ie \\n[#FULLSPACE_QUOTES] \{\
+.             ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+.             el \{ .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+.          \}
+.          el \{\
+.\" This seems to be the only way to get the baseline of quotes that start
+.\" at the top of the page to fall on the first line of the "grid" (i.e on
+.\" the first legal baseline of the page).
+.             ie \\n[#Q_TOP]=\\n[#PAGE_TOP] \{\
+.                if \\n[#QUOTE]=1 \{\
+.                   rn P_QUOTE Q_TEMP
+.                   di P_QUOTE
+.                   vs \\n[#Q_LEAD]u
+.                   PRINT \&
+.                   sp -1v+\\n[#Q_LEAD_DIFF]u
+.                   Q_TEMP
+.                   di
+.                \}
+.                if \\n[#QUOTE]=2 \{\
+.                   rn B_QUOTE Q_TEMP
+.                   di B_QUOTE
+.                   vs \\n[#BQ_LEAD]u
+.                   PRINT \&
+.                   sp -1v+\\n[#Q_LEAD_DIFF]u
+.                   Q_TEMP
+.                   di
+.                \}
+.                rm Q_TEMP
+.             \}
+.             el \{\
+.                ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_LEAD_DIFF]u
+.             \}
+.          \}
+.       \}
+.       if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \}
+.    \}
+.END
+\#
+.MAC Q_NOFIT END
+.    rr #Q_FITS
+.    ie r#HEAD \{\
+.       if \\n[#HEAD]=1 \{ . \}
+.    \}
+.    el \{\
+.       ie \\n[#FULLSPACE_QUOTES] \{\
+.          ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+.          el \{ .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+.       \}
+.       el \{ .ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_LEAD_DIFF]u \}
+.       nr #Q_PARTIAL_DEPTH 0 \\n[#Q_LEAD_REAL]
+.       while \\n+[#Q_PARTIAL_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
+.
+.\}
+.       nr #Q_PARTIAL_DEPTH -\\n[#Q_LEAD_REAL]
+.       nr #Q_SPACE_ADJ 
(\\n[#TRAP_DISTANCE]-1)-\\n[#Q_PARTIAL_DEPTH]+\\n[#Q_LEAD_DIFF]u
+.\" Hack to deal with the fact that even though the above routine
+.\" makes the bottom line of the quote fall exactly on the bottom
+.\" margin when traps are disabled, it refuses to do so when traps
+.\" are on.  The difference by which it's off is #Q_LEAD_DIFF
+.\" (the +\\n[#Q_LEAD_DIFF] at the end of the line, above).  Hack
+.\" solution: temporarily lower the FOOTER trap position.
+.       nr #SAVED_FOOTER_POS \\n[#VARIABLE_FOOTER_POS]
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+.25v
+.    \}
 .END
 \#
 \# ====================================================================
@@ -9609,7 +9964,6 @@
 .    if \\n[#QUOTE]=1 \{\
 .       nf
 .       P_QUOTE
-.       if !\\n[#START] \{ .rr #QUOTE \}
 .    \}
 .    if \\n[#QUOTE]=2 \{\
 .       nf
@@ -9803,6 +10157,10 @@
 .       if \\n[#EN_FIRST_PN] \{ .PAGENUMBER \\n[#EN_FIRST_PN] \}
 .       rr #EN_FIRST_PAGE
 .    \}
+.    if \\n[#BIB_FIRST_PAGE] \{\
+.       if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN] \}
+.       rr #BIB_FIRST_PAGE
+.    \}
 .    if \\n[#TOC_FIRST_PAGE] \{\
 .       PAGENUMBER 1
 .       rr #TOC_FIRST_PAGE
@@ -9856,13 +10214,14 @@
 \#
 \# +++FOOTNOTES+++
 \#
-\# Mom's footnote handling is baroque, to say the least.  There are
-\# redundancies in a number of the macros involved, as well as some
-\# registers that probably don't get used anymore.  The baggage is
-\# left in in case some new footnote oddity/challenge gets thrown
-\# my way.
-\#
-\# The macros are heavily commented.
+.ig
+Mom's footnote handling is baroque, to say the least.  There are
+redundancies in a number of the macros involved, as well as some
+registers that probably don't get used anymore.  The baggage is left
+in in case some new footnote oddity/challenge gets thrown my way.
+
+The macros are heavily commented.
+..
 \#
 \# FOOTNOTE AUTOLEAD
 \# -----------------
@@ -9896,34 +10255,140 @@
 \# FOOTNOTE MARKER STYLE
 \# ---------------------
 \# *Arguments:
-\#   STAR | NUMBER
+\#   STAR | NUMBER | LINE
 \# *Function:
 \#   Sets register #FN_MARKER_STYLE, used in FOOTNOTE to determine
 \#   the style of footnote markers.
 \# *Notes:
-\#   1=STAR; 2=NUMBER.  Default is STAR.
+\#   1=STAR; 2=NUMBER; 3=LINE.  LINE means "use output line numbers".
+\#   Default is STAR.
 \#
 .MAC FOOTNOTE_MARKER_STYLE END
 .    if '\\$1'STAR' \{\
+.       if \\n[#FN_MARKER_STYLE]=3 \{\
+.          if !\\n[#NEWPAGE]=1 \{\
+.             tm1 "[mom]: Your current FOOTNOTE_MARKER STYLE is LINE.  
+.             tm1 "       You cannot change footnote marker style without
+.             tm1 "       first breaking to a new page with NEWPAGE.
+.             tm1 "       Ignoring request FOOTNOTE_MARKER_STYLE STAR at line 
\\n(.c.
+.             return
+.          \}
+.       \}
+.       if \\n[#RUN_ON]=1 \{\
+.          tm1 "[mom]: FOOTNOTE_MARKER_STYLE STAR at line \\n(.c is 
incompatible
+.          tm1 "       with RUN_ON footnotes.  Ignoring request.
+.          return
+.       \}
 .       nr #FN_MARKER_STYLE 1
+.       if \\n[#NEWPAGE]=1 \{ .rr #NEWPAGE \}
+.       FOOTNOTE_MARKERS
 .    \}
 .    if '\\$1'NUMBER' \{\
+.       if \\n[#FN_MARKER_STYLE]=3 \{\
+.          if !\\n[#NEWPAGE]=1 \{\
+.             tm1 "[mom]: Your current FOOTNOTE_MARKER STYLE is NUMBER.  
+.             tm1 "       You cannot change footnote marker style without
+.             tm1 "       first breaking to a new page with NEWPAGE.
+.             tm1 "       Ignoring request FOOTNOTE_MARKER_STYLE NUMBER at 
line \\n(.c.
+.             return
+.          \}
+.       \}
+.       if \\n[#RUN_ON]=1 \{\
+.          tm1 "[mom]: FOOTNOTE_MARKER_STYLE NUMBER at line \\n(.c is 
incompatible
+.          tm1 "       with RUN_ON footnotes.  Ignoring request.
+.          return
+.       \}
 .       nr #FN_MARKER_STYLE 2
+.       if \\n[#NEWPAGE]=1 \{ .rr #NEWPAGE \}
+.       FOOTNOTE_MARKERS
+.    \}
+.    if '\\$1'LINE' \{\
+.       nr #FN_MARKER_STYLE 3
+.       FOOTNOTE_MARKERS OFF
+.       if !\\n[#FN_LN_SEP] \{\
+.          if !\\n[#FN_LN_BRACKETS] \{ .FOOTNOTE_LINENUMBER_BRACKETS SQUARE \}
+.       \}
 .    \}
 .END
 \#
 \#
-\# RESET FOOTNOTE NUMBER
-\# ---------------------
-\# *Arguments:
-\#   <none> | PAGE
+\# FOOTNOTE LINENUMBER MARK
+\# ------------------------
 \# *Function:
-\#   Resets register #FN_NUMBER to 1.  If argument is PAGE, creates
-\#   toggle #RESET_FN_NUMBER which is checked in HEADER.  If 1,
-\#   numbered footnotes on every page start at 1.
+\#   This string, when called inline, stores the current output line
+\#   number in register #FN_MARK for use with FOOTNOTE.
 \#
-.MAC RESET_FOOTNOTE_NUMBER END
-.    ie '\\$1'' \{ .nr #FN_NUMBER 0 1 \}
+.ds FN-MARK \R'#FN_MARK \En(ln'
+\#
+\#
+\# FOOTNOTE LINENUMBER SEPARATOR
+\# -----------------------------
+\# *Argument:
+\#   <user-defined separator>
+\# *Function:
+\#   Stores user-defined separator (for use then
+\#   FOOTNOTE_MARKER_STYLE is LINE) in string $FN_LN_SEP.  The
+\#   separator is intended to be used when the user wishes a
+\#   separator, rather than the choice of brackets offered by
+\#   FOOTNOTE_LINENUMBER_BRACKETS.
+\#
+.MAC FOOTNOTE_LINENUMBER_SEPARATOR END
+.    rr #FN_LN_BRACKETS
+.    nr #FN_LN_SEP 1
+.    ds $FN_LN_SEP "\\$1
+.END
+\#
+\#
+\# FOOTNOTE LINENUMBER BRACKETS
+\# ----------------------------
+\# *Argument:
+\#   PARENS | SQUARE | BRACES or ( | [ | {
+\# *Function:
+\#   Sets register #FN_LN_BRACKETS to 1, and creates strings
+\#   $FN_OPEN_BRACKET and $FN_CLOSE_BRACKET according to the given
+\#   argument.
+\#
+.MAC FOOTNOTE_LINENUMBER_BRACKETS END
+.    rr #FN_LN_SEP
+.    nr #FN_LN_BRACKETS 1
+.    if '\\$1'PARENS' \{\
+.       ds $FN_OPEN_BRACKET (
+.       ds $FN_CLOSE_BRACKET )
+.    \}
+.    if '\\$1'(' \{\
+.       ds $FN_OPEN_BRACKET (
+.       ds $FN_CLOSE_BRACKET )
+.    \}
+.    if '\\$1'SQUARE' \{\
+.       ds $FN_OPEN_BRACKET [
+.       ds $FN_CLOSE_BRACKET ]
+.    \}
+.    if '\\$1'[' \{\
+.       ds $FN_OPEN_BRACKET [
+.       ds $FN_CLOSE_BRACKET ]
+.    \}
+.    if '\\$1'BRACES' \{\
+.       ds $FN_OPEN_BRACKET {
+.       ds $FN_CLOSE_BRACKET }
+.    \}
+.    if '\\$1'{' \{\
+.       ds $FN_OPEN_BRACKET {
+.       ds $FN_CLOSE_BRACKET }
+.    \}
+.END
+\#
+\#   
+\# RESET FOOTNOTE NUMBER
+\# ---------------------
+\# *Arguments:
+\#   <none> | PAGE
+\# *Function:
+\#   Resets register #FN_NUMBER to 1.  If argument is PAGE, creates
+\#   toggle #RESET_FN_NUMBER which is checked in HEADER.  If 1,
+\#   numbered footnotes on every page start at 1.
+\#
+.MAC RESET_FOOTNOTE_NUMBER END
+.    ie '\\$1'' \{ .nr #FN_NUMBER 0 1 \}
 .    el \{ .nr #RESET_FN_NUMBER 1 \}
 .END
 \#
@@ -9978,7 +10443,7 @@
 \!.     PT_SIZE 12
 .       RLD 1v
 .       LEFT
-.       PRINT 
\\v'-\\n[#FN_RULE_ADJ]u'\\l'\\n[#FN_RULE_LENGTH]u'\\v'+\\n[#FN_RULE_ADJ]u'
+.       PRINT 
\v'-\\n[#FN_RULE_ADJ]u'\l'\\n[#FN_RULE_LENGTH]u'\v'+\\n[#FN_RULE_ADJ]u'
 \!.     PT_SIZE \\n[#DOC_PT_SIZE]u\\*$[FN_SIZE_CHANGE]
 .       QUAD \\*[$FN_QUAD]
 .    \}
@@ -9989,10 +10454,76 @@
 .END
 \#
 \#
+\# FOOTNOTE SPACING
+\# ----------------
+\# *Arguments:
+\#   <per item post footnote spacing> | <anything>
+\# *Function:
+\#   Enables printing of post footnote spacing.
+\# *Notes:
+\#   Default is no space.
+\#
+.MAC FOOTNOTE_SPACING END
+.    ie \B'\\$1' \{ .nr #FN_SPACE (\\$1) \}
+.    el \{ .nr #FN_SPACE 0 \}
+.END
+\#
+\#
+\# RUN ON FOOTNOTES
+\# ----------------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Toggles run-on footnotes on or off.
+\#
+.MAC FOOTNOTES_RUN_ON END
+.    ie '\\$1'' \{\
+.       if \\n[#FN_COUNT]>0 \{\
+.          tm1 "[mom]: Switching to run-on footnotes at line \\n(.c will cause
+.          tm1 "       you to loose footnotes already formatted for this page.
+.          tm1 "       Ignoring request FOOTNOTES_RUN_ON.
+.          rr #RUN_ON
+.          return
+.       \}
+.       nr #RUN_ON 1
+.       if \\n[#FN_MARKER_STYLE]=1 \{ .RUNON_WARNING \}
+.       if \\n[#FN_MARKER_STYLE]=2 \{ .RUNON_WARNING \}
+.    \}
+.    el \{\
+.       if \\n[#FN_COUNT]>0 \{\
+.          if \\n[#RUN_ON]=1 \{\
+.             tm1 "[mom]: Switching off run-on footnotes at line \\n(.c will 
cause
+.             tm1 "       you to loose footnotes already formatted for this 
page.
+.             tm1 "       Ignoring request FOOTNOTES_RUN_ON \\$1.
+.             return
+.          \}
+.       \}
+.       rr #RUN_ON
+.    \}
+.END
+\#
+\#
+.MAC RUNON_WARNING END
+.    if \\n[#FN_MARKER_STYLE]=1 \{\
+.       tm1 "[mom]: The footnote marker style active at line \\n(.c is STAR,
+.       tm1 "       which is incompatible with run-on footnotes.  Please change
+.       tm1 "       the footnote marker style to LINE.  Continuing to process,
+.       tm1 "       but ignoring request FOOTNOTES_RUN_ON.
+.       rr #RUN_ON
+.    \}
+.    if \\n[#FN_MARKER_STYLE]=2 \{\
+.       tm1 "[mom]: The footnote marker style active at line \\n(.c is NUMBER,
+.       tm1 "       which is incompatible with run-on footnotes.  Please change
+.       tm1 "       the footnote marker style to LINE.  Continuing to process,
+.       tm1 "       but ignoring request FOOTNOTES_RUN_ON.
+.       rr #RUN_ON
+.    \}
+.END
+\#
 \# FOOTNOTE
 \# --------
 \# *Arguments:
-\#   <none> | INDENT  L|LEFT|R|RIGHT|B|BOTH  <indent value> > | <anything>
+\#   <none> | INDENT  L|LEFT|R|RIGHT|B|BOTH  <indent value> | <anything>
 \# *Function:
 \#   Begins collecting and diverting footnote text if no argument
 \#   given.  Otherwise, ends diversion FOOTNOTES, measures footnote
@@ -10008,14 +10539,52 @@
 \#   for each footnote the user wants indented.
 \#
 .MAC FOOTNOTE END
+.    if !\\n(.u \{ .nr #ADD_BREAK 1 \}
 .    ie '\\$1'' \{\
-\# Begin processing footnotes that occur inside QUOTE, BLOCKQUOTE
-\# or EPIGRAPH.
+.       if \\n[#FN_MARKER_STYLE]=3 \{\
+.          if !\\n[#LINENUMBERS] \{\
+.             tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
+.             tm1 "       FOOTNOTE_MARKER_STYLE is LINE.
+.             ab Aborting on FOOTNOTE at line \\n(.c.
+.          \}
+.          if \\n[#FN_MARK]=0 \{ .nr #FN_MARK \\n(ln \}
+.          nr #FN_MARK_2 \\n(ln
+.          if '\\n(.z'P_QUOTE' \{\
+.             nr #FN_MARK -1
+.             nr #FN_MARK_2 -1
+.          \}
+.          if \\n[#IN_DIVER]=1 \{\
+.             if '\\n(.z'P_QUOTE' \{\
+.                if !\\n[#QUOTE_LN]=1 \{\
+.                   if !\\n[#SILENT_QUOTE_LN]=1 \{\
+.                      tm1 "[mom]: You have requested a line-numbered footnote 
inside a
+.                      tm1 "       QUOTE at line \\n(.c, but line-numbering 
has not been enabled
+.                      tm1 "       for QUOTES.  Printing footnote with label 
"0".
+.                      rr #FN_MARK
+.                      rr #FN_MARK_2
+.                   \}
+.                \}
+.             \}
+.             if '\\n(.z'B_QUOTE' \{\
+.                if !\\n[#BQUOTE_LN]=1 \{\
+.                   if !\\n[#SILENT_BQUOTE_LN]=1 \{\
+.                      tm1 "[mom]: You have requested a line-numbered footnote 
inside a
+.                      tm1 "       BLOCKQUOTE at line \\n(.c, but 
line-numbering has not been enabled
+.                      tm1 "       for BLOCKQUOTES.  Printing footnote with 
label "0".
+.                      rr #FN_MARK
+.                      rr #FN_MARK_2
+.                   \}
+.                \}
+.             \}
+.          \}
+.       \}
+.\" Begin processing footnotes that occur inside QUOTE, BLOCKQUOTE
+.\" or EPIGRAPH.
 .       if \\n[#IN_DIVER]=1 \{\
 .          nr #PAGE_POS \\n(nl+\\n(.d+\\n[#DOC_LEAD]
 .          nr #FOOTER_POS \\n[#PAGE_LENGTH]+(\\n[#VARIABLE_FOOTER_POS]-1)
 .          nr #SPACE_TO_FOOTER \\n[#FOOTER_POS]-\\n[#PAGE_POS]
-\# Are we on a "defer" line?  If so, defer the text of the footnote.
+.\" Are we on a "defer" line?  If so, defer the text of the footnote.
 .          ie \\n[#SPACE_TO_FOOTER]=\\n[#DOC_LEAD]:\\n[#SPACE_TO_FOOTER]=0 \{\
 .             nr #DIVER_FN 2 \" treat like a normal deferred footnote
 .          \}
@@ -10025,34 +10594,34 @@
 .          if \\n[#PAGE_POS]>\\n[#FOOTER_POS] \{\
 .             nr #DIVER_FN 1 \" move this footnote
 .          \}
-\# Test for situation where, because a final line of QUOTE,
-\# BLOCKQUOTE or EPIGRAPH isn't yet adjusted at this point, the last
-\# word on the line may *seem* to belong to the final line of the
-\# page, but will, in fact, become the first word of the subsequent
-\# page.  In such circumstances, we want the the footnote to be
-\# treated as a "moved" diversion footnote.
+.\" Test for situation where, because a final line of QUOTE, BLOCKQUOTE
+.\" or EPIGRAPH isn't yet adjusted at this point, the last word on the
+.\" line may *seem* to belong to the final line of the page, but will,
+.\" in fact, become the first word of the subsequent page.  In such
+.\" circumstances, we want the the footnote to be treated as a "moved"
+.\" diversion footnote.
 .          if \\n(.k>\\n(.l \{ .nr #DIVER_FN 1 \}
 .          if r#DIVER_FN \{\
 .             if !\\n[#DIVER_FN]=2 \{ .\\n+[#DONE_ONCE] \}
-\# A footnote inside a diversion will become the 1st footnote on the
-\# following page/column.
+.\" A footnote inside a diversion will become the 1st footnote on the
+.\" following page/column.
 .             if \\n[#DIVER_FN]=1 \{ .DIVER_FN_1_PRE \}
-\# A footnote inside a diversion that should be treated like a
-\# normal footnote (including defers.)
+.\" A footnote inside a diversion that should be treated like a
+.\" normal footnote (including defers.)
 .             if \\n[#DIVER_FN]=2 \{ .DIVER_FN_2_PRE \}
 .          \}
 .          nr #SAVED_FN_COUNT \\n[#FN_COUNT]+1
 .          nr #SAVED_FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS]+1
 .       \}
-\# End processing footnotes that occur inside QUOTE, BLOCKQUOTE or
-\# EPIGRAPH.
-\#
-\# Test for situation where, because a final line of running text
-\# isn't yet adjusted at this point, the last word on the line may
-\# *seem* to belong to the final line of the page, but will, in
-\# fact, become the first word of the subsequent page.  In such
-\# circumstances, we want the the footnote marker in running text to
-\# be the correct one for the 1st footnote on a page.
+.\" End processing footnotes that occur inside QUOTE, BLOCKQUOTE or
+.\" EPIGRAPH.
+.\"
+.\" Test for situation where, because a final line of running text
+.\" isn't yet adjusted at this point, the last word on the line may
+.\" *seem* to belong to the final line of the page, but will, in
+.\" fact, become the first word of the subsequent page.  In such
+.\" circumstances, we want the the footnote marker in running text to
+.\" be the correct one for the 1st footnote on the page.
 .       if \\n(.k>\\n(.l \{\
 .          if 
(\\n(nl+\\n[#DOC_LEAD])>(\\n[#PAGE_LENGTH]+\\n[#VARIABLE_FOOTER_POS]) \{\
 .             ie \\n[#COLUMNS]=1 \{\
@@ -10081,8 +10650,8 @@
 .             \}
 .          \}
 .       \}
-\# Housekeeping
 .       if \\n[#FN_MARKERS] \{\
+.\" Housekeeping
 .          if \\n[#CONDENSE] \{ \*[CONDX]\c \}
 .          if \\n[#EXTEND]   \{ \*[EXTX]\c  \}
 .          if \\n[#PRINT_STYLE]=1 \{\
@@ -10091,56 +10660,56 @@
 .                UNDERLINE OFF
 .             \}
 .          \}
-\# Add footnote markers to running text...
+.\" Add footnote markers to running text...
 .          if !\\n[#NO_FN_MARKER] \{\
-\# ...but not if TERMINATE has not been called
+.\" ...but not if TERMINATE has not been called
 .             if !r#TERMINATE \{\
-\# Marker style star/dagger/double-dagger
+.\" Marker style star/dagger/double-dagger
 .                if \\n[#FN_MARKER_STYLE]=1 \{\
-\# Columnar docs either move col to col, or last col to next page.
-\# They require their own special FN_COUNT because regular FN_COUNT
-\# is used to figure out things like whether or not to put a rule
-\# above footnotes (in addition to keeping track of the footnote
-\# count in non-columnar docs).
+.\" Columnar docs either move col to col, or last col to next page.
+.\" They require their own special FN_COUNT because regular FN_COUNT
+.\" is used to figure out things like whether or not to put a rule
+.\" above footnotes (in addition to keeping track of the footnote
+.\" count in non-columnar docs).
 .                   ie \\n[#COLUMNS]=1 \{\
-.                      if \\n[#FN_COUNT_FOR_COLS]=0 \{ .PRINT \*[BU2]*         
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=1 \{ .PRINT \*[BU1]\(dg      
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=2 \{ .PRINT \(dd             
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=3 \{ .PRINT \*[BU2]**        
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=4 \{ .PRINT \*[BU1]\(dg\(dg  
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=5 \{ .PRINT \(dd\(dd         
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=6 \{ .PRINT \*[BU2]***       
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=7 \{ .PRINT 
\*[BU1]\(dg\(dg\(dg \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=8 \{ .PRINT \(dd\(dd\(dd     
   \}
-.                      if \\n[#FN_COUNT_FOR_COLS]=9 \{ .PRINT \*[BU2]****      
   \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=0 \{ .PRINT \*[BU2]*\c       
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=1 \{ .PRINT \*[BU1]\(dg\c    
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=2 \{ .PRINT \(dd\c           
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=3 \{ .PRINT \*[BU2]**\c      
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=4 \{ .PRINT 
\*[BU1]\(dg\(dg\c     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=5 \{ .PRINT \(dd\(dd\c       
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=6 \{ .PRINT \*[BU2]***\c     
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=7 \{ .PRINT 
\*[BU1]\(dg\(dg\(dg\c \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=8 \{ .PRINT \(dd\(dd\(dd\c   
     \}
+.                      if \\n[#FN_COUNT_FOR_COLS]=9 \{ .PRINT \*[BU2]****\c    
     \}
 .                   \}
 .                   el \{\
-.                      if \\n[#FN_COUNT]=0 \{ .PRINT \*[BU2]*            \}
-.                      if \\n[#FN_COUNT]=1 \{ .PRINT \*[BU1]\(dg         \}
-.                      if \\n[#FN_COUNT]=2 \{ .PRINT \(dd                \}
-.                      if \\n[#FN_COUNT]=3 \{ .PRINT \*[BU2]**           \}
-.                      if \\n[#FN_COUNT]=4 \{ .PRINT \*[BU1]\(dg\(dg     \}
-.                      if \\n[#FN_COUNT]=5 \{ .PRINT \(dd\(dd            \}
-.                      if \\n[#FN_COUNT]=6 \{ .PRINT \*[BU2]***          \}
-.                      if \\n[#FN_COUNT]=7 \{ .PRINT \*[BU1]\(dg\(dg\(dg \}
-.                      if \\n[#FN_COUNT]=8 \{ .PRINT \(dd\(dd\(dd        \}
-.                      if \\n[#FN_COUNT]=9 \{ .PRINT \*[BU2]****         \}
+.                      if \\n[#FN_COUNT]=0 \{ .PRINT \*[BU2]*\c            \}
+.                      if \\n[#FN_COUNT]=1 \{ .PRINT \*[BU1]\(dg\c         \}
+.                      if \\n[#FN_COUNT]=2 \{ .PRINT \(dd\c                \}
+.                      if \\n[#FN_COUNT]=3 \{ .PRINT \*[BU2]**\c           \}
+.                      if \\n[#FN_COUNT]=4 \{ .PRINT \*[BU1]\(dg\(dg\c     \}
+.                      if \\n[#FN_COUNT]=5 \{ .PRINT \(dd\(dd\c            \}
+.                      if \\n[#FN_COUNT]=6 \{ .PRINT \*[BU2]***\c          \}
+.                      if \\n[#FN_COUNT]=7 \{ .PRINT \*[BU1]\(dg\(dg\(dg\c \}
+.                      if \\n[#FN_COUNT]=8 \{ .PRINT \(dd\(dd\(dd\c        \}
+.                      if \\n[#FN_COUNT]=9 \{ .PRINT \*[BU2]****\c         \}
 .                   \}
 .                \}
-\# Marker style superscript numbers
+.\" Marker style superscript numbers
 .                if \\n[#FN_MARKER_STYLE]=2 \{\
-.                   if \\n[#PRINT_STYLE]=1 \{ .PRINT 
"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#FN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2" \}
-.                   if \\n[#PRINT_STYLE]=2 \{ .PRINT 
"\*[SUP]\\n+[#FN_NUMBER]\*[SUPX]" \}
+.                   if \\n[#PRINT_STYLE]=1 \{ .PRINT 
"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#FN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c" \}
+.                   if \\n[#PRINT_STYLE]=2 \{ .PRINT 
"\*[SUP]\\n+[#FN_NUMBER]\*[SUPX]\c" \}
 .                \}
 .             \}
 .          \}
 .       \}
-\# More housekeeping
-\#
-\# #SPACE_REMAINING is the space left between where we are
-\# on the page and the bottom margin.  It's used to determine whether
-\# or not the footnote will overflow, and how many lines of
-\# footnotes will fit on the page if some have to overflow.
+.\" More housekeeping
+.\"
+.\" #SPACE_REMAINING is the space left between where we are
+.\" on the page and the bottom margin.  It's used to determine whether
+.\" or not the footnote will overflow, and how many lines of
+.\" footnotes will fit on the page if some have to overflow.
 .       ie \\n[#DIVER_FN]=2 \{\
 .          nr #SPACE_REMAINING 
(\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-(\\n[#PAGE_POS])
 .       \}
@@ -10155,7 +10724,7 @@
 .       nr #PP_STYLE 2
 .       if \\n[#INDENT_FIRST_PARAS] \{ .nr #INDENT_FIRSTS 1 \}
 .       INDENT_FIRST_PARAS
-\# Prepare FOOTNOTE to receive footnote text.
+.\" Prepare FOOTNOTE to receive footnote text.
 .       ev FOOTNOTES
 .       ll \\n[#DOC_L_LENGTH]u
 .       ta \\n(.lu
@@ -10184,39 +10753,53 @@
 .          HY OFF
 .       \}
 .       nr #FN_LEAD \\n[#LEAD]
-\# Begin diversion FOOTNOTES or FN_IN_DIVER
+.\" Begin diversion FOOTNOTES or FN_IN_DIVER
 .       ie r#COUNTERS_RESET \{\
 .          ie \\n[#DONE_ONCE]=1 \{\
-.             di FN_IN_DIVER
+.             ie \\n[#RUN_ON] \{\
+.                di RUNON_FN_IN_DIVER
+.                nr #RUNON_FN_IN_DIVER 1
+.             \}
+.             el \{ .di FN_IN_DIVER \}
 .          \}
 .          el \{\
-.             da FN_IN_DIVER
+.             ie \\n[#RUN_ON] \{\
+.                da RUNON_FN_IN_DIVER
+.                nr #RUNON_FN_IN_DIVER 1
+.             \}
+.             el \{ .da FN_IN_DIVER \}
 .          \}
-.          \\n+[#DONE_ONCE]
+.       \\n+[#DONE_ONCE]
 .       \}
-.       el \{ .da FOOTNOTES \}
-.          if \\n[#FOOTNOTE_COLOR]=1 \{\
-.             TRAP OFF
-.             nf
-\m[\\*[$FOOTNOTE_COLOR]]
-.             EOL
-.             fi
-.             TRAP
+.       el \{\
+.          ie \\n[#RUN_ON] \{\
+.             da RUNON_FOOTNOTES
+.             nr #RUNON_FOOTNOTES 1
 .          \}
+.          el \{ .da FOOTNOTES \}
+.       \}
+.       if \\n[#FOOTNOTE_COLOR]=1 \{\
+.          TRAP OFF
+.          nf
+\m[\\*[$FOOTNOTE_COLOR]]
+.          EOL
+.          fi
+.          TRAP
+.       \}
 .       if \\n[#EPIGRAPH] \{ .nr #FN_FOR_EPI 1 \}
-\# When a deferred footnote is also the 1st footnote on the page,
-\# and when the page it's output on also has footnotes, some
-\# whitespace is needed between the deferred footnote and the
-\# first footnote belonging to the output page so that there's
-\# no confusion when two stars (or two number 1s) appear in
-\# footnotes...
+.\" When a deferred footnote is also the 1st footnote on the page,
+.\" and when the page it's output on also has footnotes, some
+.\" whitespace is needed between the deferred footnote and the
+.\" first footnote belonging to the output page so that there's
+.\" no confusion when two stars (or two number 1s) appear in
+.\" footnotes...
 .       if \\n[#FN_DEFER_SPACE] \{\
-\# ...but only add the extra space if TERMINATE has not been called
+.\" ...but only add the extra space if TERMINATE has not been called
 .          if !r#TERMINATE \{\
-\# ...and not if defer space has already been added
+.\" ...and not if defer space has already been added
 .             if !\\n[#DEFER_SPACE_ADDED] \{\
-\# ...and not if the footnote count the last time we checked for
-\# a defer situation inside a diversion is greater than 1.
+.\" ...and not if the footnote count the last time we checked for
+.\" a defer situation inside a diversion is greater than 1.
 .                if !\\n[#SAVED_DIVER_FN_COUNT]>1 \{\
 .                   if \\n[#FN_MARKER_STYLE]=1 \{ .ALD 1v \}
 .                   if \\n[#RESET_FN_NUMBER] \{ .ALD 1v \}
@@ -10229,31 +10812,44 @@
 .       \}
 .       if \\n[#DIVERTED]=3 \{\
 .          if \\n[#FN_COUNT]>0 \{\
-\!.RLD 1v
+\!.           RLD 1v
 .          \}
 .       \}
-\# Add footnote rule (or, if no rule, some whitespace).
-\# N.B.- this line increments #FN_COUNT each and every time FOOTNOTE
-\# is run.
+.\" Add footnote rule (or, if no rule, some whitespace).
+.\" N.B.- this line increments #FN_COUNT each and every time FOOTNOTE
+.\" is run.
 .       if \\n+[#FN_COUNT]=1 \{\
-\# If a footnote is called in a diversion, and the footnote has to
-\# be moved, don't put in the rule now (it's taken care of when
-\# FN_IN_DIVER is output into FOOTNOTE in PROCESS_FN_IN_DIVER).
+.\" If a footnote is called in a diversion, and the footnote has to
+.\" be moved, don't put in the rule now (it's taken care of when
+.\" FN_IN_DIVER is output into FOOTNOTE in PROCESS_FN_IN_DIVER).
 .          if !\\n[#DONT_RULE_ME]=1 \{\
 .             if !\\n[#FN_DEPTH] \{\
-.                if \\n[#PRINT_STYLE]=1 \{ .ALD \\n[#DOC_LEAD]u \}
-.                ie \\n[#FN_RULE]=1 \{ .PRINT_FOOTNOTE_RULE \}
+.                if \\n[#PRINT_STYLE]=1 \{\
+.                   if !\\n[#RUN_ON] \{ .ALD \\n[#DOC_LEAD]u \}
+.                \}
+.                ie \\n[#FN_RULE]=1 \{\
+.                   if !\\n[#RUN_ON] \{ .PRINT_FOOTNOTE_RULE \}
+.                \}
 .                el \{ .ALD 1v \}
 .                nr #RULED 1
 .             \}
 .          \}
 .       \}
 .       rr #DONT_RULE_ME
-\# Add footnote markers to footnote text...
-.       if \\n[#FN_MARKERS] \{\
+.\" Add footnote markers to footnote text...
+.       ie \\n[#FN_MARKERS] \{\
+.          if \\n[#FN_SPACE]>0 \{\
+.             if \\n[#FN_COUNT]>0 \{\
+.                ALD \\n[#FN_SPACE]u
+.             \}
+.          \}
 .          if !\\n[#NO_FN_MARKER] \{\
-\# ...but not if TERMINATE has been called.
+.\" ...but not if TERMINATE has been called.
 .             if !r#TERMINATE \{\
+.                if \\n[#REF]=1 \{\
+\!.                 in +\\*[$REF_FN_INDENT]
+\!.                 ti -\\*[$REF_FN_INDENT]
+.                \}
 .                if \\n[#FN_MARKER_STYLE]=1 \{\
 .                   ie \\n[#COLUMNS]=1 \{\
 .                      \\n+[#FN_COUNT_FOR_COLS]
@@ -10295,9 +10891,49 @@
 .             \}
 .          \}
 .       \}
+.       el \{\
+.\" Line-numbered footnotes handling
+.          if \\n[#FN_MARKER_STYLE]=3 \{\
+.             if \\n[#FN_SPACE]>0 \{\
+.                if !\\n[#RUN_ON]=1 \{\
+.                   if \\n[#FN_COUNT]>0 \{\
+.                      ALD \\n[#FN_SPACE]u
+.                   \}
+.                \}
+.             \}
+.             if \\n[#REF]=1 \{\
+.                if !\\n[#RUN_ON]=1 \{\
+\!.                 in +\\*[$REF_FN_INDENT]
+\!.                 ti -\\*[$REF_FN_INDENT]
+.                \}
+.             \}
+.             ie \\n[#FN_LN_BRACKETS]=1 \{\
+.                ds $FN_LINENUMBER \v'-.085m'\\*[$FN_OPEN_BRACKET]\v'.085m'
+.                ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \{\
+.                   as $FN_LINENUMBER 
\\n[#FN_MARK]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m' \"
+.                \}
+.                el \{\
+.                   as $FN_LINENUMBER 
\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m'
 \"
+.                \}
+.             \}
+.             el \{\
+.                ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \{\
+.                   ds $FN_LINENUMBER \\n[#FN_MARK]\\*[$FN_LN_SEP]
+.                \}
+.                el \{\
+.                   ds $FN_LINENUMBER 
\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\\*[$FN_LN_SEP]
+.                \}
+.             \}
+.             if !\\n[#NO_FN_MARKER] \{\
+.                PRINT \\*[$FN_LINENUMBER]\c
+.             \}
+.             rm $FN_LINENUMBER
+.             nr #FN_MARK 0
+.          \}
+.       \}
 .    \}
+.\" If INDENT arg is passed to FOOTNOTE, calculate the indent...
 .    el \{\
-\# If INDENT arg passed to footnotes, calculate the indent...
 .       ie '\\$1'INDENT' \{\
 .          ev FOOTNOTES
 .          if '\\$2'L'     \{ .in (\\$3)  \}
@@ -10317,14 +10953,14 @@
 .             in \\n[#FN_BL_INDENT]u
 .          \}
 .          ev
-\# ...then re-run FOOTNOTE without an argument.
+.\" ...then re-run FOOTNOTE without an argument.
 .          FOOTNOTE
 .       \}
 .       el \{\
 .          br
-\# Add "defer space" if the previously diverted footnote was the
-\# 1st footnote proper to its page (i.e. it looks like a deferred
-\# footnote but its really an overflow).
+.\" Add "defer space" if the previously diverted footnote was the
+.\" 1st footnote proper to its page (i.e. it looks like a deferred
+.\" footnote but it's really an overflow).
 .          if \\n[#DIVERTED] \{\
 .             if \\n[#PREV_FN_DEFERRED]=1 \{\
 .                if \\n[#FN_MARKER_STYLE]=1 \{ .ALD \\n[#FN_LEAD]u \}
@@ -10332,13 +10968,21 @@
 .                nr #PREV_FN_DEFERRED 2
 .             \}
 .          \}
-\# Terminate FOOTNOTES or FN_IN_DIVER diversion
+.          if \\n[#REF]=1 \{\
+\!.           in 
+.          \}
+.\" Terminate FOOTNOTES or FN_IN_DIVER diversion
 .          di
 .          HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p
 .          hy 14
-\# More housekeeping
-\# Turn off indent possibly set by FOOTNOTE INDENT
+.\" More housekeeping
+.\" Turn off indent possibly set by FOOTNOTE INDENT
 .          in 0
+.\" Restore sentence spacing
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          if d$RESTORE_SS_VAR \{ .SS \\*[$RESTORE_SS_VAR] \}
+.          rm $RESTORE_SS_VAR
+.       \}
 .          if \\n[#PRINT_STYLE]=1 \{\
 .             if \\n[#UNDERLINE_WAS_ON] \{\
 .                UNDERLINE
@@ -10351,44 +10995,76 @@
 .          nr #PP_STYLE \\n[#PP_STYLE_PREV]
 .          if !\\n[#INDENT_FIRSTS] \{ .INDENT_FIRST_PARAS OFF \}
 .          rr #INDENT_FIRSTS
-\# Calculate footnote depth, but not if #COUNTERS_RESET (created in
-\# DIVER_FN_1_PRE) to instruct FOOTNOTES to skip this step for now
-\# (it's taken care of when FN_IN_DIVER is output into FOOTNOTES in
-\# PROCESS_FN_IN_DIVER).
+.\" Calculate footnote depth, but not if #COUNTERS_RESET (created in
+.\" DIVER_FN_1_PRE) to instruct FOOTNOTES to skip this step for now
+.\" (it's taken care of when FN_IN_DIVER is output into FOOTNOTES in
+.\" PROCESS_FN_IN_DIVER).
 .          ie r#COUNTERS_RESET \{\
 .             rr #COUNTERS_RESET
 .          \}
 .          el \{\
 .             nr #GET_DEPTH 1
-\# If the footnote is the 1st on the page and it falls too close
-\# to the bottom margin, defer the footnote text to the next page...
+.\" If the footnote is the 1st on the page and it falls too close
+.\" to the bottom margin, defer the footnote text to the next page...
 .             if (\\n[#SPACE_REMAINING]-1)<=(\\n[#DOC_LEAD]) \{\
-\# ...but not if PROCESS_FN_LEFTOVER has set #PREV_FN_DEFERRED to 1
+.\" ...but not if PROCESS_FN_LEFTOVER has set #PREV_FN_DEFERRED to 1
 .                if !\\n[#PREV_FN_DEFERRED]=1 \{\
 .                   nr #FN_DEFER 1
 .                   nr #FN_DEPTH +\\n[#DIVER_DEPTH]
 .                   rr #GET_DEPTH
-\# This is required so that the defer space clause can distinguish
-\# a real #FN_COUNT=1 from one generated if footnotes is run inside
-\# QUOTE, BLOCKQUOTE or EPIGRAPH
+.\" This is required so that the defer space clause can distinguish
+.\" a real #FN_COUNT=1 from one generated if FOOTNOTE is run inside
+.\" QUOTE, BLOCKQUOTE or EPIGRAPH
 .                   if \\n[#DIVER_FN]=2 \{\
 .                      nr #SAVED_DIVER_FN_COUNT \\n[#FN_COUNT]
 .                      rr #DIVER_FN
 .                   \}
 .                \}
 .             \}
-\# Calculate the footnote depth.
+.\" Calculate the footnote depth.
 .             if \\n[#GET_DEPTH]=1 \{\
-\# Save the previous footnote depth (for use when there will be
-\# some overflowed footnote text).
+.\" Save the previous footnote depth (for use when there will be
+.\" some overflowed footnote text).
 .                nr #SAVED_FN_DEPTH_1 \\n[#FN_DEPTH]
-\# Add the depth of the current footnote to any already existent
-\# footnotes.
+.\" Add the depth of the current footnote to any already existent
+.\" footnotes.
 .                nr #FN_DEPTH +\\n[#DIVER_DEPTH]
-\# Save the new depth
+.\" Special handling for run-on footnotes
+.                if \\n[#RUN_ON]=1 \{\
+.                   if \\n[#RUNON_FOOTNOTES] \{\
+.                      unformat RUNON_FOOTNOTES
+.                   \}
+.                   if \\n[#RUNON_FN_IN_DIVER] \{\
+.                      unformat RUNON_FN_IN_DIVER
+.                   \}
+.                   ev FOOTNOTES
+.\" Recreate FOOTNOTES with rule followed by text of unformatted
+.\" run-on footnotes.
+.                   di FOOTNOTES
+.                   ie \\n[#FN_RULE]=0 \{ .RLD 1v \}
+.                   el \{\
+.                      PRINT 
\v'-\\n[#FN_RULE_ADJ]u'\l'\\n[#FN_RULE_LENGTH]u'\v'+\\n[#FN_RULE_ADJ]u'
+.                   \}
+.                   br
+.                   if \\n[#RUNON_FOOTNOTES] \{\
+.                      RUNON_FOOTNOTES
+.                      rr #RUNON_FOOTNOTES
+.                   \}
+.                   if \\n[#RUNON_FN_IN_DIVER] \{\
+.                      RUNON_FN_IN_DIVER
+.                      rr #RUNON_FN_IN_DIVER
+.                   \}
+.                   br
+.                   di
+.                   ev
+.                   nr #FN_DEPTH \\n[#DIVER_DEPTH]
+.                   nr #SAVED_VFP 0+\\n[#VARIABLE_FOOTER_POS]
+.                   nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]u
+.                \}
+.\" Save the new depth
 .                nr #SAVED_FN_DEPTH_2 \\n[#FN_DEPTH]
-\# Signal that defer space should be added when PROCESS_FN_LEFTOVER
-\# processes deferred footnotes.
+.\" Signal that defer space should be added when PROCESS_FN_LEFTOVER
+.\" processes deferred footnotes.
 .                if \\n[#FN_DEFER] \{\
 .                   if \\n[#FN_COUNT]=2 \{\
 .                      ie \\n[#COLUMNS] \{\
@@ -10404,22 +11080,22 @@
 .                   \}
 .                   rr #FN_DEFER
 .                \}
-\# If the depth of the whole footnote won't fit in the space
-\# between where we are on the page and the bottom margin, calculate
-\# how much of it will fit.
+.\" If the depth of the whole footnote won't fit in the space
+.\" between where we are on the page and the bottom margin, calculate
+.\" how much of it will fit.
 .                if \\n[#FN_DEPTH]>\\n[#SPACE_REMAINING] \{\
 .                   nr #FN_LINES 0 1
-.                   while 
(\\n+[#FN_LINES]*\\n[#FN_LEAD])<(\\n[#SPACE_REMAINING] \{\
+.                   while 
(\\n+[#FN_LINES]*\\n[#FN_LEAD])<\\n[#SPACE_REMAINING] \{\
 .                      nr #FN_DEPTH (\\n[#FN_LINES]*\\n[#FN_LEAD])
-.                   \}
+.\}
 .                   nr #VFP_DIFF \\n[#FN_DEPTH]-\\n[#SAVED_FN_DEPTH_1]
 .                   nr #OVERFLOW 1
-\# Very occasionally, #VFP_DIFF, on a 1st footnote that isn't to
-\# be deferred, comes up with a depth equal to exactly 1 line
-\# of footnotes, i.e. enough room to print the rule and nothing
-\# else.  The following tests for such a condition, and rather than
-\# attempting to treat the footnote as an overflow, it tells mom to
-\# treat it as a special kind of deferred footnote (#FN_DEFER 2).
+.\" Very occasionally, #VFP_DIFF, on a 1st footnote that isn't to
+.\" be deferred, comes up with a depth equal to exactly 1 line
+.\" of footnotes, i.e. enough room to print the rule and nothing
+.\" else.  The following tests for such a condition, and rather than
+.\" attempting to treat the footnote as an overflow, it tells mom to
+.\" treat it as a special kind of deferred footnote (#FN_DEFER 2).
 .                   if \\n[#SAVED_FN_DEPTH_1]=0 \{\
 .                      if \\n[#FN_DEPTH]=\\n[#FN_LEAD] \{\
 .                         nr #FN_DEFER 2
@@ -10428,9 +11104,13 @@
 .                      \}
 .                   \}
 .                \}
-\# Calculate VFP based on whether the footnote overflows, or is to
-\# be treated normally.
+.\" Calculate VFP based on whether the footnote overflows, or is to
+.\" be treated normally.
 .                ie \\n[#OVERFLOW]=1 \{\
+.                   if \\n[#RUN_ON] \{\
+.                      rr #VARIABLE_FOOTER_POS
+.                      nr #VARIABLE_FOOTER_POS \\n[#SAVED_VFP]
+.                   \}
 .                   ie \\n[#FN_COUNT]=1 \{\
 .                      ie \\n[#RULED]=1 \{\
 .                         ie \\n[#COLUMNS]=1 \{\
@@ -10478,12 +11158,12 @@
 .                                     if !\\n[#VFP_DIFF] \{\
 .                                        if \\n[#FN_MARKER_STYLE]=1 \{\
 .                                           da FOOTNOTES
-\!.ALD \\n[#FN_LEAD]u
+\!.                                            ALD \\n[#FN_LEAD]u
 .                                           di
 .                                        \}
 .                                        if \\n[#RESET_FN_NUMBER] \{\
 .                                           da FOOTNOTES
-\!.ALD \\n[#FN_LEAD]u
+\!.                                            ALD \\n[#FN_LEAD]u
 .                                           di
 .                                        \}
 .                                     \}
@@ -10492,6 +11172,8 @@
 .                            \}
 .                         \}
 .                      \}
+.                      nr #VARIABLE_FOOTER_POS -\\n[#VFP_DIFF]
+.                      nr #FN_DEPTH \\n[#SAVED_FN_DEPTH_1]+\\n[#VFP_DIFF]
 .                   \}
 .                   el \{\
 .                      nr #VARIABLE_FOOTER_POS -\\n[#VFP_DIFF]
@@ -10513,13 +11195,6 @@
 .                   \}
 .                   if \\n[#FN_COUNT]>1 \{\
 .                      nr #NO_BACK_UP 1
-\# DIVERTED=2 doesn't seem to serve a purpose anymore, but I'm
-\# leaving it in, commented out, in case I discover why it was there in
-\# the first place.  The rr #DIVERTED line seems to solve whatever
-\# problem DIVERTED=2 was designed to correct.
-\#
-\#.if \\n[#DIVERTED]=1 \{ .nr #DIVERTED 2 \}
-\#
 .                      rr #DIVERTED
 .                      rr #RULED
 .                   \}
@@ -10527,15 +11202,15 @@
 .             \}
 .          \}
 .          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
-\# See VFP_CHECK for an explanation of the next lines.
-\# The trap has to be removed, prior to setting it, each time
-\# FOOTNOTE is run.
+.\" See VFP_CHECK for an explanation of the next lines.
+.\" The trap has to be removed, prior to setting it, each time
+.\" FOOTNOTE is run.
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             ch VFP_CHECK
 .             wh \\n[#VARIABLE_FOOTER_POS]u-\\n[#DOC_LEAD]u VFP_CHECK
 .          \}
-\# If we have a footnote whose text has to be deferred to the next
-\# page, reset the FOOTER trap to its original location.
+.\" If we have a footnote whose text has to be deferred to the next
+.\" page, reset the FOOTER trap to its original location.
 .          if \\n[#FN_DEFER] \{\
 .             nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]u
 .             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
@@ -10543,14 +11218,20 @@
 .       \}
 .       nr #NO_FN_MARKER 0
 .    \}
+.    if \\n[#ADD_BREAK] \{\
+.       br
+.       rr #ADD_BREAK
+.    \}
 .END
 \#
 \# Utility macros to manage footnotes that occur inside diversions
 \# ---------------------------------------------------------------
 \#
-\# There are some redundancies here; they're left in in case
-\# unforeseen footnote situations crop up in the future that might
-\# require manipulation of them.
+.ig
+There are some redundancies here; they're left in in case unforeseen
+footnote situations crop up in the future that might require
+manipulation of them.
+..
 \#
 \# 1. Pre-footnote processing for footnotes in diversions
 \#
@@ -10601,7 +11282,9 @@
 \# 2. Post-footnote processing for footnotes in diversions
 \#
 \# Even when a footnote inside a diversion is treated as
-\# "normal," some manipulation of registers is required.
+\# "normal," some manipulation of registers is required.  The
+\# macro is called in DO_QUOTE (i.e. at the termination of
+\# quotes and blockquotes) and in DO_EPIGRAPH.
 \#
 .MAC DIVER_FN_2_POST END
 .    if \\n[#DONE_ONCE]=1 \{\
@@ -10640,22 +11323,24 @@
 \# The main macros that handle footnote processing.
 \# -----------------------------------------------
 \#
-\# Sometimes, #VARIABLE_FOOTER_POS sets FOOTER at a location that
-\# gives the impression another line of running text could fit on
-\# the page.  VFP_CHECK is always set to the line just above the
-\# one where FOOTER will be sprung, and checks for this condition.
-\# If it exists, FOOTER is set one line lower on the page, thus
-\# squeezing in an extra line of running text.  This is a judgment
-\# call on my part, but seems to work well.  If there are problems
-\# (e.g. footnotes really do look jammed), the user should probably
-\# adjust FOOTNOTE_AUTOLEAD and/or FOOTNOTE_RULE_ADJ.
-\# 
-\# The macro has to be run in its own environment, otherwise the
-\# first word of the last line before the footnotes gets chopped.
+.ig
+Sometimes, #VARIABLE_FOOTER_POS sets FOOTER at a location that gives
+the impression another line of running text could fit on the page.
+VFP_CHECK is always set to the line just above the one where FOOTER
+will be sprung, and checks for this condition.  If it exists, FOOTER
+is set one line lower on the page, thus squeezing in an extra line
+of running text.  This is a judgment call on my part, but seems to
+work well.  If there are problems (e.g. footnotes really do look
+jammed), the user should probably adjust FOOTNOTE_AUTOLEAD and/or
+FOOTNOTE_RULE_ADJ.
+
+The macro has to be run in its own environment, otherwise the first
+word of the last line before the footnotes gets chopped.
+..
 \#
 .MAC VFP_CHECK END
 .    ev VFP_CHECK
-\# The trap also has to be removed each time VFP_CHECK is run
+.\" The trap also has to be removed each time VFP_CHECK is run
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       ch VFP_CHECK
 .       SIZESPECS
@@ -10684,13 +11369,14 @@
 .    ev
 .END
 \#
-\# FN_OVERFLOW_TRAP starts off "underneath" FOOTER, but is revealed as
-\# #VARIABLE_FOOTER_POSITION changes the position of FOOTER.
-\# FN_OVERFLOW_TRAP simply starts diversion FN_OVERFLOW
-\# to "catch" the overflow.  The diversion is ended in FOOTER,
-\# immediately after FOOTER outputs the diversion, FOOTNOTES,
-\# before PROCESS_FN_LEFTOVER is run (either in HEADER, or in
-\# FOOTER if moving col to col).
+.ig
+FN_OVERFLOW_TRAP starts off "underneath" FOOTER, but is revealed
+as #VARIABLE_FOOTER_POSITION changes the position of FOOTER.
+FN_OVERFLOW_TRAP simply starts diversion FN_OVERFLOW to "catch"
+the overflow.  The diversion is ended in FOOTER, immediately after
+FOOTER outputs the diversion, FOOTNOTES, before PROCESS_FN_LEFTOVER
+is run (either in HEADER, or in FOOTER if moving col to col).
+..
 \#
 .MAC FN_OVERFLOW_TRAP END 
 .    if \\n[#FN_COUNT] \{\
@@ -10701,11 +11387,6 @@
 .                if \\n[#FROM_FOOTER] \{\
 .                   if \\n[#PREV_FN_DEFERRED] \{\
 .                      if !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-\# The following line used to serve some purpose, but as things
-\# stand now, it screws things up.  I'm leaving it in, commented out,
-\# in case I \# discover why I thought it was needed.
-\#
-\#\!.RLD \\n[#FN_LEAD]u
 .                      rr #PREV_FN_DEFERRED
 .                      \}
 .                   \}
@@ -10713,13 +11394,13 @@
 .                if !\\n[#FROM_FOOTER] \{\
 .                   if !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
 .                      if !\\n[#LAST_FN_COUNT_FOR_COLS]>1 \{\
-\!.RLD \\n[#FN_LEAD]u
+\!.                       RLD \\n[#FN_LEAD]u
 .                      \}
 .                   \}
 .                \}
 .             \}
 .             el \{\
-\!.RLD \\n[#FN_LEAD]u
+\!.              RLD \\n[#FN_LEAD]u
 .             \}
 .          \}
 .       \}
@@ -10728,26 +11409,23 @@
 .          rr #PREV_FN_DEFERRED
 .       \}
 .    \}
-\# When #FROM_DIVERT_FN is 1, it signals to FOOTNOTE, when run from
-\# within DIVERT_FN_LEFTOVER, to set #SPACE_REMAINING to the total
-\# area allowable for running text.
+.\" When #FROM_DIVERT_FN is 1, it signals to FOOTNOTE, when run from
+.\" within DIVERT_FN_LEFTOVER, to set #SPACE_REMAINING to the total
+.\" area allowable for running text.
 .    nr #FROM_DIVERT_FN 1
 .END
 \#
-\# PROCESS_FN_LEFTOVER is called at the top of HEADER, and in
-\# FOOTER if we're moving from one column to the next (i.e. after
-\# outputting FOOTNOTES).  It checks for whether we have a "deferred
-\# footnote" situation, and resets counters and number registers
-\# accordingly.  Lastly, if we have some footnote overflow, it calls
-\# DIVERT_FN_OVERFLOW.
+.ig
+PROCESS_FN_LEFTOVER is called at the top of HEADER, and in
+FOOTER if we're moving from one column to the next (i.e. after
+outputting FOOTNOTES).  It checks for whether we have a "deferred
+footnote" situation, and resets counters and number registers
+accordingly.  Lastly, if we have some footnote overflow, it calls
+DIVERT_FN_OVERFLOW.
+..
 \#
 .MAC PROCESS_FN_LEFTOVER END
 .    if \\n[#PREV_FN_DEFERRED]=2 \{\
-\# #FN_COUNT_FOR_COLS_AT_FOOTER used to have a purpose.  I'm
-\# leaving it in, commented out, as a safeguard against
-\# (re)discovering why it was needed.
-\#
-\#.if \\n[#FN_COUNT_FOR_COLS_AT_FOOTER]=0 \{ .rr #PREV_FN_DEFERRED \}
 .       if \\n[#FN_COUNT_AT_FOOTER]>1 \{ .rr #PREV_FN_DEFERRED \}
 .    \}
 .    if !\\n[#FN_DEFER] \{\
@@ -10795,9 +11473,11 @@
 .    rr #FROM_DIVERT_FN
 .END
 \#
-\# DIVERT_FN_LEFTOVER is called in PROCESS_FN_LEFTOVER (at
-\# the top of HEADER, and in FOOTER if we're moving from one column
-\# to the next).
+.ig
+DIVERT_FN_LEFTOVER is called in PROCESS_FN_LEFTOVER (at
+the top of HEADER, and in FOOTER if we're moving from one column
+to the next).
+..
 \#
 .MAC DIVERT_FN_LEFTOVER END
 .    nr #NO_FN_MARKER 1
@@ -10818,10 +11498,12 @@
 .    rr #FN_OVERFLOW_DEPTH
 .END
 \#
-\# This is a special macro to deal with footnotes that are set
-\# inside diversions (QUOTE, BLOCKQUOTE and EPIGRAPH).  It's called
-\# in HEADER (and in FOOTER, if we're moving from column to column),
-\# and comes after PROCESS_FOOTNOTE_LEFTOVER in those two macros.
+.ig
+This is a special macro to deal with footnotes that are set inside
+diversions (QUOTE, BLOCKQUOTE and EPIGRAPH).  It's called in HEADER
+(and in FOOTER, if we're moving from column to column), and comes
+after PROCESS_FOOTNOTE_LEFTOVER in those two macros.
+..
 \#
 .MAC PROCESS_FN_IN_DIVER END
 .    nr #SPACE_REMAINING 0
@@ -10831,8 +11513,15 @@
 .       rr #RESET_FN_COUNTERS
 .    \}
 .    FOOTNOTE
-.    nf
-.    FN_IN_DIVER
+.    if \\n[#FN_OVERFLOW_DEPTH] \{ .nf \}
+.    ie dRUNON_FN_IN_DIVER \{\
+.       RUNON_FN_IN_DIVER
+.       rm RUNON_FN_IN_DIVER
+.    \}
+.    el \{\
+.       nf
+.       FN_IN_DIVER
+.    \}
 .    FOOTNOTE OFF
 .    rr #DIVER_FN
 .END
@@ -10841,16 +11530,20 @@
 \#
 \# +++ENDNOTES+++
 \#
-\# When endnotes are output, the spacing between the notes is always 1
-\# extra linespace.  This can have bottom margin consequences.  If this
-\# doesn't bother you, don't worry about it.  If it does bother you, and
-\# you want to adjust the spacing between any two endnotes (as they're
-\# output), make the spacing adjustments (.ALD/.RLD) at the *end* of
-\# endnotes (i.e. just before .ENDNOTE OFF), not at the top.
-\#
-\# Endnotes must be output manually with .ENDNOTES.  This allows user
-\# the flexibility to output endnotes at the end of each collated
-\# document, or to output them at the end of the entire document.
+.ig
+When endnotes are output, the spacing between the notes is always
+1 extra linespace.  This can have bottom margin consequences.  If
+this doesn't bother you, don't worry about it.  If it does bother
+you, and you want to adjust the spacing between any two endnotes (as
+they're output), make the spacing adjustments (.ALD/.RLD) at the
+*end* of endnotes (i.e. just before .ENDNOTE OFF), not at the top.
+
+Endnotes must be output manually with .ENDNOTES. This allows user
+the flexibility to output endnotes at the end of each collated
+document, or to output them at the end of the entire document.
+..
+\#
+\# Control macros
 \#
 \# ENDNOTE POINT SIZE
 \# ------------------
@@ -11000,6 +11693,11 @@
 .END
 \#
 \#
+.MAC ENDNOTE_TITLE_SPACE END
+.    nr #EN_TITLE_SPACE (\\$1)
+.END
+\#
+\#
 \# ENDNOTE TITLE UNDERSCORE
 \# ------------------------
 \# *Argument:
@@ -11015,6 +11713,108 @@
 .END
 \#
 \#
+\# ENDNOTE MARKER STYLE
+\# --------------------
+\# *Arguments:
+\#   NUMBER | LINE
+\# *Function:
+\#   Sets register #EN_MARKER_STYLE, used in ENDNOTE to determine
+\#   the style of endnote markers (labels).
+\# *Notes:
+\#   1=NUMBER; 2=LINE.  LINE means "use output line numbers".
+\#   Default is NUMBER.
+\#
+.MAC ENDNOTE_MARKER_STYLE END
+.    if '\\$1'NUMBER' \{\
+.       nr #EN_MARKER_STYLE 1
+.    \}
+.    if '\\$1'LINE' \{\
+.       nr #EN_MARKER_STYLE 2
+.       if !\\n[#EN_LN_SEP] \{\
+.          if !\\n[#EN_LN_BRACKETS] \{ .ENDNOTE_LINENUMBER_BRACKETS SQUARE \}
+.       \}
+.    \}
+.END
+\#
+\#
+\# ENDNOTE LINENUMBER MARK
+\# -----------------------
+\# *Function:
+\#   This string, when called inline, stores the current output line
+\#   number in register #EN_MARK for use with ENDNOTE.
+\#
+.ds EN-MARK \R'#EN_MARK \En(ln'
+\#
+\#
+\# ENDNOTE LINENUMBER SEPARATOR
+\# ----------------------------
+\# *Argument:
+\#   <user-defined separator>
+\# *Function:
+\#   Stores user-defined separator (for use then
+\#   ENDNOTE_MARKER_STYLE is LINE) in string $EN_LN_SEP.  The
+\#   separator is intended to be used when the user wishes a
+\#   separator, rather than the choice of brackets offered by
+\#   ENDNOTE_LINENUMBER_BRACKETS.
+\#
+.MAC ENDNOTE_LINENUMBER_SEPARATOR END
+.    rr #EN_LN_BRACKETS
+.    nr #EN_LN_SEP 1
+.    ds $EN_LN_SEP "\\$1
+.END
+\#
+\#
+\# ENDNOTE LINENUMBER BRACKETS
+\# ---------------------------
+\# *Argument:
+\#   PARENS | SQUARE | BRACES or ( | [ | {
+\# *Function:
+\#   Sets register #EN_LN_BRACKETS to 1, and creates strings
+\#   $EN_OPEN_BRACKET and $EN_CLOSE_BRACKET according to the given argument.
+\#
+.MAC ENDNOTE_LINENUMBER_BRACKETS END
+.    rr #EN_LN_SEP
+.    nr #EN_LN_BRACKETS 1
+.    if '\\$1'PARENS' \{\
+.       ds $EN_OPEN_BRACKET (
+.       ds $EN_CLOSE_BRACKET )
+.    \}
+.    if '\\$1'(' \{\
+.       ds $EN_OPEN_BRACKET (
+.       ds $EN_CLOSE_BRACKET )
+.    \}
+.    if '\\$1'SQUARE' \{\
+.       ds $EN_OPEN_BRACKET [
+.       ds $EN_CLOSE_BRACKET ]
+.    \}
+.    if '\\$1'[' \{\
+.       ds $EN_OPEN_BRACKET [
+.       ds $EN_CLOSE_BRACKET ]
+.    \}
+.    if '\\$1'BRACES' \{\
+.       ds $EN_OPEN_BRACKET {
+.       ds $EN_CLOSE_BRACKET }
+.    \}
+.    if '\\$1'{' \{\
+.       ds $EN_OPEN_BRACKET {
+.       ds $EN_CLOSE_BRACKET }
+.    \}
+.END
+\#
+\#
+\# ENDNOTE LINENUMBER GAP
+\# ----------------------
+\# *Argument:
+\#   <space between line-number labels and endnotes text>
+\# *Function:
+\#   Defines string $EN_LN_GAP, used during printing of line-number
+\#   labels in ENDNOTE.
+\#
+.MAC ENDNOTE_LINENUMBER_GAP END
+.    ds $EN_LN_GAP \\$1
+.END
+\#
+\#   
 \# ENDNOTE NUMBERS ALIGN RIGHT
 \# ---------------------------
 \# *Argument:
@@ -11225,25 +12025,42 @@
 \#   Places superscript endnote number in text, then collects and
 \#   processes endnote in diversion END_NOTES.
 \# *Notes:
-\#   \c must be appended to the word immediately preceding .ENDNOTE.
+\#   \c must be appended to the word immediately preceding .ENDNOTE
+\#   when ENDNOTE_MARKER_STYLE is NUMBER.
 \#
 .MAC ENDNOTE END
+.    if !\\n(.u \{ .nr #ADD_BREAK 1 \}
 .    ie '\\$1'' \{\
 .       nr #ENDNOTE 1
-.       if \\n[#CONDENSE] \{ \*[CONDX]\c \}
-.       if \\n[#EXTEND]   \{ \*[EXTX]\c  \}
-.       if \\n[#PRINT_STYLE]=1 \{\
-.          if \\n[#UNDERLINE_ON] \{\
-.             nr #UNDERLINE_WAS_ON 1
-.             UNDERLINE OFF
-.          \}
-.          if \\n[#SLANT_ON] \{\
-.              nr #SLANT_WAS_ON 1
+.       if \\n[#EN_MARKER_STYLE]=1 \{\
+.          if \\n[#CONDENSE] \{ \*[CONDX]\c \}
+.          if \\n[#EXTEND]   \{ \*[EXTX]\c  \}
+.          if \\n[#PRINT_STYLE]=1 \{\
+.             if \\n[#UNDERLINE_ON] \{\
+.                nr #UNDERLINE_WAS_ON 1
+.                UNDERLINE OFF
+.             \}
+.             if \\n[#SLANT_ON] \{\
+.                 nr #SLANT_WAS_ON 1
 \*[SLANTX]\c
+.             \}
+.             PRINT 
"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#EN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c"
+.          \}
+.          if \\n[#PRINT_STYLE]=2 \{ .PRINT 
"\*[SUP]\\n+[#EN_NUMBER]\*[SUPX]\c" \}
+.       \}
+.       if \\n[#EN_MARKER_STYLE]=2 \{\
+.          if !\\n[#LINENUMBERS] \{\
+.             tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
+.             tm1 "       ENDNOTE_MARKER_STYLE is LINE.
+.             ab Aborting on ENDNOTE at line \\n(.c.
+.          \}
+.          if \\n[#EN_MARK]=0 \{ .nr #EN_MARK \\n(ln \}
+.          nr #EN_MARK_2 \\n(ln
+.          if '\\n(.z'P_QUOTE' \{\
+.             nr #EN_MARK -1
+.             nr #EN_MARK_2 -1
 .          \}
-.          PRINT 
"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#EN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2"
 .       \}
-.       if \\n[#PRINT_STYLE]=2 \{ .PRINT "\*[SUP]\\n+[#EN_NUMBER]\*[SUPX]" \}
 .       nr #PP_STYLE_PREV \\n[#PP_STYLE]
 .       nr #PP_STYLE 1
 .       if \\n[#INDENT_FIRST_PARAS] \{ .nr #INDENT_FIRSTS 1 \}
@@ -11285,73 +12102,126 @@
 .             \}
 .          \}
 .       \}
-.       ie \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-.          ie \\n[#EN_NUMBER]=1 \{\
-.             if !'\\*[$EN_TITLE]'' \{ .sp \}
-.          \}
-.          el \{ .sp \}
-\!.        TRAP OFF
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             TYPEWRITER
-.          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
+.       ie \\n[#EN_NUMBER]=1 \{\
+.          if !'\\*[$EN_TITLE]'' \{ .sp \}
+.       \}
+.       el \{ .sp \}
+.       if \\n[#PRINT_STYLE]=1 \{\
+.          TYPEWRITER
+.       \}
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          if \\n[#EN_MARKER_STYLE]=1 \{\
 .             FAMILY  \\*[$EN_NUMBER_FAM]
 .             FT      \\*[$EN_NUMBER_FT]
 .             PT_SIZE \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
 .          \}
-.          nr #RESET_L_LENGTH \\n(.l
-.          nr #EN_NUMBER_L_LENGTH \w'\0'*\\n[#EN_NUMBER_PLACEHOLDERS]+\w'.'
-.          ll \\n[#EN_NUMBER_L_LENGTH]u
-.          RIGHT
-\En[#EN_NUMBER].
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             TYPEWRITER
-.          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             FAMILY  \\*[$EN_FAM]
-.             FT      \\*[$EN_FT]
-.             PT_SIZE \\n[#EN_PS]u
+.          if \\n[#EN_MARKER_STYLE]=2 \{\
+.             FAMILY  \\*[$EN_LN_FAM]
+.             FT      \\*[$EN_LN_FT]
+.             PT_SIZE \\n[#EN_PS]u\\*[$EN_LN_SIZE_CHANGE]
 .          \}
-.          EOL
-.          ll \\n[#RESET_L_LENGTH]u
-.          in \\n[#EN_NUMBER_L_LENGTH]u+\w'.\0'u
-.          nr #EN_TEXT_INDENT \\n(.i
-.          QUAD \\*[$EN_QUAD]
-\!.        TRAP
 .       \}
-.       el \{\
-.          ie \\n[#EN_NUMBER]=1 \{\
-.             if !'\\*[$EN_TITLE]'' \{ .sp \}
-.          \}
-.          el \{ .sp \}
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             TYPEWRITER
+.       if \\n[#EN_MARKER_STYLE]=2 \{\
+.          ENDNOTE_NUMBERS_ALIGN_LEFT
+.          ie \\n[#EN_LN_BRACKETS]=1 \{\
+.             ds $EN_LINENUMBER \v'-.085m'\\*[$EN_OPEN_BRACKET]\v'.085m'
+.             ie \\n[#EN_MARK_2]=\\n[#EN_MARK] \{\
+.                as $EN_LINENUMBER 
\\n[#EN_MARK]\v'-.085m'\\*[$EN_CLOSE_BRACKET]\v'.085m' \"
+.             \}
+.             el \{\
+.                as $EN_LINENUMBER 
\\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\v'-.085m'\\*[$EN_CLOSE_BRACKET]\v'.085m'
 \"
+.             \}
 .          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             FAMILY  \\*[$EN_NUMBER_FAM]
-.             FT      \\*[$EN_NUMBER_FT]
-.             PT_SIZE \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
+.          el \{\
+.             ie \\n[#EN_MARK_2]=\\n[#EN_MARK] \{\
+.                ds $EN_LINENUMBER \\n[#EN_MARK]\\*[$EN_LN_SEP]
+.             \}
+.             el \{\
+.                ds $EN_LINENUMBER 
\\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\\*[$EN_LN_SEP]
+.             \}
 .          \}
-.          QUAD \\*[$EN_QUAD]
-\En[#EN_NUMBER].\0\c
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             FAMILY  \\*[$EN_FAM]
-.             FT      \\*[$EN_FT]
-.             PT_SIZE \\n[#EN_PS]u
+.          nr #EN_MARK 0
+.       \}
+\!.     TRAP OFF
+.       nr #RESET_L_LENGTH \\n(.l
+.       ie \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
+.          nr #EN_NUMBER_L_LENGTH \w'\0'*\\n[#EN_NUMBER_PLACEHOLDERS]+\w'.'
+.          RIGHT
+.       \}
+.       el \{\
+.          nr #EN_NUMBER_L_LENGTH \w'\En[#EN_NUMBER].\0'
+.          LEFT
+.       \}
+.       if \\n[#EN_MARKER_STYLE]=2 \{\
+.          if !\\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
+.             nr #EN_NUMBER_L_LENGTH \w'\\*[$EN_LINENUMBER]'+\\*[$EN_LN_GAP]
+.             LEFT
 .          \}
 .       \}
-.    \}
-.    el \{\
-.       br
-.       if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-.          in 0
+.       ll \\n[#EN_NUMBER_L_LENGTH]u
+.       if \\n[#EN_MARKER_STYLE]=1 \{\
+\En[#EN_NUMBER].
 .       \}
-.       di
-.       ev
-.       nr #PP_STYLE \\n[#PP_STYLE_PREV]
-.       if !\\n[#INDENT_FIRSTS] \{ .INDENT_FIRST_PARAS OFF \}
-.       rr #INDENT_FIRSTS
-.       rr #ENDNOTE
+.       if \\n[#EN_MARKER_STYLE]=2 \{\
+\\*[$EN_LINENUMBER]
+.          rm $EN_LINENUMBER
+.       \}
+.       EOL
+.       ll \\n[#RESET_L_LENGTH]u
+.       nr #EN_FIGURE_SPACE \w'\0.'
+.       ie \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
+.          in \\n[#EN_NUMBER_L_LENGTH]u+\\n[#EN_FIGURE_SPACE]u
+.       \}
+.       el \{\
+.          ti \\n[#EN_NUMBER_L_LENGTH]u
+.       \}
+.       nr #EN_TEXT_INDENT \\n(.i
+.       QUAD \\*[$EN_QUAD]
+\!.     TRAP
+.       if \\n[#PRINT_STYLE]=1 \{\
+.          TYPEWRITER
+.       \}
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          FAMILY  \\*[$EN_FAM]
+.          FT      \\*[$EN_FT]
+.          PT_SIZE \\n[#EN_PS]u
+.       \}
+.       if \\n[#REF]=1 \{\
+.          ie !\\n[#EN_MARKER_STYLE]=2 \{\
+.             if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
+.                in \\*[$REF_EN_INDENT]
+.                ti -(\\*[$REF_EN_INDENT]-\\n[#EN_NUMBER_L_LENGTH]u)
+.             \}
+.             if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
+.                in \\*[$REF_EN_INDENT]
+.                ti 
-(\\*[$REF_EN_INDENT]-\\n[#EN_NUMBER_L_LENGTH]u-\\n[#EN_FIGURE_SPACE]u)
+.             \}
+.          \}
+.          el \{\
+.             if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
+.                in \\*[$REF_EN_INDENT]
+.                ti -(\\*[$REF_EN_INDENT]-\\n[#EN_NUMBER_L_LENGTH]u)
+.             \}
+.          \}
+.       \}
+.    \}
+.    el \{\
+.       br
+.          in 0
+.       if \\n[#EN_MARKER_STYLE]=2 \{\
+\!.        in 0
+.       \}
+.       di
+.\" Restore sentence spacing
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          if d$RESTORE_SS_VAR \{ .SS \\*[$RESTORE_SS_VAR] \}
+.          rm $RESTORE_SS_VAR
+.       \}
+.       ev
+.       nr #PP_STYLE \\n[#PP_STYLE_PREV]
+.       if !\\n[#INDENT_FIRSTS] \{ .INDENT_FIRST_PARAS OFF \}
+.       rr #INDENT_FIRSTS
+.       rr #ENDNOTE
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          if \\n[#UNDERLINE_WAS_ON] \{\
 .             rr #UNDERLINE_WAS_ON
@@ -11363,6 +12233,10 @@
 \*[SLANT]\c
 .       \}
 .    \}
+.    if \\n[#ADD_BREAK] \{\
+.       br
+.       rr #ADD_BREAK
+.    \}
 .END
 \#
 \#
@@ -11380,6 +12254,10 @@
 .    nr #EN_FIRST_PAGE 1
 .    nr #HEADER_STATE \\n[#HEADERS_ON]
 .    ds $RESTORE_PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
 .    if \\n[#HEADERS_ON]=1 \{\
 .       if !\\n[#EN_ALLOWS_HEADERS_ALL] \{ .HEADERS OFF \}
 .    \}
@@ -11401,7 +12279,7 @@
 .       el \{ .nr #PAGINATE 0 \}
 .    \}
 .    if \\n[#FOOTERS_ON]=1 \{\
-.       if !'\\*[$HDRFTR_CENTER_OLD]'' \{ .ds $HDRFTR_CENTER 
\\*[$HDRFTR_CENTER_OLD]\}
+.       if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER 
\\*[$HDRFTR_CENTER_OLD]
 .    \}
 .    NEWPAGE
 .    if \\n[#FOOTERS_ON]=1 \{\
@@ -11427,7 +12305,7 @@
 .    if \\n[#HEADER_STATE]=1 \{\
 .       if \\n[#EN_ALLOWS_HEADERS] \{ .HEADERS \}
 .    \}
-\# Collect endnote title string for TOC
+.\" Collect endnotes title string for TOC
 .    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    af #TOC_ENTRY_PN \\g[#PAGENUMBER]
 .    ds $TOC_TITLE_ITEM \\*[$EN_STRING]\\|
@@ -11464,8 +12342,8 @@
 \!.  TQ
 .    di       
 .    ev
-\# End collection of endnote title string for TOC
-\# Process endnote
+.\" End collection of endnotes title string for TOC
+.\" Process endnotes
 .    if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#EN_LEAD]u \}
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       if \\n[#EN_NO_COLS] \{\
@@ -11479,7 +12357,8 @@
 .       el \{ .DOC_LEAD \\n[#EN_LEAD]u \}
 .    \}
 .    PRINT \&
-.    sp |\\n[#T_MARGIN]u
+.    ie r#EN_TITLE_SPACE \{ .sp |\\n[#EN_TITLE_SPACE]u \}
+.    el \{ .sp |\\n[#T_MARGIN]u \}
 .    mk ec
 .    if \\n[#SLANT_ON] \{\
 \*[SLANTX]\c
@@ -11525,7 +12404,20 @@
 .       \}
 .    \}
 .    CAPS OFF
-.    ALD \\n[#EN_LEAD]u
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie \\n[#SINGLE_SPACE]=1 \{\
+.          ALD \\n[#EN_LEAD]u*2u
+.       \}
+.       el \{\
+.          ie \\n[#EN_SINGLESPACE]=1 \{\
+.              ALD \\n[#EN_LEAD]u*2
+.          \}
+.          el \{\
+.
+.          \}
+.       \}
+.    \}
+.    if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#EN_LEAD]u \}
 .    QUAD \\*[$EN_QUAD]
 .    nf
 .    END_NOTES
@@ -11542,11 +12434,417 @@
 .    \}
 .    if \\n[#COLUMNS_WERE_ON] \{ .nr #COLUMNS 1 \}
 .    if \\n[#HEADER_STATE]=1 \{ .HEADERS \}
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
 .    rr #ENDNOTES
 .END
 \#
 \# ====================================================================
 \#
+\# +++BIBLIOGRAPHY+++
+\#
+.ig
+Mom treats bibliographies and endnotes very similarly.  The chief
+difference is that endnotes are collected and formatted inside a
+diversion, while bibliographies are built "by hand."  ENDNOTES sets
+up the endnotes page and outputs the formatted diversion.
+BIBLIOGRAPHY sets up the bibliography page, then awaits refer
+commands.
+
+All of the bibliography control macros have their exact
+counterparts in the endnotes control macros.  It was tempting to do
+fancy stuff with aliases to avoid the repetition, but for reasons
+of my own sanity, and for the benefit of anyone wanting to play
+around with the bibliography control macros, I decided to keep them
+separate.
+
+Because the bibliography control macros all have endnotes
+equivalents, refer to the appropriate, similar endnote macro for
+Arguments, Function and Notes.
+..
+\# Bibliography control macros
+\#
+.MAC BIBLIOGRAPHY_PT_SIZE END
+.    nr #BIB_PS (p;\\$1)
+.END
+\#
+.MAC BIBLIOGRAPHY_LEAD END
+.    if !\\n[#OK_PROCESS_LEAD] \{\
+.       ds $BIB_LEAD \\$1
+.       if !'\\$2'' \{\
+.           ds $ADJUST_BIB_LEAD \\$2
+.       \}
+.       return
+.    \}
+.    rr #ADJ_BIB_LEAD
+.    nr #BIB_LEAD (p;\\$1)
+.    if '\\$2'ADJUST' \{\
+.       nr #ORIG_DOC_LEAD \\n[#DOC_LEAD]
+.       nr #RESTORE_ADJ_DOC_LEAD \\n[#ADJ_DOC_LEAD]
+.       nr #ADJ_DOC_LEAD 1
+.       nr #ADJ_BIB_LEAD 1
+.       nr #NO_TRAP_RESET 1
+.       DOC_LEAD \\n[#BIB_LEAD]u ADJUST
+.       nr #BIB_LEAD \\n[#DOC_LEAD]
+.       DOC_LEAD \\n[#ORIG_DOC_LEAD]u
+.       rr #NO_TRAP_RESET
+.       nr #ADJ_DOC_LEAD \\n[#RESTORE_ADJ_DOC_LEAD]
+.       rr #ORIG_DOC_LEAD
+.    \}
+.END
+\#
+.MAC BIBLIOGRAPHY_HDRFTR_CENTER END
+.    ie '\\$1'' \{ .nr #BIB_HDRFTR_CENTER 1 \}
+.    el         \{ .rr #BIB_HDRFTR_CENTER   \}
+.END
+\#
+.MAC BIBLIOGRAPHY_STRING END
+.    ds $BIB_STRING \\$1
+.END
+\#
+.MAC BIBLIOGRAPHY_STRING_UNDERSCORE END
+.    ie '\\$1'' \{ .nr #BIB_STRING_UNDERSCORE 1 \}
+.    el \{\
+.       ie '\\$1'2' \{ .nr #BIB_STRING_UNDERSCORE 2 \}
+.       el \{ .nr #BIB_STRING_UNDERSCORE 0 \}
+.    \}
+.END
+\#
+.MAC BIBLIOGRAPHY_STRING_CAPS END
+.   ie '\\$1'' \{ .nr #BIB_STRING_CAPS 1 \}
+.   el \{ .rr #BIB_STRING_CAPS \}
+.END
+\#
+.MAC BIBLIOGRAPHY_NO_COLUMNS END
+.    ie '\\$1'' \{ .nr #BIB_NO_COLS 1 \}
+.    el \{ .rr #BIB_NO_COLS \}
+.END
+\#
+.MAC BIBLIOGRAPHY_NO_FIRST_PAGENUM END
+.    ie '\\$1'' \{ .nr #BIB_NO_FIRST_PN 1 \}
+.    el \{ .rr #BIB_NO_FIRST_PN \}
+.END
+\#
+.MAC BIBLIOGRAPHY_ALLOWS_HEADERS END
+.    ie '\\$1'' \{ .nr #BIB_ALLOWS_HEADERS 1 \}
+.    el \{\
+.       ie '\\$1'ALL' \{\
+.          nr #BIB_ALLOWS_HEADERS 1
+.          nr #BIB_ALLOWS_HEADERS_ALL 1
+.       \}
+.       el \{\
+.          rr #BIB_ALLOWS_HEADERS
+.          rr #BIB_ALLOWS_HEADERS_ALL
+.       \}
+.    \}
+.END
+\#
+.MAC BIBLIOGRAPHY_PAGENUM_STYLE END
+.    ds $BIB_PN_STYLE \\$1
+.END
+\#
+.MAC BIBLIOGRAPHY_FIRST_PAGENUMBER END
+.    nr #BIB_FIRST_PN \\$1
+.END
+\#
+.MAC SINGLESPACE_BIBLIOGRAPHY END
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie \\n[#SINGLE_SPACE] \{\
+.          nr #BIB_SINGLESPACE 1
+.          rr #IGNORE
+.          if \\n[#OK_PROCESS_LEAD] \{\
+.             BIBLIOGRAPHY_LEAD 12 ADJUST
+.             nr #IGNORE 1
+.          \}
+.       \}
+.       el \{\
+.          ie '\\$1'' \{\
+.             nr #BIB_SINGLESPACE 1
+.             rr #IGNORE
+.             if \\n[#OK_PROCESS_LEAD] \{\
+.                BIBLIOGRAPHY_LEAD 12 ADJUST
+.                nr #IGNORE 1
+.             \}
+.          \}
+.          el \{\
+.             rr #BIB_SINGLESPACE
+.             rr #IGNORE
+.             if \\n[#OK_PROCESS_LEAD] \{\
+.                BIBLIOGRAPHY_LEAD 24 ADJUST
+.                nr #IGNORE 1
+.             \}
+.          \}
+.       \}
+.    \}
+.END
+\#
+\#
+\# Style for outputting collected bibliographic references
+\# -------------------------------------------------------
+\# *Argument:
+\#   LIST | PLAIN [ <list separator> ] [ <list prefix> ]
+\# *Function:
+\#   Sets #BIB_LIST to 1 for numbered list style, 0 for plain output
+\# *Notes:
+\#   Technically, user is supposed to enter PLAIN if s/he wants an
+\#   unumbered bibliography, but the el clause says "any arg but
+\#   LIST means unumbered."  Effectively, any arg but LIST produces
+\#   a "plain" bibliographic list.
+\#
+\#   The 2nd and 3rd args have the same options as the 2nd arg to LIST.
+\#
+.MAC BIBLIOGRAPHY_TYPE END
+.    ie '\\$1'LIST' \{\
+.       nr #BIB_LIST 1
+.       ie '\\$2'' \{\
+.          if '\\*[$BIB_LIST_SEPARATOR]'' .ds $BIB_LIST_SEPARATOR .
+.       \}
+.       el .ds $BIB_LIST_SEPARATOR \\$2
+.       ie '\\$3'' .ds $BIB_LIST_PREFIX
+.       el .ds $BIB_LIST_PREFIX \\$3
+.    \}
+.    el \{ .nr #BIB_LIST 0 \}
+.END
+\#
+\# Spacing between items in bibliographies
+\# ---------------------------------------
+\# *Argument:
+\#   <amount of space>
+\# *Function:
+\#   Gets value for #BIB_SPACE in units.
+\# *Notes:
+\#   Requires a unit of measure.
+\#
+.MAC BIBLIOGRAPHY_SPACING END
+.    ds $BIB_SPACE \\$1
+.    if \\n[#BIB_LEAD]=0 \{\
+.       nr #DEFER_BIB_SPACING 1
+.       return
+.    \}
+.    ds $EVAL_BIB_SPACE \\*[$BIB_SPACE]
+.    substring $EVAL_BIB_SPACE -1
+.    ie '\\*[$EVAL_BIB_SPACE]'v' \{\
+.       substring $BIB_SPACE 0 0
+.       nr #BIB_SPACE \\n[#BIB_LEAD]*\\*[$BIB_SPACE]
+.    \}
+.    el \{\
+.       nr #BIB_SPACE (\\$1)
+.    \}
+.END
+\#
+\# Set up bibliography page
+\# ------------------------
+\# *Function:
+\#   Sets up a new page, with title, ready to accept the output
+\#   of refer's $LIST$ or .R1 bibliography .R2
+\# *Notes:
+\#   Bibliography pages are set up almost identically to endnotes pages.
+\#
+.MAC BIBLIOGRAPHY END
+.    nr #BIBLIOGRAPHY 1
+.    nr #BIB_FIRST_PAGE 1
+.    nr #HEADER_STATE \\n[#HEADERS_ON]
+.    ds $RESTORE_PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
+.    if \\n[#HEADERS_ON]=1 \{\
+.       if !\\n[#BIB_ALLOWS_HEADERS_ALL] \{ .HEADERS OFF \}
+.    \}
+.    if \\n[#HEADER_STATE]=1 \{\
+.       ie \\n[#BIB_HDRFTR_CENTER]=1 \{ . \}
+.       el \{ .rm $HDRFTR_CENTER  \}
+.    \}
+.    ie !\\n[#SUSPEND_PAGINATION] \{\
+.       if \\n[#PAGINATE]=1 \{\
+.          if \\n[#PAGE_NUM_V_POS]=1 \{\
+.             PAGENUM_STYLE \\*[$BIB_PN_STYLE]
+.             if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN]-1 \}
+.             if r#BIB_NO_FIRST_PN \{ .nr #PAGINATE 0 \}
+.          \}
+.       \}
+.    \}
+.    el \{\
+.       ie \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 1 \}
+.       el \{ .nr #PAGINATE 0 \}
+.    \}
+.    if \\n[#FOOTERS_ON]=1 \{\
+.       if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER 
\\*[$HDRFTR_CENTER_OLD]
+.    \}
+.    NEWPAGE
+.    if \\n[#FOOTERS_ON]=1 \{\
+.       ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_NEW]
+.       rm $HDRFTR_CENTER_OLD
+.       rm $HDRFTR_CENTER_NEW
+.    \}
+.    ie !\\n[#SUSPEND_PAGINATION] \{\
+.       if \\n[#PAGE_NUM_V_POS]=1 \{\
+.          if r#BIB_NO_FIRST_PN \{\
+.             if \\n[#PAGINATION_STATE]=1 \{\
+.                nr #PAGINATE 1
+.             \}
+.          \}
+.       \}
+.    \}
+.    el \{\
+.       if \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 0 \}
+.    \}
+.    rr #PAGINATION_STATE
+.    PAGENUM_STYLE \\*[$BIB_PN_STYLE]
+.    if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN] \}
+.    if \\n[#HEADER_STATE]=1 \{\
+.       if \\n[#BIB_ALLOWS_HEADERS] \{ .HEADERS \}
+.    \}
+.\" Collect bibliography title string for TOC
+.    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
+.    af #TOC_ENTRY_PN \\g[#PAGENUMBER]
+.    ds $TOC_TITLE_ITEM \\*[$BIB_STRING]\\|
+.    ev TOC_EV
+.    da TOC_ENTRIES
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       TYPEWRITER
+.    \}
+.    if \\n[#PRINT_STYLE]=2 \{\
+\!.     FAMILY  \\*[$TOC_TITLE_FAM]
+\!.     FT      \\*[$TOC_TITLE_FT]
+\!.     PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
+.    \}
+\!.  TRAP OFF
+.    ie \\n[#PRINT_STYLE]=1 \{\
+\!.     PAD "\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN_TYPEWRITE]" 
+.    \}
+.    el \{\
+\!.     PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN]"
+.    \}
+\!.  EOL
+\!.  ST 100 L
+\!.  ST 101 R
+.    if \\n[#PRINT_STYLE]=2 \{\
+\!.     FAMILY  \\*[$TOC_PN_FAM]
+\!.     FT      \\*[$TOC_PN_FT]
+\!.     PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
+.    \}
+\!.  TAB 100
+\!.  PRINT \\*[LEADER]
+\!.  TN
+\!.  TRAP
+\!.  PRINT \\n[#TOC_ENTRY_PN]
+\!.  TQ
+.    di       
+.    ev
+.\" End collection of bibliography title string for TOC
+.\" Process bibliography
+.    if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#BIB_LEAD]u \}
+.    if \\n[#PRINT_STYLE]=2 \{\
+.       if \\n[#BIB_NO_COLS] \{\
+.          if \\n[#COLUMNS] \{ .nr #COLUMNS_WERE_ON 1 \}
+.          nr #COLUMNS 0
+.       \}
+.       nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
+.       ie \\n[#ADJ_BIB_LEAD] \{\
+.          nr #DOC_LEAD \\n[#BIB_LEAD]
+.       \}
+.       el \{ .DOC_LEAD \\n[#BIB_LEAD]u \}
+.    \}
+.    PRINT \&
+.    ie r#BIB_TITLE_SPACE \{ .sp |\\n[#BIB_TITLE_SPACE]u \}
+.    el \{ .sp |\\n[#T_MARGIN]u \}
+.    mk ec
+.    if \\n[#SLANT_ON] \{\
+\*[SLANTX]\c
+.    \}
+.    if !'\\*[$BIB_STRING]'' \{\
+.       if \\n[#PRINT_STYLE]=1 \{\
+.          TYPEWRITER
+.          vs \\n[#BIB_LEAD]u
+.       \}
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          LL \\n[#DOC_L_LENGTH]u
+.          ta \\n(.lu
+.          if \\n[#COLUMNS] \{\
+.             ie \\n[#BIB_NO_COLS] \{ .LL \\n[#DOC_L_LENGTH]u \}
+.             el \{ .LL \\n[#COL_L_LENGTH]u \}
+.             ta \\n(.lu
+.          \}
+.          FAMILY  \\*[$BIB_STRING_FAM]
+.          FT      \\*[$BIB_STRING_FT]
+.          PT_SIZE \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
+.          vs      \\n[#BIB_LEAD]u
+.       \}
+.       if '\\*[$BIB_STRING_QUAD]'L'      \{ .LEFT   \}
+.       if '\\*[$BIB_STRING_QUAD]'LEFT'   \{ .LEFT   \}
+.       if '\\*[$EN_STRING_QUAD]'C'       \{ .CENTER \}
+.       if '\\*[$BIB_STRING_QUAD]'CENTER' \{ .CENTER \}
+.       if '\\*[$BIB_STRING_QUAD]'CENTRE' \{ .CENTER \}
+.       if '\\*[$BIB_STRING_QUAD]'R'      \{ .RIGHT  \}
+.       if '\\*[$BIB_STRING_QUAD]'RIGHT'  \{ .RIGHT  \}
+.       EOL
+.       if \\n[#BIB_STRING_CAPS] \{ .CAPS \}
+.       ie \\n[#BIB_STRING_UNDERSCORE] \{\
+.          ie \\n[#BIB_STRING_UNDERSCORE]=2 \{\
+.             UNDERSCORE2 "\\*[$BIB_STRING]
+.          \}
+.          el \{\
+.             UNDERSCORE "\\*[$BIB_STRING]
+.          \}
+.       \}
+.       el \{\
+.          PRINT "\\*[$BIB_STRING]
+.       \}
+.    \}
+.    CAPS OFF
+.    FAMILY \\*[$BIB_FAMILY]
+.    FT \\*[$BIB_FT]
+.    PT_SIZE -\\*[$BIB_STRING_SIZE_CHANGE]
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie \\n[#SINGLE_SPACE]=1 \{\
+.          ALD \\n[#BIB_LEAD]*3u
+.       \}
+.       el \{\
+.          ie \\n[#BIB_SINGLESPACE]=1 \{\
+.             ALD \\n[#BIB_LEAD]u*3u
+.          \}
+.          el \{\
+.             ALD \\n[#BIB_LEAD]u
+.          \}
+.       \}
+.    \}
+.    if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#BIB_LEAD]u*2u \}
+.    QUAD \\*[$BIB_QUAD]
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie \\n[#SINGLE_SPACE]=1 \{\
+.          vs \\n[#BIB_LEAD]u
+.       \}
+.       el \{\
+.          ie \\n[#BIB_SINGLESPACE]=1 \{\
+.             vs \\n[#BIB_LEAD]u
+.          \}
+.          el \{\
+.             vs \\n[#BIB_LEAD]u
+.          \}
+.       \}
+.    \}
+.    if \\n[#PRINT_STYLE]=2 \{\
+.       ie \\n[#ADJ_BIB_LEAD] \{\
+.          nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]
+.       \}
+.       el \{ .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u \}
+.       rr #RESTORE_DOC_LEAD
+.    \}
+.    if \\n[#COLUMNS_WERE_ON] \{ .nr #COLUMNS 1 \}
+.    if \\n[#HEADER_STATE]=1 \{ .HEADERS \}
+.    rr #BIBLIOGRAPHY
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
+.END
+\#
+\# ====================================================================
+\#
 \# +++TABLE OF CONTENTS+++
 \#
 \# Strings to allocate space for leaders and entry page numbers
@@ -11761,6 +13059,10 @@
 \#
 \#
 .MAC TOC END
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
 .    if !r#PAGINATE_TOC \{ .PAGINATE_TOC \}
 .    nr #TOC_FIRST_PAGE 1
 .    if \\n[#FINIS] \{\
@@ -11769,7 +13071,7 @@
 .       \}
 .    \}
 .    if \\n[#FOOTERS_ON]=1 \{\
-.       if !'\\*[$HDRFTR_CENTER_OLD]'' \{ .ds $HDRFTR_CENTER 
\\*[$HDRFTR_CENTER_OLD]\}
+.       if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER 
\\*[$HDRFTR_CENTER_OLD]
 .       ie \\n[#PAGINATE_TOC]=1 \{ .PAGINATE \}
 .       el \{ .PAGINATION OFF \}
 .    \}
@@ -11799,6 +13101,7 @@
 .       DOC_LEAD 24 ADJUST
 .       nr #IGNORE 1
 .    \}
+.    if \\n[#LINENUMBERS]=2 \{ .nr #LINENUMBERS 3 \}
 .    START
 .    PP
 .    nr #COLUMNS 0
@@ -11837,9 +13140,9 @@
 .    \}
 .    LEFT
 .    SP
-\# In collated docs, this bit inserts the first doc's title
-\# underneath the TOC header, before the TOC_ENTRIES diversion
-\# gets output.
+.\" In collated docs, this bit inserts the first doc's title
+.\" underneath the TOC header, before the TOC_ENTRIES diversion
+.\" gets output.
 .    nf
 .    if d$FIRST_DOC_TITLE \{\
 .    nr #RESTORE_TOC_PN_PADDING \\n[#TOC_PN_PADDING]
@@ -11874,6 +13177,11 @@
 .    TOC_ENTRIES
 .    br
 .    rr #TOC
+.    if \\n[#LINENUMBERS]=3 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.       nn 1
+.    \}
 .END
 \#
 \# ====================================================================
@@ -11901,6 +13209,9 @@
 .    while !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
 .       nr #COL_\\n+[#COL_NUM]_L_MARGIN \\n[#L_MARGIN]+\\n[#COL_TOTAL]
 .       nr #COL_TOTAL \\n+[#COL_TOTAL]
+.\}
+.    if \\n[#NUM_COLS]=1 \{\
+.       if !\\n[#COLLATE]=1 \{ .MN_INIT \}
 .    \}
 .    rr #COL_TOTAL
 .    rr #COL_NUM
@@ -11938,7 +13249,7 @@
 \# LIST
 \# ----
 \# *Arguments:
-\#   [ BULLET | DASH | DIGIT | ALPHA | USER ] [ <separator> ] [ <anything> ]
+\#   [ BULLET | DASH | DIGIT | alpha | ALPHA | roman | ROMAN | USER ] [ 
<separator> | NONE ] [ <prefix> ] [ <anything> ]
 \# *Function:
 \#   Stores indent information in effect prior to invocation and
 \#   initializes a list with the supplied enumerator (and separator).
@@ -11953,6 +13264,30 @@
 \#   completely if the level in which it's invoked is the first.
 \#
 .MAC LIST END
+.    ds $1ST_LETTER \\$1
+.    substring $1ST_LETTER 0 0
+.    if '\\*[$1ST_LETTER]'r' .ds $1ST_LETTER R
+.    ie '\\*[$1ST_LETTER]'R' \{\
+.       ds $LAST_CHAR \\$1
+.       substring $LAST_CHAR -1
+.       if !\B'\\*[$LAST_CHAR]' \{\
+.          tm1 "[mom]: You must append a number to the \\$1 argument to LIST 
at line \\n(.c.
+.          tm1 "       The number should be the total number of items in this 
list.
+.          tm1 "       See the documentation.
+.          ab Aborting LIST
+.       \}
+.       ds $ROMAN_WIDTH \\$1
+.          substring $ROMAN_WIDTH 1
+.       while !\B'\\*[$ROMAN_WIDTH]' \{\
+.          substring $ROMAN_WIDTH 1
+.\}
+.       length #ROMAN_LENGTH \\*[$ROMAN_WIDTH]
+.       ds $LIST_ARG_1 \\$1
+.       substring $LIST_ARG_1 0 -(\\n[#ROMAN_LENGTH]+1)
+.    \}
+.    el \{\
+.       ds $LIST_ARG_1 \\$1
+.    \}
 .    if !r#DEPTH \{\
 .       nr #STORED_HL_INDENT \\n[#HL_INDENT]
 .       nr #STORED_T_INDENT  \\n[#T_INDENT]
@@ -11984,45 +13319,93 @@
 .    if \\n[#NUM_ARGS]=0 \{\
 .       nr #ARGS_TO_LIST 1 \" So default behaves as if LIST BULLET
 .       ds $ENUMERATOR\\n+[#DEPTH] \(bu
+.       ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .       ds $SEPARATOR
 .    \}
 .    if \\n[#NUM_ARGS]>0 \{\
 .       rr #ARGS_TO_LIST \" Clear this before processing arg 1.
-.       if '\\$1'DASH'   \{\
+.       if '\\*[$LIST_ARG_1]'DASH'   \{\
 .          nr #ARGS_TO_LIST 1
 .          ds $ENUMERATOR\\n+[#DEPTH] \(en
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .          ds $SEPARATOR\\n[#DEPTH]
 .       \}
-.       if '\\$1'BULLET' \{\
+.       if '\\*[$LIST_ARG_1]'BULLET' \{\
 .          nr #ARGS_TO_LIST 1
 .          ds $ENUMERATOR\\n+[#DEPTH] \(bu
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .          ds $SEPARATOR\\n[#DEPTH]
 .       \}
-.       if '\\$1'DIGIT'  \{\
+.       if '\\*[$LIST_ARG_1]'DIGIT'  \{\
 .          nr #ARGS_TO_LIST 1
 .          nr #ENUMERATOR\\n+[#DEPTH] 0 1
 .          ds $ENUMERATOR_TYPE\\n[#DEPTH] register
 .          ds $SEPARATOR\\n[#DEPTH] .
-.          if \\n[#NUM_ARGS]=2 \{\
-.             ie '\\$2'NONE' \{ .ds $SEPARATOR\\n[#DEPTH]\}
-.             el             \{ .ds $SEPARATOR\\n[#DEPTH] \\$2\}
+.          ds $PREFIX\\n[#DEPTH]
+.          if \\n[#NUM_ARGS]>=2 \{\
+.             ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
+.             el             .ds $SEPARATOR\\n[#DEPTH] \\$2
+.             if \\n[#NUM_ARGS]=3 \{\
+.                ds $PREFIX\\n[#DEPTH] \\$3
+.             \}
 .          \}
 .       \}
-.       if '\\$1'ALPHA'  \{\
+.       if '\\*[$LIST_ARG_1]'alpha'  \{\
 .          nr #ARGS_TO_LIST 1
 .          nr #ENUMERATOR\\n+[#DEPTH] 0 1
 .          af #ENUMERATOR\\n[#DEPTH] a
 .          ds $ENUMERATOR_TYPE\\n[#DEPTH] register
 .          ds $SEPARATOR\\n[#DEPTH] )
-.          if \\n[#NUM_ARGS]=2 \{\
-.             ie '\\$2'NONE' \{ .ds $SEPARATOR\\n[#DEPTH]\}
-.             el             \{ .ds $SEPARATOR\\n[#DEPTH] \\$2\}
+.          ds $PREFIX\\n[#DEPTH]
+.          if \\n[#NUM_ARGS]>=2 \{\
+.             ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
+.             el             .ds $SEPARATOR\\n[#DEPTH] \\$2
+.             if \\n[#NUM_ARGS]=3 \{\
+.                ds $PREFIX\\n[#DEPTH] \\$3
+.             \}
 .          \}
 .       \}
-.       if '\\$1'USER'   \{\
+.       if '\\*[$LIST_ARG_1]'ALPHA'  \{\
+.          nr #ARGS_TO_LIST 1
+.          nr #ENUMERATOR\\n+[#DEPTH] 0 1
+.          af #ENUMERATOR\\n[#DEPTH] A
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] register
+.          ds $SEPARATOR\\n[#DEPTH] )
+.          ds $PREFIX\\n[#DEPTH]
+.          if \\n[#NUM_ARGS]>=2 \{\
+.             ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
+.             el             .ds $SEPARATOR\\n[#DEPTH] \\$2
+.             if \\n[#NUM_ARGS]=3 \{\
+.                ds $PREFIX\\n[#DEPTH] \\$3
+.             \}
+.          \}
+.       \}
+.       if '\\*[$1ST_LETTER]'R'  \{\
+.          nr #ARGS_TO_LIST 1
+.          nr #ENUMERATOR\\n+[#DEPTH] 0 1
+.          if '\\*[$LIST_ARG_1]'roman' \{\
+.             af #ENUMERATOR\\n[#DEPTH] i
+.          \}
+.          if '\\*[$LIST_ARG_1]'ROMAN' \{\
+.             af #ENUMERATOR\\n[#DEPTH] I
+.          \}
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] roman
+.          ds $SEPARATOR\\n[#DEPTH] )
+.          ds $PREFIX\\n[#DEPTH]
+.          if \\n[#NUM_ARGS]>=2 \{\
+.             ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
+.             el             .ds $SEPARATOR\\n[#DEPTH] \\$2
+.             if \\n[#NUM_ARGS]=3 \{\
+.                ds $PREFIX\\n[#DEPTH] \\$3
+.             \}
+.          \}
+.       \}
+.       if '\\*[$LIST_ARG_1]'USER'   \{\
 .          nr #ARGS_TO_LIST 1
 .          ds $ENUMERATOR\\n+[#DEPTH] \\$2
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .          ds $SEPARATOR\\n[#DEPTH]
+.          ds $PREFIX\\n[#DEPTH]
 .       \}
 .       if \\n[#NUM_ARGS]=1 \{\
 .          if !r#ARGS_TO_LIST \{\
@@ -12048,11 +13431,17 @@
 .       \}
 .    \}
 .    nr #TOTAL_LISTS \\n[#DEPTH]
-.    ie '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
-.       nr #LIST_INDENT\\n[#DEPTH] \\w'm\\*[$SEPARATOR\\n[#DEPTH]]\\ '
+.    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
+.       nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]m\\*[$SEPARATOR\\n[#DEPTH]]\ '
+.       if '\\*[$LIST_ARG_1]'ALPHA'\{\
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]M\\*[$SEPARATOR\\n[#DEPTH]]\ '
+.       \}
 .    \}
-.    el \{\
-.       nr #LIST_INDENT\\n[#DEPTH] \\w'\\*[$ENUMERATOR\\n[#DEPTH]]\\0'
+.    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \{\
+.       GET_ROMAN_INDENT
+.    \}
+.    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \{\
+.       nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$ENUMERATOR\\n[#DEPTH]]\0'
 .    \}
 .    LL \\n[#CURRENT_L_LENGTH]u
 .    ie \\n[#DEPTH]=1 \{\
@@ -12098,6 +13487,10 @@
 \#   receive the text of an item.
 \#
 .MAC ITEM END
+.    if \\n[#LINENUMBERS]=1 \{\
+.       NUMBER_LINES OFF
+.       nr #LINENUMBERS 2
+.    \}
 .    if \\n[#KERN]=1 \{\
 .       nr #KERN_WAS_ON 1
 .       KERN OFF
@@ -12106,38 +13499,304 @@
 .    ll \\n[#CURRENT_L_LENGTH]u \" Set ll again because IL turns IB off.
 .    TRAP OFF
 .    HI \\n[#HL_INDENT\\n[#DEPTH]]u
-.    ie '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
-.       ie '\\g[#ENUMERATOR\\n[#DEPTH]]'0' \{\
-.          ie \\n[#PAD_LIST_DIGITS\\n[#DEPTH]]=1 \{\
-.             ie \\n[#ENUMERATOR\\n[#DEPTH]]<9 \{\
-.                PRINT 
\\0\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.    if '\\*[$SEPARATOR\\n[#DEPTH]]')' \{ .nr #SEP_TYPE 1 \}
+.    if '\\*[$SEPARATOR\\n[#DEPTH]]']' \{ .nr #SEP_TYPE 1 \}
+.    if '\\*[$SEPARATOR\\n[#DEPTH]]'}' \{ .nr #SEP_TYPE 1 \}
+.    ie \\n[#IN_BIB_LIST]=1 \{\
+.       ie \\n[#ENUMERATOR\\n[#DEPTH]]<9 \{\
+.          ie \\n[#SEP_TYPE]=1 \{\
+.             PRINT 
\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.          \}
+.          el \{\
+.             PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.          \}
+.       \}
+.       el \{\
+.          ie \\n[#SEP_TYPE]=1 \{\
+.             PRINT 
\h'-\w'\0'u'\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.          \}
+.          el \{\
+.             PRINT 
\h'-\w'\0'u'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.          \}
+.       \}
+.    \}
+.    el \{\
+.       ie '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
+.\" DIGIT
+.          ie '\\g[#ENUMERATOR\\n[#DEPTH]]'0' \{\
+.             ie \\n[#PAD_LIST_DIGITS\\n[#DEPTH]]=1 \{\
+.                ie \\n[#ENUMERATOR\\n[#DEPTH]]<9 \{\
+.                   ie \\n[#SEP_TYPE]=1 \{\
+.                      PRINT 
\0\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                   \}
+.                   el \{\
+.                      PRINT 
\0\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                   \}
+.                \}
+.                el \{\
+.                   ie \\n[#SEP_TYPE]=1 \{\
+.                      PRINT 
\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                   \}
+.                   el \{\
+.                      PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                   \}
+.                \}
 .             \}
 .             el \{\
-.                PRINT \\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                ie \\n[#SEP_TYPE]=1 \{\
+.                   PRINT 
\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                \}
+.                el \{\
+.                   PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                \}
 .             \}
 .          \}
 .          el \{\
-.             PRINT \\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.\" ALPHA
+.             ie '\\g[#ENUMERATOR\\n[#DEPTH]]'A' \{\
+.                ie \\n[#SEP_TYPE]=1 \{\
+.                   PRINT 
\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                \}
+.                el \{\
+.                   PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                \}
+.             \}
+.\" alpha
+.             el \{\
+.                PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.             \}
 .          \}
 .       \}
-.       el \{\
-.          PRINT \\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-.       \}
 .    \}
 .    el \{\
-.       PRINT \\*[$ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.       if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \{\
+.          ie \\n[#PAD_LIST_DIGITS\\n[#DEPTH]]=1 \{\
+.\" ROMAN I, padded
+.             ie '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
+.                ie \\n[#SEP_TYPE]=1 \{\
+.                   PRINT 
"\h'\\n[#LIST_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\n[#SEPARATOR\\n[#DEPTH]]\
 
'u'\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                \}
+.                el \{\
+.                   PRINT 
"\h'\\n[#LIST_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\n[#SEPARATOR\\n[#DEPTH]]\
 'u'\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                \}
+.             \}
+.\" roman i, padded
+.             el \{\
+.                PRINT 
"\h'\\n[#LIST_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\n[#SEPARATOR\\n[#DEPTH]]\
 'u'\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.             \}
+.          \}
+.\" No pad
+.          el \{\
+.\" ROMAN I, no pad
+.             ie '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
+.                ie \\n[#SEP_TYPE]=1 \{\
+.                   PRINT 
\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+.                \}
+.                el \{\
+.                   PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.                \}
+.             \}
+.\" roman i, no pad
+.             el \{\
+.                PRINT 
\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.             \}
+.          \}
+.       \}
+.       if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \{\
+.          PRINT \\*[$ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.       \}
 .    \}
+.    rr #SEP_TYPE
 .    EOL
+.    if \\n[#REF]=1 \{\
+.       IL +\\*[$REF_BIB_INDENT]
+.       ti \\n[#L_INDENT]u-\\*[$REF_BIB_INDENT]
+.    \}
 .    TRAP
 .    if \\n[#KERN_WAS_ON]=1 \{\
 .       KERN
 .       rr #KERN_WAS_ON
 .    \}
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
 .END
 \#
+\# A utility macro that determines the space to reserve for
+\# roman numeral enumerated lists.  Limit is 20 roman numerals
+\# per list.  If this isn't enough, the user can add to the
+\# macro.
+\#
+.MAC GET_ROMAN_INDENT END
+.    if '\\*[$LIST_ARG_1]'roman' \{\
+.       if '\\*[$ROMAN_WIDTH]'1'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 1
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]i\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'2'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 2
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]ii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'3'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 3
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'4'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 4
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'5'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 5
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'6'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 6
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'7'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 7
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]vii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'8'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 8
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'9'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 9
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'10'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 10
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'11'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 11
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'12'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 12
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'13'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 13
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'14'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 14
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'15'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 15
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'16'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 16
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'17'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 17
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xvii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'18'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 18
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'19'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 19
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'20'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 20
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.    \}
+.    if '\\*[$LIST_ARG_1]'ROMAN' \{\
+.       if '\\*[$ROMAN_WIDTH]'1'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 1
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]I\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'2'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 2
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]II\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'3'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 3
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]III\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'4'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 4
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'5'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 5
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'6'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 6
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'7'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 7
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'8'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 8
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'9'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 9
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'10'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 10
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'11'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 11
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'12'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 12
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'13'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 13
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'14'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 14
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'15'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 15
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'16'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 16
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'17'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 17
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XVII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'18'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 18
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'19'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 19
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.       if '\\*[$ROMAN_WIDTH]'20'  \{\
+.          ds $ROMAN_WIDTH\\n[#DEPTH] 20
+.          nr #LIST_INDENT\\n[#DEPTH] 
\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+.       \}
+.    \}
+.END
 \#
 \# SHIFT LIST
-\# ---------
+\# ----------
 \# *Arguments:
 \#   <amount by which to indent a list to the right>
 \# *Function:
@@ -12146,8 +13805,15 @@
 \#   Requires a unit of measure.
 \#
 .MAC SHIFT_LIST END
-.    nr #LIST_INDENT\\n[#DEPTH] \\n[#L_INDENT]+(\\$1)
-.    nr #L_INDENT \\n[#LIST_INDENT\\n[#DEPTH]]
+.    ie '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \{\
+.       nr #SHIFT_LIST\\n[#DEPTH] (\\$1)
+.       nr #LIST_INDENT\\n[#DEPTH] 
\\n(.i+\\n[#L_INDENT]+\\n[#SHIFT_LIST\\n[#DEPTH]]
+.       nr #L_INDENT \\n[#LIST_INDENT\\n[#DEPTH]]
+.    \}
+.    el \{\
+.       nr #LIST_INDENT\\n[#DEPTH] \\n[#L_INDENT]+(\\$1)
+.       nr #L_INDENT \\n[#LIST_INDENT\\n[#DEPTH]]
+.    \}
 .END
 \#
 \#
@@ -12166,6 +13832,12 @@
 .       nr #HL_INDENT\\n+[#DEPTH] +\\w'\\n[#ENUMERATOR\\n[#DEPTH]]'
 .       if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
 .    \}
+.    if '\\g[#ENUMERATOR\\n[#DEPTH]]'i' \{\
+.       if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
+.    \}
+.    if '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
+.       if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
+.    \}
 .END
 \#
 \#
@@ -12177,7 +13849,8 @@
 \#   Resets register enumerators to 1 or a.
 \#
 .MAC RESET_LIST END
-.    nr #ENUMERATOR\\n[#DEPTH] 0 1
+.    ie '\\$1'' \{ .nr #ENUMERATOR\\n[#DEPTH] 0 1 \}
+.    el \{ .nr #ENUMERATOR\\n[#DEPTH] \\$1-1 1 \}
 .END
 \#
 \#
@@ -12222,7 +13895,7 @@
 .      rr #STORED_R_INDENT
 .      rr #STORED_L_INDENT
 .   \}
-\# Clean up after exiting last depth of list
+.\" Clean up after exiting last depth of list
 .   nr #REMOVE 0 1
 .   while \\n+[#REMOVE]<=\\n[#TOTAL_LISTS] \{\
 .      rr #LIST_INDENT\\n[#REMOVE]
@@ -12231,7 +13904,7 @@
 .      rr #SEPARATOR\\n[#REMOVE]
 .      rm $ENUMERATOR_TYPE\\n[#REMOVE]
 .      rr #PAD_LIST_DIGITS\\n[#REMOVE]
-.   \}
+.\}
 .   rr #REMOVE
 .   rr #TOTAL_LISTS
 .   rr #QUIT
@@ -12258,8 +13931,7 @@
 .       nr #QUIT 1
 .       return
 .    \}
-.    ie \\n[#NEXT_DEPTH_BACK]=1 \{ .nr #L_INDENT \\n[#LIST_INDENT1] \}
-.    el \{ .nr #L_INDENT -\\n[#LIST_INDENT\\n[#DEPTH]] \}
+.    nr #L_INDENT -\\n[#LIST_INDENT\\n[#DEPTH]]
 .    nr #HL_INDENT \\n[#HL_INDENT\\n-[#DEPTH]]
 .END
 \#
@@ -12293,7 +13965,7 @@
 .    \}
 .    IQ CLEAR
 .    TQ
-\# Collect first doc's title for TOC
+.\" Collect first doc's title for TOC
 .    if \\n[#COLLATED_DOC]=0 \{\
 .       ie \\n[#USER_SET_TITLE_ITEM] \{\
 .          ds $FIRST_DOC_TITLE \\*[$USER_SET_TITLE_ITEM]\\|
@@ -12329,7 +14001,7 @@
 .       \}
 .       nr #COLLATED_DOC 1
 .    \}
-\# End title collection for TOC
+.\" End title collection for TOC
 .    LL \\n[#DOC_L_LENGTH]u
 .    QUAD $DOC_QUAD
 .    nr #SAVED_DOC_LEAD \\n[#DOC_LEAD]
@@ -12348,6 +14020,105 @@
 .END
 \#
 \#
+\# NUMBER_LINES
+\# ------------
+\# *Arguments:
+\#   <starting line number> [ <increment> [ <gutter> ] ]
+\#   or
+\#   <anything> | RESUME
+\# *Function:
+\#   Begin, suspend/turn off, or resume numbering of output lines.
+\#
+.MAC NUMBER_LINES END
+.    br
+.    if '\\n(.z'EPI_TEXT' \{ .return \}
+.    if '\\$1'' \{\
+.       tm1 "[mom]: NUMBER_LINES at line \\n(.c has no argument.
+.       tm1 "       Most likely, you have forgotten to give it a starting line 
number.
+.       ab Aborting on NUMBER_LINES.
+.    \}
+.    if !\\n[#LINENUMBERS]=2 \{ .nr #LINENUMBERS 1 \}
+.\" Test whether the first arg is a digit.
+.    if \B'\\$1' \{\
+.       nr #LN \\$1
+.       ds $LN_NUM \\$1
+.       if !'\\n(.z'' \{ .nr #RESTORE_LN_NUM 1 \}
+.       ie '\\$2'' \{\
+.          if '\\*[$LN_INC]'' .ds $LN_INC 1
+.       \}
+.       el .ds $LN_INC \\$2
+.       ie '\\$3'' \{\
+.          if '\\*[$LN_GUTTER]'' .ds $LN_GUTTER 2
+.       \}
+.       el .ds $LN_GUTTER \\$3
+.    \}
+.    ie !\\n[#LN] \{\
+.\" In other words, the first arg was not a digit.
+.       rr #LN
+.       ie '\\$1'RESUME' \{\
+.          nm +0
+.       \}
+.       el \{\
+.          nm
+.          if !\\n[#LINENUMBERS]=2 \{ .rr #LINENUMBERS \}
+.       \}
+.    \}
+.    el \{\
+.       nm \\*[$LN_NUM] \\*[$LN_INC] \\*[$LN_GUTTER] -3-\\*[$LN_GUTTER]
+.       if !'\\n(.z'' \{ .nr #DIVER_LN_OFF 1 \}
+.    \}
+.    rr #LN
+.END
+\#
+\#
+\# NUMBER QUOTE AND BLOCKQUOTE LINES AS PART OF RUNNING TEXT
+\# ---------------------------------------------------------
+\# *Argument:
+\#   <gutter> | <anything>
+\# *Function:
+\#   Sets #(B)QUOTE_LN to 1 if no argument, or a single numeric
+\#   argument, is given; otherwise, turns (BLOCK)QUOTE linenumbering
+\#   off.
+\# *Notes:
+\#   #(B)QUOTE is checked for in QUOTE and BLOCKQUOTE.
+\#   The single numeric argument allows establishing a different gutter from
+\#   the one used for line numbers in running text.
+\#
+.MAC NUMBER_QUOTE_LINES END
+.    ie \\n[#NUM_ARGS]=0 \{ .nr #QUOTE_LN 1 \}
+.    el \{\
+.       ie \B'\\$1' \{\
+.          nr #QUOTE_LN 1
+.          ds $Q_LN_GUTTER \\$1
+.       \}
+.       el \{\
+.          ie '\\$1'SILENT' \{ .nr #SILENT_QUOTE_LN 1 \}
+.          el \{\
+.             rr #QUOTE_LN
+.             rr #SILENT_QUOTE_LN
+.          \}
+.       \}
+.    \}
+.END
+\#
+\#
+.MAC NUMBER_BLOCKQUOTE_LINES END
+.    ie \\n[#NUM_ARGS]=0 \{ .nr #BQUOTE_LN 1 \}
+.    el \{\
+.       ie \B'\\$1' \{\
+.          nr #BQUOTE_LN 1
+.          ds $BQ_LN_GUTTER \\$1
+.       \}
+.       el \{\
+.          ie '\\$1'SILENT' \{ .nr #SILENT_BQUOTE_LN 1 \}
+.          el \{\
+.             rr #BQUOTE_LN
+.             rr #SILENT_BQUOTE_LN
+.          \}
+.       \}
+.    \}
+.END
+\#
 \# OUTPUT BLANK PAGES
 \# ------------------
 \# *Argument:
@@ -12358,6 +14129,8 @@
 \#   If recto/verso, each page is recto/verso, even if there's
 \#   nothing on it.
 \#
+\#   The argument to BLANKPAGE is non-optional.
+\#
 .MAC BLANKPAGE END
 .    nr #HOW_MANY \\$1
 .    nr #PAGES 0 1
@@ -12384,7 +14157,7 @@
 .       if \\n[#PAGE_NUM_V_POS]=1 \{\
 .          if \\n[#PAGINATE_WAS_ON] \{ .PAGINATE \}
 .       \}
-.    \}
+.\}
 .    NEWPAGE
 .    if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS \}
 .    if \\n[#PAGE_NUM_V_POS]=2 \{\
@@ -12410,58 +14183,58 @@
 \#   exactly on #B_MARGIN.
 \#
 .MAC TRAPS END
-\# Remove all header/footer traps
+.\" Remove all header/footer traps
 .    if !\\n[#NO_TRAP_RESET] \{\
 .       ch DO_T_MARGIN
 .       ch DO_B_MARGIN
 .       ch HEADER
 .       ch FOOTER
 .       ch FN_OVERFLOW_TRAP
-\# Plant header trap
+.\" Plant header trap
 .       wh 0 HEADER
 .    \}
-\# Adjust lead so last line of text falls on B_MARGIN,...
+.\" Adjust lead so last line of text falls on B_MARGIN,...
 .    ie \\n[#ADJ_DOC_LEAD]=1 \{\
 .       nr #LINES_PER_PAGE 0 1
 .       nr #DOC_LEAD_ADJ 0 1
 .       nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#ORIGINAL_B_MARGIN]-1v
-\# Get the number of unadjusted lines that fit on the page; always a
-\# bit short of the bottom margin
+.\" Get the number of unadjusted lines that fit on the page; always a
+.\" bit short of the bottom margin
 .       while 
\\n[#T_MARGIN]+(\\n[#DOC_LEAD]*\\n+[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN] 
\{\
 .
-.       \}
+.\}
 .       nr #LINES_PER_PAGE -1
-\# Add machine units, 1 at a time, increasing the leading until the 
-\# new leading fills the page properly
+.\" Add machine units, 1 at a time, increasing the leading until the 
+.\" new leading fills the page properly
 .       while 
\\n[#T_MARGIN]+(\\n[#DOC_LEAD]+\\n+[#DOC_LEAD_ADJ]*\\n[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN]
 \{\
 .
-.       \}
+.\}
 .       DOC_LEAD \\n[#DOC_LEAD]u+\\n[#DOC_LEAD_ADJ]u
-\# The "visual" bottom margin is what \n(nl would report on the
-\# last line before the FOOTER trap is sprung
+.\" The "visual" bottom margin is what \n(nl would report on the
+.\" last line before the FOOTER trap is sprung
 .       nr #VISUAL_B_MARGIN 
\\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD])
-\# Get the difference between #B_MARGIN and #VISUAL_B_MARGIN
+.\" Get the difference between #B_MARGIN and #VISUAL_B_MARGIN
 .       nr #FOOTER_DIFF 
(\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n[#VISUAL_B_MARGIN]
-\# Set #B_MARGIN to 1 machine unit lower on the page than #VISUAL_B_MARGIN
+.\" 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
+.\" Set the FN_OVERFLOW_TRAP position
 .       nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\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.
+.\" ...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]-1v
 .       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]-1v)
 .       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
+.\" Set footer and footnote overflow traps
 .    if !\\n[#NO_TRAP_RESET] \{\
 .       nr #FN_COUNT 0 1
 .       nr #SPACE_REMAINING 0
@@ -12642,6 +14415,7 @@
 .ALIAS   PAGENUM             PAGENUMBER
 .ALIAS   PAGINATION          PAGINATE
 .ALIAS   PP_FT               PP_FONT
+.ALIAS   REF_INDENT          INDENT_REFS
 .ALIAS   TOC_PS              TOC_PT_SIZE
 \#
 \# HEADER and FOOTER macros
@@ -12963,6 +14737,10 @@
 \#
 \# HEADER and FOOTER aliases for HDRFTR macros.
 \#
+.ALIAS   BIBLIOGRAPHY_FOOTER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
+.ALIAS   BIBLIOGRAPHY_FOOTER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
+.ALIAS   BIBLIOGRAPHY_HEADER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
+.ALIAS   BIBLIOGRAPHY_HEADER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
 .ALIAS   ENDNOTES_FOOTER_CENTER    ENDNOTES_HDRFTR_CENTER
 .ALIAS   ENDNOTES_FOOTER_CENTRE    ENDNOTES_HDRFTR_CENTRE
 .ALIAS   ENDNOTES_HEADER_CENTER    ENDNOTES_HDRFTR_CENTER
@@ -13002,6 +14780,8 @@
 \# Type-style aliases
 \#
 .ALIAS   AUTHOR_FAMILY                    _FAMILY
+.ALIAS   BIBLIOGRAPHY_FAMILY              _FAMILY
+.ALIAS   BIBLIOGRAPHY_STRING_FAMILY       _FAMILY
 .ALIAS   BLOCKQUOTE_FAMILY                _FAMILY
 .ALIAS   CHAPTER_TITLE_FAMILY             _FAMILY
 .ALIAS   COVER_AUTHOR_FAMILY              _FAMILY
@@ -13022,6 +14802,7 @@
 .ALIAS   DOCTYPE_FAMILY                   _FAMILY
 .ALIAS   ENDNOTE_FAMILY                   _FAMILY
 .ALIAS   ENDNOTE_NUMBER_FAMILY            _FAMILY
+.ALIAS   ENDNOTE_LINENUMBER_FAMILY        _FAMILY
 .ALIAS   ENDNOTE_STRING_FAMILY            _FAMILY
 .ALIAS   ENDNOTE_TITLE_FAMILY             _FAMILY
 .ALIAS   EPIGRAPH_FAMILY                  _FAMILY
@@ -13047,6 +14828,8 @@
 .ALIAS   TOC_TITLE_FAMILY                 _FAMILY
 \#
 .ALIAS   AUTHOR_FONT                    _FONT
+.ALIAS   BIBLIOGRAPHY_STRING_FONT       _FONT
+.ALIAS   BIBLIOGRAPHY_FONT              _FONT
 .ALIAS   BLOCKQUOTE_FONT                _FONT
 .ALIAS   CHAPTER_TITLE_FONT             _FONT
 .ALIAS   COVER_AUTHOR_FONT              _FONT
@@ -13064,6 +14847,7 @@
 .ALIAS   DOCTYPE_FONT                   _FONT
 .ALIAS   ENDNOTE_FONT                   _FONT
 .ALIAS   ENDNOTE_NUMBER_FONT            _FONT
+.ALIAS   ENDNOTE_LINENUMBER_FONT        _FONT
 .ALIAS   ENDNOTE_STRING_FONT            _FONT
 .ALIAS   ENDNOTE_TITLE_FONT             _FONT
 .ALIAS   EPIGRAPH_FONT                  _FONT
@@ -13086,6 +14870,7 @@
 .ALIAS   TOC_TITLE_FONT                 _FONT
 \#
 .ALIAS   AUTHOR_SIZE                    _SIZE
+.ALIAS   BIBLIOGRAPHY_STRING_SIZE       _SIZE
 .ALIAS   BLOCKQUOTE_SIZE                _SIZE
 .ALIAS   CHAPTER_TITLE_SIZE             _SIZE
 .ALIAS   COVER_AUTHOR_SIZE              _SIZE
@@ -13102,6 +14887,7 @@
 .ALIAS   DOC_COVER_TITLE_SIZE           _SIZE
 .ALIAS   DOCTYPE_SIZE                   _SIZE
 .ALIAS   ENDNOTE_NUMBER_SIZE            _SIZE
+.ALIAS   ENDNOTE_LINENUMBER_SIZE        _SIZE
 .ALIAS   ENDNOTE_STRING_SIZE            _SIZE
 .ALIAS   ENDNOTE_TITLE_SIZE             _SIZE
 .ALIAS   EPIGRAPH_SIZE                  _SIZE
@@ -13165,6 +14951,8 @@
 .ALIAS   SUBTITLE_COLOR                  _COLOR
 .ALIAS   TITLE_COLOR                     _COLOR
 \#
+.ALIAS   BIBLIOGRAPHY_QUAD          _QUAD
+.ALIAS   BIBLIOGRAPHY_STRING_QUAD   _QUAD
 .ALIAS   BLOCKQUOTE_QUAD            _QUAD
 .ALIAS   COVER_COPYRIGHT_QUAD       _QUAD
 .ALIAS   COVER_MISC_QUAD            _QUAD
@@ -13207,3 +14995,892 @@
 .    br
 .    sp -1v
 .END
+\#
+\# REFER SUPPORT
+\# -------------
+\#
+\# Footnote references
+\# -------------------
+\# *Function:
+\#   Instruct REF to put references in footnotes.
+\#
+.MAC FOOTNOTE_REFS END
+.    if r#EN_REF \{ .rr #EN_REF \}
+.    nr #FN_REF 1
+.END
+\#
+\# Endnote references
+\# ------------------
+\# *Function:
+\#   Instruct REF to collect references for endnotes output.
+\#
+.MAC ENDNOTE_REFS END
+.    if r#FN_REF \{ .rr #FN_REF \}
+.    nr #EN_REF 1
+.END
+\#
+\# Prepare mom for a reference
+\# ---------------------------
+\# *Argument:
+\#   <none> | INDENT  L|LEFT|R|RIGHT|B|BOTH  <indent value>
+\# *Function:
+\#   Calls FOOTNOTE or ENDNOTE, depending on whether #REF_FN or
+\#   #REF_EN is set to 1.
+\# *Notes:
+\#   For convenience, REF is a toggle.
+\#
+\#   REF optionally takes the same arguments as FOOTNOTE, allowing
+\#   users to indent references that go in footnotes when footnote
+\#   indenting is required.  FOOTNOTE_REFS must be on for this.
+\#
+.MAC REF END
+.    ie \\n[#FN_REF]+\\n[#EN_REF]=0 \{\
+.       if !\\n[#REF_WARNING]=1 \{\
+.          tm1 "[mom]: Before REF at line \\n(.c, neither FOOTNOTE_REFS nor 
ENDNOTE_REFS
+.          tm1 "       has been selected.  If "sort" and "accumulate" are in 
your refer
+.          tm1 "       commands, references will be collected for later output 
with $LIST$.
+.          tm1 "       Otherwise, they will disappear.
+.          nr #REF_WARNING 1
+.       \}
+.    \}
+.    el \{\
+.    ie \\n[#REF]=1 \{\
+.       if \\n[#FN_REF]=1 \{ .FOOTNOTE OFF \}
+.       if \\n[#EN_REF]=1 \{ .ENDNOTE OFF  \}
+.       rr #REF
+.    \}
+.    el \{\
+.       rr #REF_WARNING
+.       nr #REF 1
+.       if \\n[#FN_REF]=1 \{ .FOOTNOTE \\$1 \\$2 \\$3 \}
+.       if \\n[#EN_REF]=1 \{ .ENDNOTE  \}
+.    \}
+.    \}
+.END
+\#
+\# Embedded references in text (with brackets)
+\# -------------------------------------------
+\#
+.MAC REF_BRACKETS_START END
+.    ds $CURRENT_EV \\n[.ev]
+.    ev REFERENCE
+.    evc  \\*[$CURRENT_EV]
+.    di REFERENCE
+.END
+\#
+.MAC REF_BRACKETS_END END
+.    br
+.    di
+.    ev
+.    chop REFERENCE
+.    unformat REFERENCE
+.    if '\\$0'REF)' \{ .nop (\\*[REFERENCE]) \}
+.    if '\\$0'REF]' \{ .nop [\\*[REFERENCE]] \}
+.    if '\\$0'REF}' \{ .nop {\\*[REFERENCE]} \}
+.END
+\#
+\# These three pairs of aliases allow users to embed references in
+\# text and have them surrounded by (), [] or {}.
+\#
+.ALIAS REF( REF_BRACKETS_START
+.ALIAS REF) REF_BRACKETS_END
+\#
+.ALIAS REF[ REF_BRACKETS_START
+.ALIAS REF{ REF_BRACKETS_START
+\#
+.ALIAS REF} REF_BRACKETS_END
+.ALIAS REF] REF_BRACKETS_END
+\#
+\# Second-line indent for refs
+\# ---------------------------
+\# *Argument:
+\#   FOOTNOTE | ENDNOTE | BIBLIO <indent for 2nd and subsequent lines of 
discrete reference entries>
+\# *Function:
+\#   Sets strings $REF_FN_INDENT, $REF_EN_INDENT or $REF_BIB_INDENT.
+\# *Notes:
+\#   Indent value requires a unit of measure.
+\#
+.MAC INDENT_REFS END
+.    if '\\$1'FOOTNOTE' .ds $REF_FN_INDENT \\$2
+.    if '\\$1'ENDNOTE'  .ds $REF_EN_INDENT \\$2
+.    if '\\$1'BIBLIO'   .ds $REF_BIB_INDENT \\$2
+.END
+\#
+\# Hyphenation of references
+\# -------------------------
+\# *Argument:
+\#   <none> | <anything>
+\# *Function:
+\#   Sets register #REF_HYPHENATE
+\#
+.MAC HYPHENATE_REFS END
+.    ie '\\$1'' \{ .nr #REF_HYPHENATE 1 \}
+.    el \{\
+.       if r#REF_HY \{ .rr #REF_HY \}
+.    \}
+.END
+\#
+.ig
+The remainder of the definitions in this section are modified
+versions of the definitions found in the refer module of s.tmac.
+..
+\#
+\# This one is directly from s.tmac.
+.de @error
+.tm \\n(.F:\\n(.c: macro error: \\$*
+..
+\#
+.ig
+The following strings define the order of entries for different
+types of references.  Each letter in the string refers to a database
+field (A for author, T1/T2 for article and book titles, etc).
+Mom is set up for MLA-style bibliographies.  Other styles can be
+implemented here by re-ordering the fields.
+..
+\# Book - type 2
+.ds ref*spec!2 Q A T1 d t l r E S e V a C I D P O
+\# Article within book - type 3
+.ds ref*spec!3 Q A T2 B d t l r E S e V a C I D P O
+\# Journal article - type 1
+.ds ref*spec!1 Q A T2 J S N D P O
+\# Tech report - type 4
+.ds ref*spec!4 Q A T1 R G C I D P O
+\# Internet site - type 0
+.ds ref*spec!0 Q A T2 s E c d o a u O
+\#
+\# Refer's "1st" macro.  Since it is possible to define database
+\# fields using any single letter, we remove all possible string
+\# definitions of the form [X and [x
+\#
+.de ]-
+.rm [A [B [C [D [E [F [G [H [I [J [K [L [M \
+    [N [O [P [Q [R [S [T [U [V [W [X [Y [Z \
+.   [a [b [c [d [e [f [g [h [i [j [k [l [m \
+    [n [o [p [q [r [s [t [u [v [w [x [y [z
+.rm ref*string
+.rr ref*type
+..
+\#
+\# Refer's "2nd" macro; builds up a reference with ref*build, and
+\# prints it with ref*print.
+\#
+.de ][
+.nr ref*type \\$1
+.if \\n[ref*type]=3 \{\
+.   if !'\\*([R'' \{\
+.      nr ref*type 4
+.      ds ref*spec!4 Q A T2 B R C I D P O
+.   \}
+.   if !'\\*([G'' \{\
+.      nr ref*type 4
+.      ds ref*spec!4 Q A T2 B G C I D P O
+.   \}
+.\}
+.if r [T \{\
+.   als [T1 [T
+.   als [T2 [T
+.\}
+.ie d ref*spec!\\n[ref*type] .ref*build \\*[ref*spec!\\n[ref*type]]
+.el \{\
+.   @error unknown reference type `\\n[ref*type]'
+.   ref*build \\*[ref*spec!0]
+.\}
+.if !\\n[.hy]=0 \{\
+.nr #RESTORE_HY \\n[.hy]
+.if !r#REF_HY .nh
+.\}
+.ref*print
+.if !\\n[#RESTORE_HY]=0 .hy \\n[#RESTORE_HY]
+.rr #RESTORE_HY
+.rm ref*string
+.rm [F [T1 [T2
+..
+\#
+\# Refer's "3rd" macros, which set up and terminate the output
+\# of collected references
+\#
+.de ]<
+.als ref*print ref*end-print
+.nr #REF 1
+.if \\n[#BIB_LIST]=1 \{\
+.   nr #IN_BIB_LIST 1
+.   LIST DIGIT \\*[$BIB_LIST_SEPARATOR] \\*[$BIB_LIST_PREFIX]
+.\}
+..
+\#
+.de ]>
+.LIST OFF
+.rr #REF
+.rr #IN_BIB_LIST
+.als ref*print ref*normal-print
+..
+\#
+\# Output
+\# ------
+\#
+\# Output normal, non-collected refs
+\#
+.de ref*normal-print
+.nr #CURRENT_HY \\n[.hy]
+\\*[ref*string]
+..
+\#
+\# Output collected refs
+\#
+.de ref*end-print
+.\" 10 is abritrary
+.nn 10
+.ie \\n[#BIB_LIST]=0 \{\
+.in +\\*[$REF_BIB_INDENT]
+.ti -\\*[$REF_BIB_INDENT]
+.\}
+.el .ITEM
+\\*[ref*string]
+.sp \\n[#BIB_SPACE]u
+.ie \\n[#BIB_LIST]=0 .in
+.el .IL -\\*[$REF_BIB_INDENT]u
+.nn 0
+..
+\#
+.als ref*print ref*normal-print
+\#
+\# Build up the ref*string
+\#
+.ig
+Correct MLA "typewritten" style (printstyle TYPEWRITE) demands
+two spaces after each period.  The spaces are hardwired into the
+string definitions (ref*add-<x>), so we have to make sure that there
+aren't two spaces when the printstyle is TYPESET.  Since I find that
+references look a bit crowded with 0 sentence space, I've bumped it
+up to +4.  User's sentence spacing is reset in FOOTNOTES and ENDNOTES.
+..
+\#
+.de ref*build
+.if \\n[#PRINT_STYLE]=2 \{\
+.   ds $RESTORE_SS_VAR \\*[$SS_VAR]
+.   SS +4
+.\}
+.rm ref*string ref*post-punct
+.nr ref*suppress-period 1
+.while \\n[.$] \{\
+.   if d [\\$1 \{\
+.      ie d ref*add-\\$1 .ref*add-\\$1
+.      el .ref*add-dflt \\$1
+.   \}
+.   shift
+.\}
+.\" now add a final period
+.ie d ref*string \{\
+.   if !\\n[ref*suppress-period] .as ref*string .
+.   if d ref*post-punct \{\
+.      as ref*string "\\*[ref*post-punct]
+.      rm ref*post-punct
+.   \}
+.\}
+.el .ds ref*string
+..
+\#
+\# The following macros determine how entries are formatted WRT
+\# punctuation, type style, additional strings, etc.
+\#
+.ig
+o First argument is the database field letter.
+o Second argument is the punctuation character to use to separate this
+  field from the previous field.
+o Third argument is a string with which to prefix this field.
+o Fourth argument is a string with which to postfix this field.
+o Fifth argument is a string to add after the punctuation character
+  supplied by the next field.
+..
+\#
+\# %A Author(s)
+.de ref*add-A
+.ref*field A ,
+.if r [A .nr ref*suppress-period \\n([A
+..
+\# %T Title (generic)
+.de ref*add-T1
+.ref*field T . " \E*[IT]" "" \E*[PREV]
+.if \\n([T .nr ref*suppress-period \\n([T
+..
+\# %T Title of a chapter or article
+.de ref*add-T2
+.ref*field T . " \(lq" "" "\(rq"
+.if \\n([T .nr ref*suppress-period \\n([T
+..
+\# %B Book title (when citing an article from a book)
+.de ref*add-B
+.ie \\n([T .ref*field B "" ".\E*[IT]" "" \E*[PREV]
+.el .ref*field B . " \E*[IT]" "" \E*[PREV]
+\# refer doesn't set reg [T to 1 for these book titles, so we do it here
+.ds eval*[B \\*([B
+.substring eval*[B -1
+.rr [T
+.if '\\*[eval*[B]'!' .nr [T 1
+.if '\\*[eval*[B]'?' .nr [T 1
+.rm eval*[B
+..
+\# %R Report number for technical reports
+.de ref*add-R
+.ref*field R . " "
+..
+\# %J Journal name
+.de ref*add-J
+.ie \\n([T .ref*field J "" " \E*[IT]" "" \E*[PREV]
+.el .ref*field J . " \E*[IT]" "" \E*[PREV]
+..
+\# %E Editor(s)
+.de ref*add-E
+.ie !\\n[ref*type]=0 \{\
+.   ie \\n([E>0 \{\
+.      ie \\n([T .ref*field E "" " Eds. "
+.      el .ref*field E . " Eds. "
+.   \}
+.   el \{\
+.      ie \\n([T .ref*field E "" " Ed. "
+.      el .ref*field E . " Ed. "
+.   \}
+.\}
+.el \{\
+.   ie \\n([T .ref*field E "" " "
+.   el .ref*field E . " "
+.\}
+.rr [T
+..
+\# %e Edition
+.de ref*add-e
+.ie \\n([T .ref*field e "" " " " edition"
+.el .ref*field e . " " " edition"
+.rr [T
+..
+\# %V Volume (of a journal, or series of books)
+.de ref*add-V
+.if \\n[ref*type]=1 \{\
+.   ref*field V 
+.\}
+.if \\n[ref*type]=2 \{\
+.   ie \\n([T .ref*field V "" " "
+.   el .ref*field V . " "
+.\}
+.if \\n[ref*type]=3 \{\
+.   ie \\n([T .ref*field V "" " "
+.   el .ref*field V . " "
+.\}
+.rr [T
+..
+\# %N Journal number
+.de ref*add-N
+.ref*field N 
+..
+\# %S Series (books or journals)
+.de ref*add-S
+.if \\n[ref*type]=1 \{\
+.   ref*field S
+.\}
+.if \\n[ref*type]=2 \{\
+.   ie \\n([T .ref*field S "" " "
+.   el .ref*field S . " "
+.\}
+.if \\n[ref*type]=3 \{\
+.   ie \\n([T .ref*field S "" " "
+.   el .ref*field S . " "
+.\}
+.rr [T
+\# refer doesn't set reg [T to 1 for series titles, so we do it here
+.ds eval*[S \\*([S
+.substring eval*[S -1
+.if '\\*[eval*[S]'!' .nr [T 1
+.if '\\*[eval*[S]'?' .nr [T 1
+.rm eval*[S
+..
+\# %C City
+.de ref*add-C
+.ie \\n([T .ref*field C "" " "
+.el .ref*field C . " "
+.rr [T
+..
+\# %I Publisher (I stands for Issuer)
+.de ref*add-I
+.ie !'\\*([C'' .ref*field I :
+.el \{\
+.   ie \\n([T .ref*field I "" " "
+.   el .ref*field I . " "
+.\}
+.rr [T
+..
+\# %D Date of publication
+.de ref*add-D
+.if \\n[ref*type]=1 \{\
+.   ie !'\\*([V''.ref*field D "" "(" ")"
+.   el .ref*field D
+.\}
+.if \\n[ref*type]=2 .ref*field D ,
+.if \\n[ref*type]=3 \{\
+.   ie '\\*([C'' \{\
+.      ie '\\*([I'' .ref*field D . " "
+.      el .ref*field D ,
+.   \}
+.   el .ref*field D ,
+.\}
+.if \\n[ref*type]=4 .ref*field D ,
+..
+\# %P Page number(s)
+.de ref*add-P
+.ie \\n[ref*type]=1 .ref*field P : 
+.el .ref*field P . " "
+..
+\# %G Gov't. ordering number
+.de ref*add-G
+.ref*field G . " "
+..
+\# %O Other (usually goes at end of ref)
+.de ref*add-O
+.ref*field O . " "
+.ie r [O .nr ref*suppress-period \\n([O
+.el .nr ref*suppress-period 1
+..
+\#
+.de ref*add-dflt
+.ref*field \\$1 ,
+..
+\#
+\# Book reprints
+\# -------------
+\# %d date of publication (the orignal date of publication)
+.de ref*add-d
+.ie \\n([T .ref*field d "" " "
+.el .ref*field d . " "
+.rr [T
+..
+\# %a additions (such as a new intro to reprints)
+.de ref*add-a
+.ie \\n([T .ref*field a "" " "
+.el .ref*field a . " "
+.rr [T
+..
+\# %t title, if different from original title (the T field, which s/b
+\# the original title)
+.de ref*add-t
+.ie \\n([T .ref*field t "" " Rpt. as \E*[IT]" "" \E*[PREV]
+.el .ref*field t . " Rpt. as \E*[IT]" "" \E*[PREV]
+.rr [T
+..
+\#
+\# Translated works
+\# ----------------
+\# %l Trans(l)ator
+.de ref*add-l
+.ie \\n([T .ref*field l "" " Trans. "
+.el .ref*field l . " Trans. "
+.rr [T
+..
+\# %r Translato(r) and edito(r)
+.de ref*add-r
+.ie \\n([T .ref*field r "" " Trans. and Ed. "
+.el .ref*field r . " Trans. and Ed. " 
+.rr [T
+..
+\#
+\# Internet
+\# --------
+\# %s Site name
+.de ref*add-s
+.ie \\n([s .ref*field s "" ".\E*[IT]" "" \E*[PREV]
+.el .ref*field s . " \E*[IT]" "" \E*[PREV]
+.\" refer doesn't set reg [T to 1 for these book titles, so we do it here
+.ds eval*[s \\*([s
+.substring eval*[s -1
+.rr [T
+.if '\\*[eval*[s]'!' .nr [T 1
+.if '\\*[eval*[s]'?' .nr [T 1
+.rm eval*[s
+..
+\# %c content of site, if unclear (i.e. advertisement, cartoon,
+\# interview, etc.)
+.de ref*add-c
+.ie \\n([T .ref*field c "" " "
+.el .ref*field c . " "
+.rr [T
+..
+\# %o organization, group or sponsor of site
+.de ref*add-o
+.ie \\n([T .ref*field o "" " "
+.el .ref*field o . " "
+.rr [T
+..
+\# %a access date, i.e. the date you read it
+.de ref*add-a
+.ie \\n([T .ref*field a "" " "
+.el .ref*field a . " "
+.rr [T
+..
+\# %u URL
+.de ref*add-u
+.ref*field u "" " <" ">"
+.rr [T
+..
+\#
+\# Build up reference string from ref*add-<x> macros.
+\#
+.de ref*field
+.if d ref*string \{\
+.   ie d ref*post-punct \{\
+.      as ref*string "\\$2\\*[ref*post-punct] \"
+.      rm ref*post-punct
+.   \}
+.   el .as ref*string "\\$2 \"
+.\}
+.as ref*string "\\$3\\*([\\$1\\$4
+.if \\n[.$]>4 .ds ref*post-punct "\\$5
+.nr ref*suppress-period 0
+..
+\#
+\# MARGIN NOTES
+\# ------------
+\# This is a wrapper for MNinit.
+\#
+\# I could use a 'while' loop to assign args to strings, but too many
+\# 'while' loops are slowing things down.
+\#
+.MAC MN_INIT END
+.    if !'\\$1'rerun' \{\
+.    ds $MN-arg1 \\$1
+.    ds $MN-arg2 \\$2
+.    ds $MN-arg3 \\$3
+.    ds $MN-arg4 \\$4
+.    ds $MN-arg5 \\$5
+.    ds $MN-arg6 \\$6
+.    ds $MN-arg7 \\$7
+.    ds $MN-arg8 \\$8
+.    ds $MN-arg9 \\$9
+.    \}
+.    ie \\n[#START_FOR_MNinit]=0 \{\
+.       nr #MNinit_DEFERRED 1
+.       nr #START_FOR_MNinit 1
+.       return
+.    \}
+.    el \{\
+.       MNinit \\*[$MN-arg1] \\*[$MN-arg2] \\*[$MN-arg3] \\*[$MN-arg4] 
\\*[$MN-arg5] \\*[$MN-arg6] \\*[$MN-arg7] \\*[$MN-arg8] \\*[$MN-arg9]
+.    \}
+.END
+\#
+.MAC MN_OVERFLOW_TRAP END
+.    if \\n[#OVERFLOW_LEFT]=1  \{\
+.       nr #no-repeat-MN-left 1
+.       di MN_OVERFLOW_LEFT
+.    \}
+.    if \\n[#OVERFLOW_RIGHT]=1 \{\
+.       nr #no-repeat-MN-right 1
+.       di MN_OVERFLOW_RIGHT
+.    \}
+.    rr #OVERFLOW_LEFT
+.    rr #OVERFLOW_RIGHT
+.END
+\#
+.ig
+The remainder of the margin notes macros and routines are adapted
+from Werner Lemberg's MN.tmac.
+..
+\#
+\# MNinit
+\# ------
+\# Usage:
+\# MNinit [ragged|symmetric] \
+\#        left-width right-width separation \
+\#        font fontsize vertical-spacing \
+\#        color hyphenation-flags
+\#
+\# Initialize margin notes.  Empty arguments (denoted with "") set
+\# default values.  If the first argument is the string `ragged',
+\# left and right margin notes are printed ragged-right.  If it is
+\# `symmetric', left margin notes are printed ragged-left and right
+\# margin notes ragged-right.  If omitted, margin notes are left
+\# and right adjusted.
+\#
+\#
+.de MNinit
+.  nr #MNinit 1
+.  ds MN-left-ad b\"
+.  ds MN-right-ad b\"
+.  if '\\$1'RAGGED' \{\
+.    ds MN-left-ad l\"
+.    ds MN-right-ad l\"
+.    shift
+.  \}
+.  if '\\$1'SYMMETRIC' \{\
+.    ds MN-left-ad r\"
+.    ds MN-right-ad l\"
+.    shift
+.  \}
+.  ie \B'\\$3' \
+.    nr MN-sep (n;\\$3)
+.  el \
+.    nr MN-sep 1m
+.  if ((\\n[.o] - \\n[MN-sep]) < 1n) \
+.    ab MN: Left margin too small (<1n) for requested margin notes separation.
+.  ie \B'\\$1' \{\
+.    nr MN-left-width (n;\\$1)
+.    nr MN-left-start (\\n[.o] - \\n[MN-sep] - \\n[MN-left-width])
+.  \}
+.  el \{\
+.    nr MN-left-width (\\n[.o] - \\n[MN-sep])
+.    nr MN-left-start 0
+.  \}
+.  if (\\n[MN-left-start] < 0) \
+.    ab MN: Left margin too small for requested margin notes settings.
+.  if (\\n[MN-left-width] < 1n) \
+.    ab MN: Left margin notes width too small (<1n).
+.
+.  ie \B'\\$2' \{\
+.    nr MN-right-width (n;\\$2)
+.    nr MN-right-start (\\n[.o] + \\n[.l] + \\n[MN-sep])
+.    if \\n[#COLUMNS]=1 \{\
+.      if !\\n[#NUM_COLS]=1 \{\
+.        nr MN-right-start (\\n[#COL_2_L_MARGIN] + \\n[#COL_L_LENGTH] + 
\\n[MN-sep])
+.      \}
+.    \}
+.  \}
+.  el \{\
+.    nr MN-right-width \\n[MN-left-width]
+.    nr MN-right-start (\\n[.o] + \\n[.l] + \\n[MN-sep])
+.    if \\n[#COLUMNS]=1 \{\
+.      if !\\n[#NUM_COLS]=1 \{\
+.        nr MN-right-start (\\n[#COL_2_L_MARGIN] + \\n[#COL_L_LENGTH] + 
\\n[MN-sep])
+.      \}
+.    \}
+.  \}
+.  ie \A'\\$4' \{\
+.    ds MN-font \\$4\"
+.    if \\n[#PRINT_STYLE]=1 .ds MN-font CR
+.  \}
+.  el \{\
+.    ds MN-font \\*[$PP_FT]
+.    if \\n[#PRINT_STYLE]=1 .ds MN-font CR
+.  \}
+.  ie \B'\\$5' \{\
+.    ps \\$5
+.    nr MN-size \\n[.ps]
+.    ps
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ps 12
+.       nr MN-size \\n[.ps]
+.       ps
+.    \}
+.  \}
+.  el \{\
+.    nr MN-size \\n[#DOC_PT_SIZE]
+.  \}
+.  ie \B'\\$6' \{\
+'    vs \\$6
+.    nr MN-spacing \\n(.v
+'    vs
+.    if '\\$6'DOC' \{ .nr MN-spacing \\n[#DOC_LEAD] \}
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       nr MN-spacing \\n[#DOC_LEAD]
+.    \}
+.  \}
+.  el \{\
+.    nr MN-spacing \\n[#DOC_LEAD]
+.  \}
+.  ie \A'\\$7' \
+.    if !\\n[#PRINT_STYLE]=1 .ds MN-color \\$7\"
+.  el \
+.    if !\\n[#PRINT_STYLE]=1 .ds MN-color
+.  ie \B'\\$8' \
+.    nr MN-hy \\$8
+.  el \
+.    nr MN-hy \\n[.hy]
+.  ev MNbottom-left-env
+.  if \A'\\*[MN-font]' \
+.    ft \\*[MN-font]
+.  if \\n[MN-size] \
+.    ps \\n[MN-size]u
+.  if \\n[MN-spacing] \
+.    vs \\n[MN-spacing]u
+.  ll \\n[MN-left-width]u
+.  ad \\*[MN-left-ad]
+.  hy \\n[MN-hy]
+'  in 0
+.  nop \m[\\*[MN-color]]\c
+.  ev
+.  ev MNbottom-right-env
+.  if \A'\\*[MN-font]' \
+.    ft \\*[MN-font]
+.  if \\n[MN-size] \
+.    ps \\n[MN-size]u
+.  if \\n[MN-spacing] \
+.    vs \\n[MN-spacing]u
+.  ll \\n[MN-right-width]u
+.  ad \\*[MN-right-ad]
+.  hy \\n[MN-hy]
+'  in 0
+.  nop \m[\\*[MN-color]]\c
+.  ev
+.  nr MN-active 0
+..
+\# MN
+\# --
+\# Usage:
+\# 
+\#   MN LEFT|RIGHT
+\#   margin note text
+\#   MN
+\#
+\# With a parameter, start a margin note, otherwise end a margin note.
+\# If the parameter is the string `left', define a left margin note,
+\# otherwise define a right margin note.
+\#
+.de MN
+.ds MN-dir \\$1
+.if \\n[#COLUMNS]=1 \{\
+.  if \\n[#NUM_COLS]>2 \{\
+.    tm MN: More than two columns.  Ignoring margin notes.
+.    return
+.  \}
+.  if !\\n[#NUM_COLS]=1 \{\
+.    ie \\n[#COL_NUM]=1 .ds MN-dir LEFT
+.    el .ds MN-dir RIGHT
+.  \}
+.\}
+.  if !\\n[#MNinit]=1 \{\
+.    tm MN: You must set parameters with MN_INIT before using MN. 
+.    ab Aborting
+.  \}
+.  ie !'\\$1'' \{\
+.    if \\n[MN-active] \{\
+.      tm MN: Can't handle nested margin notes.
+.      return
+.    \}
+.    nr MN-active 1
+.    ev MN-env
+.    ie '\\*[MN-dir]'LEFT' \{\
+.      nr MN-left +1
+.      ds MN-curr l-\\n[MN-left]\"
+.      evc MNbottom-left-env
+.    \}
+.    el \{\
+.      nr MN-right +1
+.      ds MN-curr r-\\n[MN-right]\"
+.      evc MNbottom-right-env
+.    \}
+.    mk MN-mk-\\*[MN-curr]
+.    di MN-div-\\*[MN-curr]
+.  \}
+.  el \{\
+.    if \\n[MN-active] \{\
+.      br
+.      di
+.      nr MN-div-\\*[MN-curr]-depth \\n(dn
+.      ev
+.    \}
+.    nr MN-active 0
+.  \}
+..
+\#
+\# MNtop
+\# -----
+\# Resets these registers (called in HEADER)
+.de MNtop
+.  nr MN-left 0
+.  nr MN-right 0
+.  nr MN-active 0
+..
+\#
+\# MNbottom-left
+\# -------------
+\# The "left" half of Werner's original MNbottom.
+\#
+.de MNbottom-left
+.  nr MN-curr 0
+.  nr MN-last-pos 0
+.  nr MN-lead-adj \\n[#DOC_LEAD]-\\n[MN-spacing]
+.  vpt 0
+.  mk MN-curr-pos
+.  if \\n[MN-active] \{\
+.    di
+.    tm MN: Margin note finished by new page.  Ignored.
+.  \}
+.  po \\n[MN-left-start]u
+.  ev MNbottom-left-env
+.  nr #P \\n%+\\n[#PAGE_NUM_ADJ]
+.  while (\\n[MN-curr] < \\n[MN-left]) \{\
+.    nr MN-curr +1
+.    ie (\\n[MN-last-pos] < \\n[MN-mk-l-\\n[MN-curr]]) \
+.      sp |\\n[MN-mk-l-\\n[MN-curr]]u+\\n[MN-lead-adj]u
+.    el \{\
+.      nr MN-shifted 1
+.      sp 1v
+.      SHIM
+.      if \\n[#SHIM]u>\\n[MN-spacing] .sp -(1v+\\n[MN-lead-adj]u)
+.      tm MN: Warning: Left margin note #\\n[MN-curr] on page \\n[#P] shifted 
down.
+.    \}
+.\" If last margin note doesn't fit
+.    if ( (\\n(nl+\\n[MN-div-l-\\n[MN-curr]-depth]) > 
(\\n(.p+\\n[#VARIABLE_FOOTER_POS]) ) \{\
+.      if \\n[MN-shifted]=1 \{\
+.        sp -(1v+\\n[#SHIM]u)
+.        rm MN-div-l-\\n[MN-curr]
+.        tm1 "[mom]: No room to start left margin note #\\n[MN-curr] on page 
\\n[#P] on page \\n[#P].
+.        tm1 "       Ignoring margin note.
+.        rr MN-shifted
+.      \}
+.      nr #no-repeat-MN-left 1
+.      nr #OVERFLOW_LEFT 1
+.      wh \\n[.p]u+\\n[#VARIABLE_FOOTER_POS]u-1u MN_OVERFLOW_TRAP
+.      vpt 1
+.    \}
+.    MN-div-l-\\n[MN-curr]
+.    br
+.    nr MN-last-pos \\n[nl]
+.\}
+.  ev
+.  po
+.  if !\\n[#no-repeat-MN-left]=1 \{\
+.     if \\n[MN-right]=0 .vpt 1
+.  \}
+..
+\#
+\# MNbottom-right
+\# --------------
+\# The "right" half of Werner's original MNbottom.
+\#
+.de MNbottom-right
+.  nr MN-curr 0
+.  nr MN-last-pos 0
+.  nr MN-lead-adj \\n[#DOC_LEAD]-\\n[MN-spacing]
+.  vpt 0
+.  po \\n[MN-right-start]u
+.  ev MNbottom-right-env
+.  nr #P \\n%+\\n[#PAGE_NUM_ADJ]
+.  while (\\n[MN-curr] < \\n[MN-right]) \{\
+.    nr MN-curr +1
+.    ie (\\n[MN-last-pos] < \\n[MN-mk-r-\\n[MN-curr]]) \
+.      sp |\\n[MN-mk-r-\\n[MN-curr]]u+\\n[MN-lead-adj]u
+.    el \{\
+.      nr MN-shifted 1
+.      sp 1v
+.      SHIM
+.      tm MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted 
down.
+.    \}
+.\" If last margin note doesn't fit
+.    if ( (\\n(nl+\\n[MN-div-r-\\n[MN-curr]-depth]) > 
(\\n(.p+\\n[#VARIABLE_FOOTER_POS]) ) \{\
+.      if \\n[MN-shifted]=1 \{\
+.        sp -(1v+\\n[#SHIM]u)
+.        rm MN-div-r-\\n[MN-curr]
+.        tm1 "[mom]: No room to start right margin note #\\n[MN-curr] on page 
\\n[#P] on page \\n[#P].
+.        tm1 "       Ignoring margin note.
+.        rr MN-shifted
+.      \}
+.      nr #no-repeat-MN-right 1
+.      nr #OVERFLOW_RIGHT 1
+.      wh \\n[.p]u+\\n[#VARIABLE_FOOTER_POS]u-1u MN_OVERFLOW_TRAP
+.      vpt 1
+.    \}
+.    MN-div-r-\\n[MN-curr]
+.    br
+.    nr MN-last-pos \\n[nl]
+.\}
+.  ev
+.  po
+'  sp |\\n[MN-curr-pos]u
+.  if !\\n[#no-repeat-MN-right]=1 .vpt 1
+..




reply via email to

[Prev in Thread] Current Thread [Next in Thread]