summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base/ltclass.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-11-03 03:05:14 +0000
committerNorbert Preining <norbert@preining.info>2022-11-03 03:05:14 +0000
commitc3c9975778ff2848e51f6debf733abe8ca930bd3 (patch)
tree034fcccacf40343842462b161df1764d3a7a41af /macros/latex-dev/base/ltclass.dtx
parent2281af8ba8fd52341e706f3979712f3280fcfdad (diff)
CTAN sync 202211030305
Diffstat (limited to 'macros/latex-dev/base/ltclass.dtx')
-rw-r--r--macros/latex-dev/base/ltclass.dtx39
1 files changed, 26 insertions, 13 deletions
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index 35c4251fce..a525b6f573 100644
--- a/macros/latex-dev/base/ltclass.dtx
+++ b/macros/latex-dev/base/ltclass.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2022/06/20 v1.5c LaTeX Kernel (Class & Package Interface)]
+ [2022/10/22 v1.5e LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -1302,7 +1302,10 @@
{\@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{%
+% \end{macrocode}
+% \changes{v1.5d}{2022/10/10}{Use \cs{protected@xdef}.}
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname opt@\reserved@a\endcsname{%
\@ifundefined{opt@\reserved@a}\@empty
{\csname opt@\reserved@a\endcsname,}%
\zap@space#2 \@empty}%
@@ -1476,10 +1479,12 @@
% {Star form added.}
% \changes{v0.2c}{1993/11/17}
% {restoring \cs{@fileswith@pti@ns} added.}
+% \changes{v1.5d}{2022/10/10}
+% {Use \cs{protected@edef}.}
% \begin{macrocode}
\def\ProcessOptions{%
\let\ds@\@empty
- \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
+ \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
\@ifstar\@xprocess@ptions\@process@ptions}
\@onlypreamble\ProcessOptions
% \end{macrocode}
@@ -1505,6 +1510,7 @@
% \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)}
+% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}}
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2021/06/01}%
@@ -1515,7 +1521,7 @@
\ifx\@classoptionslist\relax\else
\@for\CurrentOption:=\@classoptionslist\do{%
\ifx\CurrentOption\@empty\else
- \@ifundefined{ds@\CurrentOption}{}{%
+ \@ifundefined{ds@\detokenize\expandafter{\CurrentOption}}{}{%
\@use@ption
\expandafter\let\csname ds@\CurrentOption\endcsname\@empty
}%
@@ -1552,6 +1558,7 @@
% \end{macrocode}
%
% The common part of |\ProcessOptions| and |\ProcessOptions*|.
+% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
@@ -1559,7 +1566,7 @@
%<latexrelease> {\@process@pti@ns}{Unused options issue}%
\def\@process@pti@ns{%
\@for\CurrentOption:=\@curroptions\do{%
- \@ifundefined{ds@\CurrentOption}%
+ \@ifundefined{ds@\detokenize\expandafter{\CurrentOption}}%
{\@use@ption
\default@ds}%
% \end{macrocode}
@@ -1627,6 +1634,7 @@
% \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)}
+% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}}
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2021/06/01}%
@@ -1636,7 +1644,7 @@
\@expandtwoargs\@removeelement
{\expandafter\@remove@eq@value\CurrentOption=\@nil}%
\@unusedoptionlist\@unusedoptionlist
- \csname ds@\CurrentOption\endcsname}
+ \csname ds@\detokenize\expandafter{\CurrentOption}\endcsname}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
@@ -1988,6 +1996,7 @@
% \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)}
+% \changes{v1.5e}{2022/10/22}{Use \cs{protected@xdef}.}
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2020/10/01}%
@@ -1996,7 +2005,7 @@
\def\@fileswith@pti@ns#1[#2]#3[#4]{%
\ifx#1\@clsextension
\ifx\@classoptionslist\relax
- \xdef\@classoptionslist{\zap@space#2 \@empty}%
+ \protected@xdef\@classoptionslist{\zap@space#2 \@empty}%
% \end{macrocode}
% Save raw class list.
% \begin{macrocode}
@@ -2177,21 +2186,24 @@
% \end{macrocode}
% \changes{v1.5b}{2022/03/18}{Switch to \cs{ProcessKeyOptions}}
% \changes{v1.5c}{2022/06/20}{Pass raw options to \cs{ProcessKeyOptions}}
+% \changes{v1.5e}{2022/10/20}
+% {Define key option handler in \pkg{ltkeys}}
% In the current preferred approach, a key family name will exist for
% processing using \pkg{ltkeys}. In that case, we replace the previous
% package options with the new ones, then call the key handler.
% Otherwise, we use the more classical clash handler.
% \begin{macrocode}
{%
- \@ifundefined{opt@fam@\@currname.\@currext}
+ \@ifundefined{opt@handler@\@currname.\@currext}
{\@onefilewithoptions@clashchk{#2}}
{%
- \expandafter\edef\csname opt@\@currname.\@currext\endcsname
+% \end{macrocode}
+% \changes{v1.5d}{2022/10/10}{Use \cs{protected@edef}.}
+% \begin{macrocode}
+ \expandafter\protected@edef\csname opt@\@currname.\@currext\endcsname
{\zap@space#2 \@empty}%
\@namedef{@raw@opt@\@currname.\@currext}{#2}%
- \expandafter\expandafter\expandafter\ProcessKeyOptions
- \expandafter\expandafter\expandafter
- [\csname opt@fam@\@currname.\@currext\endcsname]%
+ \@nameuse{opt@handler@\@currname.\@currext}%
}%
}%
{\makeatletter
@@ -2693,10 +2705,11 @@
% \changes{v0.2v}{1994/01/29}
% {Macro added.}
% \changes{v1.0t}{1995/11/14}{Allow empty option}
+% \changes{v1.5d}{2022/10/10}{Use \cs{protected@edef}.}
% \begin{macrocode}
\def\@@unprocessedoptions{%
\ifx\@currext\@pkgextension
- \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
+ \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
\@for\CurrentOption:=\@curroptions\do{%
\ifx\CurrentOption\@empty\else\@unknownoptionerror\fi}%
\fi}