From 1e974f97ab28af897be376bdbd15593048fa45ea Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 16 Nov 2020 03:02:30 +0000 Subject: CTAN sync 202011160302 --- macros/latex/contrib/tugboat/tugboat.dtx | 173 ++++++++++++++++++++++--------- 1 file changed, 122 insertions(+), 51 deletions(-) (limited to 'macros/latex/contrib/tugboat/tugboat.dtx') diff --git a/macros/latex/contrib/tugboat/tugboat.dtx b/macros/latex/contrib/tugboat/tugboat.dtx index 6ed75cece1..12e7dc6397 100644 --- a/macros/latex/contrib/tugboat/tugboat.dtx +++ b/macros/latex/contrib/tugboat/tugboat.dtx @@ -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 @@ %\ProvidesPackage{ltugboat} %\ProvidesPackage{ltugproc} % \ProvidesPackage{ltugcomn} - [2020-03-12 v2.23 + [2020-11-14 v2.24 % TUGboat journal class% % TUG conference proceedings class% % 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,12 +801,14 @@ \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 % 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@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@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@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@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@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@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,31 +2459,32 @@ % \textsc{numbersec} is in effect. % % \begin{macrocode} +\def\tubsechook{} \if@numbersec \def\section{\TB@startsection{{section}% 1% \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@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@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@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,27 +2499,27 @@ \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@nolimelabel \TB@startsection{{subsection}% 2% \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@nolimelabel \TB@startsection{{subsubsection}% 3% \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@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@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@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 % -- cgit v1.2.3