diff options
Diffstat (limited to 'macros/latex-dev/base/ltclass.dtx')
-rw-r--r-- | macros/latex-dev/base/ltclass.dtx | 150 |
1 files changed, 142 insertions, 8 deletions
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx index 1948db2c6b..c08618b929 100644 --- a/macros/latex-dev/base/ltclass.dtx +++ b/macros/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2024/03/22 v1.5j LaTeX Kernel (Class & Package Interface)] + [2024/06/04 v1.5l LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -1075,19 +1075,20 @@ % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> -%<latexrelease>\IncludeInRelease{2021/11/15}% -%<latexrelease> {\IfPackageLoadedtTF}{Test package loading}% +%<latexrelease>\IncludeInRelease{2024/06/01}% +%<latexrelease> {\IfPackageLoadedTF}{Test package loading}% \let \IfPackageLoadedTF \@ifpackageloaded \let \IfClassLoadedTF \@ifclassloaded \let \IfPackageLoadedWithOptionsTF \@ifpackagewith \let \IfClassLoadedWithOptionsTF \@ifclasswith % \end{macrocode} -% For rollback pretend it was available since the beginning of dawn. +% For rollback/rollforward pretend everything was available since +% the beginning of dawn. % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\IfPackageLoadedtTF}{Test package loading}% +%<latexrelease> {\IfPackageLoadedTF}{Test package loading}% %<latexrelease> %<latexrelease>\let \IfPackageLoadedTF \@ifpackageloaded %<latexrelease>\let \IfClassLoadedTF \@ifclassloaded @@ -1102,6 +1103,99 @@ % % % +% \begin{macro}{ +% \IfPackageLoadedT,\IfPackageLoadedF, +% \IfPackageAtLeastT,\IfPackageAtLeastF, +% \IfClassAtLeastT,\IfClassAtLeastF, +% \IfFileAtLeastT,\IfFileAtLeastF, +% \IfFormatAtLeastT,\IfFormatAtLeastF, +% \IfPackageLoadedWithOptionsT,\IfPackageLoadedWithOptionsF, +% \IfClassLoadedT,\IfClassLoadedF, +% \IfClassLoadedWithOptionsF,\IfClassLoadedWithOptionTF +% } +% A few more conditionals for convenience +% \changes{v1.5k}{2024/04/10}{Provide T and F conditionals not just TF +% (gh/1262)} +% \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2024/06/01}% +%<latexrelease> {\IfPackageLoadedT}{More conditionals}% +\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}} +\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}} +\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}} +\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}} +\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}} +\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}} +\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}} +\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}} +\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}} +\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}} +\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}} +\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}} +% \end{macrocode} +% +% \begin{macro}{\IfFileLoadedTF,\IfFileLoadedT,\IfFileLoadedF} +% These three commands haven't been there at all in the past. +% \changes{v1.5k}{2024/04/10}{Provide \cs{IfFileLoadedTF} and variants +% (gh/1222)} +% \begin{macrocode} +\def\IfFileLoadedTF#1{% + \expandafter\ifx\csname ver@#1\endcsname\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} +\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}} +\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}} +% \end{macrocode} +% For rollback/rollforward pretend everything was available since +% the beginning of dawn. +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\IfPackageLoadedT}{More conditionals}% +%<latexrelease> +%<latexrelease>\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}} +%<latexrelease>\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}} +%<latexrelease>\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}} +%<latexrelease>\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}} +%<latexrelease>\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}} +%<latexrelease>\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}} +%<latexrelease>\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}} +%<latexrelease>\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}} +%<latexrelease>\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}} +%<latexrelease>\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}} +%<latexrelease>\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}} +%<latexrelease>\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}} +%<latexrelease>\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}} +%<latexrelease>\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}} +%<latexrelease>\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}} +%<latexrelease>\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}} +%<latexrelease> +%<latexrelease>\def\IfFileLoadedTF#1{% +%<latexrelease> \expandafter\ifx\csname ver@#1\endcsname\relax +%<latexrelease> \expandafter\@secondoftwo +%<latexrelease> \else +%<latexrelease> \expandafter\@firstoftwo +%<latexrelease> \fi} +%<latexrelease>\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}} +%<latexrelease>\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% % \begin{macro}{\ProvidesPackage} % Checks that the current filename is correct, and defines % |\ver@filename|. @@ -2725,13 +2819,42 @@ % The current file type. % \changes{v0.2i}{1993/12/03} % {Name changed to avoid clash with output routine.} +% \changes{v1.5l}{2024/06/04} +% {Allow for extensions other than "cls" and "pkg"} % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2024/11/01}% +%<latexrelease> {\@cls@pkg}{Allow for more extensions}% \def\@cls@pkg{% \ifx\@currext\@clsextension document class% \else - package% + \ifx\@currext\@pkgextension + package% + \else + file% + \fi \fi} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@cls@pkg}{Allow for more extensions}% +%<latexrelease> +%<latexrelease>\def\@cls@pkg{% +%<latexrelease> \ifx\@currext\@clsextension +%<latexrelease> document class% +%<latexrelease> \else +%<latexrelease> package% +%<latexrelease> \fi} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\@cls@pkg % \end{macrocode} % \end{macro} @@ -3475,11 +3598,20 @@ \pkgcls@debug{\@spaces 4: #4}% %</tracerollback> % \end{macrocode} -% Two of the arguments are needed later on in error/warning +% Three of the arguments are needed later on in error/warning % messages so we save them. +% \changes{v1.5l}{2024/06/04} +% {New argument \cs{pkgcls@ext} (gh/870)} % \begin{macrocode} \def\pkgcls@name{#1}% % for info message \def\pkgcls@arg {#3}% % for info message + \edef\pkgcls@ext{% + \ifx#4\@clsextension document class\else + \ifx#4\@pkgextension package\else + file + \fi + \fi + }% % for info message % \end{macrocode} % then we parse the final optional argument to determine if there % is a specific rollback request for the current file. This will @@ -3643,12 +3775,14 @@ % therefore issue a warning. % \changes{v1.2i}{2018/05/08} % {Make suspicious rollback a warning not error: github issue 43} +% \changes{v1.5l}{2024/06/04} +% {New argument \cs{pkgcls@ext} (gh/870)} % \begin{macrocode} \ifnum \pkgcls@targetdate > \z@ \ifnum \@parse@version0#1//00\@nil > \pkgcls@targetdate \@latex@warning@no@line{Suspicious rollback/min-date date given\MessageBreak A minimal date of #1 has been specified for - \@cls@pkg\MessageBreak '\pkgcls@name'.\MessageBreak + \pkgcls@ext\MessageBreak '\pkgcls@name'.\MessageBreak But this is in conflict with a rollback request to \requestedpatchdate} \fi |