diff options
Diffstat (limited to 'Master/texmf-dist/source/latex-dev/base/ltfiles.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex-dev/base/ltfiles.dtx | 145 |
1 files changed, 102 insertions, 43 deletions
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx index b27f9105873..bcaac582208 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfiles.dtx} - [2021/01/15 v1.2j LaTeX Kernel (File Handling)] + [2021/04/17 v1.2m LaTeX Kernel (File Handling)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfiles.dtx} @@ -195,19 +195,6 @@ % \end{oldcomments} % % -% \task{???}{Do we use @unused or mainaux?} -% \begin{macro}{\@inputcheck} -% \begin{macro}{\@unused} -% Allocate read stream for testing and output stream. -% \changes{v1.0l}{1994/11/07} -% {move here from ltdefns, remove duplicate \cs{@mainaux}} -% \begin{macrocode} -\newread\@inputcheck -\newwrite\@unused -% \end{macrocode} -% \end{macro} -% \end{macro} -% % \begin{macro}{\@mainaux} % \begin{macro}{\@partaux} % \begin{macrocode} @@ -470,9 +457,14 @@ % \end{macrocode} % \InternalDetectionOn % +% These internal hooks are already declared earlier (in +% \texttt{ltexpl}) so that other modules could write to them. +% \changes{v1.2m}{2021/04/17}{Move \cs{@kernel@before@begindocument} and +% \cs{@kernel@after@begindocument} init earlier so that other modules can +% write to the hooks} % \begin{macrocode} -\let \@kernel@before@begindocument \@empty -\let \@kernel@after@begindocument \@empty +%\let \@kernel@before@begindocument \@empty +%\let \@kernel@after@begindocument \@empty % \end{macrocode} % % \end{macro} @@ -1072,30 +1064,114 @@ % \end{macrocode} % \end{macro} % +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\quote@name}{Quote file names}% +%<latexrelease> +%<latexrelease>\let\quote@name\@undefined +%<latexrelease>\let\quote@@name\@undefined +%<latexrelease>\let\unquote@name\@undefined +%<latexrelease> +%<latexrelease>\long\def \IfFileExists#1#2#3{% +%<latexrelease> \openin\@inputcheck#1 % +%<latexrelease> \ifeof\@inputcheck +%<latexrelease> \ifx\input@path\@undefined +%<latexrelease> \def\reserved@a{#3}% +%<latexrelease> \else +%<latexrelease> \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% +%<latexrelease> \fi +%<latexrelease> \else +%<latexrelease> \closein\@inputcheck +%<latexrelease> \edef\@filef@und{#1 }% +%<latexrelease> \def\reserved@a{#2}% +%<latexrelease> \fi +%<latexrelease> \reserved@a} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% +% % \begin{macro}{\IfFileExists@} % \changes{v0.9b}{1993/12/04}{Macro added} % \changes{v0.9p}{1994/01/18}{New Definition} % \changes{v1.0t}{1995/05/25}{(CAR) added \cs{long}} -% \changes{v1.2d}{2019/10/26}{quote on openin}% +% \changes{v1.2d}{2019/10/26}{quote on openin} +% \changes{v1.2k}{2021/03/12}{Allow unbalanced conditionals (gh/530)} % Argument |#1| is |\@curr@file| so catcode 12 string with no quotes. +% +% The original definition picked up arguments |#2| and |#3| in a +% way that they couldn't contain unbalanced conditionals. A better +% implementation would have been not to pick up the arguments at +% all but instead use the usual \cs{@firstoftwo} and +% \cs{secondoftwo}. However, that changes how |#| is interpreted +% and so we can't do that nowaways without invalidating a lot of +% code. Therefore the somewhat curious construction near the end. % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2021/06/01}% +%<latexrelease> {\IfFileExists@}{manage unbalanced conditionals} \long\def \IfFileExists@#1#2#3{% \openin\@inputcheck"#1" % \ifeof\@inputcheck \ifx\input@path\@undefined - \def\reserved@a{#3}% + \let\reserved@a\@secondoftwo \else - \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% + \def\reserved@a{\@iffileonpath{#1}}% \fi \else \closein\@inputcheck \edef\@filef@und{"#1" }% - \def\reserved@a{#2}% + \let\reserved@a\@firstoftwo \fi - \reserved@a} +% \end{macrocode} +% This is just there so that any |#| inside |#2| or |#3| needs +% doubling (as that was the case in the past). +% \begin{macrocode} + \expandafter\def\expandafter\reserved@a + \expandafter{\reserved@a{#2}{#3}}% +\reserved@a} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{2019/10/01}% +%<latexrelease> {\IfFileExists@}{manage unbalanced conditionals} +%<latexrelease> +%<latexrelease>\long\def \IfFileExists@#1#2#3{% +%<latexrelease> \openin\@inputcheck"#1" % +%<latexrelease> \ifeof\@inputcheck +%<latexrelease> \ifx\input@path\@undefined +%<latexrelease> \def\reserved@a{#3}% +%<latexrelease> \else +%<latexrelease> \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% +%<latexrelease> \fi +%<latexrelease> \else +%<latexrelease> \closein\@inputcheck +%<latexrelease> \edef\@filef@und{"#1" }% +%<latexrelease> \def\reserved@a{#2}% +%<latexrelease> \fi +%<latexrelease> \reserved@a} +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\IfFileExists@}{manage unbalanced conditionals} +%<latexrelease> +%<latexrelease>\let\IfFileExists@\@undefined +%<latexrelease> +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % +% +% +% +% +% +% % \begin{macro}{\@iffileonpath} % If the file is not found by |\openin|, and |\input@path| is defined, % look in all the directories specified in |\input@path|. @@ -1109,6 +1185,10 @@ % \changes{v1.2d}{2019/10/26}{quote on openin}% % \changes{v1.2f}{2019/11/11}{make \cs{@filef@und} match quoting used on \cs{openin}}% % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2019/10/01}% +%<latexrelease> {\@iffileonpath}{Quote file names} \long\def\@iffileonpath#1{% \let\reserved@a\@secondoftwo \expandafter\@tfor\expandafter\reserved@b\expandafter @@ -1128,28 +1208,7 @@ %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% -%<latexrelease> {\quote@name}{Quote file names}% -%<latexrelease> -%<latexrelease>\let\quote@name\@undefined -%<latexrelease>\let\quote@@name\@undefined -%<latexrelease>\let\unquote@name\@undefined -%<latexrelease> -%<latexrelease>\let\IfFileExists@\@undefined -%<latexrelease> -%<latexrelease>\long\def \IfFileExists#1#2#3{% -%<latexrelease> \openin\@inputcheck#1 % -%<latexrelease> \ifeof\@inputcheck -%<latexrelease> \ifx\input@path\@undefined -%<latexrelease> \def\reserved@a{#3}% -%<latexrelease> \else -%<latexrelease> \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% -%<latexrelease> \fi -%<latexrelease> \else -%<latexrelease> \closein\@inputcheck -%<latexrelease> \edef\@filef@und{#1 }% -%<latexrelease> \def\reserved@a{#2}% -%<latexrelease> \fi -%<latexrelease> \reserved@a} +%<latexrelease> {\quote@name}{Quote file names} %<latexrelease> %<latexrelease>\long\def\@iffileonpath#1{% %<latexrelease> \let\reserved@a\@secondoftwo |