diff options
author | Karl Berry <karl@freefriends.org> | 2022-01-13 21:03:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-01-13 21:03:32 +0000 |
commit | d34f367554fea0310b29e2b530b4b1939e21b92b (patch) | |
tree | b28bdb673ef48a05fc7db55ebbf78dd57e804de3 /Master/texmf-dist/source | |
parent | 9ab74bc42f4dec6bc77857a29d4a2d9969c76f8a (diff) |
latex-dev (13jan22)
git-svn-id: svn://tug.org/texlive/trunk@61598 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
158 files changed, 5137 insertions, 2326 deletions
diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.dtx index 8557c6534a4..d94bf9a72f9 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.dtx @@ -81,7 +81,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \[ % \pmb{\infty} = \boldsymbol{\infty} \quad ? % \] -% \StopEventually{} +% \MaybeStop{} % % Standard package info. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins index 91946086223..c35a72dad65 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins @@ -26,7 +26,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx index f3528dd7c1b..1ed5be6b677 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -97,7 +97,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{CD}\end{equation} % \end{verbatim} % -% \StopEventually{} +% \MaybeStop{} % % Standard package info. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins b/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins index 30b2f281777..5ecf0515837 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx index 10ac58b18ed..0493940071c 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -49,7 +49,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % distribution. Some of these might eventually make it into the \latex/ % kernel. % -% \StopEventually{} +% \MaybeStop{} % % Standard package info. % Using \cs{ProvidesFile} rather than \cs{ProvidesPackage} because diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins index aacb6e0c393..7d845e61cfa 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx index a5cf333e797..d810e921db4 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 2000, 2013 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -68,7 +68,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % provided here is found in the AMSmath Users' Guide, % \fn{amsldoc.tex}. % -% \StopEventually{} +% \MaybeStop{} % % Standard file identification. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins index 1bb73101bb5..82876ffc5df 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999, 2000, 2013 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx index 03df1a116bc..20e63b63d78 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -52,7 +52,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % similar to the standard function names \cn{sin}, \cn{lim}, % \cn{max}, etc. % -% \StopEventually{} +% \MaybeStop{} % % Standard file identification. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins index 72c649c3409..8a57404c1ef 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx index 88cc837f03a..7498040214d 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -72,7 +72,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % macro called \cs{mathhexbox} so that commands like \cn{dag} % or \cn{P} will change sizes if used in math subscripts. % -% \StopEventually{} +% \MaybeStop{} % Package information. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins b/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins index 5578a7e9473..3ba3000eb8c 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx index aaa5fd1a2db..c2bc4bbd26c 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -53,7 +53,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % documents using the \pkg{amstex} package these commands are just % wasted overhead. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} \ProvidesPackage{amsxtra}[1999/11/15 v1.2c AMS extra commands] diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins index 7eca6e065ad..70f50c6bcb8 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.dtx b/Master/texmf-dist/source/latex-dev/base/alltt.dtx index 350229ab40f..908fe924001 100644 --- a/Master/texmf-dist/source/latex-dev/base/alltt.dtx +++ b/Master/texmf-dist/source/latex-dev/base/alltt.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -104,7 +104,7 @@ % The glyph at the position of the $ in an italic font: \textit{$}. % \end{alltt} % -% \StopEventually{} +% \MaybeStop{} % % \section{The Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.ins b/Master/texmf-dist/source/latex-dev/base/alltt.ins index 7ce21032079..f46404bcf4d 100644 --- a/Master/texmf-dist/source/latex-dev/base/alltt.ins +++ b/Master/texmf-dist/source/latex-dev/base/alltt.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/classes.dtx b/Master/texmf-dist/source/latex-dev/base/classes.dtx index a13053b871a..857cfc799ee 100644 --- a/Master/texmf-dist/source/latex-dev/base/classes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/classes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -230,7 +230,7 @@ % \maketitle % \tableofcontents % -% \StopEventually{} ^^A +% \MaybeStop{} ^^A % % \section{The {\sc docstrip} modules} % diff --git a/Master/texmf-dist/source/latex-dev/base/classes.ins b/Master/texmf-dist/source/latex-dev/base/classes.ins index be0dcaf8ff3..1f7b3316911 100644 --- a/Master/texmf-dist/source/latex-dev/base/classes.ins +++ b/Master/texmf-dist/source/latex-dev/base/classes.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/cmextra.ins b/Master/texmf-dist/source/latex-dev/base/cmextra.ins index c530e04d0bb..a2befb3aefb 100644 --- a/Master/texmf-dist/source/latex-dev/base/cmextra.ins +++ b/Master/texmf-dist/source/latex-dev/base/cmextra.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins index d54a325f42e..55af4759c57 100644 --- a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins +++ b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/doc.dtx b/Master/texmf-dist/source/latex-dev/base/doc.dtx index 41bc0733155..e6b0e2cf92b 100644 --- a/Master/texmf-dist/source/latex-dev/base/doc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/doc.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 -% The LaTeX Project and any individual authors listed elsewhere +% Copyright 1993-2022 +% The LaTeX3 Project and any individual authors listed elsewhere % in this file. % % This file is part of the LaTeX base system. @@ -33,10 +33,23 @@ % ^^A category for `<' %\catcode`\<=14 %<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01] -%<+package> \ProvidesPackage{doc} +%<+package> +%<+package>\providecommand\DeclareRelease[3]{} +%<+package>\providecommand\DeclareCurrentRelease[2]{} +%<+package> +%<+package>\DeclareRelease{v2.1g}{2016-02-15} +%<+package> {doc-2016-02-15.sty} +%<+package>\DeclareRelease{v2}{2021-06-01} +%<+package> {doc-2021-06-01.sty} +%<+package>\DeclareCurrentRelease{v3}{2022-06-01} +%<+package> +%<*package> +%<-beta>\ProvidesPackage{doc} +%<+beta>\ProvidesPackage{doc-v3beta} +%</package> %<+shortvrb>\ProvidesPackage{shortvrb} -%<+package|shortvrb> [2021/10/04 v2.1n -%<+package|shortvrb> Standard LaTeX documentation package (FMi)] +%<+package|shortvrb> [2022/06/01 v3.0g +%<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)] %\catcode`\<=12 % %% @@ -47,7 +60,7 @@ % % %% Package `doc' to use with LaTeX 2e -%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved. +%% Copyright (C) 1989-2022 Frank Mittelbach, all rights reserved. % % % Version: Date: Changes: @@ -128,18 +141,103 @@ % \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault} % \DoNotIndex{\bfdefault} % -% \MakeShortVerb{\"} +% \MakeShortVerb{\|} % \setcounter{StandardModuleDepth}{1} % % {\catcode`\p=12 \catcode`\t=12 ^^A hack used later on to print -% \gdef\dimenvalue#1pt{$#1$pt}} ^^A register values with a - sign +% \gdef\dimenvalue#1pt{$#1$pt}} ^^A a register value with a - sign +% +% \newcommand{\DOC}{\texttt{doc}\xspace} +% +% \newcommand\env{\texttt} +% \newcommand\opt{\texttt} +% \newcommand\cls{\texttt} +% \newcommand\pkg{\texttt} +% \newcommand\prg{\textsf} +% +% \newcommand\DOX{\env{DoX}\xspace} +% \newcommand\api{\textsc{api}\xspace} +% +% \newcommand\fmi[1]{\par\textbf{TODO: }\textit{#1}\par} +% +% \newcommand\NewIn[1]{\leavevmode +% \marginpar{\hfill\fbox{\fbox{New in #1}}\hspace*{1em}}\ignorespaces} +% +% +%\RenewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = LaTeX comands\actualchar\LaTeX{} commands , +% printtype = +% ]{Macro}{macro} +% +%\RenewDocElement[macrolike = false , +% toplevel = false, +% idxtype = env. , +% idxgroup = Package environments, +% printtype = \textit{env.} +% ]{Env}{environment} +% +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = Package commands, +% printtype = +% ]{InterfaceMacro}{imacro} +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = Package commands (obsolete), +% printtype = +% ]{ObsoleteInterfaceMacro}{omacro} +% +%\NewDocElement[macrolike = false , +% toplevel = false, +% idxtype = counter , +% idxgroup = LaTeX counters\actualchar \LaTeX{} counters , +% printtype = \textit{counter} +% ]{LaTeXCounter}{lcounter} +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = counter , +% idxgroup = TeX counters\actualchar \protect\TeX{} counters , +% printtype = \textit{counter} +% ]{TeXCounter}{tcounter} +% +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = skip , +% idxgroup = LaTeX length\actualchar \LaTeX{} length (skip) , +% printtype = \textit{skip} +% ]{LaTeXSkip}{lskip} +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = dimen , +% idxgroup = LaTeX length\actualchar \LaTeX{} length (dimen) , +% printtype = \textit{dimen} +% ]{LaTeXDimen}{ldimen} +% +%\NewDocElement[macrolike = false , +% toplevel = false, +% idxtype = option , +% idxgroup = Package options , +% printtype = \textit{option} +% ]{Option}{option} +% +% \renewcommand\code[1]{\mbox{$\ell$-#1}} +% \renewcommand\main[1]{\underline{\mbox{$\ell$-#1}}} +% \setcounter{IndexColumns}{2} % -% \newcommand{\DOC}{\texttt{doc}} % % \changes{v1.9t}{1995/05/11}{Use \cs{GetFileInfo}} % \GetFileInfo{doc.sty} % -% \CheckSum{2213} ^^A % keep the checksum in this file +% \CheckSum{0} ^^A % keep the checksum in this file but not now :-) % % \title{The \DOC{} and \texttt{shortvrb} Packages\thanks % {This file has version number \fileversion{} dated \filedate{}.}} @@ -149,190 +247,77 @@ % provided by Andrew Mills; fairly substantial additions, % particularly from \texttt{newdoc}, and % documentation of post-v1.5q features added at v1.7a by Dave -% Love (SERC Daresbury Lab). Extraction of \texttt{shortvrb} -% package added by Joachim Schrod (TU~Darmstadt).}} +% Love (SERC Daresbury Lab).}~\thanks +% {Extraction of \texttt{shortvrb} +% package added by Joachim Schrod (TU~Darmstadt).}~\thanks +% {Version~3 now integrates code from Didier Verna's +% \DOX package and some of his documentation was +% reused (a.k.a.\ stolen).}} +% \date{Printed \today} % % \MaintainedByLaTeXTeam{latex} +% % \maketitle % % \begin{abstract} -% This package contains the definitions that are necessary to -% format the documentation of package files. The package was -% developed in Mainz in cooperation with the Royal Military College -% of Science. This is an update which documents various changes -% and new features in \DOC{} and integrates the features of -% \textsf{newdoc}. +% Roughly 30 years ago (version 1.0 was dated 1988/05/05) I wrote +% the first version of the \DOC package, a package to provide code +% documentation for \TeX{} code. Since then it has be used all over +% the place to document the \LaTeX{} kernel and most of the +% packages that are nowadays available. The core code of version 2 +% (which is the current version) exists since 1998, i.e., for 20 +% years. +% +% If I would restart from scratch I would do a lot of things +% differently these days and in fact several other people have +% tried to come up with better solutions. However, as the saying +% goes, a bad standard is better than none, \DOC has prevailed and +% changing it now in incompatible ways is probably not really +% helpful. +% +% So this is version 3 of the package with some smaller extensions +% that are upwards compatible but hopefully serve well. Most +% important modifications are the integration of the +% \pkg{hypdoc} package to enable links within the document (in +% particular from the index) is so desired. Also integrated are the +% ideas from the \DOX package by Didier Verna (although I +% offer a different interface that imho fits better with the rest +% of \DOC's interfaces). Finally I updated a few odds and ends. % \end{abstract} % -% \newif\ifmulticols -% \IfFileExists{multicol.sty}{\multicolstrue}{} % -% \ifmulticols +% \newpage +% % \addtocontents{toc}{\protect\begin{multicols}{2}} -% \fi % -% {\parskip 0pt ^^A We have to reset \parskip +% ^^A{\parskip 0pt ^^A We have to reset \parskip % ^^A (bug in \LaTeX) % \tableofcontents -% } +% ^^A} % % \changes{v1.7a}{1992/02/25}{Miscellaneous small changes to the text} +% \changes{v3.0a}{2018/03/04}{Integrated DoX package} +% \changes{v3.0a}{2018/03/04}{Interfaced hypdoc package} % -% \ifmulticols -% \begin{multicols}{2}[\section*{Preface to version 1.7}] -% \else \section*{Preface to version 1.7} \fi -% -% This version of \texttt{doc.dtx} documents changes which have occurred -% since the last published version \cite{art:doc} but which have been -% present in distributed versions of \texttt{doc.sty} for some time. It -% also integrates the (undocumented) features of the distributed -% \texttt{newdoc.sty}. -% -% The following changes and additions have been made to the user -% interface since the published version~\cite{art:doc}. See -% \S\ref{sec:interface} for more details. -% \begin{description} -% \item[Driver mechanism] "\DocInput" is now used in the driver file -% to input possibly multiple independent \DOC{} files and \DOC{} no -% longer has to be the last package. "\IndexListing" is replaced -% by "\IndexInput"; -% \item[Indexing] is controlled by "\PageIndex" and "\CodelineIndex", -% one of which must be specified to produce an index---there is no -% longer a "\makeindex" in the default "\DocstyleParms"; -% \item[The \texttt{macro} environment] now takes as argument the -% macro name {\em with\/} the backslash; -% \item[Verbatim text] Newlines are now forbidden inside "\verb" and -% commands "\MakeShortVerb" and "\DeleteShortVerb" are provided for -% verbatim shorthand; -% \item[\texttt{\bslash par}] can now be used in "\DoNotIndex"; -% \item[Checksum/character table support] for ensuring the integrity -% of distributions is added; -% \item[\texttt{\bslash printindex}] becomes "\PrintIndex"; -% \item[\texttt{multicol.sty}] is no longer necessary to use \DOC{} or -% print the documentation (although it is recommended); -% \item[`Docstrip' modules] are recognised and formatted specially. -% \end{description} % -% As well as adding some completely new stuff, -% the opportunity has been taken to add some commentary to the code -% formerly in \texttt{newdoc.sty} and that added after version 1.5k of -% \texttt{doc.sty}. Since (as noted in the sections concerned) this -% commentary wasn't written by Frank Mittelbach but the code was, it is -% probably {\em not\/} true in this case that ``if the code and -% comments disagree both are probably wrong''! % -% \subsection*{Bugs} -% -% There are some known bugs in this version: -% \begin{itemize} -% \item The "\DoNotIndex" command doesn't work for some single -% character commands most noticeable "\%". -% \item The `General changes' glossary entry would come out after -% macro names with a leading "!" and possibly a leading |"|; -% \item If you have an old version of \textsf{makeindex} long "\changes" -% entries will come out strangely and you may find the section -% header amalgamated with the first changes entry. Try to get an -% up-to-date one (see p.~\pageref{makeindex:version}); -% \item Because the accompanying \textsf{makeindex} style files support -% the inconsistent attribute specifications of older and newer -% versions \textsf{makeindex} always complains about three `unknown -% specifier's when sorting the index and changes entries. -% \item If "\MakeShortVerb" and "\DeleteShortVerb" are used with -% single character arguments, e.g., "{|}" instead of "{\|}" chaos -% may happen. -% \end{itemize} -% (Some `features' are documented below.) -% -% \subsection*{Wish list} -% -% \begin{itemize} -% \item Hooks to allow "\DescribeMacro" and "\DescribeEnv" to write -% out to a special file information about the package's `exported' -% definitions which they describe. This could subsequently be -% included in the \texttt{docstrip}ped \texttt{.sty} file in a -% suitable form for use by smart editors in command completion, -% spelling checking etc., based on the packages used in a document. -% This would need agreement on a `suitable form'. \item Indexing of -% the modules used in \texttt{docstrip}'s "%<" directives. I'm not -% sure how to index directives containing module combinations; \item -% Writing out bibliographic information about the package; \item Allow -% turning off use of the special font for, say, the next guarded -% block. -% \end{itemize} -% -% \ifmulticols -% \end{multicols} -% -% \begin{multicols}{2}[\medskip \rule{\textwidth}{.3pt} -% \section{Introduction}] -% \else % \section{Introduction} -% \fi -% -% The \TeX{} macros which are described here allow definitions and -% documentation to be held in one and the same file. This has the -% advantage that normally very complicated instructions are made -% simpler to understand by comments inside the definition. In addition -% to this, updates are easier and only one source file needs to be -% changed. On the other hand, because of this, the package files are -% considerably longer: thus \TeX{} takes longer to load them. If this -% is a problem, there is an easy remedy: one needs only to run the -% \texttt{docstrip.tex} program that removes nearly all lines that begin -% with a -% percent sign. % -% The idea of integrated documentation was born with the development -% of the \TeX{} program; it was crystallized in Pascal with the \Web{} -% system. The advantages of this method are plain to see (it's easy -% to make comparisons \cite{art:Knuthliterat}). Since this -% development, systems similar to \Web{} have been developed for other -% programming languages. But for one of the most complicated -% programming languages (\TeX) the documentation has however been -% neglected. The \TeX{} world seems to be divided between:--- -% \begin{itemize} \item a couple of ``wizards'', who produce many -% lines of completely unreadable code ``off the cuff'', and \item many -% users who are amazed that it works just how they want it to do. Or -% rather, who despair that certain macros refuse to do what is -% expected of them.\end{itemize} -% -% I do not think that the \Web{} system is {\em the\/} reference work; -% on the contrary, it is a prototype which suffices for the -% development of programs within the \TeX{} world. It is sufficient, -% but not totally sufficient.\footnote{I know that this will be seen -% differently by a few people, but this product should not be seen as -% the finished product, at least as far as applications concerning -% \TeX{} are concerned. The long-standing debate over `multiple -% change files' shows this well.} As a result of \Web, new programming -% perspectives have been demonstrated; unfortunately, though, they -% haven't been developed further for other programming languages. -% -% The method of documentation of \TeX{} macros which I have introduced -% here should also only be taken as a first sketch. It is designed -% explicitly to run under \LaTeX{} alone. Not because I was of the -% opinion that this was the best starting point, but because from this -% starting point it was the quickest to develop.\footnote{This -% argument is a bad one, however, it is all too often trotted out.} As -% a result of this design decision, I had to move away from the -% concept of modularization; this was certainly a step backward. -% -% I would be happy if this article could spark off discussion over -% \TeX\ documentation. I can only advise anyone who thinks that they -% can cope without documentation to ``Stop Time'' until he or she -% completely understands the \AmSTeX{} source code. +% This is a new version of the \DOC package, written roughly 30 years +% after the initial release. As the package has been used for so long +% (and largely unchanged) +% it is absolutely important to preserve existing interfaces, even if +% we can agree that they could have been done better. % +% So this is a light-weight change, basically adding hyperlink support +% and adding a way to provide generally \DOC elements (not just macros +% and environments) and try to do this properly (which wasn't the case +% for environments either in the past). The ideas for this have been +% stolen from the \DOX package by Didier Verna even though I +% didn't keep his interfaces. % -% -% -% -% \subsection{Using the \DOC{} package} -% -% Just like any other package, invoke it by requesting it with a -% |\usepackage| command in the preamble. \textsf{Doc}'s use of -% |\reversemarginpars| may make it incompatible with some classes. -% \changes{v1.7a}{1992/02/25}{Altered usage info} -% -% -% \ifmulticols\end{multicols}\fi +% Most of the documentation below is from the earlier release which +% accounts for some inconsistencies in presentation, mea culpa. % % % \section{The User Interface}\label{sec:interface} @@ -342,36 +327,38 @@ % package one has to prepare a special driver file which produces the % formatted document. This driver file has the following % characteristics: -% -% \noindent |\documentclass[|\meta{options}]^^A -% |{|\meta{document-class}|}|\\[1pt] +% \begin{quote} +% \noindent |\documentclass|\oarg{options}^^A +% \marg{document-class}\\[1pt] % |\usepackage{doc}|\\[3pt] % \hspace*{10pt}\meta{preamble}\\[3pt] % |\begin{document}|\\[3pt] % \hspace*{10pt}\meta{special input commands}\\[3pt] % |\end{document}| -% -% The \meta{document-class} might be any document class, I normally +% \end{quote} +% The \meta{document-class} might be any document class, I usually % use \texttt{article}. % % In the \meta{preamble} one should place declarations which % manipulate the behavior of the \DOC{} package like % |\DisableCrossrefs| or |\OnlyDescription|. % -% \DescribeMacro\DocInput \DescribeMacro\IndexInput -% Finally the \meta{special input commands} part should contain one or -% more |\DocInput|\meta{file name} and/or -% |\IndexInput|\meta{file name} commands. The +% +% \DescribeInterfaceMacro\DocInput \DescribeInterfaceMacro\IndexInput +% Finally +% the \meta{special input commands} part should contain one or +% more |\DocInput|\marg{file name} and/or +% |\IndexInput|\marg{file name} commands. The % |\DocInput| command is used for files prepared for the % \DOC{} package whereas |\IndexInput| can be used for all kinds of % macro files. See page \pageref{..Input} for more details of -% "\IndexInput". Multiple "\DocInput"s can be used with a +% |\IndexInput|. Multiple |\DocInput|s can be used with a % number of included files which are each self-contained % self-documenting packages---for instance, each containing -% "\maketitle". +% |\maketitle|. % % As an example, the driver file for the \DOC{} package itself is -% the following text surrounded by "%<*driver>" and "%</driver>". +% the following text surrounded by |%<*driver>| and |%</driver>|. % To produce the documentation you can simply run the \texttt{.dtx} % file through \LaTeX{} in which case this code will be executed % (loading the document class \texttt{ltxdoc}, etc.) or you can @@ -379,7 +366,7 @@ % the \texttt{docstrip} program. % The line numbers below are added by % \DOC{}'s formatting. -% Note that the class \textsf{ltxdoc} has the \DOC{} package +% Note that the class \cls{ltxdoc} has the \DOC{} package % preloaded. % \changes{v1.7a}{1992/03/06}{Added % docstrip-derivable driver file as example.} @@ -387,20 +374,83 @@ % \begin{macrocode} %<*driver> \documentclass{ltxdoc} + +\usepackage[T1]{fontenc} +\usepackage{xspace} + +\OnlyDescription + \EnableCrossrefs - %\DisableCrossrefs % Say \DisableCrossrefs if index is ready + %\DisableCrossrefs % Say \DisableCrossrefs if index is ready \CodelineIndex -\RecordChanges % Gather update information - %\OnlyDescription % comment out for implementation details - %\OldMakeindex % use if your MakeIndex is pre-v2.9 -\setlength\hfuzz{15pt} % dont make so many -\hbadness=7000 % over and under full box warnings +\RecordChanges % Gather update information +\SetupDoc{reportchangedates} + %\OnlyDescription % comment out for implementation details +\setlength\hfuzz{15pt} % don't show so many +\hbadness=7000 % over- and underfull box warnings \begin{document} \DocInput{doc.dtx} \end{document} %</driver> % \end{macrocode} % +% \RecordIndexType{\CodelineIndex}{InterfaceMacro} +% \RecordIndexType{\DisableCrossrefs}{InterfaceMacro} +% \RecordIndexType{\DocInput}{InterfaceMacro} +% \RecordIndexType{\EnableCrossrefs}{InterfaceMacro} +% \RecordIndexType{\OnlyDescription}{InterfaceMacro} +% \RecordIndexType{\RecordChanges}{InterfaceMacro} +% \RecordIndexType{\hbadness}{TeXCounter} +% \RecordIndexType{\hfuzz}{LaTeXDimen} +% +% +% \subsection{Package options} +% +% \NewIn{v3} +% Starting with version~3 the \DOC package now offers a small number +% of package options to modify its overall behavior. These are: +% \DescribeOption[noprint]{multicol} +% \DescribeOption[noprint]{nomulticol} +% \DescribeOption[noprint]{hyperref} +% \DescribeOption[noprint]{nohyperref} +% \DescribeOption[noprint]{debugshow} +% \DescribeOption[noprint]{noindex} +% \DescribeOption[noprint]{noprint} +% \DescribeOption[noprint]{reportchangedates} +% \begin{description} +% \item[\opt{hyperref}, \opt{nohyperref}] Boolean (default \texttt{true}). Load the +% \pkg{hyperref} package and make index references to code lines +% and pages and other items clickable links. \opt{nohyperref} is +% the complementary key. +% +% \item[\opt{multicol}, \opt{nomulticol}] Boolean (default \texttt{true}). Load the +% \pkg{multicol} package for use in typesetting the index and the +% list of changes. \opt{nomulticol} is +% the complementary key. +% +% \item[\opt{debugshow}] Boolean (default \texttt{false}). Provide +% various tracing information at the terminal and in the transcript +% file. In particular show which elements are indexed. +% +% \item[\opt{noindex}] Boolean (default \texttt{false}). If set, all +% automatic indexing is suppressed. This option can also be used on +% individual elements as described below. +% +% \item[\opt{noprint}] Boolean (default \texttt{false}). If set, then +% printing of element names in the margin will be suppressed. This +% option can also be used on individual elements as described +% below. +% \item[\opt{reportchangedates}] Boolean (default \texttt{false}). If +% set, then change entries list the date after the version number in +% the change log. +% \end{description} +% +% \DescribeInterfaceMacro{\SetupDoc} Instead of providing options to the \DOC +% package you can call \cs{SetupDoc} and provide them there. This +% allows, for example, to change default values in case \DOC was already +% loaded earlier. +% +% % % \subsection{General conventions} % @@ -413,10 +463,18 @@ % \LaTeX{} commands except that the character `|%|' cannot be % used as a comment character. % \SortIndex{\string^\string^A}{\string\verb\verbatimchar -% \string^\string^A\verbatimchar \encapchar usage} To allow user -% comments, the |^^A| character is defined as a comment character -% later on. Such `metacomments' may be also be included simply by -% surrounding them with "\iffalse" \ldots~"\fi". +% \string^\string^A\verbatimchar \encapchar usage}^^A +% \SortIndex{\string^\string^X}{\string\verb\verbatimchar +% \string^\string^X\verbatimchar \encapchar usage} +% To allow user +% comments, the characters |^^A| and |^^X| are both defined as a comment character +% later on.\footnote{In version 2 it was only +% \texttt{\string^\string^A}, but many keyboards combine +% \texttt{\string^} and \texttt{A} and automatically turn it into +% ``Ä''; so \texttt{\string^\string^X} was added as an +% alternative in version 3.} +% Such `metacomments' may be also be included simply by +% surrounding them with |\iffalse| \ldots~|\fi|. % % All other parts of the file are called `definition parts'. They % contain fractions of the macros described in the `documentation @@ -430,13 +488,17 @@ % \DescribeEnv{macrocode} % On the other hand, if the documentation of these macros is to be % produced, the `definition parts' should be typeset verbatim. To -% achieve this, these parts are surrounded by the \textsf{macrocode} +% achieve this, these parts are surrounded by the \env{macrocode} % environment. % More exactly: before a `definition part' there should be a line -% containing\\ -% \hspace*{\MacroIndent}\verb*+% \begin{macrocode}+\\ -% and after this part a line\\ -% \hspace*{\MacroIndent}\verb*+% \end{macrocode}+\\ +% containing +% \begin{flushleft} +% \hspace*{\MacroIndent}\verb*+% \begin{macrocode}+ +% \end{flushleft} +% and after this part a line +% \begin{flushleft} +% \hspace*{\MacroIndent}\verb*+% \end{macrocode}+ +% \end{flushleft} % There must be {\em exactly\/} four spaces between the |%| % and |\end{macrocode}| --- \TeX{} is looking for this string % and not for the macro while processing a `definition part'. @@ -444,16 +506,16 @@ % Inside a `definition part' all \TeX{} commands are allowed; even the % percent sign could be used to suppress unwanted spaces etc. % -% \DescribeEnv{macrocode*} Instead of the \textsf{macrocode} -% environment one can also use the \textsf{macrocode$*$} environment +% \DescribeEnv{macrocode*} Instead of the \env{macrocode} +% environment one can also use the \env{macrocode$*$} environment % which produces the same results except that spaces are printed as % \nopagebreak\verb*+ + characters. % % % -% \subsection{Describing the usage of new macros} +% \subsection{Describing the usage of macros and environments} % -% \DescribeMacro\DescribeMacro +% \DescribeInterfaceMacro\DescribeMacro % When you describe a new macro you may use |\DescribeMacro| to % indicate that at this point the usage of a specific macro is % explained. It takes one argument which will be printed in the margin @@ -461,35 +523,38 @@ % |\DescribeMacro{\DescribeMacro}| to make clear that this is the % point where the usage of |\DescribeMacro| is explained. % -% \DescribeMacro\DescribeEnv -% An analogous macro |\DescribeEnv| should be used to indicate -% that a \LaTeX{} environment is explained. It will produce a somewhat -% different index entry. Below I used |\DescribeEnv{verbatim}|. +% As the argument to |\DescribeMacro| is a command name, many people +% got used to using the (incorrect) short form, i.e., omitting the +% braces around the argument as in |\DescribeMacro\foo|. This does +% work as long as the macro name consists only of ``letters''. +% However, if the name contains special characters that are normally +% not of type ``letter'' (such as |@|, or in case of \pkg{expl3} |_| +% and |:|) this will fail dramatically. |\DescribeMacro| would then +% receive only a partial command name (up to the first ``non-letter'') +% e.g., |\DescribeMacro\foo@bar| would be equivalent to +% |\DescribeMacro{\foo} @bar| and you can guess that this can +% resulting in both incorrect output and possibly low-level error +% messages. +% +% \DescribeInterfaceMacro\DescribeEnv +% An analogous macro |\DescribeEnv| should be used to indicate that a +% \LaTeX{} environment is explained. It will produce a somewhat +% different index entry and a slightly different display in the +% margin. Below I used |\DescribeEnv{verbatim}|. % -% \DescribeEnv{verbatim} -% It is often a good idea to include examples of the usage of new macros -% in the text. Because of the |%| sign in the first column of every -% row, the \textsf{verbatim} environment is slightly altered to suppress -% those -% characters.\footnote{These macros were written by Rainer -% Sch\"opf~\cite{art:verbatim}. He also -% provided a new \textsf{verbatim} environment -% which can be used inside of other macros.} -% \DescribeEnv{verbatim*} -% The \textsf{verbatim$*$} environment is changed in the same way. -% \changes{v1.7a}{1992/02/26}{Documented \cs{verb} change.} -% \DescribeMacro\verb -% The "\verb" command is re-implemented to give an error report if a -% newline appears in its argument. -% The \textsf{verbatim} and \textsf{verbatim$*$} environments set text -% in the style defined by "\MacroFont"~(\S\ref{sec:macrofont}). % +% \NewIn{v3} +% Starting with version~3 the \cs{Describe...} commands accept an +% optional argument in which you can specify either \opt{noindex} +% or \opt{noprint} to suppress indexing or printing for that +% particular instance. Using both would be possible too, but pointless +% as then the commands wouldn't do anything any more. % % -% \subsection{Describing the definition of new macros} +% \subsection{Describing the definition of macros and environments} % % \DescribeEnv{macro} -% To describe the definition of a new macro we use the \textsf{macro} +% To describe the definition of a (new) macro we use the \env{macro} % environment. It has one argument: the name of the new % macro.\footnote{This is a change to the style design I described in % ^^A \TUB ^^A removed in case ltugboat.sty not used @@ -505,20 +570,26 @@ % labels in the margin are placed under each other. % \changes{v1.7a}{1992/02/26}{Note on need for some text in macro env.} % There should be some text---even if it's just an empty -% "\mbox{}"---in this environment before "\begin{macrocode}" or the +% |\mbox{}|---in this environment before |\begin{macrocode}| or the % marginal label won't print in the right place. % -% \DescribeMacro\MacrocodeTopsep -% \DescribeMacro\MacroTopsep +% \NewIn{v3} +% In fact it is now allowed to specify several macros in the argument, +% separated by commas. This is a short form for starting several +% \env{macro} environments in direct succession. Of course, you +% should then have also only one matching |\end{macro}|. +% +% \DescribeLaTeXSkip\MacrocodeTopsep +% \DescribeLaTeXSkip\MacroTopsep % There also exist four style parameters: |\MacrocodeTopsep| and % |\MacroTopsep| are used to control the vertical spacing above -% and below the \textsf{macrocode} and the \textsf{macro} -% \DescribeMacro\MacroIndent +% and below the \env{macrocode} and the \env{macro} +% \DescribeLaTeXDimen\MacroIndent % environment, |\MacroIndent| is used to indent the lines of code % and -% \DescribeMacro\MacroFont \label{sec:macrofont} +% \DescribeInterfaceMacro\MacroFont \label{sec:macrofont} % |\MacroFont| holds the font and a possible size change command -% for the code lines, the "verbatim"["*"] environment and the macro +% for the code lines, the |verbatim|[|*|] environment and the macro % names printed in the margin. If you want % to change their default values in a % class file (like \texttt{ltugboat.cls}) use the |\DocstyleParms| @@ -526,17 +597,34 @@ % be changed directly as long as the redefinition happens before % the |\begin{document}|. % +% \DescribeEnv{environment} +% For documenting the definition of environments one can use the +% environment \texttt{environment} which works like the \texttt{macro} +% environment, except that it expects an \meta{env-name} +% (without a backslash) +% as its argument and internally provides different index +% entries suitable for environments. +% Nowadays you can alternatively specify a comma-separated list of environments. +% +% \NewIn{v3} +% Starting with version~3 these environments accept an optional +% argument in which you can specify \opt{noindex} or \opt{noprint} or +% both to suppress indexing or printing for that particular +% instance. If any such setting is made on the environment level it +% overwrites whatever default was given when the \DOC element was +% defined or when the package was loaded. +% % % % -% \subsection{Formatting the margins} +% \subsection{Formatting names in the margin} % -% \DescribeMacro\PrintDescribeMacro -% \DescribeMacro\PrintDescribeEnv -% \DescribeMacro\PrintMacroName -% \DescribeMacro\PrintEnvName -% As mentioned earlier, some macros and the \textsf{macro} environment -% print their arguments in the margin. This is actually done by four +% \DescribeInterfaceMacro\PrintDescribeMacro +% \DescribeInterfaceMacro\PrintDescribeEnv +% \DescribeInterfaceMacro\PrintMacroName +% \DescribeInterfaceMacro\PrintEnvName +% As mentioned earlier, some macros and environment +% print their arguments in the margin. The actual formatting is done by four % macros which are user % definable.\footnote{You may place the changed definitions in a % separate package @@ -544,33 +632,157 @@ % file. % For example, if you don't like any names in the % margin -% but want a fine index you can simply -% \texttt{\bslash let} -% these macros equal \texttt{\bslash @gobble}. -% The doc package won't redefine any existing -% definitions of these macros.} -% They are named |\PrintDescribeMacro|, |\PrintDescribeEnv|, -% |\PrintMacroName| (called by the \textsf{macro} environment) and -% |\PrintEnvName| (called by the \textsf{environment} environment). +% but want a fine index you can simply redefine them +% accept their argument and do nothing with it.} +% They are named |\PrintDescribeMacro| and |\PrintDescribeEnv| (defining +% how |\DescribeMacro| and |\DescribeEnv| behave) and +% |\PrintMacroName| and +% |\PrintEnvName| (called by the \env{macro} and \env{environment} +% environments, respectively). +% +% +% \subsection{Providing further documentation items} +% +% Out of the box the \DOC package offers the above commands and +% environments to document macros and environments. +% \NewIn{v3} +% With version 3 +% this has now been extended in a generic fashion so that you can +% easily provide your own items, such as counters, length register, +% options etc. +% +% \DescribeInterfaceMacro{\NewDocElement} +% The general syntax for providing a new \DOC element is +% \begin{quote} +% \cs{NewDocElement}\oarg{options}\marg{element-name}\marg{env-name} +% \end{quote} +% By convention the \meta{element-name} has the first letter +% uppercased as in \texttt{Env} or \texttt{Macro}. +% +% Such a declaration will define for you +% \begin{itemize} +% \item the command |\Describe|\meta{element-name} which has the +% syntax +% \begin{quote} +% |\Describe|\meta{element-name}\oarg{options}\marg{element} +% \end{quote} +% +% \item the environment \meta{env-name} which has the syntax +% \begin{quote} +% \cs{begin}\marg{env-name}\oarg{options}\marg{element} +% \end{quote} +% +% \item the display command |\PrintDescribe|\meta{element-name} with +% the syntax +% \begin{quote} +% |\PrintDescribe|\meta{element-name}\marg{element} +% \end{quote} +% +% \item and the +% |\Print|\meta{element-name}|Name| display command for the +% environment. +% \end{itemize} +% If any of the commands or the environment is already defined (which +% especially with the \meta{env-name} is a danger) then you will +% receive an error telling you so. +% +% \DescribeInterfaceMacro{\RenewDocElement} +% If you want to modify an existing \DOC element use +% |\RenewDocElement| instead. +% +% For example, the already provided ``\texttt{Env}'' \DOC element could have been +% defined simply by making the declaration +% |\NewDocElement{Env}{environment}| +% though that's not quite what has been done, as we will see later. +% +% \DescribeOption[noprint]{macrolike} +% \DescribeOption[noprint]{envlike} +% \DescribeOption[noprint]{toplevel} +% \DescribeOption[noprint]{notoplevel} +% \DescribeOption[noprint]{idxtype} +% \DescribeOption[noprint]{printtype} +% \DescribeOption[noprint]{idxgroup} +% The \meta{options} are keyword/value and define further details on +% how that \DOC element should behave. They are: +% \begin{description} +% \item[\opt{macrolike}] Boolean (default \opt{false}). Does this \DOC +% element starts with a backslash? +% +% \item[\opt{envlike}] Boolean. Complementary option to +% \opt{macrolike}. +% +% \item[\opt{toplevel}] Boolean (default \opt{true}). Should all +% a top-level index entry be made? If set to \texttt{false} then +% either no index entries are produced or only grouped index entries +% (see \opt{idxgroup} for details). +% +% \item[\opt{notoplevel}] Boolean. Complementary option to +% \opt{toplevel}. +% +% \item[\opt{idxtype}] String (default \meta{env-name}). What to put +% (in parentheses if non-empty) at the end of a top-level index entry. +% +% \item[\opt{printtype}] String (default \meta{env-name}). What to put +% (in parentheses if non-empty) after an element name in the margin. +% +% \item[\opt{idxgroup}] String (default +% \meta{env-name}\texttt{s}). Name of the top-level index entry if +% entries are grouped. They are only grouped if this option is +% non-empty. +% +% \item[\opt{noindex}] Boolean (default \texttt{false}). If set this +% will suppress indexing for elements of this type. This setting +% overwrite any global setting of \opt{noindex}. % +% \item[\opt{noprint}] Boolean (default \texttt{false}). If set this +% will suppress printing the element name in the margin. This setting +% overwrite any global setting of \opt{noprint}. +% \end{description} +% As usual giving a boolean option without a value sets it to +% \texttt{true}. + + + + +% \subsection{Displaying sample code verbatim} % +% \DescribeEnv{verbatim} +% It is often a good idea to include examples of the usage of new macros +% in the text. Because of the |%| sign in the first column of every +% row, the \env{verbatim} environment is slightly altered to suppress +% those +% characters.\footnote{These macros were written by Rainer +% Schöpf~\cite{art:verbatim}. He also +% provided a new \env{verbatim} environment +% which can be used inside of other macros.} +% \DescribeEnv{verbatim*} +% The \env{verbatim$*$} environment is changed in the same way. +% \changes{v1.7a}{1992/02/26}{Documented \cs{verb} change.} +% \DescribeInterfaceMacro\verb +% The |\verb| command is re-implemented to give an error report if a +% newline appears in its argument. +% The \env{verbatim} and \env{verbatim$*$} environments set text +% in the style defined by |\MacroFont|~(\S\ref{sec:macrofont}). +% +% + % \subsection{Using a special escape character} % -% \DescribeMacro\SpecialEscapechar +% \DescribeInterfaceMacro\SpecialEscapechar % If one defines complicated macros it is sometimes necessary to % introduce a new escape character because the `|\|' has got a % special |\catcode|. In this case one can use % |\SpecialEscapechar| to indicate which character is actually % used to play the r\^ole of the `|\|'. A scheme like this is -% needed because the \textsf{macrocode} environment and its counterpart -% \textsf{macrocode$*$} produce an index entry for every occurrence of a +% needed because the \env{macrocode} environment and its counterpart +% \env{macrocode$*$} produce an index entry for every occurrence of a % macro name. They would be very confused if you didn't tell them that % you'd changed |\catcode|$\,$s. The argument to % |\SpecialEscapechar| is a single-letter control sequence, that -% is, one has to use "\|" for example to denote that `\verb+|+' +% is, one has to use \verb=\|= for example to denote that `\verb+|+' % is used as an escape character. |\SpecialEscapechar| only -% changes the behavior of the next \textsf{macrocode} or -% \textsf{macrocode$*$} environment. +% changes the behavior of the next \env{macrocode} or +% \env{macrocode$*$} environment. % % The actual index entries created will all be printed with |\| % rather than \verb+|+, but this probably reflects their usage, if not @@ -582,20 +794,24 @@ % % \subsection{Cross-referencing all macros used} % -% \DescribeMacro\DisableCrossrefs \DescribeMacro\EnableCrossrefs As -% already mentioned, every new macro name used within a -% \textsf{macrocode} or \textsf{macrocode$*$} environment will produce -% an index entry. In this way one can easily find out where a specific -% macro is used. Since \TeX{} is considerably slower when it has to -% produce such a bulk of index entries one can turn off this feature -% by using |\DisableCrossrefs| in the driver file. To turn it on again -% just use |\EnableCrossrefs|.\footnote{Actually, \texttt{\bslash -% EnableCrossrefs} changes things more drastically; any following -% \texttt{\bslash DisableCrossrefs} which might be present in the -% source will be ignored.} -% -% -% \DescribeMacro\DoNotIndex +% \DescribeInterfaceMacro\DisableCrossrefs \DescribeInterfaceMacro\EnableCrossrefs As +% already mentioned, every macro name used within a +% \env{macrocode} or \env{macrocode$*$} environment will produce an +% index entry. In this way one can easily find out where a specific +% macro is used. Since \TeX{} is considerably slower\footnote{This +% comment was written about 30 years ago. \TeX{} is still considerably +% slower but while it took minutes to process a large document (such +% as the \LaTeX{} kernel documentation) it takes seconds or less these +% days. Thus \cs{DisableCrossrefs} isn't really that necessary these +% days.} when it has to produce such a bulk of index entries one can +% turn off this feature by using |\DisableCrossrefs| in the driver +% file. To turn it on again just use +% |\EnableCrossrefs|.\footnote{Actually, \cs{EnableCrossrefs} changes +% things more drastically; any following call to \cs{DisableCrossrefs} +% which might be present in the source will be ignored.} +% +% +% \DescribeInterfaceMacro\DoNotIndex % But also finer control is provided. The |\DoNotIndex| macro % takes a list of macro names separated by commas. Those names won't % show up in the index. You might use several |\DoNotIndex| @@ -605,26 +821,28 @@ % % All three above declarations are local to the current group. % -% Production (or not) of the index (via the "\makeindex" commend) is +% Production (or not) of the index (via the |\makeindex| commend) is % controlled by using or omitting the following declarations in the % driver file preamble; if neither is used, no index is produced. -% \DescribeMacro\PageIndex Using "\PageIndex" makes all index +% \DescribeInterfaceMacro\PageIndex Using |\PageIndex| makes all index % entries refer to their page number; with -% \DescribeMacro\CodelineIndex "\CodelineIndex", index entries -% produced by "\DescribeMacro" and "\DescribeEnv" refer to page number -% but those produced by the \textsf{macro} environment refer to the +% \DescribeInterfaceMacro\CodelineIndex |\CodelineIndex|, index entries +% produced by |\DescribeMacro| and |\DescribeEnv| and possibly further +% |\Describe...| commands refer to a page number +% but those produced by the \env{macro} environment (or other \DOC +% element environments) refer to the % code lines, which will be numbered automatically.\footnote{The line % number is actually that of the first line of the first -% \textsf{macrocode} environment in the \textsf{macro} environment.} -% \DescribeMacro\theCodelineNo +% \env{macrocode} environment in the \env{macro} environment.} +% \DescribeInterfaceMacro\theCodelineNo % The style of this numbering can be controlled by defining the macro -% "\theCodelineNo". Its default definition is to use scriptsize +% |\theCodelineNo|. Its default definition is to use scriptsize % arabic numerals; a user-supplied definition won't be overwritten. % -% \DescribeMacro\CodelineNumbered +% \DescribeInterfaceMacro\CodelineNumbered % When you don't wish to get an index but want your code lines -% numbered use "\CodelineNumbered" instead of "\CodelineIndex". This -% prevents the generation of an unnecessary ".idx" file. +% numbered use |\CodelineNumbered| instead of |\CodelineIndex|. This +% prevents the generation of an unnecessary |.idx| file. % % % \subsection{Producing the actual index entries} @@ -632,7 +850,7 @@ % Several of the aforementioned macros will produce some sort of index % entries. These entries have to be sorted by an external % program---the current implementation assumes that the -% \textsf{makeindex} program by Chen~\cite{art:Chen} is used. +% \prg{makeindex} program by Chen~\cite{art:Chen} is used. % % But this isn't built in: one has only to redefine some of the % following macros to be able to use any other index program. All @@ -644,25 +862,25 @@ % % To allow the user to change the specific characters recognized by % his or her index program all characters which have special meaning -% in the \textsf{makeindex} program are given symbolic +% in the \prg{makeindex} program are given symbolic % names.\footnote{I don't know if there exists a program which needs % more command characters, but I hope not.} % However, all characters used should be of |\catcode| other than % `letter' (11). % -% \DescribeMacro{\actualchar} +% \DescribeInterfaceMacro{\actualchar} % The |\actualchar| is used to separate the `key' and the actual % index entry. -% \DescribeMacro{\quotechar} +% \DescribeInterfaceMacro{\quotechar} % The |\quotechar| is used before a special index program % character to suppress its special meaning. -% \DescribeMacro{\encapchar} +% \DescribeInterfaceMacro{\encapchar} % The |\encapchar| separates the indexing information from a -% letter string which \textsf{makeindex} uses as a \TeX{} command to +% letter string which \prg{makeindex} uses as a \TeX{} command to % format the page number associated with a special entry. It is used % in this package to apply the |\main| and the |\usage| % commands. -% \DescribeMacro{\levelchar} +% \DescribeInterfaceMacro{\levelchar} % Additionally |\levelchar| is used to separate `item', % `subitem' and `subsubitem' entries. % @@ -670,33 +888,54 @@ % which index program is used. In this way your files will be % portable. % -% \DescribeMacro\SpecialMainIndex -% \DescribeMacro\SpecialMainEnvIndex +% \fmi{describe old \cs{SpecialMainIndex} and \cs{SpecialUsageIndex}} +% +% \DescribeInterfaceMacro\SpecialMainMacroIndex +% \DescribeInterfaceMacro\SpecialMainEnvIndex % To produce a main index entry for a macro the -% |\SpecialMainIndex| macro\footnote{This macro is called by the -% \textsf{macro} environment.} may be used. It is called `special' +% |\SpecialMainMacroIndex| macro\footnote{This macro is called by the +% \env{macro} environment.} may be used. It is called `special' % because it has to print its argument verbatim. % A similar macro, called |\SpecialMainEnvIndex| is used for indexing % the main definition point of an % environment.\footnote{This macro is called by the -% \textsf{environment} environment.} -% \DescribeMacro\SpecialIndex -% If you want a normal index entry for a macro name -% |\SpecialIndex| might be used.\footnote{This macro is called -% within the \textsf{macrocode} environment when encountering a macro -% name.} -% \DescribeMacro\SpecialUsageIndex -% \DescribeMacro\SpecialEnvIndex +% \env{environment} environment.} +% +% \DescribeInterfaceMacro\SpecialMacroIndex +% \DescribeInterfaceMacro\SpecialEnvIndex % To index the usage of a macro or an environment -% |\SpecialUsageIndex| and |\SpecialEnvIndex| may be used. -% \DescribeMacro\SortIndex -% Additionally a |\SortIndex| command is provided. It takes two -% arguments---the sort key and the actual index entry. +% |\SpecialMacroIndex| and |\SpecialEnvIndex| may be used. % % All these macros are normally used by other macros; you will need % them only in an emergency. % -% \DescribeMacro\verbatimchar +% \NewIn{v3} +% If further code elements are declared with +% |\NewDocElement|\marg{name}\texttt{...} then this sets up +% additional indexing commands, e.g., +% \cs{SpecialMain\meta{name}Index}. +% +% \DescribeInterfaceMacro\SpecialIndex +% The \env{macrocode} environment is automatically indexing macros +% (normally by code line number). You can (with care) also do this +% manually by +% |\SpecialIndex|. However, note that if |\CodelineIndex| is used +% this will generate an entry referring to the last code line which is +% usually not what you want. It does, however, make some sense if you +% always refer to pages only, i.e., if you use |\PageIndex|. +% +% \DescribeInterfaceMacro\SpecialShortIndex +% \NewIn{v3} +% For single character macros, e.g., |\{|, doesn't always work +% correctly. +% For this reason there is now also +% a special variant the can produce correct index entries for them. +% +% \DescribeInterfaceMacro\SortIndex +% Additionally a |\SortIndex| command is provided. It takes two +% arguments---the sort key and the actual index entry. +% +% \DescribeInterfaceMacro\verbatimchar % But there is one characteristic worth mentioning: all macro names in % the index are typeset with the |\verb*| command. Therefore one % special character is needed to act as a delimiter for this command. @@ -704,12 +943,14 @@ % referenced indirectly, by the macro |\verbatimchar|. It expands % by default to \verb?+? but if your code lines contain macros with % `\texttt{+}' characters in their names (e.g.\ when you use \verb?\+?) -% you will end up with an index entry containing \verb?\verb+\++? -% which will be typeset as `\verb+\++' and not as `\verb?\+?'. In this -% case you should redefine |\verbatimchar| globally or locally to -% overcome this problem. -% -% \DescribeMacro\* +% then that caused a problem because you ended up with an +% index entry containing \verb?\verb+\++? +% which will be typeset as `\verb+\++' and not as `\verb?\+?'. +% \NewIn{v3} +% In version 3 this is now automatically taken care of (with the help +% of the |\SpecialShortIndex| command). +% +% \DescribeInterfaceMacro\* % We also provide a |\*| macro. This is intended to be used for % index entries like % \begin{quote} @@ -721,49 +962,39 @@ % \index{index entries\levelchar Special macros for \*} %\end{verbatim} % -% \DescribeMacro\OldMakeindex -% Versions of \textsf{makeindex} prior to 2.9 had some bugs affecting -% \DOC{}. One of these, -% pertaining to the "%" character doesn't have a work-around -% appropriate for versions with and without the -% bug.\label{makeindex:version} If -% you have an old version, invoke "\OldMakeindex" in a -% package file or the driver file to prevent problems with index entries -% such as "\%", although you'll probably normally want to turn off -% indexing of "\%" anyway. Try to get an up-to-date \textsf{makeindex} -% from one of the \TeX{} repositories. -% % % \subsection{Setting the index entries} % % \changes{v1.7a}{1992/03/11}{Usage note on gind.ist.} After the first % formatting pass through the \texttt{.dtx} file you need to sort the % index entries written to the \texttt{.idx} file using -% \textsf{makeindex} or your favourite alternative. You need a -% suitable style file for \textsf{makeindex} (specified by the +% \prg{makeindex} or your favorite alternative. You need a +% suitable style file for \prg{makeindex} (specified by the % \texttt{-s} switch). A suitable one is supplied with \DOC{}, % called \texttt{gind.ist}. % -% \DescribeMacro\PrintIndex +% \DescribeInterfaceMacro\PrintIndex % To read in and print the sorted index, just put the % |\PrintIndex| command as the last (commented-out, and thus % executed during the documentation pass through the file) command % in your package file. Precede it by any bibliography commands % necessary for your citations. % Alternatively, it may be more convenient to put all such calls -% amongt the arguments of the |\StopEventually| macro, in +% amongst the arguments of the |\MaybeStop| macro, in % which case a |\Finale| command should appear at the end of % your file. % % \DescribeEnv{theindex} % Contrary to standard \LaTeX, the index is typeset in three columns -% by default. This is controlled by the \LaTeX{} counter +% by default. +% \DescribeLaTeXCounter{IndexColumns} +% This is controlled by the \LaTeX{} counter % `\textsf{IndexColumns}' and can therefore be changed with a % |\setcounter| declaration. Additionally one doesn't want to -% start a new page unnecessarily. Therefore the \textsf{theindex} +% start a new page unnecessarily. Therefore the \env{theindex} % environment is redefined. -% \DescribeMacro\IndexMin -% When the \textsf{theindex} environment starts it will measure how much +% \DescribeLaTeXDimen\IndexMin +% When the \env{theindex} environment starts it will measure how much % space is left on the current page. If this is more than % |\IndexMin| then the index will start on this page. Otherwise % |\newpage| is called. @@ -771,23 +1002,23 @@ % Then a short introduction about the meaning of several index entries % is typeset (still in onecolumn mode). Afterwards the actual index % entries follow in multi-column mode. -% \DescribeMacro\IndexPrologue +% \DescribeInterfaceMacro\IndexPrologue % You can change this prologue with the help of the % |\IndexPrologue| macro. Actually the section heading is also % produced in this way, so you'd better write something like: % \begin{verbatim} % \IndexPrologue{\section*{Index} The index entries underlined ...} %\end{verbatim} -% When the \textsf{theindex} environment is finished the last page will +% When the \env{theindex} environment is finished the last page will % be reformatted to produce balanced columns. This improves the layout % and allows the next article to start on the same page. -% \DescribeMacro\IndexParms +% \DescribeInterfaceMacro\IndexParms % Formatting of the index columns (values for |\columnssep| % etc.)\ is controlled by the |\IndexParms| macro. It assigns the % following values: -% \SpecialUsageIndex{\parindent}\SpecialUsageIndex{\columnsep}^^A -% \SpecialUsageIndex{\parskip}\SpecialUsageIndex{\rightskip}^^A -% \SpecialUsageIndex{\mathsurround}\SpecialUsageIndex{\parfillskip} +% \SpecialLaTeXDimenIndex{\parindent}\SpecialLaTeXDimenIndex{\columnsep}^^A +% \SpecialLaTeXSkipIndex{\parskip}\SpecialLaTeXSkipIndex{\rightskip}^^A +% \SpecialLaTeXDimenIndex{\mathsurround}\SpecialLaTeXSkipIndex{\parfillskip} % \begin{center} % \begin{tabular}{l@{\,=\,}ll@{\,=\,}l} % |\parindent| & \IndexParms \the\parindent & @@ -800,24 +1031,27 @@ % \expandafter\dimenvalue\the\parfillskip % \end{tabular} % \end{center} -% \DescribeMacro{\@idxitem} +% \DescribeInterfaceMacro{\@idxitem} % Additionally it defines |\@idxitem| (which will be used when an % |\item| command is encountered) and selects |\small| size. % If you want to change any of these values you have to define them % all. % -% \DescribeMacro\main -% \DescribeMacro\usage +% \DescribeInterfaceMacro\main +% \DescribeInterfaceMacro\usage +% \DescribeInterfaceMacro\code % The page numbers for main index entries are encapsulated by the % |\main| macro (underlining its argument) and the numbers % denoting the description are encapsulated by the |\usage| macro -% (which produces {\em italics}). As usual these commands are user +% (which produces \textit{italics}). |\code| encapsulates page or code +% line numbers in entries generated by parsing the code inside +% \env{macrocode} environments. As usual these commands are user % definable. % % % \subsection{Changing the default values of style parameters} % -% \DescribeMacro\DocstyleParms If you want to overwrite some default +% \DescribeInterfaceMacro\DocstyleParms If you want to overwrite some default % settings made by the \DOC{} package, you can either put your % declarations in the driver file (that is after \texttt{doc.sty} is % read in) or use a separate package file for doing this work. In the @@ -828,10 +1062,13 @@ % % The doc package currently assigns values to the following % registers: -% \SpecialUsageIndex{\IndexMin}\SpecialUsageIndex{\MacrocodeTopsep}^^A -% \SpecialUsageIndex{\MacroTopsep}^^A -% \SpecialUsageIndex{\MacroIndent}\SpecialUsageIndex{\marginparpush}^^A -% \SpecialUsageIndex{\marginparwidth}\SpecialUsageIndex{\tolerance} +% \SpecialLaTeXDimenIndex{\IndexMin}^^A +% \SpecialLaTeXSkipIndex{\MacrocodeTopsep}^^A +% \SpecialLaTeXSkipIndex{\MacroTopsep}^^A +% \SpecialLaTeXDimenIndex{\MacroIndent}^^A +% \SpecialLaTeXDimenIndex{\marginparpush}^^A +% \SpecialLaTeXDimenIndex{\marginparwidth}^^A +% \SpecialTeXCounterIndex{\tolerance} % \begin{center} % \begin{tabular}{l@{\,=\,}ll@{\,=\,}l} % |\IndexMin| & \the\IndexMin & @@ -847,34 +1084,34 @@ % % \subsection{Short input of verbatim text pieces} % -% \DescribeMacro\MakeShortVerb -% \DescribeMacro{\MakeShortVerb*} \DescribeMacro\DeleteShortVerb It is -% awkward to have to type, say, "\verb|"\ldots"|" continually when +% \DescribeInterfaceMacro\MakeShortVerb +% \DescribeInterfaceMacro{\MakeShortVerb*} \DescribeInterfaceMacro\DeleteShortVerb It is +% awkward to have to type, say, \verb"\verb|"\ldots\verb"|" continually when % quoting % verbatim bits (like macro names) in the text, so an abbreviation % mechanism is provided. Pick a character \meta{c}---one which % normally has catcode `other' unless you have very good reason not % to---which you don't envisage using in the text, or not using often. -% (I like |"|, but you may prefer "|" if you have |"| active to do +% (I like |"|, but you may prefer \verb"|" if you have |"| active to do % umlauts, for instance.) Then if you say -% "\MakeShortVerb{\"\meta{c}"}" you can subsequently use +% |\MakeShortVerb{\|\meta{c}|}| you can subsequently use % \meta{c}\meta{text}\meta{c} as the equivalent of -% "\verb"\meta{c}\meta{text}\meta{c}; analogously, the "*"-form -% "\MakeShortVerb*{\"\meta{c}"}" gives you the equivalent of -% "\verb*"\meta{c}\meta{text}\meta{c}. Use -% "\DeleteShortVerb{\"\meta{c}"}" if you subsequently want \meta{c} to +% |\verb|\meta{c}\meta{text}\meta{c}; analogously, the |*|-form +% |\MakeShortVerb*{\|\meta{c}|}| gives you the equivalent of +% |\verb*|\meta{c}\meta{text}\meta{c}. Use +% |\DeleteShortVerb{\|\meta{c}|}| if you subsequently want \meta{c} to % revert to its previous meaning---you can always turn it on again % after the unusual section. The `short verb' commands make global -% changes. The abbreviated "\verb" may not appear in the argument of -% another command just like "\verb". However the `short verb' -% character may be used freely in the \textsf{verbatim} and -% \textsf{macrocode} environments without ill effect. -% "\DeleteShortVerb" is silently ignored if its argument does not +% changes. The abbreviated |\verb| may not appear in the argument of +% another command just like |\verb|. However the `short verb' +% character may be used freely in the \env{verbatim} and +% \env{macrocode} environments without ill effect. +% |\DeleteShortVerb| is silently ignored if its argument does not % currently represent a short verb character. Both commands type a % message to tell you the meaning of the character is being changed. % -% Please remember that the command "\verb" cannot be used in arguments -% of other commands. Therefore abbreviation characters for "\verb" +% Please remember that the command |\verb| cannot be used in arguments +% of other commands. Therefore abbreviation characters for |\verb| % cannot be used there either. % % This feature is also available as a sole package, \texttt{shortvrb}. @@ -885,24 +1122,33 @@ % We provide macros for logos such as \Web, \AmSTeX, \BibTeX, % \SliTeX{} and \PlainTeX. Just type |\Web|, |\AmSTeX|, % |\BibTeX|, |\SliTeX| or |\PlainTeX|, respectively. -% \LaTeX{} and \TeX{} are already defined in the \LaTeX{} format. +% \LaTeX{} and \TeX{} are already defined in \texttt{latex.tex}. % -% \DescribeMacro\meta +% \DescribeInterfaceMacro\meta % Another useful macro is |\meta| which has one argument and % produces something like \meta{dimen parameter}. % -% \DescribeMacro\OnlyDescription -% \DescribeMacro\StopEventually +% \DescribeInterfaceMacro\OnlyDescription +% \DescribeInterfaceMacro\MaybeStop +% \DescribeObsoleteInterfaceMacro\StopEventually % You can use the |\OnlyDescription| declaration in the driver % file to suppress the last part of your document (which presumably % exhibits the code). To make this work -% you have to place the command |\StopEventually| at a suitable -% point in your file. This macro has one argument in which you put +% \NewIn{v3} +% you have to place the command |\MaybeStop| at a suitable +% point in your file. This macro\footnote{For about 30 years this +% macro was called \cs{StopEventually} which was due to a ``false +% friend'' misunderstanding. In the German language the word +% ``eventuell'' mean roughly ``perhaps'' which isn't quite the same +% as ``eventually''. But given that this is now used for so long +% and all over the place we can't drop the old name. So it is still +% there to allow processing all the existing documentation.} +% has one argument in which you put % all information you want to see printed if your document ends at % this point (for example a bibliography which is normally printed at % the very end). When the |\OnlyDescription| declaration is -% missing the |\StopEventually| -% \DescribeMacro\Finale +% missing the |\MaybeStop| +% \DescribeInterfaceMacro\Finale % macro saves its argument in a macro called |\Finale| which can % afterwards be used to get things back (usually at the very end). % Such a scheme makes changes in two places unnecessary. @@ -910,17 +1156,17 @@ % Thus you can use this feature to produce a local guide for the % \TeX{} users which describes only the usage of macros (most of them % won't be interested in your definitions anyway). For the same -% reason the |\maketitle| \DescribeMacro\maketitle command is slightly +% reason the |\maketitle| \DescribeInterfaceMacro\maketitle command is slightly % changed to allow multiple titles in one document. So you can make % one driver file reading in several articles at once. -% \DescribeMacro{\ps@titlepage} To avoid an unwanted +% \DescribeInterfaceMacro{\ps@titlepage} To avoid an unwanted % \textsf{pagestyle} on the title page the |\maketitle| command issues % a |\thispagestyle{titlepage}| declaration which produces a % \textsf{plain} page if the \textsf{titlepage} page style is -% undefined. This allows class files like \textsf{ltugboat.cls} to +% undefined. This allows class files like \cls{ltugboat.cls} to % define their own page styles for title pages. % -% \DescribeMacro\AlsoImplementation +% \DescribeInterfaceMacro\AlsoImplementation % Typesetting the whole document is the default. However, this default % can also be explicitly selected using the declaration % |\AlsoImplementation|. This overwrites any previous @@ -933,24 +1179,23 @@ % \end{quote} % to make sure that all documents will show the code part. % -% \DescribeMacro\IndexInput \label{..Input} Last but not least I +% \DescribeInterfaceMacro\IndexInput \label{..Input} Last but not least I % defined an |\IndexInput| macro which takes a file name as an % argument and produces a verbatim listing of the file, indexing every % command as it goes along. This might be handy, if you want to learn % something about macros without enough documentation. I used this -% feature to cross-reference \texttt{latex.tex} (these days -% called \texttt{latex.ltx}) getting a verbatim +% feature to cross-reference \texttt{latex.tex} getting a verbatim % copy with about 15 pages index.\footnote{It took quite a long time % and the resulting \texttt{.idx} file was longer than the % \texttt{.dvi} file. Actually too long to be handled by the -% \textsf{makeindex} program directly (on our MicroVAX) but the final +% \prg{makeindex} program directly (on our MicroVAX) but the final % result was worth the trouble.} % % \changes{v2.1d}{2006/02/02}{Corrected description of \cs{changes} % macro.} -% \DescribeMacro\changes +% \DescribeInterfaceMacro\changes % To maintain a change history within the file, the |\changes| -% command may be placed amongt the description part of the changed +% command may be placed amongst the description part of the changed % code. It takes three arguments, thus: % \begin{quote} % |\changes{|\meta{version}|}{|\meta{date}|}{|^^A @@ -960,7 +1205,7 @@ % |\glossary| mechanism is used for this) which may be printed % after suitable formatting. The |\changes| macro generates the % printed entry in such a change history; because old -% versions\footnote{Before 2.6.} of the \textsf{makeindex} +% versions\footnote{Before 2.6.} of the \prg{makeindex} % program limit such fields to 64 characters, care should be taken % not to exceed this limit when describing the change. The actual % entry consists of the \meta{version}, the |\actualchar|, the current @@ -970,101 +1215,38 @@ % text |\generalname| is used instead of the macro name. When % referring to macros in change descriptions it is conventional to use % |\cs{|\meta{macroname}|}| rather than attempting to format it properly -% and using up valuable characters in the entry with old \textsf{makeindex} +% and using up valuable characters in the entry with old \prg{makeindex} % versions. % % \changes{v1.7a}{1992/02/26}{Description of \cs{RecordChanges} etc. % added -% to interface section.} \DescribeMacro\RecordChanges To cause the -% change information to be written out, include "\RecordChanges" in -% the driver file. \DescribeMacro\PrintChanges To read in and print +% to interface section.} \DescribeInterfaceMacro\RecordChanges To cause the +% change information to be written out, include |\RecordChanges| in +% the driver file. \DescribeInterfaceMacro\PrintChanges To read in and print % the sorted change history (in two columns), just put the % |\PrintChanges| command as the last (commented-out, and thus % executed during the documentation pass through the file) command in % your package file. Alternatively, this command may form one of the -% arguments of the |\StopEventually| command, although a change +% arguments of the |\MaybeStop| command, although a change % history is probably {\em not\/} required if only the description is -% being printed. The command assumes that \textsf{makeindex} or some +% being printed. The command assumes that \prg{makeindex} or some % other program has processed the \texttt{.glo} file to generate a -% sorted \texttt{.gls} file. You need a special \textsf{makeindex} +% sorted \texttt{.gls} file. You need a special \prg{makeindex} % style file; a suitable one is supplied with \DOC{}, called -% \texttt{gglo.ist}. \DescribeMacro\GlossaryMin -% \DescribeMacro\GlossaryPrologue \DescribeMacro\GlossaryParms The -% "\GlossaryMin", "\GlossaryPrologue" and "\GlossaryParms" macros are -% analogous to the "\Index"\ldots\ versions. (The \LaTeX{} `glossary' +% \texttt{gglo.ist}. +% +% \DescribeLaTeXDimen\GlossaryMin +% \DescribeInterfaceMacro\GlossaryPrologue +% \DescribeInterfaceMacro\GlossaryParms +% \DescribeLaTeXCounter{GlossaryColumns} +% The +% |\GlossaryMin|, |\GlossaryPrologue| and |\GlossaryParms| macros and +% the counter \texttt{GlossaryColumns} are +% analogous to the |\Index|\ldots\ versions. (The \LaTeX{} `glossary' % mechanism is used for the change entries.) % -% \label{sec:checksum} -% \DescribeMacro\CharacterTable -% \DescribeMacro\CheckSum -% To overcome some of the problems of sending files over the networks -% we developed two macros which should detect corrupted files. If one -% places the lines -% \begin{flushleft} -% \small\ttfamily ^^A \ttfamily to get the blanks between "..."s -% ^^A right -%"%%\CharacterTable"\\ -%"%% {Upper-case " -%"\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z"\\ -%"%% Lower-case " -%"\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z"\\ -%"%% Digits \0\1\2\3\4\5\6\7\8\9"\\ -%"%% Exclamation \! Double quote "\verb=\"= -%" Hash (number) \#"\\ -%"%% Dollar \$ Percent \% Ampersand \&"\\ -%"%% Acute accent \' Left paren \( Right paren \)"\\ -%"%% Asterisk \* Plus \+ Comma \,"\\ -%"%% Minus \- Point \. Solidus \/"\\ -%"%% Colon \: Semicolon \; Less than \<"\\ -%"%% Equals \= Greater than \> Question mark \?"\\ -%"%% Commercial at \@ Left bracket \[ Backslash \\"\\ -%"%% Right bracket \] Circumflex \^ Underscore \_"\\ -%"%% Grave accent \` Left brace \{ Vertical bar \|"\\ -%"%% Right brace \} Tilde \~}"\\ -%"%%" -%\end{flushleft} -% at the beginning of the file then character translation failures -% will be detected, provided of course, that the used \DOC{} -% package has a correct default table. The percent -% signs\footnote{There are two percent signs in each line. This has -% the effect that these lines are not removed by the -% \texttt{docstrip.tex} program.} at the beginning of the lines should -% be typed in, since only the \DOC{} package should look at this -% command. -% -% -% Another problem of mailing files is possible truncation. To detect -% these sort of errors we provide a |\CheckSum| macro. The check-sum -% of a file is simply the number of backslashes in the code, i.e.\ all -% lines between the \textsf{macrocode} environments. But don't be -% afraid: you don't have count the code-lines yourself; this is done -% by the \DOC{} package for you. You simply have add -% \begin{quote} -% |% \CheckSum{0}| -% \end{quote} -% near the beginning of the file and -% use -% the |\StopEventually| (which starts looking for backslashes) and the -% |\Finale| command. The latter will inform you either that your file -% has no check-sum (telling you the right number) or that your number -% is incorrect if you put in anything other than zero but guessed wrong (this time -% telling you both the correct and the -% incorrect one). Then you go to the top of your file again and change the -% line to the right number, i.e. -% line -% \begin{quote} -% |% \CheckSum{|\meta{number}|}| -% \end{quote} -% and that's all. -% -% While |\CharacterTable| and |\CheckSum| have been important features -% in the early days of the public internet when \DOC{} was written as -% the mail gateways back then were rather unreliable and often mangled -% files they are these days more a nuisance than any help. They are -% therefore now fully optional and no longer recommended for use with new files. -% % -% \DescribeMacro\bslash +% \DescribeInterfaceMacro\bslash % From time to time, it is necessary to print a |\| without % being able to use the |\verb| command because the % |\catcode|$\,$s of the symbols are already firmly @@ -1072,53 +1254,55 @@ % |\bslash| presupposing, of course, that the actual font in % use at this point contains a `backslash' as a symbol. Note that % this definition of |\bslash| is expandable; it inserts a -% $"\"_{12}$. This means that you have to |\protect| +% $|\|_{12}$. This means that you have to |\protect| % it if it is used in `moving arguments'. % -% \DescribeMacro\MakePrivateLetters +% \DescribeInterfaceMacro\MakePrivateLetters % \changes{v1.7a}{1992/02/26}{Documented \cs{MakePrivateLetters} in % interface section}^^A -% If your macros "\catcode" anything other than "@" to `letter', you -% should redefine "\MakePrivateLetters" so that it also makes the +% If your macros |\catcode| anything other than |@| to `letter', you +% should redefine |\MakePrivateLetters| so that it also makes the % relevant characters `letters' for the benefit of the indexing. The -% default definition is just "\makeatletter". +% default definition is just |\makeatletter|. % -% \DescribeMacro\DontCheckModules \DescribeMacro\CheckModules -% \DescribeMacro\Module \DescribeMacro\AltMacroFont The `module' -% directives of the \textsf{docstrip} system \cite{art:docstrip} are -% normally recognised and invoke special formatting. This can be +% \DescribeInterfaceMacro\DontCheckModules \DescribeInterfaceMacro\CheckModules +% \DescribeInterfaceMacro\Module \DescribeInterfaceMacro\AltMacroFont The `module' +% directives of the \prg{docstrip} system \cite{art:docstrip} are +% normally recognized and invoke special formatting. This can be % turned on and off in the \texttt{.dtx} file or the driver file using -% "\CheckModules" and "\DontCheckModules". If checking for module +% |\CheckModules| and |\DontCheckModules|. If checking for module % directives is on (the default) then code in the scope of the -% directives is set as determined by the hook "\AltMacroFont", which +% directives is set as determined by the hook |\AltMacroFont|, which % gives {\small\ttfamily\itshape small italic type\-writer\/} by % default in the New Font Selection Scheme but just ordinary % {\small\ttfamily small type\-writer} in the old one, where a font % such as italic typewriter can't be used portably (plug for NFSS); % you will need to override this if you don't have the italic % typewriter font available. Code is in such a scope if it's on a -% line beginning with "%<" or is between lines starting with -% "%<*"\meta{name list}">" and "%</"\meta{name list}">". The -% directive is formatted by the macro "\Module" whose single argument +% line beginning with |%<| or is between lines starting with +% |%<*|\meta{name list}|>| and |%</|\meta{name list}|>|. The +% directive is formatted by the macro |\Module| whose single argument % is the text of the directive between, but not including, the angle % brackets; this macro may be re-defined in the driver or package file % and by default produces results like \Module{+foo\string|bar} with no % following space. % -% \DescribeMacro{StandardModuleDepth} Sometimes (as in this file) the +% \DescribeLaTeXCounter{StandardModuleDepth} Sometimes (as in this file) the % whole code is surrounded by modules to produce several files from a % single source. In this case it is clearly not appropriate to format -% all code lines in a special "\AltMacroFont". For this reason a -% counter "StandardModuleDepth" is provided which defines the level of +% all code lines in a special |\AltMacroFont|. For this reason a +% counter |StandardModuleDepth| is provided which defines the level of % module nesting which is still supposed to be formatted in -% "\MacroFont" rather then "\AltMacroFont". The default setting is -% "0", for this documentation it was set to +% |\MacroFont| rather then |\AltMacroFont|. The default setting is +% |0|, for this documentation it was set to %\begin{verbatim} % \setcounter{StandardModuleDepth}{1} %\end{verbatim} % at the beginning of the file. % % +% \section{Examples and basic usage summary} +% % \subsection{Basic usage summary} % \changes{v1.7a}{1992/03/11}{Added basic usage summary to spell % it out.} @@ -1126,26 +1310,482 @@ % To sum up, the basic structure of a \texttt{.dtx} file without any % refinements is like this: % \begin{verse}\small -% "% "\meta{waffle}\ldots\\ +% |% |\meta{waffle}\ldots\\ % \quad\ldots \\ -% "% \DescribeMacro{\fred}"\\ -% "% "\meta{description of fred's use}\\ +% |% \DescribeMacro{\fred}|\\ +% |% |\meta{description of fred's use}\\ % \quad\ldots\\ -% "% \StopEventually{"\meta{finale code}"}"\\ +% |% \MaybeStop{|\meta{finale code}|}|\\ % \quad\ldots\\ -% "% \begin{macro}{\fred}"\\ -% "% "\meta{commentary on macro fred}\\ +% |% \begin{macro}{\fred}|\\ +% |% |\meta{commentary on macro fred}\\ % \verb*+% \begin{macrocode}+\\ % \meta{code for macro fred}\\ % \verb*+% \end{macrocode}+\\ -% "% \end{macro}"\\ +% |% \end{macro}|\\ % \quad\ldots\\ -% "% \Finale \PrintIndex \PrintChanges" +% |% \Finale \PrintIndex \PrintChanges| % \end{verse} -% For examples of the use of most---if not all---of the features -% described above consult the \texttt{doc.dtx} source itself. +% For further examples of the use of most---if not all---of the features +% described above, consult the \texttt{doc.dtx} source itself. +% +% +% +% \subsection{Examples} +% +% The default setup includes definitions for the \DOC elements +% ``macro'' and ``environment''. They correspond to the following +% declarations: +%\begin{verbatim} +% \NewDocElement[macrolike = true , +% idxtype = , +% idxgroup = , +% printtype = +% ]{Macro}{macro} +% +% \NewDocElement[macrolike = false , +% idxtype = env. , +% idxgroup = environments , +% printtype = \textit{env.} +% ]{Env}{environment} +%\end{verbatim} +% +% To showcase the new features of \DOC version 3 to some extend, the +% current documentation is done by redefining these declarations and +% also adding a few additional declarations on top. +% +% For any internal command we document we use \texttt{Macro} and put +% all of them under the heading ``\LaTeX{} commands'' (note the use of \cs{actualchar}): +%\begin{verbatim} +%\RenewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = LaTeX comands\actualchar\LaTeX{} commands , +% printtype = +% ]{Macro}{macro} +%\end{verbatim} +% +% We only have package environments so we use \texttt{Env} for those +% and group them as well: +%\begin{verbatim} +%\RenewDocElement[macrolike = false , +% toplevel = false, +% idxtype = env. , +% idxgroup = Package environments, +% printtype = \textit{env.} +% ]{Env}{environment} +%\end{verbatim} +% +% +% All the interface commands are also grouped together under the label +% ``Package commands'', we use \texttt{InterfaceMacro} for them: +%\begin{verbatim} +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = Package commands, +% printtype = +% ]{InterfaceMacro}{imacro} +%\end{verbatim} +% +% And since we also have a few obsolete interfaces we add yet another category: +%\begin{verbatim} +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = , +% idxgroup = Package commands (obsolete), +% printtype = +% ]{ObsoleteInterfaceMacro}{omacro} +%\end{verbatim} +% +% Another type of category are the package keys: +%\begin{verbatim} +%\NewDocElement[macrolike = false , +% toplevel = false, +% idxtype = key , +% idxgroup = Package keys , +% printtype = \textit{key} +% ]{Key}{key} +%\end{verbatim} +% +% Finally we have \TeX{} counters (with a backslash in front) and +% \LaTeX{} counters (no backslash) and the two types of \LaTeX{} +% length registers: +%\begin{verbatim} +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = counter , +% idxgroup = TeX counters\actualchar \protect\TeX{} counters , +% printtype = \textit{counter} +% ]{TeXCounter}{tcounter} +% +%\NewDocElement[macrolike = false , +% toplevel = false, +% idxtype = counter , +% idxgroup = LaTeX counters\actualchar \LaTeX{} counters , +% printtype = \textit{counter} +% ]{LaTeXCounter}{lcounter} +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = skip , +% idxgroup = LaTeX length\actualchar \LaTeX{} length (skip) , +% printtype = \textit{skip} +% ]{LaTeXSkip}{lskip} +% +%\NewDocElement[macrolike = true , +% toplevel = false, +% idxtype = dimen , +% idxgroup = LaTeX length\actualchar \LaTeX{} length (dimen) , +% printtype = \textit{dimen} +% ]{LaTeXDimen}{ldimen} +% +%\end{verbatim} +% +% And we modify the appearance of the index: just 2 columns not 3 and +% all the code-line entries get prefixed with an ``$\ell$'' (for line) +% so that they can easily be distinguished from page index entries. +%\begin{verbatim} +% \renewcommand\code[1]{\mbox{$\ell$-#1}} +% \renewcommand\main[1]{\underline{\mbox{$\ell$-#1}}} +% \setcounter{IndexColumns}{2} +%\end{verbatim} +% +% +% +% \section{Incompatibilities between version 2 and 3} +% +% The basic approach when developing version~3 was to provide a very +% high level of compatibility with version~2 so that nearly all +% older documents should work out of the box without the need for +% any adjustments. +% +% But as with any change there are situations where that change can +% result in some sort of incompatibility, e.g., if a newly introduce +% command name was already been defined in the user document then +% there will be a conflict that is nearly impossible to avoid +% 100\%. +% +% As mentioned earlier, \DOC now supports options on several commands +% and environments and as a result it is necessary to use braces +% around the argument for \cs{DescribeMaro} if the ``macro to be +% described'' uses private letters such as |@| or |_| as part of its +% name. That was always the official syntax but in the past you could +% get away with leaving out the braces more often than you can now. +% +% The old \DOC documentation also claimed that redefinitions of things +% like \cs{PrintDescribeMacro} could be done before loading the +% package (and not only afterwards) and \DOC would in that case not +% change those commands. As the setup mechanisms are now much more +% powerful and general such an approach is not really good. So with +% \DOC version~3 modifications have to be done after the \DOC package +% got loaded and the last modification will always win. +% +% I'm temped to drop compatibility with \LaTeX~2.09 (but so far I +% have left it in). +% +% In the past it was possible to use macros declared with \cs{outer} +% in the argument of \verb=\begin{macro}= or \cs{DoNotIndex} even +% though \cs{outer} is not a concept supported in \LaTeX{}. This is no +% longer possible. More exactly, it is no longer possible to prevent +% them from being indexed (as \cs{DoNotIndex} can't be used), but you +% can pass them to the \env{macro} environment as follows: +%\begin{verbatim} +% \begin{macro}[outer]{\foo} +%\end{verbatim} +% if \cs{foo} is a macro declared with \cs{outer}. The technical +% reason for this change is that in the past various other commands, +% such as |\{| or |\}| did not work properly in these arguments when +% they where passed as ``strings'' and not as single macro tokens. But +% by switching to macro tokens we can't have \cs{outer} macros because +% their feature is to be not allowed in arguments. So what happens +% above when you use \texttt{[outer]} is that the argument is read as +% a string with four character tokens so that it is not recognized as +% being \cs{outer}. +% +% +% \section{Old interfaces no longer really needed} +% +% Thirty years is a long time in the life of computer programs, so +% there are a good number of interfaces within \DOC that are really +% only of historical interest (or when processing equally old sources. +% We list them here, but in general we suggest that for new +% documentation they should not be used. +% +% +% \subsection{\prg{makeindex} bugs} +% +% \DescribeObsoleteInterfaceMacro\OldMakeindex +% Versions of \prg{makeindex} prior to 2.9 had some bugs affecting +% \DOC{}. One of these, +% pertaining to the |%| character doesn't have a work-around +% appropriate for versions with and without the +% bug.\label{makeindex:version} If +% you really still have an old version, invoke |\OldMakeindex| in a +% package file or the driver file to prevent problems with index entries +% such as |\%|, although you'll probably normally want to turn off +% indexing of |\%| anyway. Try to get an up-to-date \prg{makeindex} +% from one of the \TeX{} repositories. +% +% \subsection{File transmission issues} +% +% In the early days of the Internet file transmission issues have been +% a serious problem. There was a famous gateway in Rochester, UK that +% handled the traffic from the European continent to the UK and that +% consisted of two IBM machines running with different codepages (that +% had non-reversible differences). As a result ``strange'' \TeX{} +% characters got replaced with something else with the result that the +% files became unusable. +% +% To guard against this problem (or rather to detect it if something +% got broken in transfer I added code to \DOC to check a static +% character table and also to have a very simple checksum feature +% (counting backslashes). +% +% These days the \cs{CheckSum} is of little value (and a lot of pain +% for the developer) and character scrambling doesn't happen any more +% so the \cs{CharacterTable} is essentially useless. Thus neither +% should be used in new developments. +% +% \label{sec:checksum} +% \DescribeObsoleteInterfaceMacro\CharacterTable +% \DescribeObsoleteInterfaceMacro\CheckSum +% To overcome some of the problems of sending files over the networks +% we developed two macros which should detect corrupted files. If one +% places the lines +% \begin{flushleft} +% \small\ttfamily ^^A \ttfamily to get the blanks between "..."s +% ^^A right +%|%%\CharacterTable|\\ +%|%% {Upper-case | +%|\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z|\\ +%|%% Lower-case | +%|\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z|\\ +%|%% Digits \0\1\2\3\4\5\6\7\8\9|\\ +%|%% Exclamation \! Double quote "| +%| Hash (number) \#|\\ +%|%% Dollar \$ Percent \% Ampersand \&|\\ +%|%% Acute accent \' Left paren \( Right paren \)|\\ +%|%% Asterisk \* Plus \+ Comma \,|\\ +%|%% Minus \- Point \. Solidus \/|\\ +%|%% Colon \: Semicolon \; Less than \<|\\ +%|%% Equals \= Greater than \> Question mark \?|\\ +%|%% Commercial at \@ Left bracket \[ Backslash \\|\\ +%|%% Right bracket \] Circumflex \^ Underscore \_|\\ +%|%% Grave accent \` Left brace \{ Vertical bar |\verb=|=\\ +%|%% Right brace \} Tilde \~}|\\ +%|%%| +%\end{flushleft} +% at the beginning of the file then character translation failures +% will be detected, provided of course, that the used \DOC{} +% package has a correct default table. The percent +% signs\footnote{There are two percent signs in each line. This has +% the effect that these lines are not removed by the +% \texttt{docstrip.tex} program.} at the beginning of the lines should +% be typed in, since only the \DOC{} package should look at this +% command. +% +% +% Another problem of mailing files is possible truncation. To detect +% these sort of errors we provide a |\CheckSum| macro. The check-sum +% of a file is simply the number of backslashes in the code, i.e.\ all +% lines between the \env{macrocode} environments. But don't be +% afraid: you don't have count the code-lines yourself; this is done +% by the \DOC{} package for you. You simply have add +% \begin{quote} +% |% \CheckSum{0}| +% \end{quote} +% near the beginning of the file and use the |\MaybeStop| (which +% starts looking for backslashes) and the |\Finale| command. The +% latter will inform you either that your file has no check-sum +% (telling you the right number) or that your number is incorrect if +% you put in anything other than zero but guessed wrong (this time +% telling you both the correct and the incorrect one). Then you go to +% the top of your file again and change the line to the right number, +% i.e., line +% \begin{quote} +% |% \CheckSum{|\meta{number}|}| +% \end{quote} +% and that's all. +% +% While |\CharacterTable| and |\CheckSum| have been important features +% in the early days of the public internet when \DOC{} was written as +% the mail gateways back then were rather unreliable and often mangled +% files they are these days more a nuisance than any help. They are +% therefore now fully optional and no longer recommended for use with +% new files. +% +% + + + +% ^^A ============================================================= + + + +% \begin{multicols}{2}[\medskip \noindent\rule{\textwidth}{.3pt} +% \section{Introduction to previous releases}] +% +% \begin{quote} +% \textbf{Original abstract:} +% This package contains the definitions that are necessary to +% format the documentation of package files. The package was +% developed in Mainz in cooperation with the Royal Military College +% of Science. This is an update which documents various changes +% and new features in \DOC{} and integrates the features of +% \env{newdoc}. +% \end{quote} +% +% The \TeX{} macros which are described here allow definitions and +% documentation to be held in one and the same file. This has the +% advantage that normally very complicated instructions are made +% simpler to understand by comments inside the definition. In addition +% to this, updates are easier and only one source file needs to be +% changed. On the other hand, because of this, the package files are +% considerably longer: thus \TeX{} takes longer to load them. If this +% is a problem, there is an easy remedy: one needs only to run the +% \texttt{docstrip.tex} program that removes nearly all lines that begin +% with a +% percent sign. +% +% The idea of integrated documentation was born with the development +% of the \TeX{} program; it was crystallized in Pascal with the \Web{} +% system. The advantages of this method are plain to see (it's easy +% to make comparisons \cite{art:Knuthliterat}). Since this +% development, systems similar to \Web{} have been developed for other +% programming languages. But for one of the most complicated +% programming languages (\TeX) the documentation has however been +% neglected. The \TeX{} world seems to be divided between:--- +% \begin{itemize} \item a couple of ``wizards'', who produce many +% lines of completely unreadable code ``off the cuff'', and \item many +% users who are amazed that it works just how they want it to do. Or +% rather, who despair that certain macros refuse to do what is +% expected of them.\end{itemize} +% +% I do not think that the \Web{} system is {\em the\/} reference work; +% on the contrary, it is a prototype which suffices for the +% development of programs within the \TeX{} world. It is sufficient, +% but not totally sufficient.\footnote{I know that this will be seen +% differently by a few people, but this product should not be seen as +% the finished product, at least as far as applications concerning +% \TeX{} are concerned. The long-standing debate over `multiple +% change files' shows this well.} As a result of \Web, new programming +% perspectives have been demonstrated; unfortunately, though, they +% haven't been developed further for other programming languages. +% +% The method of documentation of \TeX{} macros which I have introduced +% here should also only be taken as a first sketch. It is designed +% explicitly to run under \LaTeX{} alone. Not because I was of the +% opinion that this was the best starting point, but because from this +% starting point it was the quickest to develop.\footnote{This +% argument is a bad one, however, it is all too often trotted out.} As +% a result of this design decision, I had to move away from the +% concept of modularization; this was certainly a step backward. +% +% I would be happy if this article could spark off discussion over +% \TeX\ documentation. I can only advise anyone who thinks that they +% can cope without documentation to ``Stop Time'' until he or she +% completely understands the \AmSTeX{} source code. +% +% \subsection*{Using the \DOC{} package} +% +% Just like any other package, invoke it by requesting it with a +% |\usepackage| command in the preamble. \DOC's use of +% |\reversemarginpars| may make it incompatible with some classes. +% \changes{v1.7a}{1992/02/25}{Altered usage info} +% +% +% \end{multicols} +% +% +% +% +% \begin{multicols}{2}[\subsection*{Preface to version 1.7 (from +% around 1992)}] +% +% This version of \texttt{doc.dtx} documents changes which have occurred +% since the last published version \cite{art:doc} but which have been +% present in distributed versions of \texttt{doc.sty} for some time. It +% also integrates the (undocumented) features of the distributed +% \texttt{newdoc.sty}. +% +% The following changes and additions have been made to the user +% interface since the published version~\cite{art:doc}. See +% \S\ref{sec:interface} for more details. +% \begin{description} +% \item[Driver mechanism] |\DocInput| is now used in the driver file +% to input possibly multiple independent \DOC{} files and \DOC{} no +% longer has to be the last package. |\IndexListing| is replaced +% by |\IndexInput|; +% \item[Indexing] is controlled by |\PageIndex| and |\CodelineIndex|, +% one of which must be specified to produce an index---there is no +% longer a |\makeindex| in the default |\DocstyleParms|; +% \item[The \texttt{macro} environment] now takes as argument the +% macro name {\em with\/} the backslash; +% \item[Verbatim text] Newlines are now forbidden inside |\verb| and +% commands |\MakeShortVerb| and |\DeleteShortVerb| are provided for +% verbatim shorthand; +% \item[\texttt{\bslash par}] can now be used in |\DoNotIndex|; +% \item[Checksum/character table support] for ensuring the integrity +% of distributions is added; +% \item[\texttt{\bslash printindex}] becomes |\PrintIndex|; +% \item[\texttt{multicol.sty}] is no longer necessary to use \DOC{} or +% print the documentation (although it is recommended); +% \item[`Docstrip' modules] are recognized and formatted specially. +% \end{description} +% +% As well as adding some completely new stuff, +% the opportunity has been taken to add some commentary to the code +% formerly in \pkg{newdoc} and that added after version 1.5k of +% \DOC. Since (as noted in the sections concerned) this +% commentary wasn't written by Frank Mittelbach but the code was, it is +% probably {\em not\/} true in this case that ``if the code and +% comments disagree both are probably wrong''! +% +% \subsubsection*{Bugs} +% +% There are some known bugs in this version: +% \begin{itemize} +% \item The |\DoNotIndex| command doesn't work for some single +% character commands most noticeable |\%|. +% \item The `General changes' glossary entry would come out after +% macro names with a leading |!| and possibly a leading |"|; +% \item If you have an old version of \prg{makeindex} long |\changes| +% entries will come out strangely and you may find the section +% header amalgamated with the first changes entry. Try to get an +% up-to-date one (see p.~\pageref{makeindex:version}); +% \item Because the accompanying \prg{makeindex} style files support +% the inconsistent attribute specifications of older and newer +% versions \prg{makeindex} always complains about three `unknown +% specifier's when sorting the index and changes entries. +% \item If |\MakeShortVerb| and |\DeleteShortVerb| are used with +% single character arguments, e.g., \verb"{|}" instead of \verb"{\|}" chaos +% may happen. +% \end{itemize} +% (Some `features' are documented below.) +% +% \subsubsection*{Wish list} +% +% \begin{itemize} +% \item Hooks to allow |\DescribeMacro| and |\DescribeEnv| to write +% out to a special file information about the package's `exported' +% definitions which they describe. This could subsequently be +% included in the \texttt{docstrip}ped \texttt{.sty} file in a +% suitable form for use by smart editors in command completion, +% spelling checking etc., based on the packages used in a document. +% This would need agreement on a `suitable form'. \item Indexing of +% the modules used in \texttt{docstrip}'s |%<| directives. I'm not +% sure how to index directives containing module combinations; \item +% Writing out bibliographic information about the package; \item Allow +% turning off use of the special font for, say, the next guarded +% block. +% \end{itemize} % -% \subsection{Acknowledgements} +% +% \end{multicols} + + +% \subsection*{Acknowledgements} % % I would like to thank all folks at Mainz and at the Royal Military % College of Science for their help in this project. Especially Brian @@ -1158,14 +1798,14 @@ % \texttt{doc.dtx} after its publication in \textsl{TUGboat\/} have % been never properly described. Beside this splendid work he kindly % provided additional code (like ``docstrip'' module formatting) which -% I think every \textsf{doc.dtx} user will be grateful for. +% I think every \DOC user will be grateful for. % % -% \StopEventually{ +% \MaybeStop{ % \begin{thebibliography}{1} % \bibitem{book:Buerger} \textsc{G. A. B\"urger}. -% \newblock Wunderbare Reisen zu Wasser und zu Lande, Feldz\"uge -% und lustige Abenteuer des Freyherrn v.\ M\"unchhausen. +% \newblock Wunderbare Reisen zu Wasser und zu Lande, Feldzüge +% und lustige Abenteuer des Freyherrn v.\ Münchhausen. % \newblock London, 1786 \& 1788. % \bibitem{art:Knuthliterat} \textsc{D. E. Knuth}. % \newblock Literate Programming. @@ -1189,20 +1829,20 @@ % \newblock \texttt{docstrip.dtx} (to appear). % \newblock The file is part of the DOC package. % \bibitem{book:Raspe} \textsc{R. E. Raspe} (*1737, \dag 1797). -% \newblock Baron M\"unchhausens narrative of his marvellous +% \newblock Baron Münchhausens narrative of his marvelous % travels and campaigns in Russia. % \newblock Oxford, 1785. -% \bibitem{art:verbatim} \textsc{Rainer Sch\"opf}. +% \bibitem{art:verbatim} \textsc{Rainer Schöpf}. % \newblock A New Implementation of \LaTeX's \texttt{verbatim} and % \texttt{verbatim*} Environments. % \newblock File \texttt{verbatim.doc}, version 1.4i. % \end{thebibliography} % -% \ifmulticols % \addtocontents{toc}{\protect\end{multicols}} -% \fi % -% } ^^A end \StopEventually +% \PrintIndex +% +% } ^^A end \MaybeStop % % % \section{The Description of Macros} @@ -1228,50 +1868,206 @@ \@ifundefined{macro@cnt}{}{\endinput} % \end{macrocode} % -% \DescribeMacro\fileversion -% \DescribeMacro\filedate -% \DescribeMacro\docdate +% \DescribeObsoleteInterfaceMacro\fileversion +% \DescribeObsoleteInterfaceMacro\filedate +% \DescribeObsoleteInterfaceMacro\docdate % As you can see I used macros like |\fileversion| to denote the % version number and the date. They are defined at the very beginning -% of the package file (without a surrounding \textsf{macrocode} +% of the package file (without a surrounding \env{macrocode} % environment), so I don't have to search for this place here when I % change the version number. You can see their actual outcome in a % footnote to the title. % % -% The first thing that we do next is to get ourselves a new comment -% sign. Because all sensible signs are already occupied, we will -% choose one that can only be entered indirectly: +% The first thing that we do next is to get ourselves two alternative comment +% signs. Because all sensible signs are already occupied, we will +% choose some that can only be entered indirectly: % {\DoNotIndex{\^}^^A avoid misinterpretation !!!!! VERIFY % \begin{macrocode} \catcode`\^^A=14 +\catcode`\^^X=14 % \end{macrocode} % We repeat this statement at the beginning of the document in case % the \texttt{inputenc} package is used disabling it again. % \changes{v2.0b}{1998/05/19}{Init docs private comment char at begin % of document again (pr2581)} % \begin{macrocode} -\AtBeginDocument{\catcode`\^^A=14\relax} +\AtBeginDocument{\catcode`\^^A=14\relax\catcode`\^^X=14\relax} % \end{macrocode} % \SortIndex{\string^\string^A}{\string\verb\verbatimchar % \string^\string^A\verbatimchar +% \encapchar main}^^A +% \SortIndex{\string^\string^X}{\string\verb\verbatimchar +% \string^\string^X\verbatimchar % \encapchar main} % } % % -% \subsection{Options supported by \DOC{}} +% \subsection{Keys supported by \DOC{}} +% +% In the past this used \pkg{kvoptions} but this will be +% replaced by using \texttt{l3keys} at some point in the future. +% Right now this is only a lightweight shift---the code could and +% should be altered further. +% \fmi{cleanup replacement of kvoptions} +% +% \begin{macrocode} +\RequirePackage{l3keys2e} +\ExplSyntaxOn +% \end{macrocode} +% Some keys are available as options for use in \cs{usepackage} some are +% for the generated item \api's: +% \fmi{cleanup documentation (and code once the new key interface is there)} +% \begin{macrocode} +\newif \ifdoc@noprint +\newif \ifdoc@noindex +\newif \ifdoc@hyperref \doc@hyperreftrue +\newif \ifdoc@multicol \doc@multicoltrue +\newif \ifdoc@debugshow +\newif \ifdoc@reportchangedates +\keys_define:nn {doc} + { + noprint .choice:, + noprint / true .code:n = { \legacy_if_set_true:n { doc@noprint } }, + noprint / false .code:n = { \legacy_if_set_false:n { doc@noprint } }, + noprint .default:n = { true }, + noindex .choice:, + noindex / true .code:n = { \legacy_if_set_true:n { doc@noindex } }, + noindex / false .code:n = { \legacy_if_set_false:n { doc@noindex } }, + noindex .default:n = { true }, + hyperref .choice:, + hyperref / true .code:n = { \legacy_if_set_true:n { doc@hyperref } }, + hyperref / false .code:n = { \legacy_if_set_false:n { doc@hyperref } }, + hyperref .default:n = { true }, + hyperref .choice:, + nohyperref / true .code:n = { \legacy_if_set_false:n { doc@hyperref } }, + nohyperref / false .code:n = { \legacy_if_set_true:n { doc@hyperref } }, + nohyperref .default:n = { true }, + multicol .choice:, + multicol / true .code:n = { \legacy_if_set_true:n { doc@multicol } }, + multicol / false .code:n = { \legacy_if_set_false:n { doc@multicol } }, + multicol .default:n = { true }, + nomulticol .choice:, + nomulticol / true .code:n = { \legacy_if_set_false:n { doc@multicol } }, + nomulticol / false .code:n = { \legacy_if_set_true:n { doc@multicol } }, + multicol .default:n = { true }, + debugshow .choice:, + debugshow / true .code:n = { \legacy_if_set_true:n { doc@debugshow } }, + debugshow / false .code:n = { \legacy_if_set_false:n { doc@debugshow } }, + debugshow .default:n = { true }, + reportchangedates .choice:, + reportchangedates / true .code:n = { \legacy_if_set_true:n { doc@reportchangedates } }, + reportchangedates / false .code:n = { \legacy_if_set_false:n { doc@reportchangedates } }, + reportchangedates .default:n = { true }, + } +% \end{macrocode} +% This one is for \cs{usepackage} and \cs{NewDocElement}: +% \begin{macrocode} +\newif \ifdoc@toplevel \doc@topleveltrue +\keys_define:nn {doc} + { + toplevel .choice:, + toplevel / true .code:n = { \legacy_if_set_true:n { doc@toplevel } }, + toplevel / false .code:n = { \legacy_if_set_false:n { doc@toplevel } }, + toplevel .default:n = { true }, + notoplevel .choice:, + notoplevel / true .code:n = { \legacy_if_set_false:n { doc@toplevel } }, + notoplevel / false .code:n = { \legacy_if_set_true:n { doc@toplevel } }, + notoplevel .default:n = { true } + } +% \end{macrocode} +% These are for \cs{NewDocElement}: +% \begin{macrocode} +\newif \ifdoc@macrolike +\keys_define:nn {doc} + { + macrolike .choice:, + macrolike / true .code:n = { \legacy_if_set_true:n { doc@macrolike } }, + macrolike / false .code:n = { \legacy_if_set_false:n { doc@macrolike } }, + macrolike .default:n = { true }, + envlike .choice:, + envlike / true .code:n = { \legacy_if_set_false:n { doc@macrolike } }, + envlike / false .code:n = { \legacy_if_set_true:n { doc@macrolike } }, + envlike .default:n = { true } + } + +\keys_define:nn { doc } + { + idxtype .tl_set:N = \doc@idxtype, + idxgroup .tl_set:N = \doc@idxgroup, + printtype .tl_set:N = \doc@printtype + } +% \end{macrocode} +% And this one only for instances of doc elements in the document, it +% covers the case where you want to document a macro which is +% declared to be \cs{outer}. This is not a concept officially +% supported by \LaTeX{} but there are cases when it gets used. +% \begin{macrocode} +\newif\ifdoc@outer +\keys_define:nn {doc} + { + outer .choice:, + outer / true .code:n = { \legacy_if_set_true:n { doc@outer } }, + outer / false .code:n = { \legacy_if_set_false:n { doc@outer } }, + outer .default:n = { true }, + } +\ExplSyntaxOff +% \end{macrocode} +% +% \subsection{Processing the package keys} +% +% \begin{macrocode} +\ProcessKeysOptions {doc} +% \end{macrocode} % -% Not options available at the moment % +% \begin{macro}{\ifscan@allowed} +% \begin{macro}{\scan@allowedtrue} +% \begin{macro}{\scan@allowedfalse} +% |\ifscan@allowed| is the switch used to determine if +% the |\active@escape@char|\SpecialIndex{\active@escape@char} +% should start the macro scanning mechanism. % \begin{macrocode} +\newif\ifscan@allowed \scan@allowedtrue % \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{imacro}{\SetupDoc} +% +% We need to save the default value for some options because \DOC elements +% can locally set them. +% \fmi{Use 2e interface for \cs{keys\_set:nn} when available} +% \begin{macrocode} +\def\SetupDoc#1{% + \csname keys_set:nn\endcsname{doc}{#1}% + \edef\doc@noprintdefault{\ifdoc@noprint true\else false\fi}% + \ifdoc@noindex +% \end{macrocode} +% If we do not index by default then we should also turn off +% \cs{scan@allowed}. +% \begin{macrocode} + \def\doc@noindexdefault{true}% + \scan@allowedfalse + \else + \def\doc@noindexdefault{false}% + \fi +} +% \end{macrocode} +% \end{imacro} +% +% \begin{macrocode} +\SetupDoc{} % just save the default values +% \end{macrocode} +% % % % \subsection{Macros surrounding the `definition parts'} % % \begin{environment}{macrocode} % Parts of the macro definition will be surrounded by the -% environment \textsf{macrocode}. Put more precisely, they will be +% environment \env{macrocode}. Put more precisely, they will be % enclosed by a macro whose argument (the text to be set % `verbatim') is terminated by the string % \verb*+% \end{macrocode}+. Carefully note the number of spaces. @@ -1307,7 +2103,7 @@ % \begin{macrocode} \def\macro@code{% % \end{macrocode} -% In theory it should consist of a \textsf{trivlist} environment, but +% In theory it should consist of a \env{trivlist} environment, but % the empty space before and after the environment should not be % too large. % \begin{macrocode} @@ -1384,7 +2180,7 @@ % indexing by code lines is switched on the line number is incremented % and set appropriately. We also check whether the start of the next % line indicates a \texttt{docstrip} module directive and process it -% appropriately if so using "\check@module". +% appropriately if so using |\check@module|. % \begin{macrocode} \global\@newlistfalse \global\@minipagefalse @@ -1408,9 +2204,9 @@ % \begin{macro}{\blank@linetrue} % \begin{macro}{\blank@linefalse} % |\ifblank@line| is the switch used in the definition above. -% In the original \textsf{verbatim} environment the |\if@tempswa| +% In the original \env{verbatim} environment the |\if@tempswa| % switch is used. This is dangerous because its value may change -% while processing lines in the \textsf{macrocode} environment. +% while processing lines in the \env{macrocode} environment. % \begin{macrocode} \newif\ifblank@line % \end{macrocode} @@ -1419,10 +2215,10 @@ % \end{macro} % % \begin{macro}{\endmacrocode} -% Because we have begun a \textsf{trivlist} environment in the -% \textsf{macrocode} environment, we must also end it. We must -% also act on the value of the "pm@module" flag (see below) and -% empty "\everypar". +% Because we have begun a \env{trivlist} environment in the +% \env{macrocode} environment, we must also end it. We must +% also act on the value of the |pm@module| flag (see below) and +% empty |\everypar|. % \changes{v1.5r}{1989/11/04}{Support for code line no. (Undoc)} % \begin{macrocode} \def\endmacrocode{% @@ -1439,7 +2235,7 @@ % \end{macro} % % -% \begin{macro}{\MacroFont} +% \begin{imacro}{\MacroFont} % Here is the default definition for the |\MacroFont| macro. % With the new math font handling in NFSS2 it isn't any longer % correct to suppress the math font setup since this is now handled @@ -1459,7 +2255,7 @@ % bothered since doc-sources should be up-to-date but since the % request came from someone called David Carlisle \ldots :-) % \changes{v1.9y}{1996/01/26}{Support compat mode} -% \changes{v2.1l}{2019/12/16}{Use \cs{shapedefault} not +% \changes{v2.1l}{2019/12/16}{Use \cs{shapedefault} not % \cs{updefault} for extended NFSS} % \begin{macrocode} \def\MacroFont{\small @@ -1477,9 +2273,9 @@ \fi }{} % \end{macrocode} -% \end{macro} +% \end{imacro} % -% \begin{macro}{\AltMacroFont} +% \begin{imacro}{\AltMacroFont} % \begin{macro}{\macro@font} % \changes{v1.7a}{1992/03/12}{Added to support distinction of modules.} % \changes{v1.7c}{1992/03/26}{Altered font change for OFSS.} @@ -1487,9 +2283,9 @@ % \changes{v1.8c}{1993/10/25}{NFSS standard} % \changes{v1.9t}{1995/05/26}{Removed \cs{math@fontsfalse} (different % math setup /pr1622} -% Although most of the macro code is set in "\MacroFont" we want to be -% able to switch to indicate module code set in "\AltMacroFont". -% "\macro@font" keeps track of which one we're using. We can't do the +% Although most of the macro code is set in |\MacroFont| we want to be +% able to switch to indicate module code set in |\AltMacroFont|. +% |\macro@font| keeps track of which one we're using. We can't do the % same thing sensibly in OFSS as in NFSS. % \begin{macrocode} \@ifundefined{AltMacroFont}{% @@ -1514,8 +2310,8 @@ \fi }{} % \end{macrocode} -% To allow changing the "\MacroFont" in the preamble we defer -% defining the internally used "\macro@font" until after the +% To allow changing the |\MacroFont| in the preamble we defer +% defining the internally used |\macro@font| until after the % preamble. % \changes{v2.0a}{1998/05/16}{Support changing \cs{MacroFont} in % preamble} @@ -1523,23 +2319,23 @@ \AtBeginDocument{\let\macro@font\MacroFont} % \end{macrocode} % \end{macro} -% \end{macro} +% \end{imacro} % % \begin{macro}{\check@module} % \begin{macro}{\ifpm@module} % \changes{v1.7a}{1992/03/12}{Added.} -% This is inserted by "\everypar" at the start of each macrocode line to +% This is inserted by |\everypar| at the start of each macrocode line to % check whether it starts with module information. (Such information is -% of the form "%<"\meta{switch}">", where the "%" must be at the +% of the form |%<|\meta{switch}|>|, where the |%| must be at the % start of the line and \meta{switch} comprises names with various -% possible separators and a possible leading "+", "-", "*" or "/" +% possible separators and a possible leading |+|, |-|, |*| or |/| % \cite{art:docstrip}. All that concerns us here is what the first -% character of \meta{switch} is.) First it checks the "pm@module" +% character of \meta{switch} is.) First it checks the |pm@module| % flag in case the previous line had a non-block module -% directive i.e., not "%<*" or "%</"; if it did we need to close the -% group it started and unset the flag. "\check@module" looks ahead at -% the next token and then calls "\ch@percent" to take action depending -% on whether or not it's a "%"; we don't want to expand the token at +% directive i.e., not |%<*| or |%</|; if it did we need to close the +% group it started and unset the flag. |\check@module| looks ahead at +% the next token and then calls |\ch@percent| to take action depending +% on whether or not it's a |%|; we don't want to expand the token at % this stage. This is all done conditionally so it can be turned off % if it causes problems with code that wasn't designed to be % \texttt{docstrip}ped. @@ -1553,25 +2349,27 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \begin{macro}{\DontCheckModules} -% \begin{macro}{\CheckModules} +% \begin{imacro}{\DontCheckModules} +% \begin{imacro}{\CheckModules} % \changes{v1.7a}{1992/03/12}{Added.} % \begin{macro}{\ifcheck@modules} % Here are two driver-file interface macros for turning the module -% checking on and off using the "check@modules" switch. +% checking on and off using the |check@modules| switch. % \begin{macrocode} \def\DontCheckModules{\check@modulesfalse} \def\CheckModules{\check@modulestrue} \newif\ifcheck@modules \check@modulestrue % \end{macrocode} % \end{macro} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} +% +% % \begin{macro}{\ch@percent} % \changes{v1.7a}{1992/03/12}{Added.} -% If the lookahead token in "\next" is $"%"_{12}$ we go on to check -% whether the following one is "<" and otherwise do nothing. Note the -% "\expandafter" to get past the "\fi". +% If the lookahead token in |\next| is $|%|_{12}$ we go on to check +% whether the following one is |<| and otherwise do nothing. Note the +% |\expandafter| to get past the |\fi|. % \begin{macrocode} \def\ch@percent{% \if \percentchar\next @@ -1582,7 +2380,7 @@ % % \begin{macro}{\check@angle} % \changes{v1.7a}{1992/03/12}{Added.} -% Before looking ahead for the "<" the "%" is gobbled by the +% Before looking ahead for the |<| the |%| is gobbled by the % argument here. % \begin{macrocode} \def\check@angle#1{\futurelet\next\ch@angle} @@ -1591,9 +2389,9 @@ % \begin{macro}{\ch@angle} % \changes{v1.7a}{1992/03/12}{Added.} % \changes{v1.9k}{1994/02/22}{Have \texttt{<} active} -% If the current lookahead token is "<" we are defined to be -% processing a module directive can go on to look for "+" etc.; -% otherwise we must put back the gobbled "%". With \LaTeXe{} +% If the current lookahead token is |<| we are defined to be +% processing a module directive can go on to look for |+| etc.; +% otherwise we must put back the gobbled |%|. With \LaTeXe{} % \texttt{<} is active so we have to be a bit careful. % \begin{macrocode} \begingroup @@ -1644,13 +2442,13 @@ % \end{macro} % \begin{macro}{\pm@module} % If we're not dealing with a block -% directive ("*" or "/") i.e., it's a single special line, we set -% everything up to the next ">" appropriately and then change to the +% directive (|*| or |/|) i.e., it's a single special line, we set +% everything up to the next |>| appropriately and then change to the % special macro font inside a group which will be ended at the start % of the next line. If the apparent module directive is missing the -% terminating ">" this will lose, but then so will the \texttt{docstrip} +% terminating |>| this will lose, but then so will the \texttt{docstrip} % implementation. An alternative strategy would be to have -% "\pm@module" make ">" active and clear a flag set here to indicate +% |\pm@module| make |>| active and clear a flag set here to indicate % processing the directive. Appropriate action could then be taken if % the flag was found still to be set when processing the next line. % \changes{v1.7a}{1992/03/12}{Added.} @@ -1663,8 +2461,8 @@ \Module{#1}\begingroup % \end{macrocode} % We switch to a special font as soon the nesting is higher than -% the current value of "\c@StandardModuleDepth". We do a local -% update to the "\guard@level" here which will be restored after +% the current value of |\c@StandardModuleDepth|. We do a local +% update to the |\guard@level| here which will be restored after % the current input line. % \begin{macrocode} \advance\guard@level\@ne @@ -1706,8 +2504,7 @@ % \end{macro} % \end{macro} % -% -% \begin{macro}{\c@StandardModuleDepth} +% \begin{lcounter}{StandardModuleDepth} % \changes{v1.7i}{1992/07/11}{Counter added.} % Counter defining up to which level modules are considered part of % the main code. If, for example, the whole code is surrounded by @@ -1716,38 +2513,39 @@ % \begin{macrocode} \newcounter{StandardModuleDepth} % \end{macrocode} -% \end{macro} +% \end{lcounter} % % -% \begin{macro}{\guard@level} +% \begin{tcounter}{\guard@level} % \changes{v1.7f}{1992/05/16}{Added.} % We need a counter to keep track of the guard nesting. % \begin{macrocode} \newcount \guard@level % \end{macrocode} -% \end{macro} +% \end{tcounter} + % \begin{macro}{\Module} % \changes{v1.7a}{1992/03/12}{Added.} % \changes{v1.7d}{1992/04/25}{Use sans font for modules.} % This provides a hook to determine the way the module directive is % set. It gets as argument everything between the angle brackets. % The default is to set the contents in sans serif text between -% $\langle\,\rangle$ with the special characters suitably "\mathcode"d -% by "\mod@math@codes". (You can't just set it in a sans text font -% because normally "|" will print as an em-dash.) This is done +% $\langle\,\rangle$ with the special characters suitably |\mathcode|d +% by |\mod@math@codes|. (You can't just set it in a sans text font +% because normally \verb"|" will print as an em-dash.) This is done % differently depending on whether we have the NFSS or the old one. In -% the latter case we can easily change "\fam" appropriately. +% the latter case we can easily change |\fam| appropriately. % \changes{v1.8c}{1993/10/25}{NFSS standard} % \begin{macrocode} \@ifundefined{Module}{% % \end{macrocode} % With NFSS what we probably {\em should\/} do is change to a new -% "\mathversion" but I (Dave Love) haven't spotted an easy way to +% |\mathversion| but I (Dave Love) haven't spotted an easy way to % do so correctly if the document uses a version other than -% "normal". (We need to know in what font to set the other +% |normal|. (We need to know in what font to set the other % groups.) This uses a new math alphabet rather than version and % consequently has to worry about whether we're using -% \textsf{oldlfnt} or not. I expect there's a better +% \env{oldlfnt} or not. I expect there's a better % way\ldots % \begin{macrocode} \def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$} @@ -1759,11 +2557,11 @@ % \changes{v1.7c}{1992/03/26}{Added.} % \changes{v2.1e}{2010/02/04}{Added mathcodes for +,-,:, and = (pr/4096)} % As well as `words', the module -% directive text might contain any of the characters "*/+-,&|!()" -% for the current version of \textsf{docstrip}. We only need +% directive text might contain any of the characters \verb"*/+-,&|!()" +% for the current version of \prg{docstrip}. We only need % special action for two of them in the math code changing required -% above: "|" is changed to a "\mathop" (it's normally |"026A|) and -% "&" is also made a "\mathop", but in family 0. Remember that "&" +% above: \verb"|" is changed to a |\mathop| (it's normally |"026A|) and +% |&| is also made a |\mathop|, but in family 0. Remember that |&| % will not have a special catcode when it's encountered. % \begin{macrocode} \def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026 @@ -1772,27 +2570,9 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\mathsf} -% \changes{v1.7c}{1992/03/26}{Added.} -% \changes{v1.7d}{1992/04/25}{Use sans font for modules.} -% \changes{v1.7n}{1993/02/21}{\cs{sfmath} Renamed to \cs{mathsf}.} -% \changes{v1.8c}{1993/10/25}{NFSS standard} -% If NFSS is in use we need a new math alphabet which uses a sans serif -% font. To support both the release one and two of NFSS the alphabet -% was renamed to "\mathsf" which is defined in NFSS2. -% \begin{macrocode} -%\ifx\selectfont\undefined -%\else -% \ifx\mathsf\undefined -% \newmathalphabet*{\mathsf}{\sfdefault}{m}{n}\fi -%\fi -% \end{macrocode} -% \end{macro} -% % -% -% \begin{macro}{\MacrocodeTopsep} -% \begin{macro}{\MacroIndent} +% \begin{lskip}{\MacrocodeTopsep} +% \begin{ldimen}{\MacroIndent} % In the code above, we have used two registers. Therefore we have % to allocate them. The default values might be overwritten with % the help of the |\DocstyleParms| macro. @@ -1805,22 +2585,22 @@ \newdimen\MacroIndent \settowidth\MacroIndent{\rmfamily\scriptsize 00\ } % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{ldimen} +% \end{lskip} % % % % % \begin{environment}{macrocode*} % \begin{macro}{\endmacrocode*} -% Just as in the \textsf{verbatim} environment, there is also a -% `star' variant of the \textsf{macrocode} environment in which a +% Just as in the \env{verbatim} environment, there is also a +% `star' variant of the \env{macrocode} environment in which a % space is shown by the symbol \verb*+ +. Until this moment, I % have not yet used it (it will be used in the description of the % definition of |\xmacro@code| below) but it's exactly on this one -% occasion {\em here\/} that you can't use it (cf.\ M\"unchhausens +% occasion {\em here\/} that you can't use it (cf.\ Münchhausens % Marsh problem)\footnote{Karl Friedrich Hieronymus Frhr.\ v.\ -% M\"unchhausen (*1720, \dag1797). Several books were written +% Münchhausen (*1720, \dag1797). Several books were written % about fantastic adventures supposedly told by him (see % \cite{book:Raspe} or \cite{book:Buerger}). In one story he % escaped from the marsh by pulling himself out by his hair.} @@ -1865,7 +2645,7 @@ % \end{macrocode*} % Additionally, we need to ensure that the symbols in the above % string contain the |\catcode|$\,$s which are available -% within the \textsf{macrocode} environment. +% within the \env{macrocode} environment. % \begin{macrocode*} \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\ =\active \catcode`\\=\active @@ -1908,65 +2688,7 @@ % \subsection{Macros for the `documentation parts'} % % -% \begin{macro}{\DescribeMacro} -% \begin{macro}{\Describe@Macro} -% \changes{v1.5v}{1990/01/28}{Macro added.} -% \changes{v1.5j}{1989/06/09}{\cs{ignorespaces} added as a temporary -% fix} -% \begin{macro}{\DescribeEnv} -% \begin{macro}{\Describe@Env} -% \changes{v1.5v}{1990/01/28}{Macro added.} -% \changes{v1.5j}{1989/06/09}{\cs{ignorespaces} added as a temporary -% fix} -% The |\DescribeMacro| and |\DescribeEnv| macros should -% print their arguments in the margin and produce an index entry. -% We simply use |\marginpar| to get the desired result. This -% is however not the best solution because the labels might be -% slightly misplaced. One also might get a lot of `marginpar moved' -% messages which are hard-wired into the \LaTeX{} output -% routine.\footnote{It might be better to change these macros into -% environments like the \textsf{macro} environment.} First we change -% to horizontal mode if necessary. The \LaTeX{} macros -% |\@bsphack| and |\@esphack| are used to make those -% commands invisible (i.e.\ to normalize the surrounding space and -% to make the |\spacefactor| transparent). -% \changes{v1.5v}{1990/01/28}{\cs{MakePrivateLetters} added.} -% \begin{macrocode} -\def\DescribeMacro{\leavevmode\@bsphack -% \end{macrocode} -% When documenting the code for the \texttt{amstex.sty} option we -% encountered a bug: the |\catcode| of |@| was active and -% therefore couldn't be used in command names. So we first have to -% make sure that we get all |\catcode|s right by calling -% |\MakePrivateLetters| inside a group. Then we call -% |\Describe@Macro| to do the work. -% \changes{v2.0g}{1999/03/22}{Parse backslash as letter in argument -% to \cs{DescribeMacro}.} -% \changes{v2.0h}{1999/03/25}{Correct errors introduced in v2.0g.} -% \begin{macrocode} - \begingroup\MakePrivateLetters\Describe@Macro} -\def\Describe@Macro#1{\endgroup - \marginpar{\raggedleft\PrintDescribeMacro{#1}}% -% \end{macrocode} -% Note the use of |\raggedleft| to place the output flushed -% right. Finally we call a macro which produces the actual index -% entry and finish with |\@esphack| to leave no -% trace.\footnote{The whole mechanism won't work because -% of the \texttt{\bslash leavevmode} in front. -% As a temporary change \texttt{\bslash ignorespaces} -% is added.} -% \begin{macrocode} - \SpecialUsageIndex{#1}\@esphack\ignorespaces} -% \end{macrocode} -% The |\DescribeEnv| macro is completely analogous. -% \changes{v1.5v}{1990/01/28}{\cs{MakePrivateLetters} added.} -% \begin{macrocode} -\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters - \Describe@Env} -\def\Describe@Env#1{\endgroup - \marginpar{\raggedleft\PrintDescribeEnv{#1}}% - \SpecialEnvIndex{#1}\@esphack\ignorespaces} -% \end{macrocode} + % To put the labels in the left margin we have to use the % |\reversemarginpar| declaration. (This means that the % \texttt{doc.sty} can't be used with all classes or packages.) @@ -1978,12 +2700,12 @@ \reversemarginpar \setlength\marginparpush{0pt} \setlength\marginparwidth{8pc} % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % -% \begin{macro}{\bslash} +% \begin{macrocode} +\setlength\marginparsep{\labelsep} +% \end{macrocode} +% +% \begin{imacro}{\bslash} % \changes{v1.7a}{1992/02/26}{Moved \cs{bslash} documentation to `user % interface' part} % We start a new group in which to hide the alteration of @@ -2000,14 +2722,14 @@ % \begin{macrocode} |gdef|bslash{\}} % \end{macrocode} -% \end{macro} +% \end{imacro} % % % % \begin{environment}{verbatim} % \begin{environment}{verbatim*} % \changes{v1.7i}{1992/07/12}{Added changed definition for verbatim!*.} -% The \textsf{verbatim} environment holds no secrets; it consists of +% The \env{verbatim} environment holds no secrets; it consists of % the normal \LaTeX{} environment. We also set the % |\@beginparpenalty| and change to the font given by % |\MacroFont|. @@ -2032,7 +2754,7 @@ % \begin{macro}{\@verbatim} % Additionally we redefine the |\@verbatim| macro so that it % suppresses |%| characters at the beginning of the line. The -% first lines are copied literally from the \LaTeX{} format. +% first lines are copied literally from \texttt{latex.tex}. % \changes{v1.7i}{1992/07/12}{Added \cs{@@par} to clear possible % \cs{parshape}.} % \begin{macrocode} @@ -2056,7 +2778,7 @@ % \begin{macrocode} \check@percent}% % \end{macrocode} -% The rest is again copied literally from the \LaTeX{} format (less +% The rest is again copied literally from \texttt{latex.tex} (less % "\tt"). % \changes{v1.7a}{1992/02/26}{Removed redundant \cs{tt}.} % \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim, @@ -2074,7 +2796,7 @@ % percent's |\catcode| so that it is seen by \TeX. The definition % itself is nearly trivial: grab the following character, check if % it is a |%|, and insert it again if not. At the end of the -% \textsf{verbatim} environment this macro will peek at the next +% \env{verbatim} environment this macro will peek at the next % input line. In that case the argument to |\check@percent| might % be a |\par| or a macro with arguments. Therefore we make the % definition |\long| (|\par| allowed) and use the normal |\next| @@ -2093,16 +2815,16 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\verb} +% \begin{imacro}{\verb} % \changes{v1.7a}{1992/02/27}{Now warns about newlines (from % newdoc with `@noligs added).} % \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX \cs{verb}} -% We re-define "\verb" to check for newlines in its argument since a +% We re-define |\verb| to check for newlines in its argument since a % missing delimiter is difficult to detect in \DOC{} source. % The code is the same as in \texttt{latex.tex} of September 19, 1993. % Perhaps there should be a font-changing -% hook rather than just using "\ttfamily", but if so it probably should be -% different from "\MacroFont" since that normally includes "\small" +% hook rather than just using |\ttfamily|, but if so it probably should be +% different from |\MacroFont| since that normally includes |\small| % and would look wrong inline. % \changes{v1.7a}{1992/02/28}{Added math mode check (from verbatim.sty)} % \begin{macrocode} @@ -2111,24 +2833,27 @@ \ttfamily \verb@eol@error \let\do\@makeother \dospecials \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}} % \end{macrocode} -% \end{macro} +% \end{imacro} % % \begin{macro}{\verb@balance@group} % \begin{macro}{\verb@egroup} % \begin{macro}{\verb@eol@error} % \changes{v1.8b}{1993/09/21}{Renamed \cs{verb@err} to % \cs{verb@eol@error}, as in new LaTeX verbatim.} -% \changes{v2.1n}{2021/05/28}{Use same error message text as in format} % \begin{macrocode} \let\verb@balance@group\@empty - +% \end{macrocode} +% +% \begin{macrocode} \def\verb@egroup{\global\let\verb@balance@group\@empty\egroup} - +% \end{macrocode} +% +% \begin{macrocode} \begingroup \obeylines% \gdef\verb@eol@error{\obeylines% \def^^M{\verb@egroup\@latex@error{% - \noexpand\verb ended by end of line}\@ehc}}% + \noexpand\verb command ended by end of line}\@ehc}}% \endgroup % \end{macrocode} % \end{macro} @@ -2155,7 +2880,7 @@ % % \begin{macro}{\verbatim@nolig@list} % \begin{macro}{\do@noligs} -% These macros replace the old "\@noligs" mechanism by an +% These macros replace the old |\@noligs| mechanism by an % extensible version to allow more ligatures to be added. % \begin{macrocode} \def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-} @@ -2168,240 +2893,29 @@ % \end{macro} % \end{macro} % -% -% \begin{macro}{\macro} -% \begin{macro}{\m@cro@} -% \changes{v1.5v}{1990/01/28}{\cs{macro@} renamed to \cs{m@cro@} -% since AmSTeX -% defines another macro of the same name.} -% \begin{macro}{\macro@cnt} -% \label{page:macro} The \textsf{macro} environment is implemented as -% a \textsf{trivlist} environment, whereby in order that the macro +% \begin{tcounter}{\macro@cnt} +% \label{page:macro} The \env{macro} environment is implemented as +% a \env{trivlist} environment, whereby in order that the macro % names can be placed under one another in the margin % (corresponding to the macro's nesting depth), the macro % |\makelabel| must be altered. In order to store the nesting % depth, we use a counter. We also need a counter to count the -% number of nested \textsf{macro} environments. +% number of nested \env{macro} environments. % \changes{v1.5k}{1989/08/17}{Fix for save stack problem.} % \changes{v1.9k}{1994/02/22}{Fix probably no longer necessary} % \begin{macrocode} \newcount\macro@cnt \macro@cnt=0 % \end{macrocode} -% The environment takes an argument---the macro name to be -% described. Since this name may contain special `letters' we have -% to re-|\catcode| them before scanning the argument. This is done -% by the |\MakePrivateLetters| macro. -% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.} -% \changes{v1.7a}{1992/02/26}{Catcode backslash to other (from newdoc).} -% \changes{v1.9k}{1994/02/22}{Don't omit extra group} -% \begin{macrocode} -\def\macro{\begingroup - \catcode`\\12 - \MakePrivateLetters \m@cro@ \iftrue} -% \end{macrocode} -% -% \begin{environment}{environment} -% \changes{v1.8c}{1993/10/25}{Environment added} -% The ``environment'' environment will be implemented just like the -% ``macro'' environment flagging any differences in the code by -% passing |\iffalse| or |\iftrue| to the |\m@cro@| environment -% doing the actual work. -% \begin{macrocode} -\def\environment{\begingroup - \catcode`\\12 - \MakePrivateLetters \m@cro@ \iffalse} -% \end{macrocode} -% \end{environment} +% \end{tcounter} % -% After scanning the argument we close the group to get the normal -% |\catcode|$\,$s back. Then we assign a special value to -% |\topsep| and start a \textsf{trivlist} environment. -% \changes{v1.5f}{1989/05/07}{MacroTopsep parameter added.} -% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.} -% \changes{v1.8c}{1993/10/25}{Support ``environment'' env} -% \changes{v1.9k}{1994/02/22}{Remove \cs{macro@level}} -% \begin{macrocode} -\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist -% \end{macrocode} -% We also save the name being described in |\saved@macroname| for -% use in conjunction with the |\changes| macro. -% \begin{macrocode} - \edef\saved@macroname{\string#2}% - #1 -% \end{macrocode} -% If documenting an environment we put is name in |\saved@indexname| -% otherwise the name without the backslash. -% \changes{v2.1g}{2016/02/15}{Use \cs{saved@indexname}} -% \begin{macrocode} - \let\saved@indexname\saved@macroname - \else - \edef\saved@indexname{\expandafter\@gobble\string#2}% - \fi -% \end{macrocode} -% Now there follows a variation of |\makelabel| which is used -% should the environment not be nested, or should it lie between -% two successive |\begin{macro}| instructions or explanatory -% text. One can recognize this with the switch |\if@inlabel| -% which will be |true| in the case of successive |\item| -% commands. -% \begin{macrocode} - \def\makelabel##1{\llap{##1}}% -% \end{macrocode} -% If |@inlabel| is |true| and if $\verb=\macro@cnt= > 0$ -% then the above definition needs to be changed, because in this -% case \LaTeX{} would otherwise put the labels all on the same line -% and this would lead to them being overprinted on top of each -% other. Because of this |\makelabel| needs to be redefined -% in this case. -% \begin{macrocode} - \if@inlabel -% \end{macrocode} -% If |\macro@cnt| has the value $1$, then we redefine -% |\makelabel| so that the label will be positioned in the -% second line of the margin. As a result of this, two macro names -% appear correctly, one under the other. It's important whilst -% doing this that the generated label box is not allowed to have -% more depth than a normal line since otherwise the distance -% between the first two text lines of \TeX{} will be incorrectly -% calculated. The definition should then look like: -%\begin{verbatim} -% \def\makelabel##1{\llap{\vtop to \baselineskip -% {\hbox{\strut}\hbox{##1}\vss}}} -%\end{verbatim} -% Completely analogous to this is the case where labels need to be -% placed one under the other. The lines above are only an example -% typeset with the \textsf{verbatim} environment. To produce the real -% definition we save the value of |\macro@cnt| in -% |\count@| and empty the temp macro |\@tempa| for later -% use. -% \begin{macrocode} - \let\@tempa\@empty \count@\macro@cnt -% \end{macrocode} -% In the following loop we append for every already typeset label -% an |\hbox{\strut}| to the definition of |\@tempa|. -% \begin{macrocode} - \loop \ifnum\count@>\z@ - \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat -% \end{macrocode} -% Now be put the definition of |\makelabel| together. -% \changes{v1.5b}{1989/04/27}{vbox to vtop changed in makelabel (test)} -% \changes{v1.5e}{1989/04/28}{ht strutbox changed to baselineskip -% (test)} -% \begin{macrocode} - \edef\makelabel##1{\llap{\vtop to\baselineskip - {\@tempa\hbox{##1}\vss}}}% -% \end{macrocode} -% Next we increment the value of the nesting depth counter. This -% value inside the \textsf{macro} environment is always at least one -% after this point, but its toplevel definition is zero. Provided -% this environment has been used correctly, $|\macro@cnt|=0$ -% should not occur when |@inlabel|=\textsf{true}. It is -% however possible if this environment is used within other list -% environments (but this would have little point). -% \begin{macrocode} - \advance \macro@cnt \@ne -% \end{macrocode} -% If |@inlabel| is false we reset |\macro@cnt| assuming -% that there is enough room to print the macro name without -% shifting. -% \begin{macrocode} - \else \macro@cnt\@ne \fi -% \end{macrocode} -% Now the label will be produced using |\item|. The following -% line is only a hack saving the day until a better solution is -% implemented. We have to face two problems: the argument might be -% a |\par| which is forbidden in the argument of other macros -% if they are not defined as |\long|, or it is something like -% |\iffalse| or |\else|, i.e.\ something which will be -% misinterpreted when \TeX{} is skipping conditional text. In both -% cases |\item| will bomb, so we protect the argument by using -% |\string|. -% \begin{macrocode} - \edef\@tempa{\noexpand\item[% -% \end{macrocode} -% Depending on whether we are inside a ``macro'' or ``environment'' -% environment we use |\PrintMacroName| or |\PrintEnvName| to -% display the name. -% \begin{macrocode} - #1% - \noexpand\PrintMacroName - \else - \noexpand\PrintEnvName - \fi - {\string#2}]}% - \@tempa -% \end{macrocode} -% At this point we also produce an index entry. Because it is not -% known which index sorting program will be used, we do not use the -% command |\index|, but rather a command -% |\SpecialMainIndex| after advancing the counter for indexing -% by line number. This may be redefined by the user in -% order to generate an index entry which will be understood by the -% index program in use (note the definition of -% |\SpecialMainIndex| for our installation). -% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} -% \changes{v1.9u}{1995/08/06}{Removed brace group which -% killed \cs{DoNotIndex}} -% We advance the current codeline number and after producing an -% index entry revert to the original value -% \begin{macrocode} - \global\advance\c@CodelineNo\@ne -% \end{macrocode} -% Again the macro to call depends on the environment we are -% actually in. -% \begin{macrocode} - #1% - \SpecialMainIndex{#2}\nobreak - \DoNotIndex{#2}% - \else - \SpecialMainEnvIndex{#2}\nobreak - \fi - \global\advance\c@CodelineNo\m@ne -% \end{macrocode} -% The |\nobreak| is needed to prevent a page break after the -% |\write| produced by the |\SpecialMainIndex| macro. We -% exclude the new macro in the cross-referencing feature, to -% prevent spurious non-main entry references. Regarding possibly -% problematic arguments, the implementation takes -% care of |\par| and the conditionals are uncritical. -% \changes{v1.7a}{1992/03/02}{Removed redundant code checking for -% \cs{par}.}^^A % -% Because the space symbol should be ignored between the -% |\begin{macro}{...}| and the following text we must take -% care of this with |\ignorespaces|. -% \begin{macrocode} - \ignorespaces} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% -% \begin{macro}{\endmacro} -% \begin{macro}{\endenvironment} -% Older releases of this environment omit the |\endgroup| token, -% when being nested. This was done to avoid unnecessary stack usage. -% However it does not work if \textsf{macro} and -% \textsf{environment} environments are mixed, therefore we now -% use a simpler approach. -% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.} -% \changes{v1.9k}{1994/02/22}{Don't checkfor nesting} -% \begin{macrocode} -\let\endmacro \endtrivlist -\let\endenvironment\endmacro -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\MacroTopsep} +% \begin{lskip}{\MacroTopsep} % Here is the default value for the |\MacroTopsep| parameter % used above. % \begin{macrocode} \newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt % \end{macrocode} -% \end{macro} +% \end{lskip} % % % @@ -2413,49 +2927,15 @@ % Therefore we define those macros only if they have not already % been defined. % -% \begin{macro}{\PrintMacroName} -% \begin{macro}{\PrintEnvName} -% \begin{macro}{\PrintDescribeMacro} -% \begin{macro}{\PrintDescribeEnv} -% The formatting of the macro name in the left margin is done by -% these macros. We first set a |\strut| to get the height and -% depth of the normal lines. Then we change to the -% |\MacroFont| using |\string| to |\catcode| the -% argument to other (assuming that it is a macro name). Finally we -% print a space. The font change remains local since this macro -% will be called inside an |\hbox|. -% \begin{macrocode} -\@ifundefined{PrintMacroName} - {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{} -% \end{macrocode} -% We use the same formatting conventions when describing a macro. -% \begin{macrocode} -\@ifundefined{PrintDescribeMacro} - {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{} -% \end{macrocode} -% To format the name of a new environment there is no need to use -% |\string|. -% \begin{macrocode} -\@ifundefined{PrintDescribeEnv} - {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{} -\@ifundefined{PrintEnvName} - {\def\PrintEnvName#1{\strut \MacroFont #1\ }}{} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% % % \subsection{Creating index entries by scanning `macrocode'} % % The following macros ensure that index entries are created for each % occurrence of a \TeX-like command (something starting with -% `|\|') providing indexing has been turned on with "\PageIndex" -% or "\CodelineIndex". With the default definitions of -% |\SpecialMainIndex|, etc., the index file generated is -% intended to be processed by Chen's \textsf{makeindex} program +% `|\|') providing indexing has been turned on with |\PageIndex| +% or |\CodelineIndex|. With the default definitions of +% |\specialMainMacroIndex|, etc., the index file generated is +% intended to be processed by Chen's \prg{makeindex} program % \cite{art:Chen}. % % @@ -2464,15 +2944,15 @@ % introduce command names at places where |\| has to belong to % some other category. Therefore, we may also need to recognize % \verb+|+ as the introducer for a command when setting the text -% inside the \textsf{macrocode} environment. Other users may have the +% inside the \env{macrocode} environment. Other users may have the % need to make similar reassignments for their macros. % % -% \begin{macro}{\SpecialEscapechar}\label{sect:specialescapechar} +% \begin{imacro}{\SpecialEscapechar}\label{sect:specialescapechar} % \begin{macro}{\active@escape@char} % \begin{macro}{\special@escape@char} % The macro |\SpecialEscapechar| is used to denote a special escape -% character for the next \textsf{macrocode} environment. It has one +% character for the next \env{macrocode} environment. It has one % argument---the new escape character given as a `single-letter' % control sequence. Its main purpose is defining % |\special@escape@char| to produce the chosen escape character @@ -2528,7 +3008,7 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} +% \end{imacro} % % % @@ -2564,7 +3044,7 @@ % `|\|' first to 12 (at the end of |\macro@code|) then % re-|\catcode| it to 13 in order to produce a $|\|_{12}$ % in case 3b) above. This is done because we have to ensure that -% `|\|' has |\catcode| 13 within the \textsf{macrocode} +% `|\|' has |\catcode| 13 within the \env{macrocode} % environment. Otherwise the delimiter for the argument of % |\xmacro@code| would not be found (parameter matching % depends on |\catcode|$\,$s). @@ -2574,7 +3054,7 @@ \begingroup \catcode`\|=\z@ \catcode`\\=\active % \end{macrocode} % We carry out tasks 2) and 3b) first. -% \SpecialEscapechar{\|} +% \SpecialEscapechar\| % \begin{macrocode} |gdef|init@crossref{|catcode`|\|active |let\|bslash % \end{macrocode} @@ -2613,7 +3093,7 @@ % % % -% \begin{macro}{\MakePrivateLetters} +% \begin{imacro}{\MakePrivateLetters} % Here is the default definition of this command, which makes just % the |@| into a letter. The user may change it if he/she % needs more or other characters masquerading as letters. @@ -2621,7 +3101,7 @@ \@ifundefined{MakePrivateLetters} {\let\MakePrivateLetters\makeatletter}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % % \begin{macro}{\close@crossref} % At the end of a cross-referencing part we prepare ourselves for @@ -2642,10 +3122,10 @@ % The |\init@crossref| will have made |\active| our % |\special@escape@char|, so that each % |\active@escape@char| will invoke |\scan@macro| when -% within the \textsf{macrocode} environment. By this means, we can +% within the \env{macrocode} environment. By this means, we can % automatically add index entries for every \TeX-like command which % is met whilst setting (in verbatim) the contents of -% \textsf{macrocode} environments. +% \env{macrocode} environments. % \begin{macrocode} \def\scan@macro{% % \end{macrocode} @@ -2658,7 +3138,7 @@ \special@escape@char \step@checksum % \end{macrocode} -% If the \textsf{macrocode} environment contains, for example, the +% If the \env{macrocode} environment contains, for example, the % command |\\|, the second |\| should not start the % scanning mechanism. Therefore we use a switch to decide if % scanning of macro names is allowed. @@ -2689,22 +3169,9 @@ % \end{macro} % % -% \begin{macro}{\ifscan@allowed} -% \begin{macro}{\scan@allowedtrue} -% \begin{macro}{\scan@allowedfalse} -% |\ifscan@allowed| is the switch used above to determine if -% the |\active@escape@char|\SpecialIndex{\active@escape@char} -% should start the macro scanning mechanism. -% \begin{macrocode} -\newif\ifscan@allowed \scan@allowedtrue -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% % -% \begin{macro}{\EnableCrossrefs} -% \begin{macro}{\DisableCrossrefs} +% \begin{imacro}{\EnableCrossrefs} +% \begin{imacro}{\DisableCrossrefs} % At this point we might define two macros which allow the user to % disable or enable the cross-referencing mechanism. Processing of % files will be faster if only main index entries are generated @@ -2718,8 +3185,8 @@ \def\EnableCrossrefs{\@bsphack\scan@allowedtrue \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack} % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} % % % @@ -2750,6 +3217,10 @@ % % % \begin{macro}{\short@macro} +% +% \fmi{this needs cleaning up too, the results in the index are +% currently wrong for cases like `\cs{ }' and the like.} +% % \changes{v1.5c}{1989/04/27}{Corrected bad bug by putting the % scan@allowedfalse macro before printing % the argument.} @@ -2757,7 +3228,7 @@ % \cs{macro@namepart} as `letter' so index exclusion works.} % This macro will be invoked (with a single character as parameter) % when a single-character macro name has been spotted whilst -% scanning within the \textsf{macrocode} environment. +% scanning within the \env{macrocode} environment. % % First we take a look at the |\index@excludelist| to see % whether this macro name should produce an index entry. This is @@ -2775,14 +3246,14 @@ \uccode`\&=\expandafter`\string#1% \uppercase{\def\x{\def\macro@namepart{&}}}% \expandafter\endgroup\x - \ifnot@excluded % \end{macrocode} -% If necessary the index entry is produced by the macro -% |\produce@index|. Depending on the actual character seen, -% this macro has to do different things, so we pass the character -% as an argument. +% Any indexing is then delegated to +% |\maybe@index@short@macro|. Depending on the actual character seen, +% this macro has to do different things, which is why we keep it separate from +% |\maybe@index@macro| to avoid the special tests in the more +% common case of a multi-letter macro name. % \begin{macrocode} - \produce@index{#1}\fi + \maybe@index@short@macro\macro@namepart % \end{macrocode} % Then we disable the cross-referencing mechanism with % |\scan@allowedfalse| and print the actual character. The @@ -2803,104 +3274,6 @@ % % % -% \begin{macro}{\produce@index} -% \changes{v1.4s}{1989/04/23}{Added noexpand to all -% \cs{if} tests -% to avoid garbage produced by new active chars} -% \changes{v1.4s}{1989/04/23}{Used \texttt{\protect\bslash string} for -% the same reason.} -% \changes{v1.5c}{1989/04/27}{Corrected bad bug by placing the -% scan@allowedfalse macro into short@macro} -% This macro is supposed to generate a suitable |\SortIndex| -% command for a given single-letter control sequence. We test -% first for the cases which involve active characters (i.e.\ the -% backslash, the special escape character (if any), the space and -% the |^^M|). Using the |\if| test (testing for -% character codes), we have to ensure that the argument isn't -% expanded. -% \begin{macrocode} -\def\produce@index#1{% - \if\noexpand#1\special@escape@char -% \end{macrocode} -% If the character is the special escape character (or the -% `|\|' in case there was none) the |\it@is@a| macro is -% used to produce the actual |\SortIndex| call. -% \begin{macrocode} - \scan@allowedfalse \it@is@a\special@escape@char \else -% \end{macrocode} -% Next comes the test for a `|\|' which must be the -% $|\|_{13}$ expanding to |\bslash|. -% \begin{macrocode} - \if\noexpand#1\bslash \it@is@a\bslash \else -% \end{macrocode} -% Another possibility is \verb*+ +$_{13}$. Recall that |\space| -% produces a \verb*+ +$_{10}$. -% \begin{macrocode} - \if\noexpand#1\space \it@is@a\space \else -% \end{macrocode} -% The last\footnote{Well, it isn't the last active character after -% all. I added \texttt{\bslash @noligs} some days ago and now -% \texttt{`} too is active. So we have to make sure that such -% characters don't get expanded in the index.} possibility of an -% active character is |^^M|\@. In this case we don't test for -% character codes, since it is easier to look if the character is -% equal to |\par|. (We are inside the \textsf{macrocode} -% environment.) -% \begin{macrocode} - \ifx#1\par -% \end{macrocode} -% If we end up here we have just scanned a |\^^M| or something -% similar. Since this will be treated like \verb*+\ + by \TeX{} we -% produce a corresponding index entry. -% \begin{macrocode} - \it@is@a\space \else -% \end{macrocode} -% If it is the token |\relax| we do nothing. This can't happen -% when the `doc' package is used in the way described here, but was -% added to allow extensions like the \texttt{idxverb} option. -% \changes{v1.5t}{1989/11/14}{Added \cs{relax} as a possible token to -% allow extensions.} -% \begin{macrocode} - \ifx#1\relax \else -% \end{macrocode} -% The next three branches are needed because of bugs in -% our \textsf{makeindex} program. You can't produce unbalanced index -% entries\footnote{This is possible for \TeX{} if you use -% \texttt{\string{$_{12}$ \rmfamily or -% \ttfamily\string}$_{12}$}, -% but \textsf{makeindex} will complain.} -% and you have to double a percent character. To get around these -% restrictions we use special macros to produce the |\index| -% calls.\footnote{Brian \textsc{Hamilton Kelly} has written fixes for -% all three -% bugs. When they've found their way through all -% installations, -% the lines above will be removed. See -% page~\pageref{bug:fixes} if you already have them. -% (I'm not sure which versions incorporate these, but -% 2.11 is OK. See also -% \pageref{makeindex:version}.)} -% \begin{macrocode} - \if\noexpand#1\bgroup \LeftBraceIndex \else - \if\noexpand#1\egroup \RightBraceIndex \else - \if\noexpand#1\percentchar \PercentIndex \else -% \end{macrocode} -% All remaining characters are used directly to produce their index -% entries. This is possible even for the characters which have -% special meanings in the index program, provided we quote the -% characters. (This is correctly done in |\it@is@a|.) -% \begin{macrocode} - \it@is@a{\string#1}% -% \end{macrocode} -% We now need a whole pile of |\fi|$\,$s to match up with -% the |\if|$\,$s. -% \begin{macrocode} - \fi \fi \fi \fi \fi \fi \fi \fi} -% \end{macrocode} -% \end{macro} -% -% -% % \begin{macro}{\macro@name} % We now come to the macro which assembles command names which % consist of one or more `letters' (which might well include @@ -2968,9 +3341,11 @@ % routine. At this time \texttt{\bslash macro@namepart} might have a % new value.} % \begin{macrocode} - \ifnot@excluded - \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}% - \@tempa \fi} +% \ifnot@excluded +% \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}% +% \@tempa \fi + \maybe@index@macro \macro@namepart +} % \end{macrocode} % \end{macro} % @@ -2980,155 +3355,525 @@ % % \subsection[The index exclude list]{The index exclude % list\footnotemark} -% \footnotetext{Warning: the incomplete commentary on +% \footnotetext{Info: the incomplete commentary on % \texttt{\bslash DoNotIndex} and the macros it calls % was written by Dave Love.} % -% The internal form of the index exclude list is -% \begin{quote} -% \meta{macro name}|,|\meta{macro name}|,| -% \ldots|,| -% \end{quote} -% where \meta{macro name} is a macro name like -% $"\"_{12}"p"{_{11}}"@"_{11}$ or $"\"_{12}"$"_{11}$. Note that the "\" -% has category `other' and the other characters in the name are all -% `letter', regardless of their normal category. % -% \begin{macro}{\DoNotIndex} -% This macro is used to suppress macro names in the index. It -% starts off with a new group because we have to change the -% |\catcode|$\,$s of all characters which belong to `letters' -% while macros are defined. +% + +% \def\MakePrivateLetters{% +% \makeatletter +% \catcode`\_11 +% \catcode`\:11} +% +% +% The following part of the code is a new implementation using the +% \LaTeX3 programming layer as the constructs and types +% provided therein are making programming much easier. Over time I +% will probably replace the rest of that \DOC code too. % \begin{macrocode} -\def\DoNotIndex{\begingroup \MakePrivateLetters - \catcode`\\12 +\ExplSyntaxOn % \end{macrocode} -% Then we call the macro which actually reads the argument given by -% the user. +% +% +% \DescribeMacro\l__doc_donotindex_seq +% Local sequence that holds names (as strings) of commands that +% should not be indexed. Within a \DOC element environment that +% element is placed into the sequence so that it isn't +% unnecessarily index within that part of the code. As the sequence +% is local it will revert this setting at the end of the +% environment so that the command is indexed elsewhere (unless it +% is generally disabled from indexing. +% +% \DescribeMacro\g__doc_idxtype_prop +% Global property list that holds for all commands that are special +% \DOC elements the type of the element. The key is the command +% name without backslash and the value is \DOC element type +% identifier, e.g., |\texttt{Length}| for length registers if that +% type has been set up. \DOC only indexes commands, that is things +% starting with an escape character, i.e., a backslash (by +% default). \DOC elements that do not start with an escape +% character, e.g., environments are not identified when parsing +% code so that aren't indexed automatically inside. Thus for them +% there is no point in keeping them in that property list. +% +% \DescribeMacro{\doc_dont_index:n} +% \DescribeInterfaceMacro{\DoNotIndex} +% Takes a clist of commands (with backslash) as input and exclude +% all of them from the index. User facing we make this available as +% |\DoNotIndex|. +% +% +% \DescribeInterfaceMacro\ShowIndexingState +% Displays the current list of the exclude index list in a fairly +% low-level form. +% +% \DescribeInterfaceMacro\RecordIndexType +% This command takes two arguments: a command (with escape char) +% and its type (i.e., first mandatory +% argument of a |\NewDocElement| declaration. If |#1| should not be +% included from the index, then the data is used to record that +% this command is of this type. The information is then used to +% generate appropriate index entries. Obviously, index entries +% generated earlier will be listing the wrong type. Therefore this +% information is also placed into the \texttt{.aux} file so that it +% will be available at the beginning of further runs. +% +% This command is internally executed as part of any \DOC element +% environment so it only needs to be explicitly given if for some +% reason a command with a special type has no corresponding environment. +% +% +% +% +% \begin{macro}{\l__doc_donotindex_seq} +% \begin{macro}{\g__doc_idxtype_prop} +% Declarations. % \begin{macrocode} - \do@not@index} +\seq_new:N \l__doc_donotindex_seq +\prop_new:N \g__doc_idxtype_prop % \end{macrocode} -% \end{macro} +% \end{macro} +% \end{macro} % +% ^^A -------------------------------------------------- % % -% \begin{macro}{\do@not@index} -% We make the |\do@not@index| macro |\long| -% since the user might want to exclude the |\par| -% macro. +% \begin{macro}{\__doc_trace:x} +% A helper for tracing\ldots % \begin{macrocode} -\long\def\do@not@index#1{% +\cs_new:Npn\__doc_trace:x { + \legacy_if:nTF{ doc@debugshow }{ \iow_term:x } { \use_none:n } +} % \end{macrocode} -% It just adds to a token list after finishing the group in which -% the catcodes were changed. -% \changes{v1.7a}{1992/02/26}{Replaced with newdoc version.} +% \end{macro} +% +% +% ^^A -------------------------------------------------- +% +% \begin{macro}{\doc_dont_index:n} +% \begin{macro}{\__doc_dont_index:n} +% \begin{macro}{\__doc_dont_index_aux:n} +% +% Parses the argument a clist of commands with +% |\MakePrivateLetters| in force (so that special characters are +% recognized as being part of command names) and puts each command +% without is backslash as a string into the sequence +% |\l__doc_donotindex_seq|. % \begin{macrocode} - \endgroup - \addto@hook\index@excludelist{#1,}} +\cs_new:Npn \doc_dont_index:n { + \group_begin: + \MakePrivateLetters + \__doc_dont_index:n +} % \end{macrocode} -% \end{macro} % -% \begin{macro}{\addto@hook} -% The code for adding tokens (the second argument) to a token list -% (the first argument) is taken from~\cite{art:verbatim}, but it needs -% to be "\long" in case "\par" is amongt the tokens. % \begin{macrocode} -\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}} +\cs_new:Npn \__doc_dont_index:n #1 { + \group_end: % \end{macrocode} -% \end{macro} % -% \begin{macro}{\index@excludelist} -% We need an initially-empty register for the excluded list. % \begin{macrocode} -\newtoks\index@excludelist -\index@excludelist{} + \__doc_trace:x{Disable~ indexing~ for~ '\tl_to_str:n{#1}' } % \end{macrocode} -% \end{macro} +% Adding the commands to the |\l__doc_donotindex_seq| sequence is +% done by mapping the function |\__doc_dont_index_aux:n| on each +% element in the clist. +% \begin{macrocode} + \clist_map_function:nN {#1} \__doc_dont_index_aux:n +} +% \end{macrocode} +% We record each command by using its name as a string. +% This means more tokens in the sequence but it allows +% to compare names not ``action'' which is important as different +% commands may have the same meaning (e.g., they may not be defined +% at all), +% \begin{macrocode} +\cs_new:Npn \__doc_dont_index_aux:n #1 { + \seq_put_right:Nx \l__doc_donotindex_seq {\expandafter\@gobble \string#1} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % -% \begin{macro}{\ifnot@excluded} -% \changes{v1.7a}{1992/02/26}{Replaced with newdoc version.} -% \begin{macro}{\expanded@notin} -% Now we take a look at the |\index@excludelist| to see -% whether a macro name saved in |\macro@namepart| should -% produce an index entry. This macro is a pseudo |\if|; it -% should expand to |\iftrue| or |\iffalse| depending on -% the contents of |\index@excludelist|. +% \begin{macro}{\DoNotIndex} +% The document-level interface % \begin{macrocode} -\begingroup +\cs_set_eq:NN \DoNotIndex \doc_dont_index:n % \end{macrocode} -% First we change "\catcode"s so that "\" is `other' and "|" a -% temporary for the escape character. This is necessary since our -% macro names are stored that way in the "\index@excludelist". +% \end{macro} +% +% +% \begin{macro}{\ShowIndexingState} +% Some tracing information that may be helpful. % \begin{macrocode} -\catcode`\|=0% -\catcode`\\=12 +\def \ShowIndexingState { + \__doc_trace:x{Show~ doc~ indexing~ state:} + \seq_show:N \l__doc_donotindex_seq +% \tl_analysis_show:N\l__doc_donotindex_seq + \prop_show:N \g__doc_idxtype_prop +} % \end{macrocode} -% Then we define "\ifnot@excluded" to call "\expanded@notin" with -% two arguments: the first is the string "\" followed by the -% contents of "\macro@namepart" followed by a "," and the second is -% "\the" followed by "\index@excludelist". To achieve the expansion -% of "\macro@namepart", i.e.\ to pass its contents, we need a -% suitable number of "\expandafter"s. -% \SpecialEscapechar{\|} +% \end{macro} + + + +% ^^A -------------------------------------------------- +% +% +% \begin{macro}{\__doc_idxtype_put:Nn} +% \begin{imacro}{\RecordIndexType} +% \fmi{Change name of interface command!} +% \begin{macro}{\RecordIndexTypeAux} +% This is the internal form for |\RecordIndexType|. The first +% argument is turned into a string and the rest of the processing +% is then done by |\__doc_idxtype_put:nn| +% \begin{macrocode} +\cs_new:Npn \__doc_idxtype_put:Nn #1#2 { + \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2} +% \end{macrocode} +% We also make an entry in the \texttt{.aux} file so that this +% declaration becomes immediately available in the next +% run. However, for this we aren't reusing |\__doc_idxtype_put:N| +% (a.k.a.\ |\RecordIndexType|) since that would result in doubling +% such lines each time the document is run. Instead we use +% |\RecordIndexTypeAux| which is only updating the data structures +% without writing to the \texttt{.aux} file. +% \begin{macrocode} + \protected@write\@auxout{} + {\string\RecordIndexTypeAux {\string#1 }{#2} } +} +% \end{macrocode} +% When we execute this code from the \texttt{.aux} we better not +% generate a new line in the \texttt{.aux}. Otherwise those would +% cumulate over time. % \begin{macrocode} -|gdef|ifnot@excluded{|expandafter - |expanded@notin|expandafter{|expandafter - \|macro@namepart,}{|the|index@excludelist}} -|endgroup +\cs_new:Npn \RecordIndexTypeAux #1#2 { + \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2} +} +% \end{macrocode} +% Similarly, when the \texttt{.aux} is read at the end of the run we +% should disable that command to avoid unnecessary processing. +% \begin{macrocode} +\AtEndDocument{ + \cs_set_eq:NN \RecordIndexTypeAux \use_none:nn +} +% \end{macrocode} +% Finally, we provide the user-level interface +% \begin{macrocode} +\cs_set_eq:NN \RecordIndexType \__doc_idxtype_put:Nn +% \end{macrocode} +% \end{macro} +% \end{imacro} +% \end{macro} +% +% +% \begin{macro}{\__doc_idxtype_put_scan:nn} +% When we want to record an index type for a scanned name we can't +% turn that into a csname and then call |\__doc_idxtype_put:Nn| +% because turning it into a csname may change the meaning of the +% name from ``undefined'' to |\relax|. Got bitten by that when +% processing the kernel sources containing |\@undefined| within the +% code: suddenly that wasn't undefined any longer. +% So here is another version that works only on characters as +% input. As we don't know whether or not they are proper strings +% already we first make sure that this is the case. +% \begin{macrocode} +\cs_new:Npn \__doc_idxtype_put_scan:nn #1#2 { + \exp_args:Nf \__doc_idxtype_put:nn { \tl_to_str:n {#1} }{#2} +% \end{macrocode} +% In this case we also have to append a backslash when writing to +% the \texttt{.aux} file. +% \begin{macrocode} + \protected@write\@auxout{} + {\string\RecordIndexTypeAux {\bslash #1 }{#2} } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\__doc_idxtype_put_scan:on} +% And here is the one we really need since the characters are +% stored in some macro. +% \begin{macrocode} +\cs_generate_variant:Nn \__doc_idxtype_put_scan:nn {o} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\record@index@type@save} +% And here is the interface to the rest of the code: +% \begin{macrocode} +\cs_set_eq:NN \record@index@type@save \__doc_idxtype_put_scan:on +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\__doc_idxtype_put:nn} +% This internal command takes two arguments: a command name as +% string (no backslash) and its type (i.e., first mandatory +% argument of a |\NewDocElement| declaration. If |#1| is not in +% |\l__doc_donotindex_seq| it will add this data to the property +% list |\g__doc_idxtype_prop| using |#1| as key and |#2| as its +% value. If the key already exist its value will be overwritten. If +% the command is later marked for exclusion from the index the +% property list setting remains unchanged but as long as no index +% is produced for the command it will not be consulted. +% +% Note: the command assumes that |#1| is already in string form +% \begin{macrocode} +\cs_new:Npn \__doc_idxtype_put:nn #1#2 { +% \end{macrocode} +% No mystery here: if the command is not marked for exclusion from +% the index add the property. The extra |\tl_to_str:n| is a safety +% measure in case the input wasn't already in that form (should +% only be the case with broken input but \ldots) +% \begin{macrocode} + \exp_args:NNf + \seq_if_in:NnTF \l__doc_donotindex_seq {\tl_to_str:n{#1}} +% \end{macrocode} +% Some tracing info \ldots{} +% \begin{macrocode} + { + \__doc_trace:x{Not~ recording~ index~ type~ for~ '\bslash #1' } + } + { + \__doc_trace:x{Recording~ index~ type~ for~ '\bslash #1' ~ as~ #2 } +% \end{macrocode} +% Stick the data into the property list: +% \begin{macrocode} + \prop_gput:Nnn \g__doc_idxtype_prop {#1}{#2} + } +} +% \end{macrocode} +% \end{macro} +% +% ^^A -------------------------------------------------- +% +% +% \begin{macro}{\exp_args:co} +% A helper: construct a function and call it with its first argument +% expanded once: +% \begin{macrocode} +\cs_new:Npn \exp_args:co #1#2 + { \cs:w #1 \exp_after:wN \cs_end:\exp_after:wN {#2} } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tl_to_str:o} +% Another helper: take some token list variable, expand it and turn +% it into a string. +% \begin{macrocode} +\cs_generate_variant:Nn \tl_to_str:n {o} +% \end{macrocode} +% \end{macro} +% +% +% +% ^^A -------------------------------------------------- +% +% +% +% \DescribeMacro\maybe@index@macro +% +% This takes a macro name (without backslash) as parsed within a +% \env{macrocode} environment and checks if it should get indexed +% (i.e., is not on the exclude list) and if so how (i.e., gets it +% index type property and makes the right choice depending on that. +% + + +% \begin{macro}{\maybe@index@macro} +% \begin{macro}{\__doc_maybe_index:o} +% We first make sure that the argument is really a string (so that +% we have a defined situation) and then +% pass it on to |\__doc_maybe_index_aux:nN| to do the work. +% The second argument defines the indexing operation +% \cs{SpecialIndex} for multi-letter macros and below +% \cs{SpecialShortIndex} for single character macros. +% \begin{macrocode} +\cs_new:Npn \__doc_maybe_index:o #1 { + \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} } + \SpecialIndex +} +% \end{macrocode} +% And here is what we call it in the older non-expl3 code: +% \begin{macrocode} +\cs_set_eq:NN \maybe@index@macro \__doc_maybe_index:o +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\maybe@index@short@macro} +% \begin{macro}{\__doc_maybe_index_short:o} +% Single character macros are handled similarly but there the +% indexing is done by \cs{SpecialShortIndex}. +% \begin{macrocode} +\cs_new:Npn \__doc_maybe_index_short:o #1 { + \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} } + \SpecialShortIndex +} +\cs_set_eq:NN \maybe@index@short@macro \__doc_maybe_index_short:o +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% \begin{macro}{\__doc_maybe_index_aux:nN} +% Take a string (representing a macro without backslash) and make +% the right choices with respect to indexing. +% \begin{macrocode} +\cs_new:Npn \__doc_maybe_index_aux:nN #1#2 { +% \end{macrocode} +% A bit of tracing: +% \begin{macrocode} + \__doc_trace:x{Searching~ for~ '\bslash #1'} +% \end{macrocode} +% If the name is on the exclude list do nothing. +% \begin{macrocode} + \seq_if_in:NnTF \l__doc_donotindex_seq {#1} % \end{macrocode} -% The macro "\expanded@notin" now does the dirty work. It first -% defines a macro "\in@@" with a very special parameter text. If -% you look closely "\in@@" has three arguments, the first one is -% delimited by the first argument of "\expanded@notin" (i.e.\ by -% the string starting with a "\" and ending with a "," above), the -% second is undelimited (which means that it will get the next -% token after our string, and the third is delimited again and will -% get the rest up to the token "\in@@". In other words the token -% "\in@@" is also used as a delimiter. -% \begin{macrocode} -\def\expanded@notin#1#2{% - \def\in@@##1#1##2##3\in@@{% -% \end{macrocode} -% Now the replacement text simply compares the second argument -% (i.e.\ the undelimited one after our string) to the token -% "\expanded@notin". This is an unclosed "\ifx" statement which -% means that this macro behaves similar to a normal \TeX{} -% conditional. -% \begin{macrocode} - \ifx\expanded@notin##2}% -% \end{macrocode} -% After all these preparations we call "\in@@". First we expand the -% token after "\in@@" (which is "\the" from the second argument to -% "\expanded@notin"). As a result we get the contents of the -% "\index@excludelist" inserted after "\in@@". After this contents -% we add once more the string we are looking for, then the token -% "\expanded@notin" and finally the token "\in@@". -% \begin{macrocode} - \expandafter\in@@#2#1\expanded@notin\in@@} -% \end{macrocode} -% Now what happens when the macro "\in@@" above gets called? The -% first argument to "\in@@" is delimited by our string. In other -% words it will get everything from the contents of -% "\index@excludelist" before this string. If the string is not in -% "\index@excludelist" then it gets the whole contents, since after -% it we had inserted the string one more. In this case the next -% token is "\expanded@notin" which gets assigned to the second -% argument and the third argument will be empty. If, on the other -% hand, the string was inside "\index@excludelist" then the second -% argument will not be the token "\expanded@notin" and the third -% argument will be all the garbage up to "\in@@". Therefore testing -% the seconded argument, as done in the definition of "\in@@" will -% tell us whether or not the string is in "\index@includelist" and -% this was exactly what we wanted. (Deep breath.) You got -% that?\footnote{\TeX{}book page 125. The code described above is -% originally due to Michael Spivak who used a similar method within -% the \AmSTeX{} macros.} -% \end{macro} -% \end{macro} % +% \begin{macrocode} + { + \__doc_trace:x{Not~ indexing~ '\bslash #1' } + } +% \end{macrocode} +% Otherwise check if this name has an index type property attached +% to it. +% \begin{macrocode} + { + \prop_get:NnNTF \g__doc_idxtype_prop {#1} \l__doc_idxtype_tl +% \end{macrocode} +% If so construct and execute +% |\Code|\meta{idxtype}|Index|\footnote{I guess this should really +% be an internal name not a user-level one.} which is done inside +% |\__doc_maybe_index_aux| +% \begin{macrocode} + { + \exp_args:Ncno \__doc_maybe_index_aux:Nnn + { Code \tl_use:N \l__doc_idxtype_tl Index } + {code} {\bslash #1} + } +% \end{macrocode} +% Otherwise execute |\SpecialIndex| which is a short form for +% |\CodeMacroIndex{code}| or execute \cs{SpecialShortIndex} which +% deals with some special cases for single letter macros. +% \begin{macrocode} + { + \__doc_trace:x{Indexing~ '\bslash #1'\space (\string #2)} + \exp_args:No #2 {\bslash #1} + } + } +} +% \end{macrocode} +% \end{macro} % % % +% \begin{macro}{\SpecialShortIndex} +% \fmi{to be documented; also needs cleaning up as it is a mix of +% old and new right now} +% \begin{macrocode} +\cs_new:Npn \SpecialShortIndex #1 { + \@SpecialIndexHelper@ #1\@nil + \@bsphack + \ifdoc@noindex \else + \str_case_e:nnF {\@gtempa } + { + {\cs_to_str:N \^^M } {\def\reserved@a{ \string \space \actualchar } + \def\reserved@b { \space } + \let\reserved@c \@empty } + { } {\def\reserved@a{ \string \space \actualchar } + \def\reserved@b { \space } + \let\reserved@c \@empty } + {\c_left_brace_str} { \def\reserved@a{ \bgroup \actualchar } + \def\reserved@b { \c_left_brace_str } + \def\reserved@c { \noexpand\iffalse + \c_right_brace_str + \noexpand\fi } } + {\c_right_brace_str} { \def\reserved@a{ \egroup \actualchar + \noexpand\iffalse + \c_left_brace_str + \noexpand\fi } + \def\reserved@b { \c_right_brace_str } + \let\reserved@c \@empty } +% \end{macrocode} +% The case of \cs{verbatimchar} is tricky. We can't stick it into +% the normal \cs{verb} because we would then get something like +% \verb=\verb+\++= which would comes out as ``\verb+\++'' instead +% of \verb=\+=. So we use the \cs{verb} to only generate the +% backslash and then use \cs{texttt} on the \cs{verbatimchar} +% itself. However, that is not enough if we are unlucky and +% somebody (like Will :-)) has used something like \verb=&= with a +% special catcode for the \cs{verbatimchar}. We therefore also +% apply \cs{string} to it when we read it back. +% \begin{macrocode} + {\verbatimchar} { \def\reserved@a{ \quotechar\verbatimchar + \actualchar } + \let\reserved@b \@empty + \def\reserved@c + { \string\texttt{\string\string\verbatimchar} } } + } + { \def\reserved@a {\quotechar \@gtempa \actualchar } + \def\reserved@b {\quotechar \@gtempa } + \let\reserved@c \@empty } + \special@index { + \reserved@a + \string\verb + \quotechar *\verbatimchar \quotechar \bslash + \reserved@b + \verbatimchar + \reserved@c + \encapchar code} + \fi + \@esphack +} +% \end{macrocode} +% \end{macro} + + + + + +% \begin{macro}{\__doc_maybe_index_aux:Nnn} +% Execute the function passed on as first argument taking argument +% 2 and 3 as input. +% \begin{macrocode} +\cs_new:Npn \__doc_maybe_index_aux:Nnn #1#2#3 { +% \end{macrocode} +% We have to be a little careful: as that function name is +% constructed it may not actually exist (as constructions generate +% |\relax| in \TeX{} in that case). In that case we raise an error, +% otherwise we execute (with a little bit of tracing info): +% \begin{macrocode} + \cs_if_exist:NTF #1 + { + \__doc_trace:x{Indexing~ '#3'\space as~ + \tl_use:N \l__doc_idxtype_tl } + #1{#2}{#3} + } + { + \PackageError{doc}{Doc~ element~ + '\tl_use:N \l__doc_idxtype_tl'~ unknown}% + + {When~ using~ '\string\RecordIndexType'~ the~ type~ must~ + be~ known~\MessageBreak + to~ the~ system,~ i.e.,~ declared~ via~ + '\string\NewDocElement'\MessageBreak + before~ it~ can~ be~ used~ in~ indexing.} + } +} +% \end{macrocode} +% \end{macro} +% +% +% Back to old style coding \ldots +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} % % % @@ -3138,20 +3883,20 @@ % index entries; these are either invoked explicitly, or automatically % by |\scan@macro|. As already mentioned, the definitions given % here presuppose that the |.idx| file will be processed by -% Chen's \textsf{makeindex} program --- they may be redefined for use -% with the user's favourite such program. +% Chen's \prg{makeindex} program --- they may be redefined for use +% with the user's favorite such program. % % To assist the reader in locating items in the index, all such % entries are sorted alphabetically {\em ignoring\/} the initial % `|\|'; this is achieved by issuing an |\index| command which -% contains the `actual' operator for \textsf{makeindex}. The default +% contains the `actual' operator for \prg{makeindex}. The default % value for the latter operator is `|@|', but the latter character is % so popular in \LaTeX\ package files that it is necessary to substitute -% another character. This is indicated to \textsf{makeindex} by means +% another character. This is indicated to \prg{makeindex} by means % of an `index style file'; the character selected for this function % is |=|, and therefore this character too must be specially treated % when it is met in a \TeX\ command. A suitable index style file is -% provided amongt the supporting files for this style file in +% provided amongst the supporting files for this style file in % \texttt{gind.ist} and is generated from this source by processing % with \texttt{docstrip} to extract the module \textbf{gind}. A % similar style file \texttt{gglo.ist} is supplied for sorting the @@ -3172,12 +3917,12 @@ %<+gind|gglo> % \end{macrocode} % -% \begin{macro}{\actualchar} -% \begin{macro}{\quotechar} -% \begin{macro}{\levelchar} +% \begin{imacro}{\actualchar} +% \begin{imacro}{\quotechar} +% \begin{imacro}{\levelchar} % First come the definitions of |\actualchar|, % |\quotechar| and |\levelchar|. Note, that our defaults -% are not the ones used by the \textsf{makeindex} program without a +% are not the ones used by the \prg{makeindex} program without a % style file. % \begin{macrocode} %<*package> @@ -3190,85 +3935,39 @@ %<+gind|gglo>level '>' %<*package> % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} +% \end{imacro} % % -% \begin{macro}{\encapchar} -% The \textsf{makeindex} default for the |\encapchar| isn't +% \begin{imacro}{\encapchar} +% The \prg{makeindex} default for the |\encapchar| isn't % changed. % \begin{macrocode} \@ifundefined{encapchar}{\def\encapchar{|}}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\verbatimchar} +% \begin{imacro}{\verbatimchar} % We also need a special character to be used as a delimiter for % the |\verb*| command used in the definitions below. % \begin{macrocode} \@ifundefined{verbatimchar}{\def\verbatimchar{+}}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\SpecialIndex} -% The |\SpecialIndex| command creates index entries for -% macros. If the argument is |\|$xyz$, the command produces -% \verb|\indexentry{|$xyz$\verb|=\verb!*+\|$xyz$\verb|+}{|$n$\verb|}| -% given the above defined defaults for |\actualchar|, -% |\quotechar| and |\verbatimchar|. We first remove the -% initial `|\|' to get a better index. -% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} -% \begin{macrocode} -\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble - \string#1\actualchar -% \end{macrocode} -% Then follows the actual entry. A |\quotechar| is placed -% before the |*| to allow its use as a special \textsf{makeindex} -% character. Again |\@bsphack| and |\@esphack| are used -% to make the macros invisible. -% \begin{macrocode} - \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}% - \@esphack} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\SpecialMainIndex} -% \begin{macro}{\SpecialMainEnvIndex} -% \begin{macro}{\SpecialUsageIndex} -% The |\SpecialMainIndex| macro is used to cross-reference the -% names introduced by the \textsf{macro} environment. The action is -% as for |\SpecialIndex|, except that \textsf{makeindex} is -% instructed to `encap'sulate the entry with the string -% \verb=|main= to cause it to generate a call of the |\main| -% macro. -% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} -% \changes{v2.0c}{1998/08/22}{Correctly handle single character -% control sequences like \cs{<}.} -% -% |\SpecialMainIndex| passes the macro name to be indexed on to the -% macro |\SpecialIndex@|. -% \begin{macrocode} -\def\SpecialMainIndex#1{\@bsphack\SpecialIndex@{#1}{\encapchar main}% - \@esphack} -% \end{macrocode} % -% \begin{macro}{\SpecialIndex@} -% \changes{v2.0c}{1998/08/22}{Macro added.} -% \changes{v2.0f}{1999/02/27}{Temp fix to allow strange code in arg 1 -% (PR 2968)} -% The macro |\SpecialIndex@| does the real work for |\SpecialMainIndex| -% and |\SpecialUsageIndex|. It takes two arguments: the macro to be -% indexed (as a control sequence or list of character tokens) and the -% additional text for the index. -% \changes{v2.0g}{1999/03/22}{Correct so-called temp fix. I'm not going to -% explain this.} +% \begin{macro}{\@SpecialIndexHelper@} +% \fmi{doc or drop} % \begin{macrocode} \begingroup \catcode`\|=0 \catcode`\\=12 +% \end{macrocode} +% \SpecialEscapechar\| +% \begin{macrocode} |gdef|@SpecialIndexHelper@#1#2|@nil{% |if |noexpand#1\% |gdef|@gtempa{#2}% @@ -3279,137 +3978,13 @@ |endgroup |fi} |endgroup -\def\SpecialIndex@#1#2{% -% \end{macrocode} -% The first thing it does is to convert the macro into a list of -% characters. Note that a character token list remains (mostly) unchanged. -% \begin{macrocode} - \@SpecialIndexHelper@#1\@nil % \end{macrocode} -% The macro name \verb*|\ | has to handled in a special way. The reason -% is that the space token is skipped when \TeX\ is scanning macro -% parameters, so that the trick used below will not work. -% So, we check whether the replacement text of |\@tempa| starts with -% a space token and write the appropriate index entry. -% \begin{macrocode} - \def\@tempb{ }% - \ifcat \@tempb\@gtempa - \special@index{\quotechar\space\actualchar - \string\verb\quotechar*\verbatimchar - \quotechar\bslash\quotechar\space\verbatimchar#2}% - \else -% \end{macrocode} -% Having handled this special case we have to distinguish control -% sequences consisting of one or more -% letters and those that consists of exactly one nonletter. As character -% tokens in the replacement text of the macro |\@gtempa| have all -% category code $12$ (other), this is difficult. For simplicity, we treat -% all single character control sequences alike, irregardless of whether -% the character is a letter or not. This has the advantage that it works -% even for strange settings of the category codes. % -% We define a utility macro |\@tempb| with two arguments, the second -% delimited by |\relax|. -% It will be called later so that the first argument is the first character -% of the macro name, and the second argument receives the rest of the -% characters. So we distinguish the two cases above by checking whether -% the second argument is empty. -% \begin{macrocode} - \def\@tempb##1##2\relax{\ifx\relax##2\relax -% \end{macrocode} -% If so, we define the helper macro |\@tempc| in a way that it -% adds quotechars in critical places. -% \begin{macrocode} - \def\@tempc{\special@index{\quotechar##1\actualchar - \string\verb\quotechar*\verbatimchar - \quotechar\bslash\quotechar##1\verbatimchar#2}}% -% \end{macrocode} -% Otherwise we write the characters as in |\SpecialIndex|. -% \begin{macrocode} - \else - \def\@tempc{\special@index{##1##2\actualchar - \string\verb\quotechar*\verbatimchar - \bslash##1##2\verbatimchar#2}}% - \fi}% -% \end{macrocode} -% Now pass the list of characters to \@tempb and call \@tempc to do the -% work. -% \begin{macrocode} - \expandafter\@tempb\@gtempa\relax - \@tempc - \fi} -% \end{macrocode} -% \end{macro} -% -% Slightly simpler is the main entry for environments -% \changes{v1.9e}{1994/02/03}{use \cs{ttfamily} with \cs{string}} -% \changes{v1.9f}{1994/02/07}{should have used \cs{noexpand}, sigh} -% \changes{v1.9i}{1994/02/11}{should have used \cs{protect}} -% \changes{v1.9j}{1994/02/16}{Back to string:-)} -% \changes{v1.9s}{1994/10/14}{Added missing percent and changed to -% \cs{ttfamily}} -% \changes{v2.0d}{1998/12/20}{Correctly handle second index entry -% by using \cs{special@index} not \cs{index} (PR/2928).} -% \changes{v2.0e}{1998/12/28}{Use \cs{string}, not \cs{protect} in argument to -% \cs{special@index}.} -% \changes{v2.1c}{2004/07/23}{environment names incorrectly sorted in -% index (pr/3615)} -% \begin{macrocode} -\def\SpecialMainEnvIndex#1{\@bsphack\special@index{% - #1\actualchar - {\string\ttfamily\space#1} - (environment)% - \encapchar main}% - \special@index{environments:\levelchar#1\actualchar{% - \string\ttfamily\space#1}\encapchar - main}\@esphack} -% \end{macrocode} -% The |\SpecialUsageIndex| is similar to |\SpecialMainIndex|, except -% that it uses the standard |\index| command. -% \texttt{usage} instead of \texttt{main}. -% \begin{macrocode} -\def\SpecialUsageIndex#1{\@bsphack - {\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}% - \@esphack} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% -% -% \begin{macro}{\SpecialEnvIndex} -% Indexing environments is done a little bit differently; we produce -% two index entries with the |\SpecialEnvIndex| macro: -% \changes{v1.9e}{1994/02/03}{The index needs protecting} -% \changes{v1.9g}{1994/02/08}{should have used \cs{noexpand}, sigh} -% \changes{v1.9i}{1994/02/11}{should have used \cs{protect}} -% \begin{macrocode} -\def\SpecialEnvIndex#1{\@bsphack -% \end{macrocode} -% First we sort the environment under its own name stating in the -% actual entry that this is an environment. -% \begin{macrocode} - \index{#1\actualchar{\protect\ttfamily#1} - (environment)\encapchar usage}% -% \end{macrocode} -% The second entry is sorted as a subitem under the key -% `environments:'. -% \changes{v2.1b}{2004/02/09}{environment names incorrectly sorted in -% index (pr/3615)} -% \begin{macrocode} - \index{environments:\levelchar#1\actualchar - {\protect\ttfamily#1}\encapchar usage}\@esphack} -% \end{macrocode} -% Because both entries correspond to `descriptions' of the -% environment, we encapsulate the page numbers with the -% |\usage| macro. % \end{macro} % % % -% \begin{macro}{\SortIndex} +% \begin{imacro}{\SortIndex} % This macro is used to generate the index entries for any % single-character command that |\scan@macro| encounters. The % first parameter specifies the lexical order for the character, @@ -3417,76 +3992,87 @@ % the entry. It can also be used directly to generate index entries % which differ in sort key and actual entry. % \begin{macrocode} -\def\SortIndex#1#2{\index{#1\actualchar#2}} +\def\SortIndex#1#2{% + \ifdoc@noindex\else + \index{#1\actualchar#2}% + \fi +} % \end{macrocode} -% \end{macro} +% \end{imacro} % % % -% \begin{macro}{\it@is@a} -% This macro is supposed to produce a correct |\SortIndex| -% entry for a given character. Since this character might be -% recognised as a `command' character by the index program used, -% all characters are quoted with the |\quotechar|. -% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} -% \begin{macrocode} -\def\it@is@a#1{\special@index{\quotechar #1\actualchar - \string\verb\quotechar*\verbatimchar - \quotechar\bslash\quotechar#1\verbatimchar}} -% \end{macrocode} -% \end{macro} -% % -% -% \begin{macro}{\LeftBraceIndex} +% \begin{imacro}{\LeftBraceIndex} % \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} -% \begin{macro}{\RightBraceIndex} +% \begin{imacro}{\RightBraceIndex} % \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} These -% two macros fix the problems with \textsf{makeindex}. Note the +% two macros fix the problems with \prg{makeindex}. Note the % `hack' with |\iffalse}\fi| to satisfy both \TeX{} and the -% \textsf{makeindex} program. When this is written to the +% \prg{makeindex} program. When this is written to the % \texttt{.idx} file \TeX{} will see both braces (so we get a -% balanced text). \textsf{makeindex} will also see balanced braces +% balanced text). \prg{makeindex} will also see balanced braces % but when the actual index entry is again processed by \TeX{} the % brace in between |\iffalse| |\fi| will vanish. % \begin{macrocode} \@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{% - \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar - \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{} + \special@index{\bgroup\actualchar + \string\verb% % to fool emacs highlighting + \quotechar*\verbatimchar + \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{} \@ifundefined{RightBraceIndex}{\def\RightBraceIndex{% - \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb + \special@index{\egroup\actualchar\string\iffalse{\string\fi + \string\verb% % to fool emacs highlighting \quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{} % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} % % -% \begin{macro}{\PercentIndex} +% \begin{imacro}{\PercentIndex} % \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} % \changes{v1.7c}{1992/03/25}{Default now for bug-fixed makeindex} -% By default we assume a version of \textsf{makeindex} without the +% By default we assume a version of \prg{makeindex} without the % percent bug is being used. % \begin{macrocode} \@ifundefined{PercentIndex} {\def\PercentIndex{\it@is@a\percentchar}}{} % \end{macrocode} -% \end{macro} -% \begin{macro}{\OldMakeindex} +% \end{imacro} +% +% +% \begin{omacro}{\OldMakeindex} % \changes{v1.7c}{1992/03/26}{Replaced \cs{NewMakeIndex}.} -% \begin{macro}{\percentchar} -% Here is one solution for the percent bug in \textsf{makeindex}. +% \begin{imacro}{\percentchar} +% Here is one solution for the percent bug in \prg{makeindex}. % The macro |\percentchar| denotes a |%|$_{12}$. Calling this from % a package or the driver file sets things up % appropriately.\label{bug:fixes} % \begin{macrocode} \def\OldMakeindex{\def\PercentIndex{% - \special@index{\quotechar\percentchar\actualchar\string\verb + \special@index{\quotechar\percentchar\actualchar + \string\verb% % to fool emacs highlighting \quotechar*\verbatimchar\quotechar\bslash \percentchar\percentchar\verbatimchar}}} {\catcode`\%=12 \gdef\percentchar{%}} % \end{macrocode} -% \end{macro} +% \end{imacro} +% \end{omacro} +% +% +% \begin{macro}{\it@is@a} +% This macro is supposed to produce a correct |\SortIndex| +% entry for a given character. Since this character might be +% recognized as a `command' character by the index program used, +% all characters are quoted with the |\quotechar|. +% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} +% \begin{macrocode} +\def\it@is@a#1{\special@index{\quotechar #1\actualchar + \string\verb% % to fool emacs highlighting + \quotechar*\verbatimchar + \quotechar\bslash\quotechar#1\verbatimchar}} +% \end{macrocode} % \end{macro} % % @@ -3494,7 +4080,7 @@ % % % -% \subsection{Redefining the \textsf{index} environment} +% \subsection{Redefining the \env{index} environment} % %\changes{v1.4r}{1989/04/22}{twocols env. placed into separate file} %\changes{v1.4?}{1989/04/19}{use DEK's algorithm and implement @@ -3502,34 +4088,10 @@ %\changes{v1.4?}{1989/04/16}{changes to the index env.} %\changes{v1.5a}{1989/04/26}{Now input multicol.sty instead of % multcols.sty} -% \begin{macro}{\ifhave@multicol} -% \changes{v1.7a}{1992/03/04}{Added to support avoiding multicol.sty} By -% default the index is set in three columns, and will start on the -% same page as, and underneath, the last part of the text of the -% documented package file, if possible. The last page will be -% reformatted with balanced columns. This requires the -% \textsf{multicols} environment which is described elsewhere. So -% that \DOC{} can be run independently of -% \texttt{multicol.sty} we first check for its existence and set -% the "have@multicol" flag appropriately for use below. -% \changes{v1.9a}{1993/12/02}{Use \cs{IfFileExists}} -% \changes{v1.9m}{1994/04/28}{Use \cs{RequirePackage} to load multicol} -% \begin{macrocode} -\newif\ifhave@multicol -% \end{macrocode} -% If we found \texttt{multicol.sty} we use it. It would be nice to -% delay this (and the re-definition of "theindex") until we knew -% whether an index was actually required \ldots -% \begin{macrocode} -\IfFileExists{multicol.sty}{\have@multicoltrue - \RequirePackage{multicol}% - }{} -% \end{macrocode} -% \end{macro} % -% \begin{macro}{\IndexMin} -% \begin{macro}{\c@IndexColumns} +% \begin{ldimen}{\IndexMin} +% \begin{lcounter}{IndexColumns} % \changes{v1.4t}{1989/04/24}{Counter added.} % If \texttt{multicol} is in use, % when the index is started we compute the remaining space on the @@ -3542,8 +4104,9 @@ \newdimen\IndexMin \IndexMin = 80pt \newcount\c@IndexColumns \c@IndexColumns = 3 % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{lcounter} +% \end{ldimen} +% % % % \begin{environment}{theindex} @@ -3557,7 +4120,14 @@ % \changes{v1.6e}{1991/04/03}{Turned into env definition.} % \changes{v1.7a}{1992/03/04}{Include test for multicols.} % \begin{macrocode} -\ifhave@multicol +\ifdoc@multicol +% \end{macrocode} +% +% \begin{macrocode} + \RequirePackage{multicol} +% \end{macrocode} +% +% \begin{macrocode} \renewenvironment{theindex} {\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]% % \end{macrocode} @@ -3570,17 +4140,15 @@ % % \begin{macro}{\endtheindex} % \changes{v1.4t}{1989/04/24}{Incorporated new multicols env.} -% At the end of the index, we have only to end the \textsf{multicols} +% At the end of the index, we have only to end the \env{multicols} % environment. % \begin{macrocode} {\end{multicols}} % \end{macrocode} -% If we can't use \textsf{multicols} we warn the user and use an +% If we can't use \env{multicols} we warn the user and use an % environment that's basically the one from \texttt{article.sty}. % \begin{macrocode} \else - \typeout{Can't find multicol.sty -- will use normal index layout if - necessary.} \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi \columnseprule \z@ \columnsep 35\p@ \twocolumn[\index@prologue]% @@ -3591,8 +4159,8 @@ % \end{macro} % \end{environment} % -% Here are the necessary \textsf{makeindex} declarations. We disable -% scanning of macro names inside the index with "\scan@allowedfalse\n" +% Here are the necessary \prg{makeindex} declarations. We disable +% scanning of macro names inside the index with |\scan@allowedfalse\n| % to avoid recursion. % \begin{macrocode} %</package> @@ -3604,7 +4172,7 @@ % \end{macrocode} % % -% \begin{macro}{\IndexPrologue} +% \begin{imacro}{\IndexPrologue} % \begin{macro}{\index@prologue} % \changes{v1.9w}{1995/12/27}{Text changed} % \changes{v1.9x}{1996/01/11}{Text depends on code lines used} @@ -3639,11 +4207,11 @@ }}{} % \end{macrocode} % \end{macro} -% \end{macro} +% \end{imacro} % % % -% \begin{macro}{\IndexParms} +% \begin{imacro}{\IndexParms} % These are some last-minute assignments for formatting the index % entries. They are defined in a separate macro so that a user can % substitute different definitions. We start by defining the @@ -3678,7 +4246,7 @@ \def\subsubitem{\@idxitem\hspace*{25pt}}% % \end{macrocode} % \begin{macro}{\indexspace} -% The \textsf{makeindex} program generates an |\indexspace| +% The \prg{makeindex} program generates an |\indexspace| % before each new alphabetic section commences. After this final % definition we end the |\@ifundefined| and the definition of % |\IndexParms|. @@ -3690,10 +4258,10 @@ % \end{macro} % \end{macro} % \end{macro} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\efill} +% \begin{imacro}{\efill} % This definition of |\efill| is intended to be used after index % items which have no following text (for example, ``\textit{ % see\/}'' entries). It just ensures that the current line is @@ -3706,104 +4274,96 @@ %<+gind>item_x2 "\\efill \n \\subsubitem " %<*package> % \end{macrocode} -% \end{macro} +% \end{imacro} % % % -% \begin{macro}{\pfill} -% \begin{macro}{\dotfil} -% \begin{macro}{\dotfill} +% \begin{imacro}{\pfill} % The following definitions provide the |\pfill| command; if -% this is specified in the index style file to \textsf{makeindex} as +% this is specified in the index style file to \prg{makeindex} as % the delimiter to appear after index items, then the intervening % space before the referenced page numbers will be filled with % dots, with a little white space interpolated at each end of the % dots. If the line is broken the dots will show up on both lines. -% \changes{v2.1i}{2018/09/25}{Guard against following \cs{unskip} (git/23)} % \begin{macrocode} -\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill\kern\z@}% -\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil\kern\z@}% -\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak - \dotfil~\ignorespaces}% +\def\pfill{\unskip~% + \leaders\hbox to.6em{\hss .\hss}\hfill + \penalty500\strut\nobreak + \leaders\hbox to.6em{\hss .\hss}\hfil + ~\ignorespaces}% %</package> %<+gind|gglo>delim_0 "\\pfill " %<+gind|gglo>delim_1 "\\pfill " %<+gind|gglo>delim_2 "\\pfill " %<*package> % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{imacro} % % % -% \begin{macro}{\*} +% \begin{imacro}{\*} % Here is the definition for the |\*| macro. It isn't used in % this set of macros. % \begin{macrocode} \def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\main} +% \begin{imacro}{\main} % The \textit{defining\/} entry for a macro name is flagged with % the string \texttt{\encapchar main}\footnote{With the current % definition of \texttt{\bslash encapchar} substituted for -% \texttt{\encapchar}} in the |\index| command; \textsf{makeindex} +% \texttt{\encapchar}} in the |\index| command; \prg{makeindex} % processes this so that the |\main| macro will be invoked to % underline the page number(s) on which the {\em definition\/} of % the macro will be found. % \begin{macrocode} \@ifundefined{main}{\def\main#1{\underline{#1}}}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % -% \begin{macro}{\usage} +% \begin{imacro}{\usage} % The |\usage| macro is used to indicate entries describing % the usage of a macro. The corresponding page number(s) will be % set in \textit{italics}. % \begin{macrocode} \@ifundefined{usage}{\def\usage#1{\textit{#1}}}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % +% \begin{imacro}{\code} +% The |\code| macro is used to indicate index entries to code lines +% that aren't main entries. +% By default we do nothing special with them +% the usage of a macro. +% \begin{macrocode} +\@ifundefined{code}{\def\code#1{#1}}{} +% \end{macrocode} +% \end{imacro} % -% \begin{macro}{\PrintIndex} +% +% \begin{imacro}{\PrintIndex} % \changes{v1.5k}{1989/09/04}{\cs{printindex} changed to % \cs{PrintIndex}} % \changes{v1.7a}{1992/02/26}{Documentation moved to interface section.} % \changes{v1.9h}{1994/02/10}{Use \cs{@input@} instead of \cs{@input}.} % \changes{v1.9w}{1995/12/29}{Turn the cmd into a noop after use.} -% This is the same as "\printindex" in the \textsf{makeidx} package. +% This is the same as |\printindex| in the \pkg{makeidx} package. % \begin{macrocode} \def\PrintIndex{\@input@{\jobname.ind}% \global\let\PrintIndex\@empty} % \end{macrocode} -% \end{macro} +% \end{imacro} % -% \begin{macro}{\printindex} -% Since the above macro was called |\printindex| in older versions -% of \texttt{doc.sty} the following definition was provided up to -% version 1.9y. -% \changes{v1.9z}{1996/04/17}{Commented out} -% \begin{macrocode} -%\def\printindex{\typeout{\string\printindex\space is obsolete!}% -% \typeout{Please use \string\PrintIndex\space -% if you are a macro implementor^^J -% or get a newer version of the documented -% software if you are a user}% -% \PrintIndex} -% \end{macrocode} -% \end{macro} % % We want headings in the index (and changes list) according to the % initial character of the next block of entries and have to instruct -% \textsf{makeindex} appropriately. Unfortunately the specification +% \prg{makeindex} appropriately. Unfortunately the specification % for this changed sometime between versions 2.4 and 2.11 of -% \textsf{makeindex}. We provide both ways of doing it but +% \prg{makeindex}. We provide both ways of doing it but % unfortunately this will always produce a warning message from -% \textsf{makeindex}. This is for older versions: +% \prg{makeindex}. This is for older versions: % \changes{v1.7h}{1992/07/01}{Turn off headings in gls file} % \begin{macrocode} %</package> @@ -3839,13 +4399,13 @@ % is otherwise ignored, but the others are written out and may be used % to generate a history of changes, to be printed at the end of the % document. However, note that older versions of Chen's standard -% \textsf{makeindex} +% \prg{makeindex} % program limit any textual field to just 64 characters; therefore, % is important that the number of characters in the second and third % parameters should not exceed 61 altogether (to allow for the % parentheses placed around the date). % -% \begin{macro}{\changes} +% \begin{imacro}{\changes} % \changes{BHK}{1989/04/26}{Documented \texttt{\protect\bslash changes} % command.} % \changes{BHK}{1989/04/26}{Changed definition of @@ -3855,9 +4415,9 @@ % change in \LaTeX{} 2.09 changed the command name in the % \texttt{.glo} file from \texttt{\bslash indexentry} to % \texttt{\bslash glossaryentry}. It is therefore necessary to -% have a special \textsf{makeindex} style file called +% have a special \prg{makeindex} style file called % \texttt{gglo.ist} to process this file correctly.} Thus -% \textsf{makeindex} or a similar program can be used to process +% \prg{makeindex} or a similar program can be used to process % the output into a sorted ``glossary''. The |\changes| command % commences by taking the usual measures to hide its spacing, and % then redefines |\protect| for use within the argument of the @@ -3880,42 +4440,57 @@ \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore \changes@} \def\changes@#1#2#3{% - \protected@edef\@tempa{\noexpand\glossary{#1\levelchar + \protected@edef\@tempa{\noexpand\glossary{#1% +% \end{macrocode} +% If asked for we also show the date of in the change log (after +% the version). +% \changes{v3.0g}{2022/06/01}{Show change dates if asked for (gh/531)} +% \begin{macrocode} + \ifdoc@reportchangedates + \space -- #2\fi + \levelchar % \end{macrocode} % \changes{v1.9u}{1995/08/06}{Use value of \cs{saved@macroname} to % find out about change entries at outer level} -% If the macro "\saved@macroname" doesn't contain any macro name +% If the macro |\saved@macroname| doesn't contain any macro name % (ie is empty) the current changes entry was done at top-level. -% In this case we precede it by "\generalname". +% In this case we precede it by |\generalname|. % \begin{macrocode} - \ifx\saved@macroname\@empty - \space - \actualchar - \generalname - \else + \ifx\saved@macroname\@empty +% \end{macrocode} +% Putting a |!| at the beginning of the entry hopefully moves this +% entry to the very beginning during sorting. +% \begin{macrocode} + \quotechar!% + \actualchar + \generalname + \else % \end{macrocode} % \changes{v2.1g}{2016/02/15}{Use \cs{saved@indexname}} % \begin{macrocode} - \saved@indexname - \actualchar - \string\verb\quotechar*% - \verbatimchar\saved@macroname - \verbatimchar - \fi - :\levelchar #3}}% + \saved@indexname + \actualchar + \string\verb% % to fool emacs highlighting + \quotechar*% + \verbatimchar\saved@macroname + \verbatimchar + \fi + :\levelchar #3}}% \@tempa\endgroup\@esphack} % \end{macrocode} +% \end{imacro} +% % % \begin{macro}{\saved@macroname} -% \changes{BHK}{1989/04/26}{Provided for sorting outside \textsf{macro} +% \changes{BHK}{1989/04/26}{Provided for sorting outside \env{macro} % environment} The entries are sorted for convenience by the name % of the most recently introduced macroname (i.e., that in the most % recent |\begin{macro}| command). We therefore provide % |\saved@macroname| to record that argument, and provide a default -% definition in case |\changes| is used outside a \textsf{macro} +% definition in case |\changes| is used outside a \env{macro} % environment. (This is a {\em wicked\/} hack to get such entries % at the beginning of the sorted list! It works providing no macro -% names start with "!" or |"|.) \changes{v1.7a}{1992/03/02}{Changed +% names start with |!| or |"|.) \changes{v1.7a}{1992/03/02}{Changed % string used for better sorting.} % \changes{v1.9u}{1995/08/06}{Now empty by default} % \begin{macrocode} @@ -3932,17 +4507,17 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\generalname} +% \begin{imacro}{\generalname} % \changes{v1.9u}{1995/08/06}{Macro added} % This macro holds the string placed before changes entries on % top-level. % \begin{macrocode} \def\generalname{General} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\RecordChanges} +% \begin{imacro}{\RecordChanges} % \changes{BHK}{1989/04/26}{Renames former \texttt{\protect\bslash % PrintChanges} command.} % To cause the changes to be written (to a \texttt{.glo}) file, we @@ -3951,17 +4526,16 @@ % \begin{macrocode} \let\RecordChanges\makeglossary % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\GlossaryMin} +% \begin{ldimen}{\GlossaryMin} % \changes{BHK}{1989/04/26}{Added to support % \texttt{\protect\bslash changes}.} -% \begin{macro}{\c@GlossaryColumns} +% \begin{lcounter}{GlossaryColumns} % \changes{BHK}{1989/04/26}{Added to support \texttt{\protect\bslash % changes}.} The remaining macros are all analogues of those used -% for the \textsf{theindex} environment. When the glossary is +% for the \env{theindex} environment. When the glossary is % started we compute the space which remains at the bottom of the % current page; if this is greater than |\GlossaryMin| then the % first part of the glossary will be placed in the available space. @@ -3972,8 +4546,8 @@ \newdimen\GlossaryMin \GlossaryMin = 80pt \newcount\c@GlossaryColumns \c@GlossaryColumns = 2 % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{lcounter} +% \end{ldimen} % % % \begin{environment}{theglossary} @@ -3983,13 +4557,12 @@ % \changes{v1.6e}{1991/04/03}{Turned into env definition.} % \changes{v1.7a}{1992/03/10}{Changed to work without multicols if % necessary.} -% \begin{macro}{\endglossary} % \changes{BHK}{1989/04/26}{Added to support % \texttt{\protect\bslash changes}.} -% The environment \textsf{theglossary} is defined in the same manner -% as the \textsf{theindex} environment. +% The environment \env{theglossary} is defined in the same manner +% as the \env{theindex} environment. % \begin{macrocode} -\ifhave@multicol +\ifdoc@multicol \newenvironment{theglossary}{% \begin{multicols}\c@GlossaryColumns [\glossary@prologue][\GlossaryMin]% @@ -4004,10 +4577,9 @@ {\if@restonecol\onecolumn\else\clearpage\fi} \fi % \end{macrocode} -% \end{macro} % \end{environment} % -% Here are the necessary \textsf{makeindex} declarations with scanning +% Here are the necessary \prg{makeindex} declarations with scanning % disabled as for the index. % \begin{macrocode} %</package> @@ -4025,7 +4597,7 @@ % \end{macrocode} % % -% \begin{macro}{\GlossaryPrologue} +% \begin{imacro}{\GlossaryPrologue} % \changes{BHK}{1989/04/26}{Added to support % \texttt{\protect\bslash changes}.} % \begin{macro}{\glossary@prologue} @@ -4050,9 +4622,9 @@ }}{} % \end{macrocode} % \end{macro} -% \end{macro} +% \end{imacro} % -% \begin{macro}{\GlossaryParms} +% \begin{imacro}{\GlossaryParms} % \changes{BHK}{1989/04/26}{Added to support % \texttt{\protect\bslash changes}.} % Unless the user specifies otherwise, we set the change history @@ -4067,19 +4639,20 @@ \parfillskip -15pt plus -1fil\relax} }{} % \end{macrocode} -% \end{macro} -% \begin{macro}{\PrintChanges} +% \end{imacro} +% +% \begin{imacro}{\PrintChanges} % \changes{BHK}{1989/04/26}{Added to support % \texttt{\protect\bslash changes}.} % To read in and print the sorted change history, just put the % |\PrintChanges| command as the last (commented-out, and thus % executed during the documentation pass through the file) command % in your package file. Alternatively, this command may form one of -% the arguments of the |\StopEventually| command, although a +% the arguments of the |\MaybeStop| command, although a % change history is probably {\em not\/} required if only the % description is being printed. % -% The command assumes that \textsf{makeindex} or some other program +% The command assumes that \prg{makeindex} or some other program % has processed the \texttt{.glo} file to generate a sorted % \texttt{.gls} file. % \changes{v1.9h}{1994/02/10}{Use \cs{@input@} instead of \cs{@input}.} @@ -4088,7 +4661,7 @@ \def\PrintChanges{\@input@{\jobname.gls}% \global\let\PrintChanges\@empty} % \end{macrocode} -% \end{macro} +% \end{imacro} % % % @@ -4096,25 +4669,25 @@ % % \subsection{Bells and whistles} % -% \begin{macro}{\StopEventually} +% \begin{imacro}{\MaybeStop} % \changes{v1.5k}{1989/09/04}{Support for checksum.} -% \begin{macro}{\Finale} +% \begin{imacro}{\Finale} % \changes{v1.5k}{1989/09/04}{Support for checksum.} % \changes{v1.5z}{1990/04/22}{Define \cs{Finale} globally.} -% \begin{macro}{\AlsoImplementation} +% \begin{imacro}{\AlsoImplementation} % \changes{v1.9w}{1995/12/27}{Macro added} -% \begin{macro}{\OnlyDescription} +% \begin{imacro}{\OnlyDescription} % If |\AlsoImplementation| is in force the whole documentation % including the code part will be typeset. This is the default. % \begin{macrocode} \newcommand\AlsoImplementation{% % \end{macrocode} % To make this happen we have to define -% |\StopEventually| in a way that its argument is typeset at the +% |\MaybeStop| in a way that its argument is typeset at the % very end or more exactly at |\Finale|. For this we % save its argument in the macro |\Finale|. % \begin{macrocode} - \long\def\StopEventually##1{\@bsphack\gdef\Finale{##1% + \long\def\MaybeStop##1{\@bsphack\gdef\Finale{##1% % \end{macrocode} % But |\Finale| will be called at the very end of a file. This % is exactly the point were we want to know if the file is @@ -4123,7 +4696,7 @@ % \begin{macrocode} \check@checksum}% % \end{macrocode} -% On the other hand: |\StopEventually| is more or less a +% On the other hand: |\MaybeStop| is more or less a % dividing point between description and code. So we start to look % for the check-sum of the documented file by calling % |\init@checksum|. @@ -4134,35 +4707,44 @@ % \end{macrocode} % % Since |\AlsoImplementation| should be the default we execute it -% and thus |\StopEventually| gets the desired meaning. +% and thus |\MaybeStop| gets the desired meaning. % \begin{macrocode} \AlsoImplementation % \end{macrocode} % When the user places an |\OnlyDescription| declaration in % the driver file the document should only be typeset up to -% |\StopEventually|. We therefore have to redefine this macro. +% |\MaybeStop|. We therefore have to redefine this macro. % \begin{macrocode} -\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{% +\def\OnlyDescription{\@bsphack\long\def\MaybeStop##1{% % \end{macrocode} -% In this case the argument of |\StopEventually| should be set +% In this case the argument of |\MaybeStop| should be set % and afterwards \TeX{} should stop reading from this file. % Therefore we finish this macro with % \begin{macrocode} ##1\endinput}\@esphack} % \end{macrocode} -% If no |\StopEventually| command is given we silently ignore a +% If no |\MaybeStop| command is given we silently ignore a % |\Finale| issued. % \changes{v1.9n}{1994/04/28}{Ignore \cs{Finale} if no -% \cs{StopEventually} is given} +% \cs{MaybeStop} is given} % \begin{macrocode} \let\Finale\relax % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} +% \end{imacro} +% \end{imacro} +% % -% \begin{macro}{\meta} +% \begin{omacro}{\StopEventually} +% The old wrong name for |\MaybeStop|. We need to use |\def| +% (i.e., expansion) as |\MaybeStop| gets redefined once in a while. +% \begin{macrocode} +\def\StopEventually{\MaybeStop} +% \end{macrocode} +% \end{omacro} +% +% \begin{imacro}{\meta} % \changes{v1.4t}{1989/04/24}{Macro added.} % \changes{v1.5w}{1990/02/03}{Breaks at space allowed.} % \changes{v1.6a}{1990/05/24}{Extra space bug corrected.} @@ -4216,7 +4798,7 @@ }\ensuremath\rangle } % \end{macrocode} -% \end{macro} +% \end{imacro} % % % \begin{macro}{\meta@font@select} @@ -4228,7 +4810,7 @@ % \end{macro} % % -% \begin{macro}{\IndexInput} +% \begin{imacro}{\IndexInput} % This next macro may be used to read in a separate file (possibly % a package file that is {\em not\/} documented by this means) and % set it verbatim, whilst scanning for macro names and indexing the @@ -4243,7 +4825,7 @@ % \begin{macrocode} \begingroup \macro@code % \end{macrocode} -% We also make spacing behave as in the \textsf{macrocode} +% We also make spacing behave as in the \env{macrocode} % environment, because otherwise all the spaces will be shown % explicitly. % \begin{macrocode} @@ -4260,10 +4842,10 @@ % \begin{macrocode} \endgroup} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\maketitle} +% \begin{imacro}{\maketitle} % The macro to generate titles is easily altered in order that it % can be used more than once (an article with many titles). In the % original, diverse macros were concealed after use with @@ -4299,56 +4881,56 @@ \gdef\@date{\today}\gdef\@thanks{}% \gdef\@author{}\gdef\@title{}} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\ps@titlepage} +% \begin{imacro}{\ps@titlepage} % \changes{v1.5k}{1989/09/04}{Added \texttt{\protect\bslash % ps@titlepage}} When a number of articles are concatenated into a % journal, for example, it is not usual for the title pages of such % documents to be formatted differently. Therefore, a class -% such as \textsf{ltugboat} can define this macro in advance. +% such as \cls{ltugboat} can define this macro in advance. % However, if no such definition exists, we use pagestyle % \texttt{plain} for title pages. % \begin{macrocode} \@ifundefined{ps@titlepage} {\let\ps@titlepage=\ps@plain}{} % \end{macrocode} -% \end{macro} +% \end{imacro} % -% \begin{macro}{\MakeShortVerb} +% \begin{imacro}{\MakeShortVerb} % \changes{v1.7a}{1992/02/27}{Added (from newdoc but now alters % \cs{dospecials}, \cs{@sanitize}).} -% This arranges an abbreviation for "\verb" such that if you say -% "\MakeShortVerb{\"\meta{c}"}" subsequently using +% This arranges an abbreviation for |\verb| such that if you say +% |\MakeShortVerb{\|\meta{c}|}| subsequently using % \meta{c}\meta{text}\meta{c} is equivalent to -% "\verb"\meta{c}\meta{text}\meta{c}.\footnote{Warning: +% |\verb|\meta{c}\meta{text}\meta{c}.\footnote{Warning: % the commentary in the rest of this section was written by Dave % Love.} In addition, the fact % that \meta{c} is made active is recorded for the benefit of the -% \textsf{verbatim} and \textsf{macrocode} environments. +% \env{verbatim} and \env{macrocode} environments. % Note particularly that the definitions below are global. % The first thing we do (it needn't be first) is to record -% the---presumably new---special character in "\dospecials" and -% "\@sanitize" using "\add@special". +% the---presumably new---special character in |\dospecials| and +% |\@sanitize| using |\add@special|. % % \changes{v1.9e.2}{1994/02/07}{-js: Check if \protect\meta{c} is % already an % abbreviation for \cs{verb}.} -% Some unwary user might issue "\MakeShortVerb" for a second time, we +% Some unwary user might issue |\MakeShortVerb| for a second time, we % better protect against this. We assume that this happened if a -% control sequence "\cc\"\meta{c} is bound, the probability that this +% control sequence |\cc\|\meta{c} is bound, the probability that this % name is used by another module is low. We will output a warning % below, so that a possible error might be noticed by the programmer -% if he reads the "LOG" file. (Should have used module internal names, +% if he reads the |LOG| file. (Should have used module internal names, % 'though.) % -% \begin{macro}{\MakeShortVerb*} +% \begin{imacro}{\MakeShortVerb*} % \changes{v2.1a}{2003/12/09}{(HjG) Added \texttt{*} form} -% This arranges an abbreviation for "\verb*" such that if you say -% "\MakeShortVerb*{\"\meta{c}"}" subsequently using +% This arranges an abbreviation for |\verb*| such that if you say +% |\MakeShortVerb*{\|\meta{c}|}| subsequently using % \meta{c}\meta{text}\meta{c} is equivalent to -% "\verb*"\meta{c}\meta{text}\meta{c}. +% |\verb*|\meta{c}\meta{text}\meta{c}. % \begin{macrocode} %</package> %<*package|shortvrb> @@ -4357,7 +4939,10 @@ {\def\@shortvrbdef{\verb*}\@MakeShortVerb}% {\def\@shortvrbdef{\verb}\@MakeShortVerb}} % \end{macrocode} -% \end{macro} +% \end{imacro} +% \end{imacro} +% +% \begin{macro}{\@MakeShortVerb} % \begin{macrocode} \def\@MakeShortVerb#1{% \expandafter\ifx\csname cc\string#1\endcsname\relax @@ -4367,19 +4952,19 @@ \@shortvrbinfo{Made }{#1}\@shortvrbdef \add@special{#1}% % \end{macrocode} -% Then the character's current catcode is stored in "\cc\"\meta{c}. +% Then the character's current catcode is stored in |\cc\|\meta{c}. % \begin{macrocode} \expandafter \xdef\csname cc\string#1\endcsname{\the\catcode`#1}% % \end{macrocode} % The character is spliced into the definition using the same trick as -% used in "\verb" (for instance), having activated "~" in a group. +% used in |\verb| (for instance), having activated |~| in a group. % \begin{macrocode} \begingroup \catcode`\~\active \lccode`\~`#1% \lowercase{% % \end{macrocode} -% The character's old meaning is recorded in "\ac\"\meta{c} prior to +% The character's old meaning is recorded in |\ac\|\meta{c} prior to % assigning it a new one. % \begin{macrocode} \global\expandafter\let @@ -4398,20 +4983,24 @@ % \end{macrocode} % \changes{v1.9v}{1995/11/03}{(DPC) Use \cs{@shortvrbinfo}} % \begin{macrocode} - \@shortvrbinfo\@empty{#1 already}{\@empty\verb(*)}% + \@shortvrbinfo\@empty{#1 already}% + {\@empty\verb% % to fool emacs highlighting + (*)}% \fi} % \end{macrocode} % \end{macro} -% \begin{macro}{\DeleteShortVerb} +% +% +% \begin{imacro}{\DeleteShortVerb} % \changes{v1.7a}{1992/02/27}{Added (from newdoc but now alters % \cs{dospecials}, \cs{@sanitize}).} -% Here's the means of undoing a "\MakeShortVerb", for instance in a +% Here's the means of undoing a |\MakeShortVerb|, for instance in a % region where you need to use the character outside a verbatim -% environment. It arranges for "\dospecials" and "\@sanitize" to be +% environment. It arranges for |\dospecials| and |\@sanitize| to be % altered appropriately, restores the saved catcode and, if necessary, % the character's meaning (as stored by -% "\MakeShortVerb"). If the catcode wasn't stored in -% "\cc\"\meta{c} (by "\MakeShortVerb") the command is silently +% |\MakeShortVerb|). If the catcode wasn't stored in +% |\cc\|\meta{c} (by |\MakeShortVerb|) the command is silently % ignored. % \changes{v1.7a}{1992/02/28}{Check for previous matched % \cs{MakeShortVerb} @@ -4423,19 +5012,24 @@ % \changes{v2.1a}{2003/12/10}{(HjG) Notify user % if it's not a short verb character} % \begin{macrocode} - \@shortvrbinfo\@empty{#1 not}{\@empty\verb(*)}% + \@shortvrbinfo\@empty{#1 not}% + {\@empty\verb% % to fool emacs highlighting + (*)}% \else % \end{macrocode} % \changes{v1.9v}{1995/11/03}{(DPC) Use \cs{@shortvrbinfo}} % \begin{macrocode} - \@shortvrbinfo{Deleted }{#1 as}{\@empty\verb(*)}% + \@shortvrbinfo{Deleted }{#1 as}% + {\@empty\verb% % to fool emacs + % highlighting + (*)}% \rem@special{#1}% \global\catcode`#1\csname cc\string#1\endcsname % \end{macrocode} % \changes{v1.9e.2}{1994/02/07}{-js: Reset `cc`\protect\meta{c} in -% \cs{DeleteShortVerb}} -% We must not forget to reset "\cc\"\meta{c}, otherwise the check in -% "\MakeShortVerb" for a repeated definition will not work. +% in \cs{DeleteShortVerb}} +% We must not forget to reset |\cc\|\meta{c}, otherwise the check in +% |\MakeShortVerb| for a repeated definition will not work. % \begin{macrocode} \global \expandafter\let \csname cc\string#1\endcsname \relax \ifnum\catcode`#1=\active @@ -4446,7 +5040,7 @@ \csname ac\string#1\endcsname}% \endgroup \fi \fi} % \end{macrocode} -% \end{macro} +% \end{imacro} % % \begin{macro}{\@shortvrbinfo} % \changes{v1.9v}{1995/11/03}{(DPC) Macro added} @@ -4465,12 +5059,12 @@ % \begin{macro}{\add@special} % \changes{v1.7a}{1992/02/27}{Added for short verb facility.} % This helper macro adds its argument to the -% "\dospecials" macro which is conventionally used by verbatim macros +% |\dospecials| macro which is conventionally used by verbatim macros % to alter the catcodes of the currently active characters. We need -% to add "\do\"\meta{c} to the expansion of "\dospecials" after +% to add |\do\|\meta{c} to the expansion of |\dospecials| after % removing the character if it was already there to avoid multiple -% copies building up should "\MakeShortVerb" not be balanced by -% "\DeleteShortVerb" (in case anything that uses "\dospecials" cares +% copies building up should |\MakeShortVerb| not be balanced by +% |\DeleteShortVerb| (in case anything that uses |\dospecials| cares % about repetitions). % \begin{macrocode} \def\add@special#1{% @@ -4478,29 +5072,31 @@ \expandafter\gdef\expandafter\dospecials\expandafter {\dospecials \do #1}% % \end{macrocode} -% Similarly we have to add "\@makeother\"\meta{c} to "\@sanitize" -% (which is used in things like "\index" to re-catcode all special +% Similarly we have to add |\@makeother\|\meta{c} to |\@sanitize| +% (which is used in things like |\index| to re-catcode all special % characters except braces). % \begin{macrocode} \expandafter\gdef\expandafter\@sanitize\expandafter {\@sanitize \@makeother #1}} % \end{macrocode} % \end{macro} +% +% % \begin{macro}{\rem@special} % \changes{v1.7a}{1992/02/27}{Added for short verb facility.} -% The inverse of "\add@special" is slightly trickier. "\do" is +% The inverse of |\add@special| is slightly trickier. |\do| is % re-defined to expand to nothing if its argument is the character of % interest, otherwise to expand simply to the argument. We can then -% re-define "\dospecials" to be the expansion of itself. The space -% after "=`##1" prevents an expansion to "\relax"! +% re-define |\dospecials| to be the expansion of itself. The space +% after |=`##1| prevents an expansion to |\relax|! % \begin{macrocode} \def\rem@special#1{% \def\do##1{% \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}% \xdef\dospecials{\dospecials}% % \end{macrocode} -% Fixing "\@sanitize" is the same except that we need to re-define -% "\@makeother" which obviously needs to be done in a group. +% Fixing |\@sanitize| is the same except that we need to re-define +% |\@makeother| which obviously needs to be done in a group. % \begin{macrocode} \begingroup \def\@makeother##1{% @@ -4511,19 +5107,6 @@ %<*package> % \end{macrocode} % \end{macro} -% \begin{macro}{\MakeShortverb} -% \begin{macro}{\DeleteShortverb} -% \changes{v1.7a}{1992/02/27}{Added (from newdoc).} -% These commands from \textsf{newdoc} are now obsolete. -% \begin{macrocode} -\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb - syntax, this is obsolete ***}\MakeShortVerb} -\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb - syntax, this is obsolete ***}\DeleteShortVerb} -% \end{macrocode} -% \end{macro} -% \end{macro} -% % % % \subsection[Providing a checksum and character table] @@ -4535,7 +5118,7 @@ % \begin{macro}{\init@checksum} % The checksum mechanism works by counting backslashes in the % macrocode. This initializes the count (when called from -% "\StopEventually"). +% |\MaybeStop|). % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} % \begin{macrocode} \def\init@checksum{\relax @@ -4546,8 +5129,8 @@ % % \begin{macro}{\check@checksum} % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} -% This reports the sum compared with the value ("\bslash@cnt") the -% file advertises. It's called from "\Finale" (if that hasn't been +% This reports the sum compared with the value (|\bslash@cnt|) the +% file advertises. It's called from |\Finale| (if that hasn't been % re-defined). % \changes{v2.1f}{2016/02/12}{Suppress \cs{CheckSum} check if no checksum % is specified in the file} @@ -4581,12 +5164,12 @@ % \end{macro} % % -% \begin{macro}{\check@sum} +% \begin{tcounter}{\check@sum} % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} -% \begin{macro}{\bslash@cnt} +% \begin{tcounter}{\bslash@cnt} % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} -% We need to define counters, "\bslash@cnt" for the number of -% backslashes counted and "\check@sum" for the value advertised by the +% We need to define counters, |\bslash@cnt| for the number of +% backslashes counted and |\check@sum| for the value advertised by the % file if any. A negative value means there is no checksum checking which is the default. % \changes{v2.1f}{2016/02/12}{Suppress \cs{CheckSum} check if no checksum % is specified in the file} @@ -4594,17 +5177,17 @@ \newcount\check@sum \check@sum = \m@ne \newcount\bslash@cnt \bslash@cnt = \z@ % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{tcounter} +% \end{tcounter} % % -% \begin{macro}{\CheckSum} +% \begin{omacro}{\CheckSum} % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} -% This is the interface to setting "\check@sum". +% This is the interface to setting |\check@sum|. % \begin{macrocode} \def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack} % \end{macrocode} -% \end{macro} +% \end{omacro} % % % @@ -4617,13 +5200,13 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\CharacterTable} +% \begin{omacro}{\CharacterTable} % The user interface to the character table-checking does some -% "\catcode"ing and then compares the following table with the -% stored version. We need to have "@" of type ``other'' within the +% |\catcode|ing and then compares the following table with the +% stored version. We need to have |@| of type ``other'' within the % table since this is the way it is usually returned when reading % in a normal document. To nevertheless have a private letter we -% use "~" for this purpose. "~" does no harm as a ``letter'' as it +% use |~| for this purpose. |~| does no harm as a ``letter'' as it % comes last in the table and therefore will not gobble following % space. % \changes{v1.5m}{1989/09/20}{Macro added to check character translation @@ -4635,12 +5218,14 @@ % \begin{macrocode} \def\CharacterTable{\begingroup \CharTableChanges \character@table} % \end{macrocode} -% \end{macro} +% \end{omacro} +% % \def\MakePrivateLetters{\catcode`\~=11\makeatletter} +% % \begin{macro}{\character@table} % This does the work of comparing the tables and reporting the result. % Note that the following code is enclosed in a group -% with "~" catcoded to letter. +% with |~| catcoded to letter. % \begin{macrocode} \begingroup \catcode`\~=11 @@ -4659,22 +5244,22 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\CharTableChanges} +% \begin{omacro}{\CharTableChanges} % When the character table is read in we need to scan it with a -% fixed set of "\catcode"s. The reference table below was defined by -% assuming the normal "\catcode"s of \TeX{}, i.e.\ "@" is of type +% fixed set of |\catcode|s. The reference table below was defined by +% assuming the normal |\catcode|s of \TeX{}, i.e.\ |@| is of type % other and the only token of type ``letter'' are the usual letters % of the alphabet. If, for some reason, other characters are made -% ``letters'' then their "\catcode"s need to be restored before +% ``letters'' then their |\catcode|s need to be restored before % checking the table. Otherwise spaces in the table are gobbled and % we get the information that the tables are different, even if -% they are actually equal. For this reason "\CharTableChanges" can -% be set up to locally restore the "\catcode"s of such ``letters'' +% they are actually equal. For this reason |\CharTableChanges| can +% be set up to locally restore the |\catcode|s of such ``letters'' % to ``other''. % \begin{macrocode} \global\let\CharTableChanges\@empty % \end{macrocode} -% \end{macro} +% \end{omacro} % % \begin{macro}{\default~table} % Here's what the table {\em should\/} look like (modulo spaces). @@ -4719,34 +5304,40 @@ % % The code in this section allows index entries to refer to code line % numbers---the number of the first line of macrocode in the -% \textsf{macro} environment. +% \env{macro} environment. % % % \begin{macro}{\codeline@index} -% Indexing by code line is controlled by the "codeline@index" switch. +% Indexing by code line is controlled by the |codeline@index| switch. % \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} % \changes{v1.7a}{1992/02/24}{Documented code line no. support.} -% \begin{macro}{\CodelineNumbered} +% \begin{imacro}{\CodelineNumbered} % \changes{v1.8a}{1993/05/19}{Macro added} % \begin{macrocode} \newif\ifcodeline@index \codeline@indexfalse \let\CodelineNumbered\codeline@indextrue % \end{macrocode} +% \end{imacro} % \end{macro} -% \end{macro} +% % \begin{macro}{\codeline@wrindex} -% The code index entries are written out by "\special@index". If -% indexing is by code line this is "\let" to "\codeline@wrindex"; -% if indexing is by page it is just "\index". However, if -% "\nofiles" is given, we omit writing such an index entry at all. +% The code index entries are written out by |\special@index|. If +% indexing is by code line this is |\let| to |\codeline@wrindex|; +% if indexing is by page it is just |\index|. However, if +% |\nofiles| is given, we omit writing such an index entry at all. % \changes{v1.7j}{1992/08/14}{Added \cs{if@filesw}.} % \begin{macrocode} \def\codeline@wrindex#1{\if@filesw + \begingroup + \set@display@protect \immediate\write\@indexfile {\string\indexentry{#1}% - {\number\c@CodelineNo}}\fi} + {\number\c@CodelineNo}}% + \endgroup + \fi} % \end{macrocode} % \end{macro} +% % \begin{macro}{\special@index} % By default no index entries are written out. % \begin{macrocode} @@ -4756,8 +5347,8 @@ % \begin{macro}{\CodelineIndex} % \changes{v1.5u}{1989/11/14}{Added \cs{PageIndex} and % \cs{CodelineIndex} (Undoc)} -% This switches on use of the index file with "\makeindex", sets the -% switch to indicate code line numbering and defines "\special@index" +% This switches on use of the index file with |\makeindex|, sets the +% switch to indicate code line numbering and defines |\special@index| % appropriately. % \begin{macrocode} \def\CodelineIndex{\makeindex @@ -4765,17 +5356,17 @@ \let\special@index\codeline@wrindex} % \end{macrocode} % \end{macro} -% \begin{macro}{\PageIndex} -% "\PageIndex" is similar. +% \begin{imacro}{\PageIndex} +% |\PageIndex| is similar. % \begin{macrocode} \def\PageIndex{\makeindex \codeline@indexfalse \let\special@index\index} % \end{macrocode} -% \end{macro} +% \end{imacro} % % -% \begin{macro}{\c@CodelineNo} +% \begin{lcounter}{CodelineNo} % \changes{v1.5l}{1989/09/10}{Counter added to support code line % numbers} % \changes{v1.5y}{1990/02/24}{Default changed.} @@ -4785,7 +5376,8 @@ % \begin{macrocode} \newcount\c@CodelineNo \c@CodelineNo\z@ % \end{macrocode} -% \end{macro} +% \end{lcounter} +% % \begin{macro}{\theCodelineNo} % \changes{v1.7a}{1992/02/25}{Existing definition not overwritten.} % \changes{v1.7a}{1992/03/12}{Use \cs{reset@font} for NFSS.} @@ -4817,7 +5409,6 @@ % \end{macrocode} % \end{macro} % -% \DeleteShortVerb{\"} % % The following |\mathcode| definitions allow the characters % `|\|' @@ -4835,9 +5426,9 @@ % \texttt{\bslash mathcode}$\,$s % to work with any family assignments. For an example % see the article about the new font selection scheme.} -% particularly for something like $|\@abc|=1$. +% particularly for something like |\@abc=1|. % -% If an {\em old\/} version of the \textsf{german} package is in +% If an {\em old\/} version of the \pkg{german} package is in % force, then the `|"|' character is active and would upset the % definition of the \meta{16-bit number} quantities below, therefore % we change the |\catcode| of |"| inside a group, and use @@ -4907,8 +5498,8 @@ % % \subsection{Changing the \texttt{\protect\bslash catcode} of \%} % -% \begin{macro}{\MakePercentIgnore} -% \begin{macro}{\MakePercentComment} +% \begin{imacro}{\MakePercentIgnore} +% \begin{imacro}{\MakePercentComment} % And finally the most important bit: we change the |\catcode| % of `|%|' so that it is ignored (which is how we are able to % produce this document!). We provide two commands to do the actual @@ -4919,10 +5510,10 @@ \def\MakePercentIgnore{\catcode`\%9\relax} \def\MakePercentComment{\catcode`\%14\relax} % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{imacro} +% \end{imacro} % -% \begin{macro}{\DocInput} +% \begin{imacro}{\DocInput} % The two macros above are now used to define the |\DocInput| macro % which was introduced in version v1.5l (or so) of the \DOC{} % package. In older versions |\MakePercentIgnore| was placed @@ -4930,7 +5521,7 @@ % \begin{macrocode} \def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment} % \end{macrocode} -% \end{macro} +% \end{imacro} % % \subsection{GetFileInfo} % @@ -4951,6 +5542,779 @@ % \end{macrocode} % \end{macro} % + + + + +% \section{Integrating hypdoc} +% +% If the option \texttt{hyperref} is selected (which is the +% default), then we load the \pkg{hypdoc} package. We do that as +% late as possible so that we don't generate option clashes if it +% is also loaded in the preamble. That package currently changes +% more commands than it should (not knowing about their new +% definitions defined below) so we have to save and restore a few. +% +% Midterm all this code in \pkg{hypdoc} should be directly included +% in \DOC. For now, while they are separate we have to do this +% juggling. +% \begin{macrocode} +\AddToHook{begindocument/before}[doc/hyperref]{% + \ifdoc@hyperref +% \end{macrocode} +% Annoying to code around issue \#22 +% \begin{macrocode} + \expandafter\let\expandafter\doc@eoph@@k\csname doc.sty-h@@k\endcsname +% \end{macrocode} +% We require the package without any option so if it was already +% loaded there is no option clash. +% \begin{macrocode} + \RequirePackage{hypdoc} + \expandafter\let\csname doc.sty-h@@k\endcsname\doc@eoph@@k +% \end{macrocode} +% After \pkg{hypdoc} got loaded we need to undefine those macros +% again so that later on \texttt{Macro} and \texttt{Env} \DOC items +% appear to be undefined. +% \begin{macrocode} + \let\PrintDescribeMacro \@@PrintDescribeMacro + \let\PrintDescribeEnv \@@PrintDescribeEnv + \let\PrintMacroName \@@PrintMacroName + \let\PrintEnvName \@@PrintEnvName + \let\SpecialUsageIndex \@@SpecialUsageIndex + \let\SpecialEnvIndex \@@SpecialEnvIndex + \let\SortIndex \@@SortIndex + \let\DescribeMacro \@@DescribeMacro + \let\DescribeEnv \@@DescribeEnv +% \end{macrocode} +% The package adds new definitions for \cs{special@index} into +% \cs{CodelineIndex} and \cs{PageIndex} but since we are loading it +% very late we are already past them (in the preamble). So we test +% the final state and do it here, if necessary. +% \begin{macrocode} + \ifx\special@index\@gobble % do we write index entries at all? + \else + \ifcodeline@index + \let\special@index\HD@codeline@wrindex + \else + \let\special@index\HD@page@wrindex + \fi + \fi +% \end{macrocode} +% The \pkg{amsmath} documentation uses \cs{env} in headings and +% with \pkg{hyperref} enabled this causes trouble in bookmarks. +% \fmi{fix elsewhere eventually} +% \begin{macrocode} + \AddToHook{class/amsdtx/after}{% + \pdfstringdefDisableCommands{\let\env\@empty }}% +% \end{macrocode} +% That package also adds extra code into |\index| entries but it doesn't +% know about all the stuff that \DOC does (now). So we need to provide +% us with two helpers that handle the |\encapchar| case in some entries. +% \begin{macrocode} + \def\doc@providetarget{\HD@target}% + \def\doc@handleencap#1{\encapchar hdclindex{\the\c@HD@hypercount}{#1}}% +% \end{macrocode} +% If that package is not loaded these helpers do little to nothing. +% \begin{macrocode} + \else + \let\doc@providetarget\@empty + \def\doc@handleencap#1{\encapchar #1}% +% \end{macrocode} +% We define the next commands just in case the user changed the option +% \texttt{hyperref} from \texttt{true} to \texttt{false} without +% removing the auxiliary files. +% \begin{macrocode} + \def\hdclindex#1#2{\ifx\@nil#2\@nil\else\csname #2\expandafter\endcsname\fi}% + \def\hdpindex #1{\ifx\@nil#1\@nil\else\csname #1\expandafter\endcsname\fi}% +\fi +} +% \end{macrocode} +% +% +% +% +% +% \section{Integrating the \DOX package code} +% +% The code in this section is largely taken over from the \DOX package +% by Didier with only minor modifications (so far). This means it is a +% bit back and forth and both the code and the documentation need +% further updates. +% +% \subsection{\DOX environments} + +% \begin{macro}{\@doc@env,\@doc@env@} +% \fmi{original doc -- fix} +% \marg{are-we-macrolike}\marg{item}\marg{indextype}\marg{name}\\ +% In \texttt{doc.sty}, the \texttt{macro} and \texttt{environment} +% environments go through the \cs{m@cro@} macro which implements specific +% parts by testing a boolean condition as its first argument. This mechanism +% is not extensible, so I have to hack away a more generic version that +% would work for any new \texttt{dox} item, only which looks pretty much +% like the original one (with the addition of options management). +% +% First step is to see if we have a comma-separated list of names +% in |#3| and if so we call the macro doing the work individually +% for each +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +\long\def\@doc@env#1#2#3{ +% \end{macrocode} +% The |\endgroup| here closes the scanning of names (using special catcodes. +% \begin{macrocode} + \endgroup + \clist_map_inline:nn {#3} { \@doc@env@{#1}{#2}{##1} } +} + +\ExplSyntaxOff +% \end{macrocode} +% +% And here is the payload for each name from the given list: +% \begin{macrocode} +\long\def\@doc@env@#1#2#3{% + \topsep\MacroTopsep + \trivlist + \edef\saved@macroname{\string#3}% +% \end{macrocode} +% Since version 2.1g, \texttt{doc} creates a \cs{saved@indexname} command +% which in used by \cs{changes}. We now support that as well. The expansion of +% this command depends on whether the documented item is macrolike or not, +% which we don't know here (it's only know by \cs{NewDocElement}). That's why we +% need one specific command generating \cs{saved@indexname} the right way for +% every single item. These commands are +% named\cs{@Save\meta{item}IndexName}; +% they are technically part of the generated API, only not meant for public +% use. +% +% \fmi{above docu is no longer right (but code needs further changes +% anyway} +% +% |#1| is either \texttt{TT} (for true = macrolike) or \texttt{TF}. +% If true then we drop the first char from |\saved@macroname| and +% store the result in |\saved@indexname| and use the latter for +% sorting in the index. +% \begin{macrocode} + \if #1% + \edef\saved@indexname{\expandafter\@gobble\saved@macroname}% +% +% \end{macrocode} +% If the \DOC element described is macrolike but not a normal +% ``macro'' then its type should be recorded and this is the places +% where this happens. For macros (which should make up the bulk of +% these items we don't do this and for anything else that looks +% from an indexing perspective like a macro we don't do that either +% to keep the list of exceptions small. That would be the case if +% the indexing command |\Code|\meta{doc-element}|Index| is +% equivalent to \cs{CodeMacroIndex}. +% \begin{macrocode} + \expandafter\ifx + \csname Code#2Index\endcsname + \CodeMacroIndex + \else + \record@index@type@save + {\saved@indexname}{#2}% + \fi + \else + \let\saved@indexname\saved@macroname + \fi +% + \def\makelabel##1{\llap{##1}}% + \if@inlabel + \let\@tempa\@empty + \count@\macro@cnt + \loop\ifnum\count@>\z@ + \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne + \repeat + \edef\makelabel##1{\llap{\vtop to\baselineskip{\@tempa\hbox{##1}\vss}}}% + \advance\macro@cnt\@ne + \else + \macro@cnt\@ne + \fi + \ifdoc@noprint + \item + \else + \edef\@tempa{% + \noexpand\item[% +% \end{macrocode} +% The second notable modification to the original macro involves dynamically +% constructing the name of the print macro: +% \begin{macrocode} + \noexpand\doc@providetarget + \noexpand\strut + \noexpand\@nameuse{Print#2Name}{\saved@macroname}]}% + \@tempa + \fi + \ifdoc@noindex\else + \global\advance\c@CodelineNo\@ne +% \end{macrocode} +% and the third one involves dynamically constructing the name of the index +% macro: +% \begin{macrocode} + \csname SpecialMain#2Index\expandafter\endcsname + \expandafter{\saved@macroname}\nobreak + \global\advance\c@CodelineNo\m@ne + \fi +% \end{macrocode} +% Suppress further |\index| entries when we are within a +% \texttt{macrolike} environment. (There is no point doing that for +% non-\texttt{macrolike} environments are index entries are only +% generated for items starting with a backslash anyway. +% \fmi{fix} +% \begin{macrocode} + \if#1\expandafter\DoNotIndex \expandafter {\saved@macroname}\fi + \ignorespaces} +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% \begin{macro}{\doc@env} +% \marg{true-value}\marg{item}\oarg{options}\\ +% Handle optional arguments and call \cs{@doc@env}. Because environments can +% be nested, we can't rely on grouping for getting options default values. +% Hence, we need to reset the options at every call. +% \fmi{Use 2e interface for \cs{keys\_set:nn} when available} +% \begin{macrocode} +\def\doc@env#1#2[#3]{% + \@nameuse{doc@noprint\doc@noprintdefault}% + \@nameuse{doc@noindex\doc@noindexdefault}% + \csname keys_set:nn\endcsname{doc}{#3}% + \begingroup + \ifdoc@outer + \catcode`\\12 + \fi + \MakePrivateLetters + \@doc@env{#1}{#2}% +} +% \end{macrocode} +% \end{macro} + + + +% \subsection{\DOC descriptions} +% +% \begin{macro}{\@doc@describe} +% \marg{item}\marg{name}\\ +% \begin{macrocode} +\def\@doc@describe#1#2{% + \ifdoc@noprint\else + \marginpar{\raggedleft +% \end{macrocode} +% The hyperref target has to be in horizontal mode (which is the +% case if it is after the \cs{strut}). +% \begin{macrocode} + \strut + \doc@providetarget + \@nameuse{PrintDescribe#1}{#2}}% + \fi + \ifdoc@noindex\else + \@nameuse{Special#1Index}{#2}% + \fi + \@esphack + \endgroup + \ignorespaces} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\doc@describe} +% \marg{item}\oarg{options}\\ +% Handle optional arguments and call \cs{@doc@describe}. +% \fmi{Use 2e interface for \cs{keys\_set:nn} when available} +% \begin{macrocode} +\def\doc@describe#1[#2]{% + \leavevmode\@bsphack + \csname keys_set:nn\endcsname{doc}{#2}% + \@doc@describe{#1}} +% \end{macrocode} +% \end{macro} +% +% +% +% +% \subsection{API construction} +% +% +% \begin{macro}{\@temptokenb} +% A scratch register (which may have been defined elsewhere) +% \begin{macrocode} +\@ifundefined{temptokenb}{\newtoks\@temptokenb}{} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\doc@createspecialmainindex} +% \marg{item}\marg{idxtype}\marg{idxcat} +% \begin{macro}{\doc@createspecialmainmacrolikeindex} +% \marg{item}\marg{idxtype}\marg{idxcat}\\ +% \fmi{original doc -- fix} +% The ``macrolike'' version does something similar to |doc|'s +% \cs{SpecialIndex@} macro, but simplified. Let's just hope nobody will ever +% define \verb*|\ | or nonletter macros as macrolike \DOC elements\ldots +% \begin{macrocode} +\def\doc@createspecialindexes#1#2#3{% +% \end{macrocode} +% +% \begin{macrocode} + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% +% \end{macrocode} +% +% \begin{macrocode} + \@nameedef{SpecialMain#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\special@index{##1\noexpand\actualchar + {\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\encapchar main}% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{\the\@temptokenb\noexpand\levelchar + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\encapchar main}% + \fi + \noexpand\@esphack}% +% \end{macrocode} +% +% \begin{macrocode} + \@nameedef{Special#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{##1\noexpand\actualchar{\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\doc@handleencap{usage}}% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{\the\@temptokenb\noexpand\levelchar + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\doc@handleencap{usage}}% + \fi + \noexpand\@esphack}} +% \end{macrocode} +% +% \begin{macrocode} +\def\doc@createspecialmacrolikeindexes#1#2#3{% +% \end{macrocode} +% +% \begin{macrocode} + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% +% \end{macrocode} +% +% \begin{macrocode} + \@nameedef{Code#1Index}##1##2{% + \noexpand\@SpecialIndexHelper@##2\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\special@index{\noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\encapchar ##1}% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{\the\@temptokenb\noexpand\levelchar + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\encapchar ##1}% + \fi + \noexpand\fi + \noexpand\@esphack}% +% \end{macrocode} +% +% \begin{macrocode} + \@nameedef{SpecialMain#1Index}##1{% + \expandafter\noexpand\csname Code#1Index\endcsname + {main}{##1}}% +% \end{macrocode} +% +% \begin{macrocode} + \@nameedef{Special#1Index}##1{% + \noexpand\@SpecialIndexHelper@##1\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{\noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\doc@handleencap{usage}}% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{\the\@temptokenb\noexpand\levelchar + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\doc@handleencap{usage}}% + \fi + \noexpand\fi + \noexpand\@esphack}} +% \end{macrocode} +% \end{macro} +% \end{macro} + + + +% \begin{macro}{\doc@createdescribe} +% \marg{item} +% \begin{macrocode} +\def\doc@createdescribe#1{% + \@namedef{Describe#1}{% +% \end{macrocode} +% Because of the optional argument we have to set +% |\MakePrivateLetters| already before parsing that (fingers +% crossed). Otherwise incorrect but quite common usage, such as +% |\DescribeMacro\foo@bar| will break because the scan for the +% optional argument will tokenize the following input (i.e., |\foo| +% in that case) before the |@| sign becomes a letter. As a result +% |DescribeMacro| would receive only |\foo| as its argument. +% \begin{macrocode} + \begingroup + \MakePrivateLetters + \@ifnextchar[%] + {\doc@describe{#1}}{\doc@describe{#1}[]}}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\doc@createenv} +% \marg{item}\marg{envname} +% \begin{macrocode} +\def\doc@createenv#1#2#3{% + \@namedef{#3}{% + \@ifnextchar[%] + {\doc@env{#1}{#2}}{\doc@env{#1}{#2}[]}}% +% \end{macrocode} +% Instead of |\let|ting the end of the environment to +% |\endtrivlist| we use one level of expansion. This way any +% possible change in that environment (if that ever happens) is +% properly reflected. +% \begin{macrocode} + \@namedef{end#3}{\endtrivlist}% +% \expandafter\let\csname end#3\endcsname\endtrivlist +} +% \end{macrocode} +% \end{macro} + + +% +% \begin{macro}{\@nameedef} +% +% \begin{macrocode} +\def\@nameedef#1{\expandafter\edef\csname #1\endcsname} +% \end{macrocode} +% \end{macro} + +% +% \subsection{API creation} +% +% The whole user interface is created in one macro call. +% +%\begin{verbatim} +% defaults: +% +% idxtype = #3 +% idxgroup = #3s +% printtype = +%\end{verbatim} + + + +% \begin{macro}{\doc@declareerror} +% +% \begin{macrocode} +\def\doc@declareerror#1#2{% + \PackageError{doc}{Doc element '#1/#2' already defined?\@gobble}% + {There is already a definition for + '\string\Print#1Name',\MessageBreak + '\string\PrintDescribe#1' + or the environment '#2'.\MessageBreak + Maybe you are overwriting something by mistake!\MessageBreak + Otherwise use '\string\RenewDocElement' instead.}% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\doc@notdeclarederror} +% +% \begin{macrocode} +\def\doc@notdeclarederror#1#2{% + \PackageError{doc}{Doc element '#1/#2' unknown}% + {I expected an existing definition for + '\string\Print#1Name',\MessageBreak + '\string\PrintDescribe#1' and + the environment '#2' but\MessageBreak + not all of them are defined.\MessageBreak + Maybe you wanted to use + '\string\NewDocElement'?}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{imacro}{\NewDocElement} +% \oarg{options}\marg{name}\marg{envname} +% +% \begin{macrocode} +\newcommand\NewDocElement[3][]{% +% \end{macrocode} +% +% \begin{macrocode} + \@ifundefined{Print#2Name}% + {\@ifundefined{PrintDescribe#2}% + {\@ifundefined{#3}% + {\@ifundefined{end#3}% + {\@NewDocElement{#1}}% + \doc@declareerror + }\doc@declareerror + }\doc@declareerror + }\doc@declareerror + {#2}{#3}% +} +% \end{macrocode} +% \end{imacro} +% +% \begin{imacro}{\RenewDocElement} +% \oarg{options}\marg{name}\marg{envname} +% +% \begin{macrocode} +\newcommand\RenewDocElement[3][]{% +% \end{macrocode} +% +% \begin{macrocode} + \@ifundefined{Print#2Name}\doc@notdeclarederror + {\@ifundefined{PrintDescribe#2}\doc@notdeclarederror + {\@ifundefined{#3}\doc@notdeclarederror + {\@ifundefined{end#3}\doc@notdeclarederror + {\@NewDocElement{#1}}% + }% + }% + }% + {#2}{#3}% +} +% \end{macrocode} +% \end{imacro} +% +% +% \begin{macro}{\@NewDocElement} +% \marg{options}\marg{name}\marg{envname} +% +% \begin{macrocode} +\def\@NewDocElement#1#2#3{% +% \end{macrocode} +% +% \begin{macrocode} + \doc@macrolikefalse + \doc@topleveltrue +% \end{macrocode} +% +% \fmi{Use 2e interface for \cs{keys\_set:nn} when available} +% \begin{macrocode} + \def\doc@idxtype{#3}% + \def\doc@idxgroup{#3s}% + \let\doc@printtype\@empty + \csname keys_set:nn\endcsname{doc}{#1}% +% \end{macrocode} +% \begin{imacro}{\Print...Name} +% \marg{name} +% \fmi{extremely messy this with so many \cs{expandafter}s \ldots{} +% should reimplement in expl3} +% \begin{macrocode} + \ifx\doc@printtype\@empty + \@temptokena{}% + \else + \@temptokena\expandafter{\expandafter + \textnormal\expandafter{\expandafter + \space\expandafter + (\doc@printtype)}}% + \fi + \@nameedef{Print#2Name}##1{% + {\noexpand\MacroFont + \ifdoc@macrolike + \noexpand\string + \fi + ##1% + \the\@temptokena + }}% +% \end{macrocode} +% \end{imacro} +% +% \begin{imacro}{\PrintDescribe...} +% \marg{name} +% \begin{macrocode} + \expandafter\let\csname PrintDescribe#2\expandafter\endcsname + \csname Print#2Name\endcsname +% \end{macrocode} +% \end{imacro} +% +% \begin{imacro}{\SpecialMain...Index} +% \marg{name} +% \begin{imacro}{\Special...Index} +% \marg{name} +% \begin{macrocode} + \edef\doc@expr{% + \ifdoc@macrolike + \noexpand\doc@createspecialmacrolikeindexes + \else + \noexpand\doc@createspecialindexes + \fi + {#2}% + }% + \expandafter\expandafter\expandafter + \doc@expr + \expandafter\expandafter\expandafter + {\expandafter\doc@idxtype\expandafter}\expandafter + {\doc@idxgroup}% +% \end{macrocode} +% \end{imacro} +% \end{imacro} +% +% \begin{imacro}{\Describe...} +% \oarg{options}\marg{name} +% \begin{macrocode} + \doc@createdescribe{#2}% +% \end{macrocode} +% \end{imacro} +% +% \begin{environment}{\meta{DocElement}} +% \fmi{can't have formatting in argument -- fix} +% \oarg{options}\marg{name} +% \begin{macrocode} + \ifdoc@macrolike + \doc@createenv{TT}{#2}{#3}% + \else + \doc@createenv{TF}{#2}{#3}% + \fi +} +% \end{macrocode} +% \end{environment} +% \end{macro} + + + + + +% \subsection{Setting up the default \DOC elements} + +% \subsubsection{Macro facilities} +% +% Macros get only a single index entry (no index group, no index +% type) and they do not get any label either when printing in the margin. +% \begin{macrocode} +\NewDocElement[macrolike = true , + idxtype = , + idxgroup = , + printtype = + ]{Macro}{macro} +% \end{macrocode} + + +% \begin{macro}{SpecialMainIndex} +% +% In \DOC v2 we had \cs{SpecialMainIndex} and +% \cs{SpecialMainEnvIndex} but now with additional \DOC elements we +% always add the element name after ``\texttt{Main}'' so this would +% be \cs{SpecialMainMacroIndex}. We use |\def| not |\let| so any +% redefinition of |\SpecialMainMacroIndex| will be transparent. +% \begin{macrocode} +\def\SpecialMainIndex{\SpecialMainMacroIndex} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{SpecialUsageIndex} +% \DOC v2 also had \cs{SpecialUsageIndex} which is now called +% \cs{SpecialMacroIndex} generating the ``usage'' index entry for +% a macro. Again we provide that as an alias via |\def|. +% +% In fact the documentation of \DOC v2 claimed that one can use +% this for both macros and environments but that was never true as +% for environments the result was that the first character was +% dropped in sorting of the index. The correct way is to use +% \cs{SpecialEnvIndex} for this. +% \begin{macrocode} +\def\SpecialUsageIndex{\SpecialMacroIndex} +% \end{macrocode} +% \end{macro} +% + +% \begin{macro}{\SpecialIndex} +% \begin{macrocode} +\def\SpecialIndex {\CodeMacroIndex{code}} +% \end{macrocode} +% \end{macro} + + +% +% \subsubsection{Environment facilities} +% +% Providing documentation support for environments. Here we differ +% from \DOC V2 by marking the environments with ``(\textit{env.})'' +% when printing the name in the margin. +% \begin{macrocode} +\NewDocElement[macrolike = false , + idxtype = env. , + idxgroup = environments , + printtype = \textit{env.} + ]{Env}{environment} +% \end{macrocode} +% +% +% +% To be able to restore the definition after \pkg{hypdoc} is loaded +% we better save them here. We only load the package at the end of +% the preamble, but the user might do this earlier and then chaos +% is ensured. +% \begin{macrocode} + \let\@@PrintDescribeMacro \PrintDescribeMacro + \let\@@PrintDescribeEnv \PrintDescribeEnv + \let\@@PrintMacroName \PrintMacroName + \let\@@PrintEnvName \PrintEnvName + \let\@@SpecialUsageIndex \SpecialUsageIndex + \let\@@SpecialEnvIndex \SpecialEnvIndex + \let\@@SortIndex \SortIndex + \let\@@DescribeMacro \DescribeMacro + \let\@@DescribeEnv \DescribeEnv +% \end{macrocode} +% +% +% \section{Misc additions} + +% \begin{imacro}{\cs} +% \begin{macrocode} +\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}} +% \end{macrocode} +% \cls{amsdtx} has its own definition for \cs{cs} but that now +% gets overwritten because the class loads \pkg{doc} afterwards. So +% for now we reinstall it here. +% \fmi{fix elsewhere} +% \begin{macrocode} +\AddToHook{class/amsdtx/after}{% + \DeclareRobustCommand\cs[1]{% + \@boxorbreak{% + \ntt + \addbslash#1\@empty + \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil + }% + }% + \def\cn{\cs}% +} +% \end{macrocode} +% \end{imacro} + + % We can now finish the \texttt{docstrip} main module. % \begin{macrocode} %</package> @@ -4958,5 +6322,15 @@ % % % \Finale -% \PrintIndex \PrintChanges +% \PrintChanges +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput + +^^A Needed for emacs +^^A +^^A Local Variables: +^^A mode: latex +^^A coding: utf-8-unix +^^A End: diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx index c7480988b44..22c1f69aa01 100644 --- a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx +++ b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -935,7 +935,7 @@ % using*strange@programming<language> %\end{verbatim} % -%\StopEventually{% +%\MaybeStop{% %^^A \section{Conclusion} % \PrintIndex % \PrintChanges diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.ins b/Master/texmf-dist/source/latex-dev/base/docstrip.ins index e34281fc365..e2187594a44 100644 --- a/Master/texmf-dist/source/latex-dev/base/docstrip.ins +++ b/Master/texmf-dist/source/latex-dev/base/docstrip.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -52,7 +52,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -98,6 +98,7 @@ extension .ins) which are part of the distribution. \generate{\file{ltxdoc.cls}{\from{ltxdoc.dtx}{class}} + \file{ltxdoc.cfg}{\from{ltxdoc.dtx}{cfg}} } \generate{\file{doc.sty}{\from{doc.dtx}{package}} diff --git a/Master/texmf-dist/source/latex-dev/base/ec.ins b/Master/texmf-dist/source/latex-dev/base/ec.ins index 90b7b2e61f3..47823e7edf2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ec.ins +++ b/Master/texmf-dist/source/latex-dev/base/ec.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.dtx b/Master/texmf-dist/source/latex-dev/base/exscale.dtx index ea67cb6fb72..bc884c4db07 100644 --- a/Master/texmf-dist/source/latex-dev/base/exscale.dtx +++ b/Master/texmf-dist/source/latex-dev/base/exscale.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -106,7 +106,7 @@ % they are printed on another installation whereas when using the % package file they would come out the same on both sites. % -% \StopEventually{} +% \MaybeStop{} % % % \section{Implementation} diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.ins b/Master/texmf-dist/source/latex-dev/base/exscale.ins index cfd2c535a77..d202aad7cf3 100644 --- a/Master/texmf-dist/source/latex-dev/base/exscale.ins +++ b/Master/texmf-dist/source/latex-dev/base/exscale.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx index 1be2e16cc09..5f8983ed345 100644 --- a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx +++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -216,7 +216,7 @@ % % % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins index 95931970f47..b688cd66cfa 100644 --- a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins +++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx index 581cfeb7895..06af8feefd3 100644 --- a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx +++ b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -164,7 +164,7 @@ % \end{quote} % % -% \StopEventually{} +% \MaybeStop{} % % \section{The \texttt{docstrip} modules} % diff --git a/Master/texmf-dist/source/latex-dev/base/format.ins b/Master/texmf-dist/source/latex-dev/base/format.ins index eece2f57ef6..88d33d3c4e6 100644 --- a/Master/texmf-dist/source/latex-dev/base/format.ins +++ b/Master/texmf-dist/source/latex-dev/base/format.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -88,7 +88,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2015-2021 +Copyright (C) 2015-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -123,7 +123,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -174,6 +174,7 @@ the system are in the document `cfgguide.tex'. \from{lterror.dtx}{2ekernel} \from{ltpar.dtx}{2ekernel} \from{ltpara.dtx}{2ekernel} % L3 layer module + \from{ltmeta.dtx}{2ekernel} % L3 layer module \from{ltspace.dtx}{2ekernel} \from{ltlogos.dtx}{2ekernel} \from{ltfiles.dtx}{2ekernel} @@ -203,6 +204,7 @@ the system are in the document `cfgguide.tex'. \from{ltbibl.dtx}{2ekernel} \from{ltpage.dtx}{2ekernel} \from{ltclass.dtx}{2ekernel,tracerollback} + \from{ltkeys.dtx}{2ekernel} % L3 layer module \from{ltfilehook.dtx}{2ekernel} % L3 layer module \from{ltshipout.dtx}{2ekernel} % L3 layer module \from{ltoutput.dtx}{2ekernel} diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx index cc9f4da3cb1..78bb688f83d 100644 --- a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx +++ b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -65,7 +65,7 @@ % The default value of \emph{N} is 10. % The arguments must all be integers. % -% \StopEventually +% \MaybeStop % % First, we define three counters. The first two are defined % as raw TeX counters since multiplication and division must be diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.ins b/Master/texmf-dist/source/latex-dev/base/graphpap.ins index 65156ad9176..d82cbd66706 100644 --- a/Master/texmf-dist/source/latex-dev/base/graphpap.ins +++ b/Master/texmf-dist/source/latex-dev/base/graphpap.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx index acb5cf19670..0bf54b619a2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -164,7 +164,7 @@ % With \meta{test} as above, repeatedly executes \meta{while clause} % while the test remains true. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.ins b/Master/texmf-dist/source/latex-dev/base/ifthen.ins index 42e1d3f5d93..88047e94f05 100644 --- a/Master/texmf-dist/source/latex-dev/base/ifthen.ins +++ b/Master/texmf-dist/source/latex-dev/base/ifthen.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx index 1b8691d30fa..e056f8ffd78 100644 --- a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -379,8 +379,8 @@ % as these commands haven't been available in \textsf{inputenc} distributed % with older releases of \LaTeX{}. % - -% \StopEventually{} +% +% \MaybeStop{} % % \section{Announcing the files} % diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.ins b/Master/texmf-dist/source/latex-dev/base/inputenc.ins index 920a585bffc..adacf9efce8 100644 --- a/Master/texmf-dist/source/latex-dev/base/inputenc.ins +++ b/Master/texmf-dist/source/latex-dev/base/inputenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.dtx b/Master/texmf-dist/source/latex-dev/base/latex209.dtx index bf92f8ef1e8..768f7237a58 100644 --- a/Master/texmf-dist/source/latex-dev/base/latex209.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latex209.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -166,7 +166,7 @@ % \changes{v0.11}{1994/01/21}{Split package into head and tail.} % \changes{v0.23}{1994/05/11}{Added bezier option.} % -% \StopEventually{} +% \MaybeStop{} % % \section{Driver} % diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.ins b/Master/texmf-dist/source/latex-dev/base/latex209.ins index 33ebc2488c4..f530347a3cf 100644 --- a/Master/texmf-dist/source/latex-dev/base/latex209.ins +++ b/Master/texmf-dist/source/latex-dev/base/latex209.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx index 7d2290f4d8a..efdfa8c418f 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -471,7 +471,7 @@ % % % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins index 0b65114a2f9..42cb5885685 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins +++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -101,6 +101,7 @@ extension .ins) which are part of the distribution. \from{lterror.dtx} {latexrelease}% empty \from{ltpar.dtx} {latexrelease}% empty \from{ltpara.dtx} {latexrelease}% empty + \from{ltmeta.dtx} {latexrelease}% L3 layer module \from{ltspace.dtx} {latexrelease}% \from{ltlogos.dtx} {latexrelease}% L3 layer module \from{ltfiles.dtx} {latexrelease}% diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx index 7a97aa4318c..62fb097c0d2 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -84,7 +84,7 @@ % |\unrhd|~$\unrhd$ % \end{quote} % -% \StopEventually{} +% \MaybeStop{} % % \section{The \dst{} modules} % diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.ins b/Master/texmf-dist/source/latex-dev/base/latexsym.ins index 902bbfc9e8e..468afddd678 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexsym.ins +++ b/Master/texmf-dist/source/latex-dev/base/latexsym.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -87,7 +87,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/letter.dtx b/Master/texmf-dist/source/latex-dev/base/letter.dtx index 6beee81735a..4052c260c86 100644 --- a/Master/texmf-dist/source/latex-dev/base/letter.dtx +++ b/Master/texmf-dist/source/latex-dev/base/letter.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -45,7 +45,7 @@ %<*driver> \ProvidesFile{letter.drv} %</driver> - [2021/03/05 v1.3c + [2021/12/07 v1.3c %<+letter> Standard LaTeX document class] % \end{macrocode} % @@ -178,7 +178,7 @@ % \maketitle % \tableofcontents % -% \StopEventually +% \MaybeStop{} % % % \section{Initial Code} diff --git a/Master/texmf-dist/source/latex-dev/base/letter.ins b/Master/texmf-dist/source/latex-dev/base/letter.ins index 44777393eb6..c078dc59ce9 100644 --- a/Master/texmf-dist/source/latex-dev/base/letter.ins +++ b/Master/texmf-dist/source/latex-dev/base/letter.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx index 59c492836f9..4530d4b07ba 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -62,7 +62,7 @@ % % This section deals with counter and other variable allocation. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx index cda0fa160ad..9824ca539fd 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -106,7 +106,7 @@ % |\nocite{*}| is special: it tells \BibTeX{} to put the whole of a % collection of references into the bibliography. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/31}{Initial version of ltidxbib.dtx, diff --git a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx index 92d9228a8af..380be09b1f2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -212,7 +212,7 @@ % \meta{height} \& \meta{depth} = actual height and depth of box in new % position. % -% \StopEventually{} +% \MaybeStop{} % % \changes{v0.1e}{1994/03/02}{Remove need for drv file} % \changes{v0.1e}{1994/03/02}{Add 2ekernel module} diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index 06e0f437af1..0ff3f71162d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2021/08/25 v1.4f LaTeX Kernel (Class & Package Interface)] + [2021/12/09 v1.5a LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -338,7 +338,7 @@ % or the old name \cs{@ifpackagelater}. % \DescribeMacro\IfFormatAtLeastTF -% To test the format date use +% To test the format date use % \begin{quote} % |\IfFormatAtLeastTF{|\meta{date}|}{|^^A % \meta{true}|}{|\meta{false}|}| @@ -434,7 +434,7 @@ % standard (and other non-standard) distributions can put informative % strings in this argument. % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % @@ -1833,7 +1833,7 @@ %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease % \end{macrocode} -% +% % \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}% %<latexrelease> {\RequirePackageWithOptions}{Unused options issue}% @@ -2175,27 +2175,21 @@ % \begin{macrocode} \@ifl@aded\@currext\@currname % \end{macrocode} -% If the package is already loaded, check that there were no option -% clashes: -% \changes{v1.1b}{1998/05/07} -% {Modify help message for latex/2805} -% \begin{macrocode} - {\@if@ptions\@currext{\@currname}{#2}{}% - {\@latex@error - {Option clash for \@cls@pkg\space \@currname}% - {The package \@currname\space has already been loaded - with options:\MessageBreak - \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak - There has now been an attempt to load it - with options\MessageBreak - \space\space[#2]\MessageBreak - Adding the global options:\MessageBreak - \space\space - \@ptionlist{\@currname.\@currext},#2\MessageBreak - to your \noexpand\documentclass declaration may fix this.% - \MessageBreak - Try typing \space <return> \space to proceed.}}% - \@firstofone}% +% In the current preferred approach, a key family name will exist for +% processing using \pkg{ltkeys}. In that case, we replace the previous +% package options with with the new ones, then call the key handler. +% Otherwise, we use the more classical clash handler. +% \begin{macrocode} + {% + \@ifundefined{opt@fam@\@currname.\@currext} + {\@onefilewithoptions@clashchk{#2}} + {% + \@namedef{opt@\@currname.\@currext}{#2}% + \expandafter\expandafter\expandafter\ProcessKeyPackageOptions + \expandafter\expandafter\expandafter + [\csname opt@fam@\@currname.\@currext\endcsname]% + }% + }% {\makeatletter % \end{macrocode} % The next line seems to be necessary for 2.09 compatibility (the @@ -2298,6 +2292,34 @@ \@reset@ptions} % \end{macrocode} % +% \begin{macro}{\@onefilewithoptions@clashchk} +% If the package is already loaded, check that there were no option +% clashes. +% \changes{v1.1b}{1998/05/07} +% {Modify help message for latex/2805} +% \changes{v1.5a}{2021/11/30} +% {Separated out from \cs{@onefilewithoptions}} +% \begin{macrocode} +\def\@onefilewithoptions@clashchk#1{% + \@if@ptions\@currext{\@currname}{#1}{}% + {\@latex@error + {Option clash for \@cls@pkg\space \@currname}% + {The package \@currname\space has already been loaded + with options:\MessageBreak + \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak + There has now been an attempt to load it + with options\MessageBreak + \space\space[#1]\MessageBreak + Adding the global options:\MessageBreak + \space\space + \@ptionlist{\@currname.\@currext},#1\MessageBreak + to your \noexpand\documentclass declaration may fix this.% + \MessageBreak + Try typing \space <return> \space to proceed.}}% + \@firstofone} +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} \let\@currpkg@reqd\@empty % \end{macrocode} @@ -2622,7 +2644,7 @@ %<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} -% +% % \begin{macrocode} \@onlypreamble\AtBeginDocument % \end{macrocode} @@ -2826,7 +2848,7 @@ % \end{macrocode} % % \changes{v1.3m}{2020-08-08}{define \cs{q@curr@file} directly as the -% quotes have already been removed (gh/220)} +% quotes have already been removed (gh/220)} % \begin{macrocode} \gdef\filec@ntents#1{% \set@curr@file{\filec@ntents@checkdir#1}% diff --git a/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx index 04be2abfbfd..bf7ae4ea246 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx @@ -2,7 +2,7 @@ % % Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle % Copyright (C) 2004-2008 Frank Mittelbach, The LaTeX3 Project -% Copyright (C) 2009-2021 +% Copyright (C) 2009-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -34,8 +34,8 @@ %%% From File: ltcmd.dtx % % \begin{macrocode} -\def\ltcmdversion{v1.0h} -\def\ltcmddate{2021-08-30} +\def\ltcmdversion{v1.0j} +\def\ltcmddate{2021-12-31} % \end{macrocode} % %<*driver> @@ -67,7 +67,7 @@ % documentation for \pkg{ltcmd} is provided as part of \texttt{usrguide3}. Here, % additional material aimed at programmers is provided % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<@@=cmd> @@ -626,6 +626,8 @@ % \end{macro} % % \begin{macro}{\@@_start_aux:NNnnnn, \@@_start_aux:ccnnnn} +% \changes{v1.0i}{2021/12/02} +% {Correct defaults for optional arguments in end-of-environment code (gh/712)} % This sets up a few variables to minimize the boilerplate code % included in all \pkg{xparse}-defined commands. It then runs the % grabbers~|#4|. Again, the argument specification |#1| is only for @@ -639,8 +641,6 @@ \tl_set:Nn \l_@@_defaults_tl {#5} \tl_set:Nn \l_@@_process_all_tl {#6} #4 - \bool_if:NT \l_@@_environment_bool - { \exp_args:No \@@_set_environment_end:n \l_@@_environment_str } \@@_run_code: } \cs_generate_variant:Nn \@@_start_aux:NNnnnn { cc } @@ -648,6 +648,8 @@ % \end{macro} % % \begin{macro}{\@@_run_code:} +% \changes{v1.0i}{2021/12/02} +% {Correct defaults for optional arguments in end-of-environment code (gh/712)} % After arguments are grabbed, this function is responsible for % inserting default values, running processors, and finally doing % \cs{group_align_safe_end:} as promised, and running the code. @@ -656,6 +658,8 @@ { \tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: } \tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: } + \bool_if:NT \l_@@_environment_bool + { \exp_args:No \@@_set_environment_end:n \l_@@_environment_str } \group_align_safe_end: \conditionally@traceon \exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl @@ -2348,15 +2352,17 @@ % Now just print everything in the required format. The auxiliary % \cs{@@_split_signature:n} stores a ready-to-print token list in % \cs{l_@@_tmpa_tl}, so we ust use that here: +% \changes{v1.0j}{2021/13/31} +% {Make \cs{ShowCommand} stop for interaction} % \begin{macrocode} \cs_new_protected:Npn \@@_show_command_aux:nNNn #1 #2 #3 #4 { \@@_split_signature:n {#4} - \iow_term:x + \tl_show:x { - > ~ \token_to_str:N #2 = #1: \iow_newline: + \token_to_str:N #2 = #1: \iow_newline: \tl_use:N \l_@@_tmpa_tl - -> \cs_replacement_spec:N #3 . + -> \cs_replacement_spec:N #3 } } % \end{macrocode} @@ -2367,15 +2373,17 @@ % |\ShowCommand\foo| is used (if |foo| is an environment), we show % |\endfoo| as well, and when |\ShowCommand\endfoo| is used, change % that to |\ShowCommand\foo| and do the same. +% \changes{v1.0j}{2021/13/31} +% {Make \cs{ShowCommand} stop for interaction} % \begin{macrocode} \cs_new_protected:Npn \@@_show_environment:N #1 { \exp_after:wN \@@_show_environment:Nnnw #1 \q_@@ - \iow_term:x + \tl_show:x { - > ~ \token_to_str:N \end { \cs_to_str:N #1 } : \iow_newline: + \token_to_str:N \end { \cs_to_str:N #1 } : \iow_newline: -> \exp_args:Nc \cs_replacement_spec:N - { environment~ \cs_to_str:N #1 ~end~aux~ } . + { environment~ \cs_to_str:N #1 ~end~aux~ } } } \cs_new_protected:Npn \@@_show_environment:Nnnw #1 #2 #3 #4 \q_@@ diff --git a/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx b/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx index 208f7c3d22c..ccb5a35a712 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx @@ -270,7 +270,7 @@ % If you do that then both hooks automatically work and are patched % into the right places. % -% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % % @@ -1394,3 +1394,12 @@ % % \Finale % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput + +^^A Needed for emacs +^^A +^^A Local Variables: +^^A mode: latex +^^A coding: utf-8-unix +^^A End: diff --git a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx index d65b3aee94f..5ebe256c75d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -66,7 +66,7 @@ % This section defines a number of control structure macros, such as % while-loops and for-loops. % -% \StopEventually{} +% \MaybeStop{} % % \begin{oldcomments} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx index 39fb47728d3..ffe2265ac39 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -124,7 +124,7 @@ % the default for \meta{format}. % Star form omits redefining the print representation. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx index 6c85ca915d2..3a92e827fe4 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -96,7 +96,7 @@ % % This section contains commands used in defining other macros. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx index 36a1ca616cd..16a2ed9e681 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -37,7 +37,7 @@ %<*driver> % \fi \ProvidesFile{ltdirchk.dtx} - [2021/01/15 v1.3a LaTeX Kernel (System Dependent Parts)] + [2021/12/11 v1.3a LaTeX Kernel (System Dependent Parts)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdirchk.dtx} @@ -206,12 +206,26 @@ % error messages that use the default settings with a current version of % \TeX, but this should not cause any confusion we hope. % -% \StopEventually{} +% \MaybeStop{} % % \section{Initialization} % As this file is read at a very early stage, some definitions that % are normally considered to be part of the format must be made here. % +% Most such definitions are repeated later in the ``right'' place, +% usually (but not always) with different implementations. To be able +% to spot this more easily if you look into the file +% \texttt{latex.ltx} (which is stripped of comments) we add some +% comment lines to that effect that survive the stripping process by +% \texttt{docstrip}. +% \changes{v1.3a}{2021/12/11}{Add comment lines into latex.ltx to +% indicate temp definitions that are later overwritten (gh/725)} +% \begin{macrocode} +%<*dircheck> +%% ---- START temporary definitions for bootstrapping; later overwritten ---- +%</dircheck> +% \end{macrocode} +% % \subsection{INITEX} % \changes{v0.2i}{1994/01/25} % {Protect against looping on \cs{@@input} and \cs{@@end}.} @@ -1007,6 +1021,7 @@ % \end{macro} % % \begin{macrocode} +%% ---- END temporary definitions for bootstrapping ---- %</dircheck> % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex-dev/base/lterror.dtx b/Master/texmf-dist/source/latex-dev/base/lterror.dtx index 10d93a1dbd1..b302a9a74c0 100644 --- a/Master/texmf-dist/source/latex-dev/base/lterror.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lterror.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -91,7 +91,7 @@ % % This section defines \LaTeX's error commands. % -% \StopEventually{} +% \MaybeStop{} % % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx index 021edc644c3..e6a83d57250 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2021 +% Copyright (C) 2019-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltexpl.dtx} - [2021/04/20 v1.3c LaTeX Kernel (expl3-dependent code)] + [2022/01/06 v1.3e LaTeX Kernel (expl3-dependent code)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltexpl.dtx} @@ -57,7 +57,7 @@ % % \section{\pkg{expl3}-dependent code} % -% \StopEventually{} +% \MaybeStop{} % % \changes{v0.0}{2019-10-02}{Initial version} % @@ -387,4 +387,127 @@ % \end{macrocode} % % +% +% +% +% +% \section{Document-level command names for \pkg{expl3} functions} +% +% Current home for L3 programing layer functions that we make +% directly available at the document level. This section may need +% to be moved later (after \cs{NewDocumentCommand} is defined in +% case we want to use that in the setup). +% +% +% \DescribeMacro\fpeval +% The expandable command \cs{fpeval} takes as its argument a +% floating point expression and produces a result using the normal +% rules of mathematics. As this command is expandable it can be +% used where \TeX{} requires a number and for example within a +% low-level \cs{edef} operation to give a purely numerical +% result. See \texttt{usrguide3} for further explanation. +% +% \DescribeMacro\inteval +% \DescribeMacro\dimeval +% \DescribeMacro\skipeval +% The expandable command \cs{inteval} takes as its argument an +% integer expression and produces a result using the normal rules +% of mathematics. The operations recognised are |+|, |-|, |*| and +% |/| plus parentheses. Division occurs with \emph{rounding}, and +% ties are rounded away from zero. As this command is expandable it +% can be used where \TeX{} requires a number and for example within +% a low-level \cs{edef} operation to give a purely numerical +% result. See \texttt{usrguide3} for further explanation. +% \cs{dimeval} and \cs{skipeval} are similar, but generate fixed and +% rubber length values, respectively. +% +% +% +% \begin{macro}{\fpeval,\inteval,\dimeval,\skipeval} +% A document level wrapper around the code level function for +% floating point calculations. +% \changes{v1.3d}{2021/11/30}{Moved over from \texttt{xfp} package (gh/711)} +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2022/06/01}% +%<latexrelease> {\fpeval}{fp and int calculations}% +\ExplSyntaxOn +\cs_new_eq:NN \fpeval \fp_eval:n +% \end{macrocode} +% And a few more, this time wrappers around the e\TeX{} primitives. +% \begin{macrocode} +\cs_new_eq:NN \inteval \int_eval:n +% \end{macrocode} +% +% \changes{v1.3d}{2021/12/07}{Added \cs{dimeval} and \cs{skipeval} (gh/711)} +% \begin{macrocode} +\cs_new_eq:NN \dimeval \dim_eval:n +\cs_new_eq:NN \skipeval \skip_eval:n +\ExplSyntaxOff +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\fpeval}{fp and int calculations}% + +%<latexrelease> +%<latexrelease>\let\fpeval\@undefined +%<latexrelease>\let\inteval\@undefined +%<latexrelease>\let\dimeval\@undefined +%<latexrelease>\let\skipeval\@undefined +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% +% \DescribeMacro\UseName +% \DescribeMacro\ExpandArgs +% When declaring new commands with \cs{NewDocumentCommand} or +% \cs{NewCommandCopy} or similar, it is sometimes necessary to +% ``construct'' the csname. As a general mechanism the L3 +% programming layer has \cs{exp\_args:N...} for this, but there is +% no mechanism for it if \cs{ExplSyntaxOn} is not active. We +% therefore offer a few of these commands also with CamelCase names. +% +% +% \begin{macro}{\UseName,\ExpandArgs} +% A document wrapper for changing arguments to cs names for use +% with \cs{NewDocumentCommand} and similar functions. +% +% \changes{v1.3d}{2021/12/28}{Added document level names for \cs{exp\_args:Nc} and the like (gh/735)} +% \changes{v1.3e}{2022/01/06}{Adjust document level names for \cs{exp\_args:Nc} and the like (gh/735)} +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2022/06/01}% +%<latexrelease> {\ExpandArgs}{Some pre-expansion commands}% +\ExplSyntaxOn +\cs_new_eq:NN \UseName \use:c +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \ExpandArgs #1 + { + \cs_if_exist_use:cF { exp_args:N #1 } + { \msg_expandable_error:nnn { kernel } { unknown-arg-expansion } {#1} } + } +\msg_new:nnn { kernel } { unknown-arg-expansion } + { Unknown~arg~expansion~"#1" } +\ExplSyntaxOff +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\ExpandArgs}{Some pre-expansion commands}% + +%<latexrelease> +%<latexrelease>\let\UseName\@undefined +%<latexrelease>\let\ExpandArgs\@undefined +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% % \Finale diff --git a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx index 000f4d8c2a2..533aacbf2ba 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020-2021 +% Copyright (C) 2020-2022 % Frank Mittelbach, Phelype Oleinik & LaTeX Team % % This file is part of the LaTeX base system. @@ -471,7 +471,7 @@ % the level value and search further for \texttt{LEVEL} with that value % which should then be the \texttt{START} level of the file you are in. % -% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % % \section{The Implementation} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx index 4c24716df65..9b31b50197e 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -106,7 +106,7 @@ % If the file exists on the system, execute \emph{then} and input % \emph{NAME} otherwise execute \emph{else}. % -% \StopEventually{} +% \MaybeStop{} % % \changes{v1.0a}{1994/03/07}{Initial version, split from latex.dtx} % \changes{v1.0a}{1994/03/07}{Long lines wrapped to 72 columns} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx index 40017a205a4..46c7ded4aac 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltfinal.dtx} - [2021/09/06 v2.2q LaTeX Kernel (Final Settings)] + [2021/12/07 v2.2q LaTeX Kernel (Final Settings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -57,11 +57,14 @@ % % % \section{Final settings} -% This section contains the final settings for \LaTeX. It initializes -% some debugging and typesetting parameters, sets the default -% |\catcode|s and uc/lc codes, and inputs the hyphenation file. % -% \StopEventually{} +% This section contains the final settings for \LaTeX. It initializes +% some debugging and typesetting parameters, sets the default +% |\catcode|s and uc/lc codes, and inputs the hyphenation file. +% +% +% +% \MaybeStop{} % % \changes{v0.1a}{1994/03/07}{Initial version, split from latex.dtx} % \changes{v0.1a}{1994/03/07}{Remove oldcomments environment} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx index ac3b6418171..8b5b92759a2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -83,7 +83,7 @@ % For example, `pht' specifies that the float can appear in any of % three locations: page, here or top. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx index 6c4ec4b3d16..64064abcb53 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -271,7 +271,7 @@ % amstex.sty} is used as this version can cause space to be removed % immediately before the |\/|. % -% \StopEventually{} +% \MaybeStop{} % % % \section{The implementation} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx index 86c84b111fb..843e8b544c5 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2021 +% Copyright (C) 2019-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -66,7 +66,7 @@ % % % -% \StopEventually{} +% \MaybeStop{} % % \changes{v1.0h}{2020/12/04}{Reorganized the rollback data} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx index 1f30372d063..d013ec0ecbc 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -76,7 +76,7 @@ % completely accurate. % \end{quote} % -% \StopEventually{} +% \MaybeStop{} % % \changes{v3.0v}{1998/08/17}{(RmS) Documentation fixes.} % \changes{v3.0j}{1995/10/22}{(RmS) New size function macro @@ -2257,3 +2257,13 @@ % % \Finale % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput + +^^A Needed for emacs +^^A +^^A Local Variables: +^^A mode: latex +^^A coding: utf-8-unix +^^A End: + diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx index 03be855127d..09f43a0d941 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -82,7 +82,7 @@ % kernel and made available via \textsf{latexrelease} package so that % backward compatibility remains ensured for very old documents. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v3.0b}{1995/06/15} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx index 4f2cabd613b..65bc40803e9 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -77,7 +77,7 @@ % completely accurate. % \end{quote} % -% \StopEventually{} +% \MaybeStop{} % % \section{Interface Commands} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx index f817fdd8473..12e3b6289be 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -70,7 +70,7 @@ % distribution, or \emph{The \LaTeX\ Companion} for higher level % documentation of these commands. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v3.0i}{1998/08/17}{(RmS) Minor documentation fixes.} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx index f562a4fa907..699fd2c5943 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -138,7 +138,7 @@ % \end{description} % % -% \StopEventually{} +% \MaybeStop{} % % \section{A driver for this document} % diff --git a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx index 5b3d80e9844..e07658fa88d 100644 --- a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020-2021 +% Copyright (C) 2020-2022 % Frank Mittelbach, Phelype Oleinik & LaTeX Team % % This file is part of the LaTeX base system. @@ -32,27 +32,12 @@ % % \begin{macrocode} \def\lthooksversion{v1.0s} -\def\lthooksdate{2021/09/28} +\def\lthooksdate{2022/01/06} % \end{macrocode} % %<*driver> \documentclass{l3doc} -% bug fix fo l3doc.cls -\ExplSyntaxOn -\cs_set_protected:Npn \__codedoc_macro_typeset_one:nN #1#2 - { - \vbox_set:Nn \l__codedoc_macro_box - { - \vbox_unpack_drop:N \l__codedoc_macro_box - \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 - \MacroFont % <----- without it the \ is in lmr10 if a link is made - \ - } } - } - \int_incr:N \l__codedoc_macro_int - } -\ExplSyntaxOff \providecommand\InternalDetectionOff{} \providecommand\InternalDetectionOn{} @@ -798,6 +783,7 @@ % \begin{function}{\ShowHook,\LogHook} % \begin{syntax} % \cs{ShowHook} \Arg{hook} +% \cs{LogHook} \Arg{hook} % \end{syntax} % Displays information about the \meta{hook} such as % \begin{itemize} @@ -1096,6 +1082,7 @@ % \begin{function}{\hook_show:n,\hook_log:n} % \begin{syntax} % \cs{hook_show:n} \Arg{hook} +% \cs{hook_log:n} \Arg{hook} % \end{syntax} % Displays information about the \meta{hook} such as % \begin{itemize} @@ -1502,9 +1489,6 @@ % Like \cs{AtBeginDocument} but for the \hook{enddocument} hook. % \end{function} % -% There is also \cs{AtBeginDvi} which is discussed in conjunction -% with the shipout hooks. -% % \bigskip % % The few hooks that existed previously in \LaTeXe{} used internally @@ -1962,7 +1946,7 @@ % \end{description} % % -% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % % \section{The Implementation} @@ -2219,7 +2203,7 @@ % A token list holding the relation between \meta{label1} and % \meta{label2} in the \meta{hook}. The \meta{labels} are lexically % (reverse) sorted to ensure that two labels always point to the same -% token list. For global rules, the \meta{hook} name is |??|. +% token list. For global rules, the \meta{hook} name is \texttt{??}. % % \item[\cs{@@\textvisiblespace\meta{hook}}] The code that is actually executed % when the hook is called in the document is stored in this token @@ -3589,7 +3573,7 @@ % expansion in the code later on. % % \cs{@@\textvisiblespace??} isn't used, but it has to be defined to trick -% the code into thinking that \verb=??= is actually a hook. +% the code into thinking that \texttt{??} is actually a hook. % \begin{macrocode} \prop_new:c {g_@@_??_code_prop} \prop_new:c {@@~??} @@ -4169,7 +4153,7 @@ % \meta{hook-code-plist}. We are about to apply the next rule and % enter it into the data structure. \cs{@@_apply_label_pair:nnn} will % just call \cs{@@_label_if_exist_apply:nnnF} for the \meta{hook}, and -% if no rule is found, also try the \meta{hook} name \verb=??= +% if no rule is found, also try the \meta{hook} name \texttt{??} % denoting a default hook rule. % % \cs{@@_label_if_exist_apply:nnnF} will check if the rule exists for @@ -4286,7 +4270,7 @@ % out to be a real issue, we can improve the code. % % Here the code is removed from \cs{l_@@_cur_hook_tl} rather than -% \verb=#3= because the latter may be \verb=??=, and the default +% \verb=#3= because the latter may be \texttt{??}, and the default % hook doesn't store any code. Removing it instead from \cs{l_@@_cur_hook_tl} % makes the default rules \verb=->= and \verb=<-= work properly. % \begin{macrocode} @@ -4535,7 +4519,7 @@ % \meta{inline function} is executed with |#1|${}={}$\meta{relation}, % |#2|${}={}$\meta{label_1}\verb=|=\meta{label_2}, % and |#3|${}={}$\meta{hook} (the latter may be the argument |#1| to -% \cs{@@_list_rules:nn}, or |??| if it is a default rule). +% \cs{@@_list_rules:nn}, or \texttt{??} if it is a default rule). % \begin{macrocode} \cs_new_protected:Npn \@@_list_rules:nn #1 #2 { @@ -5596,4 +5580,10 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +^^A Needed for emacs +^^A +^^A Local Variables: +^^A mode: latex +^^A coding: utf-8-unix +^^A End: diff --git a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx index 9244db06423..b7cede11750 100644 --- a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -65,7 +65,7 @@ % of \texttt{hyphen.ltx}. See the comments below for additional % information. % -% \StopEventually{} +% \MaybeStop{} % % To produce the printed version of this file the following code % is used. It can be extracted with the \dst{} program, or one can run diff --git a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx index 75a80cd4390..395fe839759 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -68,7 +68,7 @@ % % \DescribeMacro{\glossary} Make a glossary entry for |#1|. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/31}{Initial version of ltidxbib.dtx, diff --git a/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx b/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx new file mode 100644 index 00000000000..3c58585de92 --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx @@ -0,0 +1,454 @@ +% \iffalse meta-comment +% +% Copyright (C) 2021-2022 +% The LaTeX Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% +% \iffalse +%%% From File: ltkeys.dtx +% +%<*driver> +% \fi +\ProvidesFile{ltkeys.dtx} + [2021/11/30 v1.0a LaTeX Kernel (Kevyal options)] +% \iffalse +\documentclass{l3doc} +\GetFileInfo{ltkeys.dtx} +\title{\filename} +\date{\filedate} +\author{% + \LaTeX{} Team} + +\begin{document} + \maketitle + \DocInput{ltkeys.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Creating and using keyval options} +% +% As with any key--value input, using key--value pairs as package or +% class options has two parts: creating the key options and setting (using) +% them. Options created in this way \emph{may} be used after package loading +% as general key--value settings: this will depend on the nature of the +% underlying code. +% +% \begin{function}{\DeclareKeys} +% \begin{syntax} +% \cs{DeclareKeys} \oarg{family} \marg{declarations} +% \end{syntax} +% Creates a series of options from a comma-separated \meta{declarations} list. +% Each entry in this list is a key--value pair, with the \meta{key} having one +% or more \meta{properties}. A small number of \enquote{basic} +% \meta{properties} are described below. The full range of properties, +% provided by \pkg{l3keys}, can also be used for more powerful processing. +% See \texttt{interface3} for the full details. +% +% The basic properties provided here are +% \begin{itemize} +% \item \texttt{.if} --- sets a \TeX{} \cs{if...} switch +% \item \texttt{.store} --- stores a value in a macro +% \item \texttt{.usage} -- defines whether the option can be given only +% when loading (\texttt{load}), in the preamble (\texttt{preamble}) or +% has no limitation on scope (\texttt{general}) +% \end{itemize} +% The part of the \meta{key} before the \meta{property} is the \meta{name}, +% with the \meta{value} working with the \meta{property} to define the +% behaviour of the option. +% +% For example, with +% \begin{verbatim} +% \DeclareKeys[mypkg] +% { +% draft.if = @mypkg@draft , +% draft.usage = preamble , +% name.store = \@mypkg@name , +% name.usage = load , +% second-name.store = \@mypkg@other@name +% } +% \end{verbatim} +% three options would be create. The option \texttt{draft} can be given +% anywhere in the preamble, and will set a switch called \cs{if@mypkg@draft}. +% The option \texttt{name} can only be given during package loading, and will +% save whatever value it is given in \cs{@mypkg@name}. Finally, the option +% \texttt{second-name} can be given anywhere, and will save its value in +% \cs{@mypkg@other@name}. +% +% Keys created \emph{before} the use of +% \cs{ProcessKeyOptions}/\cs{ProcessKeyPackageOptions} act as package options. +% \end{function} +% +% \begin{function}{\ProcessKeyOptions} +% \begin{syntax} +% \cs{ProcessKeyOptions} \oarg{family} +% \end{syntax} +% The \cs{ProcessKeyOptions} function is used to check the current +% option list against the keys defined for \meta{family}. Global (class) +% options and local (package) options are checked when this function +% is called in a package. +% \end{function} +% +% \begin{function}{\ProcessKeyPackageOptions} +% \begin{syntax} +% \cs{ProcessKeyPackageOptions} \oarg{family} +% \end{syntax} +% This function works in a similar manner to \cs{ProcessKeyOptions}. +% When used in a package, \cs{ProcessKeyPackageOptions} +% will not examine any global (class) class options available. In contrast, +% \cs{ProcessKeyOptions} does parse class options (in common with the +% classical \cs{ProcessOptions} command). +% \end{function} +% +% \begin{function}{\SetKeys} +% \begin{syntax} +% \cs{SetKeys} \oarg{family} \Arg{keyvals} +% \end{syntax} +% Sets (applies) the explicit list of \meta{keyvals} for the \meta{family}: +% it the latter is not given, the value of \cs{@currname} used. This command +% may be used within a package to set options before or after using +% \cs{ProcessKeyOptions}/\cs{ProcessKeyPackageOptions}. +% \end{function} +% +% \StopEventually{} +% +% \subsection{Implementation of \pkg{ltkeys}} +% +% \begin{macrocode} +%<@@=keys> +% \end{macrocode} +% +% \begin{macrocode} +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +\cs_generate_variant:Nn \clist_put_right:Nn { Nv } +% \end{macrocode} +% +% \begin{macro}{\l_@@_options_clist} +% A single list is used for all options, into which they are collected +% before processing. +% \begin{macrocode} +\clist_new:N \l_@@_options_clist +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\l_@@_options_loading_bool} +% Used to indicate we are in the loading phase: controls the outcome +% of warnings. +% \begin{macrocode} +\bool_new:N \l_@@_options_loading_bool +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_options:Nn, \@@_options:NV} +% \begin{macro}{\@@_options_end:} +% The main function calls functions to collect up the global and local +% options into \cs{l_@@_options_clist} before calling the +% underlying functions to actually do the processing. So that a suitable +% message is produced if the option is unknown, the special +% \texttt{unknown} key is set if it does not already exist for the +% current family, and is cleaned up afterwards if required. To allow +% the \LaTeXe{} layer to know this mechanism is active, and to deal +% with the key family not matching the file name, we store the family +% in all cases. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options:Nn #1#2 + { + \cs_gset_nopar:cpn { opt@fam@\@currname.\@currext } {#2} + \cs_set_protected:Npn \@@_option_end: { } + \clist_clear:N \l_@@_options_clist + \@@_options_global:Nn #1 {#2} + \@@_options_local: + \keys_if_exist:nnF {#2} { unknown } + { + \keys_define:nn {#2} + { + unknown .code:n = + { + \msg_error:nnxx { keys } { option-unknown } + { \l_keys_key_str } { \@currname } + } + } + \cs_set_protected:Npn \@@_option_end: + { \keys_define:nn {#2} { unknown .undefine: } } + } + \bool_set_true:N \l_@@_options_loading_bool + \keys_set:nV {#2} \l_@@_options_clist + \bool_set_false:N \l_@@_options_loading_bool + \cs_set_eq:NN \@unprocessedoptions \scan_stop: + \@@_option_end: + \@@_options_loaded:n {#2} + } +\cs_generate_variant:Nn \@@_options:Nn { NV } +\msg_new:nnnn { keys } { option-unknown } + { Unknown~option~'#1'~for~package~#2. } + { + LaTeX~has~been~asked~to~set~an~option~called~'#1'~ + but~the~#2~package~has~not~created~an~option~with~this~name. + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_options_global:Nn} +% Global (class) options are handled differently for \LaTeXe{} packages +% and classes. Hence this function is essentially a check on the current +% file type. The initial test is needed as \LaTeXe{} allows variables to +% be equal to \cs{scan_stop:}, which is usually forbidden in \pkg{expl3} +% code. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options_global:Nn #1#2 + { + \cs_if_eq:NNF \@classoptionslist \scan_stop: + { + \cs_if_eq:NNTF \@currext \@clsextension + { \@@_options_class:n {#2} } + { + \bool_if:NT #1 + { \@@_options_package:n {#2} } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_options_class:n} +% For classes, each option (stripped of any content after |=|) +% is checked for existence as a key. If found, the option is added to +% the combined list for processing. On the other hand, unused options +% are stored up in \cs{@unusedoptionlist}. Before any of that, though, +% there is a simple check to see if there is an |unknown| key. If there +% is, then \emph{everything} will match and the mapping can be skipped. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options_class:n #1 + { + \cs_if_free:cF { opt@ \@currname . \@currext } + { + \keys_if_exist:nnTF {#1} { unknown } + { + \clist_put_right:Nv \l_@@_options_clist + { opt@ \@currname . \@currext } + } + { + \clist_map_inline:cn { opt@ \@currname . \@currext } + { + \keys_if_exist:neTF + {#1} { \@@_remove_equals:n {##1} } + { \clist_put_right:Nn \l_@@_options_clist {##1} } + { \clist_put_right:Nn \@unusedoptionlist {##1} } + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_options_package:n} +% For global options when processing a package, the tasks are slightly +% different from those for a class. The check is the same, but here +% there is nothing to do if the option is not applicable. Each valid +% option also needs to be removed from \cs{@unusedoptionlist}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options_package:n #1 + { + \clist_map_inline:Nn \@classoptionslist + { + \keys_if_exist:neT {#1} { \@@_remove_equals:n {##1} } + { + \clist_put_right:Nn \l_@@_options_clist {##1} + \clist_remove_all:Nn \@unusedoptionlist {##1} + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_options_local:} +% If local options are found, the are added to the processing list. +% \LaTeXe{} stores options for each file in a macro which may or may not +% exist, hence the need to use \cs{cs_if_exist:c}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options_local: + { + \cs_if_eq:NNF \@currext \@clsextension + { + \cs_if_exist:cT { opt@ \@currname . \@currext } + { + \clist_put_right:Nv \l_@@_options_clist + { opt@ \@currname . \@currext } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[EXP]{\@@_remove_equals:n} +% \begin{macro}[EXP]{\@@_remove_equals:w} +% As the name suggests, this is a simple function to remove an equals +% sign from the input. This is all wrapped up in an \texttt{n} function +% so that there will always be a sign available. +% \begin{macrocode} +\cs_new:Npn \@@_remove_equals:n #1 + { \@@_remove_equals:w #1 = \s_@@_stop } +\cs_new:Npn \@@_remove_equals:w #1 = #2 \s_@@_stop { \exp_not:n {#1} } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{The document interfaces} +% +% \begin{macro}{\DeclareKeys} +% Defining key options is quite straight-forward: we have an intermediate +% function to allow for potential set-up steps. +% \begin{macrocode} +\NewDocumentCommand \DeclareKeys { o +m } + { + \IfNoValueTF {#1} + { \exp_args:NV \keys_define:nn \@currname } + { \keys_define:nn {#1} } + {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ProcessKeyOptions, \ProcessKeyPackageOptions} +% We need to deal with the older interface from \pkg{l3keys2e} here: it had +% a mandatory argument. We can mop that up using a look-ahead, and then +% exploit that information to determine whether the package option handling +% is set up for the new approach for clash handling. +% \begin{macrocode} +\NewDocumentCommand \ProcessKeyOptions { o } + { + \IfNoValueTF {#1} + { \@@_options:NV \c_true_bool \@currname } + { \@@_options:Nn \c_true_bool {#1} } + } +\NewDocumentCommand \ProcessKeyPackageOptions { o } + { + \IfNoValueTF {#1} + { \@@_options:NV \c_false_bool \@currname } + { \@@_options:Nn \c_false_bool {#1} } + } +\@onlypreamble \ProcessKeyOptions +\@onlypreamble \ProcessKeyPackageOptions +% \end{macrocode} +% \end{macro} +% +% \subsection{Option usage scope} +% +% \begin{macro}{\@@_options_loaded:n} +% \begin{macro}{\@@_options_loaded:nn} +% Indicates that the load-time options for a package have been processed: +% once this has happened, make them unavailable either with a warning or +% an error. +% \begin{macrocode} +\cs_new_protected:Npn \@@_options_loaded:n #1 + { + \prop_get:NnNT \l_keys_usage_load_prop {#1} \l_@@_tmpa_tl + { + \clist_map_inline:Nn \l_@@_tmpa_tl + { + \keys_define:nn {#1} + { + ##1 .code:n = + \@@_options_loaded:nn {#1} {##1} + } + } + } + } +\cs_new_protected:Npn \@@_options_loaded:nn #1#2 + { + \bool_if:NTF \l_@@_options_loading_bool + { + \msg_warning:nnxx { keys } { load-option-ignored } + { \use:c { opt@fam@\@currname.\@currext } } {#2} + } + { \msg_error:nnnn { keys } { load-only } {#1} {#2} } + } +\msg_new:nnn { keys } { load-option-ignored } + { Package~"#1"~has~already~been~loaded:~ignoring~load-time~option~"#2". } +\msg_new:nnnn { keys } { load-only } + { Key~"#2"~may~only~be~used~in~the~during~loading~of~package~"#1". } + { + LaTeX~was~asked~to~set~a~key~called~"#2",~but~this~is~only~allowed~ + in~the~optional~argument~when~loading~package~"#1". + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Disable all preamble options in one shot. +% \begin{macrocode} +\tl_gput_left:Nn \@kernel@after@begindocument + { + \prop_map_inline:Nn \l_keys_usage_preamble_prop + { + \clist_map_inline:nn {#2} + { + \keys_define:nn {#1} + { + ##1 .code:n = + \msg_error:nnn { keys } { preamble-only } {##1} + } + } + } + } +\msg_new:nnnn { keys } { preamble-only } + { Key~"#1"~may~only~be~used~in~the~preamble. } + { + LaTeX~was~asked~to~set~a~key~called~"#1",~but~this~is~only~allowed~ + before~\begin{document}.~You~will~need~to~set~the~key~earlier. + } +% \end{macrocode} +% +% \subsection{General key setting} +% +% \begin{macro}{\SetKeys} +% A simple wrapper. +% \begin{macrocode} +\NewDocumentCommand \SetKeys { o +m } + { + \IfNoValueTF {#1} + { \keys_set:Vn \@currname } + { \keys_set:nn {#1} } + {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% +% \begin{macrocode} +%</2ekernel> +% \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx index 1be147547ec..f979dd4e239 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -83,7 +83,7 @@ % \DescribeMacro{\settodepth} % Set the length, |#1| to the depth of a box containing |#2|. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx index fecb3125880..d0413dad082 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -135,7 +135,7 @@ % when it occurs immediately after an |\item| command in an enclosing % list. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/07}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx index 132eaf636f7..56453f73dbc 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -65,7 +65,7 @@ % % Various logos are defined here. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macro}{\TeX} % The \TeX{} logo, adjusted so that a full stop after the logo diff --git a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx index 258ac482977..18623fd677a 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2021 +% Copyright (C) 2015-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -28,7 +28,7 @@ \ProvidesFile{ltluatex.dtx} %</driver> %<*tex> -[2021/10/15 v1.1v +[2021/12/27 v1.1x %</tex> %<plain> LuaTeX support for plain TeX (core) %<*tex> @@ -120,6 +120,17 @@ % tables from $1$ so |\luafunction0| is not available). % % \noindent +% \DescribeMacro{\newluacmd} +% |\newluadef{|\meta{function}|}|\\ +% Like \cs{newluafunction}, but defines the command using \cs{luadef} +% instead of just assigning an integer. +% +% \noindent +% \DescribeMacro{\newprotectedluacmd} +% |\newluadef{|\meta{function}|}|\\ +% Like \cs{newluacmd}, but the defined command is not expandable. +% +% \noindent % \DescribeMacro{\newwhatsit} % |\newwhatsit{|\meta{whatsit}|}|\\ % Defines a custom \cs{whatsit}, indexed from~$1$. @@ -380,7 +391,7 @@ % % \endgroup % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % @@ -722,6 +733,22 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\newluacmd, \newprotectedluacmd} +% \changes{v1.1x}{2021/12/27}{Macros added} +% Additionally two variants are provided to make the passed control +% sequence call the function directly. +% \begin{macrocode} +\def\newluacmd{% + \e@alloc\luafunction\luadef + \e@alloc@luafunction@count\m@ne\e@alloc@top +} +\def\newprotectedluacmd{% + \e@alloc\luafunction{\protected\luadef} + \e@alloc@luafunction@count\m@ne\e@alloc@top +} +% \end{macrocode} +% \end{macro} +% % \subsection{Custom whatsits} % % \begin{macro}{\newwhatsit} @@ -1351,6 +1378,8 @@ local callbacktypes = callbacktypes or { % \changes{v1.1k}{2019/10/02}{mlist\_to\_hlist is \texttt{exclusive}} % \changes{v1.1l}{2020/02/02}{post\_linebreak\_filter is \texttt{reverselist}} % \changes{v1.1p}{2020/08/01}{new\_graf is \texttt{exclusive}} +% \changes{v1.1w}{2021/11/17}{hpack\_quality is \texttt{exclusive}} +% \changes{v1.1w}{2021/11/17}{vpack\_quality is \texttt{exclusive}} % \begin{macrocode} contribute_filter = simple, buildpage_filter = simple, @@ -1361,8 +1390,8 @@ local callbacktypes = callbacktypes or { post_linebreak_filter = reverselist, hpack_filter = list, vpack_filter = list, - hpack_quality = list, - vpack_quality = list, + hpack_quality = exclusive, + vpack_quality = exclusive, pre_output_filter = list, process_rule = exclusive, hyphenate = simple, @@ -1516,11 +1545,11 @@ end % Handler for |list| callbacks. % \changes{v1.0k}{2015/12/02}{resolve name and i.description (PHG)} % \changes{v1.1s}{2020/12/02}{Fix return value of list callbacks} +% \changes{v1.1w}{2021/11/17}{Never pass on \texttt{true} return values for list callbacks} % \begin{macrocode} local function list_handler(name) return function(head, ...) local ret - local alltrue = true for _,i in ipairs(callbacklist[name]) do ret = i.func(head, ...) if ret == false then @@ -1531,18 +1560,17 @@ local function list_handler(name) return false end if ret ~= true then - alltrue = false head = ret end end - return alltrue and true or head + return head end end % \end{macrocode} % Default for user-defined |list| and |reverselist| callbacks without explicit default. % \begin{macrocode} -local function list_handler_default() - return true +local function list_handler_default(head) +return head end % \end{macrocode} % Handler for |reverselist| callbacks. @@ -1551,7 +1579,6 @@ end local function reverselist_handler(name) return function(head, ...) local ret - local alltrue = true local callbacks = callbacklist[name] for i = #callbacks, 1, -1 do local cb = callbacks[i] @@ -1564,11 +1591,10 @@ local function reverselist_handler(name) return false end if ret ~= true then - alltrue = false head = ret end end - return alltrue and true or head + return head end end % \end{macrocode} @@ -1899,14 +1925,10 @@ callback_register("mlist_to_hlist", function(head, display_type, need_penalties) if current == false then flush_list(head) return nil - elseif current == true then - current = head end current = call_callback("mlist_to_hlist", current, display_type, need_penalties) local post = call_callback("post_mlist_to_hlist_filter", current, display_type, need_penalties) - if post == true then - return current - elseif post == false then + if post == false then flush_list(current) return nil end diff --git a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx index 59e0d89a106..9f000a41b48 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -74,7 +74,7 @@ % This file contains a lot of the original plain \TeX{} code, as well % as the \LaTeX{} environments for math. It still needs sorting out. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx b/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx new file mode 100644 index 00000000000..e1c296ae1db --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx @@ -0,0 +1,189 @@ +% \iffalse meta-comment +% +%% File: ltmeta.dtx (C) Copyright 2021 +% Frank Mittelbach, LaTeX Team +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +%%% From File: ltmeta.dtx +% +% \begin{macrocode} +\def\ltmetaversion{v1.0a} +\def\ltmetadate{2021/12/07} +% \end{macrocode} +%<*driver> +\documentclass{l3doc} + +%\usepackage{ltmeta} + +% Fixing footnotes in functions and variables: this should be in l3doc! + +\newcommand\fixfootnote[2]{\footnotemark + \AddToHookNext{env/#1/after}{\footnotetext{#2}}} +\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}} +\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}} + +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{ltmeta.dtx} +\end{document} +%</driver> +% +% \fi +% +% \providecommand\hook[1]{\texttt{#1}} +% \providecommand\env[1]{\texttt{#1}} +% +% +% +% \title{The \texttt{ltmeta.dtx} code\thanks{This file has version +% \ltmetaversion\ dated \ltmetadate, \copyright\ \LaTeX\ +% Project.}} +% \author{Frank Mittelbach} +% +% \maketitle +% +% +% \begin{abstract} +% This code defines the \cs{DocumentMetadata} interface. +% \end{abstract} +% +% \tableofcontents +% +% +% \section{Introduction} +% +% +% In the past there was no dedicated location to declare settings +% concerning a document as a whole. Settings are placed somewhere +% in the preamble or with the class options or even with some +% package options. For some settings this can be too late, for +% example the pdf version can no longer be changed if a package has +% used code which already opened the PDF. +% +% \cs{DocumentMetadata} as a new command unifies such settings in +% one place. It must be used before \cs{documentclass} but can be +% issued more than once there. +% +% At the moment most of the code run by \cs{DocumentMetadata} is +% external to the format and subject to change. This includes the +% supported key/values. +% +% For that reason all that happens right now in the format is to +% look for suitable support files and if found, to redirect the +% processing to them. +% +% \subsection{\cs{DocumentMetadata}} +% +% \begin{function}{\DocumentMetadata} +% \begin{syntax} +% \cs{DocumentMetadata}\Arg{key-value list} +% \end{syntax} +% \end{function} +% +% +% +% The keys defined for \cs{DocumentMetadata} +% currently allow to set the PDF version, to set the PDF \texttt{/Lang}, +% to uncompress a PDF, to set the language and to declare a few PDF standards +% and some color profiles. +% +% \cs{DocumentMetadata} is also used to +% activate the new PDF management code and it loads +% a number of required files for the PDF management code. +% As this forces the loading of the backend files, a backend +% which can't be detected automatically like |dvipdfmx|, +% must be set in the first \cs{DocumentMetadata} call (if there is more than one). +% +% The full set of keys currently supported is documented in \texttt{documentmetadata-support.pdf} +% for now. +% +% +% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% +% +% \section{The Implementation} +% +% +% +% \begin{macrocode} +%<*2ekernel|latexrelease> +% \end{macrocode} +% Not needed yet but \ldots +% \begin{macrocode} +%\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\NewModuleRelease{2021/06/01}{ltmeta} +%<latexrelease> {Document Metadata handling} +% \end{macrocode} +% +% \begin{macrocode} +\protected\def\DocumentMetadata{% + \InputIfFileExists{documentmetadata-support.ltx}% + {}% +% \end{macrocode} +% The above file is changing \cs{DocumentMetadata} to a suitable +% definition (or so we hope), so that we can try again --- if not +% tough. +% +% If the file can't be found we say so and carry on without it. +% \begin{macrocode} + {% + \@latex@error{No support files for + \noexpand\DocumentMetadata found} + {Is the 'LaTeX-lab' bundle installed?% + \MessageBreak + Without it, the declaration is ignored.}% +% \end{macrocode} +% No point in trying this more than once if there are several calls +% in the document. +% \begin{macrocode} + \let\DocumentMetadata\@gobble + }% + \DocumentMetadata +} +% \end{macrocode} +% +% +% +% +% +% \begin{macrocode} +% +%<latexrelease>\IncludeInRelease{0000/00/00}{ltmeta}% +%<latexrelease> {Undo Document Metadata handling} +%<latexrelease> +%<latexrelease>\let\DocumentMetadata\@undefined +%<latexrelease> +%<latexrelease>\EndModuleRelease +% \end{macrocode} +% Again for the future \ldots +% \begin{macrocode} +%\ExplSyntaxOff +% \end{macrocode} +% \begin{macrocode} +%</2ekernel|latexrelease> +% \end{macrocode} +% +% Restore module prefix (if any): +% \begin{macrocode} +%<@@=> +% \end{macrocode} +% +% +% +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% diff --git a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx index 6cc58907a0d..b7b2bf5e312 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -81,7 +81,7 @@ % environments and related commands, the `flushing' environments, % (|center|, |flushleft|, |flushright|), and |verbatim|. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx index 61ea381823c..8e4867417b0 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -44,7 +44,7 @@ %<*driver> % \fi \ProvidesFile{ltoutenc.dtx} - [2021/10/16 v2.0x LaTeX Kernel (font encodings)] + [2021/12/12 v2.0y LaTeX Kernel (font encodings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutenc.dtx} @@ -477,7 +477,7 @@ % \texttt{TS1} encoding. % % -% \StopEventually{} +% \MaybeStop{} % % \subsection{Docstrip modules} % @@ -2949,14 +2949,14 @@ \endgroup } \else - \newluafunction\@remove@tlig@@@@ + \newprotectedluacmd\@remove@tlig@@@ % \end{macrocode} % Now we can define the function. Mostly we just have to insert a protected glyph % node, which is a glyph node with subtype 256. But we have to keep track of the % current mode to avoid inserting the glyph into a vlist. % \begin{macrocode} \now@and@everyjob{\directlua{ - local rawchar_func = token.create'@remove@tlig@@@@'.index + local rawchar_func = token.create'@remove@tlig@@@'.index local forcehmode = tex.forcehmode local put_next = token.put_next local glyph_id = node.id'glyph' @@ -2972,7 +2972,6 @@ n.char = token.scan_int() return node.write(n) end - token.set_lua('@remove@tlig@@@', rawchar_func, 'global', 'protected') }} % \end{macrocode} % Now \verb+\remove@tlig+ can be implemented almost as in XeTeX. @@ -3017,8 +3016,33 @@ \char#1\relax} % \end{macrocode} % -% \begin{macrocode} -\def\DeclareUnicodeAccent#1#2#3{% +% In its original implementation \cs{DeclareUnicodeAccent} was +% given 3 arguments (with second the ``Unicode encoding'' a.k.a., +% \cs{UnicodeEncodingName}) while in other places, e.g., +% \cs{DeclareUnicodeComposite}, we always made encoding implicit. So +% we now change it here to implicit too so that the interfaces +% become a bit more consistent. To avoid making that a +% breaking change (even though it only affects two packages on +% CTAN) we test for \verb=#2= being \cs{UnicodeEncodingName}. This +% would not catch if somebody used +% \verb|\DeclareUnicodeAccent{\=}{TU-sub}{"0304}| +% but that fortunately hasn't happened. With the implicit argument +% you would need to change \cs{UnicodeEncodingName} instead, as you +% have to do anyway for the other interface commands. +% \changes{v2.0y}{2021/12/12}{\cs{DeclareUnicodeAccent} now makes the +% encoding argument implicit (gh/253)} +% \begin{macrocode} +\def\DeclareUnicodeAccent#1#2{% + \edef\reserved@a{#2}% + \edef\reserved@b{\UnicodeEncodingName}% + \ifx\reserved@a\reserved@b + \def\reserved@a{\DeclareUnicodeAccent@{#1}}% + \else + \def\reserved@a{\DeclareUnicodeAccent@{#1}\UnicodeEncodingName}% + \fi + \reserved@a{#2}% +} +\def\DeclareUnicodeAccent@#1#2#3{% \DeclareTextCommand{#1}{#2}{\add@unicode@accent{#3}}% } % \end{macrocode} @@ -3059,113 +3083,119 @@ \def\reserved@b{#1#2}} % \end{macrocode} % +% Next two commands are simply syntactic sugar to go with the other +% \cs{DeclareUnicode...} declarations. +% \changes{v2.0y}{2021/12/12}{Added \cs{DeclareUnicodeCommand} and +% \cs{DeclareUnicodeSymbol} (gh/253)} +% \begin{macrocode} +\def\DeclareUnicodeSymbol#1{\DeclareTextSymbol{#1}{\UnicodeEncodingName}} +\def\DeclareUnicodeCommand#1{\DeclareTextCommand{#1}{\UnicodeEncodingName}} +% \end{macrocode} +% % \begin{macrocode} -\DeclareTextCommand\textquotesingle \UnicodeEncodingName{% - \remove@tlig{"0027}} -\DeclareTextCommand\textasciigrave \UnicodeEncodingName{% - \remove@tlig{"0060}} -\DeclareTextCommand\textquotedbl \UnicodeEncodingName{% - \remove@tlig{"0022}} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareTextSymbol{\textdollar} \UnicodeEncodingName{"0024} -\DeclareTextSymbol{\textless} \UnicodeEncodingName{"003C} -\DeclareTextSymbol{\textgreater} \UnicodeEncodingName{"003E} -\DeclareTextSymbol{\textbackslash} \UnicodeEncodingName{"005C} -\DeclareTextSymbol{\textasciicircum} \UnicodeEncodingName{"005E} -\DeclareTextSymbol{\textunderscore} \UnicodeEncodingName{"005F} -\DeclareTextSymbol{\textbraceleft} \UnicodeEncodingName{"007B} -\DeclareTextSymbol{\textbar} \UnicodeEncodingName{"007C} -\DeclareTextSymbol{\textbraceright} \UnicodeEncodingName{"007D} -\DeclareTextSymbol{\textasciitilde} \UnicodeEncodingName{"007E} -\DeclareTextSymbol{\textexclamdown} \UnicodeEncodingName{"00A1} -\DeclareTextSymbol{\textcent} \UnicodeEncodingName{"00A2} -\DeclareTextSymbol{\textsterling} \UnicodeEncodingName{"00A3} -\DeclareTextSymbol{\textcurrency} \UnicodeEncodingName{"00A4} -\DeclareTextSymbol{\textyen} \UnicodeEncodingName{"00A5} -\DeclareTextSymbol{\textbrokenbar} \UnicodeEncodingName{"00A6} -\DeclareTextSymbol{\textsection} \UnicodeEncodingName{"00A7} -\DeclareTextSymbol{\textasciidieresis} \UnicodeEncodingName{"00A8} -\DeclareTextSymbol{\textcopyright} \UnicodeEncodingName{"00A9} -\DeclareTextSymbol{\textordfeminine} \UnicodeEncodingName{"00AA} +\DeclareUnicodeCommand\textquotesingle {\remove@tlig{"0027}} +\DeclareUnicodeCommand\textasciigrave {\remove@tlig{"0060}} +\DeclareUnicodeCommand\textquotedbl {\remove@tlig{"0022}} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareUnicodeSymbol{\textdollar} {"0024} +\DeclareUnicodeSymbol{\textless} {"003C} +\DeclareUnicodeSymbol{\textgreater} {"003E} +\DeclareUnicodeSymbol{\textbackslash} {"005C} +\DeclareUnicodeSymbol{\textasciicircum} {"005E} +\DeclareUnicodeSymbol{\textunderscore} {"005F} +\DeclareUnicodeSymbol{\textbraceleft} {"007B} +\DeclareUnicodeSymbol{\textbar} {"007C} +\DeclareUnicodeSymbol{\textbraceright} {"007D} +\DeclareUnicodeSymbol{\textasciitilde} {"007E} +\DeclareUnicodeSymbol{\textexclamdown} {"00A1} +\DeclareUnicodeSymbol{\textcent} {"00A2} +\DeclareUnicodeSymbol{\textsterling} {"00A3} +\DeclareUnicodeSymbol{\textcurrency} {"00A4} +\DeclareUnicodeSymbol{\textyen} {"00A5} +\DeclareUnicodeSymbol{\textbrokenbar} {"00A6} +\DeclareUnicodeSymbol{\textsection} {"00A7} +\DeclareUnicodeSymbol{\textasciidieresis} {"00A8} +\DeclareUnicodeSymbol{\textcopyright} {"00A9} +\DeclareUnicodeSymbol{\textordfeminine} {"00AA} % \end{macrocode} % \changes{v2.0j}{2018/08/11}{Provide \cs{guillemetleft} and \cs{guillemetright}} % \begin{macrocode} -\DeclareTextSymbol{\guillemetleft} \UnicodeEncodingName{"00AB} +\DeclareUnicodeSymbol{\guillemetleft} {"00AB} % old Adobe name -\DeclareTextSymbol{\guillemotleft} \UnicodeEncodingName{"00AB} +\DeclareUnicodeSymbol{\guillemotleft} {"00AB} % \end{macrocode} % % \begin{macrocode} -\DeclareTextSymbol{\textlnot} \UnicodeEncodingName{"00AC} -\DeclareTextSymbol{\textregistered} \UnicodeEncodingName{"00AE} -\DeclareTextSymbol{\textasciimacron} \UnicodeEncodingName{"00AF} -\DeclareTextSymbol{\textdegree} \UnicodeEncodingName{"00B0} -\DeclareTextSymbol{\textpm} \UnicodeEncodingName{"00B1} -\DeclareTextSymbol{\texttwosuperior} \UnicodeEncodingName{"00B2} -\DeclareTextSymbol{\textthreesuperior} \UnicodeEncodingName{"00B3} -\DeclareTextSymbol{\textasciiacute} \UnicodeEncodingName{"00B4} -\DeclareTextSymbol{\textmu} \UnicodeEncodingName{"00B5} -\DeclareTextSymbol{\textparagraph} \UnicodeEncodingName{"00B6} -\DeclareTextSymbol{\textperiodcentered} \UnicodeEncodingName{"00B7} -\DeclareTextSymbol{\textonesuperior} \UnicodeEncodingName{"00B9} -\DeclareTextSymbol{\textordmasculine} \UnicodeEncodingName{"00BA} +\DeclareUnicodeSymbol{\textlnot} {"00AC} +\DeclareUnicodeSymbol{\textregistered} {"00AE} +\DeclareUnicodeSymbol{\textasciimacron} {"00AF} +\DeclareUnicodeSymbol{\textdegree} {"00B0} +\DeclareUnicodeSymbol{\textpm} {"00B1} +\DeclareUnicodeSymbol{\texttwosuperior} {"00B2} +\DeclareUnicodeSymbol{\textthreesuperior} {"00B3} +\DeclareUnicodeSymbol{\textasciiacute} {"00B4} +\DeclareUnicodeSymbol{\textmu} {"00B5} +\DeclareUnicodeSymbol{\textparagraph} {"00B6} +\DeclareUnicodeSymbol{\textperiodcentered} {"00B7} +\DeclareUnicodeSymbol{\textonesuperior} {"00B9} +\DeclareUnicodeSymbol{\textordmasculine} {"00BA} % \end{macrocode} % \changes{v2.0j}{2018/08/11}{Provide \cs{guillemetleft} and \cs{guillemetright}} % \begin{macrocode} -\DeclareTextSymbol{\guillemetright} \UnicodeEncodingName{"00BB} +\DeclareUnicodeSymbol{\guillemetright} {"00BB} % old Adobe name -\DeclareTextSymbol{\guillemotright} \UnicodeEncodingName{"00BB} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareTextSymbol{\textonequarter} \UnicodeEncodingName{"00BC} -\DeclareTextSymbol{\textonehalf} \UnicodeEncodingName{"00BD} -\DeclareTextSymbol{\textthreequarters} \UnicodeEncodingName{"00BE} -\DeclareTextSymbol{\textquestiondown} \UnicodeEncodingName{"00BF} -\DeclareTextSymbol{\AE} \UnicodeEncodingName{"00C6} -\DeclareTextSymbol{\DH} \UnicodeEncodingName{"00D0} -\DeclareTextSymbol{\texttimes} \UnicodeEncodingName{"00D7} -\DeclareTextSymbol{\O} \UnicodeEncodingName{"00D8} -\DeclareTextSymbol{\TH} \UnicodeEncodingName{"00DE} -\DeclareTextSymbol{\ss} \UnicodeEncodingName{"00DF} -\DeclareTextSymbol{\ae} \UnicodeEncodingName{"00E6} -\DeclareTextSymbol{\dh} \UnicodeEncodingName{"00F0} -\DeclareTextSymbol{\textdiv} \UnicodeEncodingName{"00F7} -\DeclareTextSymbol{\o} \UnicodeEncodingName{"00F8} -\DeclareTextSymbol{\th} \UnicodeEncodingName{"00FE} -\DeclareTextSymbol{\DJ} \UnicodeEncodingName{"0110} -\DeclareTextSymbol{\dj} \UnicodeEncodingName{"0111} -\DeclareTextSymbol{\i} \UnicodeEncodingName{"0131} -\DeclareTextSymbol{\IJ} \UnicodeEncodingName{"0132} -\DeclareTextSymbol{\ij} \UnicodeEncodingName{"0133} -\DeclareTextSymbol{\L} \UnicodeEncodingName{"0141} -\DeclareTextSymbol{\l} \UnicodeEncodingName{"0142} -\DeclareTextSymbol{\NG} \UnicodeEncodingName{"014A} -\DeclareTextSymbol{\ng} \UnicodeEncodingName{"014B} -\DeclareTextSymbol{\OE} \UnicodeEncodingName{"0152} -\DeclareTextSymbol{\oe} \UnicodeEncodingName{"0153} -\DeclareTextSymbol{\textflorin} \UnicodeEncodingName{"0192} -\DeclareTextSymbol{\j} \UnicodeEncodingName{"0237} -\DeclareTextSymbol{\textasciicaron} \UnicodeEncodingName{"02C7} -\DeclareTextSymbol{\textasciibreve} \UnicodeEncodingName{"02D8} -\DeclareTextSymbol{\textacutedbl} \UnicodeEncodingName{"02DD} -\DeclareTextSymbol{\textgravedbl} \UnicodeEncodingName{"02F5} -\DeclareTextSymbol{\texttildelow} \UnicodeEncodingName{"02F7} -\DeclareTextSymbol{\textbaht} \UnicodeEncodingName{"0E3F} -\DeclareTextSymbol{\SS} \UnicodeEncodingName{"1E9E} -\DeclareTextSymbol{\textcompwordmark} \UnicodeEncodingName{"200C} +\DeclareUnicodeSymbol{\guillemotright} {"00BB} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareUnicodeSymbol{\textonequarter} {"00BC} +\DeclareUnicodeSymbol{\textonehalf} {"00BD} +\DeclareUnicodeSymbol{\textthreequarters} {"00BE} +\DeclareUnicodeSymbol{\textquestiondown} {"00BF} +\DeclareUnicodeSymbol{\AE} {"00C6} +\DeclareUnicodeSymbol{\DH} {"00D0} +\DeclareUnicodeSymbol{\texttimes} {"00D7} +\DeclareUnicodeSymbol{\O} {"00D8} +\DeclareUnicodeSymbol{\TH} {"00DE} +\DeclareUnicodeSymbol{\ss} {"00DF} +\DeclareUnicodeSymbol{\ae} {"00E6} +\DeclareUnicodeSymbol{\dh} {"00F0} +\DeclareUnicodeSymbol{\textdiv} {"00F7} +\DeclareUnicodeSymbol{\o} {"00F8} +\DeclareUnicodeSymbol{\th} {"00FE} +\DeclareUnicodeSymbol{\DJ} {"0110} +\DeclareUnicodeSymbol{\dj} {"0111} +\DeclareUnicodeSymbol{\i} {"0131} +\DeclareUnicodeSymbol{\IJ} {"0132} +\DeclareUnicodeSymbol{\ij} {"0133} +\DeclareUnicodeSymbol{\L} {"0141} +\DeclareUnicodeSymbol{\l} {"0142} +\DeclareUnicodeSymbol{\NG} {"014A} +\DeclareUnicodeSymbol{\ng} {"014B} +\DeclareUnicodeSymbol{\OE} {"0152} +\DeclareUnicodeSymbol{\oe} {"0153} +\DeclareUnicodeSymbol{\textflorin} {"0192} +\DeclareUnicodeSymbol{\j} {"0237} +\DeclareUnicodeSymbol{\textasciicaron} {"02C7} +\DeclareUnicodeSymbol{\textasciibreve} {"02D8} +\DeclareUnicodeSymbol{\textacutedbl} {"02DD} +\DeclareUnicodeSymbol{\textgravedbl} {"02F5} +\DeclareUnicodeSymbol{\texttildelow} {"02F7} +\DeclareUnicodeSymbol{\textbaht} {"0E3F} +\DeclareUnicodeSymbol{\SS} {"1E9E} +\DeclareUnicodeSymbol{\textcompwordmark} {"200C} % \end{macrocode} % % \changes{v2.0u}{2021/02/19}{Add \cs{textnonbreakinghyphen}, \cs{textfiguredash} % and \cs{texthorizontalbar} (gh/404)} % \begin{macrocode} -%\DeclareTextSymbol{\textnonbreakinghyphen} \UnicodeEncodingName{"2011} -%\DeclareTextSymbol{\textfiguredash} \UnicodeEncodingName{"2012} -\DeclareTextSymbol{\textendash} \UnicodeEncodingName{"2013} -\DeclareTextSymbol{\textemdash} \UnicodeEncodingName{"2014} -%\DeclareTextSymbol{\texthorizontalbar} \UnicodeEncodingName{"2015} +%\DeclareUnicodeSymbol{\textnonbreakinghyphen} {"2011} +%\DeclareUnicodeSymbol{\textfiguredash} {"2012} +\DeclareUnicodeSymbol{\textendash} {"2013} +\DeclareUnicodeSymbol{\textemdash} {"2014} +%\DeclareUnicodeSymbol{\texthorizontalbar} {"2015} % \end{macrocode} % Unfortunately some fonts do not implement \texttt{"2011}, \texttt{"2012} and/or % \texttt{"2015} (including the \LaTeX{} default fonts for Unicode @@ -3175,70 +3205,70 @@ % The \verb=\nobreak\hskip\z@= is there to prevent a break after % the hyphen but allow later breaks in the remainder of the word. % \begin{macrocode} -\DeclareTextCommand{\textnonbreakinghyphen} \UnicodeEncodingName +\DeclareUnicodeCommand{\textnonbreakinghyphen} {\iffontchar\font "2011 \char "2011 \else \mbox{-}\nobreak\hskip\z@ \fi} -\DeclareTextCommand{\textfiguredash} \UnicodeEncodingName +\DeclareUnicodeCommand{\textfiguredash} {\iffontchar\font "2012 \char "2012 \else \char "2013 \fi} -\DeclareTextCommand{\texthorizontalbar} \UnicodeEncodingName +\DeclareUnicodeCommand{\texthorizontalbar} {\iffontchar\font "2015 \char "2015 \else \char "2014 \fi} % \end{macrocode} % % \begin{macrocode} -\DeclareTextSymbol{\textbardbl} \UnicodeEncodingName{"2016} -\DeclareTextSymbol{\textquoteleft} \UnicodeEncodingName{"2018} -\DeclareTextSymbol{\textquoteright} \UnicodeEncodingName{"2019} -\DeclareTextSymbol{\quotesinglbase} \UnicodeEncodingName{"201A} -\DeclareTextSymbol{\textquotedblleft} \UnicodeEncodingName{"201C} -\DeclareTextSymbol{\textquotedblright} \UnicodeEncodingName{"201D} -\DeclareTextSymbol{\quotedblbase} \UnicodeEncodingName{"201E} -\DeclareTextSymbol{\textdagger} \UnicodeEncodingName{"2020} -\DeclareTextSymbol{\textdaggerdbl} \UnicodeEncodingName{"2021} -\DeclareTextSymbol{\textbullet} \UnicodeEncodingName{"2022} -\DeclareTextSymbol{\textellipsis} \UnicodeEncodingName{"2026} -\DeclareTextSymbol{\textperthousand} \UnicodeEncodingName{"2030} -\DeclareTextSymbol{\textpertenthousand} \UnicodeEncodingName{"2031} -\DeclareTextSymbol{\guilsinglleft} \UnicodeEncodingName{"2039} -\DeclareTextSymbol{\guilsinglright} \UnicodeEncodingName{"203A} -\DeclareTextSymbol{\textreferencemark} \UnicodeEncodingName{"203B} -\DeclareTextSymbol{\textinterrobang} \UnicodeEncodingName{"203D} -\DeclareTextSymbol{\textfractionsolidus} \UnicodeEncodingName{"2044} -\DeclareTextSymbol{\textlquill} \UnicodeEncodingName{"2045} -\DeclareTextSymbol{\textrquill} \UnicodeEncodingName{"2046} -\DeclareTextSymbol{\textdiscount} \UnicodeEncodingName{"2052} -\DeclareTextSymbol{\textcolonmonetary} \UnicodeEncodingName{"20A1} -\DeclareTextSymbol{\textlira} \UnicodeEncodingName{"20A4} -\DeclareTextSymbol{\textnaira} \UnicodeEncodingName{"20A6} -\DeclareTextSymbol{\textwon} \UnicodeEncodingName{"20A9} -\DeclareTextSymbol{\textdong} \UnicodeEncodingName{"20AB} -\DeclareTextSymbol{\texteuro} \UnicodeEncodingName{"20AC} -\DeclareTextSymbol{\textpeso} \UnicodeEncodingName{"20B1} -\DeclareTextSymbol{\textcelsius} \UnicodeEncodingName{"2103} -\DeclareTextSymbol{\textnumero} \UnicodeEncodingName{"2116} -\DeclareTextSymbol{\textcircledP} \UnicodeEncodingName{"2117} -\DeclareTextSymbol{\textrecipe} \UnicodeEncodingName{"211E} -\DeclareTextSymbol{\textservicemark} \UnicodeEncodingName{"2120} -\DeclareTextSymbol{\texttrademark} \UnicodeEncodingName{"2122} -\DeclareTextSymbol{\textohm} \UnicodeEncodingName{"2126} -\DeclareTextSymbol{\textmho} \UnicodeEncodingName{"2127} -\DeclareTextSymbol{\textestimated} \UnicodeEncodingName{"212E} -\DeclareTextSymbol{\textleftarrow} \UnicodeEncodingName{"2190} -\DeclareTextSymbol{\textuparrow} \UnicodeEncodingName{"2191} -\DeclareTextSymbol{\textrightarrow} \UnicodeEncodingName{"2192} -\DeclareTextSymbol{\textdownarrow} \UnicodeEncodingName{"2193} -\DeclareTextSymbol{\textminus} \UnicodeEncodingName{"2212} +\DeclareUnicodeSymbol{\textbardbl} {"2016} +\DeclareUnicodeSymbol{\textquoteleft} {"2018} +\DeclareUnicodeSymbol{\textquoteright} {"2019} +\DeclareUnicodeSymbol{\quotesinglbase} {"201A} +\DeclareUnicodeSymbol{\textquotedblleft} {"201C} +\DeclareUnicodeSymbol{\textquotedblright} {"201D} +\DeclareUnicodeSymbol{\quotedblbase} {"201E} +\DeclareUnicodeSymbol{\textdagger} {"2020} +\DeclareUnicodeSymbol{\textdaggerdbl} {"2021} +\DeclareUnicodeSymbol{\textbullet} {"2022} +\DeclareUnicodeSymbol{\textellipsis} {"2026} +\DeclareUnicodeSymbol{\textperthousand} {"2030} +\DeclareUnicodeSymbol{\textpertenthousand} {"2031} +\DeclareUnicodeSymbol{\guilsinglleft} {"2039} +\DeclareUnicodeSymbol{\guilsinglright} {"203A} +\DeclareUnicodeSymbol{\textreferencemark} {"203B} +\DeclareUnicodeSymbol{\textinterrobang} {"203D} +\DeclareUnicodeSymbol{\textfractionsolidus} {"2044} +\DeclareUnicodeSymbol{\textlquill} {"2045} +\DeclareUnicodeSymbol{\textrquill} {"2046} +\DeclareUnicodeSymbol{\textdiscount} {"2052} +\DeclareUnicodeSymbol{\textcolonmonetary} {"20A1} +\DeclareUnicodeSymbol{\textlira} {"20A4} +\DeclareUnicodeSymbol{\textnaira} {"20A6} +\DeclareUnicodeSymbol{\textwon} {"20A9} +\DeclareUnicodeSymbol{\textdong} {"20AB} +\DeclareUnicodeSymbol{\texteuro} {"20AC} +\DeclareUnicodeSymbol{\textpeso} {"20B1} +\DeclareUnicodeSymbol{\textcelsius} {"2103} +\DeclareUnicodeSymbol{\textnumero} {"2116} +\DeclareUnicodeSymbol{\textcircledP} {"2117} +\DeclareUnicodeSymbol{\textrecipe} {"211E} +\DeclareUnicodeSymbol{\textservicemark} {"2120} +\DeclareUnicodeSymbol{\texttrademark} {"2122} +\DeclareUnicodeSymbol{\textohm} {"2126} +\DeclareUnicodeSymbol{\textmho} {"2127} +\DeclareUnicodeSymbol{\textestimated} {"212E} +\DeclareUnicodeSymbol{\textleftarrow} {"2190} +\DeclareUnicodeSymbol{\textuparrow} {"2191} +\DeclareUnicodeSymbol{\textrightarrow} {"2192} +\DeclareUnicodeSymbol{\textdownarrow} {"2193} +\DeclareUnicodeSymbol{\textminus} {"2212} % \end{macrocode} % \changes{v2.0k}{2018/11/18}{Provide \cs{Hwithstroke} and \cs{hwithstroke}} % \begin{macrocode} -\DeclareTextSymbol{\Hwithstroke} \UnicodeEncodingName{"0126} -\DeclareTextSymbol{\hwithstroke} \UnicodeEncodingName{"0127} +\DeclareUnicodeSymbol{\Hwithstroke} {"0126} +\DeclareUnicodeSymbol{\hwithstroke} {"0127} % \end{macrocode} % % Not all fonts have U+2217 but using U+002A requires some adjustment. % \changes{v2.0t}{2021/02/17}{Adjust values for % \cs{textasteriskcentered} To match TS1 definition (gh/502)} % \begin{macrocode} -\DeclareTextCommand{\textasteriskcentered}\UnicodeEncodingName{% +\DeclareUnicodeCommand{\textasteriskcentered}{% \iffontchar\font"2217 \char"2217 \else \begingroup \fontsize @@ -3251,36 +3281,39 @@ } % \end{macrocode} % \begin{macrocode} -\DeclareTextSymbol{\textsurd} \UnicodeEncodingName{"221A} -\DeclareTextSymbol{\textlangle} \UnicodeEncodingName{"2329} -\DeclareTextSymbol{\textrangle} \UnicodeEncodingName{"232A} -\DeclareTextSymbol{\textblank} \UnicodeEncodingName{"2422} -\DeclareTextSymbol{\textvisiblespace} \UnicodeEncodingName{"2423} -\DeclareTextSymbol{\textopenbullet} \UnicodeEncodingName{"25E6} -\DeclareTextSymbol{\textbigcircle} \UnicodeEncodingName{"25EF} -\DeclareTextSymbol{\textmusicalnote} \UnicodeEncodingName{"266A} -\DeclareTextSymbol{\textmarried} \UnicodeEncodingName{"26AD} -\DeclareTextSymbol{\textdivorced} \UnicodeEncodingName{"26AE} -\DeclareTextSymbol{\textinterrobangdown} \UnicodeEncodingName{"2E18} +\DeclareUnicodeSymbol{\textsurd} {"221A} +\DeclareUnicodeSymbol{\textlangle} {"2329} +\DeclareUnicodeSymbol{\textrangle} {"232A} +\DeclareUnicodeSymbol{\textblank} {"2422} +\DeclareUnicodeSymbol{\textvisiblespace} {"2423} +\DeclareUnicodeSymbol{\textopenbullet} {"25E6} +\DeclareUnicodeSymbol{\textbigcircle} {"25EF} +\DeclareUnicodeSymbol{\textmusicalnote} {"266A} +\DeclareUnicodeSymbol{\textmarried} {"26AD} +\DeclareUnicodeSymbol{\textdivorced} {"26AE} +\DeclareUnicodeSymbol{\textinterrobangdown} {"2E18} % \end{macrocode} % Accents must be declared before the composites that use them. % \begin{macrocode} -\DeclareUnicodeAccent{\`} \UnicodeEncodingName{"0300} -\DeclareUnicodeAccent{\'} \UnicodeEncodingName{"0301} -\DeclareUnicodeAccent{\^} \UnicodeEncodingName{"0302} -\DeclareUnicodeAccent{\~} \UnicodeEncodingName{"0303} -\DeclareUnicodeAccent{\=} \UnicodeEncodingName{"0304} -\DeclareUnicodeAccent{\u} \UnicodeEncodingName{"0306} -\DeclareUnicodeAccent{\.} \UnicodeEncodingName{"0307} -\DeclareUnicodeAccent{\"} \UnicodeEncodingName{"0308} -\DeclareUnicodeAccent{\r} \UnicodeEncodingName{"030A} -\DeclareUnicodeAccent{\H} \UnicodeEncodingName{"030B} -\DeclareUnicodeAccent{\v} \UnicodeEncodingName{"030C} -\DeclareUnicodeAccent{\b} \UnicodeEncodingName{"0332} -\DeclareUnicodeAccent{\d} \UnicodeEncodingName{"0323} -\DeclareUnicodeAccent{\c} \UnicodeEncodingName{"0327} -\DeclareUnicodeAccent{\k} \UnicodeEncodingName{"0328} -\DeclareTextCommand\textcommabelow \UnicodeEncodingName[1] +\DeclareUnicodeAccent{\`}{"0300} +\DeclareUnicodeAccent{\'}{"0301} +\DeclareUnicodeAccent{\^}{"0302} +\DeclareUnicodeAccent{\~}{"0303} +\DeclareUnicodeAccent{\=}{"0304} +\DeclareUnicodeAccent{\u}{"0306} +\DeclareUnicodeAccent{\.}{"0307} +\DeclareUnicodeAccent{\"}{"0308} +\DeclareUnicodeAccent{\r}{"030A} +\DeclareUnicodeAccent{\H}{"030B} +\DeclareUnicodeAccent{\v}{"030C} +\DeclareUnicodeAccent{\b}{"0332} +\DeclareUnicodeAccent{\d}{"0323} +\DeclareUnicodeAccent{\c}{"0327} +\DeclareUnicodeAccent{\k}{"0328} +% \end{macrocode} +% The odd one out: +% \begin{macrocode} +\DeclareUnicodeCommand\textcommabelow[1] {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex \hbox{\check@mathfonts\fontsize\ssf@size\z@ \math@fontsfalse\selectfont,}\hidewidth}\egroup} @@ -3743,4 +3776,12 @@ % % \Finale % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput + +^^A Needed for emacs +^^A +^^A Local Variables: +^^A mode: latex +^^A coding: utf-8-unix +^^A End: diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins index 1330b5c44eb..8ff0f02608d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins +++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx index 78b0f2335f8..2d9f857173f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -120,7 +120,7 @@ % \changes{v1.2n}{2015/02/21} % {Removed autoload code} % -% \StopEventually{} +% \MaybeStop{} % % \def \ie {i.e.~} % \def \eg {e.g.~} diff --git a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx index 4504033f542..9c0ed1fee64 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -112,7 +112,7 @@ % command (|\ps@...|) to |\markboth| for setting the heading or to % |\@gobbletwo| to do nothing. % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx index 03d36a53d98..8142639633f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -77,7 +77,7 @@ % numbered i, ii, etc. % % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*2ekernel> diff --git a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx index 969954be0a7..50ff57183cc 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -96,7 +96,7 @@ % \end{itemize} % % -% \StopEventually{} +% \MaybeStop{} % % \subsection{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltpara.dtx b/Master/texmf-dist/source/latex-dev/base/ltpara.dtx index a2da67198a6..36d07337bd7 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpara.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpara.dtx @@ -123,7 +123,7 @@ % \verb=\hbox{a\par b}= is ignored, but \verb=$a\par b$= would complain. % % If this primitive ends the paragraph it does some special -% \enquote{end of horizontal list} processing, then calls \TeX{}’s paragraph +% \enquote{end of horizontal list} processing, then calls \TeX{}'s paragraph % builder; this breaks the horizontal list into lines and then these % lines are added as boxes to the enclosing vertical list and % \TeX{} returns to vertical mode. @@ -665,7 +665,7 @@ % % % -% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % % \section{The Implementation} diff --git a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx index ae8b58995da..453ec6149e3 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -83,7 +83,7 @@ % variant of this command, |\bezier|, is defined, in which the first % argument is not optional. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v0.1a}{1994/03/07}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx index 5fa70396794..c6f295ef6b0 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -102,7 +102,7 @@ % \LaTeX{} uses its own output routine, so most of the plain one was % removed. % -% \StopEventually{} +% \MaybeStop{} % % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx index 67974c73874..71ab1ee89dd 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -73,7 +73,7 @@ % document level commands are defined in the class files, in terms of % these commands. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx index 7f6555d18cf..09495dde9a5 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment %% -%% Copyright (C) 2020-2021 +%% Copyright (C) 2020-2022 %% Frank Mittelbach, LaTeX Team %% % @@ -32,8 +32,8 @@ %%% From File: ltshipout.dtx % % \begin{macrocode} -\providecommand\ltshipoutversion{v1.0j} -\providecommand\ltshipoutdate{2021/06/09} +\providecommand\ltshipoutversion{v1.0l} +\providecommand\ltshipoutdate{2022/01/06} % \end{macrocode} % %<*driver> @@ -327,7 +327,10 @@ % \subsection{Legacy \LaTeX{} commands} % % \begin{function}{\AtBeginDvi,\AtEndDvi} -% \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the +% \begin{syntax} +% \cs{AtBeginDvi} \Arg{code} +% \end{syntax} + % \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the % \hook{shipout/firstpage} hook. This is not really a good name % as it is not just supporting \texttt{.dvi} but also \texttt{.pdf} % output or \texttt{.xdv}. @@ -335,15 +338,24 @@ % \cs{AtEndDvi} is the counterpart that was not available in the % kernel but only through the package \pkg{atenddvi}. It fills the % \hook{shipout/lastpage} hook. +% +% Neither interface can set a code label but uses the current default label. +% % \end{function} % % As these two wrappers have been available for a long time we -% continue offering them. However, for new code we suggest using -% the high-level hook management commands directly instead of -% ``randomly-named'' wrappers. This will lead to code that is -% easier to understand and to maintain. For this reason we do not -% provide any other wrapper commands for the above hooks in the -% kernel. +% continue offering them (but not enhancing them, e.g., by providing +% support for code labels). +% +% For new code we strongly suggest using the high-level hook +% management commands directly instead of ``randomly-named'' +% wrappers. This will lead to code that is easier to understand +% and to maintain and it also allows you to set code labels if +% needed. +% +% For this reason we do not provide any other ``new'' wrapper +% commands for the above hooks in the kernel, but only keep +% the existing ones for backward compatibility. % % % \subsection{Special commands for use inside the hooks} @@ -644,7 +656,7 @@ % \end{function} % % -% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % % \section{The Implementation} @@ -734,21 +746,21 @@ % \begin{macrocode} \sys_if_engine_luatex:TF { - \newluafunction \@@_finalize_box: + \newprotectedluacmd \@@_finalize_box: \exp_args:Nx \everyjob { \exp_not:V \everyjob \exp_not:N \lua_now:n { luatexbase.create_callback('pre_shipout_filter', 'list') local~call, getbox, setbox = luatexbase.call_callback, tex.getbox, tex.setbox~ - lua.get_functions_table()[\the \@@_finalize_box:] = function() - local~result = call('pre_shipout_filter', getbox(\the \l_shipout_box)) - if~not (result == true) then~ + lua.get_functions_table()[\the \allocationnumber] = function() + local~head = getbox(\the \l_shipout_box) + local~result = call('pre_shipout_filter', head) + if~not (result == head) then~ setbox(\the \l_shipout_box, result~or~nil) end~ end } } - \protected \luadef \@@_finalize_box: \the \@@_finalize_box: } { \cs_set_eq:NN \@@_finalize_box: \scan_stop: } @@ -1966,15 +1978,17 @@ % % % \begin{macro}{\AtEndDvi} -% This package has only one public command to simulating it is easy +% This package has only one public command, so simulating it is easy % and actually sensible to provide as part of the kernel. +% \changes{v1.0l}{2022/01/06}{Correctly simulate \cs{AtEndDvi} without +% extending the syntax} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/10/01}% %<latexrelease> {\AtEndDvi}{atenddvi emulation}% \ExplSyntaxOn -\cs_new_protected:Npn \AtEndDvi {\AddToHook{shipout/lastpage}} +\cs_new_protected:Npn \AtEndDvi #1 {\AddToHook{shipout/lastpage}{#1}} \ExplSyntaxOff % \end{macrocode} % As the package is integrate we prevent loading (no need to roll that back): @@ -2041,9 +2055,11 @@ % % \begin{macro}{\AtBeginShipout,\AtBeginShipoutNext} % Filling hooks +% \changes{v1.0l}{2022/01/06}{Correctly simulate \cs{AtBeginShipout} +% and \cs{AtBeginShipoutNext} without extending the syntax} % \begin{macrocode} -\protected \def \AtBeginShipout {\AddToHook{shipout/before}} -\protected \def \AtBeginShipoutNext {\AddToHookNext{shipout/before}} +\protected\long\def\AtBeginShipout #1{\AddToHook{shipout/before}{#1}} +\protected\long\def\AtBeginShipoutNext #1{\AddToHookNext{shipout/before}{#1}} % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx index 17fb0d65185..feb82730ece 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -114,7 +114,7 @@ % |\restorecr| : restores <CR> to its usual meaning. % % -% \StopEventually{} +% \MaybeStop{} % % \subsection{Chris' comments} % diff --git a/Master/texmf-dist/source/latex-dev/base/lttab.dtx b/Master/texmf-dist/source/latex-dev/base/lttab.dtx index 48627f40a3c..e32153f31c3 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttab.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttab.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -74,7 +74,7 @@ % \LaTeX\ Companion}. Use the |array| package to obtain the extended % version. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx index 1efc36d5637..de6b221b6c5 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2021 +% Copyright (C) 2019-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -25,9 +25,10 @@ % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. % +%%% From File: lttextcomp.dtx +% % \fi % -%%% From File: lttextcomp.dtx % % \iffalse % @@ -36,7 +37,7 @@ % % \ProvidesFile{lttextcomp.dtx} - [2021/04/16 v1.0f LaTeX Kernel (text companion symbols)] + [2021/12/09 v1.0f LaTeX Kernel (text companion symbols)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -68,7 +69,7 @@ % % % -% \StopEventually{} +% \MaybeStop{} % % \changes{v1.0e}{2021/03/19} % {Use \cs{NewModuleRelease}} @@ -470,16 +471,17 @@ % \end{macrocode} % % -% In the following sections the remaining default definitions are ordered by -% sub-encoding in which they are become unavailable (i.e., they are -% not provided in the sub-encoding with that number and all -% sub-encodings with higher numbers. +% In the following sections the remaining default definitions are +% ordered by sub-encoding in which they are become +% \textbf{unavailable}, i.e., they are not provided in the +% sub-encoding with that number and all sub-encodings with higher +% numbers. % % Thus the symbols that are available in sub-encoding $x$ are the -% symbols above (always available) and the symbols list in the -% sections for sub-encodings $x+1$ and higher. +% symbols above (always available) and the symbols listed as becoming +% unavailable in sub-encodings $x+1$ and higher. % -% \subsection{Sub-encoding \texttt{1} (drop symbols not working in +% \subsection{Unavailable in sub-encoding \texttt{1} and higher (drop symbols not working in % Latin Modern)} % % The \cs{textcircled} is available but the glyph is simply too @@ -493,7 +495,7 @@ % % % -% \subsection{Sub-encoding \texttt{2} (majority of new OTF fonts via autoinst)} +% \subsection{Unavailable in sub-encoding \texttt{2} (majority of new OTF fonts via autoinst) and higher} % % \begin{macrocode} \DeclareTextCommandDefault{\t} @@ -722,7 +724,7 @@ % % % -% \subsection{Sub-encoding \texttt{3}} +% \subsection{Unavailable in sub-encoding \texttt{3} and higher} % % Sub-encoding \texttt{2} is the one where we loose many % symbols. In the higher-numbered sub-encodings we see only a few @@ -738,7 +740,7 @@ % % % -% \subsection{Sub-encoding \texttt{4}} +% \subsection{Unavailable in sub-encoding \texttt{4} and higher} % % \begin{macrocode} \DeclareTextCommandDefault{\textcolonmonetary} @@ -763,7 +765,7 @@ % % % -% \subsection{Sub-encoding \texttt{5} (most older PS fonts)} +% \subsection{Unavailable in sub-encoding \texttt{5} (most older PS fonts) and higher} % % Most older PS fonts (supported in \TeX{} since the early nineties % when virtual fonts became available) are sorted under this @@ -790,7 +792,7 @@ % % % -% \subsection{Sub-encoding \texttt{6}} +% \subsection{Unavailable in sub-encoding \texttt{6} and higher} % % \begin{macrocode} \DeclareTextCommandDefault{\textflorin} @@ -801,7 +803,7 @@ % % % -% \subsection{Sub-encoding \texttt{7}} +% \subsection{Unavailable in sub-encoding \texttt{7} and higher} % % \begin{macrocode} \DeclareTextCommandDefault{\textfractionsolidus} @@ -816,7 +818,7 @@ % % % -% \subsection{Sub-encoding \texttt{8}} +% \subsection{Unavailable in sub-encoding \texttt{8} and higher} % % \begin{macrocode} \DeclareTextCommandDefault{\textblank} @@ -837,7 +839,7 @@ % % % -% \subsection{Sub-encoding \texttt{9} (most missing)} +% \subsection{Unavailable in Sub-encoding \texttt{9} (most missing)} % % \begin{macrocode} \DeclareTextCommandDefault{\textcelsius} diff --git a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx index 00fe97c77af..d0d04d9669d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -80,7 +80,7 @@ % The way \meta{name} environments are numbered can be changed by % redefining |\the|\meta{name}. % -% \StopEventually{} +% \MaybeStop{} % % % \changes{v1.0a}{1994/03/28}{Initial version, split from latex.dtx} diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx index c1024b938c1..451b9f51a15 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -61,7 +61,7 @@ % \LaTeX, and set |\everyjob| so that it is printed at the start of % every \LaTeX\ run. % -% \StopEventually{} +% \MaybeStop{} % % \changes{v1.0g}{1996/11/28} % {Check for old format modified /2319} @@ -115,7 +115,7 @@ {2022-06-01} %</2ekernel|latexrelease> %<*2ekernel> -\def\patch@level{0} +\def\patch@level{-1} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx index 7a21f7d871f..10ddd44828c 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ % %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{ltxdoc} -%<class> [2020/12/05 v2.1b Standard LaTeX documentation class] +%<class> [2021/12/07 v2.1d Standard LaTeX documentation class] % %<*driver> \documentclass{ltxdoc} @@ -102,7 +102,7 @@ % \PassOptionsToClass{a4paper}{article} %\end{verbatim} % -% All the source files are in two parts, separated by |\StopEventually|. +% All the source files are in two parts, separated by |\MaybeStop|. % The first part (should) contain `user' documentation. The second part % is a full documented listing of the source code. The |doc| package % provides the command |\OnlyDescription| which suppresses the code @@ -156,39 +156,53 @@ % \includeonly{ltvers,ltboxes} %\end{verbatim} % -% \StopEventually{} +% \MaybeStop{} % % % \section{Options} % % \begin{macrocode} %<*class> +% \end{macrocode} +% +% \begin{macrocode} \DeclareOption{a5paper}{\@latexerr{Option not supported}% {}} % \end{macrocode} +% Prevent loading of a config file. +% \begin{macrocode} +\newif\ifltxdoc@load@cfg@ \ltxdoc@load@cfg@true +\DeclareOption{nocfg}{\ltxdoc@load@cfg@false} +% \end{macrocode} % % \begin{macrocode} \DeclareOption*{% \PassOptionsToClass {\CurrentOption}{article}} % \end{macrocode} % -% \section{Configuration} +% \section{Option Processing} +% +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% +% \section{Local configuration} % Input a local configuration file, if it exists. % \begin{macrocode} +\ifltxdoc@load@cfg@ \InputIfFileExists{ltxdoc.cfg} {\typeout{*************************************^^J% * Local config file ltxdoc.cfg used^^J% *************************************}} {} +\else + \typeout{*************************************^^J% + * Local config file ignored^^J% + *************************************} +\fi % \end{macrocode} % % -% \section{Option Processing} -% -% \begin{macrocode} -\ProcessOptions -% \end{macrocode} -% % \section{Loading article and doc} % % \begin{macrocode} @@ -256,7 +270,7 @@ % arguments. It can \emph{not} be use to record commands that are defined as % ``|\outer|'' nor is it possible to use it on conditionals such as % |\iftrue| or defined by |\newif|. -% |\cs{foo}| also prints |\foo|, for those who prefer that +% |\cs{foo}| already available with the \texttt{doc} package also prints |\foo|, for those who prefer that % syntax. (This second form can be used to record all types of command so the % above restrictions do not apply. % \begin{macro}{\cmd} @@ -266,7 +280,7 @@ % \begin{macrocode} \def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} \def\cmd@to@cs#1#2{\char\number`#2\relax} -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} +%\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} % already part of doc.sty % \end{macrocode} % \end{macro} % \end{macro} @@ -602,5 +616,58 @@ Bug reports can be opened (category \texttt{#1}) at\\% \def\task#1#2{} %</class> % \end{macrocode} +% +% +% +% \section{Configuration file} +% +% +% \begin{macrocode} +%<*cfg> +% +% This is the ltxdoc configuration file we use to format the LaTeX +% kernel sources. +% +% +% Copyright 2006, 2007, 2011 Heiko Oberdiek +% Copyright 2014-2021 The LaTeX Project +% + +\ProvidesFile{ltxdoc.cfg}% + [2021/12/07 v2.0c ltxdoc.cls configuration (LaTeX Project)] +\PassOptionsToClass{a4paper}{article} + +% hyperref and hypdoc are now loaded late (or by the user) so we have to wait +% with any adjustments until that has happened + +\AddToHook{package/hyperref/after}{% +%% \RequirePackage{hypdoc}% % this is now triggered by doc + \RequirePackage{pdftexcmds}\relax + \ifnum\pdf@strcmp{\jobname}{inputenc}=0 % + \hypersetup{pdfencoding=auto}% + \pdfstringdefDisableCommands{% + \def\meta#1{% inputenc.dtx + \9060\010#1\9060\011% + }% + }% + \else + \fi + \pdfstringdefDisableCommands{% + \let\env\relax % longtable.dtx + \let\mytt\relax % tabularx.dtx + }% +} + +% This should work well for documentation of packages outside the +% LaTeX kernel, but if not, you can prevent the loading with the +% option "nocfg", i.e., +% +% \documentclass[nocfg]{ltxdoc] +% +% or by providing your own config file + +\endinput +%</cfg> +% \end{macrocode} % \Finale % diff --git a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx index dd482299b28..53224103d95 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -88,7 +88,7 @@ % a space on either side. % % -% \StopEventually{} +% \MaybeStop{} % % \subsection{Cross Referencing} % diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx index 9dc03a8431e..fb6c4746594 100644 --- a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx +++ b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -83,7 +83,7 @@ % \texttt{book} document classes, but works with other classes as % well. It makes |\flushbottom| the default. % -% \StopEventually{} +% \MaybeStop{} % % \section{The {\sc docstrip} modules} % diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.ins b/Master/texmf-dist/source/latex-dev/base/makeindx.ins index 427d4c79674..0fe55ed0392 100644 --- a/Master/texmf-dist/source/latex-dev/base/makeindx.ins +++ b/Master/texmf-dist/source/latex-dev/base/makeindx.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/newdc.ins b/Master/texmf-dist/source/latex-dev/base/newdc.ins index e2ce183f05e..eeec6479ebb 100644 --- a/Master/texmf-dist/source/latex-dev/base/newdc.ins +++ b/Master/texmf-dist/source/latex-dev/base/newdc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx index 3b6e001075b..86c0d47ab63 100644 --- a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -84,7 +84,7 @@ % NFSS1, i.e., to change one font attribute without resetting the % other attributes. % -% \StopEventually{} +% \MaybeStop{} % % % \section{The Code} diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx index 554c7ae8f07..51d7834aa32 100644 --- a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -82,7 +82,7 @@ % the moment only a crude adaption of the test program for the % Computer Modern fonts by Donald Knuth. % -% \StopEventually{} +% \MaybeStop{} % % \section{A driver for this document} % diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins index 7d1b9cc41ae..a181c619721 100644 --- a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins +++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/olddc.ins b/Master/texmf-dist/source/latex-dev/base/olddc.ins index d878507d8e3..707fb207e6c 100644 --- a/Master/texmf-dist/source/latex-dev/base/olddc.ins +++ b/Master/texmf-dist/source/latex-dev/base/olddc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx index d04ddb6323b..b7c9abc3eb4 100644 --- a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -95,7 +95,7 @@ % \end{tabular} % \end{center} % -% \StopEventually{} +% \MaybeStop{} % % \changes{v2.2k}{1995/11/29}{Remove duplicate driver code.} % diff --git a/Master/texmf-dist/source/latex-dev/base/preload.dtx b/Master/texmf-dist/source/latex-dev/base/preload.dtx index bf2bfebbfa9..3b75df38fdb 100644 --- a/Master/texmf-dist/source/latex-dev/base/preload.dtx +++ b/Master/texmf-dist/source/latex-dev/base/preload.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -131,7 +131,7 @@ % \end{quote} % % -% \StopEventually{} +% \MaybeStop{} % % \section{Module switches for the \dst{} program} % diff --git a/Master/texmf-dist/source/latex-dev/base/proc.dtx b/Master/texmf-dist/source/latex-dev/base/proc.dtx index 7a1329fb82c..135c67bc0b2 100644 --- a/Master/texmf-dist/source/latex-dev/base/proc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/proc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -73,7 +73,7 @@ %</driver> %<+class>\ProvidesClass{proc} %<+style>\ProvidesFile{proc.sty} - [2020/11/23 v1.3l + [2021/12/09 v1.3m %<+class> Standard LaTeX document class] %<+style> LaTeX 2.09 compatibility style option `proc'] % \end{macrocode} @@ -131,7 +131,7 @@ % should appear after any |\footnote| commands that produce % footnotes for the first column. % -% \StopEventually{} +% \MaybeStop{} % % \section{The {\sc docstrip} modules} % @@ -338,9 +338,17 @@ % \begin{macrocode} \let\@oddhead\@empty \let\@evenhead\@empty -\def\@oddfoot{\normalfont\rightmark \hfil - \pagename{} \thepage} -\def\@evenfoot{\@oddfoot} +\def\@oddfoot{\rightmark \hfil \pagename{} \thepage} +% \end{macrocode} +% If the \texttt{twoside} option is passed to the class we provide +% a different footer that shows the \cs{leftmark} if that is set. +% \changes{v1.3m}{2021/12/09}{Support twoside (gh/704)} +% \begin{macrocode} +\if@twoside + \def\@evenfoot{\pagename{} \thepage \hfil \leftmark} +\else + \def\@evenfoot{\@oddfoot} +\fi % \end{macrocode} % % diff --git a/Master/texmf-dist/source/latex-dev/base/proc.ins b/Master/texmf-dist/source/latex-dev/base/proc.ins index cfed5bd6a39..16f60195e59 100644 --- a/Master/texmf-dist/source/latex-dev/base/proc.ins +++ b/Master/texmf-dist/source/latex-dev/base/proc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/slides.dtx b/Master/texmf-dist/source/latex-dev/base/slides.dtx index e63c1901d6d..06a4326277e 100644 --- a/Master/texmf-dist/source/latex-dev/base/slides.dtx +++ b/Master/texmf-dist/source/latex-dev/base/slides.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -205,7 +205,7 @@ % features without adding additional |\DeclareFontShape| commands to % your |.fd| files or the preamble of your document. % -% \StopEventually{} +% \MaybeStop{} % % % \section{The Implementation} diff --git a/Master/texmf-dist/source/latex-dev/base/slides.ins b/Master/texmf-dist/source/latex-dev/base/slides.ins index 43ec2bebdf8..8c9862c2d54 100644 --- a/Master/texmf-dist/source/latex-dev/base/slides.ins +++ b/Master/texmf-dist/source/latex-dev/base/slides.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -96,7 +96,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -138,7 +138,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx index b214c49ae4a..ae4d4cd1f85 100644 --- a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx +++ b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -55,7 +55,7 @@ % This command can be used in the preamble for running a document % through \LaTeX{} without actually getting any output. % -% \StopEventually{} +% \MaybeStop{} % % % \section{Identification} diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.ins b/Master/texmf-dist/source/latex-dev/base/syntonly.ins index 6b4113ed115..5812ef2fd6b 100644 --- a/Master/texmf-dist/source/latex-dev/base/syntonly.ins +++ b/Master/texmf-dist/source/latex-dev/base/syntonly.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/tulm.ins b/Master/texmf-dist/source/latex-dev/base/tulm.ins index 98962f2b207..a50060b2013 100644 --- a/Master/texmf-dist/source/latex-dev/base/tulm.ins +++ b/Master/texmf-dist/source/latex-dev/base/tulm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 2016-2021 +%% Copyright (C) 2016-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2016-2021 +Copyright (C) 2016-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/unpack.ins b/Master/texmf-dist/source/latex-dev/base/unpack.ins index 6332fcb5c00..21ba62a33a7 100644 --- a/Master/texmf-dist/source/latex-dev/base/unpack.ins +++ b/Master/texmf-dist/source/latex-dev/base/unpack.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx index 75990d1b036..a0c96357a03 100644 --- a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -190,7 +190,7 @@ % information. % % -% \StopEventually{} +% \MaybeStop{} % % % @@ -216,7 +216,7 @@ %<+ts1> \ProvidesFile{ts1enc.dfu} %<+x2> \ProvidesFile{x2enc.dfu} %<+all> \ProvidesFile{utf8enc.dfu} -%<-utf8-2018> [2021/06/21 v1.2n UTF-8 support] +%<-utf8-2018> [2021/12/13 v1.2o UTF-8 support] % \end{macrocode} % % \begin{macrocode} @@ -773,12 +773,13 @@ % looks slightly strange but is designed for the sequence of |\expandafter| % in |\DeclareUnicodeCharacter|. % +% \changes{v1.2o}{2021/12/13}{Use 80 not A0 to test for single byte UTF-8} % \begin{macrocode} - \ifnum\count@<"A0\relax + \ifnum\count@<"80\relax \ifnum\catcode\count@=13 \uccode`\~=\count@\uppercase{\def\UTFviii@tmp{\@empty\@empty~}}% \else - \@latex@error{Cannot define non-active Unicode char value < 00A0}% + \@latex@error{Cannot define non-active Unicode char value < 0080}% \@eha \def\UTFviii@tmp{\UTFviii@tmp}% \fi @@ -1368,6 +1369,18 @@ %<all,t1,ly1>\DeclareUnicodeCharacter{017E}{\v z} %<all,ts1,ly1>\DeclareUnicodeCharacter{0192}{\textflorin} % \end{macrocode} +% \changes{v1.2n}{2021/12/10}{add 01C4-01CC} +% \begin{macrocode} +%<all,t1>\DeclareUnicodeCharacter{01C4}{D\v Z} +%<all,t1>\DeclareUnicodeCharacter{01C5}{D\v z} +%<all,t1>\DeclareUnicodeCharacter{01C6}{d\v z} +%<all,t1>\DeclareUnicodeCharacter{01C7}{LJ} +%<all,t1>\DeclareUnicodeCharacter{01C8}{Lj} +%<all,t1>\DeclareUnicodeCharacter{01C9}{lj} +%<all,t1>\DeclareUnicodeCharacter{01CA}{NJ} +%<all,t1>\DeclareUnicodeCharacter{01CB}{Nj} +%<all,t1>\DeclareUnicodeCharacter{01CC}{nj} +% \end{macrocode} % \changes{v1.1s}{2016/01/11}{add 01CD-01F4} % \begin{macrocode} %<all,t1>\DeclareUnicodeCharacter{01CD}{\v A} diff --git a/Master/texmf-dist/source/latex-dev/graphics/color.dtx b/Master/texmf-dist/source/latex-dev/graphics/color.dtx index 9418a124773..cf3a7efbcf0 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/color.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/color.dtx @@ -2,7 +2,7 @@ % \iffalse % %% color.dtx Copyright (C) 1994--1999 David Carlisle -%% Copyright (C) 2005-2021 +%% Copyright (C) 2005-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -21,7 +21,7 @@ %<driver> \ProvidesFile{color.drv} % \fi % \ProvidesFile{color.dtx} - [2021/10/11 v1.3b Standard LaTeX Color (DPC)] + [2022/01/06 v1.3d Standard LaTeX Color (DPC)] % % \iffalse %<*driver> @@ -56,7 +56,7 @@ % document \emph{Packages in the `graphics' bundle} in the file % \texttt{grfguide.tex}. % -% \StopEventually{} +% \MaybeStop{} % % % \section{Options} @@ -80,6 +80,8 @@ % {Save and restore catcodes} % \changes{v1.3a}{2021/09/27} % {Use \cs{@backslashchar} in preference to \cs{string} gh/659} +% \changes{v1.3c}{2021/12/07} +% {Remove stray spaces after change to \cs{@backslashchar} xcolor/gh/10} % % \begin{macrocode} \edef\Gin@codes{% @@ -380,7 +382,7 @@ % \begin{macrocode} \DeclareOption{usenames}{% \def\c@lor@usename#1{% - \expandafter\color@named\csname\@backslashchar color @#1\endcsname{#1}}} + \expandafter\color@named\csname\@backslashchar color@#1\endcsname{#1}}} % \end{macrocode} % \end{option} % @@ -437,10 +439,10 @@ % Finally call |\set@color| to effect the colour change. % \begin{macrocode} \def\@declaredcolor#1{% - \@ifundefined{\@backslashchar color @#1}% + \@ifundefined{\@backslashchar color@#1}% {\c@lor@error{`#1'}}% {\expandafter\let\expandafter\current@color - \csname\@backslashchar color @#1\endcsname + \csname\@backslashchar color@#1\endcsname \set@color}% \ignorespaces} % \end{macrocode} @@ -550,10 +552,10 @@ \protected\def\definecolor#1#2#3{% \@ifundefined{color@#2}% {\c@lor@error{model `#2'}}% - {\@ifundefined{\@backslashchar color @#1}{}% + {\@ifundefined{\@backslashchar color@#1}{}% {\PackageInfo{color}{Redefining color #1}}% \csname color@#2\expandafter\endcsname - \csname\@backslashchar color @#1\endcsname{#3}}} + \csname\@backslashchar color@#1\endcsname{#3}}} % \end{macrocode} % \end{macro} % @@ -824,6 +826,13 @@ % \end{macrocode} % \end{macro} % +% \subsection{Providing \cs{mathcolor}} +% +% This is shared coded between different packages, so external. +% +% \begin{macrocode} +\input{mathcolor.ltx} +% \end{macrocode} % % \section{Extra Groups} % Turning on extra groups in the standard \LaTeX\ commands, so that diff --git a/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx b/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx index 6704ad11c68..e1c19e0296f 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx @@ -3,7 +3,7 @@ % %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2021 +%% Copyright (C) 2000-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -77,7 +77,7 @@ % % % -% \StopEventually{} +% \MaybeStop{} % % % \section{Colour} diff --git a/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx b/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx index a34aa6842ee..b8927f2da55 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx @@ -2,7 +2,7 @@ % \iffalse % %% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz -%% Copyright (C) 2000-2021 +%% Copyright (C) 2000-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -41,7 +41,7 @@ % \maketitle % % -% \StopEventually{} +% \MaybeStop{} % % \section{Preface} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx b/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx index cec35559ef8..c9b381adad7 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2021 +%% Copyright (C) 1995-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -276,7 +276,7 @@ % and |\rotatebox| commands that some people may prefer. It is provided % by the accompanying |graphicx| package. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Graphics Kernel Functions} % diff --git a/Master/texmf-dist/source/latex-dev/graphics/graphics.ins b/Master/texmf-dist/source/latex-dev/graphics/graphics.ins index 95e190c9ecd..09c37e7c386 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/graphics.ins +++ b/Master/texmf-dist/source/latex-dev/graphics/graphics.ins @@ -40,4 +40,6 @@ reports for it can be opened at https://latex-project.org/bugs/ \generate{\file{rotating.sty}{\from{rotating.dtx}{package}}} +\generate{\file{mathcolor.ltx}{\from{mathcolor.dtx}{code}}} + \endbatchfile diff --git a/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx b/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx index 29e0db5b12f..8c200915859 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2021 +%% Copyright (C) 1995-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -211,7 +211,7 @@ % which rotates around the reference point on the baseline, thus % producing a box that is mainly \emph{below} the baseline. % -% \StopEventually{} +% \MaybeStop{} % % % \section{Implementation} diff --git a/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx b/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx index 58664b8f037..233d9732011 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx @@ -1,7 +1,7 @@ % % \iffalse %% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2021 David Carlisle, LaTeX Project +%% Copyright (C) 2000-2022 David Carlisle, LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -202,7 +202,7 @@ % package do not break styles making use of these `low level' % definitions. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx b/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx index 969c94ae7a8..d173af6468a 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx @@ -2,7 +2,7 @@ % \iffalse % %% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle -%% Copyright (C) 2000-2021 +%% Copyright (C) 2000-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -54,7 +54,7 @@ % page before the page head and foot are added. % % -% \StopEventually{\end{landscape}} +% \MaybeStop{\end{landscape}} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \changes{v1.00}{1992/04/28}{Initial release} diff --git a/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx b/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx new file mode 100644 index 00000000000..6ed53f8f618 --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/graphics/mathcolor.dtx @@ -0,0 +1,421 @@ +% \iffalse meta-comment +% +%% File: mathcolor.dtx (C) Copyright 2021-2022 +% Frank Mittelbach, LaTeX Team +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +%%% From File: mathcolor.dtx +% +% \begin{macrocode} +\def\mathcolorversion{v1.0a} +\def\mathcolordate{2022/01/07} +% \end{macrocode} +%<*driver> +\documentclass{l3doc} + +%\makeatletter \input{mathcolor.ltx} \makeatother + +\usepackage{color} + +% Fixing footnotes in functions and variables: this should be in l3doc! + +\newcommand\fixfootnote[2]{\footnotemark + \AddToHookNext{env/#1/after}{\footnotetext{#2}}} +\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}} +\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}} + +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{mathcolor.dtx} +\end{document} +%</driver> +% +% \fi + + + +% +% \title{Providing color in math\thanks{This file has version +% \mathcolorversion\ dated \mathcolordate, \copyright\ \LaTeX\ +% Project.}} +% \author{Frank Mittelbach} +% +% \maketitle +% +% +% \section{Introduction} +% +% It is possible to use the \cs{color} command in math formulas but +% doing that has a number of restrictions and often leads to rather +% unreadable input. For example, to color the summation sign in red +% in the following formula +% \[ +% X = \color{red} \sum_{{\color{black} i=1}}^{{\color{black} n}} \color{black} x_i +% \] +% A total of four color commands and a number of seemingly +% unnecessary extra braces in the sub and superscript are needed: +%\begin{verbatim} +% \[ X = \color{red} \sum +% _{{\color{black} i=1}} % without {{ the superscript is misplaced +% ^{{\color{black} n}} % without {{ the \sum is black +% \color{black} % without the x_i is red +% x_i \] +%\end{verbatim} +% While this is ugly but at least works, other things are simply +% impossible, e.g., +% \[ \left\{ \frac{1}{2} \mathcolor{red}{\right\}} \] +% are not achievable at all because of the fact that \cs{left} and +% \cs{right} form a group. Thus, a \cs{color} command immediately +% before the \cs{right} has no effect and \verb=\}= remains black. +% Putting the color change before the \cs{left} and then resetting +% the color inside would work if you want to color both braces, but +% the above combination or the attempt to color only the left brace +% fails always. +% +% Using \cs{textcolor} in formulas appears to work on first glance, +% but it produces spacing problems that are not easy to overcome +% either, because it generates a single \cs{mathord} and no +% longer reflects its input, thus +% \verb/\[ a = b \textcolor{red}{\neq} c \]/ +% produces +% \[ a = b \textcolor{red}{\neq} c \] +% This is a case one could mend by wrapping the +% \cs{textcolor} and its arguments in a \cs{mathrel}, but even when +% that is possible, the resulting formula source is difficult to +% maintain and in other situations the solutions are even more +% complicated or there is no solution at all. +% +% We therefore offer now a dedicated math coloring command named +% \cs{mathcolor}. +% +% \begin{function}{\mathcolor} +% \begin{syntax} +% \cs{mathcolor} \oarg{model} \Arg{color-spec} \Arg{math material} +% \end{syntax} +% It has the same arguments as \cs{textcolor} but is intended for +% use in formulas. The command does not generate a group and the +% \meta{math material} retains its math atom states and it correctly +% handles sub and superscripts that follow. +% \end{function} +% +% The command can also be used to color a single opening or closing +% symbol, e.g., the correct input to our earlier example is +%\begin{verbatim} +% \[ \left\{ \frac{1}{2} \mathcolor{red}{\right\}} \] +%\end{verbatim} +% which is how it was produced. +% +% If you attempt to color large operators that use explicit +% \cs{limits}, \cs{nolimits}, or \cs{displaylimits}, then these +% limit controls need to immediately follow the operator. However, +% \cs{mathcolor} is written in a way that it is possible write +%\begin{verbatim} +% \[ \mathcolor{red}{\int}\limits_0^1 \textrm{ or } +% \mathcolor{red}{\int\limits}_0^1 \] +%\end{verbatim} +% and achieve the same effect: +% \[ \mathcolor{red}{\int}\limits_0^1 \textrm{ or } +% \mathcolor{red}{\int\limits}_0^1 \] + +% +% +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } +% +% +% \section{The Implementation} +% +% The code is called inside of the \pkg{color} or \pkg{xcolor} +% packages, so \texttt{@} is already a letter, but the +% coding here is done in the L3 programming layer, so we need to +% activate that. But first we check if this file was loaded before, +% e.g., when both \pkg{color} and \pkg{xcolor} are in the preamble +% and in that case we stop immediately. +% \begin{macrocode} +%<*code> +\ifcsname mathcolor\endcsname \endinput \fi +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOn +%<@@=mathcolor> +% \end{macrocode} +% +% \begin{macro}{\g_@@_seq} +% We need to keep our own stack of color commands, so we allocate a +% sequence for that. +% \begin{macrocode} +\seq_new:N \g_@@_seq +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\mathcolor} +% The document-level command which expects a color (if unnamed then +% the optional argument is the model) and colors the content of the +% second argument (like \cs{textcolor}, but without spacing +% problems in math). +% \begin{macrocode} +\DeclareDocumentCommand \mathcolor { o m m } { +% \end{macrocode} +% First action is to save the current color value on a stack +% (needed if the command is nested or contains some further color +% changes with \cs{color} inside). +% \begin{macrocode} + \seq_gpush:No \g_@@_seq \current@color +% \end{macrocode} +% Then we switch to the new color, but we do not want to reset the +% color after the group (which is done by \cs{color} using +% \cs{aftergroup}\cs{reset@color}). The best solution here would be +% if the color packages would provide a command doing just the +% color switching, but for now we simply undo that part by pushing +% \cs{use_none:n} which gobbles the \cs{reset@color} added by +% \cs{color} with \cs{aftergroup}. +% \begin{macrocode} + \group_insert_after:N \use_none:n +% \end{macrocode} +% Switching the color is also slightly suboptimal, because +% depending on whether or not we have a \meta{model} argument, we +% have to call \cs{color} with or without the optional argument. But +% going low-level here is not an option as we need to support +% different color packages and their internals are not identical. +% \begin{macrocode} + \IfValueTF{#1} { \color[#1]{#2} }{ \color{#2} } +% \end{macrocode} +% Then comes the math material we want to see colored: +% \begin{macrocode} + #3 +% \end{macrocode} +% After that we need to reset the color ourselves (without a group +% that does it for us), i.e., popping the saved color from our +% stack, but there are some twists to that so we do this in a +% separate command (which in fact needs to be called several times, +% so inlining the code wouldn't be possible. +% \begin{macrocode} + \@@_scan_for_scripts:w +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\@@_scan_for_scripts:w} +% The complication when changing the color back is due to the fact +% that the \cs{mathcolor} may be followed by \verb=^= or \verb=_= +% or the hidden superscript \texttt{'} and its argument may end in a +% \cs{mathop} in which case the sub and superscripts may be +% attached as \cs{limits} instead of after the material. All cases +% need separate treatment. +% \begin{macrocode} +\cs_new_protected:Npn \@@_scan_for_scripts:w { +% \end{macrocode} +% We therefore first parse for a \cs{c_math_subscript_token} +% ignoring (dropping) any spaces and \cs{relax} as \TeX{} would +% do. We do this with expansion so that hidden sub or superscripts +% in macros are still found as long as the macros are expandable. +% \begin{macrocode} + \@@_peek_catcode_ignore_filler_expand:NTF \c_math_subscript_token +% \end{macrocode} +% If we found that character we call a function that handles sub or +% superscripts. +% \begin{macrocode} + { \@@_handle_scripts:Nw } +% \end{macrocode} +% Otherwise check if this token we peeked at (which is now stored +% in \cs{l_peek_token} is a superscript token. +% \begin{macrocode} + { \token_if_math_superscript:NTF \l_peek_token +% \end{macrocode} +% If found we call the sub/superscript handler. +% \begin{macrocode} + { \@@_handle_scripts:Nw } +% \end{macrocode} +% Otherwise we check if it was any of the limit operation +% primitives. If that is the case, e.g., if we have a situation +% such as +%\begin{verbatim} +% \mathcolor{red}{\int}\limits_1 +%\end{verbatim} +% we have to move it directly after the \cs{int} to ensure there +% is no color reset between the operator and the \cs{limits} command. +% \begin{macrocode} + { \token_case_meaning:NnTF \l_peek_token + { + \limits { \limits } + \nolimits { \nolimits } + \displaylimits { \displaylimits } + } +% \end{macrocode} +% Once that is done, we have to get rid of the token we peeked at +% and then restart scanning for sub or superscripts. Given that +% \cs{@@_scan_for_scripts:w} expands while scanning the simplest +% solution is to add \cs{use_none:n} in front of the peeked at token. +% \begin{macrocode} + { \@@_scan_for_scripts:w \use_none:n } +% \end{macrocode} +% If it was one of these we look for a \texttt{'} and if found remove it and +% replace it by its expansion. The reason we have to do this (and +% not rely on the earlier peeking to expand for us is the fact +% that \texttt{'} is only ``math active'' and that doesn't expand +% under \cs{expanded} or \cs{expandafter}. +% \begin{macrocode} + { \peek_meaning_remove:NTF ' + { \@@_handle_scripts:Nw ^\c_group_begin_token \prim@s } +% \end{macrocode} +% If it is anything else we finish off which means we reset the +% color (because we prevented that before to happen automatically +% after the next group) and pop the color stack setting \cs{current@color}. +% \begin{macrocode} + { \reset@color + \seq_gpop:NN \g_@@_seq \current@color + } + } + } + } +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\@@_handle_scripts:Nw} +% The tricky part of handling sub and superscripts is that we have +% to reset color to the one that is on the stack but reset it back +% to what it was before to allow for cases like +%\begin{verbatim} +% \[ \mathcolor{red}{a+\sum}_{i=1}^n \] +%\end{verbatim} +% Here, \TeX{} constructs a \cs{vbox} stacking subscript, summation +% sign, and superscript. So technically the superscript comes first +% and the \cs{sum} that should get colored red is the middle. +% \begin{macrocode} +\cs_new_protected:Npn \@@_handle_scripts:Nw #1 { +% \end{macrocode} +% The argument is either \verb=^= or \verb=_=, so we execute it and +% explicitly open two \verb={= groups. We need two because color +% resets are always done after a group, so the first group is for +% script material (in case it was just something like \verb=_i=) +% and the second is needed for the color reset to keep it within +% the super or subscript. If that reset would happen after it then +% the color \cs{special} would interfere with \TeX{} math spacing. +% \begin{macrocode} + #1 \c_group_begin_token \c_group_begin_token +% \end{macrocode} +% Now it is time to change the color back to the one on the stack. +% \begin{macrocode} + \seq_get:NN \g_@@_seq \current@color + \set@color +% \end{macrocode} +% \cs{set@color} adds \cs{aftergroup}\cs{reset@color}. We now a add +% bit more so that the code executed after the current (inner) group +% looks like this: +%\begin{verbatim} +% \reset@color } \@@_scan_for_scripts:w +%\end{verbatim} +% The \cs{_@@_scan_for_scripts:w} then retakes control and initiates +% parsing for another sub or superscript. +% \begin{macrocode} + \group_insert_after:N \c_group_end_token + \group_insert_after:N \@@_scan_for_scripts:w +% \end{macrocode} +% Before we give control to \TeX{} to process the sub or +% superscript some final adjustment is necessary: if the input was +% \verb=^{...}= then we have one \verb={= too many, because we +% already supplied the outer one already. In that case we drop +% it. Otherwise we have an unbraced single token sub or superscript +% which means we are missing a closing \verb=}= at the end and need +% to account for that: this is done in \cs{_@@_handle_unbraced_script:N}. +% \begin{macrocode} + \@@_peek_catcode_ignore_filler_expand:NTF \c_group_begin_token + { \peek_catcode_remove:NT \c_group_begin_token { } } + { \@@_handle_unbraced_script:N } + }% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\@@_handle_unbraced_script:N} +% All we have to do here is to add the final closing brace. +% \begin{macrocode} +\cs_new_protected:Npn \@@_handle_unbraced_script:N #1 { + #1 \c_group_end_token } +% \end{macrocode} +% \end{macro} +% +% +% +% \subsection{Utility function for the peek module} +% +% This peek is expanding and ignores spaces and \cs{relax} (even +% though the name doesn't say so) +% but \cs{relax} is usually allowed in such places where we so it +% may not be bad to have it in this way in general --- maybe this +% should move to expl3 peek functions (or otherwise the naming +% should perhaps be adjusted). +% +% +% \begin{macrocode} +\tl_new:N \l_@@_peek_tmp_tl +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_peek_catcode_ignore_filler_expand:NTF #1#2#3 + { + \tl_set:Nn \l_@@_peek_tmp_tl + { \token_if_eq_catcode:NNTF \l_peek_token #1 {#2} {#3} } + \@@_peek_expand:w + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_peek_expand:w + { + \exp_after:wN \peek_catcode_remove:NTF + \exp_after:wN \c_space_token + \exp_after:wN \@@_peek_test_expand:w + \exp_after:wN \@@_peek_test_relax:w + \exp:w \exp_end_continue_f:w + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_peek_test_expand:w + { + \token_if_expandable:NTF \l_peek_token + { \@@_peek_expand:w } + { \l_@@_peek_tmp_tl } + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_peek_test_relax:w + { + \peek_meaning_remove:NTF \scan_stop: + { \@@_peek_expand:w } + { \@@_peek_test_expand:w } + } +% \end{macrocode} +% +% \begin{macrocode} +%<@@=> +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOff +%</code> +% \end{macrocode} +% +% \Finale +% +% + +%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%% + diff --git a/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx b/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx index c6db1273a43..ac64086082a 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx @@ -5,7 +5,7 @@ % File: rotating.dtx %% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca %% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns -%% Copyright (C) 2016-2021 LaTeX Project +%% Copyright (C) 2016-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. % @@ -157,7 +157,7 @@ % top does % \end{tabular} % -% \StopEventually{} +% \MaybeStop{} % % \section{Setup} % Now we present the documented code. First, package options. diff --git a/Master/texmf-dist/source/latex-dev/graphics/trig.dtx b/Master/texmf-dist/source/latex-dev/graphics/trig.dtx index 533f3b06482..4b673494aff 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/trig.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/trig.dtx @@ -1,6 +1,6 @@ % \iffalse %% File: trig.dtx Copyright (C) 1993-1999 David Carlisle -%% Copyright (C) 2000-2021 +%% Copyright (C) 2000-2022 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -78,7 +78,7 @@ % |\dimen2=\UseSin{30}\dimen0|. Which means that |\UseSin| must % \emph{expand} to a \meta{factor}. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx index e5fa69f5152..cf949c0aca7 100644 --- a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -101,7 +101,7 @@ % on a new page. % \end{enumerate} % -% \StopEventually{} +% \MaybeStop{} % % \begin{macrocode} %<*package> diff --git a/Master/texmf-dist/source/latex-dev/tools/afterpage.ins b/Master/texmf-dist/source/latex-dev/tools/afterpage.ins index 0cfc531f193..3aa1679f77a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/afterpage.ins +++ b/Master/texmf-dist/source/latex-dev/tools/afterpage.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/array.dtx b/Master/texmf-dist/source/latex-dev/tools/array.dtx index ba88aba7c26..acee0ce5053 100644 --- a/Master/texmf-dist/source/latex-dev/tools/array.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/array.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -753,7 +753,7 @@ % % \changes{v2.2b}{1994/02/04}{Removed interactive prompt} % -% \StopEventually{ +% \MaybeStop{ % % % \begin{thebibliography}{1} @@ -773,7 +773,7 @@ % Addison-Wesley, Reading, Massachusetts, 1986. % \end{thebibliography} % -% } ^^A end of \StopEventually +% } ^^A end of \MaybeStop % % % diff --git a/Master/texmf-dist/source/latex-dev/tools/bm.dtx b/Master/texmf-dist/source/latex-dev/tools/bm.dtx index 2b56b92b547..daf4dce66ba 100644 --- a/Master/texmf-dist/source/latex-dev/tools/bm.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/bm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -22,7 +22,7 @@ % \fi % % \iffalse -%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 +%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 2021 2022 %% David Carlisle Frank Mittelbach %% %% Development of this package was commissioned by Y&Y Inc. @@ -36,7 +36,7 @@ %<driver>\ProvidesFile{bm.drv} % \fi % \ProvidesFile{bm.dtx} - [2021/04/25 v1.2e Bold Symbol Support (DPC/FMi)] + [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)] % % \iffalse %<*driver> @@ -312,7 +312,7 @@ % the package option |nopbm| is available which prevents its use in which case |\bm| will % use the non-bold for characters from the affected font, % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % @@ -839,9 +839,12 @@ \unvcopy{\GenericError{##1}{##2}{##3}{##4}}}% % \end{macrocode} % For AMS definitions. +% \changes{v1.2f}{2022/01/05} +% {Guard \cs{nolimits@}, gh/744} % \begin{macrocode} \let\DN@\copy \let\FN@\copy + \let\nolimits@\copy \let\next@\copy \global\let\bm@first\@empty % \end{macrocode} @@ -1016,7 +1019,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\bm@end} +% \begin{macro}[outer]{\bm@end} % \changes{v0.10}{1997/01/04} % {Macro added} % Normally speaking |\outer| declarations should be avoided at all diff --git a/Master/texmf-dist/source/latex-dev/tools/bm.ins b/Master/texmf-dist/source/latex-dev/tools/bm.ins index c00a3e5cca4..51243a60907 100644 --- a/Master/texmf-dist/source/latex-dev/tools/bm.ins +++ b/Master/texmf-dist/source/latex-dev/tools/bm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/calc.dtx b/Master/texmf-dist/source/latex-dev/tools/calc.dtx index 78b6167fe6f..97ef72e7b9c 100644 --- a/Master/texmf-dist/source/latex-dev/tools/calc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/calc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -425,7 +425,7 @@ % syntax characters. % % -% \StopEventually{ +% \MaybeStop{ % \begin{thebibliography}{1} % \bibitem{texbook} % \textsc{D. E. Knuth}. diff --git a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx index 069e633221d..7415e237523 100644 --- a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -191,7 +191,7 @@ % "D{+}{\,\pm\,}{3,3}" will give nice, symmetric layout of up to three % digits on either side of a $\pm$ sign. % -% \StopEventually{} +% \MaybeStop{} % % % \section{The Macros} diff --git a/Master/texmf-dist/source/latex-dev/tools/delarray.dtx b/Master/texmf-dist/source/latex-dev/tools/delarray.dtx index cc503707b0d..d8aba52f325 100644 --- a/Master/texmf-dist/source/latex-dev/tools/delarray.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/delarray.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -100,7 +100,7 @@ % \end{verbatim} % % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx index 150a7386b83..89910438e9c 100644 --- a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -122,7 +122,7 @@ % |\ref{LA}|, |\ref{LB}| and |\ref{LC}| produce % `\ref{LA}', `\ref{LB}' and `\ref{LC}' respectively. % -% \StopEventually{} +% \MaybeStop{} % %\section{Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx b/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx index d9163041161..59c1bbbbec5 100644 --- a/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -51,7 +51,7 @@ % \par After installing these files the user can respond with % |h|, |q|, |r|, |s|, |e|, |x|, and on some systems also with % \meta{return} to \TeX's missing file name question. -% \StopEventually{} +% \MaybeStop{} % % \section{The documentation driver} % This code will generate the documentation. Since it is the diff --git a/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx b/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx index b7208267736..de2b55a608b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -70,7 +70,7 @@ % The |fontsmpl| document prompts interactively for a font family (for % example `|cmr|') and produces a sample of that family. % -% \StopEventually{} +% \MaybeStop{} % % \section{Documentation} % diff --git a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx index e8da56aa204..1a7f7f584f8 100644 --- a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -292,7 +292,7 @@ % worth of footnote material and that means that some of your footnotes are % likely to be detached from their reference and show up on a later page! % -% \StopEventually{ +% \MaybeStop{ % % \begin{small} % \begin{thebibliography}{1} diff --git a/Master/texmf-dist/source/latex-dev/tools/hhline.dtx b/Master/texmf-dist/source/latex-dev/tools/hhline.dtx index 98d68024515..74143d1373d 100644 --- a/Master/texmf-dist/source/latex-dev/tools/hhline.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/hhline.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -148,7 +148,7 @@ % program, or if this is not possible, increasing "\arrayrulewidth" % may help to reduce the effect. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx index e54df284ae1..dff777d29df 100644 --- a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -59,7 +59,7 @@ % % \CheckSum{4}^^A Still I think a record:-) % -% \StopEventually{} +% \MaybeStop{} % % \begin{macro}{\if@afterindent} % \LaTeX\ uses the switch |\if@afterindent| to decide whether to indent diff --git a/Master/texmf-dist/source/latex-dev/tools/layout.dtx b/Master/texmf-dist/source/latex-dev/tools/layout.dtx index de61aeae8c4..323705e9ba8 100644 --- a/Master/texmf-dist/source/latex-dev/tools/layout.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/layout.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -92,7 +92,7 @@ % \layout % \end{figure} % -% \StopEventually{} +% \MaybeStop{} % % \section{The implementation} % diff --git a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx index b66aef075eb..72b8727d81a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -770,7 +770,7 @@ % \end{verbatim} % \endgroup % -% \StopEventually{} +% \MaybeStop{} % % \finalclearpage % \section{The Macros} diff --git a/Master/texmf-dist/source/latex-dev/tools/longtable.ins b/Master/texmf-dist/source/latex-dev/tools/longtable.ins index 92a04e00d4e..7f53df7c5e5 100644 --- a/Master/texmf-dist/source/latex-dev/tools/longtable.ins +++ b/Master/texmf-dist/source/latex-dev/tools/longtable.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/multicol.dtx b/Master/texmf-dist/source/latex-dev/tools/multicol.dtx index 8d868357da2..aa21d75f077 100644 --- a/Master/texmf-dist/source/latex-dev/tools/multicol.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/multicol.dtx @@ -92,17 +92,19 @@ %<package>\providecommand\DeclareCurrentRelease[2]{} %<package> %<package>\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty} -%<package>\DeclareCurrentRelease{}{2018-04-01} +%<package>\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty} +%<package>\DeclareCurrentRelease{}{2021-11-15} %<package> %<package>\ProvidesPackage{multicol} %<driver> \ProvidesFile{multicol.drv} % \fi % \ProvidesFile{multicol.dtx} - [2021/10/28 v1.9b multicolumn formatting (FMi)] + [2021/11/30 v1.9d multicolumn formatting (FMi)] % % %% % +% \changes{v1.9c}{2021/11/30}{Added rollback to v1.8} % \changes{v1.5n}{1997/06/05}{Applied improvement of documentation, % kindly done by Robin Fairbairns.} % \changes{v1.4h}{1992/06/04}{Added mark tracing with @@ -844,7 +846,7 @@ % \changes{v1.5l}{1996/01/13}{Try hard to explain unresolved reference % that happens if \cs{OnlyDescription} is used} % -% \StopEventually{\PrintIndex \PrintChanges +% \MaybeStop{\PrintIndex \PrintChanges % \ifx\Finale\relax % \typeout{**********************************} % \typeout{* Info: Typesetting this document with @@ -4149,7 +4151,11 @@ a multicols or multicols* environment.}% \else \ifvmode - \nobreak\vfill\penalty -\@Mv\relax +% \end{macrocode} +% We need to guard the \cs{vfill} from disappearing. +% \changes{v1.9d}{2021/12/05}{Guard the \cs{vfill} (sx/624940)} +% \begin{macrocode} + \nobreak\vfill\kern\z@\penalty -\@Mv\relax \else \@bsphack \vadjust{\nobreak\vfill\kern\z@\penalty -\@Mv\relax}% diff --git a/Master/texmf-dist/source/latex-dev/tools/multicol.ins b/Master/texmf-dist/source/latex-dev/tools/multicol.ins index c8838f8be22..9bbf2780ad7 100644 --- a/Master/texmf-dist/source/latex-dev/tools/multicol.ins +++ b/Master/texmf-dist/source/latex-dev/tools/multicol.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx b/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx index f54aeaf44db..cbd1ba89ea5 100644 --- a/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -63,7 +63,7 @@ % \end{verbatim} % to your |latex209.cfg| \LaTeX~2.09 compatibility configuration file. % -% \StopEventually{} +% \MaybeStop{} % % \section*{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx index 54027cada76..4f60ff8d039 100644 --- a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx @@ -1,6 +1,6 @@ % \iffalse %% Source File: shellesc.dtx -%% Copyright (C) 2015-2021 +%% Copyright (C) 2015-2022 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx index 3c9236f2ef4..959b5c62ec9 100644 --- a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -248,7 +248,7 @@ % % \end{thebibliography} % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx b/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx index 825a93ec666..24916b4286b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -87,7 +87,7 @@ % For a longer example of the use of the |somedefs| package, look at the % |rawfonts| package. % -% \StopEventually{} +% \MaybeStop{} % % \section*{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx index a0f75fc4fa6..0d1cbeac34a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -261,7 +261,7 @@ % This behaviour of the package can be customised slightly % as noted in the documentation of the code section. % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/tabularx.ins b/Master/texmf-dist/source/latex-dev/tools/tabularx.ins index a0d39c2564a..0c6d26e940b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tabularx.ins +++ b/Master/texmf-dist/source/latex-dev/tools/tabularx.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx index 8543ff9d7cb..2dc0412efb9 100644 --- a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -332,7 +332,7 @@ % (looking everything over) and many others providing useful % suggestions. % -% \StopEventually{% +% \MaybeStop{% % \begin{thebibliography}{9} % \bibitem{bk:GMS94} \textsc{M.~Goossens}, \textsc{F.~Mittelbach} % and \textsc{A.~Samarin}. diff --git a/Master/texmf-dist/source/latex-dev/tools/tools.ins b/Master/texmf-dist/source/latex-dev/tools/tools.ins index 15c64ac80ab..b93f649153d 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tools.ins +++ b/Master/texmf-dist/source/latex-dev/tools/tools.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -49,7 +49,7 @@ reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/trace.dtx b/Master/texmf-dist/source/latex-dev/tools/trace.dtx index d10243f690b..93906eb76b3 100644 --- a/Master/texmf-dist/source/latex-dev/tools/trace.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/trace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -278,7 +278,7 @@ % \small \texttt{\$} \stop %\end{verbatim} % -% \StopEventually{} +% \MaybeStop{} % % \section{Implementation} % diff --git a/Master/texmf-dist/source/latex-dev/tools/varioref.dtx b/Master/texmf-dist/source/latex-dev/tools/varioref.dtx index faf8b0383ce..579c4118688 100644 --- a/Master/texmf-dist/source/latex-dev/tools/varioref.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/varioref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -40,7 +40,7 @@ %<package>\DeclareCurrentRelease{}{2019-10-01} %<package> %<package>\ProvidesPackage{varioref} -%<package> [2021/07/07 v1.6f package for extended references (FMi)] +%<package> [2022/01/09 v1.6f package for extended references (FMi)] % \fi % %% @@ -149,7 +149,7 @@ % |\pageref| when the difference is larger. The word `facing' is used % when label and reference both fall onto a double spread. However, % if a special page numbering scheme is used instead of the usual -% arabic numbering (e.g., |\pagenumbering{roman}|) then there will be +% Arabic numbering (e.g., |\pagenumbering{roman}|) then there will be % no distinction between one or many pages off. % %\DescribeMacro\vpageref Sometimes one wants to refer only to page @@ -172,7 +172,7 @@ % A space in front of |\vpageref| it will be ignored if % the command doesn't produce any text at all. % -% But in fact |\vpageref| allows even more control. If has two +% But in fact |\vpageref| allows even more control. It has two % optional arguments. With the first one, one can specify the text % that should be used if label and reference fall on the same page. % This is very helpful if both are near to each other, so that they @@ -293,7 +293,7 @@ % Another command for conditional processing is |\vpagerefnearby|. It % takes three arguments: a label and a \meta{true} and \meta{false} % argument. It compares the page reference to the label with the -% current page number and if both are arabic number and only differ by +% current page number and if both are Arabic number and only differ by % $\pm1$ the \meta{true} argument is executed otherwise the % \meta{false} argument. In other words it tells you if a |\vpageref| % to the label would result in a textual reference to the previous, @@ -330,19 +330,19 @@ % space in front. Of course you are then responsible to always add it % when necessary, but that does make the source more readable so it is % a good thing. This also has the advantage that the star forms are -% now unnecessary again and can be used in the way implemeented by +% now unnecessary again and can be used in the way implemented by % \pkg{hyperref} if both packages are used together. % % In fact it would be much nicer to make that the % default but the package has been used by many people for so many -% years that changing the default would break way to many older documents. +% years that changing the default would break way too many older documents. % % % \DescribeMacro\labelformat % A reference via |\ref| produces by default the data associated with % the corresponding |\label| command (typically a number); any % additional formatting has to be provided by the user. With -% |\labelformat| it is possible to declare scuch formatting for each +% |\labelformat| it is possible to declare such formatting for each % ``reference'' counter, e.g., %\begin{verbatim} % \labelformat{section}{section~#1} @@ -454,7 +454,7 @@ %\DescribeMacro\reftextvario To allow a bit random variation in the % generated strings one can use the command |\reftextvario| inside the % string macros. It takes two arguments and selects one or the other -% for printing depending on the number of already seens |\vref| or +% for printing depending on the number of already seen |\vref| or % |\vpageref| commands. As an example see the definitions of % |\reftextbefore| etc.\ \vpageref[below]{reftextbefore}. % @@ -485,7 +485,7 @@ % \DescribeMacro\fullrefformat % In some languages (currently only for Japanese) the generated text % has to typeset in different word order to most other (Western) languages. -% To accomodate for this \cs{vrefformat}, etc.\ has been +% To accommodate for this \cs{vrefformat}, etc.\ has been % added to allow to alter this on a per language basis. % There should be normally no need to alter the setup. For details see % the code section. @@ -572,7 +572,7 @@ % know for sure that label and reference can't fall onto nearby pages. % % -% \StopEventually{\PrintIndex\PrintChanges} +% \MaybeStop{\PrintIndex\PrintChanges} % % % \section{The documentation driver file} @@ -701,7 +701,7 @@ % \label{reftextbefore} The options do set the macros that % generate the textual strings. Note, that they do not start with a % space, the space is already added in the main macro below. -% \changes{v1.2a}{1998/08/22}{Added american defaults for +% \changes{v1.2a}{1998/08/22}{Added American defaults for % \cs{reftextpagerange} and \cs{reftextlabelrange}} % \changes{v1.4d}{2002/11/11}{Changed default for \cs{reftextbefore}} % @@ -1335,7 +1335,7 @@ % \end{macrocode} % Defaults for Japanese. It needs a special \cs{vrefformat}, % \cs{Vrefformat}, \cs{fullrefformat} and \cs{vrefrangeformat} -% for gramatical reasons. As our standard documentation +% for grammatical reasons. As our standard documentation % workflow uses pdf\TeX{} the Japanese letters can't be displayed % easily, so you will see missing glyphs below. To see the real % letters you have to look at the source or package file. @@ -1354,7 +1354,7 @@ \def\reftextpagerange#1#2{\pageref{#1}から\pageref{#2}ページ}% \def\reftextlabelrange#1#2{\ref{#1}から\ref{#2}}% % \end{macrocode} -% Note that the parentheses beow are not normal ones but full width +% Note that the parentheses below are not normal ones but full width % ones U+FF08 and U+FF09! % \begin{macrocode} \def\vrefformat#1#2{\ref{#2}(\vpageref[#1]{#2})}% @@ -1376,7 +1376,7 @@ % % The option assumes that there is a command |\aza| defined which % helps resolving this problem.\footnote{This information is actually quite -% old but unfortunately never made it into varioref. In case any work +% old but unfortunately never made it into \pkg{varioref}. In case any work % has been undertaken to resolve this please inform the author about it.} % \changes{v1.2a}{1998/08/22}{Added defaults for magyar} % \changes{v1.4j}{2005/01/22}{Defined \cs{reftextfaceafter} and @@ -1505,7 +1505,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% The portuguese default text has been provided by +% The Portuges default text has been provided by % Jos\'e Carlos Oliveira Santos \verb=jcsantos@fc.up.pt=. % \changes{v1.2b}{1999/11/25}{Added portuguese defaults} % \changes{v1.2c}{1999/12/02}{Added more portuguese defaults} @@ -1552,7 +1552,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% The text for russian was taken from the book in Russian by +% The text for Russian was taken from the book in Russian by % I.~A.~Kotelnikov and P.~Z.~Chebotaev, and adapted % to the encoding-independent form by Vladimir Volovich % (\verb=vvv@vsu.ru=). @@ -1589,7 +1589,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% The text for slovak defaults was contributed by Miroslav Sedivy\\ +% The text for Slovak defaults was contributed by Miroslav Sedivy\\ % (\verb=<miro@slovensko.com>=). % \changes{v1.4b}{2002/03/11}{Contributed defaults added} % \begin{macrocode} @@ -1613,7 +1613,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% The text for slovene defaults was contributed by Roman Maurer\\ +% The text for Slovene defaults was contributed by Roman Maurer\\ % (\verb=<roman.maurer@amis.net>=). % \changes{v1.4a}{2002/03/05}{Contributed defaults added} % \begin{macrocode} @@ -1633,7 +1633,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% Text for spanish defaults was contributed by Julio Sanchez +% Text for Spanish defaults was contributed by Julio Sanchez % (\verb=jsanchez@gmv.es=) and Fernando Dobladez (\verb=<ferd@fuego.com>=). % \changes{v1.0f}{1994/03/16}{Inserted missing hash mark} % \changes{v1.0k}{1994/06/05}{Corrected misspelled cmd `extrasspanish} @@ -1657,7 +1657,7 @@ \let\vrefrangeformat\vrefrangedefaultformat }} % \end{macrocode} -% The text for swedish was contributed by Mats Dahlgren +% The text for Swedish was contributed by Mats Dahlgren % (\verb=matsd@sssk.se=). % \changes{v1.0p}{1995/01/10}{Added swedish strings} % \changes{v1.2a}{1998/08/22}{Added swedish defaults for @@ -1729,7 +1729,7 @@ }} % \end{macrocode} % We support francais as an alternative to french since people -% might be used to it, but we discurrage it. +% might be used to it, but we discourage it. % \begin{macrocode} \DeclareOption{francais}{% \typeout{Please use `french' instead of `francais'}% @@ -1757,7 +1757,7 @@ % % % Whether or not \pkg{varioref} uses its own white space and -% removes the one in the source document is handeled by the +% removes the one in the source document is handled by the % following two options. For historical reasons the default is to % handle the space, but the recommendation these days is to use % \texttt{nospace}. @@ -1814,7 +1814,7 @@ % space either. Thus in this case the star form doesn't % have any effect and below |\vp@gerefstar| is let to % |\vp@geref|. This allows a package like \pkg{hyperef} to redefine -% it and useit for its own tasks (like denoting that no link should +% it and use it for its own tasks (like denoting that no link should % be produced). % \begin{macrocode} \DeclareRobustCommand\vpageref{\@ifstar @@ -1859,7 +1859,7 @@ % By default the second optional argument is empty. % \changes{v1.0h}{1994/06/11}{Pass first argument in both cases} % \changes{v1.0i}{1994/06/20}{Do it correctly} -% \changes{v1.6a}{2019/08/25}{Default for optional argumet changed} +% \changes{v1.6a}{2019/08/25}{Default for optional argument changed} % \begin{macrocode} {\@@vpageref{#1}}{\@@vpageref{#1}[]}} % \end{macrocode} @@ -2169,7 +2169,7 @@ % \pkg{varioref} by testing %\begin{verbatim} % \ifdefined\vp@gerefstar -% ... code fore noew varioref +% ... code for new varioref % \else % ... code for old varioref % \fi @@ -2638,7 +2638,7 @@ % \begin{macro}{\vpagerefcomparenearby} % \changes{v1.6a}{2019/08/25}{Macro added} -% True if the two pages have arabic page numbers are at most off by +% True if the two pages have Arabic page numbers are at most off by % one so that |\vpageref| would produce a special string. % % This is in some sense a general version of |\vpagerefnearby| for diff --git a/Master/texmf-dist/source/latex-dev/tools/varioref.ins b/Master/texmf-dist/source/latex-dev/tools/varioref.ins index 559f1f28542..cef11f9c2ff 100644 --- a/Master/texmf-dist/source/latex-dev/tools/varioref.ins +++ b/Master/texmf-dist/source/latex-dev/tools/varioref.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2021 +%% Copyright (C) 1993-2022 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2021 +Copyright (C) 1993-2022 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx index fcbaf28172e..c7cb2f02a9a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -242,7 +242,7 @@ % This command has also a |*|-variant that prints spaces as \verb*+ +. % % -% \StopEventually{} +% \MaybeStop{} % % % \section{Interfaces for package writers} diff --git a/Master/texmf-dist/source/latex-dev/tools/xr.dtx b/Master/texmf-dist/source/latex-dev/tools/xr.dtx index c0d0b90c0fc..33e096c6cd5 100644 --- a/Master/texmf-dist/source/latex-dev/tools/xr.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/xr.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -89,7 +89,7 @@ % For compatibility with |xcite|, |\externalcitedocument| is made available % as an alias for |\externaldocument| % -% \StopEventually{} +% \MaybeStop{} % % \section{The macros} % diff --git a/Master/texmf-dist/source/latex-dev/tools/xspace.dtx b/Master/texmf-dist/source/latex-dev/tools/xspace.dtx index adcfe154da3..7b29b7b0be0 100644 --- a/Master/texmf-dist/source/latex-dev/tools/xspace.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/xspace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -199,7 +199,7 @@ % \end{verbatim} % % -% \StopEventually{} +% \MaybeStop{} % % \section{The Macros} % |