summaryrefslogtreecommitdiff
path: root/macros/latex/base/ltfiles.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/base/ltfiles.dtx')
-rw-r--r--macros/latex/base/ltfiles.dtx83
1 files changed, 78 insertions, 5 deletions
diff --git a/macros/latex/base/ltfiles.dtx b/macros/latex/base/ltfiles.dtx
index 4c24716df6..d99dfdcd48 100644
--- a/macros/latex/base/ltfiles.dtx
+++ b/macros/latex/base/ltfiles.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfiles.dtx}
- [2021/10/14 v1.2p LaTeX Kernel (File Handling)]
+ [2022/05/27 v1.2r LaTeX Kernel (File Handling)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfiles.dtx}
@@ -106,7 +106,7 @@
% If the file exists on the system, execute \emph{then} and input
% \emph{NAME} otherwise execute \emph{else}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v1.0a}{1994/03/07}{Initial version, split from latex.dtx}
% \changes{v1.0a}{1994/03/07}{Long lines wrapped to 72 columns}
@@ -817,7 +817,7 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease>\IncludeInRelease{2022/06/01}%
%<latexrelease> {\@include}{Spaces in file names and hooks}%
% \end{macrocode}
%
@@ -899,6 +899,16 @@
% \begin{macrocode}
\deadcycles\z@
\@nameuse{cp@#1}%
+% \end{macrocode}
+% We also execute a hook in this case, first a general used for
+% every include file that is exclude and then a specific one that
+% contains the name of the include file.
+% \changes{v1.2q}{2022/04/01}{Process some hooks is an include file is bypassed}
+% \begin{macrocode}
+%-----------------------------------------
+ \UseHook{include/excluded}%
+ \UseOneTimeHook{include/#1/excluded}%
+%-----------------------------------------
\fi
\let\@auxout\@mainaux
% \end{macrocode}
@@ -917,13 +927,66 @@
\NewHook{include/before}
\NewReversedHook{include/end}
\NewReversedHook{include/after}
+\NewHook{include/excluded}
%<latexrelease>\EndIncludeInRelease
%</2ekernel|latexrelease>
% \end{macrocode}
%
% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\@include}{Spaces in file names and hooks}%
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\def\@include#1 {%
+%<latexrelease>\ifx\@nodocument\relax
+%<latexrelease> \clearpage
+%<latexrelease> \if@filesw
+%<latexrelease> \immediate\write\@mainaux{\string\@input{#1.aux}}%
+%<latexrelease> \fi
+%<latexrelease> \@tempswatrue
+%<latexrelease> \if@partsw
+%<latexrelease> \@tempswafalse
+%<latexrelease> \edef\reserved@b{#1}%
+%<latexrelease> \@for\reserved@a:=\@partlist\do
+%<latexrelease> {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
+%<latexrelease> \fi
+%<latexrelease> \if@tempswa
+%<latexrelease> \let\@auxout\@partaux
+%<latexrelease> \if@filesw
+%<latexrelease> \immediate\openout\@partaux "#1.aux"
+%<latexrelease> \immediate\write\@partaux{\relax}%
+%<latexrelease> \fi
+%<latexrelease> \@filehook@set@CurrentFile
+%<latexrelease> \UseHook{include/before}%
+%<latexrelease> \UseOneTimeHook{include/#1/before}%
+%<latexrelease> \@input@{#1.tex}%
+%<latexrelease> \UseOneTimeHook{include/#1/end}%
+%<latexrelease> \UseHook{include/end}%
+%<latexrelease> \clearpage
+%<latexrelease> \UseOneTimeHook{include/#1/after}%
+%<latexrelease> \UseHook{include/after}%
+%<latexrelease> \clearpage
+%<latexrelease> \@writeckpt{#1}%
+%<latexrelease> \if@filesw
+%<latexrelease> \immediate\closeout\@partaux
+%<latexrelease> \fi
+%<latexrelease> \else
+%<latexrelease> \deadcycles\z@
+%<latexrelease> \@nameuse{cp@#1}%
+%<latexrelease> \fi
+%<latexrelease> \let\@auxout\@mainaux
+%<latexrelease>\else
+%<latexrelease>\@latex@warning{%
+%<latexrelease> \noexpand\include should only be used after \string\begin{document}}%
+%<latexrelease>\@input@{#1}%
+%<latexrelease>\fi}
+%<latexrelease>\NewHook{include/before}
+%<latexrelease>\NewReversedHook{include/end}
+%<latexrelease>\NewReversedHook{include/after}
+% \end{macrocode}
+%
+% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\@include}{Spaces in file names}%
+%<latexrelease> {\@include}{Spaces in file names and hooks}%
%<latexrelease>\def\@include#1 {%
%<latexrelease> \clearpage
%<latexrelease> \if@filesw
@@ -1577,6 +1640,7 @@
%
% \changes{v1.0o}{1994/11/30}
% {Use \cs{@dofilelist}}
+% \changes{v1.2r}{2022/05/27}{Try saved version string, if ver@.. is \cs{relax} (gh/825)}
% \begin{macrocode}
\def\@dofilelist{%
\typeout{^^J *File List*}%
@@ -1587,6 +1651,15 @@
\ifx\filename@ext\relax tex\else\filename@ext\fi}%
\expandafter\let\expandafter\reserved@b
\csname ver@\reserved@a\endcsname
+% \end{macrocode}
+% Packages that \cs{relax} their \cs{ver@...} string to allow for
+% multiple loading (e.g., \pkg{fontenc}) can use \cs{ver@@...} to
+% store the version information instead.
+% \begin{macrocode}
+ \ifx\reserved@b\relax
+ \expandafter\let\expandafter\reserved@b
+ \csname ver@@\reserved@a\endcsname
+ \fi
\expandafter\expandafter\expandafter\@listfiles\expandafter
\filename@area\filename@base\\\\\\\\\\\\\\\\\\\@@
\typeout{%