\NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{inputtrc}[2012/10/10 v0.3 input tracing (UL)] %% Copyright (C) 2010 2011 2012 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.3c 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 \IT@maybe@returnmessage %% v0.2 } \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'. \newcommand*{\IT@the@returnmessage}{% %% v0.2 \typeout{\IT@indent RETURNING TO \IT@currfile}} %% ... the ``active" version of `\IT@maybe@returnmessage', %% see below ... %% %% === 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} %% |\dotracingreturns| activates the \texttt{RETURNING~TO} message--- \newcommand*{\dotracingreturns}{% \global \let \IT@maybe@returnmessage \IT@the@returnmessage} %% ---|\notracingreturns| turns it off--- \newcommand*{\notracingreturns}{% \global \let \IT@maybe@returnmessage \relax} %% %% <- was like \dotracingreturns 2012/10/03 %% ---\emph{not} activated is the default: \notracingreturns %% |\dotracinginputsreturns| activates \emph{both} `INPUTTING' and %% `RETURNING' messages: \newcommand*{\dotracinginputsreturns}{% \dotracinginputs \dotracingreturns} %% |\notracinginputsreturns| turns off \emph{both} `INPUTTING' and %% `RETURNING' messages: \newcommand*{\notracinginputsreturns}{% \notracinginputs \notracingreturns} %% %% === Package Options === %% \label{sec:opt} %% Package Option |[i]| issues |\dotracinginputs| %% immediately after loading the package: \DeclareOption{i}{\dotracinginputs} %% Package Option |[r]| issues |\dotracingreturns| %% immediately after loading the package: \DeclareOption{r}{\dotracingreturns} %% Package Option |[ir]| \emph{combines} the functionality %% of options `[i]' and `[r]': \DeclareOption{ir}{\dotracinginputs\dotracingreturns} \ProcessOptions %% \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, installed on CTAN same day v0.1a 2010/10/08 doc corrected: LaTeX commands using \@@input; manual page breaks -- installed on CTAN 2010/10/09 v0.2 2010/10/09 \IT@maybe@returnmessage etc. v0.2a 2010/11/11 updated LPPL version v0.3 2012/10/03 \dotracingreturns corrected, [i], [r]; updated (C) 2012/10/10 correcting doc. on options, three of them, \notracinginputsreturns