%% Copyright (c) 2010-2011 by Martin Scharrer %% ----------------------------------------------------------------- %% %% This work 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 2008/05/04 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Martin Scharrer. %% %% This work consists of the files currfile.dtx, currfile.ins %% and the derived file currfile.sty. %% %% $Id: currfile.dtx 2036 2011-01-09 17:51:42Z martin $ \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{currfile} [2011/01/09 v0.4 Current input file name and path] \RequirePackage{kvoptions} \SetupKeyvalOptions{family=currfile,prefix=currfile@} \@ifpackageloaded{fink}{% \DeclareStringOption[\fnk@mainext]{mainext}% \DeclareStringOption[\fnk@maindir]{maindir}% \DeclareBoolOption[true]{fink}% \PackageWarning{currfile}{Deprecated package 'fink' detected. % The 'fink' option will default to 'true'.^^J% If set to 'false' no 'fink' macros will be changed but they will stop working correctly!}% }{% \DeclareStringOption[tex]{mainext}% \DeclareStringOption[\@currdir]{maindir}% \DeclareBoolOption[false]{fink}% }% \DeclareVoidOption{force}{\PassOptionsToPackage{force}{filehook}} \RequirePackage{filehook}[2011/01/09] \ProcessKeyvalOptions*\relax \begingroup \xdef\currfile@mainext{\currfile@mainext}% \xdef\currfile@maindir{\currfile@maindir}% \def\@tempa{./}% \ifx\@tempa\currfile@maindir \global\let\currfile@maindir\empty \fi \endgroup \filehook@prefixwarg\filehook@every@atbegin{% \currfile@push \currfile@set{#1}% } \filehook@appendwarg\filehook@every@atend{% \currfile@pop } \def\currfile@set#1{% \begingroup \edef\@tempa{#1}% \@onelevel@sanitize\@tempa \expandafter\filename@parse\expandafter{\@tempa}% \global\let\currfiledir\filename@area \global\let\currfilebase\filename@base \xdef\currfileext{\ifx\filename@ext\relax tex\else\filename@ext\fi}% \xdef\currfilename{\currfilebase\ifx\currfileext\empty\else.\currfileext\fi}% \xdef\currfilepath{\currfiledir\currfilename}% \endgroup } \def\currfile@push{% \xdef\currfile@stack{% {\currfiledir}% {\currfilebase}% {\currfileext}% \currfile@stack }% } \def\currfile@pop{% \ifx\currfile@stack\empty \PackageWarning{currfile}{File stack underflow!}% \global\let\currfile@stack\currfile@stackinit \fi \expandafter\currfile@pop@\currfile@stack\relax \relax\relax\relax } \def\currfile@pop@#1#2#3#4\relax{% \gdef\currfiledir{#1}% \gdef\currfilebase{#2}% \gdef\currfileext{#3}% \xdef\currfilename{\currfilebase\ifx\currfileext\empty\else.\currfileext\fi}% \xdef\currfilepath{\currfiledir\currfilename}% \gdef\currfile@stack{#4}% } \def\currfile@stack{} \currfile@set{\currfile@maindir\jobname.\currfile@mainext} \currfile@push \let\currfile@stackinit\currfile@stack \newcommand*\ifcurrfilename{\begingroup\currfile@if\currfilename} \newcommand*\ifcurrfilebase{\begingroup\currfile@if\currfilebase} \newcommand*\ifcurrfileext{\begingroup\currfile@if\currfileext} \newcommand*\ifcurrfiledir{\begingroup\currfile@if\currfiledir} \newcommand*\ifcurrfilepath{\begingroup\currfile@if\currfilepath} \newcommand*\ifcurrfile[1]{% \begingroup \edef\@tempb{#1}% \@onelevel@sanitize\@tempb \currfile@if\@tempb } \def\currfile@if#1#2{% \edef\@tempa{#2}% \@onelevel@sanitize\@tempa \ifx\@tempa#1% \endgroup \expandafter\@firstoftwo \else \endgroup \expandafter\@secondoftwo \fi } \ifcurrfile@fink \def\finkfile{\currfilename}% \def\finkdir{\currfiledir}% \def\finkpath{\currfilepath}% \def\finkbase{\currfilebase}% \def\finkext{\currfileext}% \@ifpackageloaded{fink}{% \def\fink@restore#1{}% }{% \@namedef{ver@fink.sty}{2011/01/09}% \expandafter\edef\csname opt@fink.sty\endcsname{% maindir=\currfile@maindir,mainext=\currfile@mainext }% }% \else \@ifpackageloaded{fink}{}{% \AtBeginOfPackageFile{fink}{% \PackageError{currfile}{The 'fink' package is now deprecated. % Load 'currfile' with the 'fink' option or see the upgrade guide in the manual}{}% }% }% \fi \endinput %% %% End of file `currfile.sty'.