texlive[67549] Master/texmf-dist: tugboat (4jul23)

commits+karl at tug.org commits+karl at tug.org
Tue Jul 4 21:54:52 CEST 2023


Revision: 67549
          http://tug.org/svn/texlive?view=revision&revision=67549
Author:   karl
Date:     2023-07-04 21:54:52 +0200 (Tue, 04 Jul 2023)
Log Message:
-----------
tugboat (4jul23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst
    trunk/Master/texmf-dist/doc/latex/tugboat/NEWS
    trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx
    trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.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/tugboat-code.pdf

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/tugboat/tugboat.pdf

Modified: trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/bibtex/bst/tugboat/tugboat.bst	2023-07-04 19:54:52 UTC (rev 67549)
@@ -1,4 +1,4 @@
-%%% $Id: tugboat.bst 462 2023-03-08 17:26:54Z karl $
+%%% $Id: tugboat.bst 487 2023-06-22 22:39:59Z karl $
 %%% TUGboat changes are public domain.
 %%% 
 %%% Modified for TUGboat from abbrvurl.bst:
@@ -28,7 +28,7 @@
 %%%     "nowarning" - if set, omit empty field warnings from output.check.
 %%%     "prebibitem" - material output before \bibitem, with newline appended
 %%%       (for example, section headings).
-%%%     "urlnewline" - force line break before url value;
+%%%     "urlnewline" - force line break before url or doi value;
 %%% --karl, originally created 24jul18.
 %%% 
 %%% Modification of BibTeX style file /usr/local/texlive/2009/texmf-dist/bibtex/bst/base/abbrv.bst
@@ -85,6 +85,7 @@
     version    % ctan
     %
     journaltie % tub
+    monthtie   % tub
     newpage    % tub
     nowarning  % tub
     prebibitem % tub
@@ -189,9 +190,10 @@
     { last.output.check "journal" = not
         { ", " * }
         { journaltie empty$ not
-          { "~" * }
-          { " " * }
+          { "~" }
+          { " " }
           if$
+          *
         }
       if$
       write$
@@ -350,10 +352,18 @@
   before.all 'output.state :=
 }
 
-FUNCTION {fin.entry.original} % urlbst (renamed from fin.entry, so it can be wrapped below)
+% we wrap this function below to handle urls.
+% The url string to print (of whatever sort) is on the stack to write$.
+% If the `urlnewline' field is set, write "\newline" first.
+FUNCTION {fin.entry.original} % urlbst (renamed from fin.entry)
 { doi empty$  url empty$  and
     { add.period$ }
-    { skip$ }
+    {
+      urlnewline empty$ not
+        { "\newline " write$ }
+        'skip$
+      if$
+    }
   if$
   write$
   newline$
@@ -600,7 +610,14 @@
     }
     { month empty$
         'year
-        { month " " * year * }
+        { month
+          monthtie empty$ not
+            { "~" }
+            { " " }
+          if$
+          *
+          year *
+        }
       if$
     }
   if$
@@ -1033,17 +1050,11 @@
 % so that `format.url format.lastchecked * output' ends up with both
 % the URL and the lastchecked in brackets.
 % 
-% If the `urlnewline' field is present, output \newline before the
-% url value.
 FUNCTION {output.url}
 { url empty$
     'skip$ 
     { new.block 
       format.url output
-      urlnewline empty$ not
-        { "\newline " write$ }
-        'skip$
-      if$
       format.lastchecked output 
     }
   if$
@@ -1108,10 +1119,10 @@
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
 % See references 
-%   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
-%   http://www.classroom.net/classroom/CitingNetResources.html
-%   http://neal.ctstateu.edu/history/cite.html
-%   http://www.cas.usf.edu/english/walker/mla.html
+%   [gone] ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
+%   [gone] http://www.classroom.net/classroom/CitingNetResources.html
+%   [gone] http://neal.ctstateu.edu/history/cite.html
+%   [gone] http://www.cas.usf.edu/english/walker/mla.html
 % for citation formats for web pages.
 FUNCTION {webpage}
 { output.bibitem
@@ -1130,7 +1141,8 @@
   new.block
   title empty$ 'skip$ 'possibly.setup.inlinelink if$
   format.title "title" output.check
-  inbrackets onlinestring output
+  % This causes the year to be output in brackets, which we don't want:
+  %   inbrackets onlinestring output
   new.block
   year empty$
     'skip$

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/NEWS
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/NEWS	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/NEWS	2023-07-04 19:54:52 UTC (rev 67549)
@@ -1,6 +1,19 @@
-$Id: NEWS 463 2023-03-08 21:59:19Z karl $
+$Id: NEWS 490 2023-07-03 22:27:49Z karl $
 This file records noteworthy changes.  This file is public domain.
 
+ltugboat.cls:
+- print page numbers with preceding ? in draft mode, including in references,
+  by redefining \thepage.
+- new abbrev \XMP.
+
+tugboat.bst:
+- for webpage entry type, do not output random material in brackets.
+- new field "monthtie" to editorially force a tie after the month.
+
+ltubguid documentation:
+- mention preferred placement of captions, namely below figures
+but above tables and listings.
+
 -----------------
 2.29 (2023-03-08):
 

Modified: trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/ltubguid.ltx	2023-07-04 19:54:52 UTC (rev 67549)
@@ -1,4 +1,4 @@
-% $Id: ltubguid.ltx 458 2023-01-16 18:44:30Z karl $
+% $Id: ltubguid.ltx 487 2023-06-22 22:39:59Z karl $
 % ltubguid.ltx - documentation for ltugboat classes.
 % 
 % Copyright 1994-2023 TeX Users Group.
@@ -571,25 +571,18 @@
 
 \section{Floating inserts}
 
-The classes do not make any change to \LaTeX{}'s built-in provision
-for floating inserts, so that authors may generate figures and tables
-just as they would in any `normal' \LaTeX{} document.  Figure and
-table captions, and labels referring to them, are also substantially
-untouched.
+The classes do not make any change to \LaTeX{}'s built-in provision for
+floating inserts, so that authors may write figures and tables as usual,
 
-However, since both classes typeset in two columns, authors must
-distinguish between the \envname{figure} and \envname{table} environments
-(which produce floats that are the same width as the column) and the
-\envname{figure*} and \envname{table*} (which produce floats that are the same
-width as the page).
+The default is for floats to be the width of the column. To make a float
+which is the width of the whole page, use \envname{figure*} and
+\envname{table*}.
 
-%\begin{itemize}
-%\item figures and tables as normal
-%\item captions and labels work whatever (i.e., no restriction on
-%  numbering)
-%\item twocolumn setting implies distinction between \envname{figure} and
-%  \envname{figure*} 
-%\end{itemize}
+Regarding caption placement, \TUB's convention is to put captions for
+figures beneath the figure, but captions for tables and listings above
+the table\slash listing. Please follow this convention unless there is a
+specific reason not to. As a reminder, \cs{label} commands should always
+follow the \cs{caption}.
 
 \section{Special-purpose typesetting}
 
@@ -830,16 +823,16 @@
 \CTAN, following the fields output by the \pkgname{ctanbib} script (in
 the package of the same name, \url{ctan.org/pkg/ctanbib}).
 
-\item For completeness only: \verb|tugboat.bst| provides editor-intended
-fields \textsf{journaltie} to output a tie instead of space after the \textsf{journal} value,
+\item For completeness only: \verb|tugboat.bst| provides several 
+fields intended to be used by the editors: \textsf{journaltie} to output
+a tie instead of space after the \textsf{journal} value,
+\textsf{monthtie} for the same after \textsf{month},
 \textsf{newpage} to force a page break after the current item,
-\textsf{nowarning} to omit empty field warnings,
-\textsf{prebibitem} to output material before \cs{bibitem} (e.g., a
-section heading), and
+\textsf{nowarning} to omit empty field warnings, \textsf{prebibitem} to
+output material before \cs{bibitem} (e.g., a section heading), and
 \textsf{urlnewline} to force a line break before the \textsf{url} value.
-As editors, we've found that these presentation
-tweaks can be desirable for the final typeset output. Authors need not
-worry about them.
+As editors, we've found that these presentation tweaks can be desirable
+for the final typeset output. Authors need not worry about them.
 
 \end{itemize}
 

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

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

Index: trunk/Master/texmf-dist/doc/latex/tugboat/tugboat-code.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tugboat/tugboat-code.pdf	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/doc/latex/tugboat/tugboat-code.pdf	2023-07-04 19:54:52 UTC (rev 67549)

Property changes on: trunk/Master/texmf-dist/doc/latex/tugboat/tugboat-code.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Deleted: 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	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/source/latex/tugboat/tugboat.dtx	2023-07-04 19:54:52 UTC (rev 67549)
@@ -1,5 +1,5 @@
 % \iffalse (this is a meta-comment (so they say))
-% $Id: tugboat.dtx 462 2023-03-08 17:26:54Z karl $
+% $Id: tugboat.dtx 490 2023-07-03 22:27:49Z karl $
 % tugboat.dtx - main source for LaTeX TUGboat classes.
 %
 % Copyright 1994-2023 TeX Users Group.
@@ -28,7 +28,7 @@
 %<ltugboatsty>\ProvidesPackage{ltugboat}
 %<ltugprocsty>\ProvidesPackage{ltugproc}
 %<ltugcomn>   \ProvidesPackage{ltugcomn}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
 %<ltugboatcls>                       TUGboat journal class%
 %<ltugproccls>                       TUG conference proceedings class%
 %<ltugboatsty|ltugprocsty>           TUG compatibility package%
@@ -318,19 +318,13 @@
 % Class options: |draft| vs.\ |preprint| vs.\ |final|.
 %
 %    \begin{macrocode}
-\DeclareOption{draft}{%
+\DeclareOption{draft}{% [draft], the default
+  % If the user loads hyperref, avoid passing on the global draft option
+  % (which would remove all links in the pdf).
+  \PassOptionsToPackage{final}{hyperref}
+  %
   \AtEndOfClass{%
     \setcounter{page}{901}%
-    %
-    % Put a question mark into the page number in draft mode.
-    \let\tuborigthepage = \thepage
-    \def\thepage{%
-      \ifnum\value{page}>900
-        \textsl{?\texorpdfstring{\,}{}\@arabic{\numexpr\the\c at page-900\relax}}%
-      \else
-        \arabic{page}%
-      \fi}%
-    %
     \BlackBoxes
     \def\MakeRegistrationMarks{}%
     \PrelimDrafttrue
@@ -338,22 +332,21 @@
 }
 
 \newif\ifpreprint
-\def\preprint{\preprinttrue}
+\def\preprint{\preprinttrue} % [preprint], hardly used
 \DeclareOption{preprint}{%
    \preprinttrue
 }
 
-\newif\iftubfinaloption % [final]
+\newif\iftubfinaloption % [final], manually inserted by us for processing
 \DeclareOption{final}{%
   \tubfinaloptiontrue
   \AtEndOfClass{%
-    \let\thepage=\tuborigthepage
-    \NoBlackBoxes
     % Insert draft date into the header even with [final], if we are not
     % doing a production run. (tugboat.dates sets up page numbers
     % above 900 in such pseudo-draft mode.) We use [final] in the first
-    % place for this case because draft can change page layout, wrt
-    % registration marks, etc.
+    % place for this case because draft vs. final can change page
+    % layout, wrt registration marks, etc. (Not good, but too painful to
+    % change at this late date.)
     \ifnum\value{page}>900 \PrelimDrafttrue \else \PrelimDraftfalse \fi
     \@tubrunningfull
   }%
@@ -377,7 +370,7 @@
     \pdfstringdefDisableCommands{%
       \let\acro\relax
       \let\origDash=\Dash \def\Dash{\texorpdfstring{\origDash}{--}}%
-      % lots more could be added.
+      % lots more could/should be added.
     }%
   \fi
 }
@@ -480,10 +473,15 @@
 % 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.
+% 
+% And sometimes we need to add space at the top of that second column
+% (e.g., |tb136lettre|); there's no way to intervene in the article
+% source, so define a hook |\tubsecondcolstartextra|.
 %
 %    \begin{macrocode}
-\newif\iftubsecondcolstart  
+\newif\iftubsecondcolstart
 \DeclareOption{secondcolstart}{\tubsecondcolstarttrue}
+\let\tubsecondcolstartextra\relax
 %    \end{macrocode}
 % \end{macro}
 %
@@ -683,7 +681,8 @@
 %
 % Font used for the METAFONT logo, etc.
 %    \begin{macrocode}
-\DeclareRobustCommand{\AllTeX}{(\La\kern-.075em)\kern-.075em\TeX}
+\DeclareRobustCommand{\AllTeX}{%
+  \texorpdfstring{(\La\kern-.075em)\kern-.075em\TeX}{(La)TeX}}
 \def\AMS{American Mathematical Society}
 \def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox
     {$\mathcal{M}$}\kern-.125em$\mathcal{S}$}
@@ -876,7 +875,7 @@
 \def\TANGLE{\texttt{TANGLE}\@}
 \def\TB{\textsl{The \TeX\-book}}
 \def\TIFF{\acro{TIFF}}
-\def\TP{\textsl{\TeX}:\ \textsl{The Program}}
+\def\TP{\textsl{\TeX:\ The Program\/}}
 \DeclareRobustCommand{\TeX}{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\@}
 \def\TeXhax{\TeX hax}
 \def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}%
@@ -927,6 +926,7 @@
 \def\VorTeX{V\kern-2.7\p@\lower.5ex\hbox{O\kern-1.4\p@ R}\kern-2.6\p@\TeX}
 \def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@}
 \def\XML{\acro{XML}}
