summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tugboat
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-11-16 03:02:30 +0000
committerNorbert Preining <norbert@preining.info>2020-11-16 03:02:30 +0000
commit1e974f97ab28af897be376bdbd15593048fa45ea (patch)
treef34ade99edfdeb83ad202d99e7406b066c2e6a6e /macros/latex/contrib/tugboat
parentf23cf64aec54b58502f0f334eab0ea486a317586 (diff)
CTAN sync 202011160302
Diffstat (limited to 'macros/latex/contrib/tugboat')
-rw-r--r--macros/latex/contrib/tugboat/NEWS14
-rw-r--r--macros/latex/contrib/tugboat/ltubguid.ltx101
-rw-r--r--macros/latex/contrib/tugboat/ltubguid.pdfbin330289 -> 337563 bytes
-rw-r--r--macros/latex/contrib/tugboat/manifest.txt3
-rw-r--r--macros/latex/contrib/tugboat/tugboat.bst180
-rw-r--r--macros/latex/contrib/tugboat/tugboat.dtx173
-rw-r--r--macros/latex/contrib/tugboat/tugboat.pdfbin462486 -> 464400 bytes
7 files changed, 328 insertions, 143 deletions
diff --git a/macros/latex/contrib/tugboat/NEWS b/macros/latex/contrib/tugboat/NEWS
new file mode 100644
index 0000000000..a640030d7b
--- /dev/null
+++ b/macros/latex/contrib/tugboat/NEWS
@@ -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.
diff --git a/macros/latex/contrib/tugboat/ltubguid.ltx b/macros/latex/contrib/tugboat/ltubguid.ltx
index db9f183dac..4c7ea0b25e 100644
--- a/macros/latex/contrib/tugboat/ltubguid.ltx
+++ b/macros/latex/contrib/tugboat/ltubguid.ltx
@@ -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 @@ and one/two-side options).
\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 @@ relies on the section numbers to indicate where the divisions lie in
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 @@ title is `Abstract'. The \envname{longabstract} environment typesets its
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 @@ as \pkgname{verbatim}~\cite{Schoepf:verbatim:1996},
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 @@ If you use the \pkgname{listings} package, please specify:
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 @@ urls, etc.; it is being used throughout the present paper (not least in
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,16 +785,20 @@ though, you may enjoy the following small but useful features:
\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
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}.
@@ -801,13 +816,16 @@ If you use \BibTeX, feel free to take advantage of the accumulated
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 @@ as the present article does, to often achieve somewhat better results.
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 @@ different (as discussed in section~\ref{sec:syntax}); arguments are
(almost always) enclosed in braces instead of the various
forms provided by the `plain' macros.
+\newpage
\SetBibJustification{\raggedright}
\bibliographystyle{tugboat}
\bibliography{tubguide}
diff --git a/macros/latex/contrib/tugboat/ltubguid.pdf b/macros/latex/contrib/tugboat/ltubguid.pdf
index a1f67a5e13..fcca6943fb 100644
--- a/macros/latex/contrib/tugboat/ltubguid.pdf
+++ b/macros/latex/contrib/tugboat/ltubguid.pdf
Binary files differ
diff --git a/macros/latex/contrib/tugboat/manifest.txt b/macros/latex/contrib/tugboat/manifest.txt
index b4613f77c6..f132d39bec 100644
--- a/macros/latex/contrib/tugboat/manifest.txt
+++ b/macros/latex/contrib/tugboat/manifest.txt
@@ -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
diff --git a/macros/latex/contrib/tugboat/tugboat.bst b/macros/latex/contrib/tugboat/tugboat.bst
index 57831f4832..d5ed32280f 100644
--- a/macros/latex/contrib/tugboat/tugboat.bst
+++ b/macros/latex/contrib/tugboat/tugboat.bst
@@ -1,13 +1,19 @@
-%%% $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:
%%% Abbreviate "page(s)" to "p(p).",
%%% "volume" to "vol.",
%%% "editor(s)" to "ed(s)".
-%%% Set urlintro="".
%%% Output "Ph.D." rather than "PhD".
-%%% Reduce long author lists in format.names per Mico Loretan.
+%%% Output "No." and "no." for number field.
+%%% Set urlintro="".
+%%% 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 @@ FUNCTION {init.urlbst.variables}
"[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 @@ FUNCTION {possibly.setup.inlinelink}
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 @@ FUNCTION {emphasize}
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
+
+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}
+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$
- if$
- t "others" =
- { " et~al." * }
- { " and " * t * }
+ 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$
}
if$
}
- 't
if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
}
while$
}
@@ -453,6 +504,20 @@ FUNCTION {format.editors}
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 @@ FUNCTION {format.number.series}
{ 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 @@ FUNCTION {format.chapter.pages}
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 @@ FUNCTION {make.href.hypertex}
% 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.eprint}
FUNCTION {format.doi}
{ doi empty$
{ "" }
- { doiprefix doi * doiurl doi * make.href }
+ { doi doiurl make.href }
if$
}
@@ -1336,6 +1406,8 @@ MACRO {tcs} {"Theoretical Comput. Sci."}
READ
+EXECUTE {init.and.check.trunc.consts} % from trunc-auth.bst
+
FUNCTION {sortify}
{ purify$
"l" change.case$
@@ -1352,24 +1424,34 @@ FUNCTION {chop.word}
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$
}
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 @@
%<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,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
%
diff --git a/macros/latex/contrib/tugboat/tugboat.pdf b/macros/latex/contrib/tugboat/tugboat.pdf
index 30bd7e3eb9..0c9ae5b29a 100644
--- a/macros/latex/contrib/tugboat/tugboat.pdf
+++ b/macros/latex/contrib/tugboat/tugboat.pdf
Binary files differ