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 | 148 |
1 files changed, 135 insertions, 13 deletions
diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index 1400ec0a62d..26667cbeb1b 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % % Copyright (C) 1993-2021 -% The LaTeX3 Project and any individual authors listed elsewhere +% The LaTeX Project and any individual authors listed elsewhere % in this file. % % This file is part of the LaTeX base system. @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2020/12/17 v1.3v LaTeX Kernel (Class & Package Interface)] + [2021/02/18 v1.3x LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -712,6 +712,7 @@ % 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} +% \changes{v1.3w}{2021/01/21}{Add empty entry for latexrelease} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> @@ -719,6 +720,7 @@ %<latexrelease>\IncludeInRelease{2020/10/01}{\@kernel@currpathstack}% %<latexrelease> {Add \@kernel@currpathstack}% \gdef\@kernel@currpathstack{} +%<latexrelease>\g@addto@macro\@kernel@currpathstack{{}} \def\@p@pfilepath#1{% \gdef\@currpath{#1}\@p@pfilepath@aux\@empty} \def\@p@pfilepath@aux#1\@nil{% @@ -1164,13 +1166,14 @@ % % \begin{macro}{\PassOptionsToPackage} % \begin{macro}{\PassOptionsToClass} -% If the package has been loaded, we check that it was first loaded with -% the options. Otherwise we add the option list to that of the package. +% If the package has been loaded, we check that it was first loaded with +% the options. Otherwise we add the option list to that of the package. % \changes{v1.3t}{2020/10/18}{Drop path from \cs{input@path} (gh/414).} +% \changes{v1.3x}{2021/02/18}{save raw option lists (gh/85)} % \begin{macrocode} %</2ekernel> -%<latexrelease>\IncludeInRelease{2020/10/01}{\@pass@ptions} -%<latexrelease> {Add file replacement in \@pass@ptions}% +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\@pass@ptions}{Raw option lists}% %<*2ekernel|latexrelease> \def\@pass@ptions#1#2#3{% \@expl@@@filehook@set@curr@file@@nNN @@ -1187,12 +1190,41 @@ % \begin{macrocode} \expandafter\let \csname opt@#3.#1\expandafter\endcsname - \csname opt@\reserved@a\endcsname} + \csname opt@\reserved@a\endcsname +% \end{macrocode} +% Extend raw option list +% \begin{macrocode} + \@ifundefined{@raw@opt@#3.#1}% + {\expandafter\gdef\csname @raw@opt@#3.#1\endcsname{#2}}% + {\expandafter\g@addto@macro\csname @raw@opt@#3.#1\endcsname{,#2}}% +} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{2020/10/01}{\@pass@ptions} +%<latexrelease> {Add file replacement in \@pass@ptions}% +%<latexrelease> +%<latexrelease>\def\@pass@ptions#1#2#3{% +%<latexrelease> \@expl@@@filehook@set@curr@file@@nNN +%<latexrelease> {\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}% +%<latexrelease> \reserved@a\reserved@b +%<latexrelease> \@expl@@@filehook@clear@replacement@flag@@ +%<latexrelease> \expandafter\xdef\csname opt@\reserved@a\endcsname{% +%<latexrelease> \@ifundefined{opt@\reserved@a}\@empty +%<latexrelease> {\csname opt@\reserved@a\endcsname,}% +%<latexrelease> \zap@space#2 \@empty}% +%<latexrelease> \expandafter\let +%<latexrelease> \csname opt@#3.#1\expandafter\endcsname +%<latexrelease> \csname opt@\reserved@a\endcsname} +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} % +% \begin{macrocode} %<latexrelease>\IncludeInRelease{0000/00/00}{\@pass@ptions} %<latexrelease> {\@pass@ptions}% +%<latexrelease> %<latexrelease>\def\@pass@ptions#1#2#3{% %<latexrelease> \expandafter\xdef\csname opt@#3.#1\endcsname{% %<latexrelease> \@ifundefined{opt@#3.#1}\@empty @@ -1200,6 +1232,9 @@ %<latexrelease> \zap@space#2 \@empty}} %<latexrelease>\EndIncludeInRelease %<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\@pass@ptions % \end{macrocode} % @@ -1241,18 +1276,49 @@ % \end{macro} % % \begin{macro}{\OptionNotUsed} +% \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)} +% \begin{macro}{\@remove@eq@value} +% \changes{v1.3x}{2021/02/18}{macro added (gh/85)} % If we are in a class file, add |\CurrentOption| to the list of % unused options. Otherwise, in a package file do nothing. % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\OptionNotUsed}{filter unused option list}% +%<*2ekernel|latexrelease> +\def\@remove@eq@value#1=#2\@nil{#1} +% \end{macrocode} +% +% \begin{macrocode} \def\OptionNotUsed{% \ifx\@currext\@clsextension \xdef\@unusedoptionlist{% \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi - \CurrentOption}% + \expandafter\@remove@eq@value\CurrentOption=\@nil}% \fi} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\OptionNotUsed}{filter unused option list}% +%<latexrelease>\let\@remove@eq@value\@undefined +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\def\OptionNotUsed{% +%<latexrelease> \ifx\@currext\@clsextension +%<latexrelease> \xdef\@unusedoptionlist{% +%<latexrelease> \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi +%<latexrelease> \CurrentOption}% +%<latexrelease> \fi} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\OptionNotUsed % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\default@ds} % The default option code. @@ -1403,11 +1469,30 @@ % {Name changed from \cs{@executeoption}} % \changes{v1.0e}{1994/05/17} % {Execute option after removing from list, not before} +% \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)} % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2021/05/01}% +%<latexrelease> {\@use@ption}{filter unused option list}% +%<*2ekernel|latexrelease> \def\@use@ption{% - \@expandtwoargs\@removeelement\CurrentOption + \@expandtwoargs\@removeelement + {\expandafter\@remove@eq@value\CurrentOption=\@nil}% \@unusedoptionlist\@unusedoptionlist \csname ds@\CurrentOption\endcsname} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@use@ption}{filter unused option list}% +%<latexrelease>\def\@use@ption{% +%<latexrelease> \@expandtwoargs\@removeelement\CurrentOption +%<latexrelease> \@unusedoptionlist\@unusedoptionlist +%<latexrelease> \csname ds@\CurrentOption\endcsname} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\@use@ption % \end{macrocode} % \end{macro} @@ -1721,15 +1806,23 @@ % {Prevent loss of brackets PR/3965} % \changes{v2.1b}{2016/11/09} % {Improve \cs{ifx} tests PR/4497} +% \changes{v1.3x}{2021/02/18}{save raw class option list (gh/85)} % \begin{macrocode} %</2ekernel> -%<latexrelease>\IncludeInRelease{2017/01/01}% +%<latexrelease>\IncludeInRelease{2020/10/01}% %<latexrelease> {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}% %<*2ekernel|latexrelease> \def\@fileswith@pti@ns#1[#2]#3[#4]{% \ifx#1\@clsextension \ifx\@classoptionslist\relax \xdef\@classoptionslist{\zap@space#2 \@empty}% +% \end{macrocode} +% Save raw class list. +% \begin{macrocode} + \gdef\@raw@classoptionslist{#2}% +% \end{macrocode} +% +% \begin{macrocode} \def\reserved@a{% \@onefilewithoptions#3[{#2}][{#4}]#1% \@documentclasshook}% @@ -1768,6 +1861,33 @@ \fi \reserved@a} %</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{2017/01/01}% +%<latexrelease> {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}% +%<latexrelease>\def\@fileswith@pti@ns#1[#2]#3[#4]{% +%<latexrelease> \ifx#1\@clsextension +%<latexrelease> \ifx\@classoptionslist\relax +%<latexrelease> \xdef\@classoptionslist{\zap@space#2 \@empty}% +%<latexrelease> \def\reserved@a{% +%<latexrelease> \@onefilewithoptions#3[{#2}][{#4}]#1% +%<latexrelease> \@documentclasshook}% +%<latexrelease> \else +%<latexrelease> \def\reserved@a{% +%<latexrelease> \@onefilewithoptions#3[{#2}][{#4}]#1}% +%<latexrelease> \fi +%<latexrelease> \else +%<latexrelease> \def\reserved@b##1,{% +%<latexrelease> \ifx\@nnil##1\relax\else +%<latexrelease> \ifx\@nnil##1\@nnil\else +%<latexrelease> \noexpand\@onefilewithoptions##1[{#2}][{#4}]% +%<latexrelease> \noexpand\@pkgextension +%<latexrelease> \fi +%<latexrelease> \expandafter\reserved@b +%<latexrelease> \fi}% +%<latexrelease> \edef\reserved@a{\zap@space#3 \@empty}% +%<latexrelease> \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nnil,}% +%<latexrelease> \fi +%<latexrelease> \reserved@a} % \end{macrocode} % % \begin{macrocode} @@ -2640,7 +2760,8 @@ % Text before the |\end|, write it with a warning. % \begin{macrocode} \@latex@warning{Writing text `##1' before % - \string\end{\@currenvir}\MessageBreak as last line of \@curr@file}% + \string\end{\@currenvir}\MessageBreak + as last line of \@curr@file}% \immediate\write\reserved@c{##1}% \fi% \ifx\relax##2\relax% @@ -2675,7 +2796,8 @@ %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{2019/10/01}% -%<latexrelease> {\filec@ntents}{Spaces in file names + optional arg}% +%<latexrelease> {\filec@ntents}{Spaces in file names + optional arg}% +%<latexrelease> %<latexrelease>\def\filecontents{\@tempswatrue\@fileswtrue %<latexrelease> \@ifnextchar[\filec@ntents@opt\filec@ntents %<latexrelease>} @@ -2805,7 +2927,7 @@ %<latexrelease>\endgroup% %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\filec@ntents}{Spaces in file names + optional arg}% +%<latexrelease> {\filec@ntents}{Spaces in file names + optional arg}% %<latexrelease> %<latexrelease>\let\filec@ntents@opt \@undefined %<latexrelease>\let\filec@ntents@force \@undefined |