diff options
author | Karl Berry <karl@freefriends.org> | 2007-04-28 00:52:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-04-28 00:52:36 +0000 |
commit | ca6449b1a40c3ba024f1819af6ff8b7b2ddc22e6 (patch) | |
tree | bcc1e0c2925ba96fa89e667fbaa9dd847de587a6 | |
parent | 82a154912da337be00dd632c0a3b2534acdf57c0 (diff) |
new package inversepath (26apr07)
git-svn-id: svn://tug.org/texlive/trunk@4204 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-x | Build/cdbuild/ctan2tds.pl | 1 | ||||
-rwxr-xr-x | Build/tools/tpm-ctan-check | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/inversepath/README | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/inversepath/dtx-style.sty | 117 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/inversepath/inversepath.pdf | bin | 0 -> 84415 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/inversepath/inversepath.dtx | 384 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/inversepath/inversepath.ins | 59 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/inversepath/inversepath.sty | 75 | ||||
-rw-r--r-- | Master/texmf-dist/tpm/inversepath.tpm | 31 | ||||
-rw-r--r-- | Master/texmf/lists/inversepath | 9 |
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 Binary files differnew file mode 100644 index 00000000000..5e435519a41 --- /dev/null +++ b/Master/texmf-dist/doc/latex/inversepath/inversepath.pdf 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 |