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.
343 lines
10 KiB
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'.
|
|
|