diff options
Diffstat (limited to 'Master/texmf-dist/source/latex-dev/base/ltclass.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex-dev/base/ltclass.dtx | 91 |
1 files changed, 79 insertions, 12 deletions
diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index 26667cbeb1b..06b0e1cf43f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2021/02/18 v1.3x LaTeX Kernel (Class & Package Interface)] + [2021/03/27 v1.4a LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -640,14 +640,38 @@ %<latexrelease> \@expl@push@filename@aux@@} %<latexrelease>\EndIncludeInRelease %<latexrelease> +% \end{macrocode} +% +% When we roll back from a release that has \pkg{expl3} preloaded, the +% definitions of \cs{@pushfilename} and \cs{@popfilename} can't be +% completely rolled back otherwise \pkg{expl3}-based packages won't +% have the automatic \cs{ExplSyntaxOff} at the end. Here and below for +% \cs{@popfilename}, we don't roll back all the way through if coming +% from \LaTeX${}>2020-02-02$. +% \changes{v1.4a}{2021/03/27} +% {Do not completely roll back if \pkg{expl3} is loaded.} +% \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}{\@pushfilename}% %<latexrelease> {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}% +%<latexrelease>\ifnum\sourceLaTeXdate<20200202\relax +%<latexrelease> \GenericInfo{}{Defining 00-00-00\string\@pushfilename.} %<latexrelease>\def\@pushfilename{% %<latexrelease> \xdef\@currnamestack{% %<latexrelease> {\@currname}% %<latexrelease> {\@currext}% %<latexrelease> {\the\catcode`\@}% %<latexrelease> \@currnamestack}} +%<latexrelease>\else +%<latexrelease> \GenericInfo{}{Defining 2020-02-02\string\@pushfilename.} +%<latexrelease>\def\@pushfilename{% +%<latexrelease> \@expl@push@filename@@ +%<latexrelease> \xdef\@currnamestack{% +%<latexrelease> {\@currname}% +%<latexrelease> {\@currext}% +%<latexrelease> {\the\catcode`\@}% +%<latexrelease> \@currnamestack}% +%<latexrelease> \@expl@push@filename@aux@@} +%<latexrelease>\fi %<latexrelease>\EndIncludeInRelease \@onlypreamble\@pushfilename % \end{macrocode} @@ -676,9 +700,21 @@ %<latexrelease> \@expl@pop@filename@@} %<latexrelease>\EndIncludeInRelease %<latexrelease> +% \end{macrocode} +% +% \changes{v1.4a}{2021/03/27} +% {Do not completely roll back if \pkg{expl3} is loaded.} +% \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}{\@popfilename}% %<latexrelease> {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}% +%<latexrelease>\ifnum\sourceLaTeXdate<20200202\relax +%<latexrelease> \GenericInfo{}{Defining 00-00-00\string\@popfilename.} %<latexrelease>\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil} +%<latexrelease>\else +%<latexrelease> \GenericInfo{}{Defining 2020-02-02\string\@popfilename.} +%<latexrelease>\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil +%<latexrelease> \@expl@pop@filename@@} +%<latexrelease>\fi %<latexrelease>\EndIncludeInRelease \@onlypreamble\@popfilename % \end{macrocode} @@ -1172,7 +1208,7 @@ % \changes{v1.3x}{2021/02/18}{save raw option lists (gh/85)} % \begin{macrocode} %</2ekernel> -%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease>\IncludeInRelease{2021/06/01}% %<latexrelease> {\@pass@ptions}{Raw option lists}% %<*2ekernel|latexrelease> \def\@pass@ptions#1#2#3{% @@ -1283,7 +1319,7 @@ % unused options. Otherwise, in a package file do nothing. % \begin{macrocode} %</2ekernel> -%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease>\IncludeInRelease{2021/06/01}% %<latexrelease> {\OptionNotUsed}{filter unused option list}% %<*2ekernel|latexrelease> \def\@remove@eq@value#1=#2\@nil{#1} @@ -1378,19 +1414,50 @@ % % \changes{v0.2y}{1994/02/07} % {Add extra ,s so `two' is not matched with `twocolumn'} +% \changes{v1.3z}{2021/03/05}{modify so braces to not give errors (gh/513)} % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2021/06/01}% +%<latexrelease> {\@xprocess@ptions}{safer @xprocess@ptions}% +%<*2ekernel|latexrelease> \def\@xprocess@ptions{% \ifx\@currext\@clsextension\else + \ifx\@classoptionslist\relax\else \@for\CurrentOption:=\@classoptionslist\do{% \ifx\CurrentOption\@empty\else - \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}% - \ifin@ + \@ifundefined{ds@\CurrentOption}{}{% \@use@ption \expandafter\let\csname ds@\CurrentOption\endcsname\@empty - \fi + }% \fi}% + \fi \fi \@process@pti@ns} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@xprocess@ptions}{safer @xprocess@ptions}% +%<latexrelease>\let\@remove@eq@value\@undefined +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\def\@xprocess@ptions{% +%<latexrelease> \ifx\@currext\@clsextension\else +%<latexrelease> \@for\CurrentOption:=\@classoptionslist\do{% +%<latexrelease> \ifx\CurrentOption\@empty\else +%<latexrelease> \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}% +%<latexrelease> \ifin@ +%<latexrelease> \@use@ption +%<latexrelease> \expandafter\let\csname ds@\CurrentOption\endcsname\@empty +%<latexrelease> \fi +%<latexrelease> \fi}% +%<latexrelease> \fi +%<latexrelease> \@process@pti@ns} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\@xprocess@ptions % \end{macrocode} % @@ -1472,7 +1539,7 @@ % \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)} % \begin{macrocode} %</2ekernel> -%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease>\IncludeInRelease{2021/06/01}% %<latexrelease> {\@use@ption}{filter unused option list}% %<*2ekernel|latexrelease> \def\@use@ption{% @@ -1954,7 +2021,7 @@ % \usepackage{some/local/path/array} % \usepackage{array} % \end{verbatim} -% won't load \file{array.sty} twice. It is remotely possible that +% won't load |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 @@ -2669,15 +2736,15 @@ % this only works for input files ending in \texttt{.tex}. If a % different extension is used there is no way to see that we are % overwriting ourselves! +% \changes{v1.3y}{2021/03/03} +% {Fix overwrite check for files with UTF-8 (gh/415)} % \begin{macrocode} - \edef\reserved@a{#1}% - \edef\reserved@a{\detokenize\expandafter{\reserved@a}}% \edef\reserved@b{\detokenize\expandafter{\jobname}}% - \ifx\reserved@a\reserved@b% + \ifx\@curr@file\reserved@b% \@fileswtrue% \else% \edef\reserved@b{\reserved@b\detokenize{.tex}}% - \ifx\reserved@a\reserved@b + \ifx\@curr@file\reserved@b \@fileswtrue% \fi% \fi% |