blob: cc76c8bf2c38f235b873ab0838388b38033ac996 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
%% Copyright (c) 2010-2011 by Martin Scharrer <martin@scharrer-online.de>
%% -----------------------------------------------------------------
%%
%% 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 2006 2011-01-03 22:54:46Z martin $
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{currfile}
[2011/01/03 v0.3 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/03]
\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
\filename@parse{#1}%
\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
\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/03}%
\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'.
|