groff-commit
[Top][All Lists]
Advanced

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

[Groff-commit] groff/contrib/mom ChangeLog NEWS om.tmac exampl...


From: Peter Schaffter
Subject: [Groff-commit] groff/contrib/mom ChangeLog NEWS om.tmac exampl...
Date: Wed, 30 Oct 2013 19:15:11 +0000

CVSROOT:        /sources/groff
Module name:    groff
Changes by:     Peter Schaffter <PTPi>  13/10/30 19:15:11

Modified files:
        contrib/mom    : ChangeLog NEWS om.tmac 
        contrib/mom/examples: mom-pdf.mom 
        contrib/mom/momdoc: docelement.html docprocessing.html 
                            headfootpage.html images.html letters.html 
                            macrolist.html reserved.html toc.html 
                            typesetting.html 

Log message:
        Expanded and improved float and tbl handling.
        Fixes to AUTOLEAD, SMARTQUOTES, and CODE from patches supplied by
        Robin Haberkorn.
        Doc updates and revisions.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/ChangeLog?cvsroot=groff&r1=1.83&r2=1.84
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/NEWS?cvsroot=groff&r1=1.36&r2=1.37
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/om.tmac?cvsroot=groff&r1=1.78&r2=1.79
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/examples/mom-pdf.mom?cvsroot=groff&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/docelement.html?cvsroot=groff&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/docprocessing.html?cvsroot=groff&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/headfootpage.html?cvsroot=groff&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/images.html?cvsroot=groff&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/letters.html?cvsroot=groff&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/macrolist.html?cvsroot=groff&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/reserved.html?cvsroot=groff&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/toc.html?cvsroot=groff&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/groff/contrib/mom/momdoc/typesetting.html?cvsroot=groff&r1=1.32&r2=1.33

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/groff/groff/contrib/mom/ChangeLog,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- ChangeLog   15 Sep 2013 03:10:35 -0000      1.83
+++ ChangeLog   30 Oct 2013 19:15:09 -0000      1.84
@@ -1,3 +1,7 @@
+* Wed Oct 30 2013
+
+o Expanded and improved float/tbl handling.
+
 * Sat Sep 14 2013
 
 o .TS/.TE extended to support multi-page tables with headers.

Index: NEWS
===================================================================
RCS file: /sources/groff/groff/contrib/mom/NEWS,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- NEWS        29 Jan 2013 05:02:44 -0000      1.36
+++ NEWS        30 Oct 2013 19:15:09 -0000      1.37
@@ -5,6 +5,10 @@
     are permitted in any medium without royalty provided the copyright
     notice and this notice are preserved.
 
+Release 2.0-b
+-------------
+Improved and expanded float and tbl support.
+
 Release 2.0-a
 -------------
 FORCE argument added to FLOAT; immediately breaks to a new page

Index: om.tmac
===================================================================
RCS file: /sources/groff/groff/contrib/mom/om.tmac,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -b -r1.78 -r1.79
--- om.tmac     15 Sep 2013 03:10:35 -0000      1.78
+++ om.tmac     30 Oct 2013 19:15:09 -0000      1.79
@@ -23,9 +23,9 @@
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>.
 
-Version 2.0-a_1
----------------
-Antoine de St-Exupéry asserted that elegance in engineering is
+Version 2.1-b
+-------------
+Antoine de St-Exupéry asserted that elegance in engineering is
 achieved not when there is nothing left to add, but when there is
 nothing left to take away.
 
@@ -40,8 +40,9 @@
 
 Thanks to everyone who has contributed suggestions and patches, and
 to those whose GPL'd work has been plundered.  Special thanks to
-Werner Lemberg (margin notes), Tadziu Hoffman (underlining), and
-Deri James (pdf integration).
+Werner Lemberg (margin notes), Tadziu Hoffman (underlining),
+Deri James (pdf integration), Robin Haberkorn (tbl integration and
+float management).
 ..
 .\" %beginstrip%
 \#
@@ -279,7 +280,7 @@
 .    nr #PAGE_WIDTH \\$1
 .    if !r#L_MARGIN .L_MARGIN \\n[.o]
 .    if !r#R_MARGIN .R_MARGIN 1i
-.    if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
+.    if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'\c
 .END
 \#
 \# L_MARGIN
@@ -385,7 +386,7 @@
 \#
 .MAC PAGELENGTH END
 .    pl \\$*
-.    if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
+.    if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'\c
 .END
 \#
 \# =====================================================================
@@ -614,20 +615,27 @@
 \#   <point size of type>
 \# *Function:
 \#   Sets point size to user supplied value in scaled points.
