summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex-dev/base/ltclass.dtx')
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltclass.dtx148
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