texlive[56942] Master/texmf-dist: tugboat (15nov20)

commits+karl at tug.org commits+karl at tug.org
Sun Nov 15 23:21:52 CET 2020


Revision: 56942
          http://tug.org/svn/texlive?view=revision&revision=56942
Author:   karl
Date:     2020-11-15 23:21:52 +0100 (Sun, 15 Nov 2020)
Log Message:
-----------
tugboat (15nov20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst
    trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx
    trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.pdf
    trunk/Master/texmf-dist/doc/latex/tugboat/manifest.txt
    trunk/Master/texmf-dist/doc/latex/tugboat/tugboat.pdf
    trunk/Master/texmf-dist/source/latex/tugboat/tugboat.dtx
    trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
    trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
    trunk/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty
    trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
    trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tugboat/NEWS

Modified: trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst	2020-11-15 22:21:52 UTC (rev 56942)
@@ -1,4 +1,4 @@
-%%% $Id: tugboat.bst 271 2020-01-13 19:13:12Z karl $
+%%% $Id: tugboat.bst 314 2020-11-15 02:06:03Z karl $
 %%% TUGboat changes are public domain.
 %%% 
 %%% Modified for TUGboat from abbrvurl.bst:
@@ -5,9 +5,15 @@
 %%%   Abbreviate "page(s)" to "p(p).",
 %%%     "volume" to "vol.",
 %%%     "editor(s)" to "ed(s)".
+%%%   Output "Ph.D." rather than "PhD".
+%%%   Output "No." and "no." for number field.
 %%%   Set urlintro="".
-%%%   Output "Ph.D." rather than "PhD".
-%%%   Reduce long author lists in format.names per Mico Loretan.
+%%%   Always use https://doi.org/ for the doi url, and omit doi: prefix
+%%%     (incomplete: doi urls not linked correctly).
+%%%   Omit spaces between author initials, like "A.B. Smith".
+%%%   Truncate long author lists in format.names (max.names, trunc.num)
+%%%     and omit "and" from author lists, per Oren P.
+%%%   New field bookauthor for @incollection and @inproceedings.
 %%%   New fields for editors:
 %%%     "newpage" - force page break after entry;
 %%%     "urlnewline" - force line break before url value;
@@ -37,6 +43,7 @@
 ENTRY
   { address
     author
+    bookauthor
     booktitle
     chapter
     edition
@@ -97,7 +104,7 @@
   "[link]" 'linktextstring := % dummy link text; typically "[link]"
   "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
   "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
+  "https://doi.org/" 'doiurl := % prefix to make URL from DOI
   "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
   "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
   "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
@@ -222,7 +229,7 @@
       hrefform #1 = % hypertex
         { "\special {html:<a href=" quote$ * swap$ * quote$ * "> }{" * 'openinlinelink :=
           "\special {html:</a>}" 'closeinlinelink := }
-        { "\newline\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref
+        { "\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref
           % the space between "} {" matters: a URL of just the right length can cause "\% newline em"
           "}" 'closeinlinelink := }
       if$
@@ -392,44 +399,88 @@
   if$
 }
 
-INTEGERS { nameptr namesleft numnames }
+%%% from trunc-auth.bst:
+%%% There are two constants that allow for the truncation of a list of author
+%%% (or editor) names -- max.names and trunc.num.  And here's how they work:
+%%% If there are max.names of fewer in the list, there is no truncation; but
+%%% if there are more than max.names, the list is truncated at the trunc.num
+%%% name, which is replaced by trunc.string (such as "et~al.", and names later
+%%% in the list are omitted).  There's also a sanity check, making sure that:
+%%%   2  <=  trunc.num  <=  max.names + 1
 
-FUNCTION {format.names}
+INTEGERS { max.names trunc.num }
+
+STRINGS { trunc.string sort.trunc.string } % the two truncation-string versions
+
+FUNCTION {init.and.check.trunc.consts}  % from trunc-auth.bst,
+{ #3 'max.names :=                      % the two relevant integer constants
+  #3 'trunc.num :=
+  "et~al." 'trunc.string :=             % and string constants for printing
+  "et al" 'sort.trunc.string :=         % and sorting
+  trunc.num #2 <
+    { "trunc.num=" trunc.num int.to.str$ * " but should be at least 2" *
+      warning$
+    }
+    'skip$
+  if$
+  trunc.num max.names #1 + >
+    { "trunc.num=" trunc.num int.to.str$ *
+      " should be at most max.names + 1 = " * max.names #1 + int.to.str$ *
+      warning$
+    }
+    'skip$
+  if$
+}
+
+INTEGERS { nameptr numnames }
+
+INTEGERS { finalnamenum }               % from trunc-auth.bst
+
+FUNCTION {format.names}                 % from trunc-auth.bst
 { 's :=
-  #1 'nameptr :=
+  #0 'nameptr :=
   s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        % following lines implement printing only 2 author names (+ "et al.")
-        % whenever there are more than 4 authors. Thanks Mico.
-        % https://tex.stackexchange.com/questions/26575
-        { nameptr #2
-          #1 + =
-          numnames #3
-          > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { numnames #2 >
-                { "," * }
-                'skip$
+  numnames max.names >                  % from trunc-auth.bst
+    { trunc.num 'finalnamenum := }      % truncate in this case
+    { numnames 'finalnamenum := }
+  if$
+    { nameptr finalnamenum < }
+    { nameptr #1 + 'nameptr :=
+      % original line:
+      %s nameptr "{f{.}.~}{vv~}{ll}{, jj}" format.name$ 't :=
+      % 
+      % But we want to avoid the space that BibTeX usually inserts
+      % between the abbreviations of the tokens, so we get "A.B."
+      % instead of "A. B.".
+      % 
+      % So, the "f{.}.~~" here says that, for the first name part (say
+      % "Alex B.") output the abbreviation for the first token ("A"), a
+      % period ("."), the abbreviation for the second token ("B"), and
+      % another period ("."), omitting the normal intertoken space,
+      % as discussed at the very end of btxhak.
+      % 
+      % The final ~~ forces a tilde in the output, since we never want a
+      % line break between the initials and the last name.
+      % 
+      s nameptr "{f{.}.~~}{vv~}{ll}{, jj}" format.name$ 't :=
+      %
+      nameptr #1 =
+        't
+        { ", " *                        % comma but no "and" before final name
+          nameptr finalnamenum <
+            { t * }
+            { numnames max.names >
+                { trunc.string * }
+                { t "others" =
+                    { "et~al." * }
+                    { t * }
+                  if$
+                }
               if$
-              t "others" =
-                { " et~al." * }
-                { " and " * t * }
-              if$
             }
           if$
         }
-        't
       if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
     }
   while$
 }
@@ -453,6 +504,20 @@
   if$
 }
 
+% if editor is non-empty, format it.
+% else if bookauthor is non-empty, format it.
+% else nothing.
+FUNCTION {format.editors.bookauthors}
+{ editor empty$
+    { bookauthor empty$
+      { "" }
+      { bookauthor format.names }
+      if$
+    }
+    { format.editors }
+  if$
+}
+
 FUNCTION {format.title}
 { title empty$
     { "" }
@@ -539,8 +604,8 @@
     { number empty$
         { series field.or.null }
         { output.state mid.sentence =
-            { "number" }
-            { "Number" }
+            { "no." }
+            { "No." }
           if$
           number tie.or.space.connect
           series empty$
@@ -635,12 +700,17 @@
   if$
 }
 
+% handle possible bookauthor.
+% original line: { "In " format.editors * ", " * booktitle emphasize * }
+
 FUNCTION {format.in.ed.booktitle}
 { booktitle empty$
     { "" }
     { editor empty$
+      bookauthor empty$
+      and
         { "In~" booktitle emphasize * }
-        { "In " format.editors * ", " * booktitle emphasize * }
+        { "In " booktitle emphasize *  ", " format.editors.bookauthors * * }
       if$
     }
   if$
@@ -777,7 +847,7 @@
 % make hyperref specials
 FUNCTION {make.href.hyperref}
 { 
-  "\newline\href {" swap$ * "} {\path{" * swap$ * "}}" *
+  "\href{" swap$ * "}{\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
 { hrefform #2 =
@@ -820,7 +890,7 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doi doiurl make.href }
   if$
 }
 
@@ -1336,6 +1406,8 @@
 
 READ
 
+EXECUTE {init.and.check.trunc.consts}   % from trunc-auth.bst
+
 FUNCTION {sortify}
 { purify$
   "l" change.case$
@@ -1352,24 +1424,34 @@
   if$
 }
 
-FUNCTION {sort.format.names}
+FUNCTION {sort.format.names}            % from trunc-auth.bst
 { 's :=
-  #1 'nameptr :=
+  #0 'nameptr :=
   ""
   s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { nameptr #1 >
+  numnames max.names >                  % from trunc-auth.bst
+    { trunc.num 'finalnamenum := }      % truncate in this case
+    { numnames 'finalnamenum := }
+  if$
+    { nameptr finalnamenum < }
+    { nameptr #1 + 'nameptr :=
+      nameptr #1 >
         { "   " * }
         'skip$
       if$
       s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
-      nameptr numnames = t "others" = and
-        { "et al" * }
+      nameptr finalnamenum <
         { t sortify * }
+        { numnames max.names >
+            { sort.trunc.string * }
+            { t "others" =
+                { "et al" * }
+                { t sortify * }
+              if$
+            }
+          if$
+        }
       if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
     }
   while$
 }

Added: trunk/Master/texmf-dist/doc/latex/tugboat/NEWS
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/NEWS	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/NEWS	2020-11-15 22:21:52 UTC (rev 56942)
@@ -0,0 +1,14 @@
+$Id: NEWS 314 2020-11-15 02:06:03Z karl $
+This file records noteworthy changes.  This file is public domain.
+
+2.24 (2020-11-14):
+
+ltugboat.cls:
+- new hyphenation exceptions: Ja-pa-nese, Pak-i-stan.
+- new abbrevations: \macOS, \OpTeX.
+
+tugboat.bst:
+- new field bookauthor for @incollection and @inproceedings.
+- generalize truncation of author names with new code from
+  Oren Patashnik, using integers max.names and trunc.num
+  to control operation.

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx	2020-11-15 22:21:52 UTC (rev 56942)
@@ -1,4 +1,4 @@
-% $Id: ltubguid.ltx 274 2020-03-12 16:47:21Z karl $
+% $Id: ltubguid.ltx 313 2020-11-15 01:52:20Z karl $
 % ltubguid.ltx - documentation for ltugboat classes.
 % 
 % Copyright 1994-2020 TeX Users Group.
@@ -38,25 +38,26 @@
 @Misc{pkg:fancyvrb,
   author = {Timothy Van Zandt and others},
   title = {The {\textsf{fancyvrb}} package},
-  howpublished = {\url{ctan.org/pkg/fancyvrb}},
+  url = {ctan.org/pkg/fancyvrb},
 }
 
 @Misc{pkg:listings,
   author = {Carsten Heinz and others},
   title = {The {\textsf{listings}} package},
-  howpublished = {\url{ctan.org/pkg/listings}},
+  url = {ctan.org/pkg/listings},
 }
 
 @Misc{Arseneau:url:1996,
   author = {Donald Arseneau},
   title = {The {\textsf{url}} package},
-  howpublished = {\url{ctan.org/pkg/url}},
+  url = {ctan.org/pkg/url},
+  urlnewline = 1,
 }
 
 @Misc{Rahtz:hyperref:1997,
   author = {Sebastian Rahtz and Heiko Oberdiek and others},
   title = {The {\textsf{hyperref}} package},
-  howpublished = {\url{ctan.org/pkg/hyperref}},
+  url = {ctan.org/pkg/hyperref},
 }
 
 @Book{Lamport:1994,
@@ -68,15 +69,17 @@
 }
 
 @Misc{Schoepf:verbatim:1996,
-  author = {Rainer Sch{\umlaut{o}}pf},
+  author = {Rainer Sch{\"{o}}pf},
   title = {The {\textsf{verbatim}} package},
-  howpublished = {\url{ctan.org/pkg/verbatim}},
+  url = {ctan.org/pkg/verbatim},
+  urlnewline = 1,
 }
 
 @Misc{Vieth:mflogo:1995,
   author = {Ulrik Vieth},
   title = {The {\textsf{mflogo}} package},
-  howpublished = {\url{ctan.org/pkg/mflogo}},
+  url = {ctan.org/pkg/mflogo},
+  urlnewline = 1,
 }
 
 @Article{Whitney:TB10-3-378,
@@ -88,7 +91,7 @@
   volume = {10},
   number = {3},
   pages = {378--385},
-  note = {\url{ctan.org/pkg/tugboat-plain}},
+  url = {ctan.org/pkg/tugboat-plain},
 }
 
 \end{filecontents}
@@ -184,10 +187,6 @@
 }
 \makeatother
 %
-% To use umlauts in a bibliography entry in BibTeX 0.99, we have to
-% use a certain amount of subterfuge...
-\let\umlaut\"
-%
 %%%%%%%%%%%%%%%%
 \begin{document}
 %%%%%%%%%%%%%%%%
@@ -262,8 +261,7 @@
 \item[final] Set up for the final copy of a paper: page numbering to
   come from elsewhere, no cropmarks.
 \item[harvardcite] Specify Harvard-style citation (not 
-  recommended in general; see section~\ref{sec:biblio}); see
-  section~\ref{sec:biblio}.
+  recommended in general; see section~\ref{sec:biblio}.
 \item[noextralabel] Don't use the extra label-distinguishing mark in
   the body of the reference; see section~\ref{sec:biblio}.
 \item[nonumber] Sections are not numbered; section heading
@@ -315,17 +313,26 @@
 the hierarchy.  If you use \cs{paragraph}, consider ending the paragraph
 label with a period; sometimes it is helpful, sometimes not.
 
-Reference may, however, be made to the `title' of divisions of the
-paper, whether they are numbered or not.  The \cs{nameref} command
-(which uses the technique developed for the \textsf{hyperref} package
+For references to numbered sections, our style is to always use the word
+`Section' in the text, e.g.,\\
+\verb|Section~\ref{sec:whatever}|\\
+without worrying about whether it is technically a sub(sub)section.
+It's also ok to use the section sign~\S{}, if that suits the material
+better.
+
+Reference can also be made to the `title' of divisions of the paper,
+whether they are numbered or not. The \cs{nameref} command (which uses
+the technique developed for the \textsf{hyperref} package
 \cite{Rahtz:hyperref:1997}) permits such references; for example, the
 present section was introduced by:
 \begin{verbatim}[\small]
-  \section{Divisions of the paper}
-  \label{sec:divs-paper}
+\section{Divisions of the paper}
+\label{sec:divs-paper}
 \end{verbatim}
 and the command \verb|\nameref{sec:divs-paper}| produces
-`\nameref{sec:divs-paper}'.
+`\nameref{sec:divs-paper}'. However, as you can see here, reusing the
+literal text of section titles often results in awkward results. We
+recommend numbered references in general.
 
 \subsection{Abstracts}
 
@@ -336,6 +343,8 @@
 body in small text, and separates the abstract from the rest of the
 paper with a decorative line; this is rarely used.
 
+Please write an abstract, however short.
+
 \subsection{Appendices}
 
 A paper may have appendices, which can be expressed in exactly the same
@@ -526,7 +535,7 @@
 
 If you use the \pkgname{listings} package, please specify:
 \begin{verbatim}[\small]
-\lstset{columns=flexible, keepspaces=true,
+\lstset{columns=fullflexible, keepspaces=true,
         commentstyle=\slshape,
         basicstyle=\ttfamily\small}
 \lstdefinestyle{inline}
@@ -535,8 +544,10 @@
 
 Explanations:
 \begin{itemize}
-\item \texttt{columns=flexible}:
-The other values for the \verb|columns| option don't work well in \TUB.
+\item \texttt{columns=fullflexible}:
+The other values for the \verb|columns| option don't work well in \TUB;
+we want the program text to be typeset normally, not forcibly aligned
+into large character cells.
 
 \item \texttt{keepspaces=true}:
 However, having flexible columns makes spaces in the input not
@@ -694,13 +705,13 @@
 the bibliography), either on its own or via \texttt{hyperref}.
 
 Although not necessarily recommended in all cases, many additional
-packages are commonly used. To mention a few: \texttt{microtype} can
-help reduce overfull boxes (and improve appearance); sometimes it may be
-preferable to use the Latin Modern fonts via \texttt{lmodern};
-\texttt{iftex} provides tests for the \TeX\ engine being run;
-\texttt{texosquery} provides operating system information; and
-\texttt{hyperref} supports live and internal hyperlinks, outlines, and
+packages are commonly used. To mention a few:
+\begin{description}
+\item[microtype] can help reduce overfull boxes and improve appearance;
+\item[lmodern] use the Latin Modern fonts, sometimes preferable;
+\item[hyperref] supports live and internal hyperlinks, outlines, and
 many other features.
+\end{description}
 
 \section{Typesetting urls}
 \label{sec:urls}
@@ -774,7 +785,7 @@
 \item and thus supports \textsf{url} and \textsf{doi} fields, among others.
 Please use \textsf{url} instead of putting urls in the
 \textsf{note} field, where possible. Also, please don't bother to
-include ``url access date'' information for \TUB; we find that extraneous.
+include ``access date'' information for \TUB; we find that extraneous.
 
 \item The \textsf{url} field is ignored if either the \textsf{howpublished} or
 \textsf{doi} field is present. In practice we observe that people put
@@ -781,10 +792,14 @@
 the same information in all those fields, and we don't want to typeset
 redundant information.
 
-\item Has even more abbreviations than \textsf{abbrv}, such as
+\item Does even more abbreviating than \textsf{abbrv}, such as
 printing only two author names (plus ``et~al.'')\ if there are more than
-four authors (thanks to Mico Loretan).
+four authors (thanks to Mico Loretan and Oren Patashnik).
 
+\item New field \textsf{bookauthor} for the \textsf{@incollection} and
+\textsf{@inproceedings} allows for citing a part, written by author~X,
+of a publication written by author~Y, and not just edited by~Y.
+
 \item Defines an \textsf{@online} entry type as an alias for \textsf{@misc}.
 
 \item For completeness only: \verb|tugboat.bst| provides editor-intended
@@ -801,13 +816,16 @@
 bibliography of \TUB{} itself (\url{info/tugboat.bib} on \CTAN), and the
 other compilations by Nelson Beebe in that same directory.
 
-Bibliographies provide further problems because they're notoriously
-difficult to typeset at the best of times.  \LaTeX{} sets \cs{sloppy}
-when typesetting the bibliography, but this often leads to unpleasant
-output in the narrow columns typical of \TUB{}.  The author can control
-the typesetting using the command \cs{SetBibJustification}.  The classes
-set \cs{sloppy}, by default (just like \LaTeX{}), but the author may
-(for example) say:
+By the way, we recommending using commas to terminate all fields in
+\texttt{.bib} files, including the last one in an entry. That makes it
+one less thing to worry about when changing fields around in the source.
+
+Bibliographies can be difficult to typeset at the best of times.
+\LaTeX{} sets \cs{sloppy} when typesetting the bibliography, but this
+typically leads to unpleasant output with \TUB's narrow columns. The
+author can specify typesetting parameters using the command
+\cs{SetBibJustification}. The classes remain \cs{sloppy} by default, but
+the author may (for example) say:
 \begin{verbatim}
   \SetBibJustification{\raggedright}
 \end{verbatim}
@@ -816,7 +834,7 @@
 A last note for references: for \TUB\ issues, please use the format
 \textsl{volno\,:\,issno}, e.g., ``\TUB\ 32:1'' for volume~32, number~1.
 
-\section{Non-recommended bibliography facilities}
+\subsection{Non-recommended bibliography facilities}
 
 The preceding gives the bibliography recommendations for current \TUB\
 articles. If, for whatever reason, you do not wish to follow those
@@ -923,6 +941,7 @@
 (almost always) enclosed in braces instead of the various
 forms provided by the `plain' macros.
 
+\newpage
 \SetBibJustification{\raggedright}
 \bibliographystyle{tugboat}
 \bibliography{tubguide}

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/manifest.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/manifest.txt	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/manifest.txt	2020-11-15 22:21:52 UTC (rev 56942)
@@ -1,10 +1,9 @@
-$Id: manifest.txt 205 2018-09-06 17:28:53Z karl $
+$Id: manifest.txt 315 2020-11-15 02:07:34Z karl $
 List of files in the tugboat LaTeX package covered by the LPPL:
 
 ltubguid.ltx
 ltubguid.pdf
 ltugbib.bst
-tugboat.bst
 tugboat.dtx
 tugboat.pdf
 tugboat.ins

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/tugboat.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/tugboat/tugboat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tugboat/tugboat.dtx	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/source/latex/tugboat/tugboat.dtx	2020-11-15 22:21:52 UTC (rev 56942)
@@ -1,5 +1,5 @@
 % \iffalse (this is a meta-comment (so they say))
-% $Id: tugboat.dtx 274 2020-03-12 16:47:21Z karl $
+% $Id: tugboat.dtx 314 2020-11-15 02:06:03Z karl $
 % tugboat.dtx - main source for LaTeX TUGboat classes.
 %
 % Copyright 1994-2020 TeX Users Group.
@@ -28,7 +28,7 @@
 %<ltugboatsty>\ProvidesPackage{ltugboat}
 %<ltugprocsty>\ProvidesPackage{ltugproc}
 %<ltugcomn>   \ProvidesPackage{ltugcomn}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
 %<ltugboatcls>                       TUGboat journal class%
 %<ltugproccls>                       TUG conference proceedings class%
 %<ltugboatsty|ltugprocsty>           TUG compatibility package%
@@ -152,6 +152,7 @@
 % |\JoT|&           The Joy of \TeX\\
 % |\LaTeX|&\\
 % |\LyX|&\\
+% |\macOS|&         mac OS\\
 % |\MacOSX|&        Mac OS X\\
 % |\MathML|&\\
 % |\Mc|&            M with raised c\\
@@ -338,8 +339,6 @@
 % |draft| vs.\ |preprint| vs.\ |final|.
 %
 %    \begin{macrocode}
-\newif\ifpreprint
-\def\preprint{\preprinttrue}
 \DeclareOption{draft}{%
   \AtEndOfClass{%
     \setcounter{page}{901}%
@@ -358,10 +357,16 @@
     \PrelimDrafttrue
   }%
 }
+
+\newif\ifpreprint
+\def\preprint{\preprinttrue}
 \DeclareOption{preprint}{%
    \preprinttrue
 }
+
+\newif\iftubfinaloption % [final]
 \DeclareOption{final}{%
+  \tubfinaloptiontrue
   \AtEndOfClass{%
     \let\thepage=\tuborigthepage
     \NoBlackBoxes
@@ -372,7 +377,7 @@
     % registration marks, etc.
     \ifnum\value{page}>900 \PrelimDrafttrue \else \PrelimDraftfalse \fi
     \@tubrunningfull
-    }%
+  }%
 }
 %    \end{macrocode}
 %
@@ -471,6 +476,17 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\ifsecondcolstart}
+% Occasionally, we need to start an article in the second column of a
+% page, due to splicing with a previous article. Let's try declaring that.
+% Then, before |\maketitle|, we'll force the move to the second column.
+%
+%    \begin{macrocode}
+\newif\iftubsecondcolstart  
+\DeclareOption{secondcolstart}{\tubsecondcolstarttrue}
+%    \end{macrocode}
+% \end{macro}
+%
 % Any other options, we pass on to |article.cls| before we load it:
 %
 %    \begin{macrocode}
@@ -785,6 +801,7 @@
 \def\MkIV{Mk\acro{IV}}
 \let\TB@@mp\mp
 \DeclareRobustCommand{\mp}{\ifmmode\TB@@mp\else MetaPost\fi}
+\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
 %
 % In order that the \cs{OMEGA} command will switch to using the TS1
 % variant of the capital Omega character if \texttt{textcomp.sty} is
@@ -791,6 +808,7 @@
 % loaded, we define it in terms of the \cs{textohm} command.  Note
 % that this requires us to interpose a level of indirection, rather
 % than to use \cs{let}\dots
+% Revised definition of \cs{NTS} based on that used by Phil Taylor.
 %
 %    \begin{macrocode}
 \DeclareRobustCommand{\NTG}{\acro{NTG}}
@@ -803,9 +821,8 @@
 \DeclareRobustCommand{\OOXML}{\acro{OOXML}}
 \DeclareRobustCommand{\OTF}{\acro{OTF}}
 \DeclareRobustCommand{\OTP}{\OMEGA\acro{TP}}
-\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
+\DeclareRobustCommand{\OpTeX}{Op\kern-.05em\TeX}
 %    \end{macrocode}
-% Revised definition of \cs{NTS} based on that used by Phil Taylor.
 %    \begin{macrocode}
 \def\Pas{Pascal}
 \def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3\p@ c}MF\@}
@@ -854,8 +871,7 @@
 \def\TikZ{Ti{\em k}Z}
 \def\ttn{\textsl{TTN}\@}
 \def\TTN{\textsl{\TeX{} and TUG News}}
-\let\texttub\textsl              % redefined in other situations
-\def\TUB{\texttub{TUGboat}}
+\def\TUB{\texttub{TUGboat}}\def\texttub{\textsl} % redefined in some situations
 \def\TUG{\TeX\ \UG}
 \def\tug{\acro{TUG}}
 \def\UG{Users Group}
@@ -881,7 +897,7 @@
 %    \begin{macrocode}
 \def\tubreflect#1{%
   \@ifundefined{reflectbox}{%
-    \TBerror{A graphics package must be loaded for \string\XeTeX}%
+    \TBError{A graphics package must be loaded for \string\XeTeX}%
   }{%
     \ifdim \fontdimen1\font>0pt
       \raise 1.75ex \hbox{\kern.1em\rotatebox{180}{#1}}\kern-.1em
@@ -1051,9 +1067,10 @@
         \advance\minutes by-\time
         \global\multiply\minutes by-1 }
 \SetTime
-\def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes}
+\def\now{\ifnum\hours<10 0\fi\number\hours:%
+         \ifnum\minutes<10 0\fi\number\minutes}
 \def\Now{\today\ \now}
-\newif\ifPrelimDraft
+\newif\ifPrelimDraft    % [draft] or [preprint] or pageno>900
 \def\midrtitle{} % center of running heads
 \def\rtitlenexttopage{\ifPrelimDraft \textsl{\small draft: \Now}\fi}
 %    \end{macrocode}
@@ -1196,6 +1213,7 @@
 \ifx\hyper at normalise\undefined
   \def\tbsurl{\url}% no hyperref, so just \url is fine.
   \def\tbhurl{\url}%
+  \ifx\url\undefined \let\url\texttt \fi % er, make sure \url is defined
 \else
   % This hyperref hook-in is due to Ulrike Fischer.
   % \url{https://github.com/latex3/hyperref/issues/125}.
@@ -1209,11 +1227,15 @@
 % Make \! work in text mode.
 \DeclareRobustCommand{\!}{\ifmmode\mskip-\thinmuskip \else\kern-0.16667em \fi}
 %
-% Half a thinspace.
+% Half a thinspace, positive and negative.
 \DeclareRobustCommand{\tubthinnerspace}
   {\ifmmode\mskip.5\thinmuskip \else\kern0.08333em \fi}
 \DeclareRobustCommand{\tubthinnerspaceneg}
   {\ifmmode\mskip-.5\thinmuskip \else\kern-0.08333em \fi}
+% 
+% Half a smallskip.
+\DeclareRobustCommand{\tubsmallerskip}
+  {\vskip 1.5pt plus .75pt minus .75pt\relax}
 %
 %    \end{macrocode}
 %
@@ -1293,7 +1315,7 @@
   \therevauth\therevtitle\therevpubinfo\endgraf}%
   \vskip\medskipamount
 }
-\def\booktitle#1{{\slshape#1\/}}
+\def\booktitle#1{{\slshape\frenchspacing#1\/}}
 %    \end{macrocode}
 %
 %  \subsection{Dates, volume and issue numbers, etc.}
@@ -1313,38 +1335,35 @@
 %
 % For production, these are set in a separate file,
 % |tugboat.dates|, which is issue-specific.
-%
-% \begin{description}
-% \item[\emph{Comment:}] I would like to make the code read a file
-%   |tugboat.dates| in the current directory or its parent.
-%   This is easy except under `odd' operating systems ({\small VMS} is
-%   an example that springs to mind, {\small RISC}os may be even
-%   worse) whose syntax is out of the ordinary.
-% \end{description}
-%
+% 
 %    \begin{macrocode}
-\newcount\issueseqno            \issueseqno=-1
+\newcount\issueseqno \issueseqno=-1
 \def\v at lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}}
 \def\volyr{}
 \def\volno{}
-\def\vol #1,#2.{\gdef\volno{#1\unskip}%
-        \gdef\issno{\ignorespaces#2\unskip}%
+\def\vol#1, #2.{%
+        \gdef\volno{#1}%
+        \gdef\issno{#2}%
         \setbox\TestBox=\hbox{\volyr}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issyear #1.{\gdef\issdt{#1}\gdef\volyr{#1}%
+\def\issyear#1.{%
+        \gdef\issdt{#1}\gdef\volyr{#1}%
         \gdef\bigissdt{#1}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
+\def\issdate#1#2 #3.{%
+        \gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
         \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
+% The \vol command must be invoked precisely like this, including spaces.
+% Since we are the only ones who write it, we can be strict.
 \vol 0, 0.
 \issdate Thermidor, 9999.
 %    \end{macrocode}
 %
-% (The curious should know that \emph{Thermidor} was one of the French
-% revolutionary month names\dots)
+% (The curious may like to know that \emph{Thermidor} was one of the French
+% revolutionary month names.)
 %
 % For \LaTeX{} use, define a version of the issue declaration that can
 % take or leave the old plain syntax
@@ -1507,10 +1526,10 @@
 \ifx\tubomithyphenations\@thisisundefined
 \hyphenation{Del-a-ware Dijk-stra Duane Eijk-hout
   Flor-i-da Free-BSD Ghost-script Ghost-view
-  Hara-lam-bous Jac-kow-ski Karls-ruhe
+  Hara-lam-bous Jac-kow-ski Ja-pa-nese Karls-ruhe
   Mac-OS Ma-la-ya-lam Math-Sci-Net
   Net-BSD Open-BSD Open-Office
-  Pfa-Edit Post-Script Rich-ard Skoup South-all
+  Pak-i-stan Pfa-Edit Post-Script Rich-ard Skoup South-all
   Vieth VM-ware Win-Edt
   acro-nym acro-nyms analy-sis ap-pen-di-ces ap-pen-dix asyn-chro-nous
   bib-lio-graph-i-cal bit-map bit-mapped bit-maps buf-fer buf-fers bool-ean
@@ -1569,6 +1588,11 @@
 \parsep=3\p@\@plus\p@\@minus\p@
 \itemsep=\parsep
 %
+% The width of one column plus gutter (=243pt) is useful sometimes.
+\newdimen\tubcolwidthandgutter
+  \tubcolwidthandgutter=\columnwidth
+  \advance\tubcolwidthandgutter by \columnsep
+%
 % Ordinarily we typeset in two columns, but the onecolumn option
 % goes to one.  In which case we want to center the text block on an
 % 8.5in width, given the default 72.27pt offset with margins of zero.
@@ -2105,11 +2129,17 @@
 % author or other title.  In this case, the command flushes out the
 % latest \cs{sectitle} (or whatever) but does nothing else.
 %
-% Provide machinery to skip extra space, even one or more full columns,
+% Provide machinery (|\PreTitleDrop| to skip extra space, even one or
+% more full columns, 
 % above the top of an article to leave space to paste up a previous
 % article that has finished on the same page.  This is a fall back to
 % accommodate the fact that multiple articles cannot yet be run together
 % easily with \LaTeXe.
+% 
+% In addition, if the |secondcolstart| option was specified, do
+% |\null\newpage| to move over. This is separate from |\PreTitleDrop|,
+% for no particular reason.
+% 
 %    \begin{macrocode}
 \newif\if at articletitle
 \def\maketitle{\@ifstar
@@ -2126,6 +2156,7 @@
    \vbox to \PreTitleDrop{}
    \global\PreTitleDrop=\z@
  \fi
+ \iftubsecondcolstart \null\newpage\fi
  \begingroup
  \setcounter{footnote}{0}
  \global\@topnum\z@ % disallow floats above the title
@@ -2428,6 +2459,7 @@
 % \textsc{numbersec} is in effect.
 %
 %    \begin{macrocode}
+\def\tubsechook{}
 \if at numbersec
   \def\section{\TB at startsection{{section}%
                                 1%
@@ -2434,25 +2466,25 @@
                                 \z@
                                 {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                 {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsection{\TB at startsection{{subsection}%
                                    2%
                                    \z@
                                    {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                    {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsubsection{\TB at startsection{{subsubsection}%
                                       3%
                                       \z@
                                       {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                       {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\paragraph{\TB at startsection{{paragraph}%
                                   4%
                                   \z@
                                   {4\p@ \@plus1\p@ \@minus1\p@}%
                                   {-1em}%
-                                  {\normalsize\bf}}}
+                                  {\normalsize\bf\tubsechook}}}
 %    \end{macrocode}
 %
 % Now the version if class option \textsc{nonumber} is in effect,
@@ -2467,7 +2499,7 @@
                                 \z@
                                 {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                 {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsection{\TB at nolimelabel
                   \TB at startsection{{subsection}%
                                    2%
@@ -2474,7 +2506,7 @@
                                    \z@
                                    {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                    {-0.5em\@plus-\fontdimen3\font}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsubsection{\TB at nolimelabel
                      \TB at startsection{{subsubsection}%
                                       3%
@@ -2481,13 +2513,13 @@
                                       \parindent
                                       {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                       {-0.5em\@plus-\fontdimen3\font}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
 \fi
 %    \end{macrocode}
 %
 % \cs{TB at startsection} used to warn about \verb"*" versions of sectioning
 % commands when numbering wasn't in effect.  But that eventually seemed
-% a useless complaint, since it can be usefule to switch back and forth between
+% a useless complaint, since it can be useful to switch back and forth between
 % numbered and unnumbered can be useful during article development.
 % So now \cs{TB at startsection} is just a synonym for \cs{@startsection}.
 %
@@ -2722,7 +2754,7 @@
 % \end{macro}
 %
 % One-line captions are normally centered, but sometimes we want to set
-% them flush-left for consistency with other nearby figures.
+% them flush-left for consistency with other nearby figures. 
 % \begin{macro}{\tubcaptionleftglue}
 %    \begin{macrocode}
 \let\tubcaptionleftglue=\hfil
@@ -2745,7 +2777,7 @@
      \fi
      \noindent \tubmakecaptionbox{#1}{#2}\par}%
   \else
-    % fits on one line; use the hbox, centered.  Do not reset its glue.
+    % fits on one line; use the hbox, usually centered.  Do not reset its glue.
     \global\@minipagefalse
     \hb at xt@\hsize{\tubcaptionleftglue\box\@tempboxa\hfil}%
   \fi
@@ -3261,7 +3293,7 @@
 \def\botregister{\tbotregister}
 %    \end{macrocode}
 %
-% \subsection{Running heads}
+% \subsection{Running headers and footers}
 %
 %    \begin{macrocode}
 \def\rtitlex{\def\texttub##1{{\normalsize\textrm{##1}}}\TUB, \volx}
@@ -3297,21 +3329,23 @@
   \def\@oddfoot{% make line break commands produce a normal space
     \def\\{\unskip\ \ignorespaces}%
     \let\newline=\\%
-    \frenchspacing
-    \hfil\rhTitle}
-  \def\@evenfoot{\frenchspacing \let\thanks\@gobble \tubrunningauthor\hfil}
+    \tubtypesetdoi
+    \frenchspacing\hfil\rhTitle}
+  \def\@evenfoot{%
+    \let\thanks\@gobble 
+    \tubtypesetdoi
+    \frenchspacing\tubrunningauthor\hfil}
 }
 
 % empty footer.
 \def\@tubrunningminimal{%
-  \def\@oddfoot{\hfil}%
-  \def\@evenfoot{\hfil}%
+  \def\@oddfoot{\tubtypesetdoi\hfil}%
+  \def\@evenfoot{\tubtypesetdoi\hfil}%
 }
 
 % empty footer and header.
 \def\@tubrunningoff{%
-  \def\@oddfoot{\hfil}%
-  \def\@evenfoot{\hfil}%
+  \@tubrunningminimal
   \def\@oddhead{\hfil}%
   \def\@evenhead{\hfil}%
 }
@@ -3320,6 +3354,43 @@
 \pagestyle{headings}
 %    \end{macrocode}
 %
+% Typeset the doi. The format we decided on looks like:
+% \texttt{https://doi.org/10.47397/tb/41-3/tb129mansour-nonlatin}
+% where the last element is (usually) the |\jobname|.
+% 
+% We put this below the footline. The footer definitions above specify
+% that it is always called, even if the regular footer is empty.
+%
+% If the article started in the second column (option [secondcolstart]),
+% have to manually move the doi over.
+% 
+% We do not check for validity of |\volno|, etc. For testing, etc.,
+% seems simpler to just typeset what we've got.
+% 
+% But don't do any of this yet. Maybe for 42:1.
+% 
+%    \begin{macrocode}
+%
+\def\tubdoiprefix{10.47397/tb} % the number crossref assigned us
+%
+\def\notyettubtypesetdoi{\iftubfinaloption % do this if [final], even if pageno>900
+  \vbox to 0pt{% don't impact normal layout
+    \edef\thedoi{\ifnum\value{page}>900 xnot\fi % but make url invalid if >900
+                 doi.org/\tubdoiprefix/\volno-\issno/\jobname}%
+    \scriptsize
+    \vskip\baselineskip
+    \iftubsecondcolstart \moveright \tubcolwidthandgutter \fi
+    \rlap{\expandafter\tbsurl\expandafter{\thedoi}}%
+    \vss
+  }%
+  \global\let\tubtypesetdoi\@empty % only do it once, no matter what.
+\fi}
+%
+\def\tubtypesetdoi{}
+%
+%    \end{macrocode}
+%
+%
 % \subsection{Output routine}
 % Modified to alter |\brokenpenalty| across columns
 %

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls	2020-11-15 22:21:52 UTC (rev 56942)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesClass  {ltugboat}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
                        TUGboat journal class%
                    ]
 \csname tugstyloaded@\endcsname
@@ -42,8 +42,6 @@
 \def\TBError{\ClassError{\@tugclass}}
 \def\TBWarning{\ClassWarning{\@tugclass}}
 \def\TBWarningNL{\ClassWarningNoLine{\@tugclass}}
-\newif\ifpreprint
-\def\preprint{\preprinttrue}
 \DeclareOption{draft}{%
   \AtEndOfClass{%
     \setcounter{page}{901}%
@@ -62,10 +60,16 @@
     \PrelimDrafttrue
   }%
 }
+
+\newif\ifpreprint
+\def\preprint{\preprinttrue}
 \DeclareOption{preprint}{%
    \preprinttrue
 }
+
+\newif\iftubfinaloption % [final]
 \DeclareOption{final}{%
+  \tubfinaloptiontrue
   \AtEndOfClass{%
     \let\thepage=\tuborigthepage
     \NoBlackBoxes
@@ -76,7 +80,7 @@
     % registration marks, etc.
     \ifnum\value{page}>900 \PrelimDrafttrue \else \PrelimDraftfalse \fi
     \@tubrunningfull
-    }%
+  }%
 }
 \AtBeginDocument{%
   \ifx\undefined\texorpdfstring
@@ -105,6 +109,8 @@
 \DeclareOption{runningfull}{\AtEndOfClass{\@tubrunningfull}}
 \newif\if at tubtwocolumn  \@tubtwocolumntrue
 \DeclareOption{onecolumn}{\@tubtwocolumnfalse}
+\newif\iftubsecondcolstart
+\DeclareOption{secondcolstart}{\tubsecondcolstarttrue}
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
 \ExecuteOptions{draft,extralabel,numbersec,rawcite,runningminimal}
 \ProcessOptions
@@ -271,6 +277,7 @@
 \def\MkIV{Mk\acro{IV}}
 \let\TB@@mp\mp
 \DeclareRobustCommand{\mp}{\ifmmode\TB@@mp\else MetaPost\fi}
+\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
 \DeclareRobustCommand{\NTG}{\acro{NTG}}
 \DeclareRobustCommand{\NTS}{\ensuremath{\mathcal{N}\mkern-4mu
   \raisebox{-0.5ex}{$\mathcal{T}$}\mkern-2mu \mathcal{S}}}
@@ -281,7 +288,7 @@
 \DeclareRobustCommand{\OOXML}{\acro{OOXML}}
 \DeclareRobustCommand{\OTF}{\acro{OTF}}
 \DeclareRobustCommand{\OTP}{\OMEGA\acro{TP}}
-\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
+\DeclareRobustCommand{\OpTeX}{Op\kern-.05em\TeX}
 \def\Pas{Pascal}
 \def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3\p@ c}MF\@}
 \def\PCTeX{PC\thinspace\TeX}
@@ -329,8 +336,7 @@
 \def\TikZ{Ti{\em k}Z}
 \def\ttn{\textsl{TTN}\@}
 \def\TTN{\textsl{\TeX{} and TUG News}}
-\let\texttub\textsl              % redefined in other situations
-\def\TUB{\texttub{TUGboat}}
+\def\TUB{\texttub{TUGboat}}\def\texttub{\textsl} % redefined in some situations
 \def\TUG{\TeX\ \UG}
 \def\tug{\acro{TUG}}
 \def\UG{Users Group}
@@ -345,7 +351,7 @@
 \def\WYSIWYG{\acro{WYSIWYG}}
 \def\tubreflect#1{%
   \@ifundefined{reflectbox}{%
-    \TBerror{A graphics package must be loaded for \string\XeTeX}%
+    \TBError{A graphics package must be loaded for \string\XeTeX}%
   }{%
     \ifdim \fontdimen1\font>0pt
       \raise 1.75ex \hbox{\kern.1em\rotatebox{180}{#1}}\kern-.1em
@@ -425,9 +431,10 @@
         \advance\minutes by-\time
         \global\multiply\minutes by-1 }
 \SetTime
-\def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes}
+\def\now{\ifnum\hours<10 0\fi\number\hours:%
+         \ifnum\minutes<10 0\fi\number\minutes}
 \def\Now{\today\ \now}
-\newif\ifPrelimDraft
+\newif\ifPrelimDraft    % [draft] or [preprint] or pageno>900
 \def\midrtitle{} % center of running heads
 \def\rtitlenexttopage{\ifPrelimDraft \textsl{\small draft: \Now}\fi}
 \newdimen\raggedskip    \raggedskip=\z@
@@ -488,6 +495,7 @@
 \ifx\hyper at normalise\undefined
   \def\tbsurl{\url}% no hyperref, so just \url is fine.
   \def\tbhurl{\url}%
+  \ifx\url\undefined \let\url\texttt \fi % er, make sure \url is defined
 \else
   % This hyperref hook-in is due to Ulrike Fischer.
   % \url{https://github.com/latex3/hyperref/issues/125}.
@@ -502,6 +510,8 @@
   {\ifmmode\mskip.5\thinmuskip \else\kern0.08333em \fi}
 \DeclareRobustCommand{\tubthinnerspaceneg}
   {\ifmmode\mskip-.5\thinmuskip \else\kern-0.08333em \fi}
+\DeclareRobustCommand{\tubsmallerskip}
+  {\vskip 1.5pt plus .75pt minus .75pt\relax}
 \def\endash{--}
 \def\emdash{\endash-}
 \def\d at sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
@@ -552,20 +562,23 @@
   \therevauth\therevtitle\therevpubinfo\endgraf}%
   \vskip\medskipamount
 }
-\def\booktitle#1{{\slshape#1\/}}
-\newcount\issueseqno            \issueseqno=-1
+\def\booktitle#1{{\slshape\frenchspacing#1\/}}
+\newcount\issueseqno \issueseqno=-1
 \def\v at lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}}
 \def\volyr{}
 \def\volno{}
-\def\vol #1,#2.{\gdef\volno{#1\unskip}%
-        \gdef\issno{\ignorespaces#2\unskip}%
+\def\vol#1, #2.{%
+        \gdef\volno{#1}%
+        \gdef\issno{#2}%
         \setbox\TestBox=\hbox{\volyr}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issyear #1.{\gdef\issdt{#1}\gdef\volyr{#1}%
+\def\issyear#1.{%
+        \gdef\issdt{#1}\gdef\volyr{#1}%
         \gdef\bigissdt{#1}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
+\def\issdate#1#2 #3.{%
+        \gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
         \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
@@ -641,10 +654,10 @@
 \ifx\tubomithyphenations\@thisisundefined
 \hyphenation{Del-a-ware Dijk-stra Duane Eijk-hout
   Flor-i-da Free-BSD Ghost-script Ghost-view
-  Hara-lam-bous Jac-kow-ski Karls-ruhe
+  Hara-lam-bous Jac-kow-ski Ja-pa-nese Karls-ruhe
   Mac-OS Ma-la-ya-lam Math-Sci-Net
   Net-BSD Open-BSD Open-Office
-  Pfa-Edit Post-Script Rich-ard Skoup South-all
+  Pak-i-stan Pfa-Edit Post-Script Rich-ard Skoup South-all
   Vieth VM-ware Win-Edt
   acro-nym acro-nyms analy-sis ap-pen-di-ces ap-pen-dix asyn-chro-nous
   bib-lio-graph-i-cal bit-map bit-mapped bit-maps buf-fer buf-fers bool-ean
@@ -696,6 +709,9 @@
 \topsep=3\p@\@plus\p@\@minus\p@
 \parsep=3\p@\@plus\p@\@minus\p@
 \itemsep=\parsep
+\newdimen\tubcolwidthandgutter
+  \tubcolwidthandgutter=\columnwidth
+  \advance\tubcolwidthandgutter by \columnsep
 \if at tubtwocolumn \twocolumn \else
   \onecolumn
   \textwidth=34pc
@@ -943,6 +959,7 @@
    \vbox to \PreTitleDrop{}
    \global\PreTitleDrop=\z@
  \fi
+ \iftubsecondcolstart \null\newpage\fi
  \begingroup
  \setcounter{footnote}{0}
  \global\@topnum\z@ % disallow floats above the title
@@ -1095,6 +1112,7 @@
     {$--*--$}
   \end{center}
   \vspace{.5\baselineskip}}
+\def\tubsechook{}
 \if at numbersec
   \def\section{\TB at startsection{{section}%
                                 1%
@@ -1101,25 +1119,25 @@
                                 \z@
                                 {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                 {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsection{\TB at startsection{{subsection}%
                                    2%
                                    \z@
                                    {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                    {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsubsection{\TB at startsection{{subsubsection}%
                                       3%
                                       \z@
                                       {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                       {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\paragraph{\TB at startsection{{paragraph}%
                                   4%
                                   \z@
                                   {4\p@ \@plus1\p@ \@minus1\p@}%
                                   {-1em}%
-                                  {\normalsize\bf}}}
+                                  {\normalsize\bf\tubsechook}}}
 \else
   \setcounter{secnumdepth}{0}
   \def\section{\TB at nolimelabel
@@ -1128,7 +1146,7 @@
                                 \z@
                                 {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                 {4\p@}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsection{\TB at nolimelabel
                   \TB at startsection{{subsection}%
                                    2%
@@ -1135,7 +1153,7 @@
                                    \z@
                                    {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                    {-0.5em\@plus-\fontdimen3\font}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
   \def\subsubsection{\TB at nolimelabel
                      \TB at startsection{{subsubsection}%
                                       3%
@@ -1142,7 +1160,7 @@
                                       \parindent
                                       {-8\p@ \@plus-2\p@ \@minus-2\p@}%
                                       {-0.5em\@plus-\fontdimen3\font}%
-          {\normalsize\bf\raggedright\hyphenpenalty=\@M}}}
+          {\normalsize\bf\raggedright\hyphenpenalty\@M\tubsechook}}}
 \fi
 \def\TB at startsection#1{\@startsection#1}%
 \def\TB at safe@startsection#1{\@startsection#1}
@@ -1240,7 +1258,7 @@
      \fi
      \noindent \tubmakecaptionbox{#1}{#2}\par}%
   \else
-    % fits on one line; use the hbox, centered.  Do not reset its glue.
+    % fits on one line; use the hbox, usually centered.  Do not reset its glue.
     \global\@minipagefalse
     \hb at xt@\hsize{\tubcaptionleftglue\box\@tempboxa\hfil}%
   \fi
@@ -1514,19 +1532,21 @@
   \def\@oddfoot{% make line break commands produce a normal space
     \def\\{\unskip\ \ignorespaces}%
     \let\newline=\\%
-    \frenchspacing
-    \hfil\rhTitle}
-  \def\@evenfoot{\frenchspacing \let\thanks\@gobble \tubrunningauthor\hfil}
+    \tubtypesetdoi
+    \frenchspacing\hfil\rhTitle}
+  \def\@evenfoot{%
+    \let\thanks\@gobble
+    \tubtypesetdoi
+    \frenchspacing\tubrunningauthor\hfil}
 }
 
 \def\@tubrunningminimal{%
-  \def\@oddfoot{\hfil}%
-  \def\@evenfoot{\hfil}%
+  \def\@oddfoot{\tubtypesetdoi\hfil}%
+  \def\@evenfoot{\tubtypesetdoi\hfil}%
 }
 
 \def\@tubrunningoff{%
-  \def\@oddfoot{\hfil}%
-  \def\@evenfoot{\hfil}%
+  \@tubrunningminimal
   \def\@oddhead{\hfil}%
   \def\@evenhead{\hfil}%
 }
@@ -1533,6 +1553,20 @@
 
 \def\ps at headings{}
 \pagestyle{headings}
+\def\tubdoiprefix{10.47397/tb} % the number crossref assigned us
+\def\notyettubtypesetdoi{\iftubfinaloption % do this if [final], even if pageno>900
+  \vbox to 0pt{% don't impact normal layout
+    \edef\thedoi{\ifnum\value{page}>900 xnot\fi % but make url invalid if >900
+                 doi.org/\tubdoiprefix/\volno-\issno/\jobname}%
+    \scriptsize
+    \vskip\baselineskip
+    \iftubsecondcolstart \moveright \tubcolwidthandgutter \fi
+    \rlap{\expandafter\tbsurl\expandafter{\thedoi}}%
+    \vss
+  }%
+  \global\let\tubtypesetdoi\@empty % only do it once, no matter what.
+\fi}
+\def\tubtypesetdoi{}
 \def\@outputdblcol{\if at firstcolumn \global\@firstcolumnfalse
     \global\setbox\@leftcolumn\box\@outputbox
     \global\brokenpenalty10000

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty	2020-11-15 22:21:52 UTC (rev 56942)
@@ -31,7 +31,7 @@
 %% extension .ins) which are part of the distribution.
 %% 
 \ProvidesPackage{ltugboat}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
            TUG compatibility package%
                    ]
 \@obsoletefile{ltugboat.cls}{ltugboat.sty}

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty	2020-11-15 22:21:52 UTC (rev 56942)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
    \ProvidesPackage{ltugcomn}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
                           TUGboat `common macros' package%
                    ]
 \IfFileExists{mflogo.sty}%
@@ -191,6 +191,7 @@
 \def\MkIV{Mk\acro{IV}}
 \let\TB@@mp\mp
 \DeclareRobustCommand{\mp}{\ifmmode\TB@@mp\else MetaPost\fi}
+\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
 \DeclareRobustCommand{\NTG}{\acro{NTG}}
 \DeclareRobustCommand{\NTS}{\ensuremath{\mathcal{N}\mkern-4mu
   \raisebox{-0.5ex}{$\mathcal{T}$}\mkern-2mu \mathcal{S}}}
@@ -201,7 +202,7 @@
 \DeclareRobustCommand{\OOXML}{\acro{OOXML}}
 \DeclareRobustCommand{\OTF}{\acro{OTF}}
 \DeclareRobustCommand{\OTP}{\OMEGA\acro{TP}}
-\def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@}
+\DeclareRobustCommand{\OpTeX}{Op\kern-.05em\TeX}
 \def\Pas{Pascal}
 \def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3\p@ c}MF\@}
 \def\PCTeX{PC\thinspace\TeX}
@@ -249,8 +250,7 @@
 \def\TikZ{Ti{\em k}Z}
 \def\ttn{\textsl{TTN}\@}
 \def\TTN{\textsl{\TeX{} and TUG News}}
-\let\texttub\textsl              % redefined in other situations
-\def\TUB{\texttub{TUGboat}}
+\def\TUB{\texttub{TUGboat}}\def\texttub{\textsl} % redefined in some situations
 \def\TUG{\TeX\ \UG}
 \def\tug{\acro{TUG}}
 \def\UG{Users Group}
@@ -265,7 +265,7 @@
 \def\WYSIWYG{\acro{WYSIWYG}}
 \def\tubreflect#1{%
   \@ifundefined{reflectbox}{%
-    \TBerror{A graphics package must be loaded for \string\XeTeX}%
+    \TBError{A graphics package must be loaded for \string\XeTeX}%
   }{%
     \ifdim \fontdimen1\font>0pt
       \raise 1.75ex \hbox{\kern.1em\rotatebox{180}{#1}}\kern-.1em
@@ -345,9 +345,10 @@
         \advance\minutes by-\time
         \global\multiply\minutes by-1 }
 \SetTime
-\def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes}
+\def\now{\ifnum\hours<10 0\fi\number\hours:%
+         \ifnum\minutes<10 0\fi\number\minutes}
 \def\Now{\today\ \now}
-\newif\ifPrelimDraft
+\newif\ifPrelimDraft    % [draft] or [preprint] or pageno>900
 \def\midrtitle{} % center of running heads
 \def\rtitlenexttopage{\ifPrelimDraft \textsl{\small draft: \Now}\fi}
 \newdimen\raggedskip    \raggedskip=\z@
@@ -408,6 +409,7 @@
 \ifx\hyper at normalise\undefined
   \def\tbsurl{\url}% no hyperref, so just \url is fine.
   \def\tbhurl{\url}%
+  \ifx\url\undefined \let\url\texttt \fi % er, make sure \url is defined
 \else
   % This hyperref hook-in is due to Ulrike Fischer.
   % \url{https://github.com/latex3/hyperref/issues/125}.
@@ -422,6 +424,8 @@
   {\ifmmode\mskip.5\thinmuskip \else\kern0.08333em \fi}
 \DeclareRobustCommand{\tubthinnerspaceneg}
   {\ifmmode\mskip-.5\thinmuskip \else\kern-0.08333em \fi}
+\DeclareRobustCommand{\tubsmallerskip}
+  {\vskip 1.5pt plus .75pt minus .75pt\relax}
 \def\endash{--}
 \def\emdash{\endash-}
 \def\d at sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
@@ -472,20 +476,23 @@
   \therevauth\therevtitle\therevpubinfo\endgraf}%
   \vskip\medskipamount
 }
-\def\booktitle#1{{\slshape#1\/}}
-\newcount\issueseqno            \issueseqno=-1
+\def\booktitle#1{{\slshape\frenchspacing#1\/}}
+\newcount\issueseqno \issueseqno=-1
 \def\v at lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}}
 \def\volyr{}
 \def\volno{}
-\def\vol #1,#2.{\gdef\volno{#1\unskip}%
-        \gdef\issno{\ignorespaces#2\unskip}%
+\def\vol#1, #2.{%
+        \gdef\volno{#1}%
+        \gdef\issno{#2}%
         \setbox\TestBox=\hbox{\volyr}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issyear #1.{\gdef\issdt{#1}\gdef\volyr{#1}%
+\def\issyear#1.{%
+        \gdef\issdt{#1}\gdef\volyr{#1}%
         \gdef\bigissdt{#1}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
-\def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
+\def\issdate#1#2 #3.{%
+        \gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
         \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}%
         \setbox\TestBox=\hbox{\volno}%
         \ifdim \wd\TestBox > .2em \v at lx \fi }
@@ -561,10 +568,10 @@
 \ifx\tubomithyphenations\@thisisundefined
 \hyphenation{Del-a-ware Dijk-stra Duane Eijk-hout
   Flor-i-da Free-BSD Ghost-script Ghost-view
-  Hara-lam-bous Jac-kow-ski Karls-ruhe
+  Hara-lam-bous Jac-kow-ski Ja-pa-nese Karls-ruhe
   Mac-OS Ma-la-ya-lam Math-Sci-Net
   Net-BSD Open-BSD Open-Office
-  Pfa-Edit Post-Script Rich-ard Skoup South-all
+  Pak-i-stan Pfa-Edit Post-Script Rich-ard Skoup South-all
   Vieth VM-ware Win-Edt
   acro-nym acro-nyms analy-sis ap-pen-di-ces ap-pen-dix asyn-chro-nous
   bib-lio-graph-i-cal bit-map bit-mapped bit-maps buf-fer buf-fers bool-ean

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls	2020-11-15 22:21:52 UTC (rev 56942)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesClass  {ltugproc}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
                        TUG conference proceedings class%
                    ]
 \def\@tugclass{ltugproc}

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty	2020-11-15 22:21:31 UTC (rev 56941)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty	2020-11-15 22:21:52 UTC (rev 56942)
@@ -31,7 +31,7 @@
 %% extension .ins) which are part of the distribution.
 %% 
 \ProvidesPackage{ltugproc}
-                   [2020-03-12 v2.23
+                   [2020-11-14 v2.24
            TUG compatibility package%
                    ]
 \@obsoletefile{ltugproc.cls}{ltugproc.sty}



More information about the tex-live-commits mailing list.