diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/base/ltclass.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/base/ltclass.dtx | 271 |
1 files changed, 234 insertions, 37 deletions
diff --git a/Master/texmf-dist/source/latex/base/ltclass.dtx b/Master/texmf-dist/source/latex/base/ltclass.dtx index c62136c3097..a0ab0fa3547 100644 --- a/Master/texmf-dist/source/latex/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex/base/ltclass.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2020 -% The LaTeX3 Project and any individual authors listed elsewhere +% Copyright (C) 1993-2021 +% 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/05/18 v1.4b LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -427,7 +427,7 @@ % \changes{v0.2h}{1993/11/28} % {Primitive filenames now terminated by space not \cs{relax}.} % \changes{v0.2h}{1993/11/28} -% {Directory syntax checing moved to dircheck.dtx} +% {Directory syntax checking moved to dircheck.dtx} % \changes{v0.2h}{1993/11/28} % {Assorted commands now in the kernel removed.} % \changes{v0.2i}{1993/12/03} @@ -486,7 +486,7 @@ % \begin{macro}{\@declaredoptions} % This list is automatically built by |\DeclareOption|. % It is the list of options (separated by commas) declared in -% the class or package file and it defines the order in which the +% the class or package file and it defines the order in which % the corresponding |\ds@|\meta{option} commands are executed. % All local \meta{option}s which are not declared will be processed % in the order defined by the optional argument of |\documentclass| @@ -505,6 +505,14 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@raw@classoptionslist} +% List of options of the main class (unprocessed). +% \changes{v1.4b}{2021/05/18}{Initialise to \cs{relax} to match \cs{@classoptionslist}} +% \begin{macrocode} +\let\@raw@classoptionslist\relax +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@unusedoptionlist} % \changes{v1.0u}{1996/07/26}{made only preamble} % List of options of the main class that haven't been declared or @@ -640,14 +648,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 +708,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} @@ -712,6 +756,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 +764,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{% @@ -1026,12 +1072,12 @@ % be cautious when handling the identification string in case it % contains UTF-8 characters. % \changes{v1.3e}{2019/11/29}{Protect package info text (gh/52)} -% \changes{v1.3r}{2020/10/01}{Allow for package subsitution} +% \changes{v1.3r}{2020/10/01}{Allow for package substitution} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2020/10/01}% -%<latexrelease> {\@pr@videpackage}{Allow for package subsitution}% +%<latexrelease> {\@pr@videpackage}{Allow for package substitution}% \def\@pr@videpackage[#1]{% \expandafter\protected@xdef % <-- protected... \csname ver@\@currname.\@currext\endcsname{#1}% Loaded package @@ -1164,13 +1210,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/06/01}% +%<latexrelease> {\@pass@ptions}{Raw option lists}% %<*2ekernel|latexrelease> \def\@pass@ptions#1#2#3{% \@expl@@@filehook@set@curr@file@@nNN @@ -1187,12 +1234,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 +1276,9 @@ %<latexrelease> \zap@space#2 \@empty}} %<latexrelease>\EndIncludeInRelease %<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} \@onlypreamble\@pass@ptions % \end{macrocode} % @@ -1241,18 +1320,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/06/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. @@ -1279,7 +1389,7 @@ % \changes{v0.2a}{1993/11/14} % {Stop adding the global option list inside class files.} % \changes{v0.2a}{1993/11/14} -% {Optimise `empty option' code.} +% {Optimize `empty option' code.} % \changes{v0.2b}{1993/11/15} % {Star form added.} % \changes{v0.2c}{1993/11/17} @@ -1312,19 +1422,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} % @@ -1403,11 +1544,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/06/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} @@ -1460,7 +1620,7 @@ % the internal command, |\@fileswithoptions|. % \begin{macro}{\documentclass} % \changes{v1.0q}{1995/06/19} -% {Dont redefine \cs{usepackage} in compat mode for /1634} +% {Don't redefine \cs{usepackage} in compat mode for /1634} % The main new-style class declaration. % \begin{macrocode} \def\documentclass{% @@ -1721,15 +1881,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}% @@ -1750,8 +1918,8 @@ % \begin{macrocode} \ifx\@nnil##1\relax\else % \end{macrocode} -% If |\ifx\@nnil##1\n@nil| is true then |#1| is (presumably) empty -% (Older code used |\relax| which is slighly easier to get into |#1| +% If |\ifx\@nnil##1\@nnil| is true then |#1| is (presumably) empty +% (Older code used |\relax| which is slightly easier to get into |#1| % by mistake, which would spoil this test.) % \begin{macrocode} \ifx\@nnil##1\@nnil\else @@ -1768,6 +1936,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} @@ -1834,7 +2029,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 @@ -2087,7 +2282,7 @@ % loaded.} % % This has changed in 2020. We now use a separate macro per package -% to avoid interferences in case of nested packages. The whole +% to avoid interference in case of nested packages. The whole % code for handling this issue (GitHub 22) was provided by Hironobu % Yamashita, thanks for that. % \changes{v1.3k}{2020/04/07}{Use different method to ignore @@ -2424,7 +2619,7 @@ % \changes{v0.2r}{1993/12/19}{Different message when ignoring a file} % \changes{v0.3g}{1994/04/11} % {Add star form, -% dont write \cs{endinput} at the end of the file.} +% don't write \cs{endinput} at the end of the file.} % \changes{v1.0c}{1994/05/11} % {Add checks for form feed and tab} % \changes{v1.0m}{1995/04/21} @@ -2549,15 +2744,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% @@ -2640,7 +2835,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 +2871,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 +3002,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 @@ -2976,7 +3173,7 @@ % YYYYMMDD (if there was one, otherwise the value of % |\requestedLaTeXdate|) and |\pkgcls@targetlabel| will be % empty. If there was a request for a named version then -% |\pkgcls@targetlabel| holds the verion name and +% |\pkgcls@targetlabel| holds the version name and % |\pkgcls@targetdate| is set to \texttt{1}. % % |\pkgcls@targetdate=0| is used to indicate that there was no @@ -3063,7 +3260,7 @@ \pkgcls@parse@date@arg{#3}% % \end{macrocode} % When determining the correct release to load we keep track of -% candiates in |\pkgcls@candidate| and initially we don't have any: +% candidates in |\pkgcls@candidate| and initially we don't have any: % \begin{macrocode} \let\pkgcls@candidate\@empty % \end{macrocode} @@ -3103,7 +3300,7 @@ % % But if it starts with an equal sign followed by a date string or % followed by a version name then this means that we should roll -% back to the state of the package at tht date or to the version +% back to the state of the package at that date or to the version % with the requested name. % % If there was no optional argument or the optional argument @@ -3381,7 +3578,7 @@ % % \begin{macro}{\pkgcls@show@selection} % This command records what selection was made. As that is needed -% in two places (and it is rather lengthly) it was placed in a +% in two places (and it is rather lengthy) it was placed in a % separate command. The first argument is the name of the external % file that is being loaded and is only needed for debugging. The % second argument is the date that corresponds to this file and it @@ -3484,7 +3681,7 @@ \pkgcls@releasedate \fi % \end{macrocode} -% Otherwise the curent file is the right release, so we record that +% Otherwise the current file is the right release, so we record that % in the transcript and then carry on. % \begin{macrocode} \else |