summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-04-28 00:52:36 +0000
committerKarl Berry <karl@freefriends.org>2007-04-28 00:52:36 +0000
commitca6449b1a40c3ba024f1819af6ff8b7b2ddc22e6 (patch)
treebcc1e0c2925ba96fa89e667fbaa9dd847de587a6
parent82a154912da337be00dd632c0a3b2534acdf57c0 (diff)
new package inversepath (26apr07)
git-svn-id: svn://tug.org/texlive/trunk@4204 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xBuild/cdbuild/ctan2tds.pl1
-rwxr-xr-xBuild/tools/tpm-ctan-check3
-rw-r--r--Master/texmf-dist/doc/latex/inversepath/README5
-rw-r--r--Master/texmf-dist/doc/latex/inversepath/dtx-style.sty117
-rw-r--r--Master/texmf-dist/doc/latex/inversepath/inversepath.pdfbin0 -> 84415 bytes
-rw-r--r--Master/texmf-dist/source/latex/inversepath/inversepath.dtx384
-rw-r--r--Master/texmf-dist/source/latex/inversepath/inversepath.ins59
-rw-r--r--Master/texmf-dist/tex/latex/inversepath/inversepath.sty75
-rw-r--r--Master/texmf-dist/tpm/inversepath.tpm31
-rw-r--r--Master/texmf/lists/inversepath9
10 files changed, 683 insertions, 1 deletions
diff --git a/Build/cdbuild/ctan2tds.pl b/Build/cdbuild/ctan2tds.pl
index 1430bdfa09e..ffe4d79903e 100755
--- a/Build/cdbuild/ctan2tds.pl
+++ b/Build/cdbuild/ctan2tds.pl
@@ -687,6 +687,7 @@ $standardtex='\.cfg|\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$';
'hyper', '\.sty|\.hyp',
'hyplain', '(hyrules|hy.*plain|hylang)\..*',
'insbox', 'insbox.tex',
+ 'inversepath', 'inversepath.sty', # no dtx-style.sty
'iso10303', 'a.*tex|b.*tex|e.*tex|stp.*tex|\.sty|\.4ht',
'isodate', '\.idf|\.sty',
'isodoc', 'iso.*\.sty', # not mystyle.sty, etc.
diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check
index 2a8360aea30..213a0a74454 100755
--- a/Build/tools/tpm-ctan-check
+++ b/Build/tools/tpm-ctan-check
@@ -58,7 +58,8 @@ my @WorkingTPM = qw(
hyphen-french hyphen-german
hyphen-greek hyphen-italian hyphen-norwegian hyphen-ukenglish
hyphen-usorbian hyplain
- ibygrk icsv IEEEconf IEEEtran ifxetex ijqc inlinebib invoice
+ ibygrk icsv IEEEconf IEEEtran ifxetex ijqc inlinebib inversepath
+ invoice
iopart-num isodoc isorot isotope itnumpar iwona
jeopardy jneurosci jpsj jurabib juramisc
kalender kerkis keystroke koma-script kpfonts
diff --git a/Master/texmf-dist/doc/latex/inversepath/README b/Master/texmf-dist/doc/latex/inversepath/README
new file mode 100644
index 00000000000..dd3c575a833
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/inversepath/README
@@ -0,0 +1,5 @@
+Calculate inverse relative paths. E.g., from
+"/one/two/three.tex" or "/one/two/" to "../../".
+Could be easily converted to Plain TeX if I wasn't lazy.
+
+License: LaTeX Pruject Public License \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/inversepath/dtx-style.sty b/Master/texmf-dist/doc/latex/inversepath/dtx-style.sty
new file mode 100644
index 00000000000..a153eadedf8
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/inversepath/dtx-style.sty
@@ -0,0 +1,117 @@
+\ProvidesPackage{dtx-style}
+
+\errorcontextlines=999
+
+\def\@dotsep{1000}
+\setcounter{tocdepth}{2}
+\setlength\columnseprule{0.4pt}
+\renewcommand\tableofcontents{\relax
+ \begin{multicols}{2}[\section*{\contentsname}]\relax
+ \@starttoc{toc}\relax
+ \end{multicols}}
+
+\setcounter{IndexColumns}{2}
+\renewenvironment{theglossary}
+ {\small\list{}{}
+ \item\relax
+ \glossary@prologue\GlossaryParms
+ \let\item\@idxitem \ignorespaces
+ \def\pfill{\hspace*{\fill}}}
+ {\endlist}
+
+\usepackage[svgnames]{xcolor}
+\usepackage{amsmath,array,bm,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,subfig,topcapt,varioref,\jobname,url}
+
+\usepackage[sc,osf]{mathpazo}
+
+\linespread{1.069} % A bit more space between lines
+\frenchspacing % Remove ugly extra space after punctuation
+
+\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
+\newenvironment{example}[1]
+ {\VerbatimEnvironment
+ \def\Options{#1}%
+ \begin{VerbatimOut}[gobble=2]{\examplefilename}}
+ {\end{VerbatimOut}\relax
+ \typesetexample}
+
+\fvset{formatcom=\color{niceblue}}
+\DefineShortVerb{\|}
+
+\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
+
+\let\examplesize\normalsize
+\let\auxwidth\relax
+
+\newlength\examplewidth\newlength\verbatimwidth
+\newlength\exoutdent \newlength\exverbgap
+\setlength\exverbgap{1em}
+\setlength\exoutdent{-0.15\textwidth}
+\newsavebox\verbatimbox
+\edef\examplefilename{\jobname.example}
+
+\newcommand\typesetexample{\relax
+ \smallskip
+ \noindent
+ \begin{minipage}{\linewidth}
+ \color{niceblue}
+ \hrulefill\par
+ \edef\@tempa{[gobble=0,fontsize=\noexpand\small,\Options]}%
+ \begin{lrbox}{\verbatimbox}\relax
+ \expandafter\BVerbatimInput\@tempa{\examplefilename}%
+ \end{lrbox}
+ \begin{list}{}{\setlength\itemindent{0pt}
+ \setlength\leftmargin\exoutdent
+ \setlength\rightmargin{0pt}}\item
+ \ifx\auxwidth\relax
+ \setlength\verbatimwidth{\wd\verbatimbox}%
+ \else
+ \setlength\verbatimwidth{\auxwidth}%
+ \fi
+ \begin{minipage}[c]{\textwidth-\exoutdent-\verbatimwidth-\exverbgap}
+ \catcode`\%=14\centering\linespread{1.6}\input\examplefilename\relax
+ \end{minipage}\hfill
+ \begin{minipage}[c]{\verbatimwidth}
+ \usebox\verbatimbox
+ \end{minipage}
+ \end{list}
+ \par\noindent\hrulefill
+ \end{minipage}
+ \smallskip}
+
+\newcommand*\setverbwidth[1]{\def\auxwidth{#1}}
+
+\newcommand*\name[1]{{#1}}
+\newcommand*\pkg[1]{\textsf{#1}}
+\newcommand*\feat[1]{\texttt{#1}}
+\newcommand*\opt[1]{\texttt{#1}}
+
+\newcommand*\note[1]{\unskip\footnote{#1}}
+
+\let\latin\textit
+\def\eg{\latin{e.g.}}
+\def\Eg{\latin{E.g.}}
+\def\ie{\latin{i.e.}}
+\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
+
+\def\STIX{\textsc{stix}}
+\def\MacOSX{Mac~OS~X}
+\def\ascii{\textsc{ascii}}
+\def\OMEGA{Omega}
+\def\CTAN{\textsc{ctan}}
+
+\newcounter{argument}
+\g@addto@macro\endmacro{\setcounter{argument}{0}}
+\newcommand*\darg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces}
+\newcommand*\doarg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces}
+
+\def\codeline{\par\hspace{2\parindent}}
+
+\newcommand\unichar[2]{\textsc{\MakeLowercase{u+#1: #2}}}
+
+\setlength\parindent{2em}
+
diff --git a/Master/texmf-dist/doc/latex/inversepath/inversepath.pdf b/Master/texmf-dist/doc/latex/inversepath/inversepath.pdf
new file mode 100644
index 00000000000..5e435519a41
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/inversepath/inversepath.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/inversepath/inversepath.dtx b/Master/texmf-dist/source/latex/inversepath/inversepath.dtx
new file mode 100644
index 00000000000..fb4eb97a5b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/inversepath/inversepath.dtx
@@ -0,0 +1,384 @@
+% \iffalse meta-comment
+%
+% Copyright 2007 by Will Robertson <wspr81@gmail.com>
+%
+% Distributable under the LaTeX Project Public License,
+% version 1.3c or higher (your choice). The latest version of
+% this license is at: http://www.latex-project.org/lppl.txt
+%
+% This work is "maintained" (as per LPPL maintenance status)
+% by Will Robertson.
+%
+% This work consists of the file inversepath.dtx
+% and the derived files inversepath.sty and inversepath.pdf.
+%
+%
+%<*internalbatchfile>
+\begingroup
+%</internalbatchfile>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent
+\preamble
+
+ __________________________________
+ Copyright (C) 2007 Will Robertson
+
+ License information appended.
+
+
+\endpreamble
+\postamble
+
+Copyright (C) 2006 by Will Robertson <wspr81@gmail.com>
+
+Distributable under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status)
+by Will Robertson.
+
+This work consists of the file \jobname.dtx
+ and the derived files \jobname.sty and \jobname.pdf.
+
+\endpostamble
+\askforoverwritefalse
+\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
+\nopreamble\nopostamble
+\generate{\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internalbatchfile>
+\endgroup
+\immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx}
+\immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo}
+%</internalbatchfile>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%\OnlyDescription
+\usepackage{dtx-style}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \GetFileInfo{\jobname.sty}
+% \CheckSum{0}
+% \makeatletter
+%
+% \title{Relative inverse path calculation}
+% \author{Will Robertson}
+% \date{\filedate \qquad \fileversion}
+%
+% \maketitle
+%
+% \noindent
+% \pkg{inversepath} is a simple package to calculate inverse relative paths.
+% For example, when writing to an auxiliary file in a subdirectory
+% (or a series of nested subdirectories), it can be useful to know
+% how to get back to the original file.
+%
+% If the absolute path of the original file is specified, this package
+% can also calculate the relative path of a file in parent or sibling
+% directories.
+%
+% \bigskip
+% {\centering\noindent
+% \cmd\inversepath\marg{path}---expands to the inverse of \meta{path}.\par}
+%
+% \bigskip
+% {\raggedleft\noindent
+% \cmd\absolutepath\marg{abs.\ path}---specifies the absolute
+% path for calculating parent/sibling relative paths.\par}
+%
+% \noindent Regular usage:
+% \begin{example}{}
+% \inversepath{one/two/three/four.tex}\par
+% \ip@lastelement\par
+% \ip@directpath
+% \end{example}
+%
+% \noindent Expands to \meta{empty} if the relative path is the same directory:
+% \begin{example}{}
+% [\inversepath{one.tex}]\par
+% \ip@lastelement\par
+% [\ip@directpath]
+% \end{example}
+%
+% \noindent For `back-relative' paths, the absolute path needs to be specified:
+% \begin{example}{}
+% \absolutepath{/xyz/here/there/everywhere/}
+%
+% \inversepath{../../one/two/three.tex}\par
+% \ip@lastelement\par
+% \ip@directpath
+% \end{example}
+%
+% \noindent That's it!
+%
+% \StopEventually{}
+%
+% \part{\pkg{\jobname} implementation}
+%\iffalse
+%<*package>
+%\fi
+% This is the package.
+% \begin{macrocode}
+\ProvidesPackage{inversepath}
+ [26/04/2007 v0.1 Inverse relative paths]
+% \end{macrocode}
+% \begin{macro}{\inversepath}
+% \darg{Path to invert}
+% \begin{macrocode}
+\newcommand\inversepath[1]{%
+% \end{macrocode}
+% \cmd\ip@jobpath\ is preserved to restore after truncation for
+% back-relative paths.
+% \begin{macrocode}
+ \let\ip@origjobpath\ip@jobpath
+ \let\ip@directpath\@empty
+ \let\ip@inversepath\@empty
+ \ip@strippath#1/\@nil/%
+ \let\ip@jobpath\ip@origjobpath
+ \ip@inversepath}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\absolutepath}
+% \darg{Absolute path used for calculating parent/sibling relative paths.}
+% \begin{macrocode}
+% macro to define the absolute path of where we are:
+\newcommand\absolutepath[1]{\def\ip@jobpath{#1}}
+% \end{macrocode}
+% \end{macro}
+% For \cs{ifx} comparisons for relative back-paths:
+% \begin{macrocode}
+\def\ip@literaldotdot{..}
+% \end{macrocode}
+% \begin{macro}{\ip@strippath}
+% This is the macro that does all the work.
+% It takes input like |a/b/c/...x/y/z/\@nil/| and
+% expands to \cmd\ip@inversepath, the inverse path of \ip@directpath
+% (|a/b/.../y/|).
+% \begin{macrocode}
+\def\ip@strippath#1/#2/{%
+ \ifx\@nil#2\relax
+% \end{macrocode}
+% If input is |z/\@nil/| then we've reached the end:
+% \begin{macrocode}
+ \def\ip@lastelement{#1}%
+ \else
+% \end{macrocode}
+% If we're in the middle of the slash-separated list;
+% build up \cmd\ip@directpath:
+% \begin{macrocode}
+ \edef\ip@directpath{\ip@directpath#1/}
+ \def\@tempa{#1}%
+ \ifx\@tempa\ip@literaldotdot
+ \unless\ifdefined\ip@jobpath
+ \PackageError{inversepath}
+ {No absolute path specified}
+ {You must declare the file path of the main
+ file with \protect\absolutepath{} to be able to
+ resolve back-relative paths}%
+ \fi
+% \end{macrocode}
+% If the path is a back-relative path, things are more complex.
+% to get the inverse of |../|, we need the absolute file path.
+% this requires using \cmd\ip@strippath\ on \cmd\ip@jobpath\ itself, so save out
+% our current definitions of \cmd\ip@directpath/\cmd\ip@inversepath\ and
+% (re-)initialise them:
+% \begin{macrocode}
+ \let\ip@olddirectpath\ip@directpath
+ \let\ip@oldinversepath\ip@inversepath
+ \let\ip@directpath\@empty
+ \let\ip@inversepath\@empty
+% \end{macrocode}
+% \cmd\ip@strippath on \cmd\ip@jobpath\ gives us the topmost directory in
+% \cmd\ip@lastelement:
+% \begin{macrocode}
+ \expandafter\ip@strippath\ip@jobpath\@nil/
+ \let\@tempa\ip@lastelement
+% \end{macrocode}
+% \cmd\ip@jobpath is now truncated so \cmd\iplastelement\ in the next
+% iteration is one folder up the hierarchy.
+% \begin{macrocode}
+ \let\ip@jobpath\ip@directpath
+% \end{macrocode}
+% Now we restore everything to how it was: (this would be better
+% with grouping, but I don't want to use \cmd\global)
+% \begin{macrocode}
+ \let\ip@directpath\ip@olddirectpath
+ \let\ip@inversepath\ip@oldinversepath
+% \end{macrocode}
+% Build up the inverse path:
+% \begin{macrocode}
+ \ifx\@tempa\@empty
+ \PackageError{inversepath}
+ {Absolute path too shallow to resolve
+ such a deep relative path}
+ {You're trying to go back more directories than you have!}
+ \fi
+ \edef\ip@inversepath{\@tempa/\ip@inversepath}%
+ \else
+% \end{macrocode}
+% If the path is a simple relative path,
+% then build up the inverse path by prepending |../|:
+% \begin{macrocode}
+ \edef\ip@inversepath{../\ip@inversepath}%
+ \fi
+% \end{macrocode}
+% Iterate:
+% \begin{macrocode}
+ \def\@tempa{\ip@strippath#2/}%
+ \expandafter\@tempa
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%
+%\iffalse
+%<*dtx-style>
+% \begin{macrocode}
+\ProvidesPackage{dtx-style}
+
+\errorcontextlines=999
+
+\def\@dotsep{1000}
+\setcounter{tocdepth}{2}
+\setlength\columnseprule{0.4pt}
+\renewcommand\tableofcontents{\relax
+ \begin{multicols}{2}[\section*{\contentsname}]\relax
+ \@starttoc{toc}\relax
+ \end{multicols}}
+
+\setcounter{IndexColumns}{2}
+\renewenvironment{theglossary}
+ {\small\list{}{}
+ \item\relax
+ \glossary@prologue\GlossaryParms
+ \let\item\@idxitem \ignorespaces
+ \def\pfill{\hspace*{\fill}}}
+ {\endlist}
+
+\usepackage[svgnames]{xcolor}
+\usepackage{amsmath,array,bm,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,subfig,topcapt,varioref,\jobname,url}
+
+\usepackage[sc,osf]{mathpazo}
+
+\linespread{1.069} % A bit more space between lines
+\frenchspacing % Remove ugly extra space after punctuation
+
+\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
+\newenvironment{example}[1]
+ {\VerbatimEnvironment
+ \def\Options{#1}%
+ \begin{VerbatimOut}[gobble=2]{\examplefilename}}
+ {\end{VerbatimOut}\relax
+ \typesetexample}
+
+\fvset{formatcom=\color{niceblue}}
+\DefineShortVerb{\|}
+
+\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
+
+\let\examplesize\normalsize
+\let\auxwidth\relax
+
+\newlength\examplewidth\newlength\verbatimwidth
+\newlength\exoutdent \newlength\exverbgap
+\setlength\exverbgap{1em}
+\setlength\exoutdent{-0.15\textwidth}
+\newsavebox\verbatimbox
+\edef\examplefilename{\jobname.example}
+
+\newcommand\typesetexample{\relax
+ \smallskip
+ \noindent
+ \begin{minipage}{\linewidth}
+ \color{niceblue}
+ \hrulefill\par
+ \edef\@tempa{[gobble=0,fontsize=\noexpand\small,\Options]}%
+ \begin{lrbox}{\verbatimbox}\relax
+ \expandafter\BVerbatimInput\@tempa{\examplefilename}%
+ \end{lrbox}
+ \begin{list}{}{\setlength\itemindent{0pt}
+ \setlength\leftmargin\exoutdent
+ \setlength\rightmargin{0pt}}\item
+ \ifx\auxwidth\relax
+ \setlength\verbatimwidth{\wd\verbatimbox}%
+ \else
+ \setlength\verbatimwidth{\auxwidth}%
+ \fi
+ \begin{minipage}[c]{\textwidth-\exoutdent-\verbatimwidth-\exverbgap}
+ \catcode`\%=14\centering\linespread{1.6}\input\examplefilename\relax
+ \end{minipage}\hfill
+ \begin{minipage}[c]{\verbatimwidth}
+ \usebox\verbatimbox
+ \end{minipage}
+ \end{list}
+ \par\noindent\hrulefill
+ \end{minipage}
+ \smallskip}
+
+\newcommand*\setverbwidth[1]{\def\auxwidth{#1}}
+
+\newcommand*\name[1]{{#1}}
+\newcommand*\pkg[1]{\textsf{#1}}
+\newcommand*\feat[1]{\texttt{#1}}
+\newcommand*\opt[1]{\texttt{#1}}
+
+\newcommand*\note[1]{\unskip\footnote{#1}}
+
+\let\latin\textit
+\def\eg{\latin{e.g.}}
+\def\Eg{\latin{E.g.}}
+\def\ie{\latin{i.e.}}
+\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
+
+\def\STIX{\textsc{stix}}
+\def\MacOSX{Mac~OS~X}
+\def\ascii{\textsc{ascii}}
+\def\OMEGA{Omega}
+\def\CTAN{\textsc{ctan}}
+
+\newcounter{argument}
+\g@addto@macro\endmacro{\setcounter{argument}{0}}
+\newcommand*\darg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces}
+\newcommand*\doarg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces}
+
+\def\codeline{\par\hspace{2\parindent}}
+
+\newcommand\unichar[2]{\textsc{\MakeLowercase{u+#1: #2}}}
+
+\setlength\parindent{2em}
+
+% \end{macrocode}
+%</dtx-style>
+%\fi
+%
+% \typeout{*************************************************************}
+% \typeout{*}
+% \typeout{* To finish the installation you have to move the following}
+% \typeout{* file into a directory searched by XeTeX:}
+% \typeout{*}
+% \typeout{* \space\space\space inversepath.sty}
+% \typeout{*}
+% \typeout{*************************************************************}
+%
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/inversepath/inversepath.ins b/Master/texmf-dist/source/latex/inversepath/inversepath.ins
new file mode 100644
index 00000000000..2beff053813
--- /dev/null
+++ b/Master/texmf-dist/source/latex/inversepath/inversepath.ins
@@ -0,0 +1,59 @@
+%%
+%% This is file `inversepath.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% inversepath.dtx (with options: `batchfile')
+%%
+%% __________________________________
+%% Copyright (C) 2007 Will Robertson
+%%
+%% License information appended.
+%%
+\input docstrip.tex
+\keepsilent
+\preamble
+
+ __________________________________
+ Copyright (C) 2007 Will Robertson
+
+ License information appended.
+
+\endpreamble
+\postamble
+
+Copyright (C) 2006 by Will Robertson <wspr81@gmail.com>
+
+Distributable under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status)
+by Will Robertson.
+
+This work consists of the file \jobname.dtx
+ and the derived files \jobname.sty and \jobname.pdf.
+
+\endpostamble
+\askforoverwritefalse
+\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
+\nopreamble\nopostamble
+\generate{\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
+\endbatchfile
+%%
+%% Copyright (C) 2006 by Will Robertson <wspr81@gmail.com>
+%%
+%% Distributable under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status)
+%% by Will Robertson.
+%%
+%% This work consists of the file inversepath.dtx
+%% and the derived files inversepath.sty and inversepath.pdf.
+%%
+%%
+%% End of file `inversepath.ins'.
diff --git a/Master/texmf-dist/tex/latex/inversepath/inversepath.sty b/Master/texmf-dist/tex/latex/inversepath/inversepath.sty
new file mode 100644
index 00000000000..dc011e4421f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/inversepath/inversepath.sty
@@ -0,0 +1,75 @@
+%%
+%% This is file `inversepath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% inversepath.dtx (with options: `package')
+%%
+%% __________________________________
+%% Copyright (C) 2007 Will Robertson
+%%
+%% License information appended.
+%%
+\ProvidesPackage{inversepath}
+ [26/04/2007 v0.1 Inverse relative paths]
+\newcommand\inversepath[1]{%
+ \let\ip@origjobpath\ip@jobpath
+ \let\ip@directpath\@empty
+ \let\ip@inversepath\@empty
+ \ip@strippath#1/\@nil/%
+ \let\ip@jobpath\ip@origjobpath
+ \ip@inversepath}
+\newcommand\absolutepath[1]{\def\ip@jobpath{#1}}
+\def\ip@literaldotdot{..}
+\def\ip@strippath#1/#2/{%
+ \ifx\@nil#2\relax
+ \def\ip@lastelement{#1}%
+ \else
+ \edef\ip@directpath{\ip@directpath#1/}
+ \def\@tempa{#1}%
+ \ifx\@tempa\ip@literaldotdot
+ \unless\ifdefined\ip@jobpath
+ \PackageError{inversepath}
+ {No absolute path specified}
+ {You must declare the file path of the main
+ file with \protect\absolutepath{} to be able to
+ resolve back-relative paths}%
+ \fi
+ \let\ip@olddirectpath\ip@directpath
+ \let\ip@oldinversepath\ip@inversepath
+ \let\ip@directpath\@empty
+ \let\ip@inversepath\@empty
+ \expandafter\ip@strippath\ip@jobpath\@nil/
+ \let\@tempa\ip@lastelement
+ \let\ip@jobpath\ip@directpath
+ \let\ip@directpath\ip@olddirectpath
+ \let\ip@inversepath\ip@oldinversepath
+ \ifx\@tempa\@empty
+ \PackageError{inversepath}
+ {Absolute path too shallow to resolve
+ such a deep relative path}
+ {You're trying to go back more directories than you have!}
+ \fi
+ \edef\ip@inversepath{\@tempa/\ip@inversepath}%
+ \else
+ \edef\ip@inversepath{../\ip@inversepath}%
+ \fi
+ \def\@tempa{\ip@strippath#2/}%
+ \expandafter\@tempa
+ \fi}
+%%
+%% Copyright (C) 2006 by Will Robertson <wspr81@gmail.com>
+%%
+%% Distributable under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status)
+%% by Will Robertson.
+%%
+%% This work consists of the file inversepath.dtx
+%% and the derived files inversepath.sty and inversepath.pdf.
+%%
+%%
+%% End of file `inversepath.sty'.
diff --git a/Master/texmf-dist/tpm/inversepath.tpm b/Master/texmf-dist/tpm/inversepath.tpm
new file mode 100644
index 00000000000..08df0ca4949
--- /dev/null
+++ b/Master/texmf-dist/tpm/inversepath.tpm
@@ -0,0 +1,31 @@
+<!DOCTYPE rdf:RDF SYSTEM "../../support/tpm.dtd">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:TPM="http://texlive.dante.de/">
+ <rdf:Description about="http://texlive.dante.de/texlive/Package/inversepath.zip">
+ <TPM:Name>inversepath</TPM:Name>
+ <TPM:Type>Package</TPM:Type>
+ <TPM:Date>2007/04/28 00:51:59</TPM:Date>
+ <TPM:Version></TPM:Version>
+ <TPM:Creator>karl</TPM:Creator>
+ <TPM:Title>The inversepath package.</TPM:Title>
+ <TPM:Description></TPM:Description>
+ <TPM:Author></TPM:Author>
+ <TPM:Size>102828</TPM:Size>
+ <TPM:License></TPM:License>
+ <TPM:Build/>
+ <TPM:RunFiles size="3516">
+texmf-dist/tex/latex/inversepath/inversepath.sty
+texmf-dist/tpm/inversepath.tpm
+ </TPM:RunFiles>
+ <TPM:DocFiles size="87867">
+texmf-dist/doc/latex/inversepath/README
+texmf-dist/doc/latex/inversepath/dtx-style.sty
+texmf-dist/doc/latex/inversepath/inversepath.pdf
+ </TPM:DocFiles>
+ <TPM:SourceFiles size="12601">
+texmf-dist/source/latex/inversepath/inversepath.dtx
+texmf-dist/source/latex/inversepath/inversepath.ins
+ </TPM:SourceFiles>
+ <TPM:Provides>Package/inversepath</TPM:Provides>
+ </rdf:Description>
+</rdf:RDF>
+
diff --git a/Master/texmf/lists/inversepath b/Master/texmf/lists/inversepath
new file mode 100644
index 00000000000..ee4f8b7568c
--- /dev/null
+++ b/Master/texmf/lists/inversepath
@@ -0,0 +1,9 @@
+texmf-dist/doc/latex/inversepath/README
+texmf-dist/doc/latex/inversepath/dtx-style.sty
+texmf-dist/doc/latex/inversepath/inversepath.pdf
+texmf-dist/source/latex/inversepath/inversepath.dtx
+texmf-dist/source/latex/inversepath/inversepath.ins
+texmf-dist/tex/latex/inversepath/inversepath.sty
+texmf-dist/tpm/inversepath.tpm
+
+texmf/lists/inversepath