PTPi pushed a commit to branch master in repository groff. commit 18d8b9bf3ab35fe330c6cc71ea5c336f6ad5f4a9 Author: Peter Schaffter <pe...@schaffter.ca> Date: Thu Jan 2 20:01:45 2020 -0500
mom 2.4-4 release Change all instances of .ul to .cu. Add TOC_HEADING and associated _STYLE macro. Add arg. PREFIX_CHAPTER_NUMBER to macro HEADING_STYLE. Remove unused string $REF_STYLE. Bug fixes -- see BUGS (2.4-3). Update copyright info. --- contrib/mom/om.tmac | 362 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 243 insertions(+), 119 deletions(-) diff --git a/contrib/mom/om.tmac b/contrib/mom/om.tmac index 69ed0ce..a3238d1 100644 --- a/contrib/mom/om.tmac +++ b/contrib/mom/om.tmac @@ -1,7 +1,7 @@ .ig Mom -- a typesetting/document-processing macro set for groff. -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2020 Free Software Foundation, Inc. Written by Peter Schaffter <pe...@schaffter.ca> PDF integration contributed by Deri James <deri.ja...@chuzzlewit.co.uk> @@ -20,7 +20,7 @@ for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. -Version 2.4-3 +Version 2.4-4 ------------- Antoine de St-Exupéry asserted that elegance in engineering is achieved not when there is nothing left to add, but when there is @@ -54,7 +54,7 @@ extensions, and float management). .if (\n[.x]\n[.y] < 118) \ . ab [mom]: You need GNU troff version 1.18 or higher to run this version of mom. \# Mom version -.ds version 2.4-3 +.ds version 2.4-4 .if dVERSION \{\ . ab [mom]: Version \*[version] .\} @@ -1979,13 +1979,13 @@ end . nr #UNDERLINE_ON 1 . ss \\n[.ss] (\\n[.ss]-\\n[.ss]) . ie !n .nop \X'ps: exec \\n[_w] \\n[_d] decorline'\c -. el .ul 1000 +. el .cu 1000 . \} . el \{\ . nr #UNDERLINE_ON 0 . if !'\\*[$SAVED_SS_VAR]'' .SS \\*[$SAVED_SS_VAR] . ie !n .nop \X'ps: exec decornone'\c -. el .ul 0 +. el .cu 0 . \} .END \# @@ -2011,7 +2011,7 @@ end . \} . el \{\ \?\R'#UNDERLINE_ON 1'\?\c -. ul 1000 +. cu 1000 . \} . \} . el \{\ @@ -2021,7 +2021,7 @@ end . \} . el \{\ \R'#UNDERLINE_ON 1'\c -. ul 1000 +. cu 1000 . \} . \} .END @@ -2037,7 +2037,7 @@ end . \} . el \{\ \?\R'#UNDERLINE_ON 0'\?\c -. ul 0 +. cu 0 . \} . \} . el \{\ @@ -2047,7 +2047,7 @@ end . \} . el \{\ . nr #UNDERLINE_ON 0 -. ul 0 +. cu 0 . \} . \} .END @@ -3330,7 +3330,7 @@ end . ie '\\$1'0' .ss \\n[.ss] (\\n[.ss]-\\n[.ss]) . el \{\ . ie '\\$1'DEFAULT' .ss \\n[.ss] -. el .ss \\n[.ss] (0+\\*[$SS_VAR]) +. el .ss \\n[.ss] \\*[$SS_VAR] . \} .END \# @@ -4210,12 +4210,14 @@ y\R'#DESCENDER \\n[.cdp]' . nr #BOLDER_UNITS 0 . nr #CONDENSE 0 . nr #EXTEND 0 -. if !\\n[#ITALIC_MEANS_ITALIC] .rm IT +. if !\\n[#ITALIC_MEANS_ITALIC] \{\ +. rm IT +. rm PREV +. UNDERLINE_ITALIC +. \} . rm BD . rm BDI -. if !\\n[#ITALIC_MEANS_ITALIC] .rm PREV . if !\\n[#SLANT_MEANS_SLANT] .UNDERLINE_SLANT -. if !\\n[#ITALIC_MEANS_ITALIC] .UNDERLINE_ITALIC . if !\\n[#UNDERLINE_QUOTES] .UNDERLINE_QUOTES . nr #IGNORE_COLUMNS 1 . nr #RULE_WEIGHT 500 @@ -4353,7 +4355,7 @@ y\R'#DESCENDER \\n[.cdp]' . rm PREV . ds ROM \E*[ULX] . ds IT \E*[UL] -. ds PREV \E*[ULX] +. ds PREV \f[P]\E*[ULX] . \} .END \# @@ -5779,10 +5781,8 @@ SMALLCAPS takes precedence. . if !r #DOC_HEADER .DOCHEADER . if !r #HEADERS_ON .HEADERS . if !r #PAGINATE .PAGINATE -.\" . if !r #HEADER_MARGIN .HEADER_MARGIN 4P+6p . if !r #HEADER_GAP .HEADER_GAP 3P -.\" . if \\n[#FOOTERS_ON] \{\ . HEADERS OFF . ie \\n[#PAGINATE] \ @@ -5820,7 +5820,10 @@ SMALLCAPS takes precedence. . rm $SAVED_DOC_FAM . \} . el .ds $DOC_FAM \\*[$FAMILY] -. nr #DOC_PT_SIZE \\n[#PT_SIZE] +. ie !r #DOC_PT_SIZE .nr #DOC_PT_SIZE \\n[#PT_SIZE] +. el \ +. if !\\n[#DOC_PT_SIZE]=\\n[#PT_SIZE] \ +. nr #DOC_PT_SIZE \\n[#PT_SIZE] . if \\n[#TOC] .nr #DOC_PT_SIZE \\n[#TOC_PS] . if \\n[#ENDNOTES] .nr #DOC_PT_SIZE \\n[#EN_PS] . if \\n[#BIBLIOGRAPHY] .nr #DOC_PT_SIZE \\n[#BIB_PS] @@ -6485,6 +6488,14 @@ SMALLCAPS takes precedence. . ds $TOC_HEAD_\\n[#HD_LEVEL]_FAM \\*[$TOC_FAM] . \} . if '\\*[$TOC_TITLE_FAM]'' .TOC_TITLE_FAMILY \\*[$DOC_FAM] +.\" TOC heading (single, non-pagenumbered line insertion) +. if !d $TOC_HEADING_FAM .ds $TOC_HEADING_FAM \\*[$DOC_FAM] +. if !d $TOC_HEADING_FT .ds $TOC_HEADING_FT R +. if !d $TOC_HEADING_SIZE .ds $TOC_HEADING_SIZE +0 +. if !d $TOC_HEADING_COLOR .ds $TOC_HEADING_COLOR black +. if !d $TOC_HEADING_QUAD .ds $TOC_HEADING_QUAD L +. if !d $SPACE_ABOVE .ds $SPACE_ABOVE .75v +. if !d $SPACE_BENEATH .ds $SPACE_BENEATH .25v .\" Re-run MNinit to capture strings and registers set in DEFAULTS. . if !'\\*[$MN-arg1]'' \{\ . MNinit \ @@ -6510,8 +6521,8 @@ SMALLCAPS takes precedence. . if '\\$0'DOC_HEADER_QUAD' .ds $CALLING_MACRO DOCHEADER . if '\\$0'COVER_H_POS' .ds $CALLING_MACRO COVER . if '\\$0'DOC_COVER_H_POS' .ds $CALLING_MACRO DOC_COVER -. substring $\\*[$CALLING_MACRO]_QUAD 0 0 . ie !'\\*[$\\*[$CALLING_MACRO]_QUAD]'' \{\ +. substring $\\*[$CALLING_MACRO]_QUAD 0 0 . if '\\*[$\\*[$CALLING_MACRO]_QUAD]'L' .LEFT . if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' .CENTER . if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' .RIGHT @@ -7085,7 +7096,8 @@ $\\*[DOC_]COVERTITLE_\\n+[#\\*[DOC_]COVERTITLE_NUM] \\$\\n[#\\*[DOC_]COVERTITLE_ . ie '\\$1'' \{\ . nr #COVERTEXT_PP 1 . di \\*[DOC_]COVER_TEXT -. ev 1 +. ev COVER_TEXT +. evc 0 \!. if \\\\n[#\\*[DOC_]COVERTEXT_ONLY] \ . sp |\\\\n[#T_MARGIN]u-\\\\n[#DOC_LEAD]u \!. ie !\\n[#\\*[DOC_]COVERTEXT_START_POS] \{\ @@ -7925,6 +7937,10 @@ $\\*[DOC_]COVERTITLE_\\n+[#\\*[DOC_]COVERTITLE_NUM] \\$\\n[#\\*[DOC_]COVERTITLE_ . rm $TOC_TITLE_ITEM_OLD . \} . \} +. if !'\\*[$TOC_HEADING]'' \{\ +. HEADING_TO_TOC +. rm $TOC_HEADING +. \} . if !\\n[#TOC] \{\ . if !'\\*[$TOC_TITLE_ITEM]'' \{\ . PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM] @@ -10188,7 +10204,7 @@ Shimming must be disabled with NO_SHIM before using FLEX. . vs 0 . ie !n \ . nop \R'#UNDERLINE_ON 1'\X'ps: exec \\n[_w] \\n[_d] decorline' -. el .ul 1000 +. el .cu 1000 . br . ns . rr #UNDERLINE_WAS_ON @@ -10350,7 +10366,7 @@ Shimming must be disabled with NO_SHIM before using FLEX. . ev PAGE_TRANSITION\\n+[pg-trans] . pdfmarksuspend . ie !n .nop \X'ps: exec decornone' -. el .ul 0 +. el .cu 0 . br . if \\n[#UNDERLINE_ON]=1 .nr #UNDERLINE_WAS_ON 1 . if \\n[MN-left]>0 \{\ @@ -11215,14 +11231,16 @@ Shimming must be disabled with NO_SHIM before using FLEX. \# <level> will have their indents adjusted accordingly. \# .MAC HEADING_STYLE END -. if !\B'\\$1' \{\ -. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level. -. ab [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c]. -. \} -. nr #LEVEL \\$1 -. if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1 -. shift +. if !'\\$0'TOC_HEADING_STYLE' \{\ +. if !\B'\\$1' \{\ +. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level. +. ab [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c]. +. \} +. nr #LEVEL \\$1 +. if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1 +. shift .\" Prepend TOC_ to style strings if called as TOC_ENTRY_STYLE +. \} . if '\\$0'TOC_ENTRY_STYLE' .ds $TOC TOC_ . nr #ARG_NUM 0 1 . nr #ATTRIB \\n[#NUM_ARGS] @@ -11273,6 +11291,16 @@ Shimming must be disabled with NO_SHIM before using FLEX. . rr #HEAD_\\n[#LEVEL]_UNDERSCORE2 . shift . \} +. if '\\$1'SPACE_ABOVE' \{\ +. shift +. ds $SPACE_ABOVE \\$1 +. shift +. \} +. if '\\$1'SPACE_BENEATH' \{\ +. shift +. ds $SPACE_BENEATH \\$1 +. shift +. \} . if '\\$1'SPACE_AFTER' \{\ . nr #HEAD_\\n[#LEVEL]_SPACE_AFTER 1 . shift @@ -11283,31 +11311,42 @@ Shimming must be disabled with NO_SHIM before using FLEX. . \} . if '\\$1'FAMILY' \{\ . shift -. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FAM \\$1 +. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FAM \\$1 +. if '\\$0'TOC_HEADING_STYLE' .ds $TOC_HEADING_FAM \\$1 . shift . \} . if '\\$1'FONT' \{\ . shift -. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FT \\$1 +. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FT \\$1 +. if '\\$0'TOC_HEADING_STYLE' .ds $TOC_HEADING_FT \\$1 . shift . \} . if '\\$1'SIZE' \{\ . shift . ds $\\*[$TOC]HEAD_\\n[#LEVEL]_SIZE \\$1 +. if '\\$0'TOC_HEADING_STYLE' .ds $TOC_HEADING_SIZE \\$1 . shift . \} . if '\\$1'QUAD' \{\ . shift . ds $QUAD_TYPE \\$1 . substring $QUAD_TYPE 0 0 -. if '\\*[$QUAD_TYPE]'L' .ds $HEAD_\\n[#LEVEL]_QUAD LEFT -. if '\\*[$QUAD_TYPE]'C' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER -. if '\\*[$QUAD_TYPE]'R' .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT +. ie !'\\$0'TOC_HEADING_STYLE' \{\ +. if '\\*[$QUAD_TYPE]'L' .ds $HEAD_\\n[#LEVEL]_QUAD LEFT +. if '\\*[$QUAD_TYPE]'C' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER +. if '\\*[$QUAD_TYPE]'R' .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT +. \} +. el \{\ +. if '\\*[$QUAD_TYPE]'L' .ds $TOC_HEADING_QUAD LEFT +. if '\\*[$QUAD_TYPE]'C' .ds $TOC_HEADING_QUAD CENTER +. if '\\*[$QUAD_TYPE]'R' .ds $TOC_HEADING_QUAD RIGHT +. \} . shift . \} . if '\\$1'COLOR' \{\ . shift . ds $\\*[$TOC]HEAD_\\n[#LEVEL]_COLOR \\$1 +. if '\\$0'TOC_HEADING_STYLE' .ds $TOC_HEADING_COLOR \\$1 . shift . \} . if '\\$1'BASELINE_ADJUST' \{\ @@ -11340,6 +11379,13 @@ Shimming must be disabled with NO_SHIM before using FLEX. . rr #NUMBER_HEAD_\\n[#LEVEL] . shift . \} +. if '\\$1'PREFIX_CHAPTER' \{\ +. shift +. ie \B'\\$1' \{\ +. PREFIX_CHAPTER_NUMBER \\$1 +. \} +. el .PREFIX_CHAPTER_NUMBER +. \} . if '\\$1'INDENT' \{\ . shift . nr #TOC_HEAD_\\n[#LEVEL]_INDENT \\$1 @@ -11372,7 +11418,8 @@ Shimming must be disabled with NO_SHIM before using FLEX. . if d$TOC .rm $TOC .END . -.ALIAS TOC_ENTRY_STYLE HEADING_STYLE +.ALIAS TOC_ENTRY_STYLE HEADING_STYLE +.ALIAS TOC_HEADING_STYLE HEADING_STYLE \# \# OLDSTYLE HEADINGS \# ----------------- @@ -11551,15 +11598,30 @@ Shimming must be disabled with NO_SHIM before using FLEX. \# *Arguments: \# <none> | <chapter number> | <anything> \# *Function: -\# Toggles register #PREFIX_CH_NUM. Sets register #CH_NUM from -\# string $CHAPTER if $CHAPTER is a digit; if <chapter number> arg -\# given, sets #CH_NUM to arg. +\# Toggles register #PREFIX_CH_NUM. Uses $CHAPTER to set #CH_NUM +\# if $CHAPTER is a digit; if <chapter number> given, sets #CH_NUM +\# to arg. \# *Notes: \# Default is OFF. \# .MAC PREFIX_CHAPTER_NUMBER END +. if \\n[#NUM_ARGS]=0 \{\ +. if !'\\*[$CHAPTER]'' \{\ +. if !\B'\\*[$CHAPTER]' \{\ +. tm1 "[mom]: \\$0 at line \\n[.c] cannot determine a chapter number. +. tm1 " Enter the current chapter number as a digit after PREFIX_CHAPTER. +. ab [mom]: Aborting '\\n[.F]', line \\n[.c]. +. \} +. \} +. \} . ie '\\$1'' .nr #PREFIX_CH_NUM 1 -. el .rr #PREFIX_CH_NUM +. el \{\ +. ie \B'\\$1' \{\ +. nr #PREFIX_CH_NUM 1 +. nr #CH_NUM \\$1 +. \} +. el .rr #PREFIX_CH_NUM +. \} .END \# \# ==================================================================== @@ -15241,9 +15303,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . rr #EN_REF . nr #BIBLIOGRAPHY 1 . nr #BIB_FIRST_PAGE 1 -. nr #SKIP_FOOTER +1 +\#. nr #SKIP_FOOTER +1 . SETUP_BIBLIOGRAPHY -. nr #SKIP_FOOTER -1 +\#. nr #SKIP_FOOTER -1 . if \\n[#PRINT_STYLE]=1 \{\ . ie \\n[#SINGLE_SPACE]=1 .vs \\n[#BIB_LEAD]u . el \{\ @@ -15298,6 +15360,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . nr #NO_TOC_ENTRY 1 .END \# +\# USER-INSERTED HEADING IN TOC +\# ---------------------------- +\# *Arguments: +\# <text> +\# *Function: +\# Inserts a single line of non-pagenumbered text into the TOC. +\# +.MAC TOC_HEADING END +. ds $TOC_HEADING \\$1 +.END +\# \# TOC collector \# .MAC TO_TOC END @@ -15340,6 +15413,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . \} . \} . \} +\!. vpt 0 \!. PAD_MARKER ^ . if !'\\$0'HD_TO_TOC' \{\ \!. if \\n[#TOC_TITLE_CAPS]=1 .CAPS @@ -15348,7 +15422,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . nr #POST_TOP 1 \!. if \\n[#TOC_HEAD_\\n[#LEVEL]_CAPS]=1 .CAPS . \} -\!. vpt 0 . ie '\\$0'HD_TO_TOC' \{\ . if \\n[#PRINT_STYLE]=1 \{\ . ds $TOC_HEAD_\\n[#LEVEL]_FAM] \\*[$TYPEWRITER_FAM] @@ -15362,14 +15435,47 @@ E\\R'#CAP_HEIGHT \\n[.cht]' "\\*[PDFBOOKMARK.NAME]" . \} . el \{\ -. if \\n[#PRINT_STYLE]=1 \{\ -. ds $TOC_TITLE_FAM \\*[$TYPEWRITER_FAM] -. ds $TOC_TITLE_FT R +. ie '\\$0'HEADING_TO_TOC' \{\ +. if \\n[#PRINT_STYLE]=1 \{\ +. ds $TOC_TITLE_FAM \\*[$TYPEWRITER_FAM] +. ds $TOC_TITLE_FT R +. \} +. if !'\\*[$TOC_HEADING_QUAD]'' \{\ +. substring $TOC_HEADING_QUAD 0 0 +. if '\\*[$TOC_HEADING_QUAD]'L' \!.LEFT +. if '\\*[$TOC_HEADING_QUAD]'C' \!.CENTER +. if '\\*[$TOC_HEADING_QUAD]'R' \!.RIGHT +. \} +\!. vpt +\!. ne \\*[$SPACE_ABOVE]+\\*[$SPACE_BENEATH]+2v +\!. vpt 0 +. if \\n[#PRINT_STYLE]=2 \ +. if \\n[#POST_TOP] \!.sp \\*[$SPACE_ABOVE] +. ie \\n[#PRINT_STYLE]=1 \!.nop \\*[$TOC_HEADING] +. el \{\ +\!. nop \ +\f[\\*[$TOC_HEADING_FAM]\\*[$TOC_HEADING_FT]]\ +\s[\\*[$TOC_HEADING_SIZE]]\ +\m[\\*[$TOC_HEADING_COLOR]]\ +\\*[$TOC_HEADING]\ +\m[]\s[0]\f[P] +. \} +. if \\n[#PRINT_STYLE]=2 \{\ +. ie \\n[#SPACE_TOC_ITEMS] \ +. if \\n[#POST_TOP]=0 \!.sp \\*[$SPACE_BENEATH] +. el \!.sp \\*[$SPACE_BENEATH] +. \} +\!. vpt +. da +. ev +. return . \} -\!. PAD \ +. el \{\ +\!. PAD \ "\f[\\*[$TOC_TITLE_FAM]\\*[$TOC_TITLE_FT]]\ \h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN\\*[_TYPEWRITE]]" \ "\\*[PDFBOOKMARK.NAME]" +. \} . \} . ie '\\$0'HD_TO_TOC' \ \!. if \\n[#TOC_HEAD_\\n[#LEVEL]_CAPS]=1 .CAPS OFF @@ -15391,13 +15497,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]' \!. ps \\*[$TOC_PN_SIZE_CHANGE] . \} \!. PRINT \\n[#TOC_ENTRY_PN] -\!. \} -. da -. ev +\!. \} +. da +. ev .END . .ALIAS HD_TO_TOC TO_TOC .ALIAS TITLE_TO_TOC TO_TOC +.ALIAS HEADING_TO_TOC TO_TOC \# \# Control macros for toc \# ---------------------- @@ -16621,7 +16728,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]' \# *Arguments: \# none \# *Function: -\# Resets register enumerators to 1 or a. +\# Resets register enumerators to 1, a, i... \# .MAC RESET_LIST END . ie '\\$1'' .nr #ENUMERATOR\\n[#DEPTH] 0 1 @@ -16810,6 +16917,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . IQ CLEAR . TQ . LL \\n[#DOC_L_LENGTH]u +. PT_SIZE \\n[#DOC_PT_SIZE]u . QUAD \\*[$DOC_QUAD] . nr #SAVED_DOC_LEAD \\n[#DOC_LEAD] . nr #COLLATED_DOC 1 @@ -16883,7 +16991,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . \} . nr #LOOP 0 1 . while \\n+[#LOOP]<=\\n[@LEVEL] \ -. rr #TOC_HEAD_\\n[#LOOP]_INDENT_SET 1 +. rr #TOC_HEAD_\\n[#LOOP]_INDENT_SET . if \\n[#FLEX_ACTIVE] .rr #NO_FLEX .END \# @@ -18817,10 +18925,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . if '\\*[spec-type]'cap' .ds spec-type caption . if '\\*[spec-type]'lab' .ds spec-type label . if '\\*[spec-type]'sou' .ds spec-type source +. ie \\n[#PRINT_STYLE]=1 .TYPEWRITER +. el \{\ ' fam \\*[\\*[label-type]*\\*[spec-type]-family] -' ft \\*[\\*[label-type]*\\*[spec-type]-font] -' ps \\n[#DOC_PT_SIZE]u\\*[\\*[label-type]*\\*[spec-type]-size-change] -. COLOR \\*[\\*[label-type]*\\*[spec-type]-color] +' ft \\*[\\*[label-type]*\\*[spec-type]-font] +' ps \\n[#DOC_PT_SIZE]u\\*[\\*[label-type]*\\*[spec-type]-size-change] +. \m[\\*[\\*[label-type]*\\*[spec-type]-color]] +. \} .END \# .ALIAS tbl*caption-style style @@ -20347,10 +20458,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . if !'\\*[tbl*label-space]'' .sp \\*[tbl*label-space] . ie \\n[tbl*autolabel] \{\ . ie !\\n[tbl*caption-after-label] .nop \ -\\*[tbl*label-prfx]\\*[chapno]\\n[tbl*label-num]\\*[tbl*label-sffx] +\\*[tbl*label] . el \{\ . nop \ -\\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]\| +\\*[tbl*label]\| . tbl*caption-style . vs \\n[.ps]u+\\n[tbl*caption-autolead]u . ds tbl*caption-old \\*[tbl*caption] @@ -20486,7 +20597,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]' . nr tbl*caption-top-lead-diff \\n[tbl*caption-lead-diff] . ie !\\n[#MLA] \{\ . if \\n[tbl*have-caption] \{\ -. ie !'\\n[.z]'FLOAT*DIV' \{\ +. if !'\\n[.z]'FLOAT*DIV' \{\ . if !\\n[tbl*caption-after-label] \{\ . ie (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \{\ . RESTORE_SPACE @@ -20715,8 +20826,8 @@ does not fit on page \\n[pgnum]\\*[col-num]. . \} . br . if !'\\*[tbl*caption-space]'' .sp \\*[tbl*caption-space] -\!. if \\\\n[float*tbl] .ev FLOAT -. ev \\*[ev-current] +. ie \\n[float*tbl] .ev FLOAT +. el .ev \\*[ev-current] .END \# .MAC TBL*CLEANUP END @@ -21584,7 +21695,6 @@ does not fit on page \\n[pgnum]\\*[col-num]. . if r #EN_REF .rr #EN_REF . nr #FN_REF 1 . \} -. REF_STYLE NOTE .END \# \# Endnote references @@ -21599,7 +21709,6 @@ does not fit on page \\n[pgnum]\\*[col-num]. . nr #EN_REF 1 . if !r#EN_MARKER_STYLE .ENDNOTE_MARKER_STYLE SUPERSCRIPT . \} -. REF_STYLE NOTE .END \# \# Prepare mom for a reference @@ -21659,8 +21768,9 @@ does not fit on page \\n[pgnum]\\*[col-num]. . REF_BRACKETS_NOTICE \\$0 .END \# -\# These four pairs of aliases allow users to embed references in -\# text and have them surrounded by (), [], {} or <>. +\# These four pairs of aliases used to allow users to embed +\# references in text and have them surrounded by (), [], {} or <>. +\# bracket-label should be used in the refer block instead. \# .ALIAS REF( REF_BRACKETS_START .ALIAS REF) REF_BRACKETS_END @@ -21674,10 +21784,6 @@ does not fit on page \\n[pgnum]\\*[col-num]. .ALIAS REF< REF_BRACKETS_START .ALIAS REF> REF_BRACKETS_END \# -.MAC REF_STYLE END -. REF_BRACKETS_NOTICE \\$0 -.END -\# \# Refer indenting \# --------------- \# *Argument: @@ -21781,6 +21887,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. . el .nr ref*type 2 . if d [q .nr ref*type 2 .\} +.if d [u .nr ref*type 0 \" If %u exists, always treat as Internet ref .if \\n[ref*type]=3 \{\ . if !'\\*([R'' \{\ . nr ref*type 4 @@ -21815,6 +21922,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# of collected references \# .de ]< +.rm author \" If not, persists over multiple 'bibliography' commands .als ref*print ref*end-print .nr #REF 1 .if \\n[#BIB_LIST]=1 \{\ @@ -21869,7 +21977,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# string definitions (ref*add-<x>), so we have to make sure that there \# aren't two spaces when the printstyle is TYPESET. Since I find that \# references look a bit crowded with 0 sentence space, I've bumped it -\# up to +4. User's sentence spacing is reset in FOOTNOTES and ENDNOTES. +\# up to +8. User's sentence spacing is reset in FOOTNOTES and ENDNOTES. \# .de ref*build .if \\n[#PRINT_STYLE]=2 \{\ @@ -21910,32 +22018,49 @@ does not fit on page \\n[pgnum]\\*[col-num]. .de ref*add-A .ds eval*[A \\*([A .substring eval*[A -1 -.if '\\*[eval*[A]'.' \ -. if !'\\*[$REF_STYLE]'NOTE' .chop [A -.\" Per MLA, NOTE should not use idem, therefore if %i contains other than -.\" idem (e.g., ed., trans.), transpose it to after author's name -.ie '\\*[$REF_STYLE]'NOTE' \{\ -. ie !'\\*[idem]'' .ref*field A "" "" ", \\*[idem]" +.if !\\n[skip-[A] \{\ +. if '\\*[eval*[A]'.' \ +. if !\\n[#FN_REF]+\\n[#EN_REF] .chop [A +.\" Per MLA, footnotes and endnotes should not use idem, therefore +.\" if %i contains other than idem (e.g., ed., trans.), transpose it +.\" to after author's name +. ie \\n[#FN_REF]+\\n[#EN_REF]=1 \{\ +. ie !'\\*[idem]'' .ref*field A "" "" "? \\*[idem]" +. el .ref*field A +. rm idem . el .ref*field A -. rm idem -.el .ref*field A +. \} .\} .if \\n([A .nr ref*suppress-period 1 +.rr skip-[A .. -\# %i Idem. BIBLIO: In all instances, removes %A field and replaces -\# it with a dash; if %i field contains other than the word, idem, -\# appends it to the dash +\# %i Idem. +\# +\# In bibliographies, per MLA, replace %A with long dash after +\# first entry with author's name; if %i field contains other than +\# the word 'idem', appends it to the dash. +\# In foot/endnotes, idem is ignored; MLA requires full name for +\# each foot/endnote entry. +\# .de ref*add-i -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.\" Is a foot/endnote. +.ie \\n[#FN_REF]+\\n[#EN_REF]=1 \{\ . ie '\\*([i'idem' .rm [i . el .ds idem \\*([i .\} .el \{\ +. rr skip-[A +.\" %i is idem . ie '\\*([i'idem' \{\ -. rm [A -. rm [i -. ref*field i "" \[idem] "" " " +.\" If [A (%A) is the same as the last [A, captured in 'author'. +. if '\\*([A'\\*[author]' \{\ +. rm [i +. ref*field i "" \[idem] "" " " +. nr skip-[A 1 +. \} +. ds author \\*([A . \} +.\" %i is not 'idem'; attach to long dash . el \{\ . ds eval*[i \\*([i . substring eval*[i -1 @@ -21951,7 +22076,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %m Multiple authors (et al.) .de ref*add-m -.if !'\\*[$REF_STYLE]'NOTE' \{\ +.if !\\n[#FN_REF]+\\n[#EN_REF] \{\ . ds eval*[m \\*([m . substring eval*[m -1 . if '\\*[eval*[m]'.' .chop [m @@ -21961,24 +22086,24 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# %p Post-author string (e.g., Preface, Foreword, etc) .de ref*add-p .\" Convert first letter to uppercase, per MLA, if BIBLIO -.if '\\*[$REF_STYLE]'BIBLIO' \{\ +.if !\\n[#FN_REF]+\\n[#EN_REF] \{\ . ds initial*cap \\*([p . substring initial*cap 0 0 . ds [p*string \\*([p . substring [p*string 1 . ds [p \E*[UC]\\*[initial*cap]\E*[LC]\\*[[p*string] .\} -.ie '\\*[$REF_STYLE]'NOTE' .ref*field p , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field p , .el .ref*field p . " " .. \# %Q Author(s) when author is not a person .de ref*add-Q -.ie '\\*[$REF_STYLE]'NOTE' .ref*field Q +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field Q .el .ref*field Q .. \# %T Title (generic) .de ref*add-T1 -.ie '\\*[$REF_STYLE]'NOTE' .ref*field T , \E*[IT] \E*[ref*restore-ss] +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field T , \E*[IT] \E*[ref*restore-ss] .el \{\ . ie !'\\*([A'' .ref*field T . " \E*[IT]" \E*[ref*restore-ss] . el \{\ @@ -21987,11 +22112,10 @@ does not fit on page \\n[pgnum]\\*[col-num]. . \} .\} .if \\n([T .nr ref*suppress-period \\n([T -. .. \# %T Title of a chapter or article .de ref*add-T2 -.ie '\\*[$REF_STYLE]'NOTE' \ +.ie \\n[#FN_REF]+\\n[#EN_REF] \ . ref*field T , \[lq] "" \[rq] .el \{\ . ie '\\*([A'' \{\ @@ -22004,7 +22128,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %B Book title (when citing an article from a book) .de ref*add-B -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field B "" \E*[IT] \E*[ref*restore-ss] . el .ref*field B , \E*[IT] \E*[ref*restore-ss] .\} @@ -22022,7 +22146,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %q Titles that must go in quotes (e.g. an unpublished dissertation) .de ref*add-q -.ie '\\*[$REF_STYLE]'NOTE' .ref*field q , \[lq] "" \[rq] +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field q , \[lq] "" \[rq] .el \{\ . ie !'\\*([A'' .ref*field q . " \[lq]" "" \[rq] . el \{\ @@ -22037,7 +22161,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %J Journal name .de ref*add-J -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field J "" "\E*[IT]" \E*[ref*restore-ss] . el .ref*field J , "\E*[IT]" \E*[ref*restore-ss] .\} @@ -22048,7 +22172,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %M Magazine or newspaper name .de ref*add-M -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field M "" "\E*[IT]" \E*[ref*restore-ss] . el .ref*field M , "\E*[IT]" \E*[ref*restore-ss] .\} @@ -22112,7 +22236,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .\" End workaround .ie !\\n[ref*type]=0 \{\ . ie \\n([E>0 \{\ -. ie '\\*[$REF_STYLE]'NOTE' \{\ +. ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field E "" "ed. " . el .ref*field E , "ed. " . \} @@ -22122,7 +22246,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. . \} . \} . el \{\ -. ie '\\*[$REF_STYLE]'NOTE' \{\ +. ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field E "" "ed. " . el .ref*field E , "ed. " . \} @@ -22143,7 +22267,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .de ref*add-e .ie \\n([T .ref*field e "" "" " ed." .el \{\ -. ie '\\*[$REF_STYLE]'NOTE' .ref*field e , "" " ed." +. ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field e , "" " ed." . el .ref*field e . " " " ed." .\} .nr ref*suppress-period 1 @@ -22155,7 +22279,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .if \\n[ref*type]=1 \ . ref*field V .if \\n[ref*type]=2 \{\ -. ie '\\*[$REF_STYLE]'NOTE' .ref*field V , "vol. " +. ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field V , "vol. " . el \{\ . ie \\n([T .ref*field V "" " Vol. " . el .ref*field V . " Vol. " @@ -22176,7 +22300,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .if \\n[ref*type]=1 \ . ref*field S .if \\n[ref*type]=2 \{\ -. ie '\\*[$REF_STYLE]'NOTE' \{\ +. ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field S . el .ref*field S , . \} @@ -22199,7 +22323,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %C City .de ref*add-C -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie r [d \{\ . ref*field C . rr [d @@ -22220,7 +22344,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %I Publisher (I stands for Issuer) .de ref*add-I -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie !'\\*([C'' .ref*field I : . el .ref*field I "" ( .\} @@ -22236,18 +22360,18 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# %D Date of publication .de ref*add-D .if \\n[ref*type]=0 \{\ -. ie '\\*[$REF_STYLE]'NOTE' .ref*field D , +. ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field D , . el .ref*field D . " " .\} .if \\n[ref*type]=1 \ . ref*field D "" "(" ")" .if \\n[ref*type]=2 \{\ -. ie '\\*[$REF_STYLE]'NOTE' .ref*field D , "" ) +. ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field D , "" ) . el .ref*field D , .\} .if \\n[ref*type]=3 \{\ . ie !'\\*([C'' \{\ -. ie '\\*[$REF_STYLE]'NOTE' .ref*field D , "" ) +. ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field D , "" ) . el .ref*field D , . \} . el \{\ @@ -22257,7 +22381,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. . ie '\\*[eval*[D]'1' .ds kern \*[BU3] . el .ds kern \*[BU2] . ie \\n[#PRINT_STYLE]=2 \ -. if '\\*[$REF_STYLE]'NOTE' .ref*field D "" (\\*[kern] ) +. if \\n[#FN_REF]+\\n[#EN_REF] .ref*field D "" (\\*[kern] ) . el .ref*field D . \} . rm eval*[D @@ -22273,7 +22397,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# %P Page number(s) .de ref*add-P .if \\n[ref*type]=5 .nr ref*type 1 -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n[ref*type]=1 .ref*field P : "" . . el .ref*field P "" "\|" . if \\n[ref*type]=1 .nr ref*suppress-period 1 @@ -22288,7 +22412,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %G Gov't. ordering number .de ref*add-G -.ie '\\*[$REF_STYLE]'NOTE' ref*field G , +.ie \\n[#FN_REF]+\\n[#EN_REF] ref*field G , .el .ref*field G . " " .. \# %O Other (info that goes after %T [or %B] but is hard to categorize; e.g., a dissertation) @@ -22300,9 +22424,9 @@ does not fit on page \\n[pgnum]\\*[col-num]. .substring initial*cap 0 0 .ds [O*string \\*([O .substring [O*string 1 -.if '\\*[$REF_STYLE]'BIBLIO' \ +.if !\\n[#FN_REF]+\\n[#EN_REF] \ . ds [O \E*[UC]\\*[initial*cap]\E*[LC]\\*[[O*string] -.ie '\\*[$REF_STYLE]'NOTE' .ref*field O , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field O , .el \{\ . if \\n([O=1 .chop [O . ie r [e .ref*field O "" " " @@ -22321,7 +22445,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .if '\\*[eval*[n]'.' .chop [n .if '\\*[eval*[n]'?' .nr [n 1 .if '\\*[eval*[n]'!' .nr [n 1 -.ie '\\*[$REF_STYLE]'NOTE' .ref*field n , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field n , .el \{\ . ie !'\\*([P'' .ref*field n "" " " . el .ref*field n . " " @@ -22338,7 +22462,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# ------------- \# %d date of publication (the original date of publication) .de ref*add-d -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ref*field d "" ( ; . nr [d 1 .\} @@ -22351,7 +22475,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# %b main author when citing from a preface, introduction, foreword \# or afterword .de ref*add-b -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field b "" "by" . el .ref*field b , "by " .\} @@ -22364,7 +22488,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# %t title, if different from original title (the T field, which s/b \# the original title) .de ref*add-t -.ie '\\*[$REF_STYLE]'NOTE' .ref*field t , "rpt. of \E*[IT] " \E*[ref*restore-ss] +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field t , "rpt. of \E*[IT] " \E*[ref*restore-ss] .el \{\ . ie \\n([T .ref*field t "" " Rpt. of \E*[IT] " \E*[ref*restore-ss] . el .ref*field t . " Rpt. of \E*[IT] " \E*[ref*restore-ss] @@ -22376,7 +22500,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# ---------------- \# %l Trans(l)ator .de ref*add-l -.ie '\\*[$REF_STYLE]'NOTE' \{\ +.ie \\n[#FN_REF]+\\n[#EN_REF] \{\ . ie \\n([T .ref*field l "" "trans. " . el .ref*field l , "trans. " .\} @@ -22388,7 +22512,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %r Translato(r) and edito(r) .de ref*add-r -.ie '\\*[$REF_STYLE]'NOTE' .ref*field r , "trans. and ed. " +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field r , "trans. and ed. " .el \{\ . ie \\n([T .ref*field r "" " Trans. and ed. " . el .ref*field r . " Trans. and ed. " @@ -22400,13 +22524,13 @@ does not fit on page \\n[pgnum]\\*[col-num]. \# -------- \# %s Site name .de ref*add-s -.ie '\\*[$REF_STYLE]'NOTE' .ref*field s , \E*[IT] \E*[ref*restore-ss] +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field s , \E*[IT] \E*[ref*restore-ss] .el \{\ .ie \\n([s .ref*field s "" ".\E*[IT]" \E*[ref*restore-ss] .el .ref*field s . " \E*[IT]" \E*[ref*restore-ss] .\} .\" refer doesn't set reg [T to 1 for these titles, so we do it here -.if !'\\*[$REF_STYLE]'NOTE' \{\ +.if !\\n[#FN_REF]+\\n[#EN_REF] \{\ . ds eval*[s \\*([s . substring eval*[s -1 . rr [T @@ -22418,7 +22542,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %c content of site (ie. Web, Online posting, etc) .de ref*add-c -.ie '\\*[$REF_STYLE]'NOTE' .ref*field c , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field c , .el \{\ . ie \\n([T .ref*field c "" " " . el .ref*field c . " " @@ -22427,7 +22551,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %o organization, group or sponsor of site .de ref*add-o -.ie '\\*[$REF_STYLE]'NOTE' .ref*field o , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field o , .el \{\ . ie \\n([T .ref*field o "" " " . el .ref*field o . " " @@ -22436,7 +22560,7 @@ does not fit on page \\n[pgnum]\\*[col-num]. .. \# %a access date, i.e. the date you read it .de ref*add-a -.ie '\\*[$REF_STYLE]'NOTE' .ref*field a , +.ie \\n[#FN_REF]+\\n[#EN_REF] .ref*field a , .el \{\ . ie \\n([T .ref*field a "" " " . el .ref*field a . " " _______________________________________________ Groff-commit mailing list Groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit