You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/tex/latex-dev/base/ltfilehook.ltx

343 lines
10 KiB

%%
%% This is file `ltfilehook.ltx',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ltfilehook.dtx (with options: `2ekernel')
%%
%% This is a generated file.
%%
%% Copyright 2020 Frank Mittelbach
%%
%% This file was generated from file(s) of the LaTeX `lthooks Bundle'.
%% --------------------------------------------------------------------------
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This file may only be distributed together with a copy of the LaTeX
%% `lthooks Bundle'. You may however distribute the `lthooks Bundle'
%% without such generated files.
%%
%% The newest sources can be found below
%%
%% https://github.com/FrankMittelbach/fmitex/
%%
%% where one can also log issues in case there are any.
%%
%%
%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
\providecommand\ltfilehookversion{v0.9a}
\providecommand\ltfilehookdate{2020/07/19}
\def\CurrentFile{}
\def\CurrentFilePath{}
\ExplSyntaxOn
\tl_new:N \l__filehook_internal_tl
\cs_new_protected:Npn \@filehook@set@curr@file #1
{ \exp_args:NV \__filehook_normalise_file_name:n #1 }
\cs_new_protected:Npn \__filehook_normalise_file_name:n #1
{
\file_if_exist:nTF {#1}
{
\exp_args:Nx \file_parse_full_name:nNNN
{ \file_full_name:n {#1} }
}
{ \file_parse_full_name:nNNN {#1} }
\CurrentFilePath \CurrentFile \l__filehook_internal_tl
\tl_set:Nx \CurrentFile { \CurrentFile \l__filehook_internal_tl }
}
\seq_new:N \g__filehook_input_file_seq
\cs_new_protected:Npn \@filehook@file@push
{
\seq_gpush:Nx \g__filehook_input_file_seq
{ { \CurrentFilePath } { \CurrentFile } }
}
\cs_new_protected:Npn \@filehook@file@pop
{
\seq_gpop:NNTF \g__filehook_input_file_seq \l__filehook_internal_tl
{ \exp_after:wN \__filehook_file_pop_assign:nn \l__filehook_internal_tl }
{ \ERROR_should_not_happen }
}
\cs_new_protected:Npn \__filehook_file_pop_assign:nn #1 #2
{
\tl_set:Nn \CurrentFilePath {#1}
\tl_set:Nn \CurrentFile {#2}
}
\ExplSyntaxOff
\let\InputIfFileExists\@undefined
\DeclareRobustCommand \InputIfFileExists[3]{%
\@filehook@file@push
\IfFileExists{#1}%
{%
\edef\reserved@a{\@filef@und
\def\noexpand\CurrentFile{\CurrentFile}%
\def\noexpand\CurrentFilePath{\CurrentFilePath}%
}%
\expandafter\@swaptwoargs\expandafter
{\reserved@a}%
{%
#2%
\@addtofilelist{#1}%
\UseHook{file/before}%
\UseHook{file/before/\CurrentFile}%
\@@input
}%
\UseHook{file/after/\CurrentFile}%
\UseHook{file/after}%
\@filehook@file@pop
}%
{\@filehook@file@pop #3}%
}
\def\set@curr@file#1{%
\begingroup
\escapechar\m@ne
\xdef\@curr@file{%
\expandafter\expandafter\expandafter\unquote@name
\expandafter\expandafter\expandafter{%
\expandafter\string
\csname\@firstofone#1\@empty\endcsname}}%
\endgroup
\@filehook@set@curr@file{\@curr@file}%
}
\def\load@onefilewithoptions#1[#2][#3]#4{%
\@pushfilename
\xdef\@currname{#1}%
\global\let\@currext#4%
\let\CurrentOption\@empty
\@reset@ptions
\makeatletter
\def\reserved@a{%
\@ifl@aded\@currext{#1}%
{\@if@ptions\@currext{#1}{#2}{}%
{\@latex@error
{Option clash for \@cls@pkg\space #1}%
{The package #1 has already been loaded
with options:\MessageBreak
\space\space[\@ptionlist{#1.\@currext}]\MessageBreak
There has now been an attempt to load it
with options\MessageBreak
\space\space[#2]\MessageBreak
Adding the global options:\MessageBreak
\space\space
\@ptionlist{#1.\@currext},#2\MessageBreak
to your \noexpand\documentclass declaration may fix this.%
\MessageBreak
Try typing \space <return> \space to proceed.}}}%
{\@pass@ptions\@currext{#2}{#1}%
\global\expandafter
\let\csname ver@\@currname.\@currext\endcsname\@empty
\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
\InputIfFileExists
{\@currname.\@currext}%
{%
\ifx\@currext\@pkgextension
\UseHook{package/before}%
\UseHook{package/before/\@currname}%
\else
\ifx\@currext\@clsextension
\UseHook{class/before}%
\UseHook{class/before/\@currname}%
\fi
\fi
\@filehook@file@push
}%
{\@missingfileerror\@currname\@currext}%
\let\@unprocessedoptions\@@unprocessedoptions
\csname\@currname.\@currext-h@@k\endcsname
\expandafter\let\csname\@currname.\@currext-h@@k\endcsname
\@undefined
\ifx\@currext\@pkgextension
\UseHook{package/after/\@currname}%
\UseHook{package/after}%
\else
\ifx\@currext\@clsextension
\UseHook{class/after/\@currname}%
\UseHook{class/after}%
\fi
\fi
\@filehook@file@pop
\@unprocessedoptions}%
\@ifl@ter\@currext{#1}{#3}{}%
{\@latex@warning@no@line
{You have requested,\on@line,
version\MessageBreak
`#3' of \@cls@pkg\space #1,\MessageBreak
but only version\MessageBreak
`\csname ver@#1.\@currext\endcsname'\MessageBreak
is available}}%
\ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
\@popfilename
\@reset@ptions}%
\reserved@a}
\@ifl@t@r\fmtversion{2020/10/01}
{%
\def\load@onefilewithoptions#1[#2][#3]#4{%
\@pushfilename
\xdef\@currname{#1}%
\global\let\@currext#4%
\let\CurrentOption\@empty
\@reset@ptions
\makeatletter
\def\reserved@a{%
\@ifl@aded\@currext{#1}%
{\@if@ptions\@currext{#1}{#2}{}%
{\@latex@error
{Option clash for \@cls@pkg\space #1}%
{The package #1 has already been loaded
with options:\MessageBreak
\space\space[\@ptionlist{#1.\@currext}]\MessageBreak
There has now been an attempt to load it
with options\MessageBreak
\space\space[#2]\MessageBreak
Adding the global options:\MessageBreak
\space\space
\@ptionlist{#1.\@currext},#2\MessageBreak
to your \noexpand\documentclass declaration may fix this.%
\MessageBreak
Try typing \space <return> \space to proceed.}}}%
{\@pass@ptions\@currext{#2}{#1}%
\global\expandafter
\let\csname ver@\@currname.\@currext\endcsname\@empty
\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
\InputIfFileExists
{\@currname.\@currext}%
{%
\ifx\@currext\@pkgextension
\UseHook{package/before}%
\UseHook{package/before/\@currname}%
\else
\ifx\@currext\@clsextension
\UseHook{class/before}%
\UseHook{class/before/\@currname}%
\fi
\fi
\@filehook@file@push
}%
{\@missingfileerror\@currname\@currext}%
\expandafter\let\csname unprocessedoptions-\@currname.\@currext\endcsname
\@@unprocessedoptions
\csname\@currname.\@currext-h@@k\endcsname
\expandafter\let\csname\@currname.\@currext-h@@k\endcsname
\@undefined
\ifx\@unprocessedoptions\relax
\let\@unprocessedoptions\@undefined
\else
\csname unprocessedoptions-\@currname.\@currext\endcsname
\fi
\expandafter\let
\csname unprocessedoptions-\@currname.\@currext\endcsname
\@undefined
\ifx\@currext\@pkgextension
\UseHook{package/after/\@currname}%
\UseHook{package/after}%
\else
\ifx\@currext\@clsextension
\UseHook{class/after/\@currname}%
\UseHook{class/after}%
\fi
\fi
\@filehook@file@pop
}%
\@ifl@ter\@currext{#1}{#3}{}%
{\@latex@warning@no@line
{You have requested,\on@line,
version\MessageBreak
`#3' of \@cls@pkg\space #1,\MessageBreak
but only version\MessageBreak
`\csname ver@#1.\@currext\endcsname'\MessageBreak
is available}}%
\ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
\@popfilename
\@reset@ptions}%
\reserved@a}
}{}%
\def\@include#1 {%
\clearpage
\if@filesw
\immediate\write\@mainaux{\string\@input{#1.aux}}%
\fi
\@tempswatrue
\if@partsw
\@tempswafalse
\edef\reserved@b{#1}%
\@for\reserved@a:=\@partlist\do
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
\fi
\if@tempswa
\let\@auxout\@partaux
\if@filesw
\immediate\openout\@partaux #1.aux
\immediate\write\@partaux{\relax}%
\fi
\set@curr@file{#1}%
\UseHook{include/before}%
\UseHook{include/before/#1}%
\@input@{#1.tex}%
\UseHook{include/end/#1}%
\UseHook{include/end}%
\clearpage
\UseHook{include/after/#1}%
\UseHook{include/after}%
\clearpage
\@writeckpt{#1}%
\if@filesw
\immediate\closeout\@partaux
\fi
\else
\deadcycles\z@
\@nameuse{cp@#1}%
\fi
\let\@auxout\@mainaux
}
\@ifl@t@r\fmtversion{2020/10/01}
{%
\def\@include#1 {%
\clearpage
\if@filesw
\immediate\write\@mainaux{\string\@input{"#1.aux"}}%
\fi
\@tempswatrue
\if@partsw
\@tempswafalse
\edef\reserved@b{#1}%
\@for\reserved@a:=\@partlist\do
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
\fi
\if@tempswa
\let\@auxout\@partaux
\if@filesw
\immediate\openout\@partaux "#1.aux"
\immediate\write\@partaux{\relax}%
\fi
\UseHook{include/before}%
\UseHook{include/before/#1}%
\@input@{#1.tex}%
\UseHook{include/end/#1}%
\UseHook{include/end}%
\clearpage
\UseHook{include/after/#1}%
\UseHook{include/after}%
\clearpage
\@writeckpt{#1}%
\if@filesw
\immediate\closeout\@partaux
\fi
\else
\deadcycles\z@
\@nameuse{cp@#1}%
\fi
\let\@auxout\@mainaux}
}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
%% End of file `ltfilehook.ltx'.