-\#   If #AUTO_LEAD is on, sets .vs to #AUTOLEAD_VALUE+#PT_SIZE.
+\#   If #AUTO_LEAD is on, resets lead accordingly.
 \# *Notes:
 \#   Must NOT use a unit of measure.
 \#
 .MAC PT_SIZE END
 .    if \\n[#PRINT_STYLE]=1 .return
 .    if \\n[#IGNORE] .return
-.    nr #PT_SIZE_SET 1
 .    ps \\$1
-.    if \\n[#AUTO_LEAD] \{\
-.       ie \\n[#AUTOLEAD_FACTOR] .vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
-.       el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
-.    \}
 .    nr #PT_SIZE_IN_UNITS \\n[.ps]
+.    ie '\\$0'DOC_PT_SIZE' \{\
+.       if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
+.       br
+.       nr #NEW_DOC_PT_SIZE \\n[.ps]
+.       if \\n[#DOC_AUTOLEAD] \{\
+.          ie !\\n[#DOC_AUTOLEAD_FACTOR] .nr #AUTOLEADING \\n[#DOC_AUTOLEAD]
+.          el .nr #AUTOLEADING \\n[.ps]*\\n[#DOC_AUTOLEAD]/1000-\\n[.ps]
+.          nr #DOC_LEAD \\n[.ps]+\\n[#AUTOLEADING]
+.          nr #RESET_TRAPS 1
+.       \}
+.    \}
+.    el .if \\n[#AUTO_LEAD] .vs \\n[.ps]u+\\n[#AUTOLEADING]u
 .END
 \#
 \# SIZE (inline)
@@ -662,9 +670,11 @@
 .    if \\n[#IGNORE] .return
 .    if \\n[#AUTO_LEAD] \{\
 .       rr #AUTO_LEAD
-.       rr #AUTOLEAD_FACTOR
+.       rr #AUTOLEAD_VALUE
+.       rr #AUTOLEADING
 .    \}
 .    vs \\$1
+.    if \\n[.t]<\\n[.v] 'bp
 .    if \\n[#TOP] \{\
 .       nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
 .       sp -\\n[#TOP_BASELINE_ADJ]u
@@ -673,11 +683,6 @@
 .    \}
 .END
 \#
-.MAC RESET_LEAD END
-'    vs
-.    ch RESET_LEAD
-.END
-\#
 \# AUTOLEAD
 \# --------
 \# *Argument:
@@ -695,16 +700,15 @@
 .MAC AUTOLEAD END
 .    if \\n[#PRINT_STYLE]=1 .return
 .    if \\n[#IGNORE] .return
-.    nr #AUTO_LEAD 1
+.    nr #AUTO_LEAD 1 \" autolead on or off
 .    nr #OLD_LEAD \\n[.v]
-.    nr #AUTOLEAD_VALUE (p;\\$1)
-.    ie \\n[#NUM_ARGS]=2 \{\
-.       if '\\$2'FACTOR' \{\
-.          nr #AUTOLEAD_FACTOR 1
-.          vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
+.    nr #AUTOLEAD_VALUE (p;\\$1) \" arg x 1000
+.    ie '\\$2'FACTOR' \{\
+.       if !\\n[#DOCS] .nr #DOC_AUTOLEAD_FACTOR \\n[#AUTOLEAD_VALUE] \" save 
for DOC_PT_SIZE
+.       nr #AUTOLEADING \\n[.ps]*\\n[#AUTOLEAD_VALUE]/1000-\\n[.ps]
 .       \}
-.    \}
-.    el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
+.    el .nr #AUTOLEADING \\n[#AUTOLEAD_VALUE]
+.    vs \\n[.ps]u+\\n[#AUTOLEADING]u
 .    if \\n[#TOP] \{\
 .       nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
 .       sp -\\n[#TOP_BASELINE_ADJ]u
@@ -1228,122 +1232,131 @@
 \# *Arguments:
 \#   [ ,, ] | [ << ] | [ >> ] | <anything>
 \#   or
-\#   [ DA | DE | ES | FR | IT | NL | NO | PT | SV ] | <anything>
+\#   [ DA | DE | EN | ES | FR | IT | NL | NO | PT | SV ] | <anything>
 \# *Function:
 \#   Turns smartquotes on (optionally with a quoting style from the
 \#   argument list, or off).
+\#   If no quoting style is given, then EN (English) is used by default.
+\#   If no quoting style is given and smart quotes have been turned off
+\#   previously, the old quoting style will be restored.
 \# *Notes:
 \#   The " character is read outside the macro when mom is
 \#   processed.  The strings for open/close ($QUOTE<n>) are then
 \#   defined in the macro.
 \#
 .char " \\*[$QUOTE\\n[#OPEN_CLOSE]]\R'#OPEN_CLOSE (1-\\n[#OPEN_CLOSE])'
+.nr #SQ_ON 0
 \#
 .MAC SMARTQUOTES END
-.    rr #ARGS_TO_SQ
-.    if \\n[#RESTORE_SQ]=1 \{\
-.       rr #RESTORE_SQ
-.       ie '\\*[$RESTORE_SQ]'' \{\
-.          ds $QUOTE0 \[lq]
-.          ds $QUOTE1 \[rq]
-.       \}
-.       el \{\
+.\" First " will be translated to $QUOTE0
+.    nr #OPEN_CLOSE 0
+.    if '\\$1'' \{\
+.       if !'\\*[$RESTORE_SQ]'' \{\
 .          SMARTQUOTES \\*[$RESTORE_SQ]
 .          return
 .       \}
-.    \}
-.    ie '\\$1'' \{\
-.       nr #OPEN_CLOSE 0
+.\" Default smart quotes (English)
 .       ds $QUOTE0 \[lq]
 .       ds $QUOTE1 \[rq]
-.       ds $RESTORE_SQ \\$1
+.       ds $RESTORE_SQ EN
+.       nr #SQ_ON 1
+.       return
 .    \}
-.    el \{\
 .       if '\\$1',,' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Bq]
 .          ds $QUOTE1 \[lq]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'<<' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fo]
 .          ds $QUOTE1 \[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'>>' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fc]
 .          ds $QUOTE1 \[Fo]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'DA' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fc]
 .          ds $QUOTE1 \[Fo]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'DE' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Bq]
 .          ds $QUOTE1 \[lq]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
+.    \}
+.    if '\\$1'EN' \{\
+.       ds $QUOTE0 \[lq]
+.       ds $QUOTE1 \[rq]
+.       ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'ES' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[lq]
 .          ds $QUOTE1 \[rq]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'FR' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fo]\|
 .          ds $QUOTE1 \|\[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'IT' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fo]\|
 .          ds $QUOTE1 \|\[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'NL' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[rq]
 .          ds $QUOTE1 \[rq]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'NO' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fo]
 .          ds $QUOTE1 \[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'PT' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fo]
 .          ds $QUOTE1 \[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
 .       if '\\$1'SV' \{\
-.          nr #ARGS_TO_SQ 1
 .          ds $QUOTE0 \[Fc]
 .          ds $QUOTE1 \[Fc]
 .          ds $RESTORE_SQ \\$1
+.       nr #SQ_ON 1
+.       return
 .       \}
-.    \}
-.    if !r#ARGS_TO_SQ \{\
-.       ie !'\\$1'' \{\
-.\" Turn smartquotes off
+.\" None of the above -> turn smartquotes off
 .          ds $QUOTE0 \[dq]
 .          ds $QUOTE1 \[dq]
-.       \}
-.       el \{\
-.          ds $QUOTE0 \[lq]
-.          ds $QUOTE1 \[rq]
-.          nr #RESTORE_SQ 1
-.       \}
-.    \}
+.    nr #SQ_ON 0
 .END
 \#
 .ds $QUOTE0 \[lq]
@@ -2803,6 +2816,9 @@
 .       vpt 1
 .       rr #RESTORE_TRAP
 .    \}
+.    if '\\n[.z]'FLOAT*DIV' \{\
+.       if !(\\n[.d]+\\n[#WEIGHT])<\\n[D-float] .nr D-float 
\\n[.d]+\\n[#WEIGHT]
+.    \}
 .END
 \#
 \# RULE
@@ -3374,7 +3390,7 @@
 .          ta \\n[.l]u-\\n[#L_INDENT]u
 .       \}
 .       el \{\
-.          ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
+.          ll \\n[.l]u-\\n[#R_INDENT]u
 .          ta \\n[.l]u-\\n[#L_INDENT]u
 .       \}
 .    \}
@@ -3386,7 +3402,7 @@
 .          ta \\n[.l]u-\\n[#L_INDENT]u
 .       \}
 .       el \{\
-.          ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
+.          ll \\n[.l]u-\\n[#R_INDENT]u
 .          ta \\n[.l]u-\\n[#L_INDENT]u
 .       \}
 .    \}
@@ -3408,7 +3424,7 @@
 .          ta \\n[.l]u-\\n[#BR_INDENT]u
 .       \}
 .       el \{\
-.          ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
+.          ll \\n[.l]u-\\n[#BR_INDENT]u
 .          ta \\n[.l]u-\\n[#BR_INDENT]u
 .       \}
 .    \}
@@ -3424,7 +3440,7 @@
 .       \}
 .       el \{\
 .          in \\n[#BL_INDENT]u
-.          ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
+.          ll \\n[.l]u-\\n[#BR_INDENT]u
 .          ta \\n[.l]u-\\n[#BR_INDENT]u
 .       \}
 .    \}
@@ -3926,6 +3942,26 @@
 \# DOCUMENT PROCESSING MACROS, STRINGS AND ALIASES
 \# ===============================================
 \#
+\# DOC_MACRO_ERROR
+\# ----------
+\# *Arguments:
+\#   None.
+\# *Function:
+\#   Warning message if DOC_<PARAMETER> called before START.
+\#
+.MAC DOC_MACRO_ERROR END
+.    if '\\$1'DOC_L_MARGIN'    .ds $REPLACEMENT L_MARGIN
+.    if '\\$1'DOC_R_MARGIN'    .ds $REPLACEMENT R_MARGIN
+.    if '\\$1'DOC_LINE_LENGTH' .ds $REPLACEMENT LL
+.    if '\\$1'DOC_FAMILY'      .ds $REPLACEMENT "FAMILY or FAM
+.    if '\\$1'DOC_PT_SIZE'     .ds $REPLACEMENT PT_SIZE
+.    if '\\$1'DOC_LEAD'        .ds $REPLACEMENT LS
+.    if '\\$1'DOC_QUAD'        .ds $REPLACEMENT QUAD
+.    tm1 "[mom]: \\$1 at line \\n[.c] of '\\n[.F]' should not be used before 
START.
+.    tm1 "       Use \\*[$REPLACEMENT] instead.
+.    ab  Aborting.
+.END
+\#
 \# +++PAGE DIMENSIONS+++
 \#
 \# PAPER SIZE
@@ -4024,12 +4060,17 @@
 .          ie '\\$2'SINGLESPACE' \{\
 .             nr #SINGLE_SPACE 1
 .             vs 12
+.             ie \\n[#DOC_TYPE]=4 .nr #FOOTER_ADJ \\n[.v]
+.             el .nr #FOOTER_ADJ \\n[.v]*2
 .             nr #ORIGINAL_DOC_LEAD \\n[.v]
 .          \}
 .          el \{\
+.             if !\\n[#DOC_TYPE]=4 \{\
 .             vs 24
+.                nr #FOOTER_ADJ \\n[.v]
 .             nr #ORIGINAL_DOC_LEAD \\n[.v]
 .          \}
+.          \}
 .          QUAD    L
 .          HY      OFF
 .          SMARTQUOTES OFF
@@ -4058,8 +4099,11 @@
 .          if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
 .          FAMILY  T
 .          FT      R
-.          if !\\n[#DOC_TYPE]=4 .PT_SIZE 12.5
-.          if !\\n[#DOC_TYPE]=4 .LS 16
+.          if !\\n[#DOC_TYPE]=4 .ps 12.5
+.          if !\\n[#DOC_TYPE]=4 .vs 16
+.\" In DEFAULTS, TRAPS is run with this leading, so we need a register to
+.\" hold it for use with the .sp in FOOTER
+.          nr #FOOTER_ADJ 12000
 .          JUSTIFY
 .          HY
 .          HY_SET 2 36p 1p
@@ -4615,7 +4659,6 @@
 .    substring $AUTHORS 0 -3
 .    ds PDF_AUTHORS \\*[$AUTHORS]
 .    pdfmomclean PDF_AUTHORS
-\#.    pdfinfo /Author \\*[PDF_AUTHORS]
 .    nop \!x X ps:exec [/Author (\\*[PDF_AUTHORS]) /DOCINFO pdfmark
 .END
 \#
@@ -4726,8 +4769,9 @@
 .       nr #DOC_TYPE 4
 .       L_MARGIN 1.125i
 .       R_MARGIN 1.125i
-.       PT_SIZE 12
-.       LS 13.5
+.       ps 12
+.       vs 13.5
+.       nr #FOOTER_ADJ \\n[.v]
 .       DOCHEADER OFF
 .       PARA_INDENT 3m
 .       INDENT_FIRST_PARAS
@@ -5345,6 +5389,7 @@
 .    if '\\$0'DOCHEADER_QUAD' \
 .       ds $DOCHEADER_QUAD \\$1
 .    if '\\$0'DOC_QUAD' \{\
+.       if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
 .        ds $DOC_QUAD \\$1
 .        QUAD \\*[$DOC_QUAD]
 .    \}
@@ -5400,20 +5445,24 @@
 .    if !r #DOC_HEADER .DOCHEADER
 .    if !r #HEADERS_ON .HEADERS
 .    if !r #PAGINATE   .PAGINATE
-.    if \\n[#FOOTERS_ON] \{\
-.       HEADERS OFF
-.       if \\n[#PAGE_NUM_POS_SET]=0 .PAGENUM_POS TOP CENTER
-.    \}
+.\"
 .    if !r #HEADER_MARGIN .HEADER_MARGIN 4P+6p
 .    if !r #HEADER_GAP    .HEADER_GAP 3P
+.\"
 .    if \\n[#FOOTERS_ON] \{\
-.       if \\n![#PAGINATE] \{\
+.       HEADERS OFF
+.       ie \\n[#PAGINATE] \
+.          if \\n[#PAGE_NUM_POS_SET]=0 .PAGENUM_POS TOP CENTER
+.       el \
 .          if !\\n[#T_MARGIN] .T_MARGIN 6P
 .       \}
-.    \}
 .    if !\\n[#HEADERS_ON] \{\
 .       if !\\n[#FOOTERS_ON] \{\
-.          if !r #T_MARGIN .T_MARGIN 6P
+.          ie \\n[#PAGE_NUM_V_POS]=1 \{\
+.             HEADER_MARGIN \\n[#HEADER_MARGIN]
+.             HEADER_GAP \\n[#HEADER_GAP]
+.          \}
+.          el .if !r #T_MARGIN .T_MARGIN 6P
 .       \}
 .    \}
 .    if !r #T_MARGIN          .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP]
@@ -5445,6 +5494,7 @@
 .\"
 .    nr #DOC_LEAD     \\n[#LEAD]
 .    nr address@hidden     \\n[#DOC_LEAD]
+.    if \\n[#AUTO_LEAD] .nr #DOC_AUTOLEAD \\n[#AUTOLEAD_VALUE]
 .\" #SAVED_DOC_LEAD is set in COLLATE
 .    if \\n[#SAVED_DOC_LEAD] \{\
 .       if !\\n[#TOC] \{\
@@ -5858,11 +5908,10 @@
 .          el .vs \\n[#ORIGINAL_DOC_LEAD]u/2u
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
-.          PT_SIZE  \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
-.          AUTOLEAD \\n[#FN_AUTOLEAD]
+.          ps  \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
+.          vs \\n[.ps]u+\\n[#FN_AUTOLEAD]
 .       \}
 .       nr #FN_LEAD \\n[#LEAD]
-.       if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u
 .       ev
 .    di
 .    if \\n[#RESTORE_AUTO_LEAD] \{\
@@ -5872,6 +5921,7 @@
 .    ie !\\n[#COLLATE] \{\
 .\" DOC_LEAD adjusted (or not) here
 .       TRAPS
+.       if \\n[#REMOVE_ADJ] .DOC_LEAD \\n[#DOC_LEAD]u-\\n[#DOC_LEAD_ADJ]u
 .\" Endnote, bibliography and toc leading
 .       nr #OK_PROCESS_LEAD 1
 .       nr #RESTORE_DOC_LEAD \\n[.v]
@@ -5903,7 +5953,7 @@
 .             rr #DEFER_BIB_SPACING
 .          \}
 .       \}
-.       DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
+.       nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
 .       nr #B_MARGIN \\n[#RESTORE_B_MARGIN]
 .    \}
 .    el \{\
@@ -5938,6 +5988,10 @@
 \\*[$MN-arg9]
 .    \}
 .    if \\n[#PRINT_STYLE]=1 .nr #IGNORE 1
+.    if \\n[#AUTO_LEAD] \{\
+.       rr #AUTO_LEAD
+.       rr #AUTOLEAD_VALUE
+.    \}
 .END
 \#
 \# ====================================================================
@@ -6097,8 +6151,8 @@
 .    if !'\\*[$TITLE_1]'' \{\
 .       FAMILY  \\*[$TITLE_FAM]
 .       FT      \\*[$TITLE_FT]
-.       PT_SIZE \\*[$TITLE_PT_SIZE]
-.       LS      \\n[#DOCHEADER_LEAD]u
+.       ps \\*[$TITLE_PT_SIZE]
+.       vs      \\n[#DOCHEADER_LEAD]u
 .       nr #ARG_NUM 0 1
 .       while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
 .          ie \\n[#TITLE_COLOR]=1 \
@@ -6109,7 +6163,7 @@
 .    if !'\\*[$SUBTITLE_1]'' \{\
 .       FAMILY  \\*[$SUBTITLE_FAM]
 .       FT      \\*[$SUBTITLE_FT]
-.       PT_SIZE \\*[$SUBTITLE_PT_SIZE]
+.       ps \\*[$SUBTITLE_PT_SIZE]
 .       nr #ARG_NUM 0 1
 .       while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
 .          ie \\n[#SUBTITLE_COLOR]=1 \
@@ -6120,7 +6174,7 @@
 .    if !'\\*[$AUTHOR_1]'' \{\
 .       FAMILY  \\*[$AUTHOR_FAM]
 .       FT      \\*[$AUTHOR_FT]
-.       PT_SIZE \\*[$AUTHOR_PT_SIZE]
+.       ps \\*[$AUTHOR_PT_SIZE]
 .       ie \\n[#ATTRIBUTE_COLOR]=1 \
 .          PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
 .       el .PRINT \&\\*[$ATTRIBUTE_STRING]
@@ -6134,16 +6188,16 @@
 .    DOC_HEADER_QUAD
 .    FAMILY  \\*[$TITLE_FAM]
 .    FT      \\*[$TITLE_FT]
-.    PT_SIZE \\*[$TITLE_PT_SIZE]
-.    LS      \\n[#DOCHEADER_LEAD]u
+.    ps \\*[$TITLE_PT_SIZE]
+.    vs \\n[#DOCHEADER_LEAD]u
 .\" Chapter title only
 .    ie '\\*[$CHAPTER]'' \{\
 .       ie !'\\*[$CHAPTER_TITLE_1]'' \{\
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             FAMILY  \\*[$CHAPTER_TITLE_FAM]
 .             FT      \\*[$CHAPTER_TITLE_FT]
-.             PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE]
-.             LS      \\n[#DOCHEADER_LEAD]u
+.             ps \\*[$CHAPTER_TITLE_PT_SIZE]
+.             vs \\n[#DOCHEADER_LEAD]u
 .          \}
 .          nr #ARG_NUM 0 1
 .          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
@@ -6168,8 +6222,8 @@
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             FAMILY  \\*[$CHAPTER_TITLE_FAM]
 .             FT      \\*[$CHAPTER_TITLE_FT]
-.             PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE]
-.             LS      \\n[#DOCHEADER_LEAD]u
+.             ps \\*[$CHAPTER_TITLE_PT_SIZE]
+.             vs \\n[#DOCHEADER_LEAD]u
 .             ALD     \\n[.v]u/4u \" Put a little space before the chapter 
title
 .          \}
 .          nr #ARG_NUM 0 1
@@ -6190,8 +6244,8 @@
 .    DOC_HEADER_QUAD
 .    FAMILY  \\*[$TITLE_FAM]
 .    FT      \\*[$TITLE_FT]
-.    PT_SIZE \\*[$TITLE_PT_SIZE]
-.    LS      \\n[#DOCHEADER_LEAD]u
+.    ps \\*[$TITLE_PT_SIZE]
+.    vs      \\n[#DOCHEADER_LEAD]u
 .    if !'\\*[$TITLE_1]'' \{\
 .       nr #ARG_NUM 0 1
 .       while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
@@ -6203,7 +6257,7 @@
 .    if !'\\*[$SUBTITLE]'' \{\
 .       FAMILY  \\*[$SUBTITLE_FAM]
 .       FT      \\*[$SUBTITLE_FT]
-.       PT_SIZE \\*[$SUBTITLE_PT_SIZE]
+.       ps \\*[$SUBTITLE_PT_SIZE]
 .       nr #ARG_NUM 0 1
 .       while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
 .          ie \\n[#SUBTITLE_COLOR]=1 \
@@ -6214,7 +6268,7 @@
 .    if !'\\*[$AUTHOR_1]'' \{\
 .       FAMILY  \\*[$AUTHOR_FAM]
 .       FT      \\*[$AUTHOR_FT]
-.       PT_SIZE \\*[$AUTHOR_PT_SIZE]
+.       ps \\*[$AUTHOR_PT_SIZE]
 .       ie \\n[#ATTRIBUTE_COLOR]=1 \
 .          PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
 .       el .PRINT \&\\*[$ATTRIBUTE_STRING]
@@ -6222,8 +6276,8 @@
 .    \}
 .    FAMILY  \\*[$DOCTYPE_FAM]
 .    FT      \\*[$DOCTYPE_FT]
-.    PT_SIZE \\*[$DOCTYPE_PT_SIZE]
-.    LS      \\n[#DOCHEADER_LEAD]u
+.    ps \\*[$DOCTYPE_PT_SIZE]
+.    vs \\n[#DOCHEADER_LEAD]u
 .    ALD     \\n[#DOCHEADER_LEAD]u
 .    nr #FROM_DOCTYPE 1
 .    if \\n[#DOCTYPE_COLOR]=1 .COLOR \\*[$DOCTYPE_COLOR]
@@ -6671,7 +6725,7 @@
 .       el .vs \\n[#DOC_LEAD]u
 .    \}
 .    if \\n[#PRINT_STYLE]=2 \{\
-.       LS \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
+.       vs \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
 .       nr #\\*[DOC_]COVER_LEAD \\n[#LEAD]
 .    \}
 .    if \\n[.ns] .rs
@@ -6949,7 +7003,7 @@
 .    fam \\*[$\\*[DOC_]COVER_DOCTYPE_FAM]
 .    ft  \\*[$\\*[DOC_]COVER_DOCTYPE_FT]
 .    ps  \\*[$\\*[DOC_]COVER_DOCTYPE_PT_SIZE]
-.    SP
+.    sp
 .    if \\n[#DOC_TYPE]=3 \{\
 .       if \\n[#\\*[DOC_]COVER_DOCTYPE]=1 \{\
 .          ie \\n[#PRINT_STYLE]=1 \{\
@@ -6985,8 +7039,8 @@
 .    el \{\
 .       fam \\*[$\\*[DOC_]COVER_COPYRIGHT_FAM]
 .       ft  \\*[$\\*[DOC_]COVER_COPYRIGHT_FT]
-.       PT_SIZE \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
-.       AUTOLEAD \\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]
+.       ps \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
+.       vs \\n[.ps]u+\\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]
 .       nr #COPYRIGHT_V_ADJ \\n[#DOC_LEAD]-\\n[.v]
 .       sp \\n[#COPYRIGHT_V_ADJ]u
 .       rr #COPYRIGHT_V_ADJ
@@ -7007,7 +7061,7 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          fam \\*[$\\*[DOC_]COVER_MISC_FAM]
 .          ft  \\*[$\\*[DOC_]COVER_MISC_FT]
-.          PT_SIZE \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
+.          ps \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
 .       \}
 .       QUAD \\*[$\\*[DOC_]COVER_MISC_QUAD]
 .       ie !'\\*[$MISC_\\*[DOC_]COVER_1]'' \{\
@@ -7143,6 +7197,7 @@
 \# Macro to begin document processing
 \#
 .MAC START END
+.    nr #DOCS 1
 .    if \\n[TOC.RELOCATE]==2 \{\
 .       if !\\n[TOC_BH] .TOC_BEFORE_HERE
 .    \}
@@ -7159,7 +7214,6 @@
 .       fl
 .       ab [mom]: PRINTSTYLE missing.  Aborting '\\n[.F]'.
 .    \}
-.    nr #DOCS 1
 .    if \\n[#LINENUMBERS]=1 \{\
 .       NUMBER_LINES OFF
 .       nr #LINENUMBERS 2
@@ -7175,10 +7229,7 @@
 .       \}
 .    \}
 .    DEFAULTS
-.\" Quote and blockquote default leads are the same as #DOC_LEAD, so
-.\" they have to be set after DEFAULTS (where DOC_LEAD is finalized)
-.    if !r#Q_AUTOLEAD     .nr #Q_LEAD \\n[#DOC_LEAD]
-.    if !r#BQ_AUTOLEAD    .nr #BQ_LEAD \\n[#DOC_LEAD]
+.    rr #RESET_TRAPS
 .    if !r#EN_Q_AUTOLEAD  .nr #EN_Q_LEAD \\n[#EN_LEAD]
 .    if !r#EN_BQ_AUTOLEAD .nr #EN_BQ_LEAD \\n[#EN_LEAD]
 .\"  TOC/recto-verso stuff
@@ -7244,7 +7295,7 @@
 .          \}
 .       \}
 .       nop
-.       sp |\\n[#DOCHEADER_ADVANCE]u-1v
+.       sp |\\n[#DOCHEADER_ADVANCE]u-\\n[#DOC_LEAD]u
 .       PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM]
 .       as $TOC_TITLE_ITEM \|
 .       if \\n[#PREFIX_CH_NUM] \{\
@@ -7295,7 +7346,7 @@
 .    \}
 .    el \{\
 .       if \\n[#AUTO_LEAD] .nr #RESTORE_AUTO_LEAD 1
-.       if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
+.       if \\n[#PRINT_STYLE]=2 .vs \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
 .       if \\n[#RESTORE_AUTO_LEAD] \{\
 .          nr #AUTO_LEAD 1
 .          nr #AUTOLEAD_VALUE  \\n[#SAVED_AUTOLEAD_VALUE]
@@ -7484,9 +7535,7 @@
 .          \}
 .       \}
 .    \}
-.    if \\n[#AUTO_LEAD] .nr #RESTORE_AUTO_LEAD 1
-.    LS \\n[#DOC_LEAD]u
-.    if \\n[#RESTORE_AUTO_LEAD] .nr #AUTO_LEAD 1
+.    vs \\n[#DOC_LEAD]u
 .    if \\n[#ADJ_DOC_LEAD]=1 \{\
 .       ie !r#ADVANCE_FROM_TOP \{\
 .          if \\n[#DOC_HEADER]=1 .SHIM
@@ -7582,6 +7631,7 @@
 \#   Affects everything on the page.
 \#
 .MAC DOC_LEFT_MARGIN END
+.    if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
 .    br
 .    nr #DOC_L_MARGIN (\\$1)
 .    L_MARGIN \\n[#DOC_L_MARGIN]u
@@ -7613,6 +7663,7 @@
 \#   Affects everything on the page.
 \#
 .MAC DOC_LINE_LENGTH END
+.    if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
 .    br
 .    nr #DOC_L_LENGTH (\\$1)
 .    LL \\n[#DOC_L_LENGTH]u
@@ -7629,6 +7680,7 @@
 \#   Affects everything except headers and footers.
 \#
 .MAC DOC_FAMILY END
+.    if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
 .    br
 .    ds $DOC_FAM \\$1
 .    ds $FAMILY  \\*[$DOC_FAM]
@@ -7655,12 +7707,7 @@
 \#   DOC_PT_SIZE is the basis for calculating all type sizes in
 \#   a document.  Ignored if PRINTSTYLE TYPEWRITE.
 \#
-.MAC DOC_PT_SIZE END
-.    if \\n[#IGNORE] .return
-.    br
-.    PT_SIZE \\$1
-.    nr #DOC_PT_SIZE \\n[#PT_SIZE]
-.END
+.ALIAS DOC_PT_SIZE PT_SIZE
 \#
 \# DOCUMENT LEAD
 \# -------------
@@ -7682,10 +7729,18 @@
 \#
 .MAC DOC_LEAD END
 .    if \\n[#IGNORE] .return
+.    if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
 .    br
 .    vs \\$1
+.    rr #DOC_AUTOLEAD
+.    rr #DOC_AUTOLEAD_FACTOR
 .    nr #DOC_LEAD \\n[#LEAD]
+.    nr #RESET_TRAPS 1
+.    if !\\n[#ADJ_DOC_LEAD] .nr #REMOVE_ADJ 1
+.    if !'\\$0'DOC_LEAD' \{\
 .    if '\\$2'ADJUST' .TRAPS
+.       rr #RESET_TRAPS
+.    \}
 .END
 \#
 \# ADJUST DOCUMENT LEAD
@@ -7982,13 +8037,13 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          FAMILY   \\*[$EPI_FAM]
 .          FT       \\*[$EPI_FT]
-.          PT_SIZE  \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
+.          ps  \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
 .          if \\n[#EPI_COLOR]=1 \{\
 .             nf
 \m[\\*[$EPI_COLOR]]
 .             EOL
 .          \}
-.          AUTOLEAD \\n[#EPI_AUTOLEAD]
+.          vs \\n[.ps]u+\\n[#EPI_AUTOLEAD]
 .          nr #EPI_LEAD      \\n[#LEAD]
 .          nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD]
 .       \}
@@ -8055,13 +8110,13 @@
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             FAMILY   \\*[$EPI_FAM]
 .             FT       \\*[$EPI_FT]
-.             PT_SIZE  \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
+.             ps  \\n[#DOC_PT_SIZE]u\\*[$EPI_SIZE_CHANGE]
 .          if \\n[#EPI_COLOR]=1 \{\
 .             nf
 \m[\\*[$EPI_COLOR]]
 .             EOL
 .          \}
-.             AUTOLEAD \\n[#EPI_AUTOLEAD]
+.             vs \\n[.ps]u+\\n[#EPI_AUTOLEAD]
 .             QUAD     \\*[$EPI_QUAD]
 .             nr #DIVERSIONS_HY_MARGIN (p;\\n[.ps]u*2.75)/1000
 .             HY_SET 1 \\n[#DIVERSIONS_HY_MARGIN]u (\\n[#PT_SIZE]u/1000u/8u)p
@@ -8286,7 +8341,7 @@
 .MAC FINIS END
 .    if address@hidden \{\
 .       if \\n[.t]<=2v \{\
-.          tm1 "[mom]: Insufficient room to print \\$0 on last page.
+.          tm1 "[mom]: '\\n[.F]': Insufficient room to print \\$0 on last page.
 .          return
 .       \}
 .    \}
@@ -8904,7 +8959,6 @@
 .       fam \\*[$HDRFTR_LEFT_FAM]
 .       ft  \\*[$HDRFTR_LEFT_FT]
 .       ps  \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_LEFT_SIZE_CHANGE]
-.       vs  12
 .       if \\n[#FOOTERS_ON] \{\
 .          di NULL
 .          SIZESPECS
@@ -8928,13 +8982,12 @@
 .             el \
 .                PRINT \\*[$HDRFTR_LEFT]
 .          \}
-.          el .PRINT \&
+.          el .nop \&
 .       \}
 .       if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
 .       fam     \\*[$HDRFTR_CENTER_FAM]
 .       ft      \\*[$HDRFTR_CENTER_FT]
 .       ps      \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_CENTER_SIZE_CHANGE]
-.       vs      12
 .       if \\n[#FOOTERS_ON] \{\
 .          di NULL
 .          SIZESPECS
@@ -8965,7 +9018,6 @@
 .       fam \\*[$HDRFTR_RIGHT_FAM]
 .       ft  \\*[$HDRFTR_RIGHT_FT]
 .       ps  \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE]
-.       vs  12
 .       if \\n[#FOOTERS_ON] \{\
 .          di NULL
 .          SIZESPECS
@@ -9166,6 +9218,13 @@
 \#   still isn't brilliant, but at least it's comprehensible.
 \#
 .MAC HEADER END
+.    vpt 0
+.    if \\n[#NEW_DOC_PT_SIZE] .nr #DOC_PT_SIZE \\n[#NEW_DOC_PT_SIZE]
+.    rr #NEW_DOC_PT_SIZE
+.    if \\n[#RESET_TRAPS] .TRAPS
+.    if \\n[#REMOVE_ADJ] .nr #DOC_LEAD -\\n[#DOC_LEAD_ADJ]
+.    rr #REMOVE_ADJ
+.    rr #RESET_TRAPS
 .    MNtop
 .    rr #FROM_FOOTER
 .    nr #FROM_HEADER 1
@@ -9198,7 +9257,6 @@
 .      fam \\*[$HDRFTR_FAM]
 .      ft  R
 .      ps  \\n[#DOC_PT_SIZE]u\\*[$HDRFTR_SIZE_CHANGE]
-.      vs  12
 .    \}
 .    nr #HDRFTR_PT_SIZE \\n[#PT_SIZE]
 .    if \\n[#CAPS_ON] \{\
@@ -9218,18 +9276,15 @@
 .    sp -1v
 .    ie \\n[#HEADERS_ON] \{\
 .       PRINT_HDRFTR
-.       sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .    \}
 .    el \{\
-.       ie \\n[#PAGE_NUM_V_POS]=1 \{\
-.          ie \\n[#PAGINATE] \{\
+.       if \\n[#PAGE_NUM_V_POS]=1 \{\
+.          if \\n[#PAGINATE] \{\
 .             PRINT_PAGE_NUMBER
-.             sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .          \}
-.          el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .       \}
-.       el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .    \}
+.    sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#ENDNOTES]=1 \{\
 .          if \\n[#EN_SINGLESPACE] \{\
@@ -9279,7 +9334,6 @@
 .       \}
 .    \}
 .    el .ns
-.    ns
 .    if \\n[#COLUMNS] \{\
 .       nr #FN_COUNT_FOR_COLS 0 1
 .       nr #L_MARGIN \\n[#DOC_L_MARGIN]
@@ -9359,7 +9413,8 @@
 .       rr #RESTORE_PAGINATION
 .    \}
 .    ch address@hidden
-.    wh \\n[nl]u+1u address@hidden
+.    ie \\n[tbl*have-header] .rr @TOP
+.    el .wh \\n[nl]u+1u address@hidden
 .    if d PDF*IMAGE \{\
 .       rs
 .       nf
@@ -9367,35 +9422,84 @@
 .       sp \\n[pdf-img:depth]u
 .       PDF_IMAGE_CLEAN
 .    \}
+.    if (\\n[float*defer]>0):(\\n[defer]=0) \{\
+.        nf
+.        if !\\n[tbl*no-top-hook] address@hidden
+.        rr tbl*no-top-hook
+.    \}
 .    if \\n[defer] \{\
+.       ev protect
+.       evc 0
 .       rs
 .       sp |\\n[#T_MARGIN]u-\\n[.v]u
-.       ev protect
+.       if '\\*[float*type:1]'boxed' \{\
+.          if (\\n[.t] > 1)&(\\n[float-depth:1] > \\n[.t]) \
+.             tbl*float-warning
+.       \}
 .       nf
 .       nr defer-count   \\n[defer]
 .       nr loop-count     0 1
+.       nr new-defer   0 1
 .       while \\n+[loop-count]<=\\n[defer-count] \{\
-.          FLOAT*DIV:\\n[loop-count]
-.          if \\n[D-float:\\n[loop-count]] \{\
-.             sp \
--\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
-.             rr D-float:\\n[loop-count]
+.          if \\n[defer] .rnn defer float*defer \" So .if \n[defer] is skipped 
during float output
+.          vpt
+.          if \\n[loop-count]>1 .SHIM
+.          sp 1u
+.          nr #NEXT_TRAP \\n[.t]
+.          sp -1u
+.          if '\\*[float*type:\\n[loop-count]]'table' \{\
+.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
+.          \}
+.          ie !\\n[float-span:\\n[loop-count]] \{\
+.             ie 
((\\n[float-depth:\\n[loop-count]]-\\n[.v])>\\n[#NEXT_TRAP]):(\\n[D-float:\\n[loop-count]]>\\n[#NEXT_TRAP])
 \{\
+.\" Insufficient space, defer to next page
+.                rn FLOAT*DIV:\\n[loop-count] NEW*FLOAT*DIV:\\n+[new-defer]
+.                rnn float-depth:\\n[loop-count] new-float-depth:\\n[new-defer]
+.                rnn D-float:\\n[loop-count] new-D-float:\\n[new-defer]
+.             \}
+.             el \{\
+.                output-float
+.             \}
+.          \}
+.          el \{\
+.             output-float
+.          \}
 .          \}
 .          rm FLOAT*DIV:\\n[loop-count]
 .          rr float-depth:\\n[loop-count]
+.       rm tbl*header-div:\\n[loop-count]
+.       rm float*type:\\n[loop-count]
+.\" FLOAT arrays are empty now
+.\" Rename new arrays (FLOATs deferred to next page) to proper names
+.       nr loop-count 0 1
+.       rnn new-defer defer
+.       while \\n+[loop-count]<=\\n[defer] \{\
+.          rn NEW*FLOAT*DIV:\\n[loop-count] FLOAT*DIV:\\n[loop-count]
+.          rnn new-float-depth:\\n[loop-count] float-depth:\\n[loop-count]
+.          rnn new-D-float:\\n[loop-count] D-float:\\n[loop-count]
 .       \}
-.       ev
+.       rr float*defer
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.       nr float*before-shim \\n[nl]
 .       SHIM
-\# Invoke table header hook.
-\# Will print table header for multipage tables
-.       rr defer
+.       nr float*after-shim \\n[nl]
+.       if '\\*[float*type:\\n[loop-count]]'boxed' \
+.          if \\n[float*before-shim]=\\n[float*after-shim] .sp
+.       if '\\*[float*type:\\n[loop-count]]'table' \
+.          if \\n[float*before-shim]=\\n[float*after-shim] .sp
+.       ev
+.       nr tbl*have-header 0
 .       rr loop-count
 .       rr defer-count
+.       rr float*before-shim
+.       rr float*after-shim
 .       rm float-adj
 .       rm float-adj:top
 .       rm float-adj:bottom
 .    \}
-.    address@hidden
+.    vpt
 .END
 \#
 \# ====================================================================
@@ -9498,9 +9602,6 @@
 .          rr #OVERFLOW_RIGHT
 .       \}
 .    \}
-\# Table bottom hook, draws the table borders in
-\# multipage boxed tables.
-.    address@hidden
 .    ch MN_OVERFLOW_TRAP
 .    nr #L_MARGIN_DIFF \\n[#L_MARGIN]-\\n[#DOC_L_MARGIN]
 .    if !\\n[#FN_DEFER] \{\
@@ -9522,7 +9623,7 @@
 .          rm FOOTNOTES
 .          if d RUNON_FOOTNOTES    .rm RUNON_FOOTNOTES
 .          if \\n[#PRINT_STYLE]=1 .vs \\n[#SAVED_LEAD]u
-.          if \\n[#PRINT_STYLE]=2 .LS \\n[#SAVED_LEAD]u
+.          if \\n[#PRINT_STYLE]=2 .vs \\n[#SAVED_LEAD]u
 .          if '\\n[.z]'FN_OVERFLOW' \{\
 .              di
 .              nr #FN_OVERFLOW_DEPTH \\n[#DIVER_DEPTH]
@@ -9545,7 +9646,7 @@
 .          po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
 .          nr #L_MARGIN \\n[.o]
 .          if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
-.          LS \\n[#SAVED_LEAD]u
+.          vs \\n[#SAVED_LEAD]u
 .          if \\n[#PREV_FN_DEFERRED] \{\
 .             nr #PREV_FN_DEFERRED 2
 .          \}
@@ -9555,7 +9656,7 @@
 .          if \\n[#RESET_FN_COUNTERS]=1 \{\
 .             rr #RESET_FN_COUNTERS
 .             PROCESS_FN_IN_DIVER
-.             LS \\n[#SAVED_LEAD]u
+.             vs \\n[#SAVED_LEAD]u
 .             nr #FN_COUNT \\n[#FN_COUNT] 1
 .             nr #FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS] 1
 .             rm FN_IN_DIVER
@@ -9651,7 +9752,7 @@
 .    el \{\
 .       ev FOOTER
 .       vpt 0
-.       sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#UNADJUSTED_DOC_LEAD]u
+.       sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#FOOTER_ADJ]u
 .       mk y
 .    \}
 .    UNDERLINE OFF
@@ -9816,11 +9917,12 @@
 .MAC HEADING END
 .    if !\B'\\$1' \{\
 .       tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-.       ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    if r #QUOTE     .rr #QUOTE
 .    if r #END_QUOTE .rr #END_QUOTE
 .    if r #EPIGRAPH  .rr #EPIGRAPH
+.    vs \\n[#DOC_LEAD]u
 .    if \\$1<\\n[#LEVEL] \
 .       nr #ACTIVE_LEVELS \\n[#LEVEL] \" loop count for resetting numbering 
registers
 .    nr #LAST_LEVEL \\n[#LEVEL]       \" used during TOC collection, if 
SPACE_TOC_ITEMS
@@ -9870,7 +9972,7 @@
 .       if \\n[#NUM_ARGS]>1 \{\
 .          tm1 "[mom]: Error at line \\n[.c], \\$0.
 .          tm1 "       PARAHEAD may not be given more than 1 line of text.
-.          ab  Aborting \\n[.F] at \\$0, line \\n[.c].
+.          ab  Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       \}
 .       vpt 0
 .       if !(\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) .sp -1v
@@ -9891,7 +9993,7 @@
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       fam \\*[$HEAD_\\n[#LEVEL]_FAM]
 .       ft  \\*[$HEAD_\\n[#LEVEL]_FT]
-.       ps  \\*[$HEAD_\\n[#LEVEL]_SIZE]
+.       ps  \\n[#DOC_PT_SIZE]u+\\*[$HEAD_\\n[#LEVEL]_SIZE]
 .       nf
 .    \}
 .\" Numbering
@@ -9949,7 +10051,7 @@
 .    el \{\
 .       FAMILY  \\*[$TOC_HEAD_\\n[#LEVEL]_FAM]
 .       FT      \\*[$TOC_HEAD_\\n[#LEVEL]_FT]
-.       PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+.       ps \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
 .    \}
 .\" Indents for TOC heading levels.
 .\" First, numbered heads.  @LEVEL here is #LEVEL+1
@@ -10240,7 +10342,7 @@
 .MAC HEADING_STYLE END
 .    if !\B'\\$1' \{\
 .       tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-.       ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    nr #LEVEL \\$1
 .    if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1
@@ -10255,13 +10357,13 @@
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule 
weight.
-.             ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL_WEIGHT \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule gap.
-.             ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL_GAP    \\$1
 .          shift
@@ -10275,19 +10377,19 @@
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule 
weight.
-.             ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL2_WEIGHT \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule gap.
-.             ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL2_GAP_1  \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires an 
inter-rule gap.
-.             ab Aborting \\n[.F] at \\$0, line \\n[.c].
+.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL2_GAP_2  \\$1
 .          shift
@@ -10802,7 +10904,7 @@
 .          ie \\n[#ENDNOTE] \{\
 .             FAMILY  \\*[$EN_FAM]
 .             FT      \\*[$EN_FT]
-.             PT_SIZE \\n[#EN_PS]u
+.             ps \\n[#EN_PS]u
 .             vs      \\n[#EN_LEAD]u
 .             QUAD    \\*[$EN_QUAD]
 .          \}
@@ -10813,8 +10915,8 @@
 .                rm $SAVED_PP_FT
 .             \}
 .             FT \\*[$PP_FT]
-.             PT_SIZE \\n[#DOC_PT_SIZE]u
-.             LS      \\n[#DOC_LEAD]u
+.             ps \\n[#DOC_PT_SIZE]u
+.             vs      \\n[#DOC_LEAD]u
 .             QUAD    \\*[$DOC_QUAD]
 .          \}
 .       \}
@@ -10858,9 +10960,7 @@
 .          if '\\n[.z]'END_NOTES' \
 .             ti \\n[#EN_PP_INDENT]u+\\n[#EN_TEXT_INDENT]u
 .       \}
-.       if !\\n[#PP]=0 \{\
 .          if r #START  .rr #START
-.       \}
 .       if r #QUOTE     .rr #QUOTE
 .       if r #END_QUOTE .rr #END_QUOTE
 .       if r #HEAD      .rr #HEAD
@@ -11059,19 +11159,17 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          FAMILY  \\*[$QUOTE_FAM]
 .          FT      \\*[$QUOTE_FT]
-.          PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
-.          ie !r #Q_AUTOLEAD .LS \\n[#Q_LEAD]u
+.          ps \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
+.          ie !r #Q_AUTOLEAD .vs \\n[#DOC_LEAD]u
 .          el \{\
-.             AUTOLEAD \\n[#Q_AUTOLEAD]
-.             if r #QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+.             vs \\n[.ps]u+\\n[#Q_AUTOLEAD]
 .             nr #Q_LEAD \\n[.v]
 .          \}
 .          if \\n[#ENDNOTE] \{\
-.             PT_SIZE \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
-.             ie !r #EN_Q_AUTOLEAD .LS \\n[#EN_Q_LEAD]u
+.             ps \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
+.             ie !r #EN_Q_AUTOLEAD .vs \\n[#EN_Q_LEAD]u
 .             el \{\
-.                AUTOLEAD \\n[#EN_Q_AUTOLEAD]
-.                if r #ENDNOTE_QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+.                vs \\n[.ps]u+\n[#EN_Q_AUTOLEAD]
 .                nr #EN_Q_LEAD \\n[.v]
 .             \}
 .          \}
@@ -11124,6 +11222,8 @@
 .       shift
 .    \}
 .    ie '\\$1'' \{\
+.       ds #RESTORE_FAM \\n[.fam]
+.       ds #RESTORE_FT  \\n[.sty]
 .       ie \\n[#PRINT_STYLE]=1 \{\
 .          CODE_FAMILY C
 .          ie \\n[#CODE_FT]=1 .ft \\*[$CODE_FT]
@@ -11157,15 +11257,17 @@
 .          if !\\n[#CODE_SIZE_ADJ]=0 \{\
 .             ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
 .          \}
-.          if \\n[#RESTORE_SQ]=1 \{\
+.          if \\n[#SQ_ON] \{\
 .             nr #SQ_WAS_ON 1
 .             SMARTQUOTES OFF
 .          \}
 .       \}
 .    \}
 .    el \{\
-.       fam
-.       ft
+.       fam \\*[#RESTORE_FAM]
+.       ft  \\*[#RESTORE_FT]
+.       rm #RESTORE_FAM
+.       rm #RESTORE_FT
 .       if !\\n[#CODE_SIZE_ADJ]=0 .ps
 .       rchar '
 .       if \\n[#CODE_COLOR]=1 .gcolor
@@ -11311,19 +11413,17 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          FAMILY  \\*[$BQUOTE_FAM]
 .          FT      \\*[$BQUOTE_FT]
-.          PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
-.          ie !r #BQ_AUTOLEAD .LS \\n[#BQ_LEAD]u
+.          ps \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
+.          ie !r #BQ_AUTOLEAD .vs \\n[#DOC_LEAD]u
 .          el \{\
-.             AUTOLEAD \\n[#BQ_AUTOLEAD]
-.             if r #BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+.             vs \\n[.ps]u+\\n[#BQ_AUTOLEAD]
 .             nr #BQ_LEAD \\n[.v]
 .          \}
 .          if \\n[#ENDNOTE] \{\
-.             PT_SIZE \\n[#EN_PS]u\\*[$BQUOTE_SIZE_CHANGE]
-.             ie !r#EN_BQ_AUTOLEAD .LS \\n[#EN_BQ_LEAD]u
+.             ps \\n[#EN_PS]u\\*[$BQUOTE_SIZE_CHANGE]
+.             ie !r#EN_BQ_AUTOLEAD .vs \\n[#EN_BQ_LEAD]u
 .             el \{\
-.                AUTOLEAD \\n[#EN_BQ_AUTOLEAD]
-.                if r #ENDNOTE_BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+.                vs \\n[.ps]u+\\n[#EN_BQ_AUTOLEAD]
 .                nr #EN_BQ_LEAD \\n[.v]
 .             \}
 .          \}
@@ -11825,7 +11925,7 @@
 .    ta \\n[.l]u
 .    FAMILY  \\*[$PAGE_NUM_FAM]
 .    FT      \\*[$PAGE_NUM_FT]
-.    PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$PAGE_NUM_SIZE_CHANGE]
+.    ps \\n[#DOC_PT_SIZE]u\\*[$PAGE_NUM_SIZE_CHANGE]
 .    if \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .    if \\n[#PAGE_NUM_V_POS]=1 .vs 0
 .    if o \{\
@@ -12141,7 +12241,7 @@
 \h'-\\n[#FN_RULE_WEIGHT]u'\
 \D'l \\n[#FN_RULE_LENGTH]u 0'\
 \v'+\\n[#FN_RULE_ADJ]u+\\n[#FN_RULE_WEIGHT_ADJ]u'
-\!.     PT_SIZE \\n[#DOC_PT_SIZE]u\\*$[FN_SIZE_CHANGE]
+\!.     ps \\n[#DOC_PT_SIZE]u\\*$[FN_SIZE_CHANGE]
 .       QUAD \\*[$FN_QUAD]
 .    \}
 .    el \{\
@@ -12428,8 +12528,8 @@
 .       \}
 .       FAMILY   \\*[$FN_FAM]
 .       FT       \\*[$FN_FT]
-.       PT_SIZE  \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
-.       AUTOLEAD \\n[#FN_AUTOLEAD]
+.       ps  \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
+.       vs \\n[.ps]u+(\\n[#FN_AUTOLEAD]u*1000u)
 .       QUAD     \\*[$FN_QUAD]
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          TYPEWRITER
@@ -13052,12 +13152,12 @@
 .    if \\n[#PREV_FN_DEFERRED]=2 \{\
 .       if \\n[#FN_COUNT_AT_FOOTER]>1 .rr #PREV_FN_DEFERRED
 .    \}
-.    if !\\n[#FN_DEFER] \{\
+.    ie !\\n[#FN_DEFER] \{\
 .       nr #FN_COUNT 0 1
 .       nr #FN_DEPTH 0
 .       nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
 .    \}
-.    if r #FN_DEFER \{\
+.    el \{\
 .       if \\n[#FN_DEFER]=1 .nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
 .       if \\n[#FN_DEFER]=2 \{\
 .          nr #FN_DEPTH 0
@@ -13652,7 +13752,7 @@
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             FAMILY  \\*[$EN_TITLE_FAM]
 .             FT      \\*[$EN_TITLE_FT]
-.             PT_SIZE \\n[#EN_PS]u\\*[$EN_TITLE_SIZE_CHANGE]
+.             ps \\n[#EN_PS]u\\*[$EN_TITLE_SIZE_CHANGE]
 .          \}
 .          sp
 .          if !'\\*[$EN_TITLE]'' \{\
@@ -13678,7 +13778,7 @@
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          TYPEWRITER
 .          if \\n[#EN_NUMBER]=1 .sp
-.          if \\n[#EN_MARKER_STYLE]=3 .PT_SIZE -2
+.          if \\n[#EN_MARKER_STYLE]=3 .ps -2
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          if \\n[#EN_NUMBER]=1 \{\
@@ -13687,17 +13787,17 @@
 .          if \\n[#EN_MARKER_STYLE]=1 \{\
 .             FAMILY  \\*[$EN_NUMBER_FAM]
 .             FT      \\*[$EN_NUMBER_FT]
-.             PT_SIZE \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
+.             ps \\n[#EN_PS]u\\*[$EN_NUMBER_SIZE_CHANGE]
 .          \}
 .          if \\n[#EN_MARKER_STYLE]=2 \{\
 .             FAMILY  \\*[$EN_LN_FAM]
 .             FT      \\*[$EN_LN_FT]
-.             PT_SIZE \\n[#EN_PS]u\\*[$EN_LN_SIZE_CHANGE]
+.             ps \\n[#EN_PS]u\\*[$EN_LN_SIZE_CHANGE]
 .          \}
 .          if \\n[#EN_MARKER_STYLE]=3 \{\
 .             FAMILY  \\*[$EN_NUMBER_FAM]
 .             FT      \\*[$EN_NUMBER_FT]
-.             PT_SIZE \\n[#PT_SIZE_IN_UNITS]u*6u/10u
+.             ps \\n[#PT_SIZE_IN_UNITS]u*6u/10u
 .          \}
 .       \}
 .\" Build string for line-numbered endnotes
@@ -13749,7 +13849,7 @@
 .          rm $EN_LINENUMBER
 .       \}
 .       if \\n[#EN_MARKER_STYLE]=3 \{\
-.          PT_SIZE \" Reset ps changed to get width of s-script numbers
+.          ps \" Reset ps changed to get width of s-script numbers
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .\" Vertical raise amount here is less than when the same string is printed in
 .\" the body of the text because number precedes a cap.
@@ -13789,7 +13889,7 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          FAMILY  \\*[$EN_FAM]
 .          FT      \\*[$EN_FT]
-.          PT_SIZE \\n[#EN_PS]u
+.          ps \\n[#EN_PS]u
 .       \}
 .    \}
 .    el \{\
@@ -13934,7 +14034,7 @@
 .          \}
 .          FAMILY  \\*[$EN_STRING_FAM]
 .          FT      \\*[$EN_STRING_FT]
-.          PT_SIZE \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
+.          ps \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
 .          vs      \\n[#EN_LEAD]u
 .          if \\n[#ENDNOTE_STRING_COLOR]=1 \{\
 .             TRAP OFF
@@ -14258,7 +14358,7 @@
 .             \}
 .             FAMILY  \\*[$BIB_STRING_FAM]
 .             FT      \\*[$BIB_STRING_FT]
-.             PT_SIZE \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
+.             ps \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
 .             vs      \\n[#BIB_LEAD]u
 .          \}
 .          if '\\*[$BIB_STRING_QUAD]'L'      .LEFT
@@ -14283,7 +14383,7 @@
 .       CAPS OFF
 .       FAMILY \\*[$BIB_FAMILY]
 .       FT \\*[$BIB_FT]
-.       PT_SIZE -\\*[$BIB_STRING_SIZE_CHANGE]
+.       ps -\\*[$BIB_STRING_SIZE_CHANGE]
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          ie \\n[#SINGLE_SPACE]=1 .ALD \\n[#BIB_LEAD]*3u
 .          el \{\
@@ -14357,12 +14457,12 @@
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          ie '\\$0'HD_TO_TOC' \{\
-\!.           PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+\!.           ps \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
 .          \}
 .          el \{\
 \!.           FAMILY  \\*[$TOC_TITLE_FAM]
 \!.           FT      \\*[$TOC_TITLE_FT]
-\!.           PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE]
+\!.           ps \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE] N
 .          \}
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
@@ -14417,7 +14517,7 @@
 .       if \\n[#PRINT_STYLE]=2 \{\
 \!.        FAMILY  \\*[$TOC_PN_FAM]
 \!.        FT      \\*[$TOC_PN_FT]
-\!.        PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
+\!.        ps \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
 .       \}
 \!.     TAB 100
 \!.     PRINT \\*[LEADER]\c
@@ -14690,11 +14790,11 @@
 .    COLLATE
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       rr #IGNORE
-.       LS 24
+.       vs 24
 .       nr #IGNORE 1
 .    \}
 .    if \\n[#PRINT_STYLE]=2 \{\
-.          LS \\n[#TOC_LEAD]u
+.          vs \\n[#TOC_LEAD]u
 .    \}
 .    if \\n[#FINIS] \{\
 .       if \\n[#FOOTERS_WERE_ON] .FOOTERS  \" Finally, turn footers on if they 
were on
@@ -14724,7 +14824,6 @@
 .    if \\n[#SLANT_ON] \{\
 \*[SLANTX]\c
 .    \}
-.    DOC_LINE_LENGTH \\n[#DOC_L_LENGTH]u
 .    \\*[$TOC_HEADER_QUAD]
 .    PAGENUM_STYLE \\*[$TOC_PN_STYLE]
 .    PDF_BOOKMARK 1 \\*[$TOC_HEADER_STRING]
@@ -14732,7 +14831,7 @@
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       FAMILY  \\*[$TOC_HEADER_FAM]
 .       FT      \\*[$TOC_HEADER_FT]
-.       PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
+.       ps \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
 .    \}
 .    nr #TOC_PS
 .    ie \\n[#PRINT_STYLE]=1 \{\
@@ -15571,7 +15670,7 @@
 .    LL \\n[#DOC_L_LENGTH]u
 .    QUAD $DOC_QUAD
 .    nr #SAVED_DOC_LEAD \\n[#DOC_LEAD]
-.    LS \\n[#DOC_LEAD]u
+.    vs \\n[#DOC_LEAD]u
 \*[SLANTX]
 \*[CONDX]
 \*[EXTX]
@@ -15832,6 +15931,16 @@
 .  vpt 1
 ..
 \#
+.MAC output-float END
+.    FLOAT*DIV:\\n[loop-count]
+.    vpt 0
+.    if \\n[D-float:\\n[loop-count]] \{\
+.       sp \
+-\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
+.       rr D-float:\\n[loop-count]
+.    \}
+.END
+\#
 \# FLOAT
 \# -----
 \# *Arguments:
@@ -15848,9 +15957,13 @@
 .\"  Case where upcoming .br breaks to a new page, causing a defered float
 .\"  to be output by HEADER and the defer register to be cleared.
 .    nr pagenum \\n%+\\n[#PAGE_NUM_ADJ]
-.\"  Possibly breaks to a new page.
 .    br
-.    if !(\\n%+\\n[#PAGE_NUM_ADJ])=\\n[pagenum] .nr broken*at*float 1
+.\"  Possibly breaks to a new page.  This may create problems, so the
+.\"  condition and a flag are set here, commented out for possible
+.\"  later use.
+.\"
+.\"  if !(\\n%+\\n[#PAGE_NUM_ADJ])=\\n[pagenum] .nr broken*at*float 1
+.\"
 .\" Clear .ns when a single line of running text precededs float
 .\" at the top of the page.
 .    if \\n[nl]=\\n[#T_MARGIN] \{\
@@ -15859,13 +15972,14 @@
 .       sp
 .       vpt
 .    \}
-.    rr #ARG_NUM
-.    nr #ARG_NUM 0 1
-.    nr #OPTS \\n[#NUM_ARGS]
 .    if '\\$1'FORCE' \{\
 .       nr #FORCE 1
 .       shift
 .    \}
+.    if '\\$1'SPAN' \{\
+.        nr float-span 1
+.        shift
+.    \}
 .    if '\\$1'ADJUST' \{\
 .       shift
 .       ds float-adj:top \\$1
@@ -15885,15 +15999,29 @@
 .    el \{\
 .       br
 .       di
+.       if \\n[float*with-table] \
+.          if !\\n[tbl*have-header] .ev
 .       ev
-.       if ((\\n[dn]-\\n[.v])>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
-.          ie address@hidden \{\
-.             rs
-.             sp
-.          \}
+.       if \\n[tbl*boxed] .nr dn +.65v
+.       if (\\n[dn]>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
+.          ie address@hidden \
+.             if !\\n[tbl*boxed] .rs
 .          el \{\
 .             if !\\n[defer] .nr defer 0 1
 .             rn FLOAT*DIV FLOAT*DIV:\\n+[defer]
+.             if \\n[float-span] \
+.                if !\\n[tbl*boxed] .rnn float-span float-span:\\n[defer]
+.             if \\n[float*with-tbl] \{\
+.                rr float*with-tbl
+.                ie \\n[tbl*boxed] \{\
+.                   ds float*type:\\n[defer] boxed
+.                   rr float-span
+.                \}
+.                el .ds float*type:\\n[defer] table
+.                if !'\\*[tbl*center]'' .nr float*tbl-center:\\n[defer] 1
+.                rn tbl*header-div tbl*header-div:\\n[defer]
+.                rm tbl*center
+.             \}
 .             if \\n[D-float] .nr D-float:\\n[defer] \\n[D-float]
 .             nr float-depth:\\n[defer] \\n[dn]
 .             if \\n[#FORCE] \{\
@@ -15904,15 +16032,36 @@
 .          \}
 .       \}
 .       sp 0\\*[float-adj:top]\\*[float-adj]
-.       if \\n[boxed-table] .sp 1-.35v
+.       if \\n[float*with-tbl] \{\
+.          ie \\n[tbl*boxed] \{\
+.             if address@hidden .sp .65v
+.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.             if !\\n[#FN_DEPTH] \
+.                ch FN_OVERFLOW_TRAP 
-\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
+.          \}
+.          el .sp
+.       \}
 .       if \\n[.u] .nr #RESTORE_FILL 1
 .       nf
+.       if address@hidden \{\
+.          nr no-adjust 1
+.          rr @TOP
+.          nop
+.       \}
 .       FLOAT*DIV
-.       if \\n[boxed-table] \{\
+.       rm tbl*header-div
+.       if \\n[float*with-tbl] \{\
+.          ie \\n[tbl*boxed] \{\
 .          if \\n[dn]=\\n[bx-tbl-depth] .sp .35v
-.          rr boxed-table
+.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.             rr tbl*boxed
 .          rr bx-tbl-depth
 .       \}
+.          el .if '\\*[tbl*label]'' .sp
+.          rr float*with-tbl
+.          rm tbl*center
+.       \}
 .       if \\n[D-float] \{\
 .          sp -\\n[dn]u+\\n[#DOC_LEAD]u+\\n[D-float]u
 .       \}
@@ -15920,19 +16069,14 @@
 .          fi
 .          rr #RESTORE_FILL
 .       \}
-.       if \\n[broken*at*float] \{\
-.          if !\\n[defer] \{\
-.             sp -\\n[.v]u
-.             rr broken*at*float
-.          \}
-.       \}
 .       rm FLOAT*DIV
-.       sp 0\\*[float-adj:bottom]\\*[float-adj]
+.       if !\\n[no-adjust] .sp 0\\*[float-adj:bottom]\\*[float-adj]
 .       SHIM
-.       rr D-float
 .       rm float-adj
+.       rm no-adjust
 .       rm float-adj:top
 .       rm float-adj:bottom
+.       rr D-float
 .       rr #FORCE
 .    \}
 .END
@@ -15952,6 +16096,7 @@
 \#
 .MAC address@hidden END \" Trap-invoked after first line of text on a new page
 .    rr @TOP
+.    if \\n[.vpt]=0 .vpt
 .END
 \#
 .MAC TRAPS END
@@ -15966,8 +16111,7 @@
 .\" Plant header trap
 .       wh 0 HEADER
 .    \}
-.\" Adjust lead so last line of text falls on B_MARGIN,...
-.    ie \\n[#ADJ_DOC_LEAD]=1 \{\
+.\" Adjust lead so last line of text falls on B_MARGIN
 .       nr #LINES_PER_PAGE 0 1
 .       nr #DOC_LEAD_ADJ 0 1
 .       nr #DEPTH_TO_B_MARGIN 
\\n[#PAGE_LENGTH]-\\n[#ORIGINAL_B_MARGIN]-\\n[#DOC_LEAD]
@@ -15991,22 +16135,8 @@
 .\" Set #B_MARGIN to 1 machine unit lower on the page than #VISUAL_B_MARGIN
 .       nr #B_MARGIN \\n[#B_MARGIN]+(\\n[#FOOTER_DIFF]-1)
 .\" Set the FN_OVERFLOW_TRAP position
-.       nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\n[#FN_LEAD]
+.       nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]-\\n[#FN_LEAD]
 .       if \\n[#PRINT_STYLE]=1 .nr #FN_OVERFLOW_TRAP_POS 
\\n[#ORIGINAL_B_MARGIN]u
-.    \}
-.\" ...or calculate new B_MARGIN based on # of lines (at #DOC_LEAD) that fit
-.\" on the page.
-.    el \{\
-.       nr #LINES_PER_PAGE 0 1
-.       nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#B_MARGIN]
-.       while 
\\n[#T_MARGIN]+(\\n[#DOC_LEAD]*\\n+[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN] 
\{\
-.
-.       \}
-.       nr #VISUAL_B_MARGIN 
\\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD]-\\n[#DOC_LEAD])
-.       nr #FOOTER_DIFF 
(\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n[#VISUAL_B_MARGIN]
-.       nr #B_MARGIN \\n[#B_MARGIN]+(\\n[#FOOTER_DIFF]-1)
-.       nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\n[#FN_LEAD]
-.    \}
 .\" Set footer and footnote overflow traps
 .    if !\\n[#NO_TRAP_RESET] \{\
 .       nr #FN_COUNT 0 1
@@ -16777,61 +16907,208 @@
 .nr tbl*have-header 0
 .ds T&
 \#
-\# Boxed tables in floats don't play nice with vertical spacing,
-\# hence the BOXED arg.  Compensation is applied in FLOAT.
-\# 'H' arg starts a multi-page table with a repeated header.
-\#
 .MAC TS END
-.    nr #TABLE 1
-.    ie '\\n[.z]'FLOAT*DIV' \{\
-.       if '\\$1'BOXED' \
-.          if !\\n[.d] .nr boxed-table 1
+.    br
+.    rr tbl*have-header
+.    if '\\n[.z]'FLOAT*DIV' .nr float*with-tbl 1 \" Removed in FLOAT
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       if \\n[.t]=1 \
+.          if address@hidden .NEWPAGE
 .    \}
-.    el \{\
-.       if '\\$1'H' \{\
-.          nr tbl*have-header 1
-.          sp .5v
-.          ev table
+.    rr tbl*boxed
+.    rm tbl*label
+.    nr #ARGS  0 1
+.    nr #COUNT 4
+.    while \\n+[#ARGS]<=\\n[#COUNT] \{\
+.      if '\\$1'H'      .nr tbl*have-header 1
+.      if '\\$1'BOXED'  .nr tbl*boxed 1
+.      if '\\$1'CENTER' .ds tbl*center \\$1
+.      if '\\$1'NEEDS'  .nr tbl*needs \\$2
+.      shift
+.    \}
+.    if !\\n[tbl*needs] .nr tbl*needs 1
+.    if address@hidden \{\
+.       if !'\\n[.z]'FLOAT*DIV' \{\
+.          rr @TOP
+.          vpt 0
+.          rs
+.          nop \&
+.          sp |\\n[#T_MARGIN]u-1v
+.          vpt
+.       \}
+.    \}
+.    nr tbl*move-footer-trap 1
+.    nr tbl*move-footer \\n[#VARIABLE_FOOTER_POS]-\\n[#DOC_LEAD]
+.    nr tbl*move-fn-overflow-trap 1
+.    nr tbl*move-fn-overflow \\n[#FN_OVERFLOW_TRAP_POS]-\\n[#DOC_LEAD]
+.    ch FOOTER \\n[tbl*move-footer]u
+.    if !\\n[#FN_DEPTH] .ch FN_OVERFLOW_TRAP -\\n[tbl*move-fn-overflow]u
+.    if !'\\n[.z]'FLOAT*DIV' .sp
+.    substring tbl*center 0 0
+.    if '\\*[tbl*center]'C' .nr tbl*center-label 1
+.    if \\n[tbl*have-header] \{\
+.       ev table-header
 .          evc 0
 .          di tbl*header-div
 .       \}
-.    \}
 .END
 \#
 .MAC TH END
 .    ie '\\n[.z]'tbl*header-div' \{\
 .       nr T. 0
 .       T#
-.       br
 .       di
 .       ev
+.       if !'\\n[.z]'FLOAT*DIV' \{\
+.          ie !'\\n[tbl*boxed]'' .ne \\n[dn]u+\\n[tbl*needs]
+.          el .ne \\n[dn]u+2p+\\n[tbl*needs]
+.       \}
 .       ie (\\n[dn]-\\n[.v])>\\n[.t] \{\
 .          if address@hidden address@hidden ridiculously long table header
-.          address@hidden \\n[dn]
 .          tbl*print-header
 .       \}
 .       el \{\
 .          nr tbl*header-ht \\n[dn]
-.          address@hidden \\n[dn]u+1v
 .          tbl*print-header
 .       \}
 .    \}
 .    el address@hidden .TH without .TS H
+.\" When centering a boxed table inside a float, .T# won't place
+.\" vertical rules in the correct horizontal position unless .ll is
+.\" given a nominal value (can be anything) and an indent is set
+.\" manually.
+.    if '\\n[.z]'FLOAT*DIV' \{\
+.       if !'\\*[tbl*center]'' \{\
+.          if \\n[tbl*boxed] \{\
+.             nr float*ll \\n[.l]
+.             ll 0
+.             in \\n[float*ll]u-\\n[TW]u/2u
+.          \}
+.       \}
+.    \}
 .END
 \#
 .MAC TE END
-.    if !'\\$*'' \{\
-.       if !'\\$3'' .sp \\$3
-.       if !'\\$2'' .QUAD \\$2
+.    ev tbl*end \" Needed because of .ad changes
+.    evc 0
+.    nf
 .       ie '\\$1'NO_SHIM' .nr tbl*no-shim 1
-.       el .PRINT \\$1
+.    el .ds tbl*label \\$1
+.    shift
+.    ie \B'\\$1' \{\
+.       ds tbl*user-add-space \\$1
+.       nr tbl*left-label-on-table 1
+.       shift
+.       if !'\\$1'NO_SHIM' \{\
+.          TBL*GET_QUAD \\$1
+.          shift
+.       \}
+.    \}
+.    el \{\
+.       if !'\\$1'NO_SHIM' \{\
+.          ie !'\\$1'' \{\
+.             TBL*GET_QUAD \\$1
+.             shift
+.             if \B'\\$1' \{\
+.                ds tbl*user-add-space \\$1
+.                nr tbl*left-label-on-table 1
+.             \}
 .    \}
+.          el .nr tbl*left-label-on-table 1
+.       shift
+.    \}
+.    if '\\$1'NO_SHIM' .nr tbl*no-shim 1
+.    if \\n[.t]<\\n[.v] \{\
+.       nr tbl*label-warning 1
+.       if d tbl*header-div .rm tbl*header-div
+.    \}
+.    rr tbl*move-footer-trap
+.    rr tbl*move-footer
+.    rr tbl*move-fn-overflow-trap
+.    rr tbl*move-fn-overflow
+.    ie !\\n[tbl*center-label] \{\
+.       if \\n[tbl*center-label-on-table] .ll \\n[TW]u
+.       if \\n[tbl*right-label-on-table] .ll \\n[TW]u
+.    \}
+.    el \{\
+.       if \\n[tbl*left-label-on-table] .in \\n[.l]u-\\n[TW]u/2u
+.       if \\n[tbl*center-label-on-table] \
+.          if \\n[.i] .in 0
+.       if \\n[tbl*right-label-on-table] .ll -((\\n[.l]u-\\n[TW]u)/2u)
+.    \}
+.    SIZESPECS
+.    if !'\\*[tbl*label]'' \{\
+.       ie \\n[tbl*label-warning] \{\
+.          tm1 "[mom]: '\\n[.F]', line \\n[.c]: Insufficient room for table 
caption, output page \\n[#PAGENUMBER].
+.          tm1 "        Skipping caption, but continuing to process.
+.          NEWPAGE
+.       \}
+.       el \{\
+.          ie !'\\*[tbl*user-add-space]'' .sp \\*[tbl*user-add-space]
+.          el .sp \\n[#CAP_HEIGHT]u/4u
+.          PRINT \\*[tbl*label]
+.          br
+.       \}
+.    \}
+.    if \\n[tbl*boxed] \
+.       if '\\*[tbl*label]'' .sp
+.    ll
 .    if '\\n[.z]'FLOAT*DIV' .nr bx-tbl-depth \\n[.d]
-.    if '\\n[.z]'tbl*header-div' address@hidden .TS H but no .TH before .TE
-.    nr tbl*have-header 0
-.    rr #TABLE
-.    if !\\n[tbl*no-shim] .SHIM
+.    if '\\n[.z]'tbl*header-div' \{\
+.       @error .TS with 'H' flag but no corresponding .TH
+.       ab Aborting.
+.    \}
+.    ev
+.    if !\\n[tbl*no-shim] \{\
+.       if !'\\n[.z]'FLOAT*DIV' \{\
+.          nr tbl*before-shim \\n[nl]
+.          SHIM
+.          nr tbl*after-shim \\n[nl]
+.          if \\n[tbl*before-shim]=\\n[tbl*after-shim] .sp
+.       \}
+.    \}
+.    TBL*CLEANUP
+.    ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.END
+\#
+.MAC TBL*GET_QUAD END
+.    QUAD \\$1
+.    ds tbl*label-quad \\$1
+.    substring tbl*label-quad 0 0
+.    if '\\*[tbl*label-quad]'L' .nr tbl*left-label-on-table 1
+.    if '\\*[tbl*label-quad]'C' .nr tbl*center-label-on-table 1
+.    if '\\*[tbl*label-quad]'R' .nr tbl*right-label-on-table 1
+.END
+\#
+.MAC TBL*CLEANUP END
+.    rr tbl*before-shim
+.    rr tbl*after-shim
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       rm tbl*center
+.       if !'\\n[.z]'FLOAT*DIV' .rm tbl*header-div
+.    \}
 .    rr tbl*no-shim
+.    rm tbl*user-add-space
+.    rm tbl*label-quad
+.    rr tbl*center-label
+.    rr tbl*left-label-on-table
+.    rr tbl*center-label-on-table
+.    rr tbl*right-label-on-table
+.    rr tbl*label-warning
+.END
+\#
+.MAC address@hidden END
+.    if \\n[tbl*have-header] \{\
+.       if !\\n[.ne] \{\
+.          rr @TOP
+.          ch address@hidden
+.          tbl*print-header
+.       \}
+.    \}
+.    if \\n[tbl*move-footer-trap] \
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.    if \\n[tbl*move-fn-overflow-trap] \
+.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
 .END
 \#
 .MAC tbl*print-header END
@@ -16839,29 +17116,23 @@
 .       nf
 .       nr fill 1
 .    \}
-.    tbl*header-div
-.    if fill=1 \{\
-.       fi
-.       rr fill
+.    ie d tbl*header-div:\\n[loop-count] \{\
+.       tbl*header-div:\\n[loop-count]
 .    \}
+.    el .tbl*header-div
+.    if '\\n[.z]'FLOAT*DIV' \
+.       if !'\\*[tbl*center]'' .ce 1000
 .    mk #T
 .END
 \#
-.MAC address@hidden END
-.    ie \\n[tbl*have-header] \{\
-.       tbl*print-header
-.    \}
-.    el .if \\n[#TABLE] \{\
-.       rs
-.       sp
-.    \}
+.MAC address@hidden END
+.\" Not currently used
 .END
 \#
-.MAC address@hidden END
-.    if \\n[tbl*have-header] \{\
-.       nr T. 1
-.       T#
-.    \}
+.MAC tbl*float-warning END
+.    tm1 "[mom]: Table in FLOAT, output page \\n[#PAGENUMBER], exceeds page 
vertical limits.
+.    tm1 "       Multipage tables cannot be contained within floats.
+.    ab Aborting.
 .END
 \#
 .MAC address@hidden END \" Move vertically until there is enough space for \$1
@@ -17016,7 +17287,7 @@
 \# versions of the definitions found in the refer module of s.tmac.
 \#
 .de @error
-.tm \\n[.F]:\\n[.c]: macro error: \\$*
+.tm [mom]: '\\n[.F]', line \\n[.c]: \\$*
 ..
 \#
 \# Underlining unavoidably turns off sentence spacing.
@@ -18080,7 +18351,8 @@
 .  nr MN-right 0
 .  nr MN-active 0
 .  rr MN-shifted
-.  ch FOOTER -\\n[#B_MARGIN]u
+\#.  ch FOOTER -\\n[#B_MARGIN]u
+.  ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
 ..
 \#
 \# MNbottom-left
@@ -18326,7 +18598,6 @@
 .          el .nr LEVEL_REQ \\n[CURRENT_LEVEL]
 .       \}
 .       ds PDF_TX \\$*
-\#.       asciify PDF_TX
 .       pdfmomclean PDF_TX
 .\" .       ev protect
 .       nr PDF_LEV (\\n[LEVEL_REQ]*\\n[#PDF_BOOKMARKS_OPEN])
@@ -18357,7 +18628,6 @@
 .MAC PDF_TITLE END
 .    ds pdftitle \\$*
 .    pdfmomclean pdftitle
-\#.    pdfinfo /Title \\*[pdftitle]
 .    nop \!x X ps:exec [/Title (\\*[pdftitle]) /DOCINFO pdfmark
 .END
 \#

Index: examples/mom-pdf.mom
===================================================================
RCS file: /sources/groff/groff/contrib/mom/examples/mom-pdf.mom,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- examples/mom-pdf.mom        29 Jan 2013 05:02:45 -0000      1.2
+++ examples/mom-pdf.mom        30 Oct 2013 19:15:10 -0000      1.3
@@ -1,3 +1,4 @@
+.PAPER     A4
 .\" Reference macros (metadata)
 .TITLE     "Producing PDFs" "with groff and mom"
 .PDF_TITLE "\*[$TITLE]
@@ -28,7 +29,6 @@
 .HEADER_LEFT "James, Schaffter"
 .\" Page, style, formatting
 .PRINTSTYLE TYPESET
-.PAPER     A4
 .L_MARGIN   2.5c
 .R_MARGIN   2.5c
 .B_MARGIN   2.5c
@@ -106,7 +106,7 @@
 .TOC_ENTRY_STYLE 2 FONT I
 .TOC_LEAD 14
 .\"
-.DOCHEADER_ADVANCE 4.5c \" Begin this distance down from top of page
+.DOCHEADER_ADVANCE 5c \" Begin this distance down from top of page
 .\"
 .START
 .\"
@@ -184,7 +184,7 @@
 Furthermore, \*[cod]NAMED\|<id>\*[codx] stores the text of the
 heading for use later on when linking to it (see
 .PDF_LINK internal SUFFIX ). +
-If headings are being numbered, the heading number is included.
+If headings are being numbered, the heading number is prepended.
 .HEADING 2 NAMED target  "Creating destination points at arbitrary locations"
 .PP
 Any part of a document can be a link destination, not just headings.
@@ -245,11 +245,13 @@
 destination address.
 .PP2
 The format of the macro to create external links is similar to the
-one for creating internal links links links.
+one for creating internal links:
 .COD "\&.PDF_WWW_LINK <url> [PREFIX <text>] [SUFFIX <text>] [\[dq]<hotlink 
text>\[dq]]"
 \*[cod]<url>\*[codx] is any valid URL, usually a web address;
 \*[cod]PREFIX\|<text>\*[codx] and \*[cod]SUFFIX\|<text>\*[codx] have
-exactly the same meaning.
+exactly the same meaning, as does \*[cod]<hotlink text>\*[codx],
+which furthermore accepts the same expandos, \*[cod]\[dq]+\[dq]\*[codx] and
+\*[cod]\[dq]*\[dq]\*[codx].
 .PP2
 .RW .1
 If no hotlink text is given, then \*[cod]<url>\*[codx] is
@@ -509,12 +511,11 @@
 do not require a corresponding \[-P-p<papersize>] option on the
 command line.  It is even possible to create documents with
 unequal-sized pages.
-.NO_SHIM
 .HEADING 2 NAMED pdf-diff \
 "Differences between pdfmom and pdfroff"
 .PP
 Several features described in this manual are not available when
-using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff] or
+using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff], or
 \[groff]\~\[-Tps]\~\[-mpdfmark].
 .SP .25v
 .QUAD LEFT

Index: momdoc/docelement.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/docelement.html,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- momdoc/docelement.html      7 Jun 2013 15:19:58 -0000       1.41
+++ momdoc/docelement.html      30 Oct 2013 19:15:10 -0000      1.42
@@ -3856,7 +3856,7 @@
 </div>
 
 <p class="requires">
-&bull;&nbsp;<kbd>&lt;indent value&gt;</kbd> requires a <a 
href="definitions.html#unitofmeasure">unit of measure</a>
+&bull;&nbsp;<kbd><span style="font-style: normal">&lt;indent 
value&gt;</span></kbd> requires a <a href="definitions.html#unitofmeasure">unit 
of measure</a>
 <br/>
 See <span style="font-style: normal"><a href="#footnote-note">HYPER-IMPORTANT 
NOTE</a></span>.
 </p>

Index: momdoc/docprocessing.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/docprocessing.html,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- momdoc/docprocessing.html   13 Sep 2013 20:06:36 -0000      1.44
+++ momdoc/docprocessing.html   30 Oct 2013 19:15:10 -0000      1.45
@@ -96,14 +96,14 @@
   </ul></li>
 </ul>
 </div>
-<div class="mini-toc-col-2" style="margin-top: -.5em;">
+<div class="mini-toc-col-2" style="margin-top: -1em;">
 <br/>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#doc-lead-adjust"><b>Adjust linespacing to fill pages</b></a>
   <ul class="toc-docproc">
     <li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
     <li><a href="#shim">SHIM</a> &ndash; get document leading back on track
-    <ul>
+    <ul class="toc-docproc">
       <li><a href="#automatic-shimming">Automatic shimming (headings, 
etc)</a></li>
     </ul></li>
   </ul></li>
@@ -121,15 +121,16 @@
     <li><a href="#columns">COLUMNS</a></li>
     <li><a href="#breaking-columns">Breaking columns manually</a>
     <ul class="toc-docproc">
-      <li><a href="#col-next">COL_NEXT</a></li>
-      <li><a href="#col-break">COL_BREAK</a></li>
+      <li><a href="#col-next">COL_NEXT</a> and <a 
href="#col-break">COL_BREAK</a></li>
     </ul></li>
   </ul></li>
 </ul>
 <h3 class="toc toc-docproc-header"><a class="header-link" 
href="#style-after-start">Changing basic type and formatting<br/><span 
style="display: block; margin-top: -.3em;">parameters after 
START</span></a></h3>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#behaviour"><b>Behaviour of the typesetting macros during 
document processing</b></a></li>
-  <li><a href="docprocessing.html#index-doc-param"><b>Post-START global style 
change macros</b></a>
+  <li><a href="docprocessing.html#intro-doc-param"><b>Changing document-wide 
style parameters after START</b></a>
+  <ul class="toc-docproc">
+    <li><a href="docprocessing.html#index-doc-param">Post-START global style 
change macros</a>
   <ul class="toc-docproc">
     <li><a href="#doc-left-margin">DOC_LEFT_MARGIN</a></li>
     <li><a href="#doc-right-margin">DOC_RIGHT_MARGIN</a></li>
@@ -140,12 +141,13 @@
     <li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
     <li><a href="#doc-quad">DOC_QUAD</a></li>
   </ul></li>
+  </ul></li>
 </ul>
 <h3 class="toc toc-docproc-header"><a class="header-link" 
href="#terminating">Terminating a document</a></h3>
 </div>
 </div>
 
-<div class="rule-medium" style="clear: both;"><hr/></div>
+<div class="rule-short"><hr/></div>
 
 <!-- ==================================================================== -->
 
@@ -368,7 +370,7 @@
 <ul>
   <li><i>before</i> headings</li>
   <li><i>around</i> quotes and blockquotes</li>
-  <li><i>after</i> PDF images and floats</li>
+  <li><i>after</i> PDF images, floats, and tables</li>
 </ul>
 
 <p>
@@ -391,8 +393,9 @@
 <a href="docelement.html#quote">QUOTE</a>,
 <a href="docelement.html#blockquote">BLOCKQUOTE</a>,
 <a href="images.html#pdf-image">PDF_IMAGE</a>
-or
 <a href="images.html#float">FLOAT</a>.
+or
+<a href="images.html#ts">TS</a>.
 </p>
 
 <div class="box-tip">
@@ -1735,47 +1738,46 @@
 
 <p class="tip-bottom">
 <span class="important">Just as important:</span>
-PRINTSTYLE <b>must precede any and all page and style parameters
-associated with a document.</b>  This applies primarily to, but is by
-no means restricted to, PRINTSTYLE <kbd>TYPESET</kbd>.   PRINTSTYLE
-sets up complete templates that include default papersize, margins,
-family, fonts, point sizes, and so on.  Therefore, changes to any
-aspect of document style must come afterwards.
-</p>
-</div>
-
-<p>
-<kbd>TYPESET</kbd>, as the argument implies, typesets
-documents (by default in Times Roman; see
-<a href="#typeset-defaults">TYPESET defaults</a>).
-You have full access to all the
-<a href="typesetting.html#macros-typesetting">typesetting macros</a>
-as well as the
-<a href="definitions.html#style-control">style control macros</a>
-of document processing.
-</p>
-
-<p>
-As mentioned above, PRINTSTYLE <kbd>TYPESET</kbd> must come before
-any changes to mom&#8217;s default typographic settings.  For
-example,
+PRINTSTYLE <b>must precede any and all page and style
+parameters associated with a document</b> with the exception of
+<kbd>PAPER</kbd>, <kbd>PAGEWIDTH</kbd>, and/or
+<kbd>PAGELENGTH</kbd>, which should be placed at the top of your
+file.  PRINTSTYLE sets up complete templates that include default
+margins, family, fonts, point sizes, and so on.  Therefore, changes
+to any aspect of document style must come afterwards.  For example,
 <br/>
 <span class="pre-in-pp">
   .PAPER A4
   .LS 14
+  .QUAD LEFT
   .PRINTSTYLE TYPESET
 </span>
-will not changes mom&#8217;s default paper size to A4,
-nor her default document leading 14 points, whereas
+will not change mom&#8217;s default document leading to 14 points,
+nor the default justification style (fully justified) to left
+justified, whereas
 <br/>
 <span class="pre-in-pp">
-  .PRINTSTYLE TYPESET
   .PAPER A4
+  .PRINTSTYLE TYPESET
   .LS 14
+  .QUAD LEFT
 </span>
 will.
 </p>
 
+</div>
+
+<p>
+<kbd>TYPESET</kbd>, as the argument implies, typesets
+documents (by default in Times Roman; see
+<a href="#typeset-defaults">TYPESET defaults</a>).
+You have full access to all the
+<a href="typesetting.html#macros-typesetting">typesetting macros</a>
+as well as the
+<a href="definitions.html#style-control">style control macros</a>
+of document processing.
+</p>
+
 <p>
 With <kbd>TYPEWRITE</kbd>, mom does her best to reproduce the look
 and feel of typewritten, double-spaced copy (see
@@ -2177,11 +2179,10 @@
 
 <div class="box-tip">
 <p class="tip">
-<span class="note">Note:</span>
-Don&#8217;t use the macros listed in
+<span class="important">Important:</span>
+Do not use the macros listed in
 <a href="#doc-param-macros">Changing document-wide typesetting parameters 
after START</a>
-prior to START; they are exclusively for use
-afterwards.
+prior to START; they are exclusively for use afterwards.
 </p>
 </div>
 
@@ -2288,10 +2289,11 @@
 control macros.
 <br/>
 <span class="pre-in-pp">
-  .HEAD_FAMILY    H
-  .HEAD_FONT      BI
-  .HEAD_QUAD      L
-  .HEAD_UNDERLINE OFF
+  .HEADING_STYLE 1 \
+  FAMILY    H \
+  FONT      BI \
+  QUAD      L \
+  NO_UNDERSCORE
 </span>
 Then, in the preliminary document set-up section of your main file,
 you&#8217;d include the style sheet, or template, like this:
@@ -3294,12 +3296,28 @@
 
                Using LS to temporarily change leading within
                a document will almost certainly result in a
-               bottom margin that doesn&#8217;t align with
-               the bottom margin of subsequent pages.  You&#8217;ll
+               bottom margin that doesn&#8217;t align with the
+               bottom margin of subsequent pages.  You&#8217;ll
                need to use the SHIM macro to get mom back on
                track when you&#8217;re ready to return to the
                document&#8217;s default leading.
 
+
+  AUTOLEAD   &bull;Invoked before START, sets the overall document
+              leading as a function of the overall document
+              point size (ie the point size used in paragraphs);
+              subsequently disabled after START, except for calls
+              to DOC_PT_SIZE
+              
+             &bull;DOC_LEAD before DOC_PT_SIZE cancels the AUTOLEAD
+              set before START
+
+             &bull;Invoked after START, remains in effect for all
+              subsequent point size changes made with PT_SIZE,
+              but does not affect the leading of the document
+              element tags (eg HEADING, PP, QUOTE...), or calls
+              to DOC_PT_SIZE
+
   QUAD        &bull;Changes quad for the duration of the
                current tag only.  As soon as another document
                element tag is entered, the quad reverts to
@@ -3414,19 +3432,35 @@
 
 <!-- *** -->
 
-<h2 id="intro-doc-param" class="macro-group">Changing basic type and 
formatting parameters after START</h2>
+<h2 id="intro-doc-param" class="macro-group">Changing document-wide style 
parameters after START</h2>
 
 <p>
-In the normal course of things, you establish the basic type
+In the normal course of things, you establish the basic type style
 parameters of a document prior to invoking
 <a href="#start">START</a>,
 using the
 <a href="typesetting.html#macros-typesetting">typesetting macros</a>
-(<b>L_MARGIN, FAMILY, PT_SIZE, LS,</b> etc).  After
-START, you <i>must</i> use the following macros to make
-global changes to the basic type parameters of a document.
+(<b>L_MARGIN, FAMILY, PT_SIZE, LS,</b> etc).  After START, you must
+use the following macros if you wish to make global changes to the
+basic type style parameters, for example changing the overall leading or
+the justification style.
 </p>
 
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span>
+Because these macros globally update the chosen parameter, they
+should only be used immediately prior to
+<a href="rectoverso.html#collate">COLLATE</a>
+or, if an occasional effect is desired,
+<a href="typesetting.html#newpage">NEWPAGE</a>.
+<a href="#doc-pt-size">DOC_PT_SIZE</a>,
+for example, updates the point size of every page element, including
+headers, footers, page numbers, and so on, which is almost certainly
+not what you want in the middle of a page.
+</p>
+</div>
+
 <div class="macro-list-container">
 <h3 id="index-doc-param" class="macro-list">Post-START global style change 
macros</h3>
 <ul class="macro-list">
@@ -3461,7 +3495,12 @@
   <li>the argument is the same as for
       <a href="typesetting.html#l-margin">L_MARGIN</a>
   </li>
-  <li>changes all left margins to the new value</li>
+  <li>changes all left margins, including headers, footers, and page
+      numbers to the new value
+  </li>
+  <li>any document elements that use a left indent calculate
+      the indent from the new value
+  </li>
   <li>the line length remains the same (ie the right margin
       shifts when you change the left margin)
   </li>
@@ -3487,19 +3526,10 @@
   <li>the argument is the same as for
       <a href="typesetting.html#r-margin">R_MARGIN</a>
   </li>
-  <li>changes all right margins, including
-      <a href="definitions.html#docheader">docheaders</a>,
-      headers (or footers) and page numbering to the new value;
-      for changing the right margin of
-      <a href="definitions.html#running">running text</a>
-      only, use
-      <a href="typesetting.html#r-margin">R_MARGIN</a>
-      (see
-      <a href="#behaviour">typesetting macros during
-      document processing</a>,
-      entry for R_MARGIN)
+  <li>changes all right margins, including headers, footers, and
+      page numbers to the new value;
   </li>
-  <li>all mom commands that include a right indent calculate
+  <li>any document elements that use a right indent calculate
       the indent from the new value
   </li>
 </ul>
@@ -3527,13 +3557,6 @@
   <li>exactly equivalent to changing the right margin with
       DOC_RIGHT_MARGIN (see
       <a href="#doc-right-margin">above</a>);
-      for changing the line length of
-      <a href="definitions.html#running">running text</a>
-      only, use
-      <a href="typesetting.html#linelength">LL</a>
-      (see
-      <a href="#behaviour">typesetting macros during document processing</a>,
-      entry for LL)
   </li>
 </ul>
 
@@ -3603,6 +3626,12 @@
       the pertinent document element for instructions on
       how to do this)
   </li>
+  <li>if
+      <a href="typesetting.html#autolead">AUTOLEAD</a>
+      was invoked before START; the value of AUTOLEAD will be used
+      to update the leading of all document element tags except
+      FOOTNOTE and EPIGRAPH
+  </li>
 </ul>
 
 <!-- -DOC_LEAD- -->
@@ -3641,21 +3670,13 @@
       leading adjustment as explained in
       <a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a>
   </li>
+  <li>if
+      <a href="typesetting.html#autolead">AUTOLEAD</a>
+      was invoked before START; the value of that AUTOLEAD will be
+      cancelled
+  </li>
 </ul>
 
-<div class="box-important">
-<p class="tip">
-<span class="important">Important:</span>
-Do not use DOC_LEAD in the middle of a page!  It should always and
-only be invoked immediately prior to a new page, like this:
-<br/>
-<span class="pre-in-pp">
-  .DOC_LEAD &lt;new value&gt;
-  .NEWPAGE
-</span>
-</p>
-</div>
-
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>

Index: momdoc/headfootpage.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/headfootpage.html,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- momdoc/headfootpage.html    29 Jan 2013 05:02:46 -0000      1.25
+++ momdoc/headfootpage.html    30 Oct 2013 19:15:10 -0000      1.26
@@ -102,7 +102,7 @@
 <h3 class="toc toc-docproc-header" style="margin-top: .75em;"><a 
class="header-link" href="#pagination-intro">Pagination</a></h3>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#index-pagination">Pagination macros</a></li>
-  <li><a href="#index-pagination-control">Pagination control macros and 
defaults</a></li>
+  <li><a href="#index-paginate-control">Pagination control macros and 
defaults</a></li>
 </ul>
 <h3 class="toc toc-docproc-header"><a class="header-link" 
href="#blank-pages">Inserting blank pages into a document</a></h3>
 
@@ -336,7 +336,7 @@
 numbers, whether at the top or the bottom of the page, is managed
 exactly as if the page numbers were headers (or footers), and are
 controlled by the same macros.  See
-<a href="#index-pagination-control">Pagination control</a>.
+<a href="#index-paginate-control">Pagination control</a>.
 </p>
 
 <div class="rule-short"><hr/></div>
@@ -2057,7 +2057,7 @@
 <!-- -PAGINATE_CONTROL- -->
 
 <div class="macro-list-container">
-<h3 id="index-pagination-control" class="macro-list">Pagination control macros 
and defaults</h3>
+<h3 id="index-paginate-control" class="macro-list">Pagination control macros 
and defaults</h3>
 
 <ol style="margin-top: -1.5em; padding-bottom: 6px;">
   <li><a href="#paginate-general">Family/font/size/colour</a></li>
@@ -2108,6 +2108,13 @@
 </span>
 </p>
 
+<div id="pagenum-pos-note" class="box-tip" style="margin-top: 1em;">
+<p class="tip">
+<span class="note">Note:</span>
+HEADERS must be OFF for PAGENUM_POS TOP to work.
+</p>
+</div>
+
 <h4 id="pagenum-hyphens" class="docs" style="margin-top: -1em;">3. Enclose 
page numbers with hyphens (on or off)</h4>
 
 <div class="box-macro-args" style="margin-top: 1em;">

Index: momdoc/images.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/images.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- momdoc/images.html  17 Sep 2013 16:20:17 -0000      1.5
+++ momdoc/images.html  30 Oct 2013 19:15:10 -0000      1.6
@@ -21,7 +21,7 @@
 
 <head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
-  <title>Mom -- Graphics, tbl support, and floats</title>
+  <title>Mom -- Graphics, floats, and preprocessor support</title>
   <link rel="stylesheet" type="text/css" href="stylesheet.css" />
 </head>
 
@@ -39,7 +39,7 @@
 </tr>
 </table>
 
-<h1 class="docs">Graphics, tbl support, and floats</h1>
+<h1 class="docs">Graphics, floats, and preprocessor support</h1>
 
 <div style="width: 55%; margin: auto;">
 <ul class="no-enumerator" style="margin-left: -1em;">
@@ -51,7 +51,15 @@
   </ul></li>
   <li><a href="#pdf-image">The PDF_IMAGE macro</a></li>
   <li><a href="#pspic">The PSPIC macro</a></li>
-  <li><a href="#tbl">tbl support</a></li>
+       <li><a href="#preprocessor-support">Preprocessor support</a>
+  <ul style="margin-left: -.5em; list-style-type: disc;">
+       <li><a href="#tbl">tbl</a>
+               <ul style="margin-left: -1.25em;"><li><a href="#ts-te">.TS / 
.TH / .TE macros and arguments</a></li>
+               </ul></li>
+       <li><a href="#pic">pic</a></li>
+       <li><a href="#eqn">eqn</a></li>
+       <li><a href="#refer">refer</a></li>
+  </ul></li>
   <li><a href="#floats-intro">Introduction to floats</a></li>
   <li><a href="#float">The FLOAT macro</a></li>
 </ul>
@@ -296,25 +304,24 @@
 width and height of the image as you wish it to appear within the
 document.  The width and height arguments may have
 <a href="definitions.html#unitofmeasure">units of measure</a>
-attached; the default unit of measure is
-<kbd>i</kbd>.  PSPIC will scale the graphic
-uniformly in the x and y directions so that it is no more than
-<kbd>width</kbd> wide and <kbd>height</kbd> high.  By default, the
-graphic will be horizontally centred.  The <kbd>-L</kbd> and
-<kbd>-R</kbd> options cause the graphic to be left-aligned and
-right-aligned, respectively.  The <kbd>-I</kbd> option causes
-the graphic to be indented by <kbd>&lt;n&gt;</kbd>;  the default unit of
-measure is <kbd>m</kbd>
+attached; the default unit of measure is <kbd>i</kbd>.  PSPIC will
+scale the graphic uniformly in the x and y directions so that
+it is no more than <kbd>width</kbd> wide and <kbd>height</kbd>
+high.  By default, the graphic will be horizontally centred.  The
+<kbd>-L</kbd> and <kbd>-R</kbd> options cause the graphic to be
+left-aligned and right-aligned, respectively.  The <kbd>-I</kbd>
+option causes the graphic to be indented by <kbd>&lt;n&gt;</kbd>;
+the default unit of measure is <kbd>m</kbd>
 (<a href="definitions.html#em">ems</a>).
 </p>
 </div>
 
 <p>
-It is not necessary to pass PSPIC the
-<kbd>&lt;width&gt;</kbd> and <kbd>&lt;height&gt;</kbd> arguments unless
-you are scaling the image, in which case you will most likely need
-the original dimensions of the EPS image&#8217;s bounding box.
-These can be found with
+It is not necessary to pass PSPIC the <kbd>&lt;width&gt;</kbd>
+and <kbd>&lt;height&gt;</kbd> arguments unless you are scaling
+the image, in which case you will most likely need the original
+dimensions of the EPS image&#8217;s bounding box.  These can be
+found with
 <span class="pre-in-pp">
  gs -q -dBATCH -dNOPAUSE -sDEVICE=bbox &lt;image file&gt;.pdf 2&gt;&amp;1 \
  | grep "%%BoundingBox" | cut -d " " -f4,5
@@ -341,8 +348,8 @@
 Additionally, EPS images inserted into
 <a href="definitions.html#running">running text</a>
 will almost certainly disrupt the baseline placement of running
-text.  In order to get mom back on track after
-invoking <kbd>.PSPIC</kbd>, I strongly recommend using the
+text.  In order to get mom back on track after invoking
+<kbd>.PSPIC</kbd>, I strongly recommend using the
 <a href="docprocessing.html#shim">SHIM</a>
 macro so that the bottom margin of running text falls where it
 should.  Please note that with PDF_IMAGE, this is not necessary.
@@ -359,124 +366,361 @@
 
 <div class="rule-medium"><hr/></div>
 
-<h2 id="tbl" class="docs">tbl support</h2>
+<h2 id="preprocessor-support" class="docs">Preprocessor support</h2>
+
+<h3 id="tbl" class="docs">tbl support</h3>
 
 <p>
 Mom documents can include tables generated with the groff
-pre-processor, <kbd>tbl</kbd>.  <kbd>tbl</kbd> usage is beyond the
-scope of this documentation, but is covered fully in <kbd>man(1)
-tbl</kbd>.
+pre-processor, <kbd>tbl</kbd>. <kbd>tbl</kbd> usage itself is beyond
+the scope of this documentation, but is covered in the manpage
+<kbd>tbl(1)</kbd>.  You can also download a copy of
+<a href="http://plan9.bell-labs.com/10thEdMan/tbl.pdf";>Tbl - A Program to 
Format Tables</a>,
+which, in addition to providing a thorough introduction to <kbd>tbl</kbd>,
+contains some fine examples.
 </p>
 
 <p>
 Tables formatted with <kbd>tbl</kbd> begin with the macro
-<kbd>.TS</kbd>
-(<b>T</b>able <b>S</b>art)
-and end with <kbd>.TE</kbd>
-(<b>T</b>able <b>E</b>nd).
-Depending on where you want your tables output in a document, you will likely
-need to wrap your <kbd>tbl</kbd> code inside a
+<kbd>.TS</kbd> (<b>T</b>able <b>S</b>art) and end with
+<kbd>.TE</kbd> (<b>T</b>able <b>E</b>nd).  Depending on where you
+want your tables output in a document, you may need to wrap
+your <kbd>tbl</kbd> code inside a
 <a href="#floats-intro">float</a>,
-or use the <kbd>H</kbd> extension to <kbd>.TS</kbd>.  If you put
-<kbd>tbl</kbd> code inside a float, the table will be output
-immediately if it fits on the page, or defered to the top of the
-next page if it doesn&#8217;t.  If you prefer a table to begin where
-you say and span over to the next page, or if you know for certain
-your table will run to multiple pages, use <kbd>.TS H</kbd>.
+or pass the <kbd>H</kbd> argument to <kbd>.TS</kbd>.
+</p>
+
+<p>
+If you put <kbd>tbl</kbd> code inside a float, the table will be
+output immediately if it fits on the page, or deferred to the top
+of the next page if it doesn&#8217;t.  If you prefer a table to
+begin where you say and span over to the next page, or if you know
+for certain a boxed table will run to multiple pages, simply pass the
+<kbd>H</kbd> argument to <kbd>.TS</kbd>, along with a corresponding
+<a href="#th"><kbd>TH</kbd></a>.
 </p>
 
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-If you use <kbd>.TS H</kbd> to create a table that spans multiple
-pages, do not attempt to wrap the table inside a float. <kbd>.TS
-H</kbd> and <kbd>.FLOAT</kbd> are mutually exclusive. <b>FLOAT</b>
-&#8220;collects&#8221; the table and outputs it where convenient,
-whereas <kbd>.TS H</kbd> begins the table immediately and spans
-multiple pages, with a table header, if necessary.
+If you use <kbd>.TS H</kbd> to create a boxed table that spans
+multiple pages, do not attempt to wrap the table inside a float.
+For the purposes of boxed, multipage tables, <kbd>.TS H</kbd> and
+<kbd>.FLOAT</kbd> should be considered mutually exclusive.  This
+restriction is imposed by the <kbd>tbl</kbd> preprocessor itself,
+not groff or mom.
+</p>
+</div>
+
+<h4 id="tbl-placement" class="docs">tbl placement in mom docs</h4>
+
+<p>
+If you use <kbd>.TS</kbd> without the <kbd>H</kbd> argument (and
+therefore no <kbd>.TH</kbd>), tables that fit on the page are output
+in position.  If there is not enough room to output the table,
+<kbd>tbl</kbd> will abort with message instructing you to use
+<kbd>.TS H/.TH</kbd>.
+</p>
+
+<p>
+If you give <kbd>.TS</kbd> the <kbd>H</kbd> argument (with a
+corresponding <kbd>.TH</kbd>), tables will be output in position and
+span as many pages as necessary to complete output.  A table header
+will be printed at the top of each page&#8217;s table output.  In the
+event that there is not enough room to print the table header and
+at least one row of table data near the bottom of a page, mom will
+break to a new page before beginning table output, leaving a blank
+in
+<a href="definitions.html#running">running text</a>.
+</p>
+
+<p>
+Boxed tables inside
+<a href="#floats-intro">floats</a>
+are output in position if they fit on the page.  If not, they are
+deferred to the top of the next page without a break in running
+text.  Boxed tables within floats may not, however, span multiple
+pages; mom will abort with a message should a boxed table in a float
+run longer than the page.
+</p>
+
+<p>
+Unboxed tables inside floats may span multiple pages provided the
+<kbd>SPAN</kbd> argument has been given to
+<a href="#float">FLOAT</a>.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+The vertical spacing around unfloated tables may appear slightly
+unequal, especially if there are several tables on the page.  This
+is a result of
+<a href="docprocessing.html#shim">shimming</a>
+that mom applies automatically after each table.  You may
+disable shimming with <kbd>.NO_SHIM</kbd>, or by giving the
+<kbd>NO_SHIM</kbd> argument to <kbd>.TE</kbd>.  In either case, you
+will still likely want to adjust the spacing around with table with
+<a href="typesetting.html#ald">ALD</a>
+or
+<a href="typesetting.html#rld">RLD</a>.
+Tables inside floats are more easily adjusted with the
+<kbd>ADJUST</kbd> argument to
+<a href="#float">FLOAT</a>.
 </p>
 </div>
 
 <div class="macro-id-overline">
-<h3 id="ts-te" class= "macro-id">.TS/.TE</h3>
+<h3 id="ts-te" class= "macro-id">.TS / .TH / .TE</h3>
 </div>
 
 <div class="box-macro-args">
-Macro: <b>TS</b> <kbd class="macro-args">[ BOXED | H ]</kbd>
+Macro: <a href="#ts"><b>TS</b></a> <kbd class="macro-args">[ H ]  [ BOXED ]  [ 
CENTER ]  [ NEEDS ]</kbd>
 <br/>
-Macro: <b>TH</b>
+Macro: <a href="#th"><b>TH</b></a> <kbd class="macro-args">(optional, only if 
.TS H)</kbd>
 <br/>
-Macro: <b>TE</b>
+Macro: <a href="#te"><b>TE</b></a> <kbd class="macro-args">[ "caption" ] [ 
&lt;distance&gt; ] [ LEFT | CENTER | RIGHT ] [ NO_SHIM ]</kbd>
 </div>
 
 <p>
 Tables to be formatted with <kbd>tbl</kbd> begin with the macro
-<kbd>.TS</kbd> and end with <kbd>.TE</kbd>.  Formatting
-instructions, per <kbd>man tbl</kbd> come between the two macros.
+<kbd>.TS</kbd> and end with <kbd>.TE</kbd>.  Global <kbd>tbl</kbd>
+options (&#8220;flags&#8221;), formatting, and data (per
+<kbd>tbl(1)</kbd>) come between the two macros.
 <br/>
 <span class="pre-in-pp">
   .TS
-  &lt;tbl commands and data&gt;
+  &lt;tbl options, formatting, and data&gt;
   .TE
 </span>
 Tables may be wrapped inside a
 <a href="#float-intro">float</a>,
 in which case, the entire table will be output on the current page
-if it fits, or defered to the next page if it doesn&#8217;t.
+if it fits, or deferred to the next page if it doesn&#8217;t.
 <br/>
 <span class="pre-in-pp">
   .FLOAT
   .TS
-  &lt;tbl commands and data&gt;
+  &lt;tbl options, formatting, and data&gt;
   .TE
   .FLOAT OFF
 </span>
-If a table inside a float is to be boxed (ie have a frame or border
-around it), you must give the optional argument <kbd>BOXED</kbd> to
-<kbd>.TS</kbd>, as in this example:
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TS 
macro</h4>
+</div>
+
+<p>
+The <b>TS</b> macro must be invoked before entering a <kbd>tbl</kbd>
+block.  You may give as many or as few of its arguments as required,
+in any order.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'H'</h5>
+
+<p>
+With the <b>H</b> argument, a table will span as many pages as
+necessary, with or without a running header.  The placement of the
+corresponding
+<a href="#th"><kbd>.TH</kbd></a>,
+which is required whenever the <b>H</b> argument is given,
+determines what, if anything, goes in the header.  Compare the
+following:
+<span class="pre-in-pp">
+  .TS H                   .TS H
+  c s s                   c s s
+  c s s                   c s s
+  c c c                   c c c
+  n n n.                  n n n. 
+  Percent Increase        .TH
+  2002-2012               Percent Increase
+  .TH                     2002-2012
+  &lt;tbl data&gt;              &lt;tbl data&gt;
+  .TE                     .TE
+</span>
+The first example will create a table that spans multiple
+pages if necessary, with a running header (&#8220;Percent
+Increase&nbsp;/&nbsp;2002-2012&#8221;) for that table appearing at
+the top of each page until the table ends.  The second example,
+equally, may run to several pages, but without the running header.
+See
+<a href="#th"><b>TH</b></a>
+for an explanation of <kbd>.TH</kbd> placement.
+</p>
+
+<div id="h-tip" class="box-tip">
+<p class="tip">
+<span class="note">Tip:</span>
+Generally speaking, it&#8217;s a good idea to get into the habit
+of using <kbd>.TS H</kbd> all the time, since there are no
+circumstances under which it fails, whereas <kbd>.TS</kbd> without
+<kbd>H</kbd> will fail on tables that exceed the page length.
+</p>
+</div>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'BOXED'</h5>
+
+<p>
+If a table is to be boxed (ie <kbd>tbl</kbd> is given the flags
+<kbd>'box'</kbd> or <kbd>'allbox'</kbd>) you must pass the argument
+<kbd>BOXED</kbd> to <kbd>.TS</kbd>, as in this example:
 <br/>
 <span class="pre-in-pp">
-  .FLOAT
   .TS BOXED
-  allbox center;
+  allbox;
   c s s
   c c c
   n n n.
-  &lt;tbl commands and data&gt;
+  &lt;tbl data&gt;
   .TE
-  .FLOAT OFF
 </span>
-Unboxed tables inside a float require no special argument to
-<kbd>.TS</kbd>.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'CENTER'</h5>
+
 <p>
-If you prefer a table to start where you say and span multiple
-pages, or if you know for certain the table will run to several
-pages, do not use the <b>FLOAT</b> macro.  Instead, invoke
-<kbd>.TS</kbd> with the <kbd>H</kbd> argument, enter any
-<kbd>tbl</kbd> global options (per <kbd>man(1) tbl</kbd>), and
-follow the last line of the global options, which terminates with
-a period, with text for the table header.  Afterwards, invoke the
-macro, <kbd>.TH</kbd>, then begin entering table data, as in the
-following:
-<br/>
+If a table is to be centered on the page, (ie <kbd>tbl</kbd> is
+given the <kbd>'center'</kbd> flag), you must pass the argument
+<kbd>CENTER</kbd> to <kbd>.TS</kbd>, as in this example, which
+creates a (possibly) multipage boxed table, centered on the page,
+with a running header.
 <span class="pre-in-pp">
-  .TS H
+  .TS H BOXED CENTER
   allbox center;
   c s s
+  c s s
   c c c
   n n n.
-  AT&T Common Stock
+  Percent Increase
+  2002-2012
   .TH
-  &lt;tbl commands and data&gt;
+  &lt;tbl data&gt;
   .TE
 </span>
-In the example, &#8220;AT&T Common Stock&#8221; will be the
-table&#8217;s header, printed at the start of the table and at the
-top of the table on all subsequent pages.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NEEDS'</h5>
+
+<p>
+If a table is not inside a float and you pass <kbd>.TS </kbd> the
+<kbd>H</kbd> argument (which you should; see the tip
+<a href="#h-tip">here</a>),
+mom begins output immediately where the table occurs in the input
+file <i>if there is enough room on the output page for the table
+header plus at least one row of table data</i>.  If there isn't
+enough room, mom breaks to a new page before beginning the table,
+leaving a gap in
+<a href="definitions.html#running">running text</a>
+at the bottom of the previous page.  If, for aesthetic reasons,
+you would prefer that mom require more than one row of table data
+beneath the header near the bottom of a page, you may increase the
+number with the <kbd>NEEDS</kbd> argument, followed by the desired
+number of rows.
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TH 
macro</h4>
+</div>
+
+<p>
+The <b>TH</b> macro (<b>T</b>able <b>H</b>eader), which is required
+when you begin a table with <kbd>.TS H</kbd>, allows you to
+determine what goes in a table&#8217;s running header if it spans
+multiple pages.  If you place it immediately underneath your
+<kbd>tbl</kbd> formatting specifications, the last line of which
+always ends with a period (see <kbd>tbl(1)</kbd>), there will
+be no running header.  If you place it under the first row of
+<kbd>tbl</kbd> data, the first row will form the header; under the
+second row, the first and second rows form the header, and so on.
+</p>
+
+<div class="macro-id-overline">
+<h4 id="ts" class="docs" style="font-size: 100%; margin-top: .5em">The .TE 
macro</h4>
+</div>
+
+<p>
+<kbd>tbl</kbd> blocks must be terminated with <kbd>.TE</kbd>.
+Arguments to <b>TE</b> are optional.  If 
<kbd>&#8220;&lt;caption&gt;&#8221;</kbd>
+is given, you may use as many or as few of the subsequent arguments
+as you wish, in any order.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: 
none">&#8220;&lt;caption&gt;&#8221;</h5>
+
+<p>
+If you wish a table to have a caption, or label, underneath, surround the
+caption in double-quotes after <kbd>.TE</kbd>, like this:
+<span class="pre-in-pp">
+  .TE "Table 1"
+</span>
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: 
none">&lt;distance&gt;</h5>
+
+<p>
+If you would like to increase the space between the bottom of a
+table and its caption, enter the increase with a digit to which is
+appended a
+<a href="definitions.html#unitofmeasure">unit of measure</a>:
+<span class="pre-in-pp">
+  .TE "Table 1" 3p
+</span>
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">LEFT | CENTER | 
RIGHT</h5>
+
+<p>
+By default, mom aligns captions with the left side of tables.  If
+this is what you want, you may enter <kbd>LEFT</kbd>, or simply skip
+stating where you want the caption.  If you would prefer centered or
+right placement, use <kbd>CENTER</kbd> or <kbd>RIGHT</kbd>.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">NO_SHIM</h5>
+
+<p>
+By default, mom adds
+<a href="docprocessing.html#shim">shimming</a>
+underneath tables.  This behaviour may be disabled with the
+<kbd>NO_SHIM</kbd> argument, which, moreover, can be used for tables
+without a caption, like this:
+<span class="pre-in-pp">
+  .TE NO_SHIM
+</span>
+</p>
+
+<div class="rule-medium"><hr/></div>
+
+<h3 id="pic" class="docs">pic support</h3>
+
+<p>
+At present, mom has no integrated support or special features
+for the <b>pic</b> preprocessor, however <b>pic</b> may be used
+successfully within a mom document.  Generally, it&#8217;s best to
+wrap <b>pic</b> blocks within a float (see below).  If you want
+your <b>pic</b>s centred, you must include <kbd>-mpic</kbd> in the
+options passed to <kbd>pdfmom</kbd> or <kbd>groff</kbd>.
+</p>
+
+<h3 id="eqn" class="docs">eqn support</h3>
+
+<p>
+At present, mom has no integrated support or special features
+for the <b>eqn</b> preprocessor, however <b>eqn</b> may be used
+successfully within a mom document.  Generally, it&#8217;s best to
+wrap <b>eqn</b> blocks within a float (see below).
+</p>
+
+<h3 id="refer" class="docs">refer support</h3>
+
+<p>
+<b>refer</b> support is covered in the section
+<a href="refer.html">Bibliographies and references</a>.
+</p>
+
+<div class="rule-medium"><hr/></div>
+
 <h2 id="floats-intro" class="docs">Introduction to floats</h2>
 
 <p>
@@ -557,7 +801,7 @@
 </div>
 
 <div class="box-macro-args">
-Macro: <b>FLOAT</b> <kbd class="macro-args">[ FORCE ] [ ADJUST 
+|-&lt;amount&gt; ] | &lt;anything&gt;</kbd>
+Macro: <b>FLOAT</b> <kbd class="macro-args">[ FORCE ] [ ADJUST 
+|-&lt;amount&gt; ] [ SPAN ] | &lt;anything&gt;</kbd>
 </div>
 
 <div class="box-tip">
@@ -602,6 +846,14 @@
 the following page.
 </p>
 
+<p>
+The <kbd>SPAN</kbd> argument tells mom that a float, if deferred,
+may carry onto multiple pages.  Please note that <kbd>SPAN</kbd> may
+not be used for floats containing a boxed table; mom will abort with
+a warning should this occur.  Unboxed tables, on the other hand, are
+acceptable within floats that are given the <kbd>SPAN</kbd> argument.
+</p>
+
 <div class="box-tip">
 <p class="tip-top">
 <span class="note">Note:</span>

Index: momdoc/letters.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/letters.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- momdoc/letters.html 29 Jan 2013 05:02:46 -0000      1.19
+++ momdoc/letters.html 30 Oct 2013 19:15:10 -0000      1.20
@@ -100,6 +100,12 @@
 </p>
 
 <p>
+Please note that if you choose <kbd>PRINTSTYLE TYPEWRITE</kbd>,
+there's no need to give the <kbd>SINGLESPACE</kbd> option, as this
+is the unalterable default for letters.
+</p>
+
+<p>
 After the START macro, you enter headers pertinent to your letter:
 the date, the addressee (in business correspondence, typically both
 name and address), the addresser (that&#8217;s you; in business

Index: momdoc/macrolist.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/macrolist.html,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- momdoc/macrolist.html       1 Feb 2013 08:12:28 -0000       1.22
+++ momdoc/macrolist.html       30 Oct 2013 19:15:10 -0000      1.23
@@ -70,7 +70,7 @@
   <li><a href="#qr-15">Colour</a></li>
   <li><a href="#qr-16">Dropcaps</a></li>
   <li><a href="#qr-17">Utilities</a></li>
-  <li><a href="#qr-18">Graphics, images and floats</a></li>
+  <li><a href="#qr-18">Graphical objects and images</a></li>
 </ul>
 <h3 class="docs" style="margin-top: -.5em;">DOCUMENT PROCESSING MACROS</h3>
 <ul style="margin-top: .5em; margin-left: 0; padding-left: 0; list-style-type: 
none;">
@@ -82,12 +82,14 @@
   <li><a href="#qr-24">Initiate document processing</a></li>
 </ul>
 </div>
-<ul style="margin-top: 2.7em; margin-left: 0; padding-left: 0; 
list-style-type: none;">
+<ul style="margin-top: 1.75em; margin-left: 0; padding-left: 0; 
list-style-type: none;">
   <li><a href="#qr-25">Epigraphs</a></li>
   <li><a href="#qr-26">Headings</a></li>
   <li><a href="#qr-30">Paragraphs</a></li>
   <li><a href="#qr-31">Quotes (line for line quotes)</a> </li>
   <li><a href="#qr-32">Blockquotes (cited passages of text)</a></li>
+  <li><a href="#qr-49">Floats</a></li>
+  <li><a href="#qr-50">tbl support</a></li>
   <li><a href="#qr-33">Code snippets (inserting bits of programming 
code)</a></li>
   <li><a href="#qr-34">Author linebreaks (section breaks)</a></li>
   <li><a href="#qr-35">Document termination string</a></li>
@@ -551,7 +553,7 @@
 
 <table class="quick-ref">
 <tr>
-<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphics, images and 
floats</th>
+<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphical objects and 
images</th>
 </tr>
 <tr>
 <td><a href="graphical.html#drh">DRH</a></td><td>-- draw a horizontal rule</td>
@@ -574,11 +576,6 @@
 <tr>
 <td><a href="images.html#pspic">PSPIC</a></td><td>-- insert a PostScript 
image</td>
 </tr>
-<tr>
-<td style="vertical-align: top"><a 
href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, 
output on next page
-<br/>
-&nbsp;&nbsp;&nbsp;if necessary</td>
-</tr>
 </table>
 
 <div style="display: inline-block; margin-top: 1em; margin-bottom: .5em; 
border-bottom: 2px solid #302419;"><kbd>DOCUMENT PROCESSING MACROS</kbd></div>
@@ -796,6 +793,31 @@
 
 <table class="quick-ref">
 <tr>
+<th id="qr-49" class="quick-ref" colspan="2" >+++Floats </th>
+</tr>
+<td style="vertical-align: top"><a 
href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, 
output on next page
+<br/>
+&nbsp;&nbsp;&nbsp;if necessary</td>
+</tr>
+</table>
+
+<table class="quick-ref">
+<tr>
+<th id="qr-50" class="quick-ref" colspan="2" >+++tbl support </th>
+</tr>
+<tr>
+<td><a href="docelement.html#blockquote">TS</a></td><td>-- begin a tbl 
block</td>
+</tr>
+<tr>
+<td><a href="docelement.html#blockquote-general">TH</a></td><td>-- running 
table header (after TS H)</td>
+</tr>
+<tr>
+<td><a href="docelement.html#always-fullspace-quotes">TE</a></td><td>-- end 
tbl block</td>
+</tr>
+</table>
+
+<table class="quick-ref">
+<tr>
 <th id="qr-33" class="quick-ref" colspan="2" >+++ Code snippets</th>
 </tr>
 <tr>

Index: momdoc/reserved.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/reserved.html,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- momdoc/reserved.html        29 Jan 2013 05:02:46 -0000      1.44
+++ momdoc/reserved.html        30 Oct 2013 19:15:10 -0000      1.45
@@ -50,12 +50,17 @@
 </p>
 
 <p>
-Anyone interested in playing around inside mom&#8217;s macro file
-(om.tmac) will find this list useful as well since it lists all (I
-hope) the macros, strings, diversions, aliases and number registers
+Anyone interested in hacking/patching mom&#8217;s macro file
+(om.tmac) will also find this list useful since it lists most of
+the macros, strings, diversions, aliases, and number registers
 mom uses, along with brief descriptions of their functions.
 </p>
 
+<p>
+Please note that PDF-related macros, strings, and registers are not
+included.
+</p>
+
 <div class="rule-medium"><hr/></div>
 
 <span class="pre" style="scroll: none;">
@@ -295,7 +300,7 @@
   #NOFILL                 Are we in a nofill mode? (boolean)
   #NOFILL_MODE            Nofill mode
   #OLD_LEAD               Lead in effect prior to changing it with .vs
-                            in .LS
+                            in .LS or .AUTOLEAD
   #OPEN_CLOSE             Manipulates character " to print `` or ''
   #ORIGINAL_L_LENGTH      Used in LIST for IB processing; holds \n[.l]
   p                       Output line horiz position at end of
@@ -311,13 +316,13 @@
                             in effect (booleand off, i.e. to 0, when
                             QUAD &lt;arg&gt; or JUSTIFY is called)
   #PT_SIZE                Point size (fractional) in units (alias)
-  #PT_SIZE_SET            Was point size set with PT_SIZE? (boolean)
   #Q_AT_TOP               Does a quote start at the top of a new page?
                             (boolean)
   #QUAD                   In autoquad mode? (boolean)
   #QUIT                   Tells LIST whether to exit lists completely
                             (boolean)
   #REMOVE                 Used in LIST OFF cleanup
+  #RESTORE_FILL           Used to restore \[.u] state if temporarily changed
   #RESTORE_LEAD           Lead value in effect prior to AUTOLEAD
   #RESTORE_LINE_LENGTH    Restores actual line length in RULE
   #RESTORE_LN_NUMBER      Start linenumbering again with stored
@@ -1013,6 +1018,14 @@
   QUIT_LISTS           Exit lists cleanly and completely
   SET_LIST_INDENT      Restore indent of a prev. level of list
   SHIM                 Advance to next "valid" baseline
+  TBL*CLEANUP          Remove selected registers and strings created
+                         by TS/TH/TE
+  TBL*GET_QUAD         Establish quad of tbl caption
+  tbl*float-warning    If tbl in a float exceeds page limits
+  tbl*print-header     Administrivia for printing tbl headers
+  address@hidden         Trap-invoked (HEADER); prints running tbl header
+                         and moves FOOTER/FN_OVERFLOW_TRAP_POS traps
+                         to accommodate tbl
   TERMINATE            .em that ensures deferred footnotes get output
                          on final pages
   TRAPS                Sets hdrftr traps; optionally adjusts #DOC_LEAD
@@ -1032,6 +1045,7 @@
   CLOSING_TEXT      Closing (i.e. Yours truly,)
   EPI_TEXT          Epigraph text
   END_NOTES         Endnotes text
+  FLOAT*DIV         Float content
   FN_IN_DIVER       Footnotes gathered from inside a diversion
   FN_OVERFLOW       Excess footnotes when B_MARGIN is reached
   FOOTNOTES         Text of footnotes
@@ -1042,6 +1056,7 @@
   RUNON_FOOTNOTES   Special diversion for run-on footnotes
   RUNON_FN_IN_DIVER Special diversion for run-on footnotes inside
                       (block)quotes
+  tbl*header-div    Running tbl header
   TOC_ENTRIES       TOC entries
 
 <span style="display: block; margin-top: -.5em; margin-bottom: 
-2.5em;">+++NUMBER REGISTERS+++</span>
@@ -1173,6 +1188,7 @@
   #DIVER_FN                  Register that tells FOOTNOTE whether to
                                "move" or "defer" a footnote collected
                                inside a diversion
+  defer / new-defer          Appended to FLOAT*DIV: if float deferred
   #DEFER_BIB_SPACING         Tells DEFAULTS to do BIBLIOGRAPHY_SPACING
                                if it was called before START
   #DEFER_PAGINATION          Tells COLLATE to restore pagination (from
@@ -1187,6 +1203,8 @@
   #DEPTH_2                   Doc header depth without lead adjustment
                                (#DOCHEADER_LINES * #DOC_LEAD)
   #DEPTH_TO_B_MARGIN         Page length minus #B_MARGIN
+  D-float                    Depth of float containing/ending with
+                               DRH, DRV, DBX, or DCL
   #DIVERSIONS_HY_MARGIN      A reasonable value for .hym applied to
                                QUOTE, BLOCKQUOTE and EPIGRAPH to
                                avoid excessive hyphenation if these are
@@ -1352,6 +1370,10 @@
   #FIRST_DOC_TITLE_PN        Page number of 1st (collated) doc (for TOC)
   #FIRST_DOC_TOC_PN_PADDING  Padding for 1st page number of 1st (collated) doc
                                (for TOC)
+  float*after-shim /         \n[nl]; tests if SHIM has stayed on the same
+    float*before-shim          baseline
+  float-span                 Float can run to multiple pages? (boolean)
+  float*with-tbl             Float contains a tbl block
   #FN_AUTOLEAD               Autolead value of footnotes
   #FN_BL_INDENT              Left indent of INDENT BOTH in footnotes
   #FN_BR_INDENT              Right indent of INDENT BOTH in footnotes
@@ -1419,6 +1441,7 @@
   #FOOTERS_WERE_ON           Were footers on? - used in FINIS and BLANKPAGE
                                (boolean)
   #FOOTNOTE_COLOR            Colorize footnotes? (boolean)
+  #FORCE                     Force float? (boolean)
   #FROM_BIB_STRING           Tells UNDERSCORE it's underscoring $BIB_STRING
   #FROM_COVER                Tells UNDERSCORE it's underscoring on a cover
   #FROM_DOC_COVER            Tells UNDERSCORE it's underscoring on a doccover
@@ -1823,6 +1846,21 @@
   #SUSPEND_PAGINATION        Suspend pagination prior to endnotes?
   #SWITCH_HDRFTR             Switch HDRFTR_LEFT and HDRFTR_RIGHT?
                                (boolean)
+  tbl*boxed                  tbl has box or allbox (boolean)
+  tbl*center-label-on-table  Is tbl caption centered? (boolean)
+  tbl*have-header            tbl has a running header (boolean)
+  tbl*header-ht              Depth of tbl*header-div
+  tbl*left-label-on-table    Is tbl caption quad left? (boolean)
+  tbl*move-fn-overflow-trap  Whether to move FN_OVERFLOW_TRAP_POS
+                               to accommodate tbl
+  tbl*move-fn-overflow       Amount by which to change
+                               FN_OVERFLOW_TRAP_POS to accommodate tbl
+  tbl*move-footer            Amount by which to change FOOTER trap
+                               to accommodate tbl
+  tbl*move-footer-trap       Whether to move FOOTER trap to accommodate
+                               tbl
+  tbl*no-shim                Whether to SHIM tbl (boolean)
+  tbl*right-label-on-table   Is tbl caption quad right? (boolean)
   #T_MARGIN_LEAD_ADJ         \n[.v]-12000; ensures critically accurate
                                placement of first lines on pages when
                                doc processing is not being used and
@@ -1850,8 +1888,12 @@
   #TOC_SH_SIZE_CHANGE        ps in/decrease of toc subhead entries
   #TOC_TITLE_INDENT          Indent of toc doc title entries
   #TOC_TITLE_SIZE_CHANGE     ps in/decrease of toc doc title entries
+  @TOP                       Controls .ns at page top;
+                               trap-invoked (FOOTER); mostly trap-removed
+                               (address@hidden)
   #TOTAL_FIELDS              Total number of letter header fields
   #TRAP                      \n[.t]-1 (used in DO_QUOTE)
+  #TW                        Width of tbl block
   #UNADJUSTED_DOC_LEAD       Argument passed to DOC_LEAD prior to
                              adjusting (set in TRAPS)
   #UNDERLINE_ITALIC          For TYPEWRITE. (boolean)
@@ -2157,6 +2199,9 @@
   $FINIS_COLOR                     Color of FINIS string
   $FINIS_STRING                    What to print when FINIS macro is
                                      invoked
+  float-adj:bottom                 A + or - sign
+  float-adj:top                    A + or - sign
+  float*type                       Used with tbl; 'boxed' or 'table'
   FN_MARK                          Inline, gets #FN_MARK ( \n[ln] )
   $FN_CLOSE_BRACKET                Close bracket for line-number identified
                                      footnotes
@@ -2330,6 +2375,11 @@
   $SUBTITLE_SIZE_CHANGE            ps in/decrease of subtitle
   $SUBTITLE_PT_SIZE                Absolute ps of subtitle
   $SUITE                           The #SUITE number register
+  tbl*center                       'C' if set
+  tbl*label                        Text of tbl caption
+  tbl*needs                        # of rows of tbl data required to print
+                                     tbl near bottom of page
+  tbl*user-add-space               User-added space before a tbl caption
   $TITLE                           Concatenated args pass to TITLE
   $TITLE_&lt;n&gt;                       Title items
   $TITLE_COLOR                     Color of title

Index: momdoc/toc.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/toc.html,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- momdoc/toc.html     17 Sep 2013 16:20:18 -0000      1.46
+++ momdoc/toc.html     30 Oct 2013 19:15:11 -0000      1.47
@@ -21,7 +21,7 @@
 
 <head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
-  <title>Mom, version 2.0-a_1 -- Table of Contents</title>
+  <title>Mom, version 2.1-b -- Table of Contents</title>
   <link rel="stylesheet" type="text/css" href="stylesheet.css" />
 </head>
 
@@ -32,7 +32,7 @@
 <div class="page">
 
   <div class="version">
-    mom, version 2.0-a_1
+    mom, version 2.1-b
   </div>
 
 <h1 class="toc" style="margin-top: 9px;">Table of Contents</h1>
@@ -98,7 +98,7 @@
       <li><a href="#prelim">Preliminary document setup</a></li>
       <li><a href="#typemacdoc">Behaviour of the typesetting macros during 
document processing</a></li>
       <li><a href="#tags">The document element tags</a> &ndash; headings, 
paragraphs, quotes, footnotes, etc.</li>
-      <li><a href="#images">Graphics, tbl support, and floats</a></li>
+      <li><a href="#images">Graphics, floats, and preprocessor support</a></li>
       <li><a href="#hdrftr">Page headers and footers</a></li>
       <li><a href="#paginate">Pagination</a></li>
       <li><a href="#rv">Recto/verso printing and collating</a></li>
@@ -346,7 +346,7 @@
           <li><a href="docelement.html#margin-notes-intro">5.4.13 Margin 
notes</a></li>
           <li><a href="docelement.html#finis-intro">5.4.14 Document 
termination string</a> &ndash; FINIS</li>
         </ul></li>
-      <li><a id="images" class="highlight" href="images.html#top">5.5 
GRAPHICS, tbl SUPPORT, AND FLOATS</a>
+      <li><a id="images" class="highlight" href="images.html#top">5.5 
GRAPHICS, FLOATS, AND PREPROCESSOR SUPPORT</a>
         <ul>
           <li><a href="images.html#images-intro">5.5.1 Inserting images and 
graphics</a></li>
           <li><a href="images.html#converting">5.5.2 Image conversion and file 
processing</a></li>

Index: momdoc/typesetting.html
===================================================================
RCS file: /sources/groff/groff/contrib/mom/momdoc/typesetting.html,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- momdoc/typesetting.html     26 Aug 2013 16:49:30 -0000      1.32
+++ momdoc/typesetting.html     30 Oct 2013 19:15:11 -0000      1.33
@@ -300,6 +300,12 @@
 PAGEWIDTH.
 </p>
 
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAGEWIDTH</kbd>,
+when you need it, should be placed at the top of your files.
+</p>
+</div>
 <!-- -PAGELENGTH- -->
 
 <div class="macro-id-overline">
@@ -326,6 +332,13 @@
 for information on ensuring groff respects your PAGELENGTH.
 </p>
 
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAGELENGTH</kbd>,
+when you need it, should be placed at the top of your files.
+</p>
+</div>
+
 <!-- -PAPER- -->
 
 <div class="macro-id-overline">
@@ -337,7 +350,7 @@
 </div>
 
 <p>
-PAPER provides a convenient way to set the page dimensions for some
+PAPER provides a convenient way to set the dimensions for some
 common printer sheet sizes. <kbd>&lt;paper&nbsp;type&gt;</kbd> can
 be one of:
 <br/>
@@ -367,6 +380,13 @@
 for information on ensuring groff respects your PAPER size.
 </p>
 
+<div class="box-important">
+<p class="tip">
+<span class="important">Important:</span> <kbd>PAPER</kbd> when you
+need it, should be placed at the top of your files.
+</p>
+</div>
+
 <!-- -L_MARGIN- -->
 
 <div class="macro-id-overline">
@@ -1187,6 +1207,12 @@
 </div>
 <p class="requires">
 &bull;&nbsp;Does not require a <a href="definitions.html#unitofmeasure">unit 
of measure</a>
+<br/>
+(Please see
+<a href=""></a>
+for information on using
+<span style="font-style: normal">AUTOLEAD</span> during document
+processing.)
 </p>
 
 <p>
@@ -1225,6 +1251,15 @@
 <a href="#leading">LS</a>.
 </p>
 
+<div class="box-tip">
+<p class="tip">
+<span class="experts">Experts:</span> Please note that the groff
+<a href="definitions.html#primitives">primitives</a>,
+<kbd>.vs</kbd> and <kbd>.ps</kbd>, are unaffected by, and have no
+effect, on AUTOLEAD.
+</p>
+</div>
+
 <p>
 If you give AUTOLEAD the optional FACTOR argument, AUTOLEAD
 calculates the line space as a factor of the
@@ -1770,8 +1805,8 @@
 <div class="box-tip">
 <p class="tip">
 <span class="experts">Experts:</span> SPREAD is an alias for
-<kbd>.brp</kbd> You can use either, or mix
-&#8217;n&#8217; match with impunity.
+<kbd>.brp</kbd> You can use either, or mix &#8217;n&#8217; match
+with impunity.
 </p>
 </div>
 



reply via email to

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