%% %% 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 \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 \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'.