\NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{inputtrc}[2010/10/08 v0.1a input tracing (UL)] %% Copyright (C) 2010 Uwe Lueck, %% http://www.contact-ednotes.sty.de.vu %% -- author-maintained in the sense of LPPL below -- %% %% This file can be redistributed and/or modified under %% the terms of the LaTeX Project Public License; either %% version 1.3a of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% We did our best to help you, but there is NO WARRANTY. %% %% Please report bugs, problems, and suggestions via %% %% http://www.contact-ednotes.sty.de.vu %% %% === Core Definitions === %% Initializations of indent, current filename, and filename stack: \gdef\IT@indent{\IT@indent@unit} \xdef\IT@currfile{\jobname\space} %% ... TODO: add `.tex' unless ... \xdef\IT@filestack{\relax} %% ... `\relax' saves braces around job file name %% when the file stack is unbuilt. %% %% |\IT@prim@input{}| will replace \LaTeX's \cs{@@input} %% (at certain places, see below). \newcommand*{\IT@prim@input}[1]{% \typeout{\IT@indent\IT@currfile INPUTTING #1}% %% ... TODO: option to write to `.log' only. \xdef\IT@filestack{{\IT@currfile}\IT@filestack}% \xdef\IT@currfile{#1}% \expandafter \gdef\expandafter \IT@indent\expandafter{% \IT@indent \IT@indent@unit} \@@input#1 \expandafter\IT@pop@indent\IT@indent \@nil \expandafter\IT@pop@file \IT@filestack\@nil } \def\IT@pop@indent#1#2\@nil{\gdef\IT@indent{#2}} \def\IT@pop@file #1#2\@nil{% \gdef\IT@currfile{#1}\gdef\IT@filestack{#2}} %% ... cf. LaTeX's `\@pushfilename'/`\@popfilename'. %% %% === Changing \LaTeX\ (Preparations) === %% %% Changing \LaTeX's `\@@input' %% (that stores \TeX's primitive `\input') %% is not easy %% (cf. Didier Verna on his 'fink' %% package,\footnote{\url{http://ctan.org/pkg/fink}} %% also 'inputfile'); %% but it should suffice to change two of the three %% %% <- `the two' was wrong 2010/10/08b -> %% \LaTeX\ commands that use `\@@input': \newcommand\IT@InputIfFileExists[2]{% \IfFileExists{#1}% {#2\@addtofilelist{#1}\IT@prim@input\@filef@und}} %% ... \LaTeX's version is `\long', as opposed to `\@input': \newcommand*{\IT@input}[1]{% \IfFileExists{#1}{\IT@prim@input\@filef@und}% {\typeout{No file #1.}}} %% ... the third macro using `\@@input' is `\input'---too %% difficult for now. %% %% Storing original \LaTeX: \let\IT@ltx@InputIfFileExists\InputIfFileExists \let\IT@ltx@input\@input %% %% === The User Commands === %% |\dotracinginputs| globally activates input tracing: \newcommand*{\dotracinginputs}{% \global \let \InputIfFileExists \IT@InputIfFileExists \global \let \@input \IT@input} %% |\notracinginputs| globally turns input tracing off: \newcommand*{\notracinginputs}{% \global \let \InputIfFileExists \IT@ltx@InputIfFileExists \global \let \@input \IT@ltx@input} %% |\setinputindentunit{}| globally sets the ``indent unit"---the %% default setting is ~= `\space\space'. \newcommand*{\setinputindentunit}{\gdef\IT@indent@unit} %% \setinputindentunit{\space\space} %% \endinput %% %% == Coda == %% You can't overestimate my pride! %% \emph{That's one small step for a man---one giant leap for \TeX kind.} %% %% On the other hand, I probably exhausted the set of possible %% trials and errors (becoming euphoric when it suddenly worked). %% %% \bigskip \noindent \itshape %% Dedicated to Koppa Aleph Rio Lord. %% %% \bigskip \raggedleft %% Worms-Pfeddersheim~2010/10/08,~U.~L. HISTORY v0.1 2010/10/08 very first, sent to CTAN same day v0.1a 2010/10/08 doc corrected: LaTeX commands using \@@input; manual page breaks