diff options
Diffstat (limited to 'Master/texmf-dist/source/latex-dev/base')
95 files changed, 2325 insertions, 935 deletions
diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.dtx b/Master/texmf-dist/source/latex-dev/base/alltt.dtx index 2c9e22a1243..0810cd73023 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ %% %% File `alltt.dtx'. %% Copyright (C) 1987 by Leslie Lamport -%% Copyright (C) 1994--1997 LaTeX3 project, Johannes Braams +%% Copyright (C) 1994--2020 LaTeX3 project, Johannes Braams %% all rights reserved. %% %<*dtx> @@ -40,7 +40,7 @@ %<package>\ProvidesPackage{alltt} %<driver>\ProvidesFile{alltt.drv} %\ProvidesFile{alltt.dtx} - [1997/06/16 v2.0g defines alltt environment] + [2020/11/23 v2.0g defines alltt environment] % %<*driver> \documentclass{ltxdoc} @@ -173,7 +173,7 @@ % control sequence |\do| between the characters. We use that to % check whether a character has to be removed. % -% The macro |\g@remfrom@specials| takes one argument, the chracter +% The macro |\g@remfrom@specials| takes one argument, the character % to be removed from the list. % \begin{macrocode} \def\g@remfrom@specials#1{% diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.ins b/Master/texmf-dist/source/latex-dev/base/alltt.ins index adb3838a473..817a00f3a68 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 d6f2bb64e6a..c91b3381435 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{classes.drv} %</driver> - [2020/04/10 v1.4m + [2020/11/23 v1.4m %<article|report|book> Standard LaTeX document class] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % \end{macrocode} @@ -116,7 +116,7 @@ \DoNotIndex{\viipt,\vipt,\vskip,\vspace} \DoNotIndex{\wd,\xiipt,\year,\z@} % \end{macrocode} -% We do want an index, using linenumbers +% We do want an index, using line numbers % \begin{macrocode} \EnableCrossrefs \CodelineIndex @@ -199,7 +199,7 @@ % \changes{v1.2o}{1994/05/24}{Changed file information} % \changes{v1.2p}{1994/05/27}{Moved identification and driver to the % front of the file} -% \changes{v1.2t}{1994/06/22}{Refrased a few sentences to prevent +% \changes{v1.2t}{1994/06/22}{Rephrased a few sentences to prevent % overfull hboxes} % \changes{v1.2v}{1994/12/01}{Made the oneside option work for the % book class} @@ -423,7 +423,7 @@ %<!article>\fi % \end{macrocode} % -% \subsection{Twocolumn printing} +% \subsection{Two-column printing} % % Two-column and one-column printing is again realized via a switch. % \begin{macrocode} @@ -788,7 +788,7 @@ % \begin{macro}{\parindent} % |\parskip| gives extra vertical space between paragraphs and % |\parindent| is the width of the paragraph indentation. The value -% of |\parindent| depends on whether we are in two column mode. +% of |\parindent| depends on whether we are in two-column mode. % \changes{v1.0m}{1994/01/12}{\cs{parindent} should be different, % depending on the pointsize} % \begin{macrocode} @@ -998,7 +998,7 @@ % Now we can set the |\textwidth|, depending on whether we will be % setting one or two columns. % -% In two column mode each \emph{column} shouldn't be wider than +% In two-column mode each \emph{column} shouldn't be wider than % |\@tempdimb| (which could happen on \textsc{a3} paper for % instance). % \begin{macrocode} @@ -1010,7 +1010,7 @@ \fi % \end{macrocode} % -% In one column mode the text should not be wider than the minimum +% In one-column mode the text should not be wider than the minimum % of the paperwidth (minus 2 inches for the margins) and the % maximum length of a line as defined by the number of characters. % \begin{macrocode} @@ -1168,7 +1168,7 @@ \fi %</!bk> % \end{macrocode} -% And values for two column mode: +% And values for two-column mode: % \begin{macrocode} \if@twocolumn \setlength\oddsidemargin {30\p@} @@ -1389,7 +1389,7 @@ % % \begin{macro}{\c@dbltopnumber} % The \Lcount{dbltopnumber} counter holds the maximum number of -% two column floats that can appear on the top of a two column text +% two-column floats that can appear on the top of a two-column text % page. % \begin{macrocode} \setcounter{dbltopnumber}{2} @@ -1397,8 +1397,8 @@ % \end{macro} % % \begin{macro}{\dbltopfraction} -% This indicates the maximum part of a two column text page that -% can be occupied by two column floats at the top. +% This indicates the maximum part of a two-column text page that +% can be occupied by two-column floats at the top. % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with % \cs{renewcommand}. ASAJ.} % \begin{macrocode} @@ -1408,7 +1408,7 @@ % % \begin{macro}{\dblfloatpagefraction} % This indicates the minimum part of a page that has to be -% occupied by two column wide floating objects before a `float +% occupied by two-column wide floating objects before a `float % page' is produced. % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with % \cs{renewcommand}. ASAJ.} @@ -1459,7 +1459,7 @@ % \begin{macro}{\dblfloatsep} % \begin{macro}{\dbltextfloatsep} % When floating objects that span the whole |\textwidth| are placed -% on a text page when we are in twocolumn mode the separation +% on a text page when we are in two-column mode the separation % between the float and the text is controlled by |\dblfloatsep| % and |\dbltextfloatsep|. % @@ -1498,7 +1498,7 @@ % whitespace. Between adjacent floats the |\@fpsep| is inserted. % % These parameters are used for the placement of floating objects -% in one column mode, or in single column floats in two column +% in one-column mode, or in single-column floats in two-column % mode. % % Note that at least one of the two parameters |\@fptop| and @@ -1528,7 +1528,7 @@ % \begin{macro}{\@dblfptop} % \begin{macro}{\@dblfpsep} % \begin{macro}{\@dblfpbot} -% Double column floats in two column mode are handled with similar +% Double-column floats in two-column mode are handled with similar % parameters. % \begin{macrocode} %<*10pt> @@ -1809,7 +1809,7 @@ \let \footnote \thanks % \end{macrocode} % We center the entire title vertically; the centering is set off a -% little by adding a |\vskip|. (In compatibility mode the pagenumber +% little by adding a |\vskip|. (In compatibility mode the page number % is set to 0 by the titlepage environment to keep the behaviour % of \LaTeX\ 2.09 style files.) % \changes{v1.0g}{1993/12/09}{Removed the setting of the page number, @@ -1872,7 +1872,7 @@ % \end{macrocode} % When the title is not on a page of its own, the layout of the % title is a little different. We use symbols to mark the footnotes -% and we have to deal with two column documents. +% and we have to deal with two-column documents. % % Therefore we first start a new group to keep changes local. Then % we redefine |\thefootnote| to use |\fnsymbol|; and change @@ -1893,7 +1893,7 @@ \hb@xt@1.8em{% \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% % \end{macrocode} -% If this is a twocolumn document we start a new page in twocolumn +% If this is a two-column document we start a new page in two-column % mode, with the title set to the full width of the text. The % actual printing of the title information is left to % |\@maketitle|. @@ -1908,7 +1908,7 @@ \fi \else % \end{macrocode} -% When this is not a twocolumn document we just start a new page, +% When this is not a two-column document we just start a new page, % prevent floating objects from appearing on the top of this page % and print the title information. % \begin{macrocode} @@ -2133,10 +2133,10 @@ % \Lcount{COUNTER} as an arabic numeral. % % |\roman{|\Lcount{COUNTER}|}| prints the value of -% \Lcount{COUNTER} as a lowercase roman numberal. +% \Lcount{COUNTER} as a lowercase roman numeral. % % |\Roman{|\Lcount{COUNTER}|}| prints the value of -% \Lcount{COUNTER} as an uppercase roman numberal. +% \Lcount{COUNTER} as an uppercase roman numeral. % % |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} % as a lowercase letter: $1 =$~a, $2 =$~ b, etc. @@ -2144,7 +2144,7 @@ % |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} % as an uppercase letter: $1 =$~A, $2 =$~B, etc. % -% Actually to save space the internal counter repesentations +% Actually to save space the internal counter representations % and the commands operating on those are used. % \begin{macrocode} \renewcommand \thepart {\@Roman\c@part} @@ -2281,7 +2281,7 @@ \fi \thispagestyle{plain}% % \end{macrocode} -% When we are making a two column document, this will be a one +% When we are making a two-column document, this will be a one % column page. We use |@tempswa| to remember to switch back to two % columns. % \begin{macrocode} @@ -2453,8 +2453,8 @@ \fi \fi % \end{macrocode} -% When this was a two column document we have to switch back to two -% column mode. +% When this was a two-column document we have to switch back to +% two-column mode. % \begin{macrocode} \if@tempswa \twocolumn @@ -2522,8 +2522,8 @@ % \end{macrocode} % Then we call upon |\@makechapterhead| to format the actual % chapter title. We have to do this in a special way when we are in -% twocolumn mode in order to have the chapter title use the entire -% |\textwidth|. In one column mode we call |\@afterheading| which +% two-column mode in order to have the chapter title use the entire +% |\textwidth|. In one-column mode we call |\@afterheading| which % takes care of suppressing the indentation. % \begin{macrocode} \if@twocolumn @@ -2705,7 +2705,7 @@ % \changes{v1.3q}{1995/12/20}{Temporary(?) fix: revert to setting % \cs{leftmargin} at outer level} % -% When we are in two column mode some of the margins are set somewhat +% When we are in two-column mode some of the margins are set somewhat % smaller. % \begin{macrocode} \if@twocolumn @@ -3036,7 +3036,7 @@ {\par\vfil\null\endtitlepage} % \end{macrocode} % When we are not making a separate titlepage --the default for the -% article document class-- we have to check if we are in twocolumn +% article document class-- we have to check if we are in two-column % mode. In that case the abstract is as a |\section*|, otherwise % the quotation environment is used to typeset the abstract. % \begin{macrocode} @@ -3125,13 +3125,16 @@ % % \begin{environment}{titlepage} % In the normal environments, the titlepage environment does nothing -% but start and end a page, and inhibit page numbers. In the report -% style, it also resets the page number to one, and then sets it -% back to one at the end. In compatibility mode, it sets the -% page number to zero. This is incorrect since it results in using -% the page parameters for a right-hand page but it is the way it was. -% In two-column style, it still makes a -% one-column page. +% but start and end a page, and inhibit page numbers. When \LaTeX\ is +% in two-column mode, the environmont temporarily switches to +% one-column mode. +% In the report class, it also resets the page number to one, and +% then, in two-column mode, sets it back to one at the end. +% For the book class the environment makes sure that the title page +% is on a recto page by issueing a \cs{cleardouplepage}-command. +% In compatibility mode, it sets the page number to zero. This is +% incorrect since it results in using the page parameters for a +% right-hand page but it is the way it was. % % \changes{v1.0g}{1993/12/09}{Moved the setting of % \cs{@restonecolfalse}} @@ -3291,7 +3294,7 @@ % \begin{macro}{\@minipagerestore} % The macro |\@minipagerestore| is called upon entry to a minipage % environment to set up things that are to be handled differently -% inside a minipage environment. In the current styles, it does +% inside a minipage environment. In the current classes, it does % nothing. % \end{macro} % @@ -3397,7 +3400,7 @@ % a figure is defined using the macros |\@float| and |\end@float|, % which are defined in \file{latex.dtx}. % -% An environment that implements a single column floating object is +% An environment that implements a single-column floating object is % started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type % \texttt{TYPE} with \meta{placement} as the placement specifier. % The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|. @@ -3449,7 +3452,7 @@ % \begin{environment}{figure} % \begin{environment}{figure*} % And the definition of the actual environment. The form with the -% |*| is used for double column figures. +% |*| is used for double-column figures. % \begin{macrocode} \newenvironment{figure} {\@float{figure}} @@ -3506,7 +3509,7 @@ % \begin{environment}{table} % \begin{environment}{table*} % And the definition of the actual environment. The form with the -% |*| is used for double column tables. +% |*| is used for double-column tables. % \begin{macrocode} \newenvironment{table} {\@float{table}} @@ -3743,7 +3746,7 @@ % \begin{macro}{\tableofcontents} % This macro is used to request that \LaTeX{} produces a table of % contents. In the report and book document classes the tables of -% contents, figures etc. are always set in single-column style. +% contents, figures etc. are always set in single-column mode. % % \changes{v1.0g}{1993/12/09}{Moved the setting of % \cs{@restonecolfalse}} @@ -3778,7 +3781,7 @@ \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% % \end{macrocode} % The actual table of contents is made by calling -% |\@starttoc{toc}|. After that we restore twocolumn mode if +% |\@starttoc{toc}|. After that we restore two-column mode if % necessary. % \begin{macrocode} \@starttoc{toc}% @@ -3823,13 +3826,13 @@ \begingroup % \end{macrocode} % We set |\parindent| to 0pt and use |\rightskip| to leave -% enough room for the pagenumbers.\footnote{^^A +% enough room for the page numbers.\footnote{^^A % We should really set \cs{rightskip} to \cs{@tocrmarg} instead % of \cs{@pnumwidth} (no version of {\LaTeX} ever did this), % otherwise the \cs{rightskip} is too small. % Unfortunately this can't be changed in {\LaTeXe} as we don't % want to create different versions of {\LaTeXe} which produce -% different typset output unless this is absolutely necessary; +% different typeset output unless this is absolutely necessary; % instead we suspend it for \LaTeX3.} % To prevent overfull box messages the |\parfillskip| is set to a % negative value. @@ -3838,7 +3841,7 @@ \parfillskip -\@pnumwidth % \end{macrocode} % Now we can set the entry, in a large bold font. We make sure to -% leave vertical mode, set the part title and add the pagenumber, +% leave vertical mode, set the part title and add the page number, % set flush right. % \begin{macrocode} {\leavevmode @@ -4238,9 +4241,9 @@ \columnsep 35\p@ \let\item\@idxitem} % \end{macrocode} -% When the document continues after the index and it was a one -% column document we have to switch back to one column after the -% index. +% When the document continues after the index and it was a +% one-column document we have to switch back to one column after +% the index. % \begin{macrocode} {\if@restonecol\onecolumn\else\clearpage\fi} % \end{macrocode} @@ -4293,7 +4296,7 @@ % % \begin{macro}{\c@footnote} % Footnotes are numbered within chapters in the report and book -% document styles. +% document classes. % \begin{macrocode} %<!article>\@addtoreset{footnote}{chapter} % \end{macrocode} @@ -4433,18 +4436,18 @@ % \end{macrocode} % \end{macro} % -% \subsection{Two column mode} +% \subsection{Two-column mode} % % \begin{macro}{\columnsep} -% This gives the distance between two columns in two column mode. +% This gives the distance between two columns in two-column mode. % \begin{macrocode} \setlength\columnsep{10\p@} % \end{macrocode} % \end{macro} % % \begin{macro}{\columnseprule} -% This gives the width of the rule between two columns in two -% column mode. We have no visible rule. +% This gives the width of the rule between two columns in +% two-column mode. We have no visible rule. % \begin{macrocode} \setlength\columnseprule{0\p@} % \end{macrocode} @@ -4454,7 +4457,7 @@ % We have \pstyle{plain} pages in the document classes article and % report unless the user specified otherwise. In the `book' % document class we use the page style \pstyle{headings} by -% default. We use arabic pagenumbers. +% default. We use arabic page numbers. % \begin{macrocode} %<!book>\pagestyle{plain} %<book>\pagestyle{headings} diff --git a/Master/texmf-dist/source/latex-dev/base/classes.ins b/Master/texmf-dist/source/latex-dev/base/classes.ins index 13d49747272..b3f3e19fc40 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 05776a68075..f96b04221a7 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 b5ed3e3f106..430abdd5f96 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 7e7817153c8..c860a674382 100644 --- a/Master/texmf-dist/source/latex-dev/base/doc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/doc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ %<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01] %<+package> \ProvidesPackage{doc} %<+shortvrb>\ProvidesPackage{shortvrb} -%<+package|shortvrb> [2020/06/15 v2.1m +%<+package|shortvrb> [2020/11/23 v2.1m %<+package|shortvrb> Standard LaTeX documentation package (FMi)] %\catcode`\<=12 % @@ -47,7 +47,7 @@ % % %% Package `doc' to use with LaTeX 2e -%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved. +%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved. % % % Version: Date: Changes: @@ -751,7 +751,7 @@ % 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 -% amongst the arguments of the |\StopEventually| macro, in +% amongt the arguments of the |\StopEventually| macro, in % which case a |\Finale| command should appear at the end of % your file. % @@ -949,7 +949,7 @@ % macro.} % \DescribeMacro\changes % To maintain a change history within the file, the |\changes| -% command may be placed amongst the description part of the changed +% command may be placed amongt the description part of the changed % code. It takes three arguments, thus: % \begin{quote} % |\changes{|\meta{version}|}{|\meta{date}|}{|^^A @@ -2200,7 +2200,7 @@ % % \begin{environment}{environment} % \changes{v1.8c}{1993/10/25}{Environment added} -% The ``environment'' envrionment will be implemented just like the +% 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. @@ -3029,7 +3029,7 @@ % \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 amongst the tokens. +% to be "\long" in case "\par" is amongt the tokens. % \begin{macrocode} \long\def\addto@hook#1#2{#1\expandafter{\the#1#2}} % \end{macrocode} @@ -3149,7 +3149,7 @@ % 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 amongst the supporting files for this style file in +% provided amongt 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 @@ -4219,7 +4219,7 @@ % % \begin{macro}{\meta@font@select} % \changes{v2.0k}{2000/05/26}{Macro added (pr/3170)} -% Maske font used inside |\meta| customizable. +% Make font used inside |\meta| customizable. % \begin{macrocode} \def\meta@font@select{\itshape} % \end{macrocode} @@ -4431,7 +4431,7 @@ \global\catcode`#1\csname cc\string#1\endcsname % \end{macrocode} % \changes{v1.9e.2}{1994/02/07}{-js: Reset `cc`\protect\meta{c} in -% in \cs{DeleteShortVerb}} +% \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} @@ -4532,7 +4532,7 @@ % % \begin{macro}{\init@checksum} % The checksum mechanism works by counting backslashes in the -% macrocode. This initialises the count (when called from +% macrocode. This initializes the count (when called from % "\StopEventually"). % \changes{v1.5k}{1989/09/04}{Macro added to support checksum.} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx index a0a06311edb..ea3a443c395 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -30,8 +30,8 @@ \catcode`\}=2 \def\filename{docstrip.dtx} \def\fileversion{v2.6a} -\def\filedate{2020-07-07} -\def\docdate {2020-07-11} +\def\filedate{2020-11-23} +\def\docdate {2020-11-23} %% % %\iffalse @@ -77,7 +77,7 @@ % less/more dirty---all uses of \cs{afterfi}} % \changes{2.3e}{1995/09/25}{Directories support} % \changes{2.3e}{1995/10/24}{added \cs{makepathname} to support -% systems with bizzare pathnames} +% systems with bizare pathnames} % \changes{2.3e}{1995/10/25}{batch files work by \cs{input}} % \changes{2.3e}{1996/10/02}{Introduced ``open lists''} % \changes{2.4a}{1996/06/06}{Add stream limits (MDW)} @@ -122,7 +122,7 @@ % % \changes{2.1b}{1993/02/23}{modified mailaddress of Johannes} % \changes{2.4i}{1998/01/18}{removed mail addresses as it is hopeless -% to keep them uptodate} +% to keep them up-to-date} % \author{% % Frank Mittelbach % \and @@ -809,7 +809,7 @@ % \end{verbatim} % % To extract the code using \ds, the original `guard' -% mecahnism is extended by the introduction of the syntax +% mechanism is extended by the introduction of the syntax % \texttt{\%<@@=\meta{module}>}. The \meta{module} name then % replaces the |@@| when the code is extracted, so that % \begin{verbatim} @@ -2305,7 +2305,7 @@ Z % delimited with |\endLine|) on all active output files i.e. % those with off-counters equal to zero. It uses the % search-and-replace macro \cs{replaceModuleInLine} to replace any -% occurences of \texttt{@@} with the current module name. +% occurrences of \texttt{@@} with the current module name. % If statistics are included, the counter % |\codeLinesPassed| is incremented by $1$. % \begin{macrocode} @@ -4310,7 +4310,7 @@ for copying and modification in the file \inFileName. % \begin{macro}{\WriteToDir} % Macro |\WriteToDir| is either empty or holds the prefix % necessary to read a file from the current directory. Under UNIX -% this is |./| but a lot of other systems addopted this concept. +% this is |./| but a lot of other systems adopted this concept. % This macro is a default value for |\destdir|. % % The definition of this macro is now delayed until |\@setwritedir| diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.ins b/Master/texmf-dist/source/latex-dev/base/docstrip.ins index 281a376761b..edc75d8258c 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ec.ins b/Master/texmf-dist/source/latex-dev/base/ec.ins index 4283ef1ddda..ce702d8a27f 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 f13e0116cd1..b6f465443f5 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.ins b/Master/texmf-dist/source/latex-dev/base/exscale.ins index d504b056cb4..8a22a7f9385 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 e4c384ee70c..d844b65aa51 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -37,7 +37,7 @@ %<driver>\ProvidesFile{fix-cm.drv} % \fi % \ProvidesFile{fix-cm.dtx} - [2015/01/14 v1.1t fixes to LaTeX] + [2020/11/24 v1.1t fixes to LaTeX] % % \iffalse %<*driver> @@ -446,7 +446,7 @@ {<->sub * cmtt/m/sl}{} % \end{macrocode} % -% \paragraph{CM Typewiter (var.)} +% \paragraph{CM Typewriter (var.)} % \begin{macrocode} \DeclareFontFamily{T1}{cmvtt}{} \DeclareFontShape{T1}{cmvtt}{m}{n}{ 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 0407d39630b..840d5e408c2 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 632f1c9be56..6900a020744 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -39,13 +39,13 @@ %<driver, >\ProvidesFile{fontdef.drv} % \fi % \ProvidesFile{fontdef.dtx} -%<-latexrelease> [2020/08/01 v3.0i LaTeX Kernel +%<-latexrelease> [2020/11/24 v3.0i LaTeX Kernel % \iftrue (\else %<text, >(Text %<math, >(Math -%<+cfgtext>(Uncustomised text -%<+cfgmath>(Uncustomised math -%<+cfgprel>(Uncustomised preload +%<+cfgtext>(Uncustomized text +%<+cfgmath>(Uncustomized math +%<+cfgprel>(Uncustomized preload % \fi %<-latexrelease> font setup)] % @@ -110,7 +110,7 @@ % If you don't plan to use Computer Modern much or at all, it might % (!) be a good idea to make your own \texttt{fonttext.cfg}. Look at % the comments below (docstrip module `text') to see what should -% should go into such a file. +% go into such a file. % % To change the math font setup use a copy of \texttt{fontmath.ltx} % under the name \texttt{fontmath.cfg} and change this copy. However, diff --git a/Master/texmf-dist/source/latex-dev/base/format.ins b/Master/texmf-dist/source/latex-dev/base/format.ins index 8796d16d3e2..f872c31a3e4 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx index ac72f4dca5f..0a89a25fe11 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.ins b/Master/texmf-dist/source/latex-dev/base/graphpap.ins index b5bb800122a..9528f3dcdc5 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 f2157e094ab..f07e4aa8f16 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -42,7 +42,7 @@ %<driver>\ProvidesFile{ifthen.drv} % \fi % \ProvidesFile{ifthen.dtx} - [2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)] + [2020/11/24 v1.1c Standard LaTeX ifthen package (DPC)] % % \iffalse %<*driver> @@ -368,7 +368,7 @@ % \end{macro} % % \begin{macro}{\TE@endeval} -% Finalise a term. (Expanded on the first pass). +% Finalize a term. (Expanded on the first pass). % \begin{macrocode} \def\TE@endeval{\relax \noexpand\TE@setvaltrue\noexpand diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.ins b/Master/texmf-dist/source/latex-dev/base/ifthen.ins index 0e813cd5de3..d589deaafca 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 c1d08b4830f..d8649c778df 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-2020 +% Copyright (C) 1993-2021 % LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -123,7 +123,7 @@ % THIS MAY CHANGE} % \changes{v0.95}{1997/12/20}{Updated documentation} % \changes{v0.97}{1998/03/05}{Spanish ords changed to text chars, pr/2579} -% \changes{v1.1b}{2006/03/04}{Number of normalisations in the LICR +% \changes{v1.1b}{2006/03/04}{Number of normalizations in the LICR % representation (pr/3849)} % \changes{v1.1c}{2006/11/18}{Added missing \cs{ProvidesFile} line for cp1257 (pr/3892)} % @@ -410,7 +410,7 @@ %<cp1252&!ansinew> \ProvidesFile{cp1252.def} %<cp1250> \ProvidesFile{cp1250.def} %<cp1257> \ProvidesFile{cp1257.def} - [2020/08/01 v1.3d Input encoding file] + [2020/11/26 v1.3d Input encoding file] %<cp850>%% %<cp850>%% If you need a Euro symbol, try cp858 instead. %<cp850>%% @@ -1053,7 +1053,7 @@ % % The ISO Latin-3 encoding file defines the characters % in the ISO 8859-3 encoding. It was contributed by -% by J\"org Knappen (\texttt{joerg.knappen@uni-mainz.de}) and +% J\"org Knappen (\texttt{joerg.knappen@uni-mainz.de}) and % adapted by Chris Rowley. % % It can be used for general purpose applications in diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.ins b/Master/texmf-dist/source/latex-dev/base/inputenc.ins index 6494a689eab..19a8606e5d4 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 d08a8001b56..183028fca77 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -200,7 +200,7 @@ % \end{macrocode} % Describe the file. % \begin{macrocode} -\ProvidesFile{latex209.def}[2020/08/21 v0.55 Standard LaTeX file] +\ProvidesFile{latex209.def}[2020/11/26 v0.55 Standard LaTeX file] % \end{macrocode} % \changes{v0.24}{1994/05/14}{Removed date.} % \changes{v0.40}{1995/03/21} @@ -712,7 +712,7 @@ % % \changes{v0.18}{1994/03/11}{Added the catcode changes} % -% By default, \LaTeXe{} makes the input charactes 0--8, 11, 14--31 and +% By default, \LaTeXe{} makes the input characters 0--8, 11, 14--31 and % 128--255 illegal. In compatibility mode, we restore their old % meanings. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.ins b/Master/texmf-dist/source/latex-dev/base/latex209.ins index bb72f344f1b..7c5197b9bd4 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 5ee39a3a2df..19a1d0db806 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -40,7 +40,7 @@ %<*!fixltx2e> % \fi % \ProvidesFile{latexrelease.dtx} - [2018/05/08 v1.0k LaTeX release emulation and tests + [2020/12/06 v1.0k LaTeX release emulation and tests (including releases up to \latexreleaseversion)] % \iffalse %</!fixltx2e> @@ -345,7 +345,7 @@ % % Now if you make a further change to |\widget| in the future you % simply copy the current definition into the empty block and add a new -% empty declaration with todays date and the current format date. This +% empty declaration with today's date and the current format date. This % way your main code stays readable and the old versions accumulate at % the end of the package.\footnote{Of course there may be some cases % in which the old code has to be in a specific place within the @@ -396,7 +396,7 @@ % \end{macro} % % \changes{v1.0c}{2015/02/19}{Swap argument order} -% \changes{v1.0k}{2018/05/08}{reset \cs{\requestedLaTeXdate} for current and latest options, gitub issue 43} +% \changes{v1.0k}{2018/05/08}{reset \cs{\requestedLaTeXdate} for current and latest options, github issue 43} % \begin{macrocode} \DeclareOption*{% \def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#1}}% diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins index 99af17e8fb6..141a677b48c 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -81,11 +81,16 @@ extension .ins) which are part of the distribution. %\keepsilent \usedir{tex/latex/base} +% the order should match the order in the format in case there are dependencies +% (something defined in one module and used in another) + \generateFile{latexrelease.sty}{t}{% \from{ltclass.dtx} {latexreleasefirst,tracerollback}% \from{ltvers.dtx} {latexrelease}% \from{latexrelease.dtx}{latexrelease}% \from{ltdirchk.dtx} {latexrelease}% + \from{ltplain.dtx} {latexrelease}% + \from{ltluatex.dtx} {latexrelease}% empty \from{ltexpl.dtx} {latexrelease}% empty \from{ltdefns.dtx} {latexrelease}% \from{lthooks.dtx} {latexrelease}% empty % L3 layer module @@ -93,42 +98,39 @@ extension .ins) which are part of the distribution. \from{ltcntrl.dtx} {latexrelease}% empty \from{lterror.dtx} {latexrelease}% empty \from{ltpar.dtx} {latexrelease}% empty + \from{ltspace.dtx} {latexrelease}% + \from{ltlogos.dtx} {latexrelease}% empty + \from{ltfiles.dtx} {latexrelease}% + \from{ltoutenc.dtx} {latexrelease}% + \from{ltcounts.dtx} {latexrelease}% + \from{ltlength.dtx} {latexrelease}% + \from{ltfssbas.dtx} {latexrelease}% + \from{ltfssaxes.dtx} {latexrelease}% + \from{ltfsstrc.dtx} {latexrelease}% + \from{ltfssdcl.dtx} {latexrelease}% + \from{ltfssini.dtx} {latexrelease}% + \from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext) + \from{ltfntcmd.dtx} {latexrelease}% empty + \from{lttextcomp.dtx} {latexrelease}% + \from{ltpageno.dtx} {latexrelease}% empty + \from{ltxref.dtx} {latexrelease}% empty + \from{ltmiscen.dtx} {latexrelease}% + \from{ltmath.dtx} {latexrelease}% \from{ltlists.dtx} {latexrelease}% empty \from{ltboxes.dtx} {latexrelease}% \from{lttab.dtx} {latexrelease}% empty - \from{ltmath.dtx} {latexrelease}% \from{ltpictur.dtx} {latexrelease}% \from{ltthm.dtx} {latexrelease}% empty \from{ltsect.dtx} {latexrelease}% empty - \from{ltfiles.dtx} {latexrelease}% - \from{ltoutenc.dtx} {latexrelease}% - \from{ltcounts.dtx} {latexrelease}% - \from{ltlength.dtx} {latexrelease}% \from{ltfloat.dtx} {latexrelease}% \from{ltidxglo.dtx} {latexrelease}% empty \from{ltbibl.dtx} {latexrelease}% empty \from{ltpage.dtx} {latexrelease}% empty + \from{ltclass.dtx} {latexrelease,tracerollback}% \from{ltfilehook.dtx} {latexrelease}% empty % L3 layer module \from{ltshipout.dtx} {latexrelease}% empty % L3 layer module \from{ltoutput.dtx} {latexrelease}% - \from{ltclass.dtx} {latexrelease,tracerollback}% - \from{ltspace.dtx} {latexrelease}% - \from{ltlogos.dtx} {latexrelease}% empty - \from{ltplain.dtx} {latexrelease}% - \from{ltfssdcl.dtx} {latexrelease}% - \from{ltfssini.dtx} {latexrelease}% - \from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext) - \from{ltfntcmd.dtx} {latexrelease}% empty - \from{lttextcomp.dtx} {latexrelease}% - \from{ltfssbas.dtx} {latexrelease}% - \from{ltfssaxes.dtx} {latexrelease}% - \from{ltfsstrc.dtx} {latexrelease}% - \from{ltfsscmp.dtx} {latexrelease}% - \from{ltpageno.dtx} {latexrelease}% empty - \from{ltxref.dtx} {latexrelease}% empty - \from{ltmiscen.dtx} {latexrelease}% - \from{ltluatex.dtx} {latexrelease}% - \from{ltexpl.dtx} {latexrelease}% + \from{ltfsscmp.dtx} {latexrelease}% only in latexrelease! \from{ltfinal.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 908f11e1244..c53dac62f0c 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.ins b/Master/texmf-dist/source/latex-dev/base/latexsym.ins index 9e9901b879c..620046ac9ba 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 7b31dfbbc96..faece887f86 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -45,7 +45,7 @@ %<*driver> \ProvidesFile{letter.drv} %</driver> - [2020/03/11 v1.3b + [2021/01/07 v1.3c %<+letter> Standard LaTeX document class] % \end{macrocode} % @@ -1019,7 +1019,29 @@ \@date \end{tabular}\par}% \fi \vspace{2\parskip}% - {\raggedright \toname \\ \toaddress \par}% +% \end{macrocode} +% If the address field used \verb=\\[...]= then we have +% \cs{toaddress} starting with the bracket argument as the split +% was done simply at \verb=\\=. So we add \cs{expandafter} here so +% that is will be used and not typeset. A better fix would be to do +% a proper parsing but \ldots +% +% Other classes based on \texttt{letter.cls} could benefit from the same fix, e.g., +% \texttt{akletter.cls}, +% \texttt{bletter.cls}, +% \texttt{letter.cls}, +% \texttt{chletter.cls}, +% \texttt{extletter.cls},\\ +% \texttt{frletter.cls}, +% \texttt{hletter.cls}, +% \texttt{scrlttr2.cls}, +% \texttt{lettre.cls}, +% \texttt{beletter.cls},\\ +% \texttt{brief.cls} and perhaps others. +% +% \changes{v1.3c}{2020/12/28}{Add \cs{expandafter} (gh/427)} +% \begin{macrocode} + {\raggedright \toname \expandafter\\\toaddress \par}% \vspace{2\parskip}% #1\par\nobreak} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/letter.ins b/Master/texmf-dist/source/latex-dev/base/letter.ins index 8e8ed4ef7b9..1c2b2f9f010 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 d18df9ad896..3328c1f504d 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx index a3a25308fe8..7f5066542f3 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltbibl.dtx} - [2018/11/09 v1.1r LaTeX Kernel (Bibliography)] + [2020/12/10 v1.1s LaTeX Kernel (Bibliography)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltbibl.dtx} @@ -104,7 +104,7 @@ % but puts nothing in the text. % % |\nocite{*}| is special: it tells \BibTeX{} to put the whole of a -% collection of references into the bibiography. +% collection of references into the bibliography. % % \StopEventually{} % @@ -253,7 +253,7 @@ % year citations it becomes more than questionable. % % So Chris added yet another hook here, as suggested by, at least, -% Donald Arsenau. Note that this one is inside the first argument +% Donald Arseneau. Note that this one is inside the first argument % of the |\@cite| hook. % This decouples the top-level typesetting of the citation from % the details of the other business conducted here. All this really @@ -327,6 +327,10 @@ % \changes{v1.1g}{1995/05/08}{Use \cs{@firstofone}} % \changes{v1.1k}{1995/10/20}{Removed refundefined flag} % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\nocite}{Allow nocite in preamble}% \def\nocite#1{\@bsphack % \end{macrocode} % With the implementation designed already in \LaTeX\,2.09 the @@ -335,10 +339,15 @@ % that point. As a result the ``reference'' will appear on the % terminal and nothing else will happen. % -% This would be easy to fix, but then a document using the fix will +% [This would be easy to fix, but then a document using the fix will % silently fail on an older release of \LaTeX{}, missing all % citations done with |\nocite|. Thus we do only generate an error -% message and leave the fix for a \LaTeXe{} successor. +% message and leave the fix for a \LaTeXe{} successor.] +% +% Given that we are now a quarter century into using \LaTeXe{} +% there is no good reason any more do limit ourself to 2.09 +% conciderations. So we now simply delay the \cs{nocide} if it is +% issued in the preamble. % % \changes{v1.1o}{2003/05/18}{Check if we are after \cs{document}} % \changes{v1.1p}{2004/01/04}{Changed error message} @@ -354,18 +363,48 @@ \@latex@warning{Citation `\@citeb' undefined}}{}}% \else % \end{macrocode} -% But before |\begin{document}| we raise an error message: +% But before |\begin{document}| we raised an error message in the +% past but as of 2021/05 not any longer. % \begin{macrocode} - \@latex@error{Cannot be used in preamble}\@eha +% \@latex@error{Cannot be used in preamble}\@eha % \end{macrocode} -% Without the compatibility problems we could fix the problem as follows: +% Instead we delay the declaration to the start of the document. +% We have to use a late hook for this, so that it comes after the +% \texttt{.aux} file is open for writing and after +% \cs{@preamblecmds} was executed to change the above +% test. Therefore \cs{AtBeginDocument} would still be too early. +% \changes{v1.1s}{2020/12/10}{Delay any \cs{nocite} in the preamble +% instead of raising an error} % \begin{macrocode} - % \AtBeginDocument{\nocite{#1}} + \AddToHook{begindocument/end}[kernel]{\nocite{#1}}% \fi \@esphack} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\nocite}{Allow nocite in preamble}% +%<latexrelease> +%<latexrelease>\def\nocite#1{\@bsphack +%<latexrelease> \ifx\@onlypreamble\document +%<latexrelease> \@for\@citeb:=#1\do{% +%<latexrelease> \edef\@citeb{\expandafter\@firstofone\@citeb}% +%<latexrelease> \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi +%<latexrelease> \@ifundefined{b@\@citeb}{\G@refundefinedtrue +%<latexrelease> \@latex@warning{Citation `\@citeb' undefined}}{}}% +%<latexrelease> \else +%<latexrelease> \@latex@error{Cannot be used in preamble}\@eha +%<latexrelease> \fi +%<latexrelease> \@esphack} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} +% % Since |\nocite{*}| should not produce a warning about undefined -% citation keys (seee PR 557), we need to set the control sequence +% citation keys (see PR 557), we need to set the control sequence % `|\b@*|' to something other than |\relax|. As a result |\cite{*}| % will not warn either (but that never worked with \BibTeX{} in the % first place). diff --git a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx index 39c134b3bfd..ec192293f10 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltboxes.dtx} - [2020/09/27 v1.4a LaTeX Kernel (Box Commands)] + [2020/12/05 v1.4a LaTeX Kernel (Box Commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltboxes.dtx} @@ -539,7 +539,7 @@ % \changes{v1.0b}{1994/03/14} % {Use \cs{color@setgroup}} % \changes{v1.0d}{1994/04/15} -% {Added missing procent character.} +% {Added missing percent character.} % \changes{v1.0v}{1995/07/20} % {Use \cs{sbox}} % \begin{macrocode} @@ -888,7 +888,7 @@ % % The rational for allowing two normally global flags to be set % locally here was stated originally by -% Donald Arsenau and extended by Chris Rowley. +% Donald Arseneau and extended by Chris Rowley. % It is because these flags are only set globally to % true by section commands, and these should never appear within % boxes or, indeed, in any group; and they are only ever diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index b639ae9410a..1400ec0a62d 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2020/10/18 v1.3t LaTeX Kernel (Class & Package Interface)] + [2020/12/17 v1.3v LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -427,7 +427,7 @@ % \changes{v0.2h}{1993/11/28} % {Primitive filenames now terminated by space not \cs{relax}.} % \changes{v0.2h}{1993/11/28} -% {Directory syntax checing moved to dircheck.dtx} +% {Directory syntax checking moved to dircheck.dtx} % \changes{v0.2h}{1993/11/28} % {Assorted commands now in the kernel removed.} % \changes{v0.2i}{1993/12/03} @@ -486,7 +486,7 @@ % \begin{macro}{\@declaredoptions} % This list is automatically built by |\DeclareOption|. % It is the list of options (separated by commas) declared in -% the class or package file and it defines the order in which the +% the class or package file and it defines the order in which % the corresponding |\ds@|\meta{option} commands are executed. % All local \meta{option}s which are not declared will be processed % in the order defined by the optional argument of |\documentclass| @@ -524,6 +524,27 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@currpath} +% Path to the current file if explicitly given. +% \changes{v1.3u}{2020/11/20}{Macro added} +% \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease> +%<latexrelease>\IncludeInRelease{2020/10/01}{\@currpath}% +%<latexrelease> {Add \@currpath}% +\let\@currpath\@empty +%<latexrelease>\EndIncludeInRelease +% +%<latexrelease>\IncludeInRelease{0000/00/00}{\@currpath}% +%<latexrelease> {Add \@currpath}% +%<latexrelease>\let\@currpath\@undefined +%<latexrelease>\EndIncludeInRelease +%</2ekernel|latexrelease> +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@currname} % Name of current package or option. % \begin{macrocode} @@ -562,6 +583,7 @@ % \changes{v1.3l}{2020/06/05}{Added \cs{@expl@push@filename@@} % and \cs{@expl@push@filename@aux@@}} % \changes{v1.3s}{2020/10/08}{Added missing 2020/02/02 \cs{IncludeInRelease}} +% \changes{v1.3v}{2020/12/14}{Removed \cs{@expl@@@hook@curr@name@push@@n}} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> @@ -578,13 +600,22 @@ % here, e.g., \cs{@expl@push@filename@@} needs cleanup and (and % should probably not have this name either). % \begin{macrocode} - \@expl@@@hook@curr@name@push@@n{}% \@expl@push@filename@@ \xdef\@currnamestack{% {\@currname}% {\@currext}% {\the\catcode`\@}% \@currnamestack}% +% \end{macrocode} +% Temporarily add a stack for \cs{@currpath} here. This should be +% integrated in the main file stack eventually, but other packages +% rely on \cs{@currnamestack} having three elements per file, so that +% isn't a trivial change. The prefix \cs{@kernel@...} hopefully +% discourages people from using it. +% \begin{macrocode} + \xdef\@kernel@currpathstack{% + {\@currpath}% + \@kernel@currpathstack}% \@expl@push@filename@aux@@} %<latexrelease>\EndIncludeInRelease % \end{macrocode} @@ -632,6 +663,10 @@ %<latexrelease> {Add \@expl@pop@filename@@}% \def\@popfilename{\@expl@@@hook@curr@name@pop@@ \expandafter\@p@pfilename\@currnamestack\@nil +% \end{macrocode} +% Same for popping: +% \begin{macrocode} + \expandafter\@p@pfilepath\@kernel@currpathstack\@nil \@expl@pop@filename@@} %<latexrelease>\EndIncludeInRelease %<latexrelease> @@ -672,6 +707,36 @@ % \end{macro} % \end{macro} % +% +% \begin{macro}{\@kernel@currpathstack} +% Path to the current file if explicitly given. The auxiliary is +% needed here to insert a \cs{@empty} to prevent the loss of braces. +% \changes{v1.3u}{2020/11/20}{Macro added} +% \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease> +%<latexrelease>\IncludeInRelease{2020/10/01}{\@kernel@currpathstack}% +%<latexrelease> {Add \@kernel@currpathstack}% +\gdef\@kernel@currpathstack{} +\def\@p@pfilepath#1{% + \gdef\@currpath{#1}\@p@pfilepath@aux\@empty} +\def\@p@pfilepath@aux#1\@nil{% + \xdef\@kernel@currpathstack{#1}} +%<latexrelease>\EndIncludeInRelease +% +%<latexrelease>\IncludeInRelease{0000/00/00}{\@kernel@currpathstack}% +%<latexrelease> {Add \@kernel@currpathstack}% +%<latexrelease>\let\@kernel@currpathstack\@undefined +%<latexrelease>\let\@p@pfilepath\@undefined +%<latexrelease>\let\@p@pfilepath@aux\@undefined +%<latexrelease>\EndIncludeInRelease +%</2ekernel|latexrelease> +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% % \begin{macro}{\@ptionlist} % Returns the option list of the file. % \begin{macrocode} @@ -915,15 +980,42 @@ % \changes{v0.3c}{1994/03/12} % {use \cs{@gtempa}} % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2020/10/01}% +%<latexrelease> {\ProvidesPackage}{Check name with \strcmp}% +%<*2ekernel|latexrelease> \def\ProvidesPackage#1{% \xdef\@gtempa{#1}% - \ifx\@gtempa\@currname\else +% \end{macrocode} +% \changes{v1.3u}{2020/11/20} +% {Use string comparison instead of \cs{ifx}} +% Here \cs{@currpath} is explicitly added to the file name to report +% when a package or class is loaded using an explicit path. Loading +% using a path in the argument is supported but not encouraged. +% \begin{macrocode} + \@expandtwoargs\@expl@str@if@eq@@nnTF + {\@gtempa}{\@currpath\@currname}{}{% \@latex@warning@no@line{You have requested - \@cls@pkg\space`\@currname',\MessageBreak + \@cls@pkg\space`\@currpath\@currname',\MessageBreak but the \@cls@pkg\space provides `#1'}% - \fi + }% \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%] \@onlypreamble\ProvidesPackage +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\ProvidesPackage}{Undo: check name with \strcmp}% +%<latexrelease>\def\ProvidesPackage#1{% +%<latexrelease> \xdef\@gtempa{#1}% +%<latexrelease> \ifx\@gtempa\@currname\else +%<latexrelease> \@latex@warning@no@line{You have requested +%<latexrelease> \@cls@pkg\space`\@currname',\MessageBreak +%<latexrelease> but the \@cls@pkg\space provides `#1'}% +%<latexrelease> \fi +%<latexrelease> \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%] +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -934,12 +1026,12 @@ % be cautious when handling the identification string in case it % contains UTF-8 characters. % \changes{v1.3e}{2019/11/29}{Protect package info text (gh/52)} -% \changes{v1.3r}{2020/10/01}{Allow for package subsitution} +% \changes{v1.3r}{2020/10/01}{Allow for package substitution} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/10/01}% -%<latexrelease> {\@pr@videpackage}{Allow for package subsitution}% +%<latexrelease> {\@pr@videpackage}{Allow for package substitution}% \def\@pr@videpackage[#1]{% \expandafter\protected@xdef % <-- protected... \csname ver@\@currname.\@currext\endcsname{#1}% Loaded package @@ -1007,9 +1099,18 @@ % % \begin{macro}{\ProvidesClass} % Like |\ProvidesPackage|, but for classes. +% This needs a dummy \pkg{latexrelease} block to copy the definition +% of \cs{ProvidesPackage} as it changes across releases. % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\ProvidesClass}{Track \ProvidesPackage}% +%<*2ekernel|latexrelease> \let\ProvidesClass\ProvidesPackage \@onlypreamble\ProvidesClass +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -1075,10 +1176,18 @@ \@expl@@@filehook@set@curr@file@@nNN {\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}% \reserved@a\reserved@b + \@expl@@@filehook@clear@replacement@flag@@ \expandafter\xdef\csname opt@\reserved@a\endcsname{% \@ifundefined{opt@\reserved@a}\@empty {\csname opt@\reserved@a\endcsname,}% - \zap@space#2 \@empty}} + \zap@space#2 \@empty}% +% \end{macrocode} +% \changes{v1.3u}{2020/11/20} +% {Copy option list to the requested package.} +% \begin{macrocode} + \expandafter\let + \csname opt@#3.#1\expandafter\endcsname + \csname opt@\reserved@a\endcsname} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease % @@ -1170,7 +1279,7 @@ % \changes{v0.2a}{1993/11/14} % {Stop adding the global option list inside class files.} % \changes{v0.2a}{1993/11/14} -% {Optimise `empty option' code.} +% {Optimize `empty option' code.} % \changes{v0.2b}{1993/11/15} % {Star form added.} % \changes{v0.2c}{1993/11/17} @@ -1351,7 +1460,7 @@ % the internal command, |\@fileswithoptions|. % \begin{macro}{\documentclass} % \changes{v1.0q}{1995/06/19} -% {Dont redefine \cs{usepackage} in compat mode for /1634} +% {Don't redefine \cs{usepackage} in compat mode for /1634} % The main new-style class declaration. % \begin{macrocode} \def\documentclass{% @@ -1642,7 +1751,7 @@ \ifx\@nnil##1\relax\else % \end{macrocode} % If |\ifx\@nnil##1\n@nil| is true then |#1| is (presumably) empty -% (Older code used |\relax| which is slighly easier to get into |#1| +% (Older code used |\relax| which is slightly easier to get into |#1| % by mistake, which would spoil this test.) % \begin{macrocode} \ifx\@nnil##1\@nnil\else @@ -1719,8 +1828,38 @@ %<latexrelease>\IncludeInRelease{2020/10/01}% %<latexrelease> {\@onefilewithoptions}{Hooks and unused options issue}% \def\@onefilewithoptions#1[#2][#3]#4{% +% \end{macrocode} +% We have to sanitise file names, so that something like +% \begin{verbatim} +% \usepackage{some/local/path/array} +% \usepackage{array} +% \end{verbatim} +% won't load \file{array.sty} twice. It is remotely possible that +% those are two different files, but as a matter of principles, we +% will consider that the base file name uniquely identifies a +% package, regardless of where it lives. This assumption already +% holds for file hooks, for example, which address the hook to a file +% by its base name only. +% +% We'll use \cs{@expl@@@filehook@set@curr@file@@nNN} to parse the +% file name and return the \meta{path} and \meta{base+ext} in +% separate token lists. Further ahead, most operations use +% \cs{@currname} which doesn't have a path attached to it; only few +% actions prepend \cs{@currpath} to \cs{@currname} (namely loading, +% as we have to respect the given path). +% +% A file substituiton isn't followed just yet because at this point +% we are parsing user input, so the file is still what the user +% asked for, and not the file actually loaded. +% \begin{macrocode} + \@expl@@@filehook@set@curr@file@@nNN{#1.#4}\reserved@a\reserved@b + \edef\reserved@c{\def\noexpand\reserved@c####1% + \detokenize\expandafter{\expanded{.#4}}% + \noexpand\@nil{\def\noexpand\reserved@a{####1}}}\reserved@c + \expandafter\reserved@c\reserved@a\@nil \@pushfilename - \xdef\@currname{#1}% + \xdef\@currname{\string@makeletter\reserved@a}% + \xdef\@currpath{\ifx\reserved@b\@empty\else\reserved@b/\fi}% \global\let\@currext#4% % \end{macrocode} % The command \cs{ver@\meta{file}.\meta{ext}} is used to signal that @@ -1765,9 +1904,11 @@ % \end{macrocode} % First we take the \meta{name} and \meta{ext} given in the argument % and check if the file exists, and issue an error otherwise asking -% for a correction with \cs{@missingfileerror}. +% for a correction with \cs{@missingfileerror}. For checking if the +% file exists we use \cs{@currpath} (usually empty) before +% \cs{@currname}. % \begin{macrocode} - \IfFileExists{\@currname.\@currext}{}% + \IfFileExists{\@currpath\@currname.\@currext}{}% {\@missing@onefilewithoptions{#2}}% % \end{macrocode} % If \cs{@currname} is empty (the user replied to the ``Enter file @@ -1784,11 +1925,12 @@ % do the bookkeeping with \cs{@filehook@file@push} % then call \cs{set@curr@file} to set \cs{@curr@file} (and do any % required substitution), then actually load the class/package with -% \cs{load@onefile@withoptions}. +% \cs{load@onefile@withoptions}. \cs{set@curr@file} also needs the +% file path. % \begin{macrocode} \@disable@packageload@do{\@currname.\@currext}% {\@expl@@@filehook@file@push@@ - \set@curr@file{\@currname.\@currext}% + \set@curr@file{\@currpath\@currname.\@currext}% \@filehook@set@CurrentFile % \end{macrocode} % \changes{v1.3q}{2020/09/06} @@ -1812,10 +1954,15 @@ \expandafter\@swaptwoargs\expandafter {\expandafter{\@currpkg@reqd}}% {% < +% \end{macrocode} +% \cs{@currpkg@reqd} doesn't take a path because it is used later to +% assign \cs[no-index]{opt@...} and \cs[no-index]{ver@...}. +% \begin{macrocode} \edef\@currpkg@reqd{\@currname.\@currext}% \ifx\CurrentFile\CurrentFileUsed \else \filename@parse\@curr@file + \edef\@currpath{\string@makeletter\filename@area}% \edef\@currname{\string@makeletter\filename@base}% \edef\@currext{\string@makeletter\filename@ext}% \fi @@ -1864,11 +2011,13 @@ % \end{macro} % % \begin{macro}{\@missing@onefilewithoptions} -% Now the action taken when a file is not found. +% Now the action taken when a file is not found. Path must be +% included here as it eventually leads to a file lookup. % \begin{macrocode} \def\@missing@onefilewithoptions#1{% - \@missingfileerror\@currname\@currext - \xdef\@currname{\@missingfile@area\@missingfile@base}% + \@missingfileerror{\@currpath\@currname}\@currext + \global\let\@currpath\@missingfile@area + \global\let\@currname\@missingfile@base \global\let\@currext\@missingfile@ext} % \end{macrocode} % \end{macro} @@ -1887,6 +2036,13 @@ % \begin{macrocode} \def\reserved@a{% \@pass@ptions\@currext{#1}{\@currname}% +% \end{macrocode} +% \changes{v1.3u}{2020/11/20} +% {Copy option list to the requested package.} +% \begin{macrocode} + \expandafter\let + \csname opt@\@currpkg@reqd\expandafter\endcsname + \csname opt@\@currname.\@currext\endcsname \global\expandafter \let\csname ver@\@currname.\@currext\endcsname\@empty % \end{macrocode} @@ -1912,11 +2068,12 @@ \fi % \end{macrocode} % Now actually load the file (at this point we are certain it exists, -% but use \cs{InputIfFileExists} so that file hooks are executed): +% but use \cs{InputIfFileExists} so that file hooks are executed). +% \cs{@currpath} is needed here too. % \begin{macrocode} - \InputIfFileExists{\@currpkg@reqd}{}% + \InputIfFileExists{\@currpath\@currpkg@reqd}{}% {\@latex@error - {The \@cls@pkg\space\@currpkg@reqd\space failed to load.}\@ehd}% + {The \@cls@pkg\space\@currpkg@reqd\space failed to load}\@ehd}% %----------------------------------------- % \end{macrocode} % In older versions of the code |\@unprocessedoptions| would @@ -1930,7 +2087,7 @@ % loaded.} % % This has changed in 2020. We now use a separate macro per package -% to avoid interferences in case of nested packages. The whole +% to avoid interference in case of nested packages. The whole % code for handling this issue (GitHub 22) was provided by Hironobu % Yamashita, thanks for that. % \changes{v1.3k}{2020/04/07}{Use different method to ignore @@ -2267,7 +2424,7 @@ % \changes{v0.2r}{1993/12/19}{Different message when ignoring a file} % \changes{v0.3g}{1994/04/11} % {Add star form, -% dont write \cs{endinput} at the end of the file.} +% don't write \cs{endinput} at the end of the file.} % \changes{v1.0c}{1994/05/11} % {Add checks for form feed and tab} % \changes{v1.0m}{1995/04/21} @@ -2819,7 +2976,7 @@ % YYYYMMDD (if there was one, otherwise the value of % |\requestedLaTeXdate|) and |\pkgcls@targetlabel| will be % empty. If there was a request for a named version then -% |\pkgcls@targetlabel| holds the verion name and +% |\pkgcls@targetlabel| holds the version name and % |\pkgcls@targetdate| is set to \texttt{1}. % % |\pkgcls@targetdate=0| is used to indicate that there was no @@ -2906,7 +3063,7 @@ \pkgcls@parse@date@arg{#3}% % \end{macrocode} % When determining the correct release to load we keep track of -% candiates in |\pkgcls@candidate| and initially we don't have any: +% candidates in |\pkgcls@candidate| and initially we don't have any: % \begin{macrocode} \let\pkgcls@candidate\@empty % \end{macrocode} @@ -2946,7 +3103,7 @@ % % But if it starts with an equal sign followed by a date string or % followed by a version name then this means that we should roll -% back to the state of the package at tht date or to the version +% back to the state of the package at that date or to the version % with the requested name. % % If there was no optional argument or the optional argument @@ -3224,7 +3381,7 @@ % % \begin{macro}{\pkgcls@show@selection} % This command records what selection was made. As that is needed -% in two places (and it is rather lengthly) it was placed in a +% in two places (and it is rather lengthy) it was placed in a % separate command. The first argument is the name of the external % file that is being loaded and is only needed for debugging. The % second argument is the date that corresponds to this file and it @@ -3271,19 +3428,20 @@ % A similar error is given if global rollback date and min-date on % a specific package conflict with each other, but that case is % happens only once so it is inlined. +% \changes{v1.3u}{2020/11/09}{Change help text because the package may have +% existed then --- there is just no rollback data (gh/423).} % \begin{macrocode} \def\pkgcls@rollbackdate@error#1{% \@latex@error{Suspicious rollback date given}% - {The \@cls@pkg\space'\@currname' claims that it - came into existence on #1 which\MessageBreak + {The \@cls@pkg\space'\@currname' has no rollback data + before #1 which\MessageBreak is after your requested rollback date --- so - something is wrong here.\MessageBreak + something may be wrong here.\MessageBreak Continue and we use the earliest known release.}} % \end{macrocode} % \end{macro} % % -% % \begin{macro}{\DeclareCurrentRelease} % This declares the date (and possible name) of the current version % of a package or class. @@ -3326,7 +3484,7 @@ \pkgcls@releasedate \fi % \end{macrocode} -% Otherwise the curent file is the right release, so we record that +% Otherwise the current file is the right release, so we record that % in the transcript and then carry on. % \begin{macrocode} \else diff --git a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx index b779d27fb6c..a9357a06b87 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltcntrl.dtx} - [2014/04/21 v1.0h LaTeX Kernel (program control)] + [2020/12/04 v1.0h LaTeX Kernel (program control)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltcntrl.dtx} @@ -241,7 +241,7 @@ % % \begin{macro}{\@for} % \changes{v1.0d}{1995/04/24} -% {Dont expand second argument with \cs{edef}: /1317 (DPC)} +% {Don't expand second argument with \cs{edef}: /1317 (DPC)} % \begin{macrocode} \long\def\@for#1:=#2\do#3{% \expandafter\def\expandafter\@fortmp\expandafter{#2}% diff --git a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx index 5dc1c8866d7..121979116c9 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltcounts.dtx} - [2018/04/22 v1.1l LaTeX Kernel (Counters)] + [2020/12/04 v1.1l LaTeX Kernel (Counters)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltcounts.dtx} @@ -630,7 +630,7 @@ % always selects the correct branch in an |\ifmmode| switch with % the usual disadvantage of ruining kerning. For the application we % use it for here that shouldn't matter. The alternative would be -% to mimic |\IeC| from \textsf{inputenc} but then it wil have the +% to mimic |\IeC| from \textsf{inputenc} but then it will have the % disadvantage of choosing the wrong branch if appearing at the % beginning of an alignment cell. However, users of e\TeX\ will be % pleasantly surprised to get the best of both worlds and no bad diff --git a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx index 569c9db4df9..aff93510f97 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltdefns.dtx} - [2020/09/25 v1.5n LaTeX Kernel (definition commands)] + [2020/11/25 v1.5o LaTeX Kernel (definition commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdefns.dtx} @@ -103,7 +103,7 @@ % \end{macrocode} % % -% \subsection{Initex initialisations} +% \subsection{Initex initializations} % % \task{???}{This section needs extension} % @@ -385,8 +385,19 @@ % \begin{macro}{\@carcube} % |\@carcube T1 ... Tn\@nil| = |T1| |T2| |T3| , $n > 3$ % \changes{v1.5k}{2020/08/19}{Made \cs{long} for \cs{NewCommandCopy}} +% \changes{v1.5o}{2020/11/25}{Added missing latexrelease entry} % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2020/10/01}{\@carcube}{Make \@carcube long}% +%<*2ekernel|latexrelease> \long\def\@carcube#1#2#3#4\@nil{#1#2#3} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% +%<latexrelease>\IncludeInRelease{0000/00/00}{\@carcube}{Undo: Make \@carcube long}% +%<latexrelease>\def\@carcube#1#2#3#4\@nil{#1#2#3} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -847,7 +858,7 @@ % |\CheckCommand| takes the same arguments as |\newcommand|. If % the command already exists, with the same definition, then % nothing happens, otherwise a warning is issued. Useful for -% checking the current state befor a macro package starts +% checking the current state before a macro package starts % redefining things. Currently two macros are considered to have % the same definition if they are the same except for different % default arguments. That is, if the old definition was: @@ -1206,7 +1217,7 @@ % top-level definition to have the right kind of structure, but % this is somewhat problematical as we then have to distinguish % between \cs{long} macros and others and also take into account -% that sometimes the top-level is deliberately dones manually (like +% that sometimes the top-level is deliberately done manually (like % with \cs{begin}). % % The macro firstly checks if the control sequence in question exists @@ -1352,12 +1363,12 @@ % \end{macro} % % \begin{macro}{\kernel@make@fragile} -% The opposite of |\MakeRobust| execpt that it doesn't do many +% The opposite of |\MakeRobust| except that it doesn't do many % checks as it is internal to the kernel. Why does one want such a % thing? % Only for compatibility reasons if \texttt{latexrelease} requests % a rollback of the kernel. For this reason we pretend that this -% command existed in all earler versions of \LaTeX{} i.e., we are +% command existed in all earlier versions of \LaTeX{} i.e., we are % not rolling it back since we need it precisely then. But we have % to get it into the \texttt{latexrelease} file so that a roll % forward is possible too. @@ -1441,7 +1452,7 @@ % robust commands. This code will then be used to test if a command is % robust, considered the different types of robustness, and then either copy % that definition, if \cs{DeclareCommandCopy} (or similar) is used, or show -% the definition of the command, if \cs{ShowCommmand} is used. +% the definition of the command, if \cs{ShowCommand} is used. % % \begin{macro}{\robust@command@act} % \changes{v1.5k}{2020/08/19}{Made \cs{robust@command@act} @@ -1700,7 +1711,7 @@ % \begin{macro}{\@showcommandlisthook} % The initial definition of \cs{@showcommandlisthook} contains the same tests % as used for copying, but \cs{@show@...} commands instead of \cs{@copy@...}. -% Same as before, it is initialised to cope with \cs{DeclareRobustCommand} and +% Same as before, it is initialized to cope with \cs{DeclareRobustCommand} and % \cs{newcommand} with optional arguments. % \begin{macrocode} \def\@showcommandlisthook{% @@ -2272,7 +2283,7 @@ % % The primitive |\-| command adds a discretionary hyphen using the % current font's |\hyphenchar|. Monospace fonts are usually declared -% with |\hyphenchar| set to $-1$ to suppress hyhenation. +% with |\hyphenchar| set to $-1$ to suppress hyphenation. % % \LaTeX, from \LaTeX2.09 in 1986 defined |\-| by % \begin{verbatim} diff --git a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx index 3abd49aced5..0e85f0a4052 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -37,7 +37,7 @@ %<*driver> % \fi \ProvidesFile{ltdirchk.dtx} - [2020/08/21 v1.3a LaTeX Kernel (System Dependent Parts)] + [2020/12/05 v1.3a LaTeX Kernel (System Dependent Parts)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdirchk.dtx} @@ -63,7 +63,7 @@ % {Add unstripped module, % so that dircheck.dtx may be used with initex} % \changes{v1.0a}{1994/03/08} -% {Reorganise driver module into `new style'} +% {Reorganize driver module into `new style'} % \changes{v1.0b}{1994/03/12} % {Change name from dircheck.dtx} % \changes{v1.0b}{1994/03/12} @@ -81,13 +81,13 @@ % \changes{v1.0w}{1998/08/17}{(RmS) Documentation improvements.} % % -% \section{\LaTeX\ System Dependent Initialisations} +% \section{\LaTeX\ System Dependent Initializations} % % \changes{v0.2g}{1994/01/21} -% {Improve documentation, reorganise docstrip module} +% {Improve documentation, reorganize docstrip module} % % This file implements the semi-automatic determination of various -% system dependent parts of the initialisation. The actual definitions +% system dependent parts of the initialization. The actual definitions % may be placed in a file |texsys.cfg|. Thus for operating systems for % which the tests here do not result in acceptable settings, a `hand % written' |texsys.cfg| may be produced. @@ -153,7 +153,7 @@ % % \DescribeMacro{\@TeXversion} % \changes{v1.0f}{1994/05/23}{Document \cs{@TeXversion}} -% |\@TeXversion| is now set automatically by the initialisation tests +% |\@TeXversion| is now set automatically by the initialization tests % in this file. You should not need to set it in |texsys.cfg|, however % the following documentation is left for information. \LaTeX\ does % not set this variable exactly, the automatic tests set it to:\\ @@ -206,7 +206,7 @@ % % \StopEventually{} % -% \section{Initialisation} +% \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. % @@ -481,7 +481,7 @@ % % Normally one would not need to define this macro in |texsys.cfg| as % the automatic tests can supply parsers that work with UNIX and VMS -% syntax, as well as a basic parser that willcover many other cases. +% syntax, as well as a basic parser that will cover many other cases. % However some operating systems may need a `hand produced' parser % in which case it should be defined in this file. % @@ -794,7 +794,7 @@ % to supply the correct information to the prompts. Now the interaction % is omitted. After the format is made the installer can attempt to run % the test document |ltxcheck.tex| through \LaTeXe. This will check, -% amongst other things, whether |texsys.cfg| will need to be edited and +% among other things, whether |texsys.cfg| will need to be edited and % the format remade. % % \begin{macro}{\input@path} diff --git a/Master/texmf-dist/source/latex-dev/base/lterror.dtx b/Master/texmf-dist/source/latex-dev/base/lterror.dtx index 9a606ea8c1d..91d221bced3 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx index 4100da79c28..b642fd72a39 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-2020 +% Copyright (C) 2019-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltexpl.dtx} - [2020/09/06 v1.2f LaTeX Kernel (expl3-dependent code)] + [2020/12/18 v1.2h LaTeX Kernel (expl3-dependent code)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltexpl.dtx} @@ -72,16 +72,45 @@ % {Define a local version of some \LaTeXe{} basic macros to support % package loading} % +% \begin{macro}{\@kernel@after@enddocument, +% \@kernel@after@enddocument@afterlastpage} +% These two kernel hooks are used by the shipout code. They are +% defined earlier here because the \pkg{lthooks} code adds material +% to them. +% \changes{v1.2h}{2020/12/18} +% {Define kernel \cs{enddocument} hooks early} +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/10/01}% +%<latexrelease> {kernel@enddocument hooks}{Define kernel enddocument Hooks}% +\let\@kernel@after@enddocument\@empty +\let\@kernel@after@enddocument@afterlastpage\@empty +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {kernel@enddocument hooks}{Define kernel enddocument Hooks}% +%<latexrelease>\let\@kernel@after@enddocument\@undefined +%<latexrelease>\let\@kernel@after@enddocument@afterlastpage\@undefined +%<latexrelease>\EndIncludeInRelease +%</2ekernel|latexrelease> +% \end{macrocode} +% \end{macro} +% % First define some blank commands, so that in case something goes wrong while % loading \textsf{expl3}, we won't get strange \texttt{Undefined control % sequence} errors. % \begin{macrocode} -%<*2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/10/01}% +%<latexrelease> {\@expl@sys@load@backend@@}{Roll forward support}% \def\@expl@sys@load@backend@@{} \def\@expl@push@filename@@{} \def\@expl@push@filename@aux@@{} \def\@expl@pop@filename@@{} -%</2ekernel> +%<latexrelease>\EndIncludeInRelease +%</2ekernel|latexrelease> % \end{macrocode} % % \changes{v1.2d}{2020/07/08} @@ -183,9 +212,20 @@ \errmessage{LaTeX requires expl3}% \batchmode \read -1 to \reserved@a %</2ekernel> +% \end{macrocode} +% We do not support a roll forward across 2019. You need to start +% with 2019 if you want to get to 2020 or beyond. +% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} %<*latexrelease> - \@latex@error{LaTeX requires expl3}\@ehd - \@gobble + \@latex@warning@no@line + {You need a format that already contains a recent\MessageBreak + expl3 as part of the kernel, e.g. at least a kernel\MessageBreak + from 2019 to roll forward to that date!\MessageBreak + --- I'm giving up!\MessageBreak\MessageBreak + Note that manually loading the expl3 package\MessageBreak + from your distribution is not enough}% + \@@end % die %</latexrelease> }% {% @@ -222,9 +262,39 @@ %<latexrelease>\EndIncludeInRelease % \end{macrocode} % +% +% Starting with 2020-10 the kernel contains most of the +% \texttt{xparse} interfaces loaded above. These interfaces are +% later used to define various user command. However, if somebody +% with an earlier installation tries to roll forward (using a +% \texttt{latexrelease} package from a newer release) this will not +% work as the earlier kernel doesn't contain commands such as +% \cs{NewDocumentCommand}. +% +% We therefore add code into \texttt{latexrelease.sty} to load the +% \texttt{xparse} package of the current installation instead. this +% may not work if the installation is really old, but roll forward +% can't do miracles. +% +% If the kernel is 2020-10 or later \cs{NewDocumentCommand} is +% already known (whether or not you roll forward or back) so +% nothing happens, but if you start from am earlier kernel the +% \texttt{xparse} package gets loaded by \texttt{latexrelease}. +% \changes{v1.2g}{2020/11/24}{Load xparse in latexrelease if needed (gh/434)} +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{2020/10/01}% +%<latexrelease> {\NewDocumentCommand}{Emergency loading xparse}% +%<latexrelease> +%<latexrelease>\ifdefined\NewDocumentCommand \else +%<latexrelease> \RequirePackage{xparse} +%<latexrelease>\fi +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% % \subsection{Using expl3 code} % -% In order to ease the implemantation of some new features in +% In order to ease the implementation of some new features in % \LaTeXe\ we may (temporarily) use some coding based on the % \pkg{expl3}-code. % Such macros will eventually vanish and may be changed @@ -242,9 +312,6 @@ % if that \pkg{expl3} command is needed in places that are others % coded in \LaTeXe{} conventions. % -% \begin{macrocode} -\ExplSyntaxOn -% \end{macrocode} % % In this file, each release of LaTeX adds an \cs{IncludeInRelease} % block, in which the macros copied for that release were defined. @@ -259,8 +326,16 @@ % redefinitions. % % \begin{macrocode} -%<latexrelease>\IncludeInRelease{2020/10/01}{expl3~2020-10-01}% -%<latexrelease> {expl3~macros~added~for~the~2020-10-01~release}% +%<latexrelease>\IncludeInRelease{2020/10/01}{\@expl@cs@to@str@@N}% +%<latexrelease> {expl3 macros added for the 2020-10-01 release}% +% \end{macrocode} +% +% The expl3 activation needs to be inside the release guards as +% otherwise rolling forward is broken in old kernels that do not +% have expl3 loaded. +% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} +\ExplSyntaxOn % \end{macrocode} % % \changes{v1.2e}{2020/08/19} @@ -290,21 +365,27 @@ % \end{macrocode} % % \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% +% +% Here we can't assume that expl3 is available. It will be if we +% roll back but if this code is executed rolling forward it needs +% to be pure 2e. +% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} %<latexrelease>\EndIncludeInRelease -%<latexrelease>\IncludeInRelease{0000/00/00}{expl3~2020-10-01}% -%<latexrelease> {expl3~macros~added~for~the~2020-10-01~release}% -%<latexrelease>\cs_undefine:N \@expl@cs@to@str@@N -%<latexrelease>\cs_undefine:N \@expl@str@if@eq@@nnTF -%<latexrelease>\cs_undefine:N \@expl@cs@prefix@spec@@N -%<latexrelease>\cs_undefine:N \@expl@cs@argument@spec@@N -%<latexrelease>\cs_undefine:N \@expl@cs@replacement@spec@@N -%<latexrelease>\cs_undefine:N \@expl@str@map@function@@NN +%<latexrelease>\IncludeInRelease{0000/00/00}{\@expl@cs@to@str@@N}% +%<latexrelease> {expl3 macros added for the 2020-10-01 release}% +%<latexrelease>\let \@expl@cs@to@str@@N \@undefined +%<latexrelease>\let \@expl@str@if@eq@@nnTF \@undefined +%<latexrelease>\let \@expl@cs@prefix@spec@@N \@undefined +%<latexrelease>\let \@expl@cs@argument@spec@@N \@undefined +%<latexrelease>\let \@expl@cs@replacement@spec@@N \@undefined +%<latexrelease>\let \@expl@str@map@function@@NN \@undefined %<latexrelease>\EndIncludeInRelease %</2ekernel|latexrelease> % \end{macrocode} % -% \begin{macrocode} -\ExplSyntaxOff -% \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 ecb499f3475..b5b5de629a6 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 %% -%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach, +%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach, %% Phelype Oleinik & LaTeX Team % % This file is part of the LaTeX base system. @@ -31,8 +31,8 @@ %%% From File: ltfilehook.dtx % % \begin{macrocode} -\providecommand\ltfilehookversion{v1.0c} -\providecommand\ltfilehookdate{2020/10/18} +\providecommand\ltfilehookversion{v1.0e} +\providecommand\ltfilehookdate{2021/01/07} % \end{macrocode} % %<*driver> @@ -75,7 +75,7 @@ % \ltfilehookversion\ dated \ltfilehookdate, \copyright\ \LaTeX\ % Project.}} % -% \author{Frank Mittelbach} +% \author{Frank Mittelbach, Phelype Oleinik, \LaTeX{} Project Team} % % \maketitle % @@ -339,9 +339,12 @@ % % \subsection{High-level interfaces for \LaTeX{}} % -% We do not provide any high-level \LaTeX{} commands (like -% \pkg{filehook} or \pkg{scrlfile} do) but think that for package -% writers the commands from for hook management are sufficient. +% We do not provide any additional wrappers around the hooks (like +% \pkg{filehook} or \pkg{scrlfile} do) because we believe that for +% package writers the high-level commands from the hook management, +% e.g., \cs{AddToHook}, etc.\ +% are sufficient and in fact easier to work with, given that the hooks +% have consistent naming conventions. % % % @@ -371,7 +374,7 @@ % \em % Please do not misuse this functionality and replace a file with % another unless if really needed and only if the new version is -% implementating the same functionality as the original one! +% implementing the same functionality as the original one! % \end{quote} % \end{function} % @@ -514,11 +517,10 @@ % \begin{macro}{ % \@@_file_parse_full_name:nN, % \@@_full_name:nn, -% \@@_set_curr_file_assign:nnnNN % } % A utility macro to trigger \pkg{expl3}'s file-parsing and lookup, % and return a normalized representation of the file name. If the -% queried file doesn't exist, no normalisation takes place. +% queried file doesn't exist, no normalization takes place. % The output of \cs{@@_file_parse_full_name:nN} is passed on to the % |#2|---a 3-argument macro that takes the \meta{path}, \meta{base}, % and \meta{ext} parts of the file name. @@ -615,6 +617,62 @@ % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% When rolling forward the following expl3 functions may not be defined. +% If we roll back the code does nothing. +% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{2020/10/01}% +%<latexrelease> {\file_parse_full_name_apply:nN}{Roll forward help}% +%<latexrelease> +%<latexrelease>\ExplSyntaxOn +%<latexrelease>\cs_if_exist:NF\file_parse_full_name_apply:nN +%<latexrelease>{ +%<latexrelease>\cs_new:Npn \file_parse_full_name_apply:nN #1 +%<latexrelease> { +%<latexrelease> \exp_args:Ne \__file_parse_full_name_auxi:nN +%<latexrelease> { \__kernel_file_name_sanitize:n {#1} } +%<latexrelease> } +%<latexrelease>\cs_new:Npn \__file_parse_full_name_auxi:nN #1 +%<latexrelease> { +%<latexrelease> \__file_parse_full_name_area:nw { } #1 +%<latexrelease> / \s__file_stop +%<latexrelease> } +%<latexrelease>\cs_new:Npn \__file_parse_full_name_area:nw #1 #2 / #3 \s__file_stop +%<latexrelease> { +%<latexrelease> \tl_if_empty:nTF {#3} +%<latexrelease> { \__file_parse_full_name_base:nw { } #2 . \s__file_stop {#1} } +%<latexrelease> { \__file_parse_full_name_area:nw { #1 / #2 } #3 \s__file_stop } +%<latexrelease> } +%<latexrelease>\cs_new:Npn \__file_parse_full_name_base:nw #1 #2 . #3 \s__file_stop +%<latexrelease> { +%<latexrelease> \tl_if_empty:nTF {#3} +%<latexrelease> { +%<latexrelease> \tl_if_empty:nTF {#1} +%<latexrelease> { +%<latexrelease> \tl_if_empty:nTF {#2} +%<latexrelease> { \__file_parse_full_name_tidy:nnnN { } { } } +%<latexrelease> { \__file_parse_full_name_tidy:nnnN { .#2 } { } } +%<latexrelease> } +%<latexrelease> { \__file_parse_full_name_tidy:nnnN {#1} { .#2 } } +%<latexrelease> } +%<latexrelease> { \__file_parse_full_name_base:nw { #1 . #2 } #3 \s__file_stop } +%<latexrelease> } +%<latexrelease>\cs_new:Npn \__file_parse_full_name_tidy:nnnN #1 #2 #3 #4 +%<latexrelease> { +%<latexrelease> \exp_args:Nee #4 +%<latexrelease> { +%<latexrelease> \str_if_eq:nnF {#3} { / } { \use_none:n } +%<latexrelease> #3 \prg_do_nothing: +%<latexrelease> } +%<latexrelease> { \use_none:n #1 \prg_do_nothing: } +%<latexrelease> {#2} +%<latexrelease> } +%<latexrelease>} +%<latexrelease>\ExplSyntaxOff +%<latexrelease> +%<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} % @@ -643,6 +701,8 @@ % kernel we do this only now and not in \texttt{ltfiles}. % % \begin{macro}{\InputIfFileExists} +% \begin{macro}{\@input@file@exists@with@hooks} +% \begin{macro}{\unqu@tefilef@und} % \cs{InputIfFileExists} loads any file if it is available so we % have to add the hooks \texttt{file/before} and % \texttt{file/after} in the right places. If the file doesn't @@ -653,19 +713,38 @@ %<latexrelease> {\InputIfFileExists}{Hook management (files)}% %<*2ekernel|latexrelease> % \end{macrocode} -% +% % \begin{macrocode} \let\InputIfFileExists\@undefined \DeclareRobustCommand \InputIfFileExists[2]{% \IfFileExists{#1}% {% - \@expl@@@filehook@file@push@@ - \@filehook@set@CurrentFile + \@expl@@@filehook@file@push@@ + \@filehook@set@CurrentFile +% \end{macrocode} +% We pre-expand \cs{@filef@und} so that in case another file is +% loaded in the true branch of \cs{InputIfFileExists}, these don't +% change their value meanwhile. This isn't a worry with +% \cs[no-index]{CurrentFile...} because they are kept in a stack. +% +% \changes{v1.0d}{2020/11/20} +% {Move loading to \cs{@input@file@exists@with@hooks} and expand +% \cs{@filef@und} to avoid getting the wrong file name in the case of +% a substitution.} +% \begin{macrocode} + \expandafter\@swaptwoargs\expandafter + {\expandafter\@input@file@exists@with@hooks + \expandafter{\@filef@und}}% + {#2}% + \@expl@@@filehook@file@pop@@ + }% +} +\def\@input@file@exists@with@hooks#1{% % \end{macrocode} % If the file exists then \cs{CurrentFile} holds its name. But we % can't rely on that still being true after the file has been % processed. Thus for using the name in the file hooks we need to -% preserve the name and then restored it for the +% preserve the name and then restore it for the % \texttt{file/after/...} hook. % % The hook always refers to the file requested by the user. The hook @@ -682,34 +761,54 @@ % the file name and extension are returned so that file hooks can % refer to the file by their name only. The path to the file is % returned in \cs{CurrentFilePath}. -% \begin{macrocode} - \edef\reserved@a{\@filef@und - \@expl@@@filehook@file@pop@assign@@nnnn - {\CurrentFilePathUsed}% - {\CurrentFileUsed}% - {\CurrentFilePath}% - {\CurrentFile}}% - \expandafter\@swaptwoargs\expandafter - {\reserved@a}% - {% - #2% - \@addtofilelist{#1}% - \UseHook{file/before}% +% \changes{v1.0e}{2021/01/07}{Restore \cs[no-index]{CurrentFile(Path)(Used)} +% after the input (gh/464)} +% \begin{macrocode} + \edef\reserved@a{% + \@expl@@@filehook@file@pop@assign@@nnnn + {\CurrentFilePathUsed}% + {\CurrentFileUsed}% + {\CurrentFilePath}% + {\CurrentFile}}% + \expandafter\@swaptwoargs\expandafter{\reserved@a}% +% \end{macrocode} +% +% Before adding to the file list we need to make all (letter) characters +% catcode~11, because several packages use constructions like +% \begin{verbatim} +% \filename@parse{<filename>} +% \ifx\filename@ext\@clsextension +% ... +% \fi +% \end{verbatim} +% and that doesn't work if \cs{filename@ext} is \cs{detokenize}d. +% Making \cs{@clsextension} a string doesn't help much because some +% packages define their own \cs[no-index]{<prefix>@someextension} with +% normal catcodes. This is not entirely correct because packages loaded +% (somehow) with catcode~12 alphabetic tokens (say, as the result of +% a \cs{string} or \cs{detokenize} command, or from a \TeX{} string like +% \cs{jobname}) will have these character tokens incorrectly turned into +% letter tokens. This however is rare, so we'll go for the all-letters +% approach (grepping the packages in \TeX{} Live didn't bring up any +% obvious candidate for breaking with this catcode change). +% \begin{macrocode} + {\edef\reserved@a{\unqu@tefilef@und#1\@nil}% + \@addtofilelist{\string@makeletter\reserved@a}% + \UseHook{file/before}% % \end{macrocode} % The current file name is available in \cs{CurrentFile} so we use % that in the specific hook. % \begin{macrocode} - \UseHook{file/before/\CurrentFile}% - \@@input - }% + \UseHook{file/before/\CurrentFile}% + \@@input #1% <- trailing space comes from \@filef@und + }% % \end{macrocode} -% And it is restored here so we can use it once more. +% And here, \cs{CurrentFile} is restored +% (by \cs{@expl@@@filehook@file@pop@assign@@nnnn}) so we can use it once more. % \begin{macrocode} - \UseHook{file/after/\CurrentFile}% - \UseHook{file/after}% - \@expl@@@filehook@file@pop@@ - }% -} + \UseHook{file/after/\CurrentFile}% + \UseHook{file/after}} +\def\unqu@tefilef@und"#1" \@nil{#1} %<latexrelease>\EndIncludeInRelease %</2ekernel|latexrelease> % \end{macrocode} @@ -737,6 +836,8 @@ %<latexrelease> {% %<latexrelease> \expandafter\@swaptwoargs\expandafter %<latexrelease> {\@filef@und}{#2\@addtofilelist{#1}\@@input}}} +%<latexrelease>\let\@input@file@exists@with@hooks\@undefined +%<latexrelease>\let\unqu@tefilef@und\@undefined %<latexrelease>\EndIncludeInRelease % \end{macrocode} % @@ -746,10 +847,14 @@ %<latexrelease>\long\def \InputIfFileExists#1#2{% %<latexrelease> \IfFileExists{#1}% %<latexrelease> {#2\@addtofilelist{#1}\@@input \@filef@und}} +%<latexrelease>\let\@input@file@exists@with@hooks\@undefined +%<latexrelease>\let\unqu@tefilef@und\@undefined %<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} % \end{macro} +% \end{macro} +% \end{macro} % % % @@ -772,8 +877,8 @@ % % % \begin{macro}{\@@_subst_add:nn,\@@_subst_remove:n, -% \@@_subst_file_normalize:n,\@@_subst_empty_name_chk:NN} -% \cs{@@_substitution_lthooadd:nn} declares a file substitution by +% \@@_subst_file_normalize:Nn,\@@_subst_empty_name_chk:NN} +% \cs{@@_subst_add:nn} declares a file substitution by % doing a (global) definition of the form % |\def|\cs{@file-subst@\meta{file}}|{|\meta{replacement}|}|. % The file names are properly sanitised, and normalized with the same @@ -787,8 +892,12 @@ \group_begin: \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } } \int_set:Nn \tex_escapechar:D { -1 } - \cs_gset:cpx { @file-subst@ \@@_subst_file_normalize:n {#1} } - { \@@_subst_file_normalize:n {#2} } + \cs_gset:cpx + { + @file-subst@ + \@@_subst_file_normalize:Nn \use_ii_iii:nnn {#1} + } + { \@@_subst_file_normalize:Nn \@@_file_name_compose:nnn {#2} } \group_end: } \cs_new_protected:Npn \@@_subst_remove:n #1 @@ -796,14 +905,18 @@ \group_begin: \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } } \int_set:Nn \tex_escapechar:D { -1 } - \cs_undefine:c { @file-subst@ \@@_subst_file_normalize:n {#1} } + \cs_undefine:c + { + @file-subst@ + \@@_subst_file_normalize:Nn \use_ii_iii:nnn {#1} + } \group_end: } -\cs_new:Npn \@@_subst_file_normalize:n #1 +\cs_new:Npn \@@_subst_file_normalize:Nn #1 #2 { \exp_after:wN \@@_subst_empty_name_chk:NN \cs:w \exp_after:wN \cs_end: - \cs:w \@@_file_parse_full_name:nN {#1} \use_ii_iii:nnn \cs_end: + \cs:w \@@_file_parse_full_name:nN {#2} #1 \cs_end: } \cs_new:Npn \@@_subst_empty_name_chk:NN #1 #2 { \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: } @@ -847,12 +960,18 @@ %<latexrelease>\EndIncludeInRelease % \end{macrocode} % +% We are not fully rolling back the file substitutions in case a +% rollback encounters a package that contains them, but is itself +% not setup for rollback. So we just bypass them and hope for the +% best. +% \changes{v1.0d}{2020/12/04}{Don't drop file substitution commands on +% rollback} % \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}% %<latexrelease> {\declare@file@substitution}{File substitution}% %<latexrelease> -%<latexrelease>\let \declare@file@substitution \@undefined -%<latexrelease>\let \undeclare@file@substitution \@undefined +%<latexrelease>\let \declare@file@substitution \@gobbletwo +%<latexrelease>\let \undeclare@file@substitution \@gobble %<latexrelease> %<latexrelease>\EndIncludeInRelease %<*2ekernel> @@ -878,7 +997,7 @@ % A file name is built using % \cs{expandafter}\cs{string}\cs{csname}\meta{filename}\cs{endcsname} % to avoid expanding utf8 active characters. The \cs{csname} expands -% the normalisation machinery and the routine to resolve a file +% the normalization machinery and the routine to resolve a file % substitution, returning a control sequence with the same name as the % file. % @@ -908,7 +1027,7 @@ % actual loaded file. \cs{@curr@file} is resolved first, to check if % a substitution happens. If it doesn't, % \cs{@expl@@@filehook@if@file@replaced@@TF} short-cuts and just copies -% \cs{@curr@file}, otherwise the full normalisation procedure is +% \cs{@curr@file}, otherwise the full normalization procedure is % executed. % % At this stage the file name is parsed and normalized, but if the @@ -929,6 +1048,7 @@ \if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file@reqd \fi}% {\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file \fi \global\let\@curr@file@reqd\@curr@file}% + \@expl@@@filehook@clear@replacement@flag@@ \endgroup} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease @@ -1059,7 +1179,7 @@ % \begin{macro}{\@@_resolve_file_subst:w} % \begin{macro}{\@@_normalize_file_name:w} % \begin{macro}{\@@_file_name_compose:nnn} -% Start by sanitising the file with \cs{@@_file_parse_full_name:nN} +% Start by sanitizing the file with \cs{@@_file_parse_full_name:nN} % then do \cs{@@_file_subst_begin:nnn}\Arg{path}\Arg{name}\Arg{ext}. % \begin{macrocode} %</2ekernel> @@ -1079,18 +1199,25 @@ % % \begin{macro}{flag @@_file_replaced} % \begin{macro}{\@@_if_file_replaced:TF} +% \begin{macro}{\@@_clear_replacement_flag:} % Since the file replacement is done expandably in a \cs{csname}, use % a flag to remember if a substitution happened. We use this in % \cs{set@curr@file} to short-circuit some of it in case no % substitution happened (by far the most common case, so it's worth -% optimising). +% optimizing). The flag raised during the file substitution algorithm +% must be explicitly cleared after the \cs{@@_if_file_replaced:TF} +% conditional is no longer needed, otherwise further uses of +% \cs{@@_if_file_replaced:TF} will wrongly return true. % \begin{macrocode} \flag_new:n { @@_file_replaced } \cs_new:Npn \@@_if_file_replaced:TF #1 #2 - { \flag_if_raised:nTF { @@_file_replaced } {#1} {#2} } + { \flag_if_raised:nTF { @@_file_replaced } {#1} {#2} } +\cs_new_protected:Npn \@@_clear_replacement_flag: + { \flag_clear:n { @@_file_replaced } } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_file_subst_begin:nnn} % First off, start by checking if the current file ($\meta{name} + @@ -1140,8 +1267,8 @@ % the macro below, \cs{@@_file_subst_loop:cc} is called with % \cs[no-index]{@file-subst@\meta{file}} and % \cs[no-index]{@file-subst@\cs[no-index]{@file-subst@\meta{file}}}; -% that is, the substitution of \meta{file} and the substution of that -% substution: the Tortoise walks one step while the Hare walks two. +% that is, the substitution of \meta{file} and the substitution of that +% substitution: the Tortoise walks one step while the Hare walks two. % % Within \cs{@@_file_subst_loop:NN} the two substitutions are % compared, and if they lead to the same file it means that there is @@ -1343,7 +1470,12 @@ \cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF \__filehook_if_file_replaced:TF % \end{macrocode} -% +% +% \begin{macrocode} +\cs_new_eq:NN \@expl@@@filehook@clear@replacement@flag@@ + \__filehook_clear_replacement_flag: +% \end{macrocode} +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@drop@extension@@N \__filehook_drop_extension:N @@ -1368,10 +1500,22 @@ % \begin{macrocode} \ExplSyntaxOff % \end{macrocode} -% +% +% This one specifically has to be undefined because it is left over in +% the input stream from \cs{InputIfFileExists} and executed when +% \pkg{latexrelease} is loaded. It cannot be \cs{let} to \cs{@undefined} +% otherwise it would error as well, so it is \cs{let} to \cs{relax} to +% be silently ignored when loading \cs{latexrelease}. +% \changes{v1.0e}{2021/01/07}{Added rollback for this case to avoid +% spurious errors (part of gh/463)} % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease +%<latexrelease> +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}% +%<latexrelease>\let\@expl@@@filehook@file@pop@@\relax +%<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} % @@ -1410,7 +1554,7 @@ % \end{macro} % % \begin{macro}{\@@_log_file_record:n} -% This macro is responsible for increasing and decresing the file +% This macro is responsible for increasing and decreasing the file % nesting level, as well as printing to the log. The argument is % either |STOPTART| or |STOP| and the action it takes on the nesting % integer depends on that. diff --git a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx index 99be77c8449..f91dfe32aaf 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfiles.dtx} - [2020/10/04 v1.2j LaTeX Kernel (File Handling)] + [2020/12/04 v1.2j LaTeX Kernel (File Handling)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfiles.dtx} @@ -334,7 +334,7 @@ % locally in the output routine. In particular it allows hyphenation % in the page head even if the page break happens in verbatim. % If this has already been set by a package, set to the value of |\language| -% at this spoint. +% at this point. % \changes{v1.1n}{2017/03/10}{Save language default} % \begin{macrocode} \ifx\document@default@language\m@ne @@ -456,7 +456,7 @@ % harmless), however, in more complicated scenarios where several % full documents are combined to a single document it might get % applied several times with harmful effects. We therefore -% explicitly drop it at this point. the coing is somewhat obscure +% explicitly drop it at this point. the coding is somewhat obscure % due to the name of the macro which requires constructing. % \begin{macrocode} \edef \@kernel@after@begindocument@before {% @@ -710,15 +710,15 @@ \@latex@error{\string\include\space cannot be nested}\@eha \else % \end{macrocode} -% Here the normalisation will add |.tex| for all files, (it uses the -% the same normalisation as the hooks), so we need to remove that +% Here the normalization will add |.tex| for all files, (it uses +% the same normalization as the hooks), so we need to remove that % manually. \cs{@strip@tex@ext} does that. % \begin{macrocode} \set@curr@file{#1}% \edef\@curr@file{\@strip@tex@ext\@curr@file}% % \end{macrocode} % For historical reasons \cs{@include} expects an argument -% delimited by a space. This is kept (though uncessary now) to avoid +% delimited by a space. This is kept (though unnecessary now) to avoid % errors in other packages that use \cs{@include} directly. % \begin{macrocode} \expandafter\@include\expandafter{\@curr@file} % deliberate space @@ -726,13 +726,13 @@ % \end{macrocode} % % Here in \cs{includeonly} we also need to strip |.tex| after -% normalisation: +% normalization: % \begin{macrocode} \def\includeonly#1{% \@partswtrue % \end{macrocode} % Because the argument to |\includeonly| is a comma-separated list -% of filenames where there may be comma's precedeing some of the +% of filenames where there may be comma's preceding some of the % filenames or trailing them. Therefore we need to take the list % apart, remove the unwanted spaces while leaving the spaces % \emph{in} the filenames intact. @@ -996,7 +996,7 @@ % A side effect of the new code is that we will see quotes around % file name displays where there haven't been any before. % -% For compatibilty with existing code using |{abc}.tex| or |{one.two}.png| +% For compatibility with existing code using |{abc}.tex| or |{one.two}.png| % an initial brace group is discarded before expansion and |\string| is applied % The content of the brace group is discarded. This means that a leading space % will be lost unless protected (by |{ }| or |" "| or |\space|) but filenames @@ -1058,7 +1058,7 @@ % % \changes{v1.2a}{2019/07/01}{Support UTF-8} % \changes{v1.2b}{2019/08/27}{Make command robust} -% \changes{v1.2d}{2019/10/26}{dont quote name} +% \changes{v1.2d}{2019/10/26}{don't quote name} % \begin{macrocode} \DeclareRobustCommand\IfFileExists[1]{% \set@curr@file{#1}% diff --git a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx index aa4219723af..ee45ea5588f 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltfinal.dtx} - [2020-09-26 v2.2j LaTeX Kernel (Final Settings)] + [2021/01/06 v2.2l LaTeX Kernel (Final Settings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -57,7 +57,7 @@ % % % \section{Final settings} -% This section contains the final settings for \LaTeX. It initialises +% 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. % @@ -90,6 +90,9 @@ % \changes{v2.0s}{2016/10/15}{Tidy up status of char 127} % \changes{v2.2i}{2020/08/21}{Integration of new hook management interface} % +% +% +% % \subsection{Debugging} % % By default, \LaTeX{} shows statistics: @@ -150,7 +153,7 @@ %\begin{macro}{\newXeTeXintercharclass} % \changes{v2.0a}{2014/12/30}{macro added} % \changes{v2.0b}{2015/01/23}{use reserved count 257} -% \changes{v2.0f}{2015/04/28}{define \cs{xe@alloc@intercharclass} for compatibility with older xelatex initilisation} +% \changes{v2.0f}{2015/04/28}{define \cs{xe@alloc@intercharclass} for compatibility with older xelatex initialization} %\begin{macro}{\xe@alloc@intercharclass} %\begin{macro}{\e@alloc@intercharclass@top} % \changes{v2.0j}{2016/01/04}{Start allocation at one not three} @@ -632,7 +635,7 @@ % % \begin{macro}{\UseRawInputEncoding} % \changes{v2.1a}{2018/03/25}{Macro added} -% Reset 8 bit characters to catcode 12 so the input endcoing matches the ``Raw'' +% Reset 8 bit characters to catcode 12 so the input encoding matches the ``Raw'' % font encoding. % Useful for special behaviours, or for compatibility with older \LaTeX\ formats. % \changes{v2.1b}{2018/04/06}{Undo changes to \cs{DeclareFontEncoding@} and @@ -939,7 +942,7 @@ \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% % \end{macrocode} % Tell UTF-8 processing to process chars even though we are in an \cs{protected@edef}. -% \changes{v2.1h}{2019/09/14}{Expand UTF8 chrs when case changing (github/177)} +% \changes{v2.1h}{2019/09/14}{Expand UTF8 chars when case changing (github/177)} % \begin{macrocode} \let\UTF@two@octets@noexpand\@empty \let\UTF@three@octets@noexpand\@empty diff --git a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx index dee9a10197e..1c8f844bc37 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -31,7 +31,7 @@ % %<*driver> % \fi -\ProvidesFile{ltfloat.dtx}[2020/04/09 v1.2d LaTeX Kernel (Floats)] +\ProvidesFile{ltfloat.dtx}[2020/12/05 v1.2d LaTeX Kernel (Floats)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfloat.dtx} @@ -356,7 +356,7 @@ % \changes{v1.1f}{1994/11/21} % {Missing percents reinserted after 4, 8: these are not numbers.} % \changes{v1.1g}{1994/12/10}{Old version reinstated temporarily} -% \changes{v1.1g}{1994/12/10}{Sanitisation added temporarily} +% \changes{v1.1g}{1994/12/10}{Sanitization added temporarily} % The first part of this sets the count register that stores all % the information about the type and fps of the float. % @@ -574,7 +574,7 @@ % % \begin{macro}{\@setnobreak} % \changes{v1.1f}{1994/11/21}{Macro added} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before +% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before % \cs{@nobreak...}} % \begin{macrocode} \def \@setnobreak{% @@ -588,7 +588,7 @@ % % \begin{macro}{\@setminipage} % \changes{v1.1f}{1994/11/21}{Macro added} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before +% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before % \cs{@minipage...}} % \begin{macrocode} \def \@setminipage{% @@ -734,7 +734,7 @@ % {Use new \cs{color@hbox} concept.} % \changes{v1.1f}{1994/11/21}{Corrected position of \cs{outer@nobreak}} % \changes{v1.1f}{1994/11/21}{Added reset of minipage flag} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before +% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before % \cs{@minipage...}} % \begin{macrocode} \@minipagefalse @@ -1002,7 +1002,7 @@ % \changes{v1.1f}{1994/11/21}{Added \cs{@setminipage} etc} % \changes{v1.1f}{1994/11/21}{Added resetting of size and font} % \changes{v1.1m}{1995/05/25}{(CAR) Resettings moved to hook} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before +% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before % \cs{@minipage...}} % \begin{macrocode} \long\def \@savemarbox #1#2{% @@ -1026,7 +1026,7 @@ % % The rational for allowing these normally global flags to be set % locally here, via |\@parboxrestore| was stated originally by -% Donald Arsenau and extended by Chris Rowley. +% Donald Arseneau and extended by Chris Rowley. % It is because these flags are only set globally to % true by section commands, and these should never appear within % marginals or floats or, indeed, in any group; and they are only ever diff --git a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx index 0a44d5acf1e..8d587a848a5 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfntcmd.dtx} - [2019/12/17 v3.4c LaTeX Kernel (Font commands)] + [2020/12/05 v3.4c LaTeX Kernel (Font commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfntcmd.dtx} @@ -303,7 +303,7 @@ % character in an unsloped font; we believe (in early 2003) that % this is perhaps inefficient but not dangerous. % -% It also now checks for empty contents of the text command and optimises +% It also now checks for empty contents of the text command and optimizes % this case. Some care is also taken to check that doing dangerous % things in vertical mode is avoided. % @@ -539,7 +539,7 @@ % % \begin{macro}{\ifmaybe@ic} % \changes{v3.4a}{2009/12/14}{Macro added} -% Switch used soley within |\maybe@ic| not interfering with other +% Switch used solely within |\maybe@ic| not interfering with other % switches. % \begin{macrocode} \newif\ifmaybe@ic @@ -585,7 +585,7 @@ % \begin{macrocode} \do \t@st@ic % \end{macrocode} -% Frank thinks that the next bit it is inefficient if done after +% Frank thinks that the next bit is inefficient if done after % the second change. Chris thinks that most all of this is % inefficient for the commonest cases: but that is the price of a % cleverer algorithm. It is certainly needed to deal with the use diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx index d8e4286b786..4e3b4d983cc 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-2020 +% Copyright (C) 2019-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssaxes.dtx} - [2020/08/21 v1.0g LaTeX Kernel (NFSS Axes handing)] + [2020/12/22 v1.0h LaTeX Kernel (NFSS Axes handing)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -68,11 +68,11 @@ % % \StopEventually{} % -% Everything in the this file got introduced 2020/02/02, so we do a -% single rollback (for now). +% \changes{v1.0h}{2020/12/04}{Reorganized the rollback data} +% +% Everything in the this file got introduced 2020/02/02, so we use large rollback +% chunks, only interrupted if necessary. % \begin{macrocode} -%<*2ekernel> -%</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/02/02}% %<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}% @@ -168,13 +168,13 @@ % request (i.e., second argument). % % In particular this is also true for cases involving \texttt{m}, -% e.g., \texttt{bm} (bold medium width) which automatially gets +% e.g., \texttt{bm} (bold medium width) which automatically gets % reduced result in \texttt{b} or \texttt{mc} (medium weight % condensed) which becomes \texttt{c} as a result. % % \item % -% Only a few entries have ``alterative'' values and perhaps most of +% Only a few entries have ``alternative'' values and perhaps most of % them should get dropped. Or maybe not \ldots{} needs some thought % perhaps. % @@ -183,7 +183,7 @@ % to stay with \texttt{b} when a change to \texttt{c} is requested % and \texttt{bc} doesn't exist, than to go to first change the % shape to \texttt{n} and then find that \texttt{bc/n} doesn't -% exist either and thus ending up wth \texttt{m/n}. +% exist either and thus ending up with \texttt{m/n}. % % \item % @@ -678,21 +678,59 @@ % \end{macrocode} % % - - +% Supporting rollback \ldots +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}% +%<latexrelease> +%<latexrelease>\let\DeclareFontSeriesChangeRule\@undefined +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% +% +% +% % \subsection{Changing to a new series} % % - -% \begin{macro}{\if@forced@series} -% If the series gets forced we need to know that fact later on. +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\fontseries}{delay fontseries update}% +% \end{macrocode} +% +% +% \begin{macro}{\fontseries} +% The \cs{fontseries} command takes one argument which is the requested new +% font series. In the orginal implementation it simply saved the +% expanded value in \cs{f@series}. Now we do a bit more processing +% and look up the final value in the font series data base. This is +% done by \cs{merge@font@series}. But the lookup should be done +% within the target family and call to \cs{fontseries} might be +% followed by a \cs{fontfamily} call. So we delay the processing to +% \cs{selectfont} and only record the necessary action in +% \cs{delayed@f@adjustment}. % \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added} +% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)} % \begin{macrocode} -\newif\if@forced@series +\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse + \expandafter\def\expandafter\delayed@f@adjustment\expandafter + {\delayed@f@adjustment\delayed@merge@font@series{#1}}} % \end{macrocode} % \end{macro} % % +% \begin{macro}{\delayed@f@adjustment} +% The macro holding the delayed action(s) for use in \cs{selectfont}. +% \begin{macrocode} +\let\delayed@f@adjustment\@empty +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\fontseriesforce} % To change unconditionally to a new series you can use % \cs{fontseriesforce}. Of course, if the series doesn't exist for @@ -700,24 +738,66 @@ % dependency on the current series. % \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added} % \begin{macrocode} -\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} +\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue + \expandafter\def\expandafter\delayed@f@adjustment\expandafter + {\delayed@f@adjustment\edef\f@series{#1}}} % \end{macrocode} % \end{macro} % % -% \begin{macro}{\fontseries} -% The \cs{fontseries} command takes one argument which is the requested new -% font series. In the orginal implementation it simply saved the -% expanded value in \cs{f@series}. Now we do a bit more processing -% and look up the final value in the font series data base. This is -% done by \cs{merge@font@series}. +% +% \begin{macro}{\if@forced@series} +% If the series gets forced we need to know that fact later on. % \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added} % \begin{macrocode} -\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}} +\newif\if@forced@series % \end{macrocode} % \end{macro} - - +% +% +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\fontseries}{delay fontseries update}% +%<latexrelease> +%<latexrelease>\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}} +%<latexrelease>\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} +%<latexrelease>\let\delayed@f@adjustment\@undefined +%<latexrelease> +% \end{macrocode} +% For a roll forward we may have to define \cs{if@forced@series} +% but this needs doing in a somewhat roundabout way. +% \begin{macrocode} +%<latexrelease>\ifx\@forced@seriestrue\@undefined \else +%<latexrelease> \expandafter\newif\csname if@forced@series\endcsname +%<latexrelease>\fi +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\fontseries}{delay fontseries update}% +%<latexrelease> +%<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} +%<latexrelease>\let\fontseriesforce\@undefined +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% +% +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\merge@font@series}{Merge series values}% +% \end{macrocode} +% +% % \begin{macro}{\merge@font@series} % We look up the data base value by expanding the right command % twice. If no such value exist then the result will be \cs{relax} @@ -734,9 +814,9 @@ } % \end{macrocode} % \end{macro} - - - +% +% +% % \begin{macro}{\merge@font@series@} % This now defines the new \cs{f@series}: % \begin{macrocode} @@ -758,11 +838,9 @@ % \end{macrocode} % Otherwise we check if the desired result for the series % (\texttt{\#1}) exists for the font family and the current shape. -% As the \texttt{.fd} is perhaps not loaded yet, we first -% have to do that, otherwise the test would fail even if the face -% is actually available. +% All this happens inside \cs{selectfont} which has already taken care to load +% the \texttt{.fd}, file if necessary. % \begin{macrocode} - \maybe@load@fontshape \edef\reserved@a{\f@encoding /\f@family /#1/\f@shape}% \ifcsname \reserved@a \endcsname % \end{macrocode} @@ -798,9 +876,10 @@ % \end{macrocode} % It is possible that the previous font and the new one are % actually identical (and the font was not found because it still -% needs loading) in which case a warning would look rather odd. So -% we make a quick check for that (which is the reason why we defined -% \cs{@reserveda} above. +% needs loading) in which case a warning would look rather odd. So +% we make a quick check for that (which is the reason why we +% defined \cs{@reserveda} above instead of doing inline testing +% inside \cs{ifcsname}). % \begin{macrocode} \def\@font@shape@subst@warning{% \edef\reserved@b{\curr@fontshape}% @@ -814,13 +893,71 @@ % % % +% \begin{macro}{\merge@font@series@without@substitution, +% \merge@font@series@without@substitution@, +% \delayed@merge@font@series} +% +% \changes{v1.0h}{2020/12/22}{Distangle series and shape update (gh/444)} +% +% \cs{merge@font@series@without@substitution} works like +% \cs{merge@font@series}, i.e., it looks up the combination in the +% rule base and if there exists an entry it uses it and if not it +% uses the new series value. However, it doesn't check if there is +% actually a font face with the new series value as +% \cs{merge@font@series} does. This simplified command is used in +% \cs{selectfont} at a point where other font attributes are not +% yet updated so that checking the font face might result incorrect +% in substitutions. +% +% \begin{macrocode} +\def\merge@font@series@without@substitution#1{% + \expandafter\expandafter\expandafter + \merge@font@series@without@substitution@ + \csname series@\f@series @#1\endcsname + {#1}% + \@nil +} +% \end{macrocode} +% +% \begin{macrocode} +\def\merge@font@series@without@substitution@#1#2#3\@nil{% + \def\reserved@a{#3}% + \ifx\reserved@a\@empty + \set@target@series{#2}% + \else + \set@target@series{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\delayed@merge@font@series} +% +% When we delay the merge action in \cs{fontseries} we first +% attempt to use merging without substitution. If that results in a +% non-existing font face the merge is redone in \cs{selectfont} +% using a version with substitution. See \cs{selectfont} for details. +% +% \changes{v1.0h}{2020/12/22}{Distangle series and shape update +% (gh/444)} +% \begin{macrocode} +\let\delayed@merge@font@series\merge@font@series@without@substitution +% \end{macrocode} +% \end{macro} % % \begin{macro}{\maybe@load@fontshape} % A small helper that we use a couple of times: try loading a % fontshape (in a group because \cs{try@load@fontshape} normalizes -% catcodes). +% catcodes and we also want to change \cs{typeout} so that it +% doesn't report missing \texttt{.fd} files on the terminal). % \begin{macrocode} -\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup} +\def\maybe@load@fontshape{% + \begingroup + \let \typeout \@font@info + \try@load@fontshape + \endgroup} % \end{macrocode} % \end{macro} % @@ -836,7 +973,7 @@ % condensed series, etc.). We do this in all branches above because a user % might have written %\begin{verbatim} -\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc} +% \DeclareFontSeriesChangeRule {m}{sc}{msc}{mc} %\end{verbatim} % instead of using \texttt{sc} and \texttt{c} as needed in the % \texttt{.fd} file. @@ -845,7 +982,7 @@ % \end{macrocode} % We need to \cs{edef} the argument first in case it starts with a % conditional. Then we check (and perhaps drop) an ``m'' from the -% value andassign the result to \cs{f@series}. +% value and assign the result to \cs{f@series}. % \changes{v1.0d}{2020/02/27}{Drop ``m'' only in a specific set of values (gh/293)} % \begin{macrocode} \edef\f@series{#1}% @@ -916,6 +1053,30 @@ } % \end{macrocode} % \end{macro} +% +% +% +% Supporting rollback \ldots +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\merge@font@series}{Merge series values}% +%<latexrelease> +%<latexrelease>\let\merge@font@series\@undefined +%<latexrelease>\let\merge@font@series@\@undefined +%<latexrelease>\let\@font@shape@subst@warning\@undefined +%<latexrelease>\let\merge@font@series@without@substitution\@undefined +%<latexrelease>\let\merge@font@series@without@substitution@\@undefined +%<latexrelease>\let\delayed@merge@font@series\@undefined +%<latexrelease>\let\maybe@load@fontshape\@undefined +%<latexrelease>\let\set@target@series\@undefined +%<latexrelease>\let\series@maybe@drop@one@m\@undefined +%<latexrelease>\let\series@drop@one@m\@undefined +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} + @@ -925,6 +1086,12 @@ % that is desirable), essentially building in an ``sc'' % axis). % +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\DeclareFontShapeChangeRule}{Font shape change rules}% +% \end{macrocode} +% % % % \begin{macro}{\DeclareFontShapeChangeRule} @@ -948,8 +1115,9 @@ % resets everything and \texttt{up} changes italic or slanted to % upright and \texttt{ulc} undoes small caps. % -% So we now offer \cs{normalshape} (using \cs{shapedefault} which is normally the same as -% calling both \cs{ulcshape} and \cs{upshape}, only more efficient. +% So we now offer \cs{normalshape} (using \cs{shapedefault} which +% is normally the same as calling both \cs{ulcshape} and +% \cs{upshape}, only more efficient. % % % \begin{macro}{\ulcshape} @@ -1080,7 +1248,7 @@ % \texttt{n}. This is the way \texttt{fontspec} implemented its % version on this interface, so this rule means we are also % compatible with the way \texttt{fontspec} behaved. Still it -% remains an odditywhic I would rather liked to have avoided. +% remains an oddity which I would rather liked to have avoided. % \begin{macrocode} %\DeclareFontShapeChangeRule {sc}{up} {sc} {} \DeclareFontShapeChangeRule {sc}{up} {n} {} @@ -1100,7 +1268,7 @@ % \texttt{ulc} in \cs{f@series} which most certainly doesn't % exist. So when a font is later selected that would result in a % substitution (so no harm done really). Alternatively, we could in -% this case use \texttt{n} as aternative, which may be a bit +% this case use \texttt{n} as alternative, which may be a bit % faster, but such a setup would be so weird in the first place % that this isn't worth the effort. % @@ -1134,26 +1302,97 @@ \DeclareFontShapeChangeRule {sw}{up} {n} {} % \end{macrocode} % +% Supporting rollback \ldots +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\DeclareFontShapeChangeRule}{Font shape change rules}% +%<latexrelease> +%<latexrelease>\let\DeclareFontShapeChangeRule\@undefined +%<latexrelease>\let\ulcshape\@undefined +%<latexrelease>\let\ulcdefault\@undefined +%<latexrelease>\let\swshape\@undefined +%<latexrelease>\let\swdefault\@undefined +%<latexrelease>\let\sscshape\@undefined +%<latexrelease>\let\sscdefault\@undefined +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% % % \subsection{Changing to a new shape} % +% +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\fontshape}{Font shape change}% +% \end{macrocode} +% +% +% % \begin{macro}{\fontshape} % Again the \cs{fontshape} now has to do a lookup to get to its new % value in \cs{f@shape}. The method is exactly the same as in % \cs{fontseries}. +% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)} % \begin{macrocode} -\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}} +\DeclareRobustCommand\fontshape[1] + {\expandafter\def\expandafter\delayed@f@adjustment\expandafter + {\delayed@f@adjustment\delayed@merge@font@shape{#1}}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\fontshapeforce} % The unconditional version: +% +% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)} % \begin{macrocode} -\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}} +\DeclareRobustCommand\fontshapeforce[1] + {\expandafter\def\expandafter\delayed@f@adjustment\expandafter + {\delayed@f@adjustment\edef\f@shape{#1}}} % \end{macrocode} % \end{macro} % +% +% Supporting rollback \ldots +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\fontshape}{Font shape change}% +%<latexrelease> +%<latexrelease>\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}} +%<latexrelease>\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\fontshape}{Font shape change}% +%<latexrelease> +%<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} +%<latexrelease>\let\fontshapeforce\@undefined +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% + + + + + +% \begin{macrocode} +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\merge@font@shape}{Font shape change rules}% +% \end{macrocode} +% +% +% % \begin{macro}{\merge@font@shape} % Look up the database entry (if existing) and act accordingly. % \begin{macrocode} @@ -1178,9 +1417,12 @@ \ifx\reserved@a\@empty \edef\f@shape{#2}% \else - \maybe@load@fontshape +% \end{macrocode} +% \cs{reserved@a} is used in \cs{@font@shape@subst@warning} so we +% have to define it in addition to do the \cs{ifcsname} test +% \begin{macrocode} \edef\reserved@a{\f@encoding /\f@family /\f@series/#1}% - \ifcsname \reserved@a\endcsname + \ifcsname \reserved@a\endcsname \edef\f@shape{#1}% \else \ifcsname \f@encoding /\f@family /\f@series/#2\endcsname @@ -1197,6 +1439,38 @@ % \end{macro} % % +% \begin{macro}{\merge@font@shape@without@substitution, +% \merge@font@shape@without@substitution@, +% \delayed@merge@font@shape} +% See definition of \cs{selectfont} for how these macros are used. +% \changes{v1.0h}{2020/12/22}{Distangle series and shape update (gh/444)} +% \begin{macrocode} +\def\merge@font@shape@without@substitution#1{% + \expandafter\expandafter\expandafter + \merge@font@shape@without@substitution@ + \csname shape@\f@shape @#1\endcsname + {#1}% + \@nil +} +% \end{macrocode} +% +% \begin{macrocode} +\def\merge@font@shape@without@substitution@#1#2#3\@nil{% + \def\reserved@a{#3}% + \ifx\reserved@a\@empty + \edef\f@shape{#2}% + \else + \edef\f@shape{#1}% + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\let\delayed@merge@font@shape\merge@font@shape@without@substitution +% \end{macrocode} +% \end{macro} +% +% % % \begin{macro}{\normalshape} % @@ -1255,52 +1529,41 @@ % \end{macrocode} % \end{macro} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Supporting rollback \ldots % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}% +%<latexrelease> {\merge@font@shape}{Font shape change rules}% %<latexrelease> -%<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} %<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} -%<latexrelease>\let\fontseriesforce\@undefined %<latexrelease>\let\fontshapeforce\@undefined %<latexrelease> -%<latexrelease>\let\DeclareFontSeriesChangeRule\@undefined -%<latexrelease>\let\merge@font@series\@undefined -%<latexrelease>\let\merge@font@series@\@undefined -%<latexrelease>\let\@font@shape@subst@warning\@undefined -%<latexrelease>\let\maybe@load@fontshape\@undefined -%<latexrelease>\let\set@target@series\@undefined -%<latexrelease>\let\series@maybe@drop@one@m\@undefined -%<latexrelease>\let\series@drop@one@m\@undefined -%<latexrelease>\let\DeclareFontShapeChangeRule\@undefined %<latexrelease>\let\merge@font@shape\@undefined %<latexrelease>\let\merge@font@shape@\@undefined +%<latexrelease> +%<latexrelease>\let\merge@font@shape@without@substitution\@undefined +%<latexrelease>\let\merge@font@shape@without@substitution@\@undefined +%<latexrelease>\let\delayed@merge@font@shape\@undefined +%<latexrelease> %<latexrelease>\let\normalshape\@undefined -%<latexrelease>\let\ulcshape\@undefined -%<latexrelease>\let\ulcdefault\@undefined -%<latexrelease>\let\swshape\@undefined -%<latexrelease>\let\swdefault\@undefined -%<latexrelease>\let\sscshape\@undefined -%<latexrelease>\let\sscdefault\@undefined -%<latexrelease>\let\normalshape\@undefined +%<latexrelease> % \end{macrocode} % This is always called in \cs{document} so don't make it undefined. % \begin{macrocode} %<latexrelease> %<latexrelease>\let\reinstall@nfss@defs\relax %<latexrelease>\EndIncludeInRelease -%<*2ekernel> % \end{macrocode} % +% +% % This initializes the 2020/02/02 extensions to NFSS after any changes % in the preamble. % \changes{v1.0g}{2020/08/21}{Integration of new hook management interface} % \begin{macrocode} -%</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/10/01}% %<latexrelease> {\reinstall@nfss@defs}{NFSS series init}% diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx index 4a6afca3ace..d2dde745d4c 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2020/02/27 v3.2g LaTeX Kernel (NFSS Basic Macros)] + [2020/12/10 v3.2h LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -891,12 +891,31 @@ % series and shape which is not desired if we intend to use an % explicit font shape! % \changes{v3.2e}{2019/12/17}{Don't call \cs{fontseries} or \cs{fontshape}} +% \changes{v3.2h}{2020/12/10}{Drop ``m'' if the series value is a member +% of a fixed list and issue warning if doing it (gh/453)} % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2020/02/02}% +%<latexrelease> {\usefont}{Drop m in usefont}% \DeclareRobustCommand\usefont[4]{\fontencoding{#1}% \edef\f@family{#2}% - \edef\f@series{#3}% + \set@target@series{#3}% \edef\f@shape{#4}\selectfont \ignorespaces} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\usefont}{Drop m in usefont}% +%<latexrelease> +%<latexrelease>\DeclareRobustCommand\usefont[4]{\fontencoding{#1}% +%<latexrelease> \edef\f@family{#2}% +%<latexrelease> \edef\f@series{#3}% +%<latexrelease> \edef\f@shape{#4}\selectfont +%<latexrelease> \ignorespaces} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -1384,7 +1403,7 @@ % The idea for this macro is stolen from the \texttt{substitutefont} % package by Günter Milde, with some modifications and a new name. % -% Its purpose is to provide characters in a special encoding tht +% Its purpose is to provide characters in a special encoding that % are not available in the current font family to be taken from a % different family that is visually compatible (or not if you % choose badly). For example, you can match the GFS Didot Greek @@ -1403,7 +1422,7 @@ %</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/02/02}% -%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}% +%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substitution}% \begingroup \nfss@catcodes \gdef\DeclareFontFamilySubstitution#1#2#3{% @@ -1413,7 +1432,7 @@ % is better to handle that differently. % % Of course the families may still need loading at -% this point and so we arange for this. Otherwise we might run into +% this point and so we arrange for this. Otherwise we might run into % trouble because the necessary \cs{DeclareFontFamily} has not been % seen. % \begin{macrocode} @@ -1457,7 +1476,7 @@ %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}% +%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substitution}% %<latexrelease> %<latexrelease>\let\DeclareFontFamilySubstitution\@undefined %<latexrelease>\EndIncludeInRelease @@ -1484,11 +1503,11 @@ \noexpand\@nil}% % \end{macrocode} % Initialize all those internal variables which may or may not have -% values in the first seconds of NFSS' bootstraping process. Later +% values in the first seconds of NFSS' bootstrapping process. Later % on such values will be updated when an encoding is selected, etc. % % We definitely don't want to set |\f@encoding|; we can set all the -% others since if they are left ``blank'' any selection would grap +% others since if they are left ``blank'' any selection would grab % ``error default values'' as well. However, this probably should % go also---and now it did. % \changes{v2.1n}{1994/05/14}{Don't set \cs{f@encoding}} @@ -1540,7 +1559,7 @@ % \begin{macrocode} %</2ekernel> %<latexrelease>\IncludeInRelease{2015/01/01}{\wrong@fontshape}% -%<latexrelease> {Font substituation in preamble}% +%<latexrelease> {Font substitution in preamble}% %<*2ekernel|latexrelease> \def\wrong@fontshape{% \csname D@\f@encoding\endcsname % install defaults if in math @@ -1581,9 +1600,9 @@ % corresponding \texttt{.fd} file may not been loaded % yet. Therefore we try this now. Otherwise equating the requested % font shape with the finally selected fontshape below will fail -% and can result in ``NFSS tables corruped''. After begin document +% and can result in ``NFSS tables corrupted''. After begin document % that will not happen as all \texttt{.fd} files involved in -% substituation are loaded at |\begin{document}|. +% substitution are loaded at |\begin{document}|. % \begin{macrocode} \begingroup \try@load@fontshape @@ -1662,7 +1681,7 @@ %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}{\wrong@fontshape}% -%<latexrelease> {Font substituation in preamble}% +%<latexrelease> {Font substitution in preamble}% %<latexrelease>\def\wrong@fontshape{% %<latexrelease> \csname D@\f@encoding\endcsname %<latexrelease> \edef\reserved@a{\csname\curr@fontshape\endcsname}% @@ -1837,7 +1856,7 @@ % it modifies the corresponding macro |\mv@|\meta{version} % so that it calls |\getanddefine@fonts| directly in future as well. % We use the macro |\extract@alph@from@version| to do this. -% It takes the math alphabet identifer |#1| and the math version +% It takes the math alphabet identifier |#1| and the math version % macro as arguments. % \changes{v1.9a}{1992/07/26}{} % \begin{macrocode} @@ -1925,7 +1944,7 @@ \use@mathgroup##1{#2}}}% % \end{macrocode} % \changes{v2.1t}{1994/10/15}{Warn if math alpha is used outside math} -% In addtion it defines the alphabet the way it should be used from +% In addition it defines the alphabet the way it should be used from % now on. % \begin{macrocode} \gdef#3{\relax\ifmmode \else \non@alpherr#3\fi diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx index 8583fb1a9b4..29580b8d5e5 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfsscmp.dtx} - [2015/06/23 v3.0f LaTeX Kernel (NFSS1 Compatibility)] + [2020/12/05 v3.0f LaTeX Kernel (NFSS1 Compatibility)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -181,7 +181,7 @@ \in@{pt}{#3}% not a proof but a good chance \ifin@ % \end{macrocode} -% We grap also everything after pt and discard it if people have +% We grab also everything after pt and discard it if people have % forgotten to place a percent sign there. % \changes{v2.1d}{1994/02/10}{scan away stuff after pt} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx index 291cd1368f2..725d0e39fcc 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssdcl.dtx} - [2020/03/19 v3.0v LaTeX Kernel (NFSS Declarative Interface)] + [2020/12/05 v3.0v LaTeX Kernel (NFSS Declarative Interface)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -747,7 +747,7 @@ \@font@info{Redeclaring symbol font `#1'}% % \end{macrocode} % \changes{v3.0f}{1997/11/13} -% {(DPC) Really update \cs{group@list} dont +% {(DPC) Really update \cs{group@list} don't % leave new version in \cs{toks@}. latex/2661} % Update the group list. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx index fbea725c1df..a92321bf5d7 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssini.dtx} - [2020/10/08 v3.2e LaTeX Kernel (NFSS Initialisation)] + [2020/12/06 v3.2f LaTeX Kernel (NFSS Initialisation)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -56,7 +56,7 @@ % % \GetFileInfo{ltfssini.dtx} % \title{A new font selection scheme for \TeX{} macro packages\\ -% (Initialisation)\thanks +% (Initialization)\thanks % {This file has version number % \fileversion\ dated \filedate}} % @@ -83,7 +83,7 @@ % \changes{v3.1d}{2019/08/27}{Make various commands robust} % % -% \section{NFSS Initialisation} +% \section{NFSS Initialization} % % \iffalse %<+checkmem>\CHECKMEM @@ -301,7 +301,7 @@ \else % \end{macrocode} % -% \changes{v3.1g}{2020/02/05}{Clarrified error text} +% \changes{v3.1g}{2020/02/05}{Clarified error text} % \begin{macrocode} \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% {Mandatory first argument must be 'md' or 'bf'.} @@ -431,7 +431,7 @@ %<+debug> \series@change@debug{No series preparation (forced \f@series)\on@line}% \fontfamily#2% \else -%<+debug> \series@change@debug{Prepearing for switching to #1 (#2)\on@line}% +%<+debug> \series@change@debug{Preparing for switching to #1 (#2)\on@line}% \expand@font@defaults % \end{macrocode} % We prepare for changing the current series. We have to find it @@ -493,7 +493,7 @@ % \end{macrocode} % The \cs{target@series@value} may contain something like % \texttt{cm} (coming from a default) and so we can't directly -% asign it to \cs{f@series} be have to drop any surplus \texttt{m} +% assign it to \cs{f@series} be have to drop any surplus \texttt{m} % first. % \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from % \cs{target@series@value} (gh/291)} @@ -513,7 +513,7 @@ % In this macro used in the look you basically find the nested % \cs{ifx}s from the outline above. The only difference is that is % it is parameterized instead of being written out and only for one -% block of tests because the code is called reatedly when looping +% block of tests because the code is called repeatedly when looping % over the meta family list. From the list we get each meta family % name in turn. % \begin{macrocode} @@ -665,7 +665,7 @@ % the now current series value (in \cs{f@series}). % % But what should happen if \cs{seriesdefault} got explicitly -% changed? In that case the explicit change should surive and we +% changed? In that case the explicit change should survive and we % should not alter \cs{seriesdefault}. This is solved by comparing % the current value of \cs{seriesdefault} with a kernel version % saved in the format and if they differ we do not call @@ -915,9 +915,9 @@ %\end{verbatim} % We have to do the testing while the current family is still % unchanged but we have to do the adjustment of the series after it -% got changed (because the new family might has different sets -% ofshapes available and we certainly don't want to see -% substituation going on. So we use \cs{target@series@value} to +% got changed (because the new family might have different sets +% of shapes available and we certainly don't want to see +% substitution going on. So we use \cs{target@series@value} to % hold the target series (if any). %\begin{verbatim} % \let\target@series@value\@empty @@ -1183,7 +1183,7 @@ % to different NFSS axis values it becomes important to have the % ability to determine the current context as we can no longer look % at \cs{f@series} to answer a question such as ``am I currently -% typsetting in a bold typeface?'' +% typesetting in a bold typeface?'' % % This is provided by the test \cs{IfFontSeriesContextTF}. It takes % three arguments: @@ -1221,7 +1221,7 @@ \DeclareRobustCommand\IfFontSeriesContextTF[1]{% \expand@font@defaults % \end{macrocode} -% In the beginning we haven't found the context we are loking for. +% In the beginning we haven't found the context we are looking for. % \begin{macrocode} \@font@series@contextfalse % \end{macrocode} @@ -1238,7 +1238,7 @@ \expandafter\edef\csname ??def@ult\endcsname{\f@family}% % \end{macrocode} % Then we run through the meta family list (currently containing -% just the three values) followed by the artifical meta family +% just the three values) followed by the artificial meta family % \texttt{??} and test each of them in turn using % \cs{test@font@series@context} as the testing command. % \begin{macrocode} @@ -1264,7 +1264,7 @@ % \begin{macro}{\test@font@series@context} % This tests the context (stored in \cs{requested@test@context}) -% and updates the bookean if the right context is found. +% and updates the boolean if the right context is found. % \begin{macrocode} \def\test@font@series@context#1{% % \end{macrocode} @@ -1343,10 +1343,10 @@ % By default \LaTeXe{} supports two levels of nested emphasis: if % the current font has an upright shape then it switches to % \cs{itshape} otherwise to \cs{eminnershape} (which defaults to -% \cs{upshape}). This means nested emphasis will ocssilate between +% \cs{upshape}). This means nested emphasis will oscillate between % italic and upright shapes. % -% Sometimes it would be nice to allow for a more lengthly sequence, +% Sometimes it would be nice to allow for a more lengthy sequence, % but instead of providing a fixed one \LaTeX{} now offers a % general mechanism that allows to define arbitrary sequences. % @@ -1377,7 +1377,7 @@ % \begin{macro}{\DeclareEmphSequence} % % \cs{DeclareEmphSequence} expects a clist of declaration. Spaces in the -% argument are dropped to avoid surious spaces in the output. The +% argument are dropped to avoid spurious spaces in the output. The % declarations are additive. At the very end the shape is reset % using |\emreset| and |\emforce| so that this case is never % skipped.\footnote{Maybe we should not add \cs{emforce} but allow @@ -1479,7 +1479,7 @@ % \begin{macrocode} \expandafter\ifx\csname \curr@fontshape/\f@size\em@force % \end{macrocode} -% For the comparison with \cs{ifx} we have to exand +% For the comparison with \cs{ifx} we have to expand % \cs{em@currfont} once as the relevant info is inside. % \begin{macrocode} \expandafter\endcsname @@ -1863,8 +1863,20 @@ % \changes{v3.1c}{2019/07/09}{Explicitly set some defaults} % \begin{macrocode} \fontfamily{cmr} -\fontseries{m} -\fontshape{n} +% \end{macrocode} +% +% \changes{v3.2f}{2020/12/04}{Adjust start values for series and shape (gh/444)} +% Previously the default values for series and shape were set by +% calling \cs{fontseries} and \cs{fontshape}, but their action is +% now delayed until \cs{selectfont} which isn't called inside the +% format (to avoid unnecessarily loading a font that may never get used). +% We therefore have to set \cs{f@series} and \cs{f@shape} directly instead. +% \begin{macrocode} +\def\f@series{m} % \fontseries{m} +\def\f@shape{n} % \fontshape{n} +% \end{macrocode} +% +% \begin{macrocode} \fontsize{10}{10} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx index 055f408ceb3..bd0f6fabd21 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,12 +32,12 @@ %% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf. %% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved. % -%<package>\NeedsTeXFormat{LaTeX2e}[1995/05/16] +%<package>\NeedsTeXFormat{LaTeX2e}[2021/05/01] %<package>\ProvidesPackage{tracefnt} -%<package> [2019/10/11 v3.0l Standard LaTeX package (font tracing)] +%<package> [2020/12/22 v3.0n Standard LaTeX package (font tracing)] % \fi % \ProvidesFile{ltfsstrc.dtx} -% [2020/02/03 v3.0l LaTeX Kernel (NFSS tracing)] +% [2020/12/22 v3.0n LaTeX Kernel (NFSS tracing)] % % \iffalse %<+checkmem>\CHECKMEM @@ -190,7 +190,7 @@ % special package file named \texttt{trace.sty}.\footnote{This package % is not in distribution at the moment (and probably doesn't any % longer work). Think of this part of the code as being historical -% artefacts.} +% artifacts.} % \begin{macrocode} %<+debug> \input trace.sty % \end{macrocode} @@ -420,19 +420,25 @@ % \end{macrocode} % \end{macro} % + +% \begin{macrocode} +%<*2ekernel|latexrelease|package> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\selectfont}{Add hook to \selectfont}% +% \end{macrocode} +% % -% \changes{v1.0j}{1990/02/18} -% {Redefine unprotected version \cs{p@selectfont} -% instead of \cs{selectfont}.} % % % \begin{macro}{\selectfont} +% \changes{v1.0j}{1990/02/18} +% {Redefine unprotected version \cs{p@selectfont} +% instead of \cs{selectfont}.} % \changes{v1.1a}{1989/12/16}{Changed order of calls.} % \changes{v2.3f}{1994/05/12}{Use \cs{DeclareRobustCommand}} % The macro |\selectfont| is called whenever a font change must % take place. % \begin{macrocode} -%<*2ekernel|package> \DeclareRobustCommand\selectfont {% % \end{macrocode} @@ -456,6 +462,69 @@ \ifx\f@linespread\baselinestretch \else \set@fontsize\baselinestretch\f@size\f@baselineskip \fi % \end{macrocode} +% +% The series and shape updates are only prepared by +% \cs{fontseries} and \cs{fontshape} but not executed until after +% we are ready to change the font face. This way they happen after +% a possibly new family is set which is important because they +% look at the available font faces in that family and alter the +% selection based on availibility. Several calls to \cs{fontseries} +% or \cs{fontshape} are delayed in the order in which they appear, +% so that by switching them one can work around missing +% intermediate font faces and avoid substitutions. +% +% We first attempt to do the merge without any substitution. As we +% might end up with a non-existing font face we may have to restart +% and therefore save the current values of \cs{f@series} and +% \cs{f@shape} before the merge. +% +% But first we make a quick test to see if there are any delayed +% actions, because if not it is pointless to make all the +% assignments and try loading a missing fontshape. +% +% \changes{v3.0n}{2020/12/22}{Execute delayed series and shape updates (gh/444)} +% \begin{macrocode} + \ifx\delayed@f@adjustment\@empty + \else + \let\f@shape@saved\f@shape + \let\f@series@saved\f@series +% \end{macrocode} +% The we run the delayed adjustments (which is using the +% \cs{..@without@substitution} commands +% \begin{macrocode} + \delayed@f@adjustment +% \end{macrocode} +% We then check if the resulting cominbation is valid but for this +% we have to make sure the the appropiate \texttt{.fd} is loaded if +% that hasn't happened so far. +% \begin{macrocode} + \maybe@load@fontshape + \ifcsname \f@encoding/\f@family/\f@series/\f@shape \endcsname +% \end{macrocode} +% If this macro is defined then we are good and no further action +% is necessary. +% +% Otherwise the combination is not valid, so we redo the merge but +% this time with substitutions. +% \begin{macrocode} + \else + \let\f@shape\f@shape@saved + \let\f@series\f@series@saved + \let\delayed@merge@font@shape\merge@font@shape + \let\delayed@merge@font@series\merge@font@series + \delayed@f@adjustment + \let\delayed@merge@font@shape\merge@font@shape@without@substitution + \let\delayed@merge@font@series\merge@font@series@without@substitution + \fi +% \end{macrocode} +% Now the series and shape values are updated and we clear +% \cs{delayed@f@adjustment}. This is important because on the next +% execution of \cs{selectfont} we should not mistakenly redo the +% delayed actions if there wasn't any series or shape change. +% \begin{macrocode} + \let\delayed@f@adjustment\@empty + \fi +% \end{macrocode} % Then we generate the internal name of the font % by concatenating {\em family}, {\em series}, % {\em shape}, and current {\em size}, @@ -478,18 +547,13 @@ % \begin{macrocode} \font@name % \end{macrocode} -% If |\tracingfonts| is -% greater than 2 we also show the font switch. -% We do this before |\glb@settings| is called since this -% macro might redefine |\font@name|. -% \changes{v1.0k}{1990/03/14}{Added code for TeX3.} -% \changes{v1.0i}{1990/02/16}{Changed \cs{f@size} to \cs{lcl@currsize} -% (see fam file).} +% +% After switching fonts we run a hook, so that packages can make +% last minute alterations based on the new font (originally provided +% in \pkg{everysel} but using a different interface). +% \changes{v3.0m}{2020/12/03}{Install a hook in \cs{selectfont} (gh/444)} % \begin{macrocode} -%<*trace> - \ifnum \tracingfonts>\tw@ - \@font@info{Switching to \font@name}\fi -%</trace> + \UseHook{selectfont}% % \end{macrocode} % Finally we call |\size@update|. This macro is normally empty but % will contain actions (like setting the |\baselineskip|) that have @@ -514,11 +578,69 @@ % \end{macro} % % +% \begin{macro}{selectfont} +% Declare the hook used in selecfont in the kernel, but not +% inside the \pkg{tracefnt} package. +% \begin{macrocode} +%<-trace>\NewHook{selectfont} +% \end{macrocode} +% \end{macro} +% +% +% If |\tracingfonts| is +% greater than 2 we also show the font switch inside \cs{selectfont}. +% We do this by adding this code to the hook in the \pkg{tracefnt} package: +% macro might redefine |\font@name|. +% \begin{macrocode} +%<*trace> +\AddToHook{selectfont} + {\ifnum \tracingfonts>\tw@ + \@font@info{Switching to \font@name}\fi} +%</trace> +% \end{macrocode} +% +% +% \begin{macrocode} +%</2ekernel|latexrelease|package> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% With \cs{selectfont} having different definitions in different +% kernels we also have to provide them in the \texttt{tracefnt} +% package to support rollback. In packages that works a bit +% differently and therefore we have to provide an empty block there. +% \begin{macrocode} +%<package>\IncludeInRelease{2021/05/01}% +%<package> {\selectfont}{Add hook to \selectfont}% +%<package>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease|package>\IncludeInRelease{0000/00/00}% +%<latexrelease|package> {\selectfont}{Add hook to \selectfont}% +%<latexrelease|package> +%<latexrelease|package>\DeclareRobustCommand\selectfont +%<latexrelease|package> {% +%<latexrelease|package> \ifx\f@linespread\baselinestretch \else +%<latexrelease|package> \set@fontsize\baselinestretch\f@size\f@baselineskip \fi +%<latexrelease|package> \xdef\font@name{% +%<latexrelease|package> \csname\curr@fontshape/\f@size\endcsname}% +%<latexrelease|package> \pickup@font +%<latexrelease|package> \font@name +%<latexrelease|package> \size@update +%<latexrelease|package> \enc@update +%<latexrelease|package> } +%<latexrelease|package> +%<latexrelease|package>\EndIncludeInRelease +% \end{macrocode} +% +% % % \begin{macro}{\set@fontsize} % The macro |\set@fontsize| does the actual work. First it assigns % new values to |\f@size|, |\f@baselineskip| and |\f@linespread|. % \begin{macrocode} +%<*2ekernel|package> \def\set@fontsize#1#2#3{% \@defaultunits\@tempdimb#2pt\relax\@nnil \edef\f@size{\strip@pt\@tempdimb}% @@ -1245,7 +1367,7 @@ % Now, we are through with the case of a simple size, except for % calling the size function. This will be handled later, as it is % the same mechanism for all types of size specification. We will -% now proceed to macors for extraction of size range specification. +% now proceed to macros for extraction of size range specification. % % % diff --git a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx index e4ff7dd2ed4..404938d203a 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 %% -%% File: lthooks.dtx (C) Copyright 2020 Frank Mittelbach, +%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach, %% Phelype Oleinik & LaTeX Team % % This file is part of the LaTeX base system. @@ -31,8 +31,8 @@ %%% From File: lthooks.dtx % % \begin{macrocode} -\def\lthooksversion{v1.0e} -\def\lthooksdate{2020/10/23} +\def\lthooksversion{v1.0h} +\def\lthooksdate{2021/01/07} % \end{macrocode} % %<*driver> @@ -222,11 +222,13 @@ % \begin{syntax} % \cs{AddToHook} \Arg{hook}\oarg{label}\Arg{code} % \end{syntax} -% Adds \meta{code} to the \meta{hook} labeled by \meta{label}. If -% the optional argument \meta{label} is not provided, if \cs{AddToHook} -% is used in a package/class, then the current -% package/class name is used, otherwise \hook{top-level} is -% used~(see section~\ref{sec:default-label}). +% Adds \meta{code} to the \meta{hook} labeled by \meta{label}. +% When the optional argument \meta{label} is not provided, the +% \meta{default label} is used (see section~\ref{sec:default-label}). +% If \cs{AddToHook} is used in a package/class, the +% \meta{default label} is the package/class name, otherwise it is +% \hook{top-level} (the \hook{top-level} label is treated +% differently: see section~\ref{sec:top-level}). % % If there already exists code under the \meta{label} then the new % \meta{code} is appended to the existing one (even if this is a reversed hook). @@ -234,10 +236,10 @@ % \meta{label}, first apply \cs{RemoveFromHook}. % % The hook doesn't have to exist for code to be added to -% it. However, if it is not declared later then obviously the +% it. However, if it is not declared, then obviously the % added \meta{code} will never be executed. This % allows for hooks to work regardless of package loading order and -% enables packages to add to hook of other packages without +% enables packages to add to hooks from other packages without % worrying whether they are actually used in the current document. % See section~\ref{sec:querying}. % @@ -251,10 +253,8 @@ % \cs{RemoveFromHook} \Arg{hook}\oarg{label} % \end{syntax} % Removes any code labeled by \meta{label} from the \meta{hook}. -% If the optional -% argument \meta{label} is not provided, if \cs{AddToHook} -% is used in a package/class, then the current -% package/class name is used, otherwise \hook{top-level} is used. +% When the optional argument \meta{label} is not provided, the +% \meta{default label} is used (see section~\ref{sec:default-label}). % % If the code for that \meta{label} wasn't yet added to the % \meta{hook}, an order is set so that when some code attempts to add @@ -273,7 +273,7 @@ % \medskip % % In contrast to the \texttt{voids} relationship between two labels -% in a \cs{DeclareHookrule} this is a destructive operation as the +% in a \cs{DeclareHookRule} this is a destructive operation as the % labeled code is removed from the hook data structure, whereas the % relationship setting can be undone by providing a different % relationship later. @@ -367,7 +367,8 @@ % token, a low-level \TeX{} error is raised (namely, the \meta{hook} is % expanded using \TeX's \cs{csname}\ldots\cs{endcsname}, as such, % Unicode characters are allowed in \meta{hook} and \meta{label} -% arguments). The arguments of \cs{UseHook} and \cs{UseOneTimeHook} are +% arguments). The arguments of \cs{UseHook}, \cs{UseOneTimeHook}, +% \cs{IfHookEmptyTF}, and \cs{IfHookExistsTF} are % processed much in the same way except that spaces are not trimmed % around the argument, for better performance. % @@ -377,10 +378,10 @@ % chunk and to prevent clashes. This should be the standard practice, % so this hook management code provides a shortcut to refer to the % current package in the name of a \meta{hook} and in a \meta{label}. -% If \meta{hook} name or \meta{label} consist just of a single dot +% If the \meta{hook} name or the \meta{label} consist just of a single dot % (|.|), or starts with a dot followed by a slash (|./|) then the dot % denotes the \meta{default label} (usually the current package or class -% name---see~\cs{DeclareDefaultHookLabel}). +% name---see~\cs{SetDefaultHookLabel}). % A \enquote{|.|} or \enquote{|./|} anywhere else in a \meta{hook} or in % \meta{label} is treated literally and is not replaced. % @@ -403,15 +404,15 @@ % \AddToHook {file/after/foo.tex}{code} % unchanged % \end{verbatim} % -% The \meta{default label} is automatically set to the name of the -% current package or class (using \cs{@currname}). If \cs{@currname} -% is not set (because the hook command is used outside of a package, or -% the current file wasn't loaded with \cs{usepackage} or -% \cs{documentclass}), then the \texttt{top-level} is used as the -% \meta{default label}. +% The \meta{default label} is automatically set equal to the name of the +% current package or class at the time the package is loaded. If the +% hook command is used outside of a package, or the current file wasn't +% loaded with \cs{usepackage} or \cs{documentclass}, then the +% \texttt{top-level} is used as the \meta{default label}. This may have +% exceptions---see \cs{PushDefaultHookLabel}. % % This syntax is available in all \meta{label} arguments and most -% \meta{hook}, both in the \LaTeXe{} interface, and the \LaTeX3 +% \meta{hook} arguments, both in the \LaTeXe{} interface, and the \LaTeX3 % interface described in section~\ref{sec:l3hook-interface}. % % Note, however, that the replacement of |.| by the \meta{default label} @@ -430,29 +431,104 @@ % In some cases, for example in large packages, one may want to separate % it in logical parts, but still use the main package name as % \meta{label}, then the \meta{default label} can be set using -% \cs{DeclareDefaultHookLabel}: +% \cs{SetDefaultHookLabel} or +% \cs{PushDefaultHookLabel}..\cs{PopDefaultHookLabel}. % -% \begin{function}{\DeclareDefaultHookLabel} +% \begin{function}{\PushDefaultHookLabel,\PopDefaultHookLabel} % \begin{syntax} -% \cs{DeclareDefaultHookLabel} \Arg{default label} +% \cs{PushDefaultHookLabel} \Arg{default label} +% \quad \meta{code} +% \cs{PopDefaultHookLabel} % \end{syntax} -% Sets the \meta{default label} to be used in \meta{label} arguments. -% If \cs{DeclareDefaultHookLabel} is not used in the -% current package, \cs{@currname} is used instead. If \cs{@currname} -% is not set, the code is assumed to be in the main document, in which -% case \texttt{top-level} is used. -% -% The effect of \cs{DeclareDefaultHookLabel} holds for the current -% file, and is reset to the previous value when the file is closed. +% \cs{PushDefaultHookLabel} sets the current \meta{default label} to +% be used in \meta{label} arguments, or when replacing a leading +% ``|.|'' (see above). \cs{PopDefaultHookLabel} reverts the +% \meta{default label} to its previous value. +% +% Inside a package or class, the \meta{default label} is equal to the +% package or class name, unless explicitly changed. Everywhere else, +% the \meta{default label} is |top-level| (see +% section~\ref{sec:top-level}) unless explicitly changed. +% +% The effect of \cs{PushDefaultHookLabel} holds until the next +% \cs{PopDefaultHookLabel}. \cs{usepackage} (and \cs{RequirePackage} +% and \cs{documentclass}) internally use +% \begin{quote} +% \cs{PushDefaultHookLabel}\Arg{package name} \\ +% \null \quad \meta{package code} \\ +% \cs{PopDefaultHookLabel} +% \end{quote} +% to set the \meta{default label} for the package or class file. +% Inside the \meta{package code} the \meta{default label} can also be +% changed with \cs{SetDefaultHookLabel}. \cs{input} and other +% file input-related commands from the \LaTeX{} kernel do not use +% \cs{PushDefaultHookLabel}, so code within files loaded by these +% commands does \emph{not} get a dedicated \meta{label}! (that is, the +% \meta{default label} is the current active one when the file was +% loaded.) +% +% Packages that provide their own package-like interfaces +% (Ti\textit{k}Z's \cs{usetikzlibrary}, for example) can use +% \cs{PushDefaultHookLabel} and \cs{PopDefaultHookLabel} to set +% dedicated labels and emulate \cs{usepackage}-like hook behaviour +% within those contexts. +% +% The |top-level| label is treated differently, and is reserved to the +% user document, so it is not allowed to change the +% \meta{default label} to |top-level|. +% \end{function} +% +% \begin{function}{\SetDefaultHookLabel} +% \begin{syntax} +% \cs{SetDefaultHookLabel} \Arg{default label} +% \end{syntax} +% Similarly to \cs{PushDefaultHookLabel}, +% sets the current \meta{default label} to +% be used in \meta{label} arguments, or when replacing a leading +% ``|.|''. The effect holds until the label is changed again or until +% the next \cs{PopDefaultHookLabel}. The difference between +% \cs{PushDefaultHookLabel} and \cs{SetDefaultHookLabel} is that the +% latter does not save the current \meta{default label}. +% +% This command is useful when a large package is composed of several +% smaller packages, but all should have the same \meta{label}, so +% \cs{SetDefaultHookLabel} can be used at the beginning of each +% package file to set the correct label. +% +% \cs{SetDefaultHookLabel} is not allowed in the main document, where +% the \meta{default label} is |top-level| and there is no +% \cs{PopDefaultHookLabel} to end its effect. +% It is also not allowed to change the \meta{default label} to +% |top-level|. % \end{function} % +% \subsubsection{The \texttt{top-level} label} +% \label{sec:top-level} +% +% The |top-level| label, assigned to code added from the main document, +% is different from other labels. Code added to hooks (usually +% \cs{AtBeginDocument}) in the preamble is almost always to change +% something defined by a package, so it should go at the very end of the +% hook. +% +% Therefore, code added in the |top-level| is always executed at the end +% of the hook, regardless of where it was declared. If the hook is +% reversed (see \cs{NewReversedHook}), the |top-level| chunk is executed +% at the very beginning instead. +% +% Rules regarding |top-level| have no effect: if a user wants to have a +% specific set of rules for a code chunk, they should use a different +% label to said code chunk, and provide a rule for that label instead. +% +% The |top-level| label is exclusive for the user, so trying to add code +% with that label from a package results in an error. % % \subsubsection{Defining relations between hook code} % % The default assumption is that code added to hooks by different -% packages is independent and the order in which it is executed is -% irrelevant. While this is true in many case it is obviously false -% in many others. +% packages are independent and the order in which they are executed is +% irrelevant. While this is true in many cases it is obviously false +% in others. % % Before the hook management system was introduced % packages had to take elaborate precaution to determine of some other @@ -519,7 +595,7 @@ % There can only be a single relation between two labels for a % given hook, % i.e., a later \cs{DeclareHookrule} overwrites any previous -% delcaration. +% declaration. % % The \meta{hook} and \meta{label} can be specified using the % dot-syntax to denote the current package name. @@ -589,7 +665,8 @@ % its permanent code pool, or to its ``next'' token list. The hook % doesn't need to be declared to have code added to its code pool. % A hook is said to exist when it was declared with \cs{NewHook} or -% some variant thereof. +% some variant thereof. Generic \hook{file} and \hook{env} hooks are +% automatically declared when code is added to them. % % \begin{function}[EXP]{\IfHookEmptyTF} % \begin{syntax} @@ -650,6 +727,7 @@ % \item % any code executed on the next invocation only. % \end{itemize} +% \end{function} % % \cs{LogHook} prints the information to the |.log| file, and % \cs{ShowHook} prints them to the terminal/command window and starts @@ -660,6 +738,7 @@ % %^^A % Code for the listing below: %^^A \NewHook{example-hook} +%^^A \AddToHook{example-hook}{[code from 'top-level']} %^^A \AddToHook{example-hook}[foo]{[code from package 'foo']} %^^A \AddToHook{example-hook}[bar]{[from package 'bar']} %^^A \AddToHook{example-hook}[baz]{[package 'baz' is here]} @@ -680,13 +759,15 @@ % > foo -> [code from package 'foo'] % > bar -> [from package 'bar'] % > baz -> [package 'baz' is here] +% > Document-level (top-level) code (executed last): +% > -> [code from 'top-level'] % > Extra code for next invocation: % > -> [one-time code] % > Rules: % > foo|baz with relation > % > baz|bar with default relation < % > Execution order (after applying rules): -% > bar, baz, foo. +% > baz, foo, bar. % \end{verbatim} % % In the listing above, lines~3 to~5 show the three code chunks added @@ -695,7 +776,18 @@ % \quad \meta{label}\verb| -> |\meta{code} % \end{quote} % -% Line~7 shows the code chunk for the next execution of the hook in +% Line~7 shows the code chunk added by the user in the main document +% (labeled |top-level|) in the format +% \begin{quote} +% \quad\verb|Document-level (top-level) code (executed |%^^A +% \meta{first\texttt{\string|}last}\verb|):|\\ +% \quad\verb| -> |\meta{\texttt{top-level} code} +% \end{quote} +% This code will be either the first or last code executed by the hook +% (|last| if the hook is normal, |first| if it is reversed). This +% chunk is not affected by rules and does not take part in sorting. +% +% Line~9 shows the code chunk for the next execution of the hook in % the format % \begin{quote} % \quad \verb|-> |\meta{next-code} @@ -705,7 +797,7 @@ % earlier, which can only be removed from that hook by doing % \verb|\RemoveFromHook{|\meta{label}|}[example-hook]|. % -% Lines~9 and~10 show the rules declared that affect this hook in the +% Lines~11 and~12 show the rules declared that affect this hook in the % format % \begin{quote} % \quad \meta{label-1}\verb+|+\meta{label-2}| with |%^^A @@ -715,11 +807,10 @@ % \meta{label-2}, in that order, as detailed in \cs{DeclareHookRule}. % If the relation is \texttt{default} it means that that rule applies % to \meta{label-1} and \meta{label-2} in \emph{all} hooks, (unless -% overrided by a non-default relation). +% overridden by a non-default relation). % -% Finally, line~12 lists the labels in the hook after sorting; +% Finally, line~14 lists the labels in the hook after sorting; % that is, in the order they will be executed when the hook is used. -% \end{function} % % % \subsubsection{Debugging hook code} @@ -749,8 +840,9 @@ % \begin{function} % {\hook_new:n,\hook_new_reversed:n,\hook_new_pair:nn} % \begin{syntax} -% \cs{hook_new:n}\Arg{hook} -% \cs{hook_new_pair:nn}\Arg{hook-1}\Arg{hook-2} +% \cs{hook_new:n} \Arg{hook} +% \cs{hook_new_reversed:n} \Arg{hook} +% \cs{hook_new_pair:nn} \Arg{hook-1} \Arg{hook-2} % \end{syntax} % Creates a new \meta{hook} with normal or reverse ordering of code % chunks. \cs{hook_new_pair:nn} creates a pair of such hooks with @@ -782,7 +874,6 @@ % Changes the \Arg{hook} status so that from now on any addition to % the hook code is executed immediately. Then execute any % \Arg{hook} code already set up. -% \fmi{better L3 name?} % % The \meta{hook} \emph{cannot} be specified using the dot-syntax. % A leading |.| is treated literally. @@ -954,17 +1045,19 @@ % \texttt{packageB}, \texttt{packageC} which you can verify with % \cs{ShowHook}\texttt{\{myhook\}}: %\begin{verbatim} -% The hook 'myhook': -% Code chunks: -% packageA -> \typeout {A} -% packageB -> \typeout {B} -% packageC -> \typeout {C} -% Extra code next invocation: -% --- -% Rules: -% --- -% Execution order: -% packageA, packageB, packageC +% -> The hook 'myhook': +% > Code chunks: +% > packageA -> \typeout {A} +% > packageB -> \typeout {B} +% > packageC -> \typeout {C} +% > Document-level (top-level) code (executed last): +% > --- +% > Extra code for next invocation: +% > --- +% > Rules: +% > --- +% > Execution order: +% > packageA, packageB, packageC. %\end{verbatim} % The reason is that the code chunks are internally saved in a property list % and the initial order of such a property list is the order in @@ -988,17 +1081,19 @@ %\end{verbatim} % instead of the previous lines we get %\begin{verbatim} -% The hook 'myhook': -% Code chunks: -% packageA -> \typeout {A} -% packageB -> \typeout {B} -% packageC -> \typeout {C} -% Extra code next invocation: -% --- -% Rules: -% packageA|packageB with relation before -% Execution order (after applying rules): -% packageA, packageC, packageB +% -> The hook 'myhook': +% > Code chunks: +% > packageA -> \typeout {A} +% > packageB -> \typeout {B} +% > packageC -> \typeout {C} +% > Document-level (top-level) code (executed last): +% > --- +% > Extra code for next invocation: +% > --- +% > Rules: +% > packageB|packageA with relation > +% > Execution order (after applying rules): +% > packageA, packageC, packageB. %\end{verbatim} % As you can see the code chunks are still in the same order, but % in the execution order for the labels \texttt{packageB} and @@ -1010,7 +1105,7 @@ % doesn't run at all as there is nothing to resolve). % Incidentally, if we had instead specified the redundant rule %\begin{verbatim} -% \DeclareHookRule{myhook}{packageB}{before}{label-3} +% \DeclareHookRule{myhook}{packageB}{before}{packageC} %\end{verbatim} % the execution order would not have changed. % @@ -1039,17 +1134,17 @@ % \AddToHook{env/quote/after} [package-1]{\end{itshape}} %\end{verbatim} % As a result, all quotes will be in italics. -% Now suppose further that the user wants the quotes also in blue -% and therefore adds: +% Now suppose further that another |package-too| makes the quotes +% also in blue and therefore adds: %\begin{verbatim} % \usepackage{color} -% \AddToHook{env/quote/before}{\begin{color}{blue}} -% \AddToHook{env/quote/after} {\end{color}} +% \AddToHook{env/quote/before}[package-too]{\begin{color}{blue}} +% \AddToHook{env/quote/after} [package-too]{\end{color}} %\end{verbatim} % Now if the \hook{env/quote/after} hook would be a normal hook we % would get the same execution order in both hooks, namely: %\begin{verbatim} -% package-1, top-level +% package-1, package-too %\end{verbatim} % (or vice versa) and as a result, would get: %\begin{verbatim} @@ -1063,16 +1158,18 @@ % the correct sequence and \cs{ShowHook} would give us the % following output: %\begin{verbatim} -% The hook 'env/quote/after': -% Code chunks: -% package-1 -> \end {itshape} -% top-level -> \end {color} -% Extra code next invocation: -% --- -% Rules: -% --- -% Execution order (after reversal): -% top-level, package-1 +% -> The hook 'env/quote/after': +% > Code chunks: +% > package-1 -> \end {itshape} +% > package-too -> \end {color} +% > Document-level (top-level) code (executed first): +% > --- +% > Extra code for next invocation: +% > --- +% > Rules: +% > --- +% > Execution order (after reversal): +% > package-too, package-1. %\end{verbatim} % % The reversal of the execution order happens before applying any @@ -1206,13 +1303,15 @@ % \hook{begindocument} % (which is executed inside \verb=\begin{document}=). % However, all code added this way is labeled with the label -% \hook{top-level} if done outside of a package or class or with the -% package/class name if called inside such a file. +% \hook{top-level} (see section~\ref{sec:top-level}) +% if done outside of a package or class or with the +% package/class name if called inside such a file +% (see section~\ref{sec:default-label}). % % This way one can add further code to the hook using % \cs{AddToHook} or \cs{AtBeginDocument} using a different label % and explicitly order the code chunks as necessary, e.g., run some -% code before or after the \hook{top-level} code. When using the +% code before or after another package's code. When using the % optional argument the call is equivalent to running % \cs{AddToHook} \texttt{\{begindocument\}} \oarg{label} % \Arg{code}. @@ -1250,8 +1349,8 @@ % % The few hooks that existed previously in \LaTeXe{} used internally % commands such as \cs{@begindocumenthook} and packages sometimes -% augemented them directly rather than working through -% \cs{AtBeginDocumement}. For that reason there is currently support +% augmented them directly rather than working through +% \cs{AtBeginDocument}. For that reason there is currently support % for this, that is, if the system detects that such an internal % legacy hook command contains code it adds it to the new hook % system under the label \texttt{legacy} so that it doesn't get @@ -1333,8 +1432,8 @@ % \cs{BeforeBeginEnvironment} \oarg{label} \Arg{code} % \end{syntax} % This declaration adds to the \hook{env/\meta{env}/before} hook -% using by default the current package or class name as a label or -% \texttt{top-level} if used in the document directly. +% using the \meta{label}. If \meta{label} is not given, the +% \meta{default label} is used (see section~\ref{sec:default-label}). % \end{function} % % \begin{function}{\AtBeginEnvironment} @@ -1516,7 +1615,7 @@ % % % It is in also possible to use the generic \hook{env/document/end} -% hook which is execuded by \cs{end}, i.e., just in front of the +% hook which is executed by \cs{end}, i.e., just in front of the % first hook above. Note however that the other generic \cs{end} % environment hook, i.e., \hook{env/document/after} will never get % executed, because by that time \LaTeX{} has finished the document @@ -1774,6 +1873,82 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_tl_set:Nn,\@@_tl_set:Nx, +% \@@_tl_set:cn,\@@_tl_set:cx} +% Private copies of a few \pkg{expl3} functions. \pkg{l3debug} will +% only add debugging to the public names, not to these copies, so we +% don't have to use \cs{debug_suspend:} and \cs{debug_resume:} +% everywhere. +% +% Functions like \cs{@@_tl_set:Nn} have to be redefined, rather than +% copied because in \pkg{expl3} they use +% \cs[no-index]{__kernel_tl_(g)set:Nx}, which is also patched by +% \pkg{l3debug}. +% \changes{v1.0h}{2021/01/07}{Manually define some \pkg{l3tl} commands +% to work around \pkg{expl3} changes} +% \begin{macrocode} +\cs_new_protected:Npn \@@_tl_set:Nn #1#2 + { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } } +\cs_new_protected:Npn \@@_tl_set:Nx #1#2 + { \cs_set_nopar:Npx #1 {#2} } +\cs_generate_variant:Nn \@@_tl_set:Nn { c } +\cs_generate_variant:Nn \@@_tl_set:Nx { c } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_tl_gset:Nn,\@@_tl_gset:No,\@@_tl_gset:Nx, +% \@@_tl_gset:cn,\@@_tl_gset:co,\@@_tl_gset:cx} +% Same as above. +% \begin{macrocode} +\cs_new_protected:Npn \@@_tl_gset:Nn #1#2 + { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } } +\cs_new_protected:Npn \@@_tl_gset:No #1#2 + { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } } +\cs_new_protected:Npn \@@_tl_gset:Nx #1#2 + { \cs_gset_nopar:Npx #1 {#2} } +\cs_generate_variant:Nn \@@_tl_gset:Nn { c } +\cs_generate_variant:Nn \@@_tl_gset:No { c } +\cs_generate_variant:Nn \@@_tl_gset:Nx { c } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_tl_gput_right:Nn,\@@_tl_gput_right:No,\@@_tl_gput_right:cn} +% Same as above. +% \begin{macrocode} +\cs_new_protected:Npn \@@_tl_gput_right:Nn #1#2 + { \@@_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } } +\cs_generate_variant:Nn \@@_tl_gput_right:Nn { No, cn } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_tl_gput_left:Nn,\@@_tl_gput_left:No} +% Same as above. +% \begin{macrocode} +\cs_new_protected:Npn \@@_tl_gput_left:Nn #1#2 + { + \@@_tl_gset:Nx #1 + { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} } + } +\cs_generate_variant:Nn \@@_tl_gput_left:Nn { No } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_tl_gset_eq:NN} +% Same as above. +% \begin{macrocode} +\cs_new_eq:NN \@@_tl_gset_eq:NN \tl_gset_eq:NN +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_tl_gclear:N,\@@_tl_gclear:c} +% Same as above. +% \begin{macrocode} +\cs_new_protected:Npn \@@_tl_gclear:N #1 + { \@@_tl_gset_eq:NN #1 \c_empty_tl } +\cs_generate_variant:Nn \@@_tl_gclear:N { c } +% \end{macrocode} +% \end{macro} +% % % \subsection{Providing new hooks} % @@ -1808,6 +1983,13 @@ % $\meta{reversed}1$ is $+1$ for normal hooks and $-1$ for reversed % ones. % +% \item[\cs{@@_toplevel~\meta{name}}] This token list stores the code +% inserted in the hook from the user's document, in the |top-level| +% label. This label is special, and doesn't participate in sorting. +% Instead, all code is appended to it and executed after (or before, +% if the hook is reversed) the normal +% hook code, but before the |next| code chunk. +% % \item[\cs{@@_next~\meta{name}}] Finally there is extra code % (normally empty) that is used on the next invocation of the hook % (and then deleted). This can be used to define some special @@ -1890,15 +2072,16 @@ % \begin{macro}{\@@_declare:n} % This function declares the basic data structures for a hook without % actually declaring the hook itself. This is needed to allow adding -% to undeclared hooks. Here it is unnecessary to check whether both -% variables exist, since both are declared at the same time (either -% both exist, or neither). +% to undeclared hooks. Here it is unnecessary to check whether all +% variables exist, since all three are declared at the same time +% (either all of them exist, or none). % \begin{macrocode} \cs_new_protected:Npn \@@_declare:n #1 { \@@_if_exist:nF {#1} { \prop_new:c { g_@@_#1_code_prop } + \tl_new:c { @@_toplevel~#1 } \tl_new:c { @@_next~#1 } } } @@ -1951,13 +2134,6 @@ \cs_new_protected:Npn \@@_include_legacy_code_chunk:n #1 { % \end{macrocode} -% If the \pkg{expl3} code is run with checking on then assigning or -% using non L3 names such as \cs{@enddocumenthook} with \pkg{expl3} -% functions will trigger warnings so we run this code with -% debugging explicitly suspended. -% \begin{macrocode} - \debug_suspend: -% \end{macrocode} % If the macro doesn't exist (which is the usual case) then nothing % needs to be done. % \begin{macrocode} @@ -1975,10 +2151,9 @@ % Once added to the hook, we need to clear it otherwise it might % get added again later if the hook data gets updated. % \begin{macrocode} - \tl_gclear:c { @#1hook } + \@@_tl_gclear:c { @#1hook } } } - \debug_resume: } % \end{macrocode} % \end{macro} @@ -1990,79 +2165,76 @@ % \begin{macro}[EXP]{\@@_parse_label_default:n} % This macro checks if a label was given (not \cs{c_novalue_tl}), and % if so, tries to parse the label looking for a leading \verb|.| to -% replace for \cs{@currname}. Otherwise \cs{@@_currname_or_default:n} -% is used to pick \cs{@currname} or the fallback value. -% -% The default |top-level| is hard-coded here. It once was an -% argument, but it's no longer needed. \pho{can't remember why} +% replace by \cs{@@_currname_or_default:}. % \begin{macrocode} \cs_new:Npn \@@_parse_label_default:n #1 { \tl_if_novalue:nTF {#1} - { \@@_currname_or_default:n { top-level } } - { - \tl_trim_spaces_apply:nN {#1} - \@@_parse_dot_label:nn { top-level } - } + { \@@_currname_or_default: } + { \tl_trim_spaces_apply:nN {#1} \@@_parse_dot_label:n } } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_parse_dot_label:nn} +% \begin{macro}[EXP]{\@@_parse_dot_label:n} % \begin{macro}[EXP]{ -% \@@_parse_dot_label:nw, +% \@@_parse_dot_label:w, % \@@_parse_dot_label_cleanup:w, -% \@@_parse_dot_label_aux:nw +% \@@_parse_dot_label_aux:w % } % Start by checking if the label is empty, which raises an error, and % uses the fallback value. If not, % split the label at a \verb|./|, if any, and check if no tokens are % before the \verb|./|, or if the only character is a \verb|.|. % If these requirements are fulfilled, the leading -% \verb|.| is replaced with \cs{@@_currname_or_default:n}. Otherwise +% \verb|.| is replaced with \cs{@@_currname_or_default:}. Otherwise % the label is returned unchanged. % \begin{macrocode} -\cs_new:Npn \@@_parse_dot_label:nn #1 #2 +\cs_new:Npn \@@_parse_dot_label:n #1 { \tl_if_empty:nTF {#1} { - \msg_expandable_error:nnn { hooks } { empty-label } {#2} - #2 + \msg_expandable_error:nn { hooks } { empty-label } + \@@_currname_or_default: } { \str_if_eq:nnTF {#1} { . } - { \@@_currname_or_default:n {#2} } - { \@@_parse_dot_label:nw {#2} #1 ./ \s_@@_mark } + { \@@_currname_or_default: } + { \@@_parse_dot_label:w #1 ./ \s_@@_mark } } } -\cs_new:Npn \@@_parse_dot_label:nw #1 #2 ./ #3 \s_@@_mark +\cs_new:Npn \@@_parse_dot_label:w #1 ./ #2 \s_@@_mark { - \tl_if_empty:nTF {#2} - { \@@_parse_dot_label_aux:nw {#1} #3 \s_@@_mark } + \tl_if_empty:nTF {#1} + { \@@_parse_dot_label_aux:w #2 \s_@@_mark } { - \tl_if_empty:nTF {#3} - { \@@_make_name:n {#2} } - { \@@_parse_dot_label_cleanup:w #2 ./ #3 \s_@@_mark } + \tl_if_empty:nTF {#2} + { \@@_make_name:n {#1} } + { \@@_parse_dot_label_cleanup:w #1 ./ #2 \s_@@_mark } } } \cs_new:Npn \@@_parse_dot_label_cleanup:w #1 ./ \s_@@_mark {#1} -\cs_new:Npn \@@_parse_dot_label_aux:nw #1 #2 ./ \s_@@_mark - { \@@_currname_or_default:n {#1} / \@@_make_name:n {#2} } +\cs_new:Npn \@@_parse_dot_label_aux:w #1 ./ \s_@@_mark + { \@@_currname_or_default: / \@@_make_name:n {#1} } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\@@_currname_or_default:n} +% \begin{macro}[EXP]{\@@_currname_or_default:} % Uses \cs{g_@@_hook_curr_name_tl} if it is set, otherwise tries -% \cs{@currname}. If neither is set, uses the fallback value -% \verb|#1| (usually \texttt{top-level}). +% \cs{@currname}. If neither is set, raises an error and uses the +% fallback value \verb|label-missing|. % \begin{macrocode} -\cs_new:Npn \@@_currname_or_default:n #1 +\cs_new:Npn \@@_currname_or_default: { \tl_if_empty:NTF \g_@@_hook_curr_name_tl { \tl_if_empty:NTF \@currname - { \@@_make_name:n {#1} } + { + \msg_expandable_error:nnn { hooks } { should-not-happen } + { Empty~default~label. } + \@@_make_name:n { label-missing } + } { \@currname } } { \g_@@_hook_curr_name_tl } @@ -2071,7 +2243,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_make_name:n,\@@_make_name:w} -% Provides a standard sanitisation of a hook's name. +% Provides a standard sanitization of a hook's name. % It uses \cs{cs:w} to build a control sequence out of the hook name, % then uses \cs{cs_to_str:N} to get the string representation of that, % without the escape character. \cs{cs:w}-based expansion is used @@ -2213,14 +2385,33 @@ % \end{macrocode} % Then try to get the code chunk labeled \verb=#2= from the hook. % If there's code already there, then append \verb=#3= to that, -% otherwise just put \verb=#3=. +% otherwise just put \verb=#3=. If the current label is |top-level|, +% the code is added to a dedicated token list +% \cs[no-index]{@@_toplevel~\meta{hook}} that goes at the end of the +% hook (or at the beginning, for a reversed hook), just before +% \cs[no-index]{@@_next~\meta{hook}}. +% \begin{macrocode} + \str_if_eq:nnTF {#2} { top-level } + { + \str_if_eq:eeTF { top-level } { \@@_currname_or_default: } + { +% \end{macrocode} +% If the hook's basic structure does not exist, we need to declare it +% with \cs{@@_declare:n}. % \begin{macrocode} - \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl + \@@_declare:n {#1} + \@@_tl_gput_right:cn { @@_toplevel~#1 } {#3} + } + { \msg_error:nnn { hooks } { misused-top-level } {#1} } + } { - \prop_gput:cno { g_@@_#1_code_prop } {#2} - { \l_@@_return_tl #3 } + \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl + { + \prop_gput:cno { g_@@_#1_code_prop } {#2} + { \l_@@_return_tl #3 } + } + { \prop_gput:cnn { g_@@_#1_code_prop } {#2} {#3} } } - { \prop_gput:cnn { g_@@_#1_code_prop } {#2} {#3} } } % \end{macrocode} % \end{macro} @@ -2381,11 +2572,20 @@ { \@@_strip_double_slash:n {#1} } \cs_new:Npn \@@_strip_double_slash:n #1 { \@@_strip_double_slash:w #1 // \s_@@_mark } -\cs_new:Npn \@@_strip_double_slash:w #1 // #2 \s_@@_mark +% \end{macrocode} +% This function is always called after testing if the argument is a +% file hook with \cs{@@_if_file_hook:wTF}, so we can assume it has +% three parts (it is either \verb|file/before/...| or +% \verb|file/after/...|), so we use \verb|#1/#2/#3 //| instead of just +% \verb|#1 //| to prevent losing a slash if the file name is empty. +% \changes{v1.0h}{2021/01/07}{Assume hook name has at least three +% nonempty parts (gh/464)} +% \begin{macrocode} +\cs_new:Npn \@@_strip_double_slash:w #1/#2/#3 // #4 \s_@@_mark { - \tl_if_empty:nTF {#2} - {#1} - { \@@_strip_double_slash:w #1 / #2 \s_@@_mark } + \tl_if_empty:nTF {#4} + { #1/#2/#3 } + { \@@_strip_double_slash:w #1/#2/#3 / #4 \s_@@_mark } } % \end{macrocode} % \end{macro} @@ -2434,24 +2634,48 @@ % hook before its defined (see section~\ref{sec:querying}). % \begin{macrocode} \@@_if_exist:nTF {#1} + { % \end{macrocode} % Then remove the chunk and run \cs{@@_update_hook_code:n} so % that the execution token list reflects the change if we are after % \verb=\begin{document}=. +% +% If all code is to be removed, clear the code pool +% \cs[no-index]{g_@@_\meta{hook}_code_prop}, the top-level code +% \cs[no-index]{@@_toplevel~\meta{hook}}, and the next-execution code +% \cs[no-index]{@@_next~\meta{hook}}. % \begin{macrocode} - { \str_if_eq:nnTF {#2} {*} - { \prop_gclear:c { g_@@_#1_code_prop } } { + \prop_gclear:c { g_@@_#1_code_prop } + \@@_tl_gclear:c { @@_toplevel~#1 } + \@@_tl_gclear:c { @@_next~#1 } + } + { +% \end{macrocode} +% If the label is |top-level| then clear the token list, as all code +% there is under the same label. Marked removal is not implemented +% for |top-level| because it is hard to reliably know that no code +% was added to \cs[no-index]{@@_toplevel~\meta{hook}} (granted that +% an empty code could be interpreted as that, but then it differs in +% behaviour from other labels, in which an empty chunk is still valid +% for removal). Besides, it doesn't make much (if any) sense for +% packages to remove |top-level| code. So here the chunk is just +% cleared unconditionally. +% \begin{macrocode} + \str_if_eq:nnTF {#2} { top-level } + { \@@_tl_gclear:c { @@_toplevel~#1 } } + { % \end{macrocode} -% Check if the label being removed exists in the code pool. If it does, -% just call \cs{@@_gremove_code_do:nn} to do the removal, otherwise mark it -% to be removed. +% Otherwise check if the label being removed exists in the code pool. +% If it does, just call \cs{@@_gremove_code_do:nn} to do the removal, +% otherwise mark it to be removed. % \begin{macrocode} - \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl - { \@@_gremove_code_do:nn } - { \@@_mark_removal:nn } - {#1} {#2} + \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl + { \@@_gremove_code_do:nn } + { \@@_mark_removal:nn } + {#1} {#2} + } } % \end{macrocode} % Finally update the code, if the hook exists. @@ -2470,6 +2694,7 @@ % \end{macrocode} % % \begin{macro}{\@@_gremove_code_do:nn} +% Remove code for a given label. % \begin{macrocode} \cs_new_protected:Npn \@@_gremove_code_do:nn #1 #2 { \prop_gremove:cn { g_@@_#1_code_prop } {#2} } @@ -2605,7 +2830,6 @@ % Then we call the function to handle the given rule. Throw an error if the % rule is invalid. % \begin{macrocode} - \debug_suspend: \cs_if_exist_use:cTF { @@_rule_#3_gset:nnn } { {#1} {#2} {#4} @@ -2613,7 +2837,6 @@ } { \msg_error:nnnnnn { hooks } { unknown-rule } {#1} {#2} {#3} {#4} } - \debug_resume: } % \end{macrocode} % \end{macro} @@ -2639,7 +2862,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_rule_before_gset:nnn #1#2#3 { - \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } + \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { \@@_label_ordered:nnTF {#2} {#3} { < } { > } } } \cs_new_eq:cN { @@_rule_<_gset:nnn } \@@_rule_before_gset:nnn @@ -2648,7 +2871,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_rule_after_gset:nnn #1#2#3 { - \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#3} {#2} _tl } + \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#3} {#2} _tl } { \@@_label_ordered:nnTF {#3} {#2} { < } { > } } } \cs_new_eq:cN { @@_rule_>_gset:nnn } \@@_rule_after_gset:nnn @@ -2661,7 +2884,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_rule_voids_gset:nnn #1#2#3 { - \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } + \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { \@@_label_ordered:nnTF {#2} {#3} { -> } { <- } } } % \end{macrocode} @@ -2675,9 +2898,9 @@ % together in hook |#1|. % \begin{macrocode} \cs_new_protected:cpn { @@_rule_incompatible-error_gset:nnn } #1#2#3 - { \tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xE } } + { \@@_tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xE } } \cs_new_protected:cpn { @@_rule_incompatible-warning_gset:nnn } #1#2#3 - { \tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xW } } + { \@@_tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xW } } % \end{macrocode} % \end{macro} % @@ -2722,7 +2945,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_if_label_case:nnnnn} -% To avoid doing the string comparison twice in \cs{@@_initialize_single:NNNn} +% To avoid doing the string comparison twice in \cs{@@_initialize_single:NNn} % (once with \cs{str_if_eq:nn} and again with \cs{@@_label_ordered:nn}), % we use a three-way branching macro that will compare |#1| and |#2| % and expand to \cs{use_i:nnn} if they are equal, \cs{use_ii:nn} if @@ -2800,7 +3023,6 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_initialize_hook_code:n #1 { - \debug_suspend: \@@_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~ '#1' \on@line :^^J} } % \end{macrocode} @@ -2815,17 +3037,22 @@ % If there aren't any code % chunks for the current hook, there is no point in even starting % the sorting routine so we make a quick test for that and in that -% case just update \cs{@@~\meta{hook}} to hold the next -% code. If there are code chunks we call -% \cs{@@_initialize_single:NNNn} and pass to it ready made csnames +% case just update \cs{@@~\meta{hook}} to hold the |top-level| and +% |next| code chunks. If there are code chunks we call +% \cs{@@_initialize_single:NNn} and pass to it ready made csnames % as they are needed several times inside. This way we save a bit % on processing time if we do that up front. % \begin{macrocode} \hook_if_exist:nT {#1} { \prop_if_empty:cTF {g_@@_#1_code_prop} - { \tl_gset:co { @@~#1 } - { \cs:w @@_next~#1 \cs_end: } } + { + \@@_tl_gset:co { @@~#1 } + { + \cs:w @@_toplevel~#1 \exp_after:wN \cs_end: + \cs:w @@_next~#1 \cs_end: + } + } { % \end{macrocode} % By default the algorithm sorts the code chunks and then saves the @@ -2836,9 +3063,9 @@ % in preparation is to change two definitions used later on. % \begin{macrocode} \@@_if_reversed:nTF {#1} - { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_left:NV + { \cs_set_eq:NN \@@_tl_gput:Nn \@@_tl_gput_left:Nn \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_left:NV } - { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_right:NV + { \cs_set_eq:NN \@@_tl_gput:Nn \@@_tl_gput_right:Nn \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_right:NV } % \end{macrocode} % @@ -2848,9 +3075,8 @@ % save the old code property list so that it can be restored later. % \begin{macrocode} \prop_set_eq:Nc \l_@@_work_prop { g_@@_#1_code_prop } - \@@_initialize_single:cccn - { @@~#1 } { @@_next~#1 } - { g_@@_#1_labels_clist } {#1} + \@@_initialize_single:ccn + { @@~#1 } { g_@@_#1_labels_clist } {#1} % \end{macrocode} % For debug display we want to keep track of those hooks that % actually got code added to them, so we record that in plist. We @@ -2862,7 +3088,6 @@ \g_@@_used_prop {#1}{} } } } - \debug_resume: } % \end{macrocode} % \end{macro} @@ -2918,12 +3143,13 @@ % \end{macro} % % -% \begin{macro}{\@@_initialize_single:NNNn,\@@_initialize_single:cccn} +% \begin{macro}{\@@_initialize_single:NNn,\@@_initialize_single:ccn} % -% \cs{@@_initialize_single:NNNn} implements the sorting of the code +% \cs{@@_initialize_single:NNn} implements the sorting of the code % chunks for a hook and saves the result in the token list for fast -% execution (\verb=#3=). The arguments are \meta{hook-code-plist}, -% \meta{hook-code-tl}, \meta{hook-next-code-tl}, +% execution (\verb=#4=). The arguments are \meta{hook-code-plist}, +% \meta{hook-code-tl}, \meta{hook-top-level-code-tl}, +% \meta{hook-next-code-tl}, % \meta{hook-ordered-labels-clist} and \meta{hook-name} (the latter % is only used for debugging---the \meta{hook-rule-plist} is accessed % using the \meta{hook-name}). @@ -2935,8 +3161,12 @@ % far as possible. The result is a restriction I do not test for at % the moment: a label can't be equal to the number 0! \fmi{Needs % checking for, just in case} +% +% ^^A #1 <- \@@~#1 +% ^^A #2 <- \g_@@_#1_labels_clist +% ^^A #3 <- #1 % \begin{macrocode} -\cs_new_protected:Npn \@@_initialize_single:NNNn #1#2#3#4 +\cs_new_protected:Npn \@@_initialize_single:NNn #1#2#3 { % \end{macrocode} % Step T1: Initialize the data structure \ldots @@ -2947,7 +3177,7 @@ % % Store the name of the hook: % \begin{macrocode} - \tl_set:Nn \l_@@_cur_hook_tl {#4} + \tl_set:Nn \l_@@_cur_hook_tl {#3} % \end{macrocode} % % We loop over the property list holding the code and record all @@ -2961,7 +3191,7 @@ { \int_incr:N \l_@@_labels_int \seq_put_right:Nn \l_@@_labels_seq {##1} - \tl_set:cn { \@@_tl_csname:n {##1} }{0} + \@@_tl_set:cn { \@@_tl_csname:n {##1} } { 0 } \seq_clear_new:c { \@@_seq_csname:n {##1} } } % \end{macrocode} @@ -2987,7 +3217,7 @@ { \prop_map_break: } { \@@_apply_label_pair:nnn {##1} {####1} } { \@@_apply_label_pair:nnn {####1} {##1} } - {#4} + {#3} } } % \end{macrocode} @@ -3014,8 +3244,8 @@ % \end{macrocode} % % \begin{macrocode} - \tl_gclear:N #1 - \clist_gclear:N #3 + \@@_tl_gclear:N #1 + \clist_gclear:N #2 % \end{macrocode} % % The whole loop combines steps T5--T7: @@ -3027,11 +3257,11 @@ % \begin{macrocode} \int_decr:N \l_@@_labels_int \prop_get:NVN \l_@@_work_prop \l_@@_front_tl \l_@@_return_tl - \@@_tl_gput:NV #1 \l_@@_return_tl + \exp_args:NNV \@@_tl_gput:Nn #1 \l_@@_return_tl % \end{macrocode} % % \begin{macrocode} - \@@_clist_gput:NV #3 \l_@@_front_tl + \@@_clist_gput:NV #2 \l_@@_front_tl \@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} } % \end{macrocode} % @@ -3078,27 +3308,31 @@ } % \end{macrocode} % After we have added all hook code to \verb=#1= we finish it off -% with adding extra code for a one time execution. That is stored -% in \verb=#2= but is normally empty. -% \begin{macrocode} - \tl_gput_right:Nn #1 {#2} +% with adding extra code for the |top-level| (\verb=#2=) and for one +% time execution (\verb=#3=). These should normally be empty. The +% |top-level| code is added with \cs{@@_tl_gput:Nn} as that might +% change for a reversed hook (then |top-level| is the very first code +% chunk added). The |next| code is always added last. +% \begin{macrocode} + \exp_args:NNo \@@_tl_gput:Nn #1 { \cs:w @@_toplevel~#3 \cs_end: } + \@@_tl_gput_right:No #1 { \cs:w @@_next~#3 \cs_end: } } % \end{macrocode} -% +% % \begin{macrocode} -\cs_generate_variant:Nn \@@_initialize_single:NNNn {ccc} +\cs_generate_variant:Nn \@@_initialize_single:NNn { cc } % \end{macrocode} % \end{macro} % % % -% \begin{macro}{\@@_tl_gput:NV,\@@_clist_gput:NV} +% \begin{macro}{\@@_tl_gput:Nn,\@@_clist_gput:NV} % These append either on the right (normal hook) or on the left % (reversed hook). This is setup up in % \cs{@@_initialize_hook_code:n}, elsewhere their behavior is undefined. % \begin{macrocode} -\cs_new:Npn \@@_tl_gput:NV {\ERROR} -\cs_new:Npn \@@_clist_gput:NV {\ERROR} +\cs_new:Npn \@@_tl_gput:Nn { \ERROR } +\cs_new:Npn \@@_clist_gput:NV { \ERROR } % \end{macrocode} % \end{macro} % @@ -3347,7 +3581,8 @@ % \begin{macrocode} \hook_if_exist:nF {#1} { \@@_log_line:x { is~not~declared! } } - \@@_if_exist:nTF {#1} + \hook_if_empty:nTF {#1} + { #2 { The~hook~is~empty } } { \@@_log_line:x { Code~chunks: } \prop_if_empty:cTF { g_@@_#1_code_prop } @@ -3357,9 +3592,25 @@ { \@@_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } } } % \end{macrocode} -% +% +% If there is code in the |top-level| token list, print it: +% \begin{macrocode} + \@@_log_line:x + { + Document-level~(top-level)~code + \hook_if_exist:nT {#1} + { ~(executed~\@@_if_reversed:nTF {#1} {first} {last} ) } : + } + \@@_log_line_indent:x + { + \tl_if_empty:cTF { @@_toplevel~#1 } + { --- } + { -> ~ \exp_args:Nv \tl_to_str:n { @@_toplevel~#1 } } + } +% \end{macrocode} +% % \begin{macrocode} - \@@_log_line:x { Extra~code~for~next~invocation:} + \@@_log_line:x { Extra~code~for~next~invocation: } \@@_log_line_indent:x { \tl_if_empty:cTF { @@_next~#1 } @@ -3427,7 +3678,6 @@ } } } - { #2 { The~hook~is~empty. } } } % \end{macrocode} % @@ -3478,7 +3728,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_list_one_rule:nnn #1#2#3 { - \@@_list_if_rule_exists:nnnF {#1} {#2} {#3} { } + \@@_list_if_rule_exists:nnnF {#1} {#2} {#3} { \@@_list_if_rule_exists:nnnF {#1} {#2} { ?? } { } } } \cs_new_protected:Npn \@@_list_if_rule_exists:nnnF #1#2#3 @@ -3486,7 +3736,9 @@ \if_cs_exist:w g_@@_ #3 _rule_ #1 | #2 _tl \cs_end: \exp_args:Nv \@@_tmp:w { g_@@_ #3 _rule_ #1 | #2 _tl } { #1 | #2 } {#3} + \exp_after:wN \use_none:nn \fi: + \use:n } % \end{macrocode} % \end{macro} @@ -3528,12 +3780,10 @@ { \@@_normalize_hook_args:Nn \@@_gput_next_code:nn {#1} } \cs_new_protected:Npn \@@_gput_next_code:nn #1 #2 { - \debug_suspend: \@@_declare:n {#1} \hook_if_exist:nTF {#1} { \@@_gput_next_do:nn {#1} {#2} } { \@@_try_declaring_generic_next_hook:nn {#1} {#2} } - \debug_resume: } \cs_new_protected:Npn \@@_gput_next_do:nn #1 { @@ -3556,8 +3806,8 @@ \tl_if_empty:cT { @@~#2 } { \@@_update_hook_code:n {#2} } \tl_if_empty:NT #1 - { \tl_gset:Nn #1 { \@@_clear_next:n {#2} } } - \tl_gput_right:Nn #1 + { \@@_tl_gset:Nn #1 { \@@_clear_next:n {#2} } } + \@@_tl_gput_right:Nn #1 } \cs_new_protected:Npn \@@_clear_next:n #1 { \cs_gset_eq:cN { @@_next~#1 } \c_empty_tl } @@ -3565,7 +3815,6 @@ % \end{macro} % \end{macro} % -% % \subsection{Using the hook} % % \begin{macro}{\hook_use:n} @@ -3720,8 +3969,9 @@ % % \begin{macro}[pTF]{\hook_if_empty:n} % Test if a hook is empty (that is, no code was added to that hook). -% A hook being empty means that \emph{both} its -% \cs[no-index]{g_@@_\meta{hook}_code_prop} and its +% A \meta{hook} being empty means that all three of its +% \cs[no-index]{g_@@_\meta{hook}_code_prop}, its +% \cs[no-index]{@@_toplevel~\meta{hook}} and its % \cs[no-index]{@@_next~\meta{hook}} are empty. % \begin{macrocode} \prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF } @@ -3730,7 +3980,11 @@ { \bool_lazy_and:nnTF { \prop_if_empty_p:c { g_@@_#1_code_prop } } - { \tl_if_empty_p:c { @@_next~#1 } } + { + \bool_lazy_and_p:nn + { \tl_if_empty_p:c { @@_toplevel~#1 } } + { \tl_if_empty_p:c { @@_next~#1 } } + } { \prg_return_true: } { \prg_return_false: } } @@ -3812,9 +4066,20 @@ % % \begin{macrocode} \msg_new:nnn { hooks } { empty-label } - { Empty~code~label~\msg_line_context:.~Using~`#1'~instead. } + { + Empty~code~label~\msg_line_context:.~ + Using~`\@@_currname_or_default:'~instead. + } % \end{macrocode} -% +% +% \begin{macrocode} +\msg_new:nnn { hooks } { no-default-label } + { + Missing~(empty)~default~label~\msg_line_context:. \\ + This~command~was~ignored. + } +% \end{macrocode} +% % \begin{macrocode} \msg_new:nnnn { hooks } { unknown-rule } { Unknown~ relationship~ `#3'~ @@ -3834,6 +4099,51 @@ % \end{macrocode} % % \begin{macrocode} +\msg_new:nnnn { hooks } { misused-top-level } + { + Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\ + 'top-level'~is~reserved~for~the~user's~document. + } + { + The~'top-level'~label~is~meant~for~user~code~only,~and~should~only~ + be~used~(sparingly)~in~the~main~document.~Use~the~default~label~ + '\@@_currname_or_default:'~for~this~\@cls@pkg,~or~another~ + suitable~label. + } +% \end{macrocode} +% +% \begin{macrocode} +\msg_new:nnn { hooks } { set-top-level } + { + You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\ + \use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\ + \msg_line_context:. + } +% \end{macrocode} +% +% \begin{macrocode} +\msg_new:nnn { hooks } { ddhl-deprecated } + { + \iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\ + Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\ + The~deprecated~name~will~be~removed~in~the~next~release. + } +% \end{macrocode} +% +% \begin{macrocode} +\msg_new:nnn { hooks } { extra-pop-label } + { + Extra~\iow_char:N \\PopDefaultHookLabel. \\ + This~command~will~be~ignored. + } +\msg_new:nnn { hooks } { missing-pop-label } + { + Missing~\iow_char:N \\PopDefaultHookLabel. \\ + The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong. + } +% \end{macrocode} +% +% \begin{macrocode} \msg_new:nnn { hooks } { should-not-happen } { ERROR!~This~should~not~happen.~#1 \\ @@ -3879,39 +4189,77 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\SetDefaultHookLabel} +% \begin{macro}{\PushDefaultHookLabel} +% \begin{macro}{\PopDefaultHookLabel} % \begin{macro}{\DeclareDefaultHookLabel} -% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_pop:} +% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_push_aux:n} +% \begin{macro}{\@@_curr_name_pop:} +% \begin{macro}{\@@_end_document_label_check:} % The token list \cs{g_@@_hook_curr_name_tl} stores the name of the % current package/file to be used as label for hooks. % Providing a consistent interface is tricky, because packages can % be loaded within packages, and some packages may not use -% \cs{DeclareDefaultHookLabel} to change the default label (in which case -% \cs{@currname} is used, if set). +% \cs{SetDefaultHookLabel} to change the default label (in which +% case \cs{@currname} is used). % -% To pull that off, we keep a stack that contains the default label -% for each level of input. The bottom of the stack contains the -% default label for the top-level. Since the string \verb|top-level| -% is hardcoded, here this item of the stack is empty. Also, since -% we're in an input level, add \verb|lthooks| to the stack as well. -% This stack should never go empty. An empty entry is added to the -% stack to account for the \verb|top-level|. The item is empty so -% that the hard-coded default is used, but a call to -% \cs{DeclareDefaultHookLabel} will change it if needed. +% To pull that one off, we keep a stack that contains the default +% label for each level of input. The bottom of the stack contains the +% default label for the |top-level| (this stack should never go +% empty). If we're building the format, set the default label to be +% |top-level|: % \begin{macrocode} -\seq_gpush:Nn \g_@@_name_stack_seq { } +\tl_gset:Nn \g_@@_hook_curr_name_tl { top-level } % \end{macrocode} % +% Then, in case we're in \pkg{latexrelease} we push something on +% the stack to support roll forward. But in some rare cases, +% \pkg{latexrelease} may be loaded inside another package (notably +% \pkg{platexrelease}), so we'll first push the |top-level| entry: +% \begin{macrocode} +%<latexrelease>\seq_gput_right:Nn \g_@@_name_stack_seq { top-level } +% \end{macrocode} +% then we dissect the \cs{@currnamestack}, adding \cs{@currname} to +% the stack: +% \changes{v1.0f}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} +%<latexrelease>\cs_set_protected:Npn \@@_tmp:w #1 #2 #3 +%<latexrelease> { +%<latexrelease> \quark_if_recursion_tail_stop:n {#1} +%<latexrelease> \seq_gput_right:Nn \g_@@_name_stack_seq {#1} +%<latexrelease> \@@_tmp:w +%<latexrelease> } +%<latexrelease>\exp_after:wN \@@_tmp:w \@currnamestack +%<latexrelease> \q_recursion_tail \q_recursion_tail +%<latexrelease> \q_recursion_tail \q_recursion_stop +% \end{macrocode} +% and finalle set the default label to be the \cs{@currname}: +% \begin{macrocode} +%<latexrelease>\tl_gset:Nx \g_@@_hook_curr_name_tl { \@currname } +% \end{macrocode} % % Two commands keep track of the stack: when a file is input, -% \cs{@@_curr_name_push:n} pushes an (empty by default) label to the -% stack: +% \cs{@@_curr_name_push:n} pushes the current default label to the +% stack, and sets the new default label in one go: % \begin{macrocode} \cs_new_protected:Npn \@@_curr_name_push:n #1 + { \exp_args:Nx \@@_curr_name_push_aux:n { \@@_make_name:n {#1} } } +\cs_new_protected:Npn \@@_curr_name_push_aux:n #1 { - \seq_gpush:Nn \g_@@_name_stack_seq {#1} - \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} + \tl_if_blank:nTF {#1} + { \msg_error:nn { hooks } { no-default-label } } + { + \str_if_eq:nnTF {#1} { top-level } + { + \msg_error:nnnnn { hooks } { set-top-level } + { to } { PushDefaultHookLabel } {#1} + } + { + \seq_gpush:NV \g_@@_name_stack_seq \g_@@_hook_curr_name_tl + \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} + } + } } -% % \end{macrocode} % and when an input is over, the topmost item of the stack is popped, % since the label will not be used again, and \cs{g_@@_hook_curr_name_tl} @@ -3919,12 +4267,27 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_curr_name_pop: { - \seq_gpop:NN \g_@@_name_stack_seq \l_@@_return_tl - \seq_get:NNTF \g_@@_name_stack_seq \l_@@_return_tl + \seq_gpop:NNTF \g_@@_name_stack_seq \l_@@_return_tl { \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl } + { \msg_error:nn { hooks } { extra-pop-label } } + } +% \end{macrocode} +% +% At the end of the document we want to check if there was no +% \cs{@@_curr_name_push:} without a matching \cs{@@_curr_name_pop:} +% (not a critical error, but it might indicate that something else is +% not quite right): +% \begin{macrocode} +\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage + { \@@_end_document_label_check: } +\cs_new_protected:Npn \@@_end_document_label_check: + { + \seq_gpop:NNT \g_@@_name_stack_seq \l_@@_return_tl { - \msg_error:nnn { hooks } { should-not-happen } - { Tried~to~pop~from~an~empty~default~label~stack. } + \msg_error:nnx { hooks } { missing-pop-label } + { \g_@@_hook_curr_name_tl } + \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl + \@@_end_document_label_check: } } % \end{macrocode} @@ -3935,14 +4298,69 @@ % Now define a wrapper that replaces the top of the stack with the % argument, and updates \cs{g_@@_hook_curr_name_tl} accordingly. % \begin{macrocode} +\NewDocumentCommand \SetDefaultHookLabel { m } + { + \seq_if_empty:NTF \g_@@_name_stack_seq + { + \msg_error:nnnnn { hooks } { set-top-level } + { for } { SetDefaultHookLabel } {#1} + } + { \exp_args:Nx \@@_set_default_label:n { \@@_make_name:n {#1} } } + } +\cs_new_protected:Npn \@@_set_default_label:n #1 + { + \str_if_eq:nnTF {#1} { top-level } + { + \msg_error:nnnnn { hooks } { set-top-level } + { to } { SetDefaultHookLabel } {#1} + } + { \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} } + } \NewDocumentCommand \DeclareDefaultHookLabel { m } { - \seq_gpop:NN \g_@@_name_stack_seq \l_@@_return_tl - \@@_curr_name_push:n {#1} + \msg_error:nn { hooks } { ddhl-deprecated } + \SetDefaultHookLabel {#1} + } +% \end{macrocode} +% +% The label is only automatically updated with \cs{@onefilewithoptions} +% (\cs{usepackage} and \cs{documentclass}), but some packages, like +% Ti\emph{k}Z, define package-like interfaces, like +% \cs{usetikzlibrary} that are wrappers around \cs{input}, so they +% inherit the default label currently in force (usually |top-level|, +% but it may change if loaded in another package). To provide a +% package-like behaviour also for hooks in these files, we provide +% high-level access to the default label stack. +% \begin{macrocode} +\NewDocumentCommand \PushDefaultHookLabel { m } + { \@@_curr_name_push:n {#1} } +\NewDocumentCommand \PopDefaultHookLabel { } + { \@@_curr_name_pop: } +% \end{macrocode} +% +% The current label stack holds the labels for all files but the +% current one (more or less like \cs{@currnamestack}), and the current +% label token list, \cs{g_@@_hook_curr_name_tl}, holds the label for +% the current file. However \cs{@pushfilename} happens before +% \cs{@currname} is set, so we need to look ahead to get the +% \cs{@currname} for the label. \pkg{expl3} also requires the current +% file in \cs{@pushfilename}, so here we abuse +% \cs{@expl@push@filename@aux@@@@} to do \cs{@@_curr_name_push:n}. +% \begin{macrocode} +\cs_gset_protected:Npn \@expl@push@filename@aux@@@@ #1#2#3 + { + \@@_curr_name_push:n {#3} + \str_gset:Nx \g_file_curr_name_str {#3} + #1 #2 {#3} } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % % @@ -4029,20 +4447,14 @@ % \end{macrocode} % % \begin{macro}{\@expl@@@initialize@all@@, -% \@expl@@@hook@curr@name@push@@n, % \@expl@@@hook@curr@name@pop@@} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@initialize@all@@ \__hook_initialize_all: % \end{macrocode} % % \begin{macrocode} -\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n - \__hook_curr_name_push:n -% \end{macrocode} -% -% \begin{macrocode} \cs_new_eq:NN \@expl@@@hook@curr@name@pop@@ \__hook_curr_name_pop: % \end{macrocode} @@ -4059,7 +4471,7 @@ % just make them do nothing which may or may not work depending on % the code usage. % \changes{v1.0d}{2020/10/04}{Definition \cs{AddToHookNext} was supposed -% to be for \cs{AddToHook} vize versa (gh/401)} +% to be for \cs{AddToHook} vice versa (gh/401)} % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease diff --git a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx index 71ab081c669..f8321719c72 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx index dcb88e83e98..f435fea4d04 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx index f5b63ed35ea..388aac78d7e 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltlength.dtx} - [2019/08/27 v1.1d LaTeX Kernel (Lengths)] + [2020/12/05 v1.1d LaTeX Kernel (Lengths)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltlength.dtx} @@ -154,7 +154,7 @@ % This macro takes the contents of the skip register that is % supplied as its argument and removes the fractional part to make % it a whole number of points. This can be used in class files to -% avoid values like |345.4666666pt| when calulating a dimension. +% avoid values like |345.4666666pt| when calculating a dimension. % \changes{LaTeX2e}{1993/11/22}{Macro added} % \begin{macrocode} \def\@settopoint#1{\divide#1\p@\multiply#1\p@} diff --git a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx index 653e4e2edd2..087b418847f 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -31,7 +31,7 @@ %<*driver> % \fi \ProvidesFile{ltlists.dtx} - [2020/04/24 v1.0t LaTeX Kernel (List Environments)] + [2020/12/05 v1.0t LaTeX Kernel (List Environments)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltlists.dtx} @@ -112,7 +112,7 @@ % the entire environment is a single item. It is defined by % letting |\quotation| == |\list{}{...}\item\relax|. (Note the % |\relax|, there in case the first character in the environment is a -% '['.) The spacing parameters provide a great deal of flexability in +% '['.) The spacing parameters provide a great deal of flexibility in % designing the format, including the ability to let the indentation of % the first paragraph be different from that of the subsequent ones. % @@ -589,7 +589,7 @@ % when not inlabel flag is false} % Because |\par| is sometimes made a no-op it is possible for a missing % |\item| to produce a loop that does not fill memory and so never gets -% trapped by \TeX. We thus need to trap this here by seting |\par| to +% trapped by \TeX. We thus need to trap this here by setting |\par| to % count the number of times a paragraph ii is called with no progress % being made started. % \begin{macrocode} @@ -729,7 +729,7 @@ % If a section heading changes |\clubpenalty| to keep lines % after it together then this modification is restored via the % |\everypar| mechanism at the start of the next paragraph. As we -% destroy the contents of this token here we explicity set +% destroy the contents of this token here we explicitly set % |\clubpenalty| back to its default. % \changes{v1.0t}{2015/05/10}{Explicitly reset \cs{clubpenalty} before % clearing \cs{everypar}; see also pr/0462 and pr/4065} @@ -807,7 +807,7 @@ % \end{macro} % % \begin{macro}{\@item} -% \changes{v1.0l}{1996/07/26}{Remove unecessary \cs{global} before +% \changes{v1.0l}{1996/07/26}{Remove unnecessary \cs{global} before % \cs{@minipage...}} % \begin{macrocode} \def\@item[#1]{% @@ -889,7 +889,7 @@ \everypar{}% \fi}% % \end{macrocode} -% \changes{v1.0l}{1996/07/26}{Remove unecessary \cs{global} before +% \changes{v1.0l}{1996/07/26}{Remove unnecessary \cs{global} before % \cs{@nobreak...}} % \changes{v1.0m}{1996/10/23}{\cs{@nobreak...} moved into the % \cs{everypar} and not executed unconditionally, see above} diff --git a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx index 6784cb41c00..6fd7b35c928 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx index 8573b3e6ca6..957a71d8488 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-2020 +% Copyright (C) 2015-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -28,7 +28,7 @@ \ProvidesFile{ltluatex.dtx} %</driver> %<*tex> -[2020/09/25 v1.1s +[2020/12/06 v1.1s %</tex> %<plain> LuaTeX support for plain TeX (core) %<*tex> @@ -129,7 +129,7 @@ % \DescribeMacro{\newluachunkname} % |newluachunkname{|\meta{chunkname}|}|\\ % Allocates a number for Lua chunk register, indexed from~$1$. -% Also enters the name of the regiser (without backslash) into the +% Also enters the name of the register (without backslash) into the % \verb|lua.name| table to be used in stack traces. % % \noindent @@ -582,7 +582,7 @@ % \changes{v1.0a}{2015/09/24}{Macro added} % Category code tables are allocated with a limit half of that used by Lua\TeX{} % for everything else. At the end of allocation there needs to be an -% initialisation step. Table~$0$ is already taken (it's the global one for +% initialization step. Table~$0$ is already taken (it's the global one for % current use) so the allocation starts at~$1$. % \begin{macrocode} \ifx\e@alloc@ccodetable@count\@undefined @@ -779,8 +779,8 @@ % \subsection{Lua loader} % \changes{v1.1r}{2020/08/10}{Load ltluatex Lua module during format building} % -% Lua code loaded in the format often has to to be loaded again at the -% beginning of every job, so we define a helper whch allows us to avoid +% Lua code loaded in the format often has to be loaded again at the +% beginning of every job, so we define a helper which allows us to avoid % duplicated code: % % \begin{macrocode} @@ -1113,7 +1113,7 @@ luatexbase.registernumber = registernumber % % \begin{macro}{new_attribute} % \changes{v1.0a}{2015/09/24}{Function added} -% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking} +% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking} % As attributes are used for Lua manipulations its useful to be able % to assign from this end. % \begin{macrocode} @@ -1148,7 +1148,7 @@ luatexbase.new_attribute = new_attribute % \subsection{Custom whatsit allocation} % % \begin{macro}{new_whatsit} -% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking} +% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking} % Much the same as for attribute allocation in Lua. % \begin{macrocode} local whatsit_count_name = whatsit_count_name or "e@alloc@whatsit@count" @@ -1169,7 +1169,7 @@ luatexbase.new_whatsit = new_whatsit % \subsection{Bytecode register allocation} % % \begin{macro}{new_bytecode} -% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking} +% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking} % Much the same as for attribute allocation in Lua. % The optional \meta{name} argument is used in the log if given. % \begin{macrocode} @@ -1192,7 +1192,7 @@ luatexbase.new_bytecode = new_bytecode % \subsection{Lua chunk name allocation} % % \begin{macro}{new_chunkname} -% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking} +% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking} % As for bytecode registers but also store the name in the % |lua.name| table. % \begin{macrocode} @@ -1735,7 +1735,7 @@ luatexbase.add_to_callback = add_to_callback % % \begin{macro}{remove_from_callback} % \changes{v1.0a}{2015/09/24}{Function added} -% \changes{v1.0k}{2015/12/02}{adjust initialisation of cb local (PHG)} +% \changes{v1.0k}{2015/12/02}{adjust initialization of cb local (PHG)} % \changes{v1.0k}{2015/12/02}{Give more specific error messages (PHG)} % \changes{v1.1m}{2020/03/07}{Do not call callback.register for user-defined callbacks} % Remove a function from a callback. First check arguments. diff --git a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx index 36b8bb7ec46..58ca26b4a5f 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -38,7 +38,7 @@ %<*driver> % \fi \ProvidesFile{ltmath.dtx} - [2020/07/27 v1.2g LaTeX Kernel (Math Setup)] + [2020/12/05 v1.2h LaTeX Kernel (Math Setup)] % \iffalse %</driver> % @@ -529,7 +529,7 @@ % % Originally \LaTeX{} only provided a small set of spacing commands % for use in text and math, some of the commands like \cs{;} were -% only supported in manth mode. \texttt{amsmath} normalized and +% only supported in math mode. \texttt{amsmath} normalized and % provided all of them in text and math. This code has now been % moved to the kernel so that it is generally available. % @@ -593,6 +593,13 @@ %<latexrelease>\def\;{\mskip\thickmuskip} %<latexrelease>\def\!{\mskip-\thinmuskip} %<latexrelease> +% \end{macrocode} +% \changes{v1.2h}{2020/11/09}{\cs{negmedspace} and \cs{negthickspace} +% have been only in amsmath, so we need to undefine for rollback (gh/423)} +% \begin{macrocode} +%<latexrelease>\let\negmedspace\@undefined +%<latexrelease>\let\negthickspace\@undefined +%<latexrelease> %<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} @@ -1094,7 +1101,7 @@ % To put the equation number on the left side of an equation we % have to use a little trick. The number is shifted |\displaywidth| % to the left inside a box of (approximately) zero width. This -% fails when the quation is too wide, the equation number than may +% fails when the equation is too wide, the equation number than may % overprint the equation itself. % \changes{v1.2y classes}{1995/01/12}{Added \cs{normalcolor}} % \changes{v1.3c classes}{1995/05/25} diff --git a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx index 9acbcccd683..c7254ad3532 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltmiscen.dtx} - [2020/10/23 v1.1w LaTeX Kernel (Misc. Environments)] + [2020/12/18 v1.1x LaTeX Kernel (Misc. Environments)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltmiscen.dtx} @@ -214,6 +214,7 @@ % \changes{v1.1i}{2000/05/19} % {Reset \cs{AtEndDocument} for latex/3060} % \begin{macrocode} + \@kernel@before@enddocument \UseOneTimeHook{enddocument}% \@kernel@after@enddocument % \end{macrocode} @@ -277,17 +278,6 @@ % \end{macro} % \end{environment} % -% -% \begin{macro}{\@kernel@after@enddocument, -% \@kernel@after@enddocument@afterlastpage} -% -% The two kernel hooks above are used by the shipout code. -% \begin{macrocode} -\let\@kernel@after@enddocument\@empty -\let\@kernel@after@enddocument@afterlastpage\@empty -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\@enddocument@kernel@warnings} % % \begin{macrocode} @@ -395,14 +385,41 @@ %<latexrelease> \endgroup %<latexrelease> \deadcycles\z@\@@end} %<latexrelease> -%<latexrelease>\let\@kernel@after@enddocument\@undefined -%<latexrelease>\let\@kernel@after@enddocument@afterlastpage\@undefined %<latexrelease>\let\@enddocument@kernel@warnings\@undefined %<latexrelease> %<latexrelease>\EndIncludeInRelease %<*2ekernel> % \end{macrocode} % +% \begin{macro}{\@kernel@before@enddocument} +% The \cs{@kernel@before@enddocument} hook is slightly different +% because we initialize it with \cs{par} so that \cs{enddocument} always +% returns to vertical mode as its first action. +% \changes{v1.1x}{2020/10/26}{\cs{enddocument} should always start out in +% vmode (gh/385)} +% \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\@kernel@before@enddocument}{kernel before hook}% +\def\@kernel@before@enddocument{\par} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% The rollback code renders it harmless. +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@kernel@before@enddocument}{kernel before hook}% +%<latexrelease> +%<latexrelease>\let\@kernel@before@enddocument\@empty +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% % % % \begin{macro}{\@testdef} diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx index c6bfc149b7c..4eea0ad41ec 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -44,7 +44,7 @@ %<*driver> % \fi \ProvidesFile{ltoutenc.dtx} - [2020/08/10 v2.0s LaTeX Kernel (font encodings)] + [2020/12/05 v2.0s LaTeX Kernel (font encodings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutenc.dtx} @@ -421,7 +421,7 @@ % for |\textdollar| in \texttt{OT1} is a hack since \$ and \pounds{} % actually share the same slot in this encoding. Thus if such a glyph % becomes available in a different encoding (e.g., \texttt{TS1}) one -% would like to get rid of the flacky one and make the default +% would like to get rid of the flaky one and make the default % definition point to the new encoding. In such a case defining %\begin{verbatim} % \DeclareTextSymbol{\textdollar}{TS1}{36} @@ -841,7 +841,7 @@ % avoid that (they are some hidden inside \cs{maybe@load@fontshape}). % As we don't have to load the fontshape in this case % (as that happened in the box above if necessary, we simply -% disable that part of the code temporaily. +% disable that part of the code temporarily. % We also ignore \cs{ignorespaces} which has the same issue and may % show up as part of \cs{normalfont} if that is used. % \changes{v2.0m}{2019/12/18}{Avoid code that breaks \cs{accent}} @@ -2538,7 +2538,7 @@ % % The tie accent was borrowed from the |cmmi| font. The tc fonts % now provide four tie accents, the first two are done in the -% classical way with assymetric glyphs hanging out of their boxes; +% classical way with asymmetric glyphs hanging out of their boxes; % the new ties are centered in their boxes like all other accents. % They need a name: please tell us if you know what to call them. % @@ -2550,7 +2550,7 @@ \DeclareTextAccent{\capitalnewtie}{TS1}{29} % \end{macrocode} % -% Compund word marks. +% Compound word marks. % % The text companion fonts contain two compound word marks of % different heights, one has |cap_height|, the other |asc_height|. @@ -2837,7 +2837,7 @@ %<*TU> % \end{macrocode} % In the base interface the Unicode encoding is always known as TU -% But we parameterise the encoding name to allow for modelling +% But we parameterize the encoding name to allow for modelling % differences in Unicode support by different fonts. % \begin{macrocode} \providecommand\UnicodeEncodingName{TU} diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins index 17d62e11e8a..23c27697f84 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 35d049b9590..f418459f661 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -37,7 +37,7 @@ %<*driver> % \fi \ProvidesFile{ltoutput.dtx} - [2020/08/21 v1.4f LaTeX Kernel (Output Routine)] + [2020/12/06 v1.4f LaTeX Kernel (Output Routine)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutput.dtx} @@ -1676,7 +1676,7 @@ % \begin{macro}{\@makecol} % \changes{v0.1c}{1993/11/23}{Command changed} % \changes{v1.0b}{1993/11/29}{\cs{@makespecialcolbox} added} -% We must rewrite this macro to alllow for variations in page-makeup +% We must rewrite this macro to allow for variations in page-makeup % required by changes in page-length. % % This uses a different macro if a special-length column is being @@ -1860,7 +1860,7 @@ % force the shortest possible column with the possibility of an % overfull box. % -% This should work for bothe flush- and ragged-bottom setting since +% This should work for both flush- and ragged-bottom setting since % it makes the contents no smaller than the size (|\@colht|) of the % box into which they are put. % @@ -2074,7 +2074,7 @@ % \end{macrocode} % % The |\catcode`\ = 10| was removed as it was considered useless -% (presumably because nothing gets tokenised during shipout). +% (presumably because nothing gets tokenized during shipout). % % This was put in as some error produced active spaces in a mark, I % think. @@ -2156,7 +2156,7 @@ % % The rest was always inside the box. % -% RmS 91/08/15: aded this line: +% RmS 91/08/15: added this line: % \begin{macrocode} \reset@font % \end{macrocode} @@ -3864,7 +3864,7 @@ % be printed in as small a space as possible, ie it uses any % shrinkability in the column. If the column was not explicitly broken % (\eg with |\pagebreak|) this may result in an overfull box message but -% execpt for this it will come out as expected (if you know what to +% except for this it will come out as expected (if you know what to % expect). % % The star form of this command is dedicated to Leslie Lamport, the @@ -3973,7 +3973,7 @@ % It also enables the use of an extra specifier, {\tt !}, in the % location optional argument of a float. If this is present then, % just for this particular float, whenever it is processed by the float -% mechanism the followinhg are ignored: +% mechanism the following are ignored: % % \begin{itemize} % \item all restrictions on the number of floats which can appear; @@ -4556,7 +4556,7 @@ % Yet another is to move the column count register from the multicol % package into the kernel. This has been done. % \item Where should the reinserts be put to maximise the -% probability that footmotes come out on the correct page? +% probability that footnotes come out on the correct page? % Or should we go for as much compatibility as possible (but see % next item)? % \item Should we continue to support (as much as possible) @@ -4980,7 +4980,7 @@ % % At the top of the page |\@fptop| is inserted; % typically this supplies some stretchable whitespace. -% At the bottom of the page |\@fpbot| ais inserted. +% At the bottom of the page |\@fpbot| is inserted. % Between adjacent floats |\@fpsep| is inserted. % % These parameters are used for all floating objects on a diff --git a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx index 8c7aac0a7b8..ce6681e7e08 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltpage.dtx} - [2020/07/27 v1.0m LaTeX Kernel (page style setup)] + [2020/12/05 v1.0m LaTeX Kernel (page style setup)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltpage.dtx} @@ -260,7 +260,7 @@ % the problem is solved.} % \changes{v1.0j}{2000/05/26}{Use \cs{@empty} instead of brace group % (pr/3203).} -% \task{???}{mark initialisation solved?} +% \task{???}{mark initialization solved?} % \begin{macrocode} \def\@markright#1#2#3{\@temptokena {#1}% \unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}} diff --git a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx index 6374f58b89a..80055c7c5d9 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltpageno.dtx} - [1994/05/19 v1.1a LaTeX Kernel (Page Numbering)] + [2020/12/05 v1.1a LaTeX Kernel (Page Numbering)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltpageno.dtx} @@ -71,7 +71,7 @@ % assigned by |\newcount|. % % \DescribeMacro{\pagenumbering} -% The user sets the pagenumber style with the |\pagenumbering|\marg{foo} +% The user sets the page number style with the |\pagenumbering|\marg{foo} % command, which sets the page counter to 1 and defines |\thepage| to be % |\foo|. For example, |\pagenumbering{roman}| causes pages to be % numbered i, ii, etc. diff --git a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx index ed1b439e9da..169954f9ea8 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx index 5bef40375cd..10773f376cf 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltpictur.dtx} - [2020/08/14 v1.2a LaTeX Kernel (Picture Mode)] + [2020/12/05 v1.2a LaTeX Kernel (Picture Mode)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltpictur.dtx} @@ -1773,7 +1773,7 @@ % % Initialization: ``|\thinlines|'' % \changes{v1.1f}{1995/10/27} -% {Move initialisation to kernel from autoload file} +% {Move initialization to kernel from autoload file} % \begin{macrocode} \let\@linefnt\tenln \let\@circlefnt\tencirc diff --git a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx index 7949b836d46..0b03fd1364d 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltplain.dtx} - [2020/08/20 v2.3d LaTeX Kernel (Plain TeX)] + [2020/11/26 v2.3d LaTeX Kernel (Plain TeX)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltplain.dtx} @@ -695,7 +695,7 @@ % {Define \cs{alloc@} in terms of \cs{e@alloc}} % Since |\e@alloc| was added in 2015, |\@alloc| has not been used, % but was left as some legacy code calls it. However the original -% defnition gives spurious errors once the ``classic'' registers +% definition gives spurious errors once the ``classic'' registers % run out, so it is now defined to call |\e@alloc| internally. % \begin{macrocode} %</2ekernel> @@ -754,8 +754,8 @@ \chardef\e@insert@top\e@alloc@top \fi % \end{macrocode} -% If the classic registers are exausted, take an insert from the free float list -% and use |\extrafloats| to add a new float to that list. +% If the classic registers are exhausted, take an insert from the free +% float list and use |\extrafloats| to add a new float to that list. % \changes{v2.2c}{2016/07/29}{fix for tlb-newinsert-001} % \begin{macrocode} \def\newinsert#1{% @@ -1481,7 +1481,7 @@ % \changes{v1.1x}{2002/02/24}{Macro added} % \changes{v2.0b}{2012/01/20}{etex tracing if available} % \changes{v2.0d}{2015/02/20}{Spell commands correctly :-)} -% \changes{v2.0g}{2015/03/10}{Reorganise to be less noisy} +% \changes{v2.0g}{2015/03/10}{Reorganize to be less noisy} % \begin{macrocode} %<latexrelease>\IncludeInRelease{2015/01/01}{\loggingall}{etex tracing}% %<*2ekernel|latexrelease> diff --git a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx index 359b445f453..70106e2e583 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -31,7 +31,7 @@ %%% From File: ltsect.dtx %<*driver> % \fi -\ProvidesFile{ltsect.dtx}[2020/07/27 v1.1e LaTeX Kernel (Sectioning)] +\ProvidesFile{ltsect.dtx}[2020/12/05 v1.1e LaTeX Kernel (Sectioning)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltsect.dtx} @@ -779,7 +779,7 @@ % \changes{v1.1c}{2018/09/26}{Sometimes mask the endline char when % writing to files (github/73)} % \changes{v1.1e}{2020/10/01}{add a fourth argument for better -% hyperref compability} +% hyperref compatibility} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> diff --git a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx index 8f0422c887b..2ea0a1b6651 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 %% -%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team +%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team %% % % This file is part of the LaTeX base system. @@ -31,8 +31,8 @@ %%% From File: ltshipout.dtx % % \begin{macrocode} -\providecommand\ltshipoutversion{v1.0c} -\providecommand\ltshipoutdate{2020/09/27} +\providecommand\ltshipoutversion{v1.0d} +\providecommand\ltshipoutdate{2020/12/06} % \end{macrocode} % %<*driver> @@ -75,7 +75,7 @@ % \ltshipoutversion\ dated \ltshipoutdate, \copyright\ \LaTeX\ % Project.}} % -% \author{Frank Mittelbach} +% \author{Frank Mittelbach, \LaTeX{} Project Team} % % \maketitle % @@ -193,7 +193,8 @@ % \item[\hook{shipout/lastpage}] % % The corresponding hook to add \cs{special}s at the very end of -% the output file. It is only executed on the very last page --- +% the output file. It is only executed on the very last page of +% the output file --- % or rather on the page that \LaTeX{} believes is the last one. % % It may not be possible for \LaTeX{} to correctly determine @@ -229,19 +230,29 @@ % \cs{typeout}s, none of the hooks are executed (as there is no % \cs{shipout}) not even the \hook{shipout/lastpage} hook. % +% +% \subsection{Legacy \LaTeX{} commands} +% +% % \begin{function}{\AtBeginDvi,\AtEndDvi} % \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{.dvx}. +% output or \texttt{.xdv}. % % \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. +% \end{function} % -% \fmi{better names? Any suggestions?} +% 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. % -% \end{function} % % \subsection{Special commands for use inside the hooks} % @@ -331,9 +342,9 @@ % \cs{thetotalpages}/\cs{PreviousTotalPages} % \end{syntax} % Command that expands to the number of total pages from the -% previous run. If there was no previous run or if usedin the +% previous run. If there was no previous run or if used in the % preamble it expands to -% \texttt{0}. Note that this is a command to a counter, so in order +% \texttt{0}. Note that this is a command and not a counter, so in order % to display the number in, say, Roman numerals you have to assign % its value to a counter and then use \cs{Roman} on that counter. % \end{variable} @@ -356,9 +367,15 @@ % % \section{Emulating commands from other packages} % -% The packages in this section are no longer necessary but as they -% are used in other packages they are emulated when they are loaded -% via \cs{usepackage} or \cs{RequirePackage}. +% The packages in this section are no longer necessary, but as they +% are used by other packages, they are emulated when they are +% explicitly loaded with \cs{usepackage} or \cs{RequirePackage}. +% +% Please note that the emulation only happens if the package is +% explicitly requested, i.e., the commands documented below are not +% automatically available in the \LaTeX{} kernel! If you write a +% new package we suggest to use the appropriate kernel hooks +% directly instead of loading the emulation. % % % \subsection{Emulating \pkg{atbegshi}} @@ -434,6 +451,13 @@ % % \subsection{Emulating \pkg{everyshi}} % +% The \pkg{everyshi} package is providing commands to run arbitrary +% code just before the shipout starts. +% One point of difference: in the new shipout hooks the page is +% available as \cs{ShipoutBox} for inspection of change, one should +% not manipulate box 255 directly inside \hook{shipout/before}, so +% old code doing this would change to use \cs{ShipoutBox} instead +% of \texttt{255} or \cs{@cclv}. % % \begin{function}{\EveryShipout} % \begin{syntax} @@ -447,22 +471,49 @@ % \end{syntax} % \end{function} % +% However, most use cases for \pkg{everyshi} are attempts to put +% some picture or text into the background or foreground of the page +% and that can be done today simply by using the +% \hook{shipout/background} and +% \hook{shipout/foreground} hooks without any need to coding. % % % \subsection{Emulating \pkg{atenddvi}} % -% The \pkg{atenddvi} package implemented only a single command: -% \cs{AtEndDvi} and that is now available out of the box. +% The \pkg{atenddvi} package implemented only a single command: +% \cs{AtEndDvi} and that is now available out of the box so the +% emulation makes the package a no-op. % % % % \subsection{Emulating \pkg{everypage}} % -% This page takes over the original \cs{@begindvi} hook and replaces -% it. It should be all covered by the hooks offered here (details -% need checking) and thus could simply use the provided hooks -% rather than defining its own. +% This package patched the original \cs{@begindvi} hook and replaced +% it with its own version. +% Its functionality is now covered by the hooks offered by the +% kernel so that there is no need for such patching any longer. % +% \begin{function}{\AddEverypageHook} +% \begin{syntax} +% \cs{AddEverypageHook}\Arg{code} $\equiv$ +% \qquad\cs{AddToHook}\texttt{\{shipout/background\}\{\cs{put}(1in,-1in)\Arg{code}\}} +% \end{syntax} +% \cs{AddEverypageHook} is adding something into the +% background of every page at a position of 1in to the right and +% 1in down from the top left corner of the page. +% By using the kernel hook directly you can put your material +% directly to the right place, i.e., use other coordinates in the +% \cs{put} statement above. +% \end{function} +% +% \begin{function}{\AddThispageHook} +% \begin{syntax} +% \cs{AddThispageHook}\Arg{code} $\equiv$ +% \qquad\cs{AddToHookNext}\texttt{\{shipout/background\}\{\cs{put}(1in,-1in)\Arg{code}\}} +% \end{syntax} +% The \cs{AddThispageHook} wrapper is similar but uses +% \cs{AddToHookNext}. +% \end{function} % % % \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } @@ -479,7 +530,7 @@ % \begin{macrocode} %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/10/01}% -%<latexrelease> {\shipout}{Hook mangement (shipout)}% +%<latexrelease> {\shipout}{Hook management (shipout)}% % \end{macrocode} % % @@ -631,7 +682,8 @@ % \cs{shipout}. % % We increment it after running the above hook so that the values -% for \cs{g_shipout_totalpages_int} and \cs{} are in sync while the +% for \cs{g_shipout_totalpages_int} and \cs{g_shipout_readonly_int} +% are in sync while the % hook is executed (in the case that totalpages isn't manually % altered or through discarding pages that is). % \begin{macrocode} @@ -699,7 +751,13 @@ \hook_if_empty:nF {shipout/foreground} { \@@_add_foreground_picture:n { \hook_use:n {shipout/foreground} } } - \hook_if_empty:nF {shipout/background} +% \end{macrocode} +% If there is no user hook, there might still code in the kernel hook. +% \changes{v1.0d}{2020/11/23}{Check for both kernel and user hook (gh/431)} +% \begin{macrocode} + \bool_lazy_and:nnF + { \hook_if_empty_p:n {shipout/background} } + { \tl_if_empty_p:N \@kernel@before@shipout@background } { \@@_add_background_picture:n { \@kernel@before@shipout@background \hook_use:n {shipout/background} } } @@ -712,11 +770,15 @@ \@@_execute_firstpage_hook: % \end{macrocode} % The we check if we have to add the \hook{shipout/lastpage} hook +% or the corresponding kernel hook % because we have reached the last page. This test will be false for % all but one (and hopefully the correct) page. +% \changes{v1.0d}{2020/11/23}{Check for both kernel and user hook (gh/431)} % \begin{macrocode} \int_compare:nNnT \@abspage@last = \g_shipout_readonly_int - { \hook_if_empty:nF {shipout/lastpage} + { \bool_lazy_and:nnF + { \hook_if_empty_p:n {shipout/lastpage} } + { \tl_if_empty_p:N \@kernel@after@shipout@lastpage } { \@@_debug:n { \typeout{Executing~ lastpage~ hook~ on~ page~ \int_use:N \g_shipout_readonly_int } } \_@@_add_foreground_box:n { \UseHook{shipout/lastpage} @@ -747,7 +809,7 @@ % % % \begin{macro}{\@@_saved_protect:} -% Remeber the current \cs{protect} state. +% Remember the current \cs{protect} state. % \begin{macrocode} \cs_new_eq:NN \@@_saved_protect: \protect % \end{macrocode} @@ -883,7 +945,7 @@ % \begin{macro}{\l_@@_tmp_box,\l_@@_saved_badness_tl} % We need a box for the background and foreground material and a % token register to remember badness settings as we disable them -% during te buildup below. +% during the buildup below. % \begin{macrocode} \box_new:N \l_@@_tmp_box \tl_new:N \l_@@_saved_badness_tl @@ -1088,7 +1150,7 @@ % \begin{macrocode} \cs_new:Npn \@@_picture_overlay:n #1 { % \end{macrocode} -% The very first time this is executed we have to initializes (and +% The very first time this is executed we have to initialize (and % freeze) the origins. % \begin{macrocode} \@@_init_page_origins: @@ -1183,7 +1245,7 @@ % % \begin{macro}{\g_shipout_totalpages_int,\c@totalpages} % We count every shipout attempt (even those that are discarded) in -% tis counter. It is not used in the code but may get used in user +% this counter. It is not used in the code but may get used in user % code. % \begin{macrocode} \int_new:N \g_shipout_totalpages_int @@ -1207,7 +1269,7 @@ % or the statement is missing from it we initialize it with the % largest possible number in \TeX{}. We use this as the default % because then we are inserting the \hook{shipout/lastpage} on -% the last page (or after the last page but not on page 1 for a +% the last page (or after the last page) but not on page 1 for a % multipage document. % \begin{macrocode} \xdef\@abspage@last{\number\maxdimen} @@ -1219,11 +1281,11 @@ % % Instead of using the hooks \hook{enddocument} and % \hook{enddocument/afterlastpage} we add this code to private -% kernel hooks to be 100\% when it is executed and to avoid +% kernel hooks to be 100\% sure when it is executed and to avoid % cluttering the hooks with data that is always there. % % Inside \cs{enddocument} there is a \cs{clearpage}. Just before -% that we execute this code here. There is a good change that we +% that we execute this code here. There is a good chance that we % are on the last page. Therefore, if we don't know the value from % the last run, we assume that the current page is the right % one. So we set \cs{@abspage@last} and as a result the next @@ -1307,7 +1369,7 @@ % At this point we also signal to \LaTeX{}'s endgame that a rerun is % necessary so that an appropriate message can be shown on the % terminal. We do this by simply defining a command used as a flag and -% tested \cs{enddocument}. +% tested in \cs{enddocument}. % \begin{macrocode} \cs_gset_eq:NN \@extra@page@added \relax } @@ -1376,9 +1438,11 @@ % % % \begin{macro}{\AtBeginDvi} -% +% If we roll forward from an earlier kernel \cs{AtBeginDvi} is +% defined so we better not use \cs{cs_new_protected:Npn} here. +% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)} % \begin{macrocode} -\cs_new_protected:Npn \AtBeginDvi {\@@_add_firstpage_material:Nn \AtBeginDvi} +\cs_set_protected:Npn \AtBeginDvi {\@@_add_firstpage_material:Nn \AtBeginDvi} % \end{macrocode} % \end{macro} % @@ -1447,8 +1511,18 @@ % % \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\shipout}{The hook management (shipout)}% -%<latexrelease>\expandafter\let\expandafter\shipout\csname tex_shipout:D\endcsname +%<latexrelease> {\shipout}{Hook management (shipout)}% +%<latexrelease> +% \end{macrocode} +% If we roll forward then \cs{tex\_shipout:D} may not be defined in +% which case \cs{shipout} does have it original definition and so +% we must not \cs{let} it to something else which is \cs{relax}! +% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} +%<latexrelease>\ifcsname tex_shipout:D\endcsname +%<latexrelease>\expandafter\let\expandafter\shipout +%<latexrelease> \csname tex_shipout:D\endcsname +%<latexrelease>\fi %<latexrelease> %<latexrelease>\let \ShipoutBox\@undefined %<latexrelease>\let \ReadonlyShipoutCounter \@undefined @@ -1483,7 +1557,7 @@ % \end{macrocode} % We do not undo a substitution when rolling back. As the file % support gets undone the underlying data is no longer used (and -% sufficiently obscure that should not interfer with existing +% sufficiently obscure that it should not interfere with existing % commands) and properly removing it would mean we need to make the % \cs{unclare@...} and its support macros available in all earlier % kernel releases which is pointless (and actually worse). @@ -1497,7 +1571,7 @@ % \end{macrocode} % We do not reenable a disabled package load when rolling back. As the file % support gets undone the underlying data is no longer checked (and -% sufficiently obscure that it should not interfer with existing +% sufficiently obscure that it should not interfere with existing % commands) and properly removing it would mean we need to make the % \cs{reenable@package@load} command available in all earlier % kernel releases which is pointless (and actually worse). @@ -1573,8 +1647,8 @@ % \begin{macrocode} %<*atbegshi-ltx> \ProvidesPackage{atbegshi-ltx} - [2020/08/17 v1.0a - Emulation of the original atbegshi package^^Jwith kernel methods] + [2020/10/15 v1.0b + Emulation of the original atbegshi^^Jpackage with kernel methods] % \end{macrocode} % % @@ -1640,7 +1714,7 @@ % % % -% \begin{macro}{\ShipoutBoxHeight,\ShipoutBoxWidth,\ShipoutoBoxDepth} +% \begin{macro}{\ShipoutBoxHeight,\ShipoutBoxWidth,\ShipoutBoxDepth} % This is somewhat different from the original in \pkg{atbegshi} % where \cs{ShipoutBoxHeight} etc.\ only holds the % \verb=\the\ht<box>= value. This may has some implications in some @@ -1679,8 +1753,8 @@ % % \begin{macrocode} \ProvidesPackage{everyshi-ltx} - [2020/08/17 v1.0a - Emulation of the original everyshi package^^Jwith kernel methods] + [2020/10/15 v1.0b + Emulation of the original everyshi^^Jpackage with kernel methods] % \end{macrocode} % % \begin{macro}{\EveryShipout,\AtNextShipout} @@ -1710,7 +1784,7 @@ %% %% Code that directly manipulates box 255, however, might fail. %% If that is the case look at the shipout hooks offered now as -%% they are normally sufficienct to avoid such minpulations (or +%% they are normally sufficient to avoid such manipulations (or %% replace box 255 with \ShipoutBox in the code. %% %</everyshi-ltx> diff --git a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx index 1a672c6455d..8b933e8c971 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lttab.dtx b/Master/texmf-dist/source/latex-dev/base/lttab.dtx index dedd9e5d375..545b30d3af1 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx index 3b6231dafdf..3ea90d005f9 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-2020 +% Copyright (C) 2019-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ % % \ProvidesFile{lttextcomp.dtx} - [2020/04/29 v1.0d LaTeX Kernel (text companion symbols)] + [2020/12/05 v1.0d LaTeX Kernel (text companion symbols)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -46,7 +46,7 @@ % % % \GetFileInfo{lttextcomp.dtx} -% \title{Providing addtional text symbols\\ +% \title{Providing additional text symbols\\ % (previously available through the \texttt{textcomp} package)\thanks % {This file has version number % \fileversion\ dated \filedate}} @@ -112,7 +112,7 @@ \mathgroup\symletters #1% \else % \end{macrocode} -% The \cs{CheckEncodingSubset} is discused below. +% The \cs{CheckEncodingSubset} is discussed below. % \begin{macrocode} \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}% \fi @@ -200,7 +200,7 @@ % declare the subset and finally the \emph{subset} number (between \texttt{0} (all % of the encoding is supported) and \texttt{9} many glyphs are missing. % -% For \texttt{TS1} the numbers have been choosen in a way that most +% For \texttt{TS1} the numbers have been chosen in a way that most % fonts can be fairly correctly categorized, but the default % settings are always conservative, that is they may claim that % less glyphs are supported than there actually are. @@ -408,7 +408,7 @@ % % Accents and been mad an error in the \texttt{textcomp} package when % not available. Now that we provide the functionality in the -% kernel we avoid the eror by swapping in a \texttt{T1} accent if +% kernel we avoid the error by swapping in a \texttt{T1} accent if % the \texttt{TS1} accent is not available. % \begin{macrocode} %\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error} @@ -565,7 +565,7 @@ % % In Unicode engines we just execute the simple accents: % \changes{v1.0c}{2020/02/10}{Use \cs{@tabacckludge} for tabbing where necessary (gh/271)} -% \changes{v1.0d}{2020/04/29}{Make all captial accents text commands for hyperref (gh/332)} +% \changes{v1.0d}{2020/04/29}{Make all capital accents text commands for hyperref (gh/332)} % \begin{macrocode} \else \DeclareTextCommandDefault\capitalacute{\@tabacckludge'} @@ -720,14 +720,14 @@ % % Most older PS fonts (supported in \TeX{} since the early nineties % when virtual fonts became available) are sorted under this -% sub-encoding. But in reality, many of them don't have all glpyhs +% sub-encoding. But in reality, many of them don't have all glyphs % that should be available in sub-encoding \texttt{5}. Instead they % show little squares, i.e., they produce ``tofu'' if you are % unlucky. % % But the coverage is so random that it is impossible to sort them % properly and if we tried to ensure that they only typeset those -% glyphs that are really always available wouput put them all into +% glyphs that are really always available would put them all into % sub-encoding \texttt{9} so that's a compromise really. % % Modern fonts that don't typeset a tofu character if a glyph is @@ -830,7 +830,7 @@ \DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}} \DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}} % \end{macrocode} -% These have Unicode slots so this should be integrated into TU explictly +% These have Unicode slots so this should be integrated into TU explicitly % \begin{macrocode} \DeclareTextSymbol{\textpilcrow} \UnicodeEncodingName{"00B6} \DeclareTextSymbol{\textborn} \UnicodeEncodingName{"002A} @@ -1156,7 +1156,7 @@ % \begin{macro}{\textlegacysection} % % Here are new names for the legacy symbols that \LaTeX{} used to -% pick up from the \texttt{OMS} encoded fonts (and used dor itemize +% pick up from the \texttt{OMS} encoded fonts (and used for itemize % lists or footnote symbols. % % We go the roundabout way via separate OMS declarations so that @@ -1443,7 +1443,7 @@ % of the default (which, unless changes, is 9 these days), i.e., it % no longer depends on the font in use. This is mainly there % because it might have been used in older documents, but not -% somehting that is recommended. +% something that is recommended. % \begin{macrocode} \DeclareOption{force}{% \def\CheckEncodingSubset#1#2#3#4#5{% @@ -1483,7 +1483,7 @@ % This section contains the old code for the textcomp package and % its documentation. It is only used if we roll back prior to 2020. % Thus all the rest is mainly for historians. Note that the old -% code categorised in the sub-encodings only into 6 classes not 10. +% code categorized in the sub-encodings only into 6 classes not 10. % % \begin{macrocode} %<*TS1oldsty> diff --git a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx index 4e3c51ab77e..c33ea4202fd 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx index 0e374f5dec0..df57faf23b4 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltvers.dtx} - [2020/03/02 v1.1e LaTeX Kernel (Version Info)] + [2020/12/05 v1.1e LaTeX Kernel (Version Info)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltvers.dtx} @@ -115,7 +115,7 @@ {2021-05-01} %</2ekernel|latexrelease> %<*2ekernel> -\def\patch@level{0} +\def\patch@level{-1} % \end{macrocode} % % \begin{macro}{\development@branch@name} @@ -255,7 +255,7 @@ % that is actually reapplying what is already in the format, i.e., % it is useless and possibly allocating new registers. However, it % makes the logic simpler so this is the way it is for now. In -% theory we could always jump overthe first patch because that is +% theory we could always jump over the first patch because that is % only really needed for rolling forward. So maybe one day \dots % \begin{macrocode} \ifnum\expandafter\@parse@version#1//00\@nil diff --git a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx index 0c7130c3717..e00f9bcb9f9 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ % %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{ltxdoc} -%<class> [2020/10/04 v2.1b Standard LaTeX documentation class] +%<class> [2020/12/05 v2.1b Standard LaTeX documentation class] % %<*driver> \documentclass{ltxdoc} @@ -484,7 +484,7 @@ % \end{macrocode} % Set \cs{protect} to a suitable value in the index entries (we % can't use |\set@display@protect| as that would result in different -% numer of spaces after a command depending on the number of +% number of spaces after a command depending on the number of % expansion happening prior to writing the index). % \begin{macrocode} \begingroup diff --git a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx index 56ae09c1650..4e78deec4ad 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltxref.dtx} - [2020/08/23 v1.1o LaTeX Kernel (Cross Referencing)] + [2020/12/05 v1.1o LaTeX Kernel (Cross Referencing)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltxref.dtx} @@ -68,10 +68,10 @@ % The user writes |\label|\marg{foo} to define the following % cross-references: % -% |\ref|\marg{foo}: value of most recently incremented referencable +% |\ref|\marg{foo}: value of most recently incremented referenceable % counter. in the current environment. (Chapter, section, % theorem and enumeration counters are -% referencable, footnote counters are not.) +% referenceable, footnote counters are not.) % % |\pageref|\marg{foo}: page number at which |\label{foo}| command % appeared. where foo can be any string of characters not @@ -98,7 +98,7 @@ \message{x-ref,} % \end{macrocode} % -% This is implemented as follows. A referencable counter CNT is +% This is implemented as follows. A referenceable counter CNT is % incremented by the command \refstepcounter{CNT} , which sets % \@currentlabel == {CNT}{eval(\p@cnt\theCNT)}. The command % \label{FOO} then writes the following on file \@auxout : diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx index a149bcf86c5..c4a76ffabef 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.ins b/Master/texmf-dist/source/latex-dev/base/makeindx.ins index 5e86d50579e..771e3b12c6e 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 962510313c0..0ea49996610 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 91a19196a78..085d2348ba8 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx index ce47cb85543..09d91dc51d5 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -27,7 +27,7 @@ % % \fi \def\nfssfontfileversion{v2.2e} -\def\nfssfontfiledate{2019/10/12} +\def\nfssfontfiledate{2020/11/26} % % \iffalse @@ -55,7 +55,7 @@ % % Within the \NFSS{} distribution there is a \LaTeX{} file % \texttt{nfssfont.tex} which can be used to test new fonts, produce -% font tables showing all characters, etc. This is an addaption of a +% font tables showing all characters, etc. This is an adaption of a % program originally written by Don Knuth. % When you run this file through \LaTeX{} you will be asked to enter @@ -79,7 +79,7 @@ % |\help|. % % This is at -% the moment only a crude addaption of the test program for the +% the moment only a crude adaption of the test program for the % Computer Modern fonts by Donald Knuth. % % \StopEventually{} diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins index d6760bcfde8..24a2e115e07 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 85cb077b59c..7401e29f6d6 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 c0c14f2aa26..56204af7ae4 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/preload.dtx b/Master/texmf-dist/source/latex-dev/base/preload.dtx index fd9e03ac44f..22554b429fd 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/proc.dtx b/Master/texmf-dist/source/latex-dev/base/proc.dtx index 8db8fef7f10..814006e411b 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -29,7 +29,7 @@ % % \iffalse % Copyright (C) 1991,1992 by Leslie Lamport \and -% Copyright (C) 1994,1995 by the \LaTeX3 project \and Johannes Braams +% Copyright (C) 1994-2020 by the \LaTeX3 project \and Johannes Braams % % \changes{v1.1}{1994/01/25}{Made `proc' a document class and provide % a .sty file for compatibility mode} @@ -73,7 +73,7 @@ %</driver> %<+class>\ProvidesClass{proc} %<+style>\ProvidesFile{proc.sty} - [2014/09/29 v1.3l + [2020/11/23 v1.3l %<+class> Standard LaTeX document class] %<+style> LaTeX 2.09 compatibility style option `proc'] % \end{macrocode} @@ -147,7 +147,7 @@ % % \section{Implementation} % -% In this case a check is needed to see wether \LaTeXe\ runs in +% In this case a check is needed to see whether \LaTeXe\ runs in % compatibility mode. % \changes{v1.3i}{1994/05/27}{Added missing docstrip guard} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/proc.ins b/Master/texmf-dist/source/latex-dev/base/proc.ins index 2c419c92b94..b9c3cbe0645 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 8b7276f492d..9c83a3d851a 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{slides.drv} %</driver> - [2020/02/20 v2.4b + [2020/11/23 v2.4b %<+class> Standard LaTeX document class] %<+cmd> SLiTeX definitions] % \end{macrocode} @@ -220,7 +220,7 @@ % \end{quote} % % The code is divided into two parts, we first implement the class -% related functions and declarations and then define lowlevel stuff +% related functions and declarations and then define low level stuff % that is necessary within every class. By placing such commands into % a separate file it will be possible to share it with other slide % classes. @@ -288,7 +288,7 @@ % \end{macrocode} % % The option \Lopt{landscape} switches the values of |\paperheight| -% and |\paperwidth|, assuming the dimensions wer given for portrait +% and |\paperwidth|, assuming the dimensions were given for portrait % paper. % \begin{macrocode} \DeclareOption{landscape} @@ -705,7 +705,7 @@ % % \begin{macro}{\clubpenalty} % \begin{macro}{\widowpenalty} -% These penalties are use to discourrage club and widow lines. +% These penalties are use to discourage club and widow lines. % Because we use their default values we only show them here, % commented out. % \begin{macrocode} @@ -718,7 +718,7 @@ % \begin{macro}{\displaywidowpenalty} % \begin{macro}{\predisplaypenalty} % \begin{macro}{\postdisplaypenalty} -% Discourrage (but not so much) widows in front of a math display +% Discourage (but not so much) widows in front of a math display % and forbid breaking directly in front of a display. Allow break % after a display without a penalty. Again the default values are % used, therefore we only show them here. @@ -1721,7 +1721,7 @@ \if@titlepage \break \fi} % \end{macrocode} -% \section{Initialisation} +% \section{Initialization} % % \subsection{Date} % @@ -2348,8 +2348,8 @@ COLOR LAYER\\[.75in]% % any output when the |@visible| switch is false. % % \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous -% \changes{v2.4a}{2016/03/29}{initialise in \cs{@oval}tests added for latex/4452} -% change to \file{latex.dtx}.} +% \changes{v2.4a}{2016/03/29}{Initialize in \cs{@oval}tests added for +% latex/4452} change to \file{latex.dtx}.} % \begin{macrocode} \def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax \@linelen #3\unitlength diff --git a/Master/texmf-dist/source/latex-dev/base/slides.ins b/Master/texmf-dist/source/latex-dev/base/slides.ins index 0eaa1eb1d7f..1213d4f4d90 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 1f7c5b651d5..55b2ad3cec6 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.ins b/Master/texmf-dist/source/latex-dev/base/syntonly.ins index c4a69c4101a..3717d1e6fe8 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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-2020 +Copyright (C) 1993-2021 The LaTeX3 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 9e32e39a63b..1c4e45e8c42 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-2020 +%% Copyright (C) 2016-2021 %% The LaTeX3 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-2020 +Copyright (C) 2016-2021 The LaTeX3 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 3264a401d9e..9df3403f5b3 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-2020 +%% Copyright (C) 1993-2021 %% The LaTeX3 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 8d454d1c718..cd11cb0f2ae 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-2020 +% Copyright (C) 1993-2021 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -216,7 +216,7 @@ %<+ts1> \ProvidesFile{ts1enc.dfu} %<+x2> \ProvidesFile{x2enc.dfu} %<+all> \ProvidesFile{utf8enc.dfu} -%<-utf8-2018> [2019/11/14 v1.2k UTF-8 support for inputenc] +%<-utf8-2018> [2020/11/26 v1.2k UTF-8 support for inputenc] % \end{macrocode} % % \begin{macrocode} @@ -318,7 +318,7 @@ % However, if we are not doing typesetting, then we execute the % command \cs{UTFviii@two@octets@noexpand} which works like % \cs{UTF@two@octets@string} but uses \cs{noexpand} instead of -% \cs{string}. This way the sequence is temporay rendered harmless, +% \cs{string}. This way the sequence is temporary rendered harmless, % e.g., would display as is or stays put inside a % \cs{protected@edef}. But if the result is later reused the % starting octet is still active and so will be able to construct @@ -363,7 +363,7 @@ % \begin{macro}{\UTFviii@two@octets@noexpand} % \begin{macro}{\UTFviii@three@octets@noexpand} % \begin{macro}{\UTFviii@four@octets@noexpand} -% These tempoarily prevent the active chars from expanding. +% These temporarily prevent the active chars from expanding. % \begin{macrocode} \long\def\UTF@two@octets@noexpand#1#2{\noexpand#2\noexpand} \long\def\UTF@three@octets@noexpand#1#2#3{\noexpand#2\noexpand#3\noexpand} @@ -530,10 +530,11 @@ % % % \begin{macro}{\UTFviii@loop} -% This bit of code derived from \texttt{xmltex} defines the active character -% correspnding to starting octets to call |\UTFviii@two@octets| etc as appropriate. -% The starting octet itself is passed directly as the first argument, the others -% are picked up later en route. +% This bit of code derived from \texttt{xmltex} defines the active +% character corresponding to starting octets to call |\UTFviii@two@octets| +% etc as appropriate. +% The starting octet itself is passed directly as the first +% argument, the others are picked up later en route. % % The |\UTFviii@loop| loops through the numbers starting at % |\count@| and ending at |\@tempcnta|${} - 1$, each time executing @@ -691,7 +692,7 @@ % \end{macrocode} % % Here is an example of what is happening, for the pair \texttt{"C2 "A3} -% (which is the utf8 represenation for the character \textsterling{}). +% (which is the utf8 representation for the character \textsterling{}). % After |\parse@XML@charref| we have, stored in |\UTFviii@tmp|, a % single command with two character tokens as arguments: % \begin{quote} @@ -849,7 +850,7 @@ % % \begin{macro}{\decode@UTFviii} % \changes{v1.1o}{2015/08/28}{Macro added} -% In the reverse direction, take a sequence of octects(bytes) +% In the reverse direction, take a sequence of octets(bytes) % representing a character in UTF-8 and construct the Unicode number. % The sequence is terminated by |\relax|. % @@ -1134,7 +1135,7 @@ % % \changes{v1.1o}{2015/08/28}{Add U+00A0 and U+00AD} % \changes{v1.1q}{2015/12/02}{Add remaining latin uses of accents in T1} -% \changes{v1.1r}{2015/12/03}{Add some more ogoneck cases} +% \changes{v1.1r}{2015/12/03}{Add some more ogonek cases} % \changes{v1.1s}{2016/01/11}{Add some more caron and acute} % \changes{v1.1t}{2017/01/28}{Add caron cominations for GgYy} % \begin{macrocode} @@ -1537,7 +1538,7 @@ % two mappings are wrong or rather the names in OT2 should change for % consistency. % -% On the other hand the names |\CYROTLD| are somewhat questionabled as the +% On the other hand the names |\CYROTLD| are somewhat questionable as the % Unicode standard only describes ``Cyrillic barred O'' while |TLD| refers % to a tilde (which is more less what the ``Cyrillic FITA looks according % to the Unicode book). |