% \iffalse meta-comment %% %% File: texdepends.dtx Copyright (C) 2004--2011 V. Danjean %% Vincent.Danjean@ens-lyon.org %% Modified by Matthieu Gallet %% Matthieu.Gallet@ens-lyon.org %% %% This program is free software; you can redistribute it and/or %% modify it under the terms of the GNU General Public License %% as published by the Free Software Foundation; either version 2 %% of the License, or (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; if not, write to the Free Software %% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %% % %<*dtx> \ProvidesFile{texdepends.dtx} % %\NeedsTeXFormat{LaTeX2e}% %\ProvidesPackage{texdepends}% % \fi % \ProvidesFile{texdepends.dtx} [2021/10/26 v2.4.3 No changes in texdepends.dtx] % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage[latin1]{inputenc} \usepackage[french,english]{babel} \usepackage{pdfswitch} \NoAutoSpaceBeforeFDP \EnableCrossrefs \CodelineIndex \RecordChanges \setcounter{IndexColumns}{2} % make a twocolumn index \setlength{\columnseprule}{0pt} % no rules between columns ... \setlength{\columnsep}{2em} % ... but more spacing instead. \setcounter{unbalance}{4} \setlength{\IndexMin}{100pt} %%%%\OnlyDescription % uncomment this line to suppress printing the source code \makeatletter % don't show underfull hboxes in index/glossary: \g@addto@macro{\IndexParms}{\hbadness=10000} \g@addto@macro{\GlossaryParms}{\hbadness=10000} \makeatother \begin{document} \DocInput{texdepends.dtx} \PrintIndex \PrintChanges \end{document} % % \fi % % \GetFileInfo{texdepends.dtx} % % \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ } % \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} % \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,% % \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi,\loop,\do} % \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,% % \vbox,\vtop,\vcenter} % \DoNotIndex{\@empty,\immediate,\write} % \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup} % \DoNotIndex{\divide,\advance,\multiply,\count,\dimen} % \DoNotIndex{\relax,\space,\string} % \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,% % \closein,\closeout} % \DoNotIndex{\catcode,\endinput} % \DoNotIndex{\jobname,\message,\read,\the,\noexpand} % \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss} % \DoNotIndex{\m@ne,\z@,\@m,\z@skip,\@ne,\tw@,\p@} % \DoNotIndex{\DeclareRobustCommand,\DeclareOption,\newcommand,\newcommand*} % \DoNotIndex{\newcount,\newif,\newlinechar,\newread,\newtoks,\newwrite} % \DoNotIndex{\dp,\wd,\ht,\vss,\unskip,\ifthenelse} % % \DoNotIndex{\@filef@und,\@nameddef,\@tempa} % \DoNotIndex{\define@key,\equal,\ExecuteOptions} % \DoNotIndex{\filename@area,\filename@base,\filename@ext,\filename@parse} % \DoNotIndex{\Gin@exclamation,\Gin@getbase,\Gin@scalex,\Gin@scaley} % \DoNotIndex{\Gread@eps,\Gread@pdf,\Gscale@box} % \DoNotIndex{\IfFileExists,\ifpdf,\input,\InputIfFileExists} % \DoNotIndex{\MessageBreak,\PackageWarning,\PackageWarningNoLine} % \DoNotIndex{\ProcessOptions,\RequirePackage,\typeout} % \DoNotIndex{} % \DoNotIndex{} % % \title{The \textsf{texdepends} package\thanks{This file % has version number \fileversion, last % revised \filedate.}} % \author{Vincent \textsc{Danjean}} % \date{\filedate} % \maketitle % \begin{abstract} % This package allows \LaTeX\space to automatically generate % dependencies while compiling documents. % \end{abstract} % \CheckSum{801} % % \changes{v1.0.1}{2005/03/22}{Version 1.0.1 at last} % \changes{v1.0.2}{2005/10/22}{Add support for package index.sty} % \changes{v1.1.0}{2005/11/05}{Manage index/glossary} % \changes{v1.1.0}{2005/11/05}{Rewrite of the package} % \changes{v1.2.0}{2008/01/28}{Better management of subfig files} % \changes{v1.3.0}{2011/09/25}{Management of svg files} % \changes{v2.2.5}{2018/09/04}{No changes in texdepends.dtx} % \changes{v2.3.0}{2018/10/17}{ignore comment.cut file from the comment package} % \changes{v2.4.1}{2020/07/10}{No changes in texdepends.dtx} % \changes{v2.4.2}{2021/01/03}{Replace // by / in paths} % \changes{v2.4.3}{2021/10/26}{No changes in texdepends.dtx} % % \makeatletter % \def\SpecialOptionIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (option)\encapchar usage}% % \index{options:\levelchar{\protect\ttfamily#1}\encapchar % usage}\@esphack} % \def\SpecialFileIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (file)\encapchar usage}% % \index{files:\levelchar{\protect\ttfamily#1}\encapchar % usage}\@esphack} % \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1\actualchar % {\string\ttfamily\space#1} % (option)\encapchar main}% % \special@index{options:\levelchar{% % \string\ttfamily\space#1}\encapchar % main}\@esphack} % \def\option{\begingroup % \catcode`\\12 % \MakePrivateLetters \mym@cro@ \iffalse} % \long\def\mym@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist % \edef\saved@macroname{\string#2}% % \def\makelabel##1{\llap{##1}}% % \if@inlabel % \let\@tempa\@empty \count@\macro@cnt % \loop \ifnum\count@>\z@ % \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat % \edef\makelabel##1{\llap{\vtop to\baselineskip % {\@tempa\hbox{##1}\vss}}}% % \advance \macro@cnt \@ne % \else \macro@cnt\@ne \fi % \edef\@tempa{\noexpand\item[% % #1% % \noexpand\PrintMacroName % \else % \noexpand\PrintEnvName % \fi % {\string#2}]}% % \@tempa % \global\advance\c@CodelineNo\@ne % #1% % \SpecialMainIndex{#2}\nobreak % \DoNotIndex{#2}% % \else % \SpecialMainOptionIndex{#2}\nobreak % \fi % \global\advance\c@CodelineNo\m@ne % \ignorespaces} % \let\endoption \endtrivlist % \def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters % \Describe@Option} % \def\Describe@Option#1{\endgroup % \marginpar{\raggedleft\PrintDescribeEnv{#1}}% % \SpecialOptionIndex{#1}\@esphack\ignorespaces} % \def\DescribeFile{\leavevmode\@bsphack\begingroup\MakePrivateLetters % \Describe@Option} % \def\Describe@File#1{\endgroup % \marginpar{\raggedleft\PrintDescribeEnv{#1}}% % \SpecialFileIndex{#1}\@esphack\ignorespaces} % \makeatother % \MakeShortVerb{\|} % % \tableofcontents % \section{Introduction} % This package automatically generates dependancies on \LaTeX\ files and % packages, figures, bibliography files, glossary and index files. The % generated file is then used by a Makefile to handle dependancies. % \StopEventually{ % } % \section{Implementation of texdepends} % \subsection{Options} % \begin{macrocode} %<*package> % \end{macrocode} % |texdepends| is easier to write with the |ifthen| package. % \begin{macrocode} \RequirePackage{ifthen} % \end{macrocode} % \begin{option}{debug} % The debug option (enable debug messages, useful for debuging) % \begin{macrocode} \newboolean{TD@debug} \newcommand{\TD@option@debug}[1][true]{% %\PackageWarningNoLine{texdepends}{Setting debug to #1} \setboolean{TD@debug}{#1}% }% % \end{macrocode} % \end{option} % \begin{option}{extension} % The extension option. We can use it to let |texdepends| % know whether we compile a dvi or a pdf file. % \begin{macrocode} \def\TD@option@extension[#1]{% %\PackageWarningNoLine{texdepends}{Using extention #1} \def\TD@extention{#1}% }% % \end{macrocode} % \end{option} % Managing options with specific code. Using the |keyval| % package could be a solution, but this would add one more dependency. % \begin{macrocode} \def\TD@option@split#1=#2=#3\relax{% \def\TD@option@name{#1}% \ifx\TD@option@name\@empty\else \expandafter\let\expandafter\TD@option@cmd \csname TD@option@\TD@option@name\endcsname %\PackageWarningNoLine{texdepends}{1: '#1', 2: '#2', 3: '#3'} \ifx\TD@option@cmd\relax \@unknownoptionerror% \else \ifx\@empty#3\@empty \TD@option@cmd\relax% \else \def\TD@option@value{#2}% \TD@option@cmd[\TD@option@value]% \fi \fi \fi }% % \end{macrocode} % All option are managed by the same code. % \begin{macrocode} \DeclareOption*{% %\PackageWarningNoLine{texdepends}{Option \CurrentOption}% \expandafter\TD@option@split\CurrentOption==\relax% }% % \end{macrocode} % So lets process options % \begin{macrocode} \ProcessOptions % \end{macrocode} % If the |extension| option is not used, we try to find ourselves % the good extension based on TeX engine or mode. % \begin{macrocode} \ifthenelse{\isundefined{\TD@extention}}{% \PackageWarningNoLine{texdepends}{No extension given: detecting it}% \RequirePackage{ifxetex,ifpdf}% \ifxetex% \PackageWarningNoLine{textdepends}{Detected XeTeX: using .pdf}% \def\TD@extention{.pdf}% \else\ifpdf% \PackageWarningNoLine{texdepends}{Detected PDF mode: using .pdf}% \def\TD@extention{.pdf}% \else% \PackageWarningNoLine{texdepends}{Detected DVI mode. Using .dvi}% \def\TD@extention{.dvi}% \fi\fi% }{}% % \end{macrocode} % % \subsection{Tools} % Some macros to help development % \subsubsection{Debug/info wrapper} % \begin{macro}{\TD@warning} % To write a warning % \begin{macrocode} \RequirePackage{xstring}% \newcommand{\TD@warning}[1]{% \PackageWarningNoLine{texdepends}{#1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@warningLine} % To write a warning with line info % \begin{macrocode} \newcommand{\TD@warningLine}[1]{% \PackageWarning{texdepends}{#1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@info} % To write an info (as a warning if the |debug| option is set % \begin{macrocode} \newcommand{\TD@info}[1]{% \ifthenelse{\boolean{TD@debug}}{% \PackageWarningNoLine{texdepends}{#1}% }{% \PackageInfo{texdepends}{#1}% }% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@debug} % To write a message if the |debug| option is set % \begin{macrocode} \newcommand{\TD@debug}[1]{% \ifthenelse{\boolean{TD@debug}}{% \PackageWarningNoLine{texdepends}{#1}% }{% }% }% % \end{macrocode} % \end{macro} % \subsubsection{Writing dependencies} % We open the file where we will write dependencies and other infos. % \begin{macrocode} \newwrite\TD@write \TD@info{Writing info in '\jobname\TD@extention.mk'} \immediate\openout\TD@write\jobname\TD@extention.mk% % \end{macrocode} % And we define a few macro to write in this file % % \begin{macro}{\TD@print} % We write something in the file % \begin{macrocode} \def\TD@print#1{% {% % TODO: fix pb when #1 contains '#' %\noexpandarg% \StrSubstitute{#1}{//}{/}[\TD@write@text]% \immediate\write\TD@write{\TD@write@text}% %\immediate\write\TD@write{#1}% } }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printClass} % We need a class % \begin{macrocode} \def\TD@printClass#1{% \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.cls}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printPackage} % We need a package % \begin{macrocode} \def\TD@printPackage#1{% \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1.sty}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printInput} % We need a (\LaTeX) file % \begin{macrocode} \def\TD@printInput#1{% \TD@print{TD_\jobname\TD@extention _INPUTS\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printFig} % We want to ignore a dependency % \begin{macrocode} \def\TD@printNoDependsFile#1{% \TD@print{TD_\jobname\TD@extention _DEPENDS_EXCLUDE\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printFig} % We need an |XFig| file % \begin{macrocode} \def\TD@printFig#1{% \TD@print{TD_\jobname\TD@extention _FIGURES\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printSubfig} % Web need a subfig file (see figlatex.dtx) % \begin{macrocode} \def\TD@printSubfig#1{% \TD@print{TD_\jobname\TD@extention _SUBFIGS\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printRequiredFile} % A file is missing. |texdepend| will try to skip it this time, % but it will be needed at the next compilation % \begin{macrocode} \def\TD@printRequiredFile#1#2{% \TD@print{TD_\jobname\TD@extention _REQUIRED\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\RequireFile} % LaTeX users can directly declare a dependencie % \begin{macrocode} \def\RequireFile#1{% \TD@printRequiredFile{#1}{User}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printOut} % We write in a file % \begin{macrocode} \def\TD@printOut#1{% \TD@print{TD_\jobname\TD@extention _OUTPUTS\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printGraphicspath} % We modify the graphicspath % \begin{macrocode} \def\TD@printGraphicspath#1{% \TD@print{TD_\jobname\TD@extention _GRAPHICSPATH\space := #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printBibfile} % We use a bibfile (|*.bib|) % \begin{macrocode} \def\TD@printBibfile#1{% \TD@print{TD_\jobname\TD@extention _BIBFILES\space += #1.bib}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printBibstyle} % We use a bibstyle file (|*.bst|) % \begin{macrocode} \def\TD@printBibstyle#1{% \TD@print{TD_\jobname\TD@extention _BIBSTYLES\space += #1.bst}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printBblfile} % We use a bibliography file (|*.bbl|) % \begin{macrocode} \def\TD@printBblfile#1{% \TD@print{TD_\jobname\TD@extention _BBLFILES\space += #1.bbl}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printRebuildRule} % We need a specific rule in the |Makefile| to check if a % rebuild is needed % \begin{macrocode} \def\TD@printRebuildRule#1{% \TD@print{TD_\jobname\TD@extention _REBUILD_RULES\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printIndex} % We use a new index % \begin{macrocode} \def\TD@printIndex#1{% \TD@print{TD_\jobname\TD@extention _INDEXES\space += INDEX}% \TD@print{TD_\jobname\TD@extention _INDEXES_INDEX\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printIndexSource} % The index file filled by \LaTeX % \begin{macrocode} \def\TD@printIndexSource#1#2{% \TD@print{TD_\jobname\TD@extention _INDEX_#1_SRC\space = #2}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printIndexTarget} % And the index file read by \LaTeX{} after |makeindex| % processing % \begin{macrocode} \def\TD@printIndexTarget#1#2{% \TD@print{TD_\jobname\TD@extention _INDEX_#1_TARGET\space = #2}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printIndexStyle} % The index style to be used with |makeindex| (never % called for now) % \begin{macrocode} \def\TD@printIndexStyle#1#2{% \TD@print{TD_\jobname\TD@extention _INDEX_#1_STYLE\space = #2}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printGlossary} % And the same things for glossary. Its name % \begin{macrocode} \def\TD@printGlossary#1{% \TD@print{TD_\jobname\TD@extention _INDEXES += GLOSS}% \TD@print{TD_\jobname\TD@extention _INDEXES_GLOSS\space += #1}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printGlossarySource} % The glossary file filled by \LaTeX % \begin{macrocode} \def\TD@printGlossarySource#1#2{% \TD@print{TD_\jobname\TD@extention _GLOSS_#1_SRC\space = #2}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printGlossaryTarget} % And the glossary file read by \LaTeX{} after |makeindex| % processing % \begin{macrocode} \def\TD@printGlossaryTarget#1#2{% \TD@print{TD_\jobname\TD@extention _GLOSS_#1_TARGET\space = #2}% }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@printGlossaryStyle} % The glossary style to be used with |makeindex| (never % called for now) % \begin{macrocode} \def\TD@printGlossaryStyle#1#2{% \TD@print{TD_\jobname\TD@extention _GLOSS_#1_STYLE\space = #2}% }% % \end{macrocode} % \end{macro} % % \subsubsection{Diverting a macro} % \begin{macro}{\TD@switch} % |\TD@switch| replace the macro |\#1| by the macro |\TD@#1|. The % original macro is stored in the |\TD@orig@#1| macro. Nothing is done % if |\#1| is already |\TD@#1| (that is if |\TD@switch| is called % severall times with the same argument) % \begin{macrocode} \def\TD@switch#1{% \expandafter\let\expandafter\TD@local@old\csname#1\endcsname% \expandafter\let\expandafter\TD@local@new\csname TD@#1\endcsname% \ifx\TD@local@old\TD@local@new \PackageWarning{texdepends}{#1 already redefined. Skipping it.}% \else \ifx\TD@local@old\relax \TD@warning{Diverting empty macro '#1' \MessageBreak% Probably a bug in texdepends.sty}% \else \TD@info{Diverting macro '#1'}% \fi \expandafter\let\csname TD@orig@#1\endcsname\TD@local@old% \expandafter\let\csname#1\endcsname\TD@local@new% \fi }% % \end{macrocode} % \end{macro} % \begin{macro}{\TD@docswitch} % Sometimes, we want the diversion to be delayed until the start of % the document. % \begin{macrocode} \def\TD@docswitchlist{}% \def\TD@docswitch#1{% \TD@info{Registering macro '#1' for diversion}% \ifx\TD@docswitchlist\@empty% \xdef\TD@docswitchlist{#1}% \else% \xdef\TD@docswitchlist{\TD@docswitchlist,#1}% \fi% }% \AtBeginDocument{% \TD@info{Diverting registered macros...}% \@for\TD@cmd:=\TD@docswitchlist\do{% \TD@switch{\TD@cmd}% }% \TD@info{Divertions done}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\TD@PackagePreDivert} % \begin{macro}{\TD@PackagePostDivert} % And then, two macros to insert command just before or after % loading a package. The first argument is the name of the package % we want to add an hook before or after, and then there is the % definition of the hook that will be called. Four parameters (|#1|, % \ldots, |#4|) are available (the same as the |@onefilewithoptions| % \LaTeX{} macro, ie package name, options, and the two remaining ;-)). % \begin{macrocode} \def\TD@PackagePreDivert#1{% \expandafter\def\csname TD@PackageStart@#1\endcsname ##1##2##3##4% }% \def\TD@PackagePostDivert#1{% \expandafter\def\csname TD@PackageEnd@#1\endcsname ##1##2##3##4% }% % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Initialisation} % We need to be loaded \emph{before} \string\documentclass % \begin{macrocode} \ifx\documentclass\@twoclasseserror \PackageError{texdepends}{texdepends needs to be loaded BEFORE \string\documentclass \MessageBreak Use \string\RequirePackage\space instead of \string\usepackage \MessageBreak as the later is not allowed before \string\documentclass} \fi % \end{macrocode} % And we write the first dependency (upon ourself) % \begin{macrocode} \TD@printPackage{texdepends} % \end{macrocode} % We write default graphicspath (is this really needed ?) % \begin{macrocode} \TD@printGraphicspath{{.}} % \end{macrocode} % % \subsubsection{Warning upon missing figures} % \begin{macro}{\TD@depends} % \begin{macro}{\TD@dependsWarning} % \begin{macro}{\TD@missingDepends} % If some figures are missing, |\TD@missingDepends| will be called so % that a warning will be displayed at the end of the % compilation. Figures should be generated before the next run. % \begin{macrocode} \def\TD@depends{}% \def\TD@dependsWarning{% \PackageWarningNoLine{texdepends}{Figure(s) missing. Check dependencies again}% }% \def\TD@missingDepends{% \global\let\TD@depends\TD@dependsWarning% }% \AtEndDocument{% \TD@depends% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsection{Diversion of \LaTeX{} macros} % % \subsubsection{Class and package loading} % \begin{macro}{\TD@@fileswith@pti@ns} % \begin{macro}{\TD@@@fileswith@pti@ns} % Diverting |\@fileswith@pti@ns| and |@@fileswith@pti@ns| so that we % can track class loading. Package are tracked with an other macro % (see just after). % \begin{macrocode} \def\TD@@fileswith@pti@ns#1[#2]#3[#4]{% \ifx#1\@clsextension \TD@printClass{#3} \fi \TD@orig@@fileswith@pti@ns{#1}[#2]{#3}[#4]% }% \let\TD@@@fileswith@pti@ns\TD@@fileswith@pti@ns \TD@switch{@fileswith@pti@ns}% \TD@switch{@@fileswith@pti@ns}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\TD@@onefilewithoptions} % By diverting |\@onefilewithoptions|, we can track all loaded % packages. We write the dependency, and we look at the loaded package % to see if we need some special requirements % \begin{macrocode} \def\TD@@onefilewithoptions#1[#2][#3]#4{% \TD@printPackage{#1}% \ifthenelse{\equal{#1}{texdepends}}{% % \end{macrocode} % The |texdepends| package is special : we know it has already been % loaded (we are running code in it) but perhaps \LaTeX{} does not % know it. So we try to honor the |debug| option. % \begin{macrocode} \TD@debug{Package '#1' detected} \@for\TD@package@option:=#2\do{% \ifthenelse{\expandafter\isundefined\csname TD@option@\TD@package@option\endcsname}{ \TD@warningLine{Ignoring unknown option '\TD@package@option'} }{ \ifthenelse{% \equal{\TD@package@option}{debug}% %\OR\equal{\TD@package@option}{debug}% }{ \csname TD@option@\TD@package@option\endcsname% }{ \TD@warningLine{Ignoring option '\TD@package@option' \MessageBreak #1 already loaded } } } } }{% \expandafter\let\expandafter\TD@divert \csname TD@PackageStart@#1\endcsname \ifx\TD@divert\relax \TD@debug{No preamble for package #1} \else \TD@info{Preamble for package #1} \TD@divert{#1}{#2}{#3}{#4}% \fi \TD@orig@@onefilewithoptions{#1}[#2][#3]{#4}% \expandafter\let\expandafter\TD@divert \csname TD@PackageEnd@#1\endcsname \ifx\TD@divert\relax \TD@debug{No postamble for package #1} \else \TD@info{Postamble for package #1} \TD@divert{#1}{#2}{#3}{#4}% \fi }% }% \TD@switch{@onefilewithoptions}% % \end{macrocode} % \end{macro} % % \subsubsection{Tracking input files} % \begin{macro}{\TD@@iinput} % \begin{macro}{\TD@@input@} % |\@iinput| and |\@input@| are diverted to track loaded files % \begin{macrocode} \def\TD@@iinput#1{% \TD@printInput{#1}% \TD@orig@@iinput{#1}}% \def\TD@@input@#1{% \IfFileExists{#1}{% \TD@printInput{#1}% }{}% \TD@orig@@input@{#1}}% \TD@switch{@iinput}% \TD@switch{@input@}% \def\TD@verbatiminput#1{% \TD@printInput{#1}% \TD@orig@verbatiminput{#1}}% \TD@PackagePostDivert{verbatim}{% \TD@switch{verbatiminput}}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Tracking output files} % \begin{macro}{\TD@openout} % \begin{macro}{\TD@poenout@eq} % \begin{macro}{\TD@poenout@noeq} % Note: that does not work. Currently, we parse the log file instead % of using this. If someone has ideas\ldots % \begin{macrocode} \let\TD@orig@openout\openout \def\TD@openout#1{% \@ifnextchar={\TD@openout@eq#1}{\TD@openout@noeq#1}} \def\TD@openout@eq#1=#2.#3{% \TD@printOut{#2.#3}% \TD@orig@openout#1=#2.#3% }% \def\TD@openout@noeq#1#2.#3{% \TD@printOut{#2.#3}% \TD@orig@openout#1#2.#3% }% %\TD@switch{openout} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Tracking bibliography files} % \begin{macrocode} \def\TD@bibli@bbl{% \TD@printBblfile{\jobname}% \global\let\TD@bibli@bbl\relax% }% \def\TD@bibli@files#1{% \TD@bibli@bbl% \@for\TD@bibfile:=#1\do{% \TD@printBibfile{\TD@bibfile}% }% } \def\TD@bibli@style#1{% \TD@bibli@bbl% %\@for\TD@bibstyle:=#1\do{% % \TD@printBibstyle{\TD@bibstyle}% %} \TD@printBibstyle{#1}% } \def\TD@bibliography#1{% \TD@bibli@files{#1}% \TD@orig@bibliography{#1}% }% \def\TD@bibliographystyle#1{% \TD@bibli@style{#1}% \TD@orig@bibliographystyle{#1}% }% \TD@docswitch{bibliography}% \TD@switch{bibliographystyle}% % \end{macrocode} % \subsubsection{Glossary and index files} % \begin{macrocode} \def\TD@makeindex{% \TD@printIndex{\jobname}% \TD@printIndexSource{\jobname}{\jobname.idx}% \TD@orig@makeindex% }% \def\TD@makeglossary{% \TD@printGlossary{\jobname}% \TD@printGlossarySource{\jobname}{\jobname.glo}% \TD@orig@makeglossary% }% \TD@switch{makeindex}% \TD@switch{makeglossary}% % \end{macrocode} % \subsection{Diversion of package's macros} % \subsubsection{Package graphics} % \begin{macrocode} \def\TD@Gin@getbase#1{% \TD@orig@Gin@getbase{#1}% \ifx\Gin@ext\relax% \else% \TD@printFig{\Gin@base\Gin@ext}% \fi% }% \def\TD@Ginclude@eps#1{% \IfFileExists{#1}{% \TD@orig@Ginclude@eps{#1}% }{% \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% \TD@missingDepends% \TD@printRequiredFile{#1}{eps}% }% }% \def\TD@Ginclude@pdf#1{% \IfFileExists{#1}{% \TD@orig@Ginclude@pdf{#1}% }{% \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% \TD@missingDepends% \TD@printRequiredFile{#1}{pdf}% }% }% \def\TD@graphicspath#1{% \TD@printGraphicspath{#1}% \TD@orig@graphicspath{#1}% }% \def\TD@Gread@eps#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Gread File '#1' exists}% \TD@orig@Gread@eps{#1}% }{% \PackageWarning{texdepends}{No '#1' file \MessageBreak using 1 for graphic dimensions}% \setbox\@tempboxa\hbox{\relax}% \def\Gin@llx{1}\let\Gin@lly\Gin@llx \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{\ht\@tempboxa}% }% }% \def\TD@Gread@pdf#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Gread File '#1' exists}% \TD@orig@Gread@pdf{#1}% }{% \PackageWarning{texdepends}{No '#1' file \MessageBreak using 1 for graphic dimensions}% \setbox\@tempboxa\hbox{\relax}% \def\Gin@llx{1}\let\Gin@lly\Gin@llx \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{\ht\@tempboxa}% }% }% \TD@PackagePostDivert{graphics}{% \TD@switch{graphicspath}% \TD@docswitch{Gin@getbase}% \TD@docswitch{Ginclude@eps}% \TD@docswitch{Ginclude@pdf}% \TD@docswitch{Gread@eps}% \TD@docswitch{Gread@pdf}% }% % \end{macrocode} % \subsubsection{Package figlatex} % \begin{macrocode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We do not want to fail when trying to load a missing subfig. % \@Ginclude@rawtex \def\TD@FL@includerawtexgraphics[#1]#2{% \IfFileExists{#2}{% \TD@orig@FL@includerawtexgraphics[#1]{#2}% }{% \PackageWarning{texdepends}{Figure '#2' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% \TD@missingDepends% \TD@printRequiredFile{#2}{rawtexgraphics}% }% }% \def\TD@Ginclude@rawtex#1{% \IfFileExists{#1}{% \TD@orig@Ginclude@rawtex{#1}% }{% \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% \TD@missingDepends% \TD@printRequiredFile{#1}{rawtex}% }% }% % \@Ginclude@figtex \def\TD@Ginclude@figtex#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Ginclude File '#1' exists}% \TD@orig@Ginclude@figtex{#1}% }{% \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{% \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% }{% \PackageWarning{texdepends}{SubFigure '#1' from \FL@subfig@mainfigname needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% } \TD@missingDepends% \TD@printRequiredFile{#1}{figtex}% }% }% % \@Ginclude@svgtex \def\TD@Ginclude@svgtex#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Ginclude File '#1' exists}% \TD@orig@Ginclude@svgtex{#1}% }{% \ifthenelse{\isundefined{\FL@subfig@mainfigname}}{% \PackageWarning{texdepends}{Figure '#1' needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% }{% \PackageWarning{texdepends}{SubFigure '#1' from \FL@subfig@mainfigname needed\MessageBreak Skipping it this time (the last one however)\MessageBreak}% } \TD@missingDepends% \TD@printRequiredFile{#1}{svgtex}% }% }% % \@Gread@figtex \def\TD@Gread@figtex#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Gread File '#1' exists}% \TD@orig@Gread@figtex{#1}% }{% \PackageWarning{texdepends}{No '#1' file \MessageBreak using 1 for graphic dimensions}% \setbox\@tempboxa\hbox{\relax}% \def\Gin@llx{1}\let\Gin@lly\Gin@llx \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{\ht\@tempboxa}% }% }% % \@Gread@svgtex \def\TD@Gread@svgtex#1{% \IfFileExists{#1}{% %\PackageWarning{texdepends}{Gread File '#1' exists}% \TD@orig@Gread@svgtex{#1}% }{% \PackageWarning{texdepends}{No '#1' file \MessageBreak using 1 for graphic dimensions}% \setbox\@tempboxa\hbox{\relax}% \def\Gin@llx{1}\let\Gin@lly\Gin@llx \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{\ht\@tempboxa}% }% }% % \FL@subfig@check \def\TD@FL@subfig@check#1{% \TD@printRequiredFile{#1}{subfigcheck}% \TD@printSubfig{#1}% }% % \TD@PackagePostDivert{figlatex}{% \TD@docswitch{FL@includerawtexgraphics}% \TD@docswitch{Ginclude@rawtex}% \TD@docswitch{Ginclude@figtex}% \TD@docswitch{Ginclude@svgtex}% \TD@docswitch{Gread@figtex}% \TD@docswitch{Gread@svgtex}% \TD@docswitch{FL@subfig@check}% }% % \end{macrocode} % \subsubsection{Package doc} % \begin{macrocode} \def\TD@PrintIndex{% \TD@printIndexStyle{\jobname}{gind.ist} \TD@printIndexTarget{\jobname}{\jobname.ind} \TD@orig@PrintIndex% }% \def\TD@PrintChanges{% \TD@printGlossaryStyle{\jobname}{gglo.ist} \TD@printGlossaryTarget{\jobname}{\jobname.gls} \TD@orig@PrintChanges% }% \TD@PackagePostDivert{doc}{% \TD@docswitch{PrintIndex}% \TD@docswitch{PrintChanges}% }% % \end{macrocode} % \subsubsection{Package index} % \begin{macrocode} \def\TD@def@index#1#2#3#4{% \TD@printIndex{#2}% \TD@printIndexSource{#2}{\jobname.#3}% \TD@printIndexTarget{#2}{\jobname.#4} \TD@orig@def@index{#1}{#2}{#3}{#4}% }% \TD@PackagePostDivert{index}{% \TD@switch{def@index}% }% % \end{macrocode} % \subsubsection{Package makeidx} % \begin{macrocode} \def\TD@printindex{% \TD@printIndexTarget{\jobname}{\jobname.ind} \TD@orig@printindex% }% \TD@PackagePostDivert{makeidx}{% \TD@docswitch{printindex}% }% % \end{macrocode} % \subsubsection{Package nomencl} % We divert |makeglossary| again after loading this package as its % redefines this macro (loosing our divertion). We also setup the % glossary style for this package. % \begin{macrocode} \def\TD@printglossary{% \TD@printGlossaryTarget{\jobname}{\jobname.gls} \TD@orig@printglossary% }% \TD@PackagePostDivert{nomencl}{% \TD@docswitch{printglossary}% \TD@switch{makeglossary}% \TD@printGlossaryStyle{\jobname}{nomencl.ist} }% % \end{macrocode} % \subsubsection{Package bibtopic} % \begin{macrocode} % For the bibtopic package \def\TD@btSect{% \@ifnextchar[{\TD@btSect@opt}{\TD@btSect@noopt}} \def\TD@btSect@opt[#1]#2{% \TD@bibli@files{#2}% \TD@bibli@style{#1}% \TD@orig@btSect[#1]{#2}} \def\TD@btSect@noopt#1{% \TD@bibli@files{#1}% \TD@orig@btSect{#1}} \def\TD@@bt@write@auxfile{% \TD@printBblfile{\thebtauxfile}% \TD@orig@@bt@write@auxfile% }% \TD@PackagePostDivert{bibtopic}{% \global\let\TD@bibli@bbl\relax% \global\let\TD@biblio@rules@package\TD@biblio@rules@package@bibtopic% \TD@switch{@bt@write@auxfile}% \TD@printOut{btbbl.aux}% \TD@printRebuildRule{bibtopic}% \TD@docswitch{btSect}% }% % \end{macrocode} % \subsubsection{Package comment} % \begin{macrocode} % For the comment package, the |comment.cut| file must not be used as % a dependency: it is read and written several times during a compilation. \TD@PackagePostDivert{comment}{% \TD@printNoDependsFile{comment.cut}% }% % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % \Finale \endinput