+\def\XMP{\acro{XMP}}
 \def\WEB{\texttt{WEB}\@}
 \def\WEAVE{\texttt{WEAVE}\@}
 \def\WYSIWYG{\acro{WYSIWYG}}
@@ -1012,11 +1012,12 @@
 % ellipsis character (U+2026) a single character's width, typically more
 % squashed together than three period characters. This just looks wrong.
 % It is too painful to try to redefine in general, but provide the
-% normal definition for \cs{let} in individual papers.
-\DeclareRobustCommand{\tubdots}{%
+% normal definition to reset in individual papers with, e.g.:
+% |\ifx\tubdots\undefined \else \let\dots\tubdots \let\ldots\tubdots \fi|
+\DeclareRobustCommand{\tubdots}{\ifmmode\mathellipsis\else
    .\kern\fontdimen3\font
    .\kern\fontdimen3\font
-   .\kern\fontdimen3\font}
+   .\kern\fontdimen3\font\fi}
 %
 % \begin{macro}{\allowhyphens}
 % Hyphen control: first, we save (via \cs{edef}) the hyphenpenalties in
@@ -1216,7 +1217,7 @@
 %
 % \subsection{Assorted user-level markup}
 %
-% \LaTeXe{} defines a robust \cs{,}, but that we provide a new definition
+% \LaTeXe{} defines a robust \cs{,} we provide a new definition
 % of |~| by redefining \cs{\nobreakspace} (\cs{DeclareRobustCommand}
 % doesn't mind redefinition, fortunately). This is based on the version
 % in AMS-\TeX---the \LaTeXe{} version (|ltspace.dtx|) has \cs{leavevmode}
@@ -2281,8 +2282,7 @@
 % 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.
+% accommodate the fact that multiple articles cannot be run together % easily.
 % 
 % In addition, if the |secondcolstart| option was specified, do
 % |\null\newpage| to move over. This is separate from |\PreTitleDrop|,
@@ -2295,6 +2295,7 @@
   {\@articletitletrue\@r at maketitle}%
 }
 \def\@r at maketitle{\par
+ \iftubsecondcolstart \null\newpage\tubsecondcolstartextra \fi
  \ifdim\PreTitleDrop > \z@
    \loop
    \ifdim \PreTitleDrop > \textheight
@@ -2301,10 +2302,9 @@
      \vbox{}\vfil\eject
      \advance\PreTitleDrop by -\textheight
    \repeat
-   \vbox to \PreTitleDrop{}
+   \vbox to \PreTitleDrop{\vfil}%
    \global\PreTitleDrop=\z@
  \fi
- \iftubsecondcolstart \null\newpage\fi
  \begingroup
  \setcounter{footnote}{0}
  \global\@topnum\z@ % disallow floats above the title
@@ -2738,15 +2738,46 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\l at section#1#2{\addpenalty{\@secpenalty}%
+% |#1| is both the section number and title; |#2| is the page number.
+% Per Ulrike, the hook calls are for tagging, introduced with the
+% June 2023 \LaTeX.
+\def\l at section#1#2{%
+  \addpenalty{\@secpenalty}%
   \addvspace{\TBtocsectionspace}%
   \@tempdima 1.5em
   \begingroup
-    \parindent\z@ \rightskip\z@  % article style makes \rightskip > 0
+    \parindent\z@
+    \rightskip\z@  % article style makes \rightskip > 0
     \parfillskip\z@
     \TBtocsectionfont
-    \leavevmode\advance\leftskip\@tempdima\hskip-\leftskip#1\nobreak\hfil
-    \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+    \leavevmode
+    \advance\leftskip\@tempdima
+    \hskip-\leftskip
+    \ifx\UseHookWithArguments\undefined\else
+      \UseHookWithArguments{contentsline/text/before}{4}
+        {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+    \fi
+    % don't worry if this cs is not defined, hence the \csname.
+    \csname contentsline at text@1 at format\endcsname{#1}% number and title
+    \ifx\UseHookWithArguments\undefined\else
+      \UseHookWithArguments{contentsline/text/after}{4}
+        {\toclevel at part}{#1}{#2}{\@contentsline at destination}% 
+    \fi
+    \nobreak
+    \hfil
+    \nobreak
+    % page number
+    \hb at xt@\@pnumwidth{\hss
+      \ifx\UseHookWithArguments\undefined\else
+        \UseHookWithArguments{contentsline/page/before}{4}
+          {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+      \fi
+      #2%
+      \ifx\UseHookWithArguments\undefined\else
+        \UseHookWithArguments{contentsline/page/after}{4}
+          {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+      \fi
+    }\par
   \endgroup}
 %    \end{macrocode}
 %
@@ -2844,7 +2875,13 @@
 % The name label comes from the moveable bit of the section argument;
 % we subvert the \cs{@sect} and \cs{@ssect} commands (the latter
 % deals with starred section commands) to grab the relevant argument.
+% 
+% As of the June 2023 \LaTeX\ (or somewhat earlier, but this is good
+% enough), there are hooks that allow us to avoid redefinig
+% \cs{@sect} and \cs{@ssect}.
+%    
 %    \begin{macrocode}
+\@ifl at t@r\fmtversion{2023-06-01}{}{%
 \let\TB@@sect\@sect
 \let\TB@@ssect\@ssect
 \def\@sect#1#2#3#4#5#6[#7]#8{%
@@ -2855,6 +2892,7 @@
  \def\@currentlabelname{#5}%
  \TB@@ssect{#1}{#2}{#3}{#4}{#5}%
 }
+} % LaTeX earlier than June 2023 
 %    \end{macrocode}
 %
 % We output the name label as a second \cs{newlabel} command 
@@ -2863,26 +2901,28 @@
 % So we redefine \cs{label} to first call the standard \LaTeX\
 % \cs{label} and then write our named label as |nr<label>|.
 % 
+% Similarly, we only need this with pre-June 2023 \LaTeX.
+% With more recent LaTeX, define \@currentlabelname via hooks.
 %    \begin{macrocode}
-\let\@savelatexlabel=\label  % so save original LaTeX command
-%
-\def\label#1{% de
-  \@savelatexlabel{#1}%
-  \@bsphack
-  \if at filesw
-    \protected at write\@auxout{}%
-      {\string\newlabel{nr@#1}{{\@currentlabel}{\@currentlabelname}}}%
-  \fi
-  \@esphack
+\@ifl at t@r\fmtversion{2023-06-01}{%
+  \AddToHookWithArguments{cmd/@sect/before}{\def\@currentlabelname{#7}}%
+  \AddToHookWithArguments{cmd/@ssect/before}{\def\@currentlabelname{#5}}%    
+}{%
+  \let\@savelatexlabel=\label  % so save original LaTeX command
+  %
+  \def\label#1{%
+    \@savelatexlabel{#1}%
+    \@bsphack
+    \if at filesw
+      \protected at write\@auxout{}%
+        {\string\newlabel{nr@#1}{{\@currentlabel}{\@currentlabelname}}}%
+    \fi
+    \@esphack}
+  % in case there are no sectioning commands:
+  \let\@currentlabelname\@empty
 }
 %    \end{macrocode}
 %
-% Of course, in the case of a sufficiently mad author, there will be
-% no sectioning commands, so we need to
-%    \begin{macrocode}
-\let\@currentlabelname\@empty
-%    \end{macrocode}
-%
 % Getting named references is then just like getting page references in
 % the \LaTeX\ kernel (see |ltxref.dtx|).
 %
@@ -2899,9 +2939,18 @@
 % 
 %    \begin{macrocode}
 \AtBeginDocument{%
-  \providecommand\nameref[1]{%
-    \expandafter\@setref
-    \csname r at nr@#1\endcsname\@secondoftwo{#1}%
+  \@ifl at t@r\fmtversion{2023-06-01}%
+  { % after June 2023, LaTeX stores the label name; use that.
+    \long\def\@thirdoffive#1#2#3#4#5{#3}
+    \providecommand\nameref[1]{%
+      \expandafter\@setref
+      \csname r@#1\endcsname\@thirdoffive{#1}}%
+  }
+  { % for earlier versions, still avoid overwriting \nameref per above.
+    % but if not otherwise defined, use the "nr" label defined by our \label.
+   \providecommand\nameref[1]{%
+     \expandafter\@setref
+     \csname r at nr@#1\endcsname\@secondoftwo{#1}}%
   }%
 }
 %    \end{macrocode}
@@ -3488,12 +3537,39 @@
 \def\@oddhead{\MakeRegistrationMarks
   \frenchspacing
   \normalsize\csname normalshape\endcsname\rm \tubheadhook
-  \rtitlex\qquad \midrtitle\hfil \rtitlenexttopage\quad \thepage}
+  \rtitlex\qquad \midrtitle\hfil \rtitlenexttopage\quad\thepage}
 \def\@evenhead{\MakeRegistrationMarks
   \frenchspacing
   \normalsize\csname normalshape\endcsname\rm \tubheadhook
-  \thepage \quad\rtitlenexttopage \hfil\midrtitle \qquad\rtitlex}
+  \thepage\quad\rtitlenexttopage \hfil\midrtitle \qquad\rtitlex}
 
+% Put a ? into the page number in all but a final run, so people
+% aren't tempted to cite it.
+% 
+% We redefine |\thepage| so that the ? will also be used in page
+% references (in the text) and the toc. This is what's recommended by
+% the LaTeX developers: https://tex.stackexchange.com/questions/687258.
+% (Ulrike's example does this after loading hyperref, but doesn't seem
+% to matter?)
+\renewcommand\thepage{%
+  \ifnum\value{page}>900
+    % in CM, numerals are exactly .5em.
+    %
+    % The \texorpdfstring avoids the usual hyperref warning:
+    %   Token not allowed in a PDF string ... removing `\@ifnextchar' 
+    \texorpdfstring{\makebox[.5em][l]{\small ?}}{?}%
+    %
+    \textsl{\@arabic{\numexpr\value{page}-900\relax}}% e-tex
+  \else
+    \@arabic{\value{page}}%
+  \fi
+}
+% This custom page number format will break makeindex, etc., so we have
+% to tell about the format. Per Ulrike:
+% \usepackage{index}
+% \newcommand\specialthepage{\inteval{\value{page}-900}}
+% \newindex[specialthepage]*{default}{idx}{ind}{Index}
+
 % can be used to reset the font, e.g., tb98kuester.
 \def\tubheadhook{}
 
@@ -3745,6 +3821,7 @@
   \def\thefootnote{}%
   % no period, please, also no fnmark.
   \def\@makefntext##1{##1}%
+  \def\Hy at Warning##1{}%
   \footnotetext{\noindent #1#2}%
   \endgroup
 }

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls	2023-07-04 19:54:52 UTC (rev 67549)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesClass  {ltugboat}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
                        TUGboat journal class%
                    ]
 \newif\ifTBunicodeengine
@@ -48,19 +48,13 @@
 \def\TBError{\ClassError{\@tugclass}}
 \def\TBWarning{\ClassWarning{\@tugclass}}
 \def\TBWarningNL{\ClassWarningNoLine{\@tugclass}}
-\DeclareOption{draft}{%
+\DeclareOption{draft}{% [draft], the default
+  % If the user loads hyperref, avoid passing on the global draft option
+  % (which would remove all links in the pdf).
+  \PassOptionsToPackage{final}{hyperref}
+  %
   \AtEndOfClass{%
     \setcounter{page}{901}%
-    %
-    % Put a question mark into the page number in draft mode.
-    \let\tuborigthepage = \thepage
-    \def\thepage{%
-      \ifnum\value{page}>900
-        \textsl{?\texorpdfstring{\,}{}\@arabic{\numexpr\the\c at page-900\relax}}%
-      \else
-        \arabic{page}%
-      \fi}%
-    %
     \BlackBoxes
     \def\MakeRegistrationMarks{}%
     \PrelimDrafttrue
@@ -68,22 +62,21 @@
 }
 
 \newif\ifpreprint
-\def\preprint{\preprinttrue}
+\def\preprint{\preprinttrue} % [preprint], hardly used
 \DeclareOption{preprint}{%
    \preprinttrue
 }
 
-\newif\iftubfinaloption % [final]
+\newif\iftubfinaloption % [final], manually inserted by us for processing
 \DeclareOption{final}{%
   \tubfinaloptiontrue
   \AtEndOfClass{%
-    \let\thepage=\tuborigthepage
-    \NoBlackBoxes
     % Insert draft date into the header even with [final], if we are not
     % doing a production run. (tugboat.dates sets up page numbers
     % above 900 in such pseudo-draft mode.) We use [final] in the first
-    % place for this case because draft can change page layout, wrt
-    % registration marks, etc.
+    % place for this case because draft vs. final can change page
+    % layout, wrt registration marks, etc. (Not good, but too painful to
+    % change at this late date.)
     \ifnum\value{page}>900 \PrelimDrafttrue \else \PrelimDraftfalse \fi
     \@tubrunningfull
   }%
@@ -97,7 +90,7 @@
     \pdfstringdefDisableCommands{%
       \let\acro\relax
       \let\origDash=\Dash \def\Dash{\texorpdfstring{\origDash}{--}}%
-      % lots more could be added.
+      % lots more could/should be added.
     }%
   \fi
 }
@@ -129,6 +122,7 @@
 \DeclareOption{onecolumn}{\@tubtwocolumnfalse}
 \newif\iftubsecondcolstart
 \DeclareOption{secondcolstart}{\tubsecondcolstarttrue}
+\let\tubsecondcolstartextra\relax
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
 \ExecuteOptions{draft,extralabel,numbersec,rawcite,runningminimal}
 \ProcessOptions
@@ -208,7 +202,8 @@
                                      ^{\mbox{\fontsize\sf at size\z@
                                          \selectfont #1}}}}
 \def\tubline{\hbox to \hsize}
-\DeclareRobustCommand{\AllTeX}{(\La\kern-.075em)\kern-.075em\TeX}
+\DeclareRobustCommand{\AllTeX}{%
+  \texorpdfstring{(\La\kern-.075em)\kern-.075em\TeX}{(La)TeX}}
 \def\AMS{American Mathematical Society}
 \def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox
     {$\mathcal{M}$}\kern-.125em$\mathcal{S}$}
@@ -356,7 +351,7 @@
 \def\TANGLE{\texttt{TANGLE}\@}
 \def\TB{\textsl{The \TeX\-book}}
 \def\TIFF{\acro{TIFF}}
-\def\TP{\textsl{\TeX}:\ \textsl{The Program}}
+\def\TP{\textsl{\TeX:\ The Program\/}}
 \DeclareRobustCommand{\TeX}{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\@}
 \def\TeXhax{\TeX hax}
 \def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}%
@@ -405,6 +400,7 @@
 \def\VorTeX{V\kern-2.7\p@\lower.5ex\hbox{O\kern-1.4\p@ R}\kern-2.6\p@\TeX}
 \def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@}
 \def\XML{\acro{XML}}
+\def\XMP{\acro{XMP}}
 \def\WEB{\texttt{WEB}\@}
 \def\WEAVE{\texttt{WEAVE}\@}
 \def\WYSIWYG{\acro{WYSIWYG}}
@@ -453,10 +449,10 @@
 \def\NoBlackBoxes{\overfullrule=\z@}
 \def\newline{\hskip\z@\@plus\pagewd\break}
 \def\tubsentencespace{\spacefactor=3000{}\space\ignorespaces}
-\DeclareRobustCommand{\tubdots}{%
+\DeclareRobustCommand{\tubdots}{\ifmmode\mathellipsis\else
    .\kern\fontdimen3\font
    .\kern\fontdimen3\font
-   .\kern\fontdimen3\font}
+   .\kern\fontdimen3\font\fi}
 \edef\allowhyphens{\noexpand\hyphenpenalty\the\hyphenpenalty\relax
   \noexpand\exhyphenpenalty\the\exhyphenpenalty\relax}
 \def\nohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M}
@@ -1061,6 +1057,7 @@
   {\@articletitletrue\@r at maketitle}%
 }
 \def\@r at maketitle{\par
+ \iftubsecondcolstart \null\newpage\tubsecondcolstartextra \fi
  \ifdim\PreTitleDrop > \z@
    \loop
    \ifdim \PreTitleDrop > \textheight
@@ -1067,10 +1064,9 @@
      \vbox{}\vfil\eject
      \advance\PreTitleDrop by -\textheight
    \repeat
-   \vbox to \PreTitleDrop{}
+   \vbox to \PreTitleDrop{\vfil}%
    \global\PreTitleDrop=\z@
  \fi
- \iftubsecondcolstart \null\newpage\fi
  \begingroup
  \setcounter{footnote}{0}
  \global\@topnum\z@ % disallow floats above the title
@@ -1291,15 +1287,43 @@
     \string#2\space used instead}#2}
 \def\TBtocsectionfont{\normalfont}
 \newskip\TBtocsectionspace  \TBtocsectionspace=1.0ex\@plus\p@
-\def\l at section#1#2{\addpenalty{\@secpenalty}%
+\def\l at section#1#2{%
+  \addpenalty{\@secpenalty}%
   \addvspace{\TBtocsectionspace}%
   \@tempdima 1.5em
   \begingroup
-    \parindent\z@ \rightskip\z@  % article style makes \rightskip > 0
+    \parindent\z@
+    \rightskip\z@  % article style makes \rightskip > 0
     \parfillskip\z@
     \TBtocsectionfont
-    \leavevmode\advance\leftskip\@tempdima\hskip-\leftskip#1\nobreak\hfil
-    \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+    \leavevmode
+    \advance\leftskip\@tempdima
+    \hskip-\leftskip
+    \ifx\UseHookWithArguments\undefined\else
+      \UseHookWithArguments{contentsline/text/before}{4}
+        {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+    \fi
+    % don't worry if this cs is not defined, hence the \csname.
+    \csname contentsline at text@1 at format\endcsname{#1}% number and title
+    \ifx\UseHookWithArguments\undefined\else
+      \UseHookWithArguments{contentsline/text/after}{4}
+        {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+    \fi
+    \nobreak
+    \hfil
+    \nobreak
+    % page number
+    \hb at xt@\@pnumwidth{\hss
+      \ifx\UseHookWithArguments\undefined\else
+        \UseHookWithArguments{contentsline/page/before}{4}
+          {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+      \fi
+      #2%
+      \ifx\UseHookWithArguments\undefined\else
+        \UseHookWithArguments{contentsline/page/after}{4}
+          {\toclevel at part}{#1}{#2}{\@contentsline at destination}%
+      \fi
+    }\par
   \endgroup}
 \renewcommand{\appendix}{\par
   \renewcommand{\thesection}{\@Alph\c at section}%
@@ -1329,6 +1353,7 @@
     \textbf{?!?}%
   }%
 }
+\@ifl at t@r\fmtversion{2023-06-01}{}{%
 \let\TB@@sect\@sect
 \let\TB@@ssect\@ssect
 \def\@sect#1#2#3#4#5#6[#7]#8{%
@@ -1339,21 +1364,37 @@
  \def\@currentlabelname{#5}%
  \TB@@ssect{#1}{#2}{#3}{#4}{#5}%
 }
-\let\@savelatexlabel=\label  % so save original LaTeX command
-\def\label#1{% de
-  \@savelatexlabel{#1}%
-  \@bsphack
-  \if at filesw
-    \protected at write\@auxout{}%
-      {\string\newlabel{nr@#1}{{\@currentlabel}{\@currentlabelname}}}%
-  \fi
-  \@esphack
+} % LaTeX earlier than June 2023
+\@ifl at t@r\fmtversion{2023-06-01}{%
+  \AddToHookWithArguments{cmd/@sect/before}{\def\@currentlabelname{#7}}%
+  \AddToHookWithArguments{cmd/@ssect/before}{\def\@currentlabelname{#5}}%
+}{%
+  \let\@savelatexlabel=\label  % so save original LaTeX command
+  %
+  \def\label#1{%
+    \@savelatexlabel{#1}%
+    \@bsphack
+    \if at filesw
+      \protected at write\@auxout{}%
+        {\string\newlabel{nr@#1}{{\@currentlabel}{\@currentlabelname}}}%
+    \fi
+    \@esphack}
+  % in case there are no sectioning commands:
+  \let\@currentlabelname\@empty
 }
-\let\@currentlabelname\@empty
 \AtBeginDocument{%
-  \providecommand\nameref[1]{%
-    \expandafter\@setref
-    \csname r at nr@#1\endcsname\@secondoftwo{#1}%
+  \@ifl at t@r\fmtversion{2023-06-01}%
+  { % after June 2023, LaTeX stores the label name; use that.
+    \long\def\@thirdoffive#1#2#3#4#5{#3}
+    \providecommand\nameref[1]{%
+      \expandafter\@setref
+      \csname r@#1\endcsname\@thirdoffive{#1}}%
+  }
+  { % for earlier versions, still avoid overwriting \nameref per above.
+    % but if not otherwise defined, use the "nr" label defined by our \label.
+   \providecommand\nameref[1]{%
+     \expandafter\@setref
+     \csname r at nr@#1\endcsname\@secondoftwo{#1}}%
   }%
 }
 \newdimen\@tubfullpageindent
@@ -1635,12 +1676,26 @@
 \def\@oddhead{\MakeRegistrationMarks
   \frenchspacing
   \normalsize\csname normalshape\endcsname\rm \tubheadhook
-  \rtitlex\qquad \midrtitle\hfil \rtitlenexttopage\quad \thepage}
+  \rtitlex\qquad \midrtitle\hfil \rtitlenexttopage\quad\thepage}
 \def\@evenhead{\MakeRegistrationMarks
   \frenchspacing
   \normalsize\csname normalshape\endcsname\rm \tubheadhook
-  \thepage \quad\rtitlenexttopage \hfil\midrtitle \qquad\rtitlex}
+  \thepage\quad\rtitlenexttopage \hfil\midrtitle \qquad\rtitlex}
 
+\renewcommand\thepage{%
+  \ifnum\value{page}>900
+    % in CM, numerals are exactly .5em.
+    %
+    % The \texorpdfstring avoids the usual hyperref warning:
+    %   Token not allowed in a PDF string ... removing `\@ifnextchar'
+    \texorpdfstring{\makebox[.5em][l]{\small ?}}{?}%
+    %
+    \textsl{\@arabic{\numexpr\value{page}-900\relax}}% e-tex
+  \else
+    \@arabic{\value{page}}%
+  \fi
+}
+
 \def\tubheadhook{}
 
 \def\tubrunningauthor{\@author}
@@ -1776,6 +1831,7 @@
   \def\thefootnote{}%
   % no period, please, also no fnmark.
   \def\@makefntext##1{##1}%
+  \def\Hy at Warning##1{}%
   \footnotetext{\noindent #1#2}%
   \endgroup
 }

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty	2023-07-04 19:54:52 UTC (rev 67549)
@@ -31,7 +31,7 @@
 %% extension .ins) which are part of the distribution.
 %% 
 \ProvidesPackage{ltugboat}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
            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	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty	2023-07-04 19:54:52 UTC (rev 67549)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
    \ProvidesPackage{ltugcomn}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
                           TUGboat `common macros' package%
                    ]
 \newif\ifTBunicodeengine
@@ -105,7 +105,8 @@
                                      ^{\mbox{\fontsize\sf at size\z@
                                          \selectfont #1}}}}
 \def\tubline{\hbox to \hsize}
-\DeclareRobustCommand{\AllTeX}{(\La\kern-.075em)\kern-.075em\TeX}
+\DeclareRobustCommand{\AllTeX}{%
+  \texorpdfstring{(\La\kern-.075em)\kern-.075em\TeX}{(La)TeX}}
 \def\AMS{American Mathematical Society}
 \def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox
     {$\mathcal{M}$}\kern-.125em$\mathcal{S}$}
@@ -253,7 +254,7 @@
 \def\TANGLE{\texttt{TANGLE}\@}
 \def\TB{\textsl{The \TeX\-book}}
 \def\TIFF{\acro{TIFF}}
-\def\TP{\textsl{\TeX}:\ \textsl{The Program}}
+\def\TP{\textsl{\TeX:\ The Program\/}}
 \DeclareRobustCommand{\TeX}{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\@}
 \def\TeXhax{\TeX hax}
 \def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}%
@@ -302,6 +303,7 @@
 \def\VorTeX{V\kern-2.7\p@\lower.5ex\hbox{O\kern-1.4\p@ R}\kern-2.6\p@\TeX}
 \def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@}
 \def\XML{\acro{XML}}
+\def\XMP{\acro{XMP}}
 \def\WEB{\texttt{WEB}\@}
 \def\WEAVE{\texttt{WEAVE}\@}
 \def\WYSIWYG{\acro{WYSIWYG}}
@@ -350,10 +352,10 @@
 \def\NoBlackBoxes{\overfullrule=\z@}
 \def\newline{\hskip\z@\@plus\pagewd\break}
 \def\tubsentencespace{\spacefactor=3000{}\space\ignorespaces}
-\DeclareRobustCommand{\tubdots}{%
+\DeclareRobustCommand{\tubdots}{\ifmmode\mathellipsis\else
    .\kern\fontdimen3\font
    .\kern\fontdimen3\font
-   .\kern\fontdimen3\font}
+   .\kern\fontdimen3\font\fi}
 \edef\allowhyphens{\noexpand\hyphenpenalty\the\hyphenpenalty\relax
   \noexpand\exhyphenpenalty\the\exhyphenpenalty\relax}
 \def\nohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M}

Modified: trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls	2023-07-04 19:54:52 UTC (rev 67549)
@@ -32,7 +32,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesClass  {ltugproc}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
                        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	2023-07-04 19:54:36 UTC (rev 67548)
+++ trunk/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty	2023-07-04 19:54:52 UTC (rev 67549)
@@ -31,7 +31,7 @@
 %% extension .ins) which are part of the distribution.
 %% 
 \ProvidesPackage{ltugproc}
-                   [2023-03-08 v2.29
+                   [2023-07-03 v2.30
            TUG compatibility package%
                    ]
 \@obsoletefile{ltugproc.cls}{ltugproc.sty}



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