summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/svn-multi
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-03-26 20:23:52 +0000
committerKarl Berry <karl@freefriends.org>2009-03-26 20:23:52 +0000
commitf8cb44bb3ade5fd393c1006101c81fb35e5eeb17 (patch)
tree17ea9520af628f1207d99850176d5a5aaaa7a1c2 /Master/texmf-dist/tex/latex/svn-multi
parent0bf974abd2b59043cda7dbc9eebc97ff12da391d (diff)
svn-multi needs interaction
git-svn-id: svn://tug.org/texlive/trunk@12524 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/svn-multi')
-rw-r--r--Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty1478
-rw-r--r--Master/texmf-dist/tex/latex/svn-multi/svnkw.sty44
2 files changed, 1522 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty b/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
new file mode 100644
index 00000000000..76550d11554
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
@@ -0,0 +1,1478 @@
+%%
+%% This is file `svn-multi.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% svn-multi.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2006-2009 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.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 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 svn-multi.dtx, svn-multi-pl.dtx, svn-multi.ins
+%% and the derived files svn-multi.sty, svnkw.sty and svn-multi.pl.
+%%
+\def\filedate$#1: #2 #3 #4-#5-#6 #7 ${%
+ \year#4\month#5\day#6\relax
+ \def\filedate{#4/#5/#6}%
+ \def\filerev{#3}%
+}
+\filedate$Id: svn-multi.dtx 621 2009-03-23 12:26:36Z martin $
+\def\fileversion{v2.0}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{svn-multi}
+ [\filedate\space\fileversion\space SVN Keywords for multi-file LaTeX documents]
+
+\RequirePackage{kvoptions}
+
+\SetupKeyvalOptions{%
+ family = svn-multi,
+ prefix = @svnmulti@
+}
+\newif\if@svnmulti@anygraphic
+\newif\if@svnmulti@autoload
+
+\DeclareVoidOption{old}{%
+ \@svnmulti@verbatimtrue
+ \@svnmulti@groupsfalse
+ \@svnmulti@externalfalse
+ \@svnmulti@graphicsfalse
+ \@svnmulti@pgfimagesfalse
+ \@svnmulti@autoloadfalse
+ \@svnmulti@tablefalse
+ \@svnmulti@filehooksfalse
+ \@svnmulti@subgroupsfalse
+}
+\DeclareVoidOption{all}{%
+ \@svnmulti@verbatimtrue
+ \@svnmulti@groupstrue
+ \@svnmulti@externaltrue
+ \@svnmulti@graphicstrue
+ \@svnmulti@pgfimagestrue
+ \@svnmulti@autoloadtrue
+ \@svnmulti@tabletrue
+ \@svnmulti@filehookstrue
+ \@svnmulti@subgroupstrue
+}
+\DeclareBoolOption[true]{verbatim}
+\DeclareBoolOption[false]{groups}
+\DeclareBoolOption[false]{external}
+\DeclareBoolOption[false]{subgroups}
+\DeclareBoolOption[false]{graphics}
+\DeclareBoolOption[false]{pgfimages}
+\DeclareStringOption{autoload}[true]
+\DeclareBoolOption[false]{table}
+\DeclareBoolOption[false]{filehooks}
+
+\ExecuteOptions{old}
+\ProcessKeyvalOptions{svn-multi}
+\def\svn@depoption#1{%
+ \csname if@svnmulti@#1\endcsname\else
+ \message{svn-multi: Required option '#1' enabled.}%
+ \csname @svnmulti@#1true\endcsname
+ \fi
+}
+
+\if@svnmulti@groups
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@external
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@subgroups
+ \svn@depoption{groups}
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@graphics
+ \svn@depoption{external}
+ \svn@depoption{autoload}
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@pgfimages
+ \svn@depoption{external}
+ \svn@depoption{autoload}
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@autoload
+ \svn@depoption{external}
+ \svn@depoption{filehooks}
+\fi
+\if@svnmulti@table
+ \svn@depoption{groups}
+ \svn@depoption{filehooks}
+\fi
+\ifx\@svnmulti@autoload\@undefined
+\else
+\ifx\@svnmulti@autoload\empty
+\else
+\def\svn@temp{true}
+\ifx\@svnmulti@autoload\svn@temp
+ \@svnmulti@autoloadtrue
+ \svn@depoption{external}
+ \svn@depoption{filehooks}
+\else
+\def\svn@temp{false}
+\ifx\@svnmulti@autoload\svn@temp
+ \if@svnmulti@autoload
+ \PackageWarning{svn-multi}{Option 'autoload' disabled.}
+ \fi
+ \@svnmulti@autoloadfalse
+\else
+ \PackageError{svn-multi}%
+ {Invalid value for 'autoload' option: '\@svnmulti@autoload'^^J%
+ ! Only 'true','false' or empty (='true') are allowed!}
+\fi\fi\fi\fi
+
+\if@svnmulti@graphics
+ \@svnmulti@anygraphictrue
+\fi
+\if@svnmulti@pgfimages
+ \@svnmulti@anygraphictrue
+\fi
+
+\def\svn@ifempty#1{%
+ \begingroup
+ \edef\svn@temp{#1}%
+ \ifx\svn@temp\empty
+ \endgroup
+ \expandafter
+ \@firstoftwo
+ \else
+ \endgroup
+ \expandafter
+ \@secondoftwo
+ \fi
+}
+
+\def\svn@ifequal#1#2{%
+ \begingroup
+ \edef\svn@stringa{#1}%
+ \edef\svn@stringb{#2}%
+ \ifx\svn@stringa\svn@stringb
+ \endgroup
+ \expandafter
+ \@firstoftwo
+ \else
+ \endgroup
+ \expandafter
+ \@secondoftwo
+ \fi
+}
+
+\def\svn@ifvalidrev#1{%
+ \begingroup
+ \@ifundefined{#1}%
+ {\def\svn@temp{-1}}%
+ {\expandafter\edef
+ \expandafter\svn@temp\expandafter{\csname #1\endcsname}}%
+ \ifnum\svn@temp>-1\relax
+ \endgroup
+ \expandafter
+ \@firstoftwo
+ \else
+ \endgroup
+ \expandafter
+ \@secondoftwo
+ \fi
+}
+\def\svn@input#1{%
+ \begingroup
+ \let\svn@rg\svn@g
+ \IfFileExists{#1}{\@@input #1\relax}{}%
+ \global\let\svn@g\svn@rg
+ \endgroup
+}
+\def\svn@inputsvx#1{%
+ \svn@pushfilestack
+ \svn@input{#1.svx}%
+ \svn@popfilestack
+}
+\providecommand\@namexdef[1]{%
+ \expandafter\xdef\csname #1\endcsname
+}
+
+\def\svnrev{-1} \def\@svn@rev{-1}
+\def\svndate{} \def\@svn@date{}
+\def\svnauthor{} \def\@svn@author{}
+\def\svnyear{0000} \def\@svn@year{0000}
+\def\svnmonth{00} \def\@svn@month{00}
+\def\svnday{00} \def\@svn@day{00}
+\def\svnhour{00} \def\@svn@hour{00}
+\def\svnminute{00} \def\@svn@minute{00}
+\def\svnsecond{00} \def\@svn@second{00}
+\def\svntimezonehour{+00} \def\@svn@timezonehour{+00}
+\def\svntimezoneminute{00} \def\@svn@timezoneminute{00}
+\def\svnmainurl{NOT SET} \def\svnmainfilename{NOT SET}
+\def\svnurl{} \def\svnfname{}
+\def\svn@temp{}
+
+\def\svn@pg{} \def\svn@g{} \def\svn@cg{\svn@g}
+\let\@svng@@files\relax
+
+\def\svn@initfile{%
+ \gdef\svnfilerev{-1}%
+ \gdef\svnfiledate{}%
+ \gdef\svnfileauthor{}%
+ \gdef\svnfileyear{0000}%
+ \gdef\svnfilemonth{00}%
+ \gdef\svnfileday{00}%
+ \gdef\svnfilehour{00}%
+ \gdef\svnfileminute{00}%
+ \gdef\svnfilesecond{00}%
+ \gdef\svnfiletimezonehour{+00}%
+ \gdef\svnfiletimezoneminute{00}%
+ \gdef\svnfileurl{}%
+ \gdef\svnfilefname{}%
+}
+\svn@initfile
+\def\svntimezone{\svntimezonehour\svntimezoneminute\svn@gobblezeros}
+\def\svnfiletimezone{\svnfiletimezonehour\svnfiletimezoneminute\svn@gobblezeros}
+\def\svncgtimezone{\svncgtimezonehour\svncgtimezoneminute}
+
+\def\svn@gobblezeros{%
+ \futurelet\svn@nextchar\svn@gobblezeros@
+}
+\def\svn@gobblezeros@{%
+ \let\@tempa=\relax
+ \def\@tempb{0}%
+ \ifx0\svn@nextchar
+ \let\@tempa=\@gobbletwo
+ \fi
+ \@tempa
+}
+
+\def\svntime{\svnhour:\svnminute:\svnsecond}
+\def\svnfiletime{\svnfilehour:\svnfileminute:\svnfilesecond}
+\def\svncgtime{\svncghour:\svncgminute:\svncgsecond}
+
+\newcommand*{\svntoday}{%
+ \begingroup
+ \year\svnyear \month\svnmonth \day\svnday
+ \relax \today
+ \endgroup
+}
+\newcommand*{\svnfiletoday}{%
+ \begingroup
+ \year\svnfileyear \month\svnfilemonth \day\svnfileday
+ \relax \today
+ \endgroup
+}
+\newcommand*{\svncgtoday}{%
+ \@ifundefined{svng@\svn@cg @year}{??}{%
+ \begingroup
+ \year\svncgyear \month\svncgmonth \day\svncgday
+ \relax \today
+ \endgroup
+ }%
+}%
+
+\newcommand*{\svnid}{%
+ \@svnidswtrue
+ \svnkwsave
+}
+\newif\if@svnidsw
+\@svnidswfalse
+
+\def\svn@scanId#1 #2 #3 #4 #5\relax{%
+ \@svn@scandate{#3 #4}%
+ \@svn@updateid{#2}{#3 #4}{#5}{#1}%
+ \svnkwdef{Filename}{#1}%
+ \svnkwdef{Date}{#3 #4}%
+ \svnkwdef{Revision}{#2}%
+ \svnkwdef{Author}{#5}%
+}
+
+\def\@svn@updateid#1#2#3#4{%
+ \xdef\svnfilerev{#1}%
+ \xdef\svnfiledate{#2}%
+ \xdef\svnfileauthor{#3}%
+ \xdef\svnfileurl{#4}%
+ \svn@getfilename\svnfileurl%
+ \ifx\svnfilerev\empty\else
+ \ifnum\@svn@rev<\svnfilerev
+ \xdef\@svn@rev{\svnfilerev}%
+ \xdef\@svn@date{\svnfiledate}%
+ \xdef\@svn@author{\svnfileauthor}%
+ \xdef\@svn@year{\svnfileyear}%
+ \xdef\@svn@month{\svnfilemonth}%
+ \xdef\@svn@day{\svnfileday}%
+ \xdef\@svn@hour{\svnfilehour}%
+ \xdef\@svn@minute{\svnfileminute}%
+ \xdef\@svn@second{\svnfilesecond}%
+ \xdef\@svn@timezonehour{\svnfiletimezonehour}%
+ \xdef\@svn@timezoneminute{\svnfiletimezoneminute}%
+ \xdef\@svn@url{\svnfileurl}%
+ \xdef\@svn@fname{\svnfilefname}%
+ \fi
+
+ \if@svnmulti@groups
+ \ifx\svn@g\empty\else
+ \svn@updategroup{\svn@g}%
+ \fi
+ \if@svnmulti@subgroups
+ \ifsvnsubgroups
+ \svn@updategroup{\svn@filedir\svn@filebase}%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+\def\@svncg@save#1#2{%
+ \expandafter\xdef\csname @svng@\svn@g @#1\endcsname{#2}%
+}
+
+
+\newcommand{\svnidlong}{%
+ \svnkwdef{HeadURL}{}%
+ \svnkwdef{LastChangedDate}{}%
+ \svnkwdef{LastChangedRevision}{0}%
+ \svnkwdef{LastChangedBy}{}%
+ \begingroup
+ \if@svnmulti@verbatim
+ \svn@catcodes
+ \catcode`\{=12
+ \catcode`\}=12
+ \else
+ \def\svnidlong@readargsfull{\svnidlong@readargs}%
+ \fi
+ \svnidlong@readargsfull
+}
+
+\if@svnmulti@verbatim
+\def\svn@catcodes{%
+ \let\do\@makeother
+ \dospecials
+ \catcode`\^^M9
+ \catcode`\ 10
+ \catcode`\{1
+ \catcode`\}2
+}
+\else
+ \def\svn@catcodes{}
+\fi
+
+\if@svnmulti@verbatim
+\begingroup
+\catcode`\{=12\catcode`\}=12
+\catcode`\(=1\catcode`\)=2
+\gdef\svnidlong@readargsfull#1{#2}#3{#4}#5{#6}#7{#8}(%
+ \svnidlong@readargs(#2)(#4)(#6)(#8)%
+)
+\endgroup
+\fi
+
+\def\svnidlong@readargs#1#2#3#4{%
+ \svnkwsave@read #1\relax
+ \svnkwsave@read #2\relax
+ \svnkwsave@read #3\relax
+ \svnkwsave@read #4\relax
+ \endgroup
+ \ifx\svnkwLastChangedDate\empty\else
+ \@svn@scanlongdate{\svnkwLastChangedDate}%
+ \fi
+ \@svn@updateid{\svnkw{LastChangedRevision}}{\svnkw{LastChangedDate}}%
+ {\svnkw{LastChangedBy}}{\svnkw{HeadURL}}%
+ \ignorespaces
+}%
+
+\def\svnkwsave{%
+ \begingroup
+ \svn@catcodes
+ \svnkwsave@readargs
+}
+
+\gdef\svnkwsave@readargs#1{%
+ \svnkwsave@read#1\relax
+ \endgroup
+ \if@svnidsw
+ \ifx\svnkwId\empty\else
+ \expandafter
+ \svn@scanId\svnkwId\relax
+ \@svnidswfalse
+ \fi
+ \fi
+ \ignorespaces
+}
+
+\begingroup
+\if@svnmulti@verbatim
+\catcode`\$=12
+\fi
+\gdef\svnkwsave@read $#1$\relax{%
+ \svn@checkcolon#1:\relax
+}
+\endgroup
+
+\begingroup
+\catcode`\$=11
+\gdef\svnkwsave@parse$#1:#2${%
+ \expandafter\xdef\csname svnkw#1\endcsname{#2}%
+}%
+\endgroup
+
+\newcommand{\svnkwdef}[2]{%
+ \@ifundefined{svnkwdef@#1}%
+ {\svnkwdef@{#1}{#2}}%
+ {\csname svnkwdef@#1\endcsname{#2}}%
+}
+
+\newcommand{\svnkwdef@}[2]{%
+ \expandafter\xdef\csname svnkw#1\endcsname{#2}%
+}
+
+\def\svnkwdef@Rev#1{%
+ \svn@ifempty{#1}%
+ {\svnkwdef@{Rev}{0}}%
+ {\svnkwdef@{Rev}{#1}}%
+}
+\def\svnkwdef@Author#1{\svnkwdef@{Author}{#1}}
+\def\svnkwdef@Date#1{\svnkwdef@{Date}{#1}}
+\def\svnkwdef@URL#1{\svnkwdef@{HeadURL}{#1}}
+\let\svnkwdef@Revision=\svnkwdef@Rev
+\let\svnkwdef@LastChangedRevision=\svnkwdef@Rev
+\let\svnkwdef@LastChangedBy=\svnkwdef@Author
+\let\svnkwdef@LastChangedAt=\svnkwdef@Date
+\def\svnkwRevision{\svnkwRev}
+\def\svnkwLastChangedRevision{\svnkwRev}
+\def\svnkwLastChangedBy{\svnkwAuthor}
+\def\svnkwLastChangedAt{\svnkwDate}
+\def\svnkwURL{\svnkwHeadURL}
+
+\svnkwdef{Rev}{0}
+\svnkwdef{Date}{}
+\svnkwdef{Author}{}
+\svnkwdef{Filename}{}
+\svnkwdef{HeadURL}{}
+
+\newcommand{\svnkw}[1]{%
+ \@ifundefined{svnkw#1}%
+ {\PackageWarning{svn-multi}{SVN keyword '#1' not defined (typo?)}}%
+ {\csname svnkw#1\endcsname}%
+}%
+
+\def\svn@checkcolon#1:#2\relax{%
+ \svn@ifempty{#2}%
+ {\svnkwdef{#1}{}}%
+ {\svn@stripcolon#2\relax\svnkwdef{#1}{\svn@value}}%
+}
+
+\def\svn@stripcolon#1:\relax{%
+ \svn@ifempty{#1}%
+ {\gdef\svn@value{}}%
+ {\svn@ifequal{#1}{ }%
+ {\gdef\svn@value{}}%
+ {\svn@stripspace#1\relax\relax}%
+ }%
+}
+
+\def\svn@stripspace#1#2\relax{%
+ \svn@ifequal{#1}{ }%
+ {\gdef\svn@value{#2}}%
+ {\svn@striptrailingspace#1#2\relax}%
+}
+
+\def\svn@striptrailingspace#1 \relax{%
+ \gdef\svn@value{#1}%
+}
+
+\def\svn@gdefverb#1{%
+ \begingroup
+ \def\svn@temp{#1}%
+ \begingroup
+ \if@svnmulti@verbatim
+ \svn@catcodes
+ \fi
+ \svn@gdefverb@
+}
+
+\def\svn@gdefverb@#1{%
+ \endgroup
+ \expandafter\gdef\svn@temp{#1}%
+ \endgroup
+}
+
+\def\svn@namegdefverb#1{%
+ \begingroup
+ \expandafter\def
+ \expandafter\svn@temp
+ \expandafter{\csname #1\endcsname}%
+ \begingroup
+ \if@svnmulti@verbatim
+ \svn@catcodes
+ \fi
+ \svn@gdefverb@
+}
+
+\def\@svn@scandate#1{\@svn@scandate@#1\relax}
+
+\def\@svn@scandate@#1-#2-#3 #4:#5:#6#7#8\relax{%
+ \gdef\svnfileyear{#1}%
+ \gdef\svnfilemonth{#2}%
+ \gdef\svnfileday{#3}%
+ \gdef\svnfilehour{#4}%
+ \gdef\svnfileminute{#5}%
+ \gdef\svnfilesecond{#6#7}%
+ \gdef\svnfiletimezonehour{+00}%
+ \gdef\svnfiletimezoneminute{00}% #8 always 'Z' for Zulu-time (UTC)
+}
+
+\def\@svn@scanlongdate#1{\expandafter\@svn@scanlongdate@#1\relax}
+\def\@svn@scanlongdate@#1-#2-#3 #4:#5:#6 #7 #8\relax{%
+ \gdef\svnfileyear{#1}%
+ \gdef\svnfilemonth{#2}%
+ \gdef\svnfileday{#3}%
+ \gdef\svnfilehour{#4}%
+ \gdef\svnfileminute{#5}%
+ \gdef\svnfilesecond{#6}%
+ \@svn@parsetimezone#7\relax%
+}
+
+\def\@svn@parsetimezone#1#2#3#4#5\relax{%
+ \gdef\svnfiletimezonehour{#1#2#3}%
+ \gdef\svnfiletimezoneminute{#4#5}%
+}
+
+\def\svnpdfdate{%
+ \svnyear\svnmonth\svnday
+ \svnhour\svnminute\svnsecond\svntimezonehour'\svntimezoneminute'%
+}
+
+\newcommand{\svnsetmainfile}{%
+ \xdef\svnmainurl{\svnfileurl}%
+ \xdef\svnmainfilename{\svnfilefname}%
+}
+\AtBeginDocument{\svnsetmainfile}
+
+\newcommand{\svnRegisterAuthor}[2]{%
+ \expandafter\def\csname svn@author@#1\endcsname{#2}%
+}
+
+\newcommand{\svnFullAuthor}{%
+ \@ifnextchar{*}%
+ {\svnFullAuthor@star}%
+ {\svnFullAuthor@normal}%
+}%
+\def\svnFullAuthor@star*#1{%
+ \edef\svn@temp{#1}%
+ \svnFullAuthor@{\svn@temp}{~(\svn@temp)}%
+}%
+\def\svnFullAuthor@normal#1{%
+ \edef\svn@temp{#1}%
+ \svnFullAuthor@{\svn@temp}{}%
+}%
+\def\svnFullAuthor@#1#2{%
+ \@ifundefined{svn@author@#1}%
+ {#1}%
+ {\csname svn@author@#1\endcsname #2}%
+}
+
+\newcommand{\svnRegisterRevision}[2]{%
+ \expandafter\def\csname svn@revision@#1\endcsname{#2}%
+}
+
+\newcommand{\svnFullRevision}{%
+ \@ifnextchar{*}%
+ {\svnFullRevision@star}%
+ {\svnFullRevision@normal}%
+}
+\def\svnFullRevision@star*#1{%
+ \edef\svn@temp{#1}%
+ \svnFullRevision@{\svn@temp}{~(r\svn@temp)}%
+}
+\def\svnFullRevision@normal#1{%
+ \edef\svn@temp{#1}%
+ \svnFullRevision@{\svn@temp}{}%
+}
+\def\svnFullRevision@#1#2{%
+ \@ifundefined{svn@revision@#1}%
+ {Revision #1}%
+ {\csname svn@revision@#1\endcsname #2}%
+}
+
+\if@svnmulti@filehooks
+
+\RequirePackage{fink}[2008/02/27]
+\begingroup
+\def\svn@finkerror{%
+\PackageError{svn-multi}{Your installed version of the 'fink' package does not
+provide the needed macros. It is either too old or too new.
+Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
+\let\svn@finkerror\relax
+}
+\@ifundefined{finkpath}{\svn@finkerror}{}%
+\@ifundefined{finkdir}{\svn@finkerror}{}%
+\@ifundefined{finkbase}{\svn@finkerror}{}%
+\@ifundefined{fink@prepare}{\svn@finkerror}{}%
+\@ifundefined{fink@restore}{\svn@finkerror}{}%
+\@ifundefined{fnk@maindir}{\svn@finkerror}{}%
+\@ifundefined{fnk@mainext}{\svn@finkerror}{}%
+\endgroup
+
+\def\svn@removedotslash#1{%
+ \def\svn@removedotslash@##1##2##3\relax{%
+ \svn@ifequal{./}{##1##2}%
+ {\edef#1{##3}\def\next{\svn@removedotslash@##3\empty\empty\empty\relax}}%
+ {\edef#1{##1##2##3}\let\next\relax}%
+ \next
+ }%
+ \expandafter\svn@removedotslash@#1\empty\empty\empty\relax
+}
+
+\let\svn@mainext\fnk@mainext
+\let\svn@maindir\fnk@maindir
+\svn@removedotslash\svn@maindir
+\edef\svn@filebase{\jobname}%
+\edef\svn@fileext{\svn@mainext}%
+\edef\svn@filedir{\svn@maindir}%
+\def\svn@filename{\fink@file\svn@filebase\svn@fileext}%
+\def\svn@filepath{\svn@filedir\svn@filename}%
+
+\def\svnmulti@begininputfilehook{}
+\message{Package svn-multi: patching macro '\string\fink@prepare' from the
+'fink' package!}%
+\let\svnmulti@fink@prepare\fink@prepare
+\renewcommand*{\fink@prepare}[1]{%
+ \svnmulti@fink@prepare{#1}%
+ \if@svnmulti@groups
+ \svn@ifequal{\svn@filepath}{\jobname.\svn@mainext}%
+ {\global\let\svn@pg\svn@g}%
+ {\xdef\svn@pg{\svn@filedir\svn@filebase}}%
+ \fi
+ \xdef\svn@filebase{\fink@nextbase}%
+ \xdef\svn@fileext{\fink@nextext}%
+ \xdef\svn@filedir{\fink@nextdir}%
+ \svn@removedotslash\svn@filedir
+ \svnmulti@begininputfilehook
+}%
+
+\def\svnmulti@endinputfilehook{}
+\message{Package svn-multi: patching macro '\string\fink@restore' from the
+'fink' package!}%
+\let\svnmulti@fink@restore\fink@restore
+\def\fink@restore#1{%
+ \svnmulti@endinputfilehook
+ \svnmulti@fink@restore{#1}%
+ \xdef\svn@filebase{\finkbase}%
+ \xdef\svn@fileext{\finkext}%
+ \xdef\svn@filedir{\finkdir}%
+ \svn@removedotslash\svn@filedir
+}%
+
+\def\svnmulti@atbegininputfile{%
+ \g@addto@macro\svnmulti@begininputfilehook
+}
+
+\long\def\svnmulti@atendinputfile#1{%
+ \begingroup
+ \@temptokena\expandafter{\svnmulti@endinputfilehook}%
+ \toks@{#1}%
+ \xdef\svnmulti@endinputfilehook{\the\toks@\the\@temptokena}%
+ \endgroup
+}
+
+\def\svn@filestack{{}}
+
+\def\svn@pushfilestack{%
+ \xdef\svn@filestack{{%
+ {\svnfilerev}%
+ {\svnfiledate}%
+ {\svnfileauthor}%
+ {\svnfileyear}%
+ {\svnfilemonth}%
+ {\svnfileday}%
+ {\svnfilehour}%
+ {\svnfileminute}%
+ {\svnfilesecond}%
+ {\svnfiletimezonehour}%
+ {\svnfiletimezoneminute}%
+ {\svnfileurl}%
+ {\svnfilefname}%
+ {\svn@g}%
+ {\svn@pg}%
+ }\svn@filestack}%
+}
+
+\def\svn@restorefilekws#1#2\relax{%
+ \svn@restorefilekws@#1\empty
+ \empty \empty \empty \empty
+ \empty \empty \empty \empty
+ \empty \empty \empty \empty
+ \svn@ifempty{#2}%
+ {\gdef\svn@filestack{{}}}%
+ {\gdef\svn@filestack{#2}}%
+}
+\def\svn@restorefilekws@#1#2#3#4#5#6#7#8#9{%
+ \gdef\svnfilerev{#1}%
+ \gdef\svnfiledate{#2}%
+ \gdef\svnfileauthor{#3}%
+ \gdef\svnfileyear{#4}%
+ \gdef\svnfilemonth{#5}%
+ \gdef\svnfileday{#6}%
+ \gdef\svnfilehour{#7}%
+ \gdef\svnfileminute{#8}%
+ \gdef\svnfilesecond{#9}%
+ \svn@restorefilekws@@
+}
+
+\def\svn@restorefilekws@@#1#2#3#4#5#6{%
+ \gdef\svnfiletimezonehour{#1}%
+ \gdef\svnfiletimezoneminute{#2}%
+ \gdef\svnfileurl{#3}%
+ \gdef\svnfilefname{#4}%
+ \gdef\svn@g{#5}%
+ \gdef\svn@pg{#6}%
+}
+
+\def\svn@popfilestack{%
+ \ifx\svn@filestack\empty
+ \PackageWarning{svn-multi}{Underflow of file keyword stack!}%
+ \else
+ \svn@ifequal{\svn@filestack}{{}}%
+ {\PackageWarning{svn-multi}{Underflow of file keyword stack!}}%
+ {\expandafter\svn@restorefilekws\svn@filestack\relax}%
+ \fi
+}
+
+\svnmulti@atbegininputfile{%
+ \svn@pushfilestack
+}
+
+\svnmulti@atendinputfile{%
+ \svn@popfilestack
+}%
+
+\fi
+
+\if@svnmulti@groups
+\let\svn@glist=\empty
+
+\def\svngroup#1{%
+ \svn@ifequal{#1}{*}%
+ {\PackageError{svn-multi}%
+ {The group name '*' is invalid for '\string\svngroup'}{}{}%
+ }{}%
+ \xdef\svn@g{#1}%
+ \let\svn@pg\svn@g
+ \ifx\svn@g\empty\else%
+ \expandafter
+ \ifx\csname @svng@\svn@g @rev\endcsname\relax%
+ \svn@initgroup{\svn@g}%
+ \ifx\svn@glist\empty
+ \xdef\svn@glist{#1}%
+ \else
+ \xdef\svn@glist{\svn@glist,#1}%
+ \fi
+ \fi
+ \fi
+}
+
+\def\thesvngroup{\svn@g}
+
+\def\svnsetcg#1{%
+ \svn@ifequal{#1}{*}%
+ {\def\svn@cg{\svn@g}}%
+ {\def\svn@cg{#1}}%
+}
+
+\def\svncg@def#1{%
+ \expandafter
+ \def\csname svncg#1\endcsname{%
+ \@ifundefined{svng@\svn@cg @#1}{??}{%
+ \csname svng@\svn@cg @#1\endcsname}%
+ }%
+}
+
+\@for\@tempa:=%
+ rev,author,date,year,month,day,hour,minute,second,%
+ timezonehour,timezoneminute,url,fname%
+\do{%
+ \expandafter\svncg@def\expandafter{\@tempa}%
+}
+
+\def\thesvncg{\svn@cg}
+
+\def\svng#1#2{%
+ \@ifundefined{svng@\svn@temp @#2}%
+ {??}%
+ {\csname svng@\svn@temp @#2\endcsname}%
+}
+
+\def\svn@addfiletogroup#1#2{%
+ \expandafter
+ \ifx\csname @svng@#2@files@#1\endcsname\relax%
+ \expandafter\gdef\csname @svng@#2@files@#1\endcsname{1}%
+ %
+ \@ifundefined{@svng@#2@files}%
+ {\expandafter\xdef\csname @svng@#2@files\endcsname{#1}}%
+ {\expandafter\xdef\csname @svng@#2@files\endcsname{%
+ \csname @svng@#2@files\endcsname,#1%
+ }%
+ }%
+ \fi
+}
+
+\svnmulti@atbegininputfile{%
+ \svn@ifequal{\svn@filepath}{\svn@maindir\jobname.\svn@mainext}%
+ {}%
+ {\svn@initfile}%
+ \svn@ifequal{\svn@fileext}{\svn@mainext}%
+ {\svn@addfiletogroup{\svn@filedir\svn@filebase}{\svn@pg}}{}%
+ \svn@ifequal{\svn@fileext}{sty}%
+ {\svn@addfiletogroup{\svn@filedir\svn@filebase}{\svn@pg}}{}%
+ \svn@ifequal{\svn@fileext}{cls}%
+ {\svn@addfiletogroup{\svn@filedir\svn@filebase}{\svn@pg}}{}%
+ \svn@addfiletogroup{\svn@filepath}{\svn@filedir\svn@filebase}%
+}
+
+\def\svn@writegroup#1{%
+ \def\svn@writekw##1{%
+ \immediate\write\svn@write{%
+ \noexpand\@namedef{svng@#1@##1}{\csname @svng@#1@##1\endcsname}%
+ }%
+ }%
+ \svn@writekw{rev}%
+ \svn@writekw{date}%
+ \svn@writekw{author}%
+ \svn@writekw{year}%
+ \svn@writekw{month}%
+ \svn@writekw{day}%
+ \svn@writekw{hour}%
+ \svn@writekw{minute}%
+ \svn@writekw{second}%
+ \svn@writekw{timezonehour}%
+ \svn@writekw{timezoneminute}%
+ \@ifundefined{@svng@#1@files}{}{%
+ \immediate\write\svn@write{%
+ \noexpand
+ \svn@namegdefverb{svng@#1@files}{\csname @svng@#1@files\endcsname}%
+ }%
+ }%
+ \immediate\write\svn@write{%
+ \noexpand
+ \svn@namegdefverb{svng@#1@url}{\csname @svng@#1@url\endcsname}^^J%
+ \noexpand
+ \svn@namegdefverb{svng@#1@fname}{\csname @svng@#1@fname\endcsname}^^J%
+ }%
+}
+\def\svn@writeallgroups#1{%
+ \begingroup
+ \ifx\relax#1\relax\else
+ \@for\svn@temp:=#1\do{%
+ \svn@ifvalidrev{@svng@\svn@temp @rev}%
+ {%
+ \expandafter
+ \svn@cleanfilelist\csname @svng@\svn@temp @files\endcsname
+ \svn@writegroup{\svn@temp}%
+ \@ifundefined{@svng@\svn@temp @files}{}%
+ {\expandafter\svn@writeallgroups
+ \csname @svng@\svn@temp @files\endcsname
+ }%
+ }{}%
+ }%
+ \fi
+ \endgroup
+}
+
+\def\svn@updategroup#1{%
+ \@ifundefined{@svng@#1@rev}%
+ {\svn@initgroup{#1}}%
+ {}%
+ \expandafter
+ \ifnum\csname @svng@#1@rev\endcsname<\svnfilerev
+ \svn@gkwset{#1}{rev}{\svnfilerev}%
+ \svn@gkwset{#1}{date}{\svnfiledate}%
+ \svn@gkwset{#1}{author}{\svnfileauthor}%
+ \svn@gkwset{#1}{year}{\svnfileyear}%
+ \svn@gkwset{#1}{month}{\svnfilemonth}%
+ \svn@gkwset{#1}{day}{\svnfileday}%
+ \svn@gkwset{#1}{hour}{\svnfilehour}%
+ \svn@gkwset{#1}{minute}{\svnfileminute}%
+ \svn@gkwset{#1}{second}{\svnfilesecond}%
+ \svn@gkwset{#1}{timezonehour}{\svnfiletimezonehour}%
+ \svn@gkwset{#1}{timezoneminute}{\svnfiletimezoneminute}%
+ \svn@gkwset{#1}{url}{\svnfileurl}%
+ \svn@gkwset{#1}{fname}{\svnfilefname}%
+ \fi
+}
+
+\def\svn@definegroup#1{%
+ \svn@gkwdef{#1}{rev}%
+ \svn@gkwdef{#1}{date}%
+ \svn@gkwdef{#1}{author}%
+ \svn@gkwdef{#1}{year}%
+ \svn@gkwdef{#1}{month}%
+ \svn@gkwdef{#1}{day}%
+ \svn@gkwdef{#1}{hour}%
+ \svn@gkwdef{#1}{minute}%
+ \svn@gkwdef{#1}{second}%
+ \svn@gkwdef{#1}{timezonehour}%
+ \svn@gkwdef{#1}{timezoneminute}%
+ \svn@gkwdef{#1}{url}%
+ \svn@gkwdef{#1}{fname}%
+}
+
+\def\svn@initgroup#1{%
+ \svn@gkwset{#1}{rev}{-1}%
+ \svn@gkwset{#1}{date}{}%
+ \svn@gkwset{#1}{author}{}%
+ \svn@gkwset{#1}{year}{0000}%
+ \svn@gkwset{#1}{month}{00}%
+ \svn@gkwset{#1}{day}{00}%
+ \svn@gkwset{#1}{hour}{00}%
+ \svn@gkwset{#1}{minute}{00}%
+ \svn@gkwset{#1}{second}{00}%
+ \svn@gkwset{#1}{timezonehour}{+00}%
+ \svn@gkwset{#1}{timezoneminute}{00}%
+ \svn@gkwset{#1}{url}{}%
+ \svn@gkwset{#1}{fname}{}%
+}
+
+\def\svn@gkwset#1#2#3{%
+ \expandafter
+ \xdef\csname @svng@#1@#2\endcsname{#3}%
+}
+
+\def\svn@gkwdef#1#2{%
+ \expandafter
+ \xdef\csname svng@#1@#2\endcsname{\csname @svng@#1@#2\endcsname}%
+}
+
+\def\svn@cleanfilelist#1{
+ \begingroup
+ \def\svn@tmplist{}%
+ \ifx\relax#1\relax\else
+ \@for\svn@temp:=#1\do{%
+ \expandafter\svn@ifvalidrev
+ \expandafter{@svng@\svn@temp @rev}%
+ {\edef\svn@tmplist{\svn@tmplist,\svn@temp}}%
+ {}%
+ }%
+ \xdef#1{\expandafter\@gobble\svn@tmplist\empty}%
+ \fi
+ \endgroup
+}
+
+\fi
+
+
+\newif\ifsvnsubgroups
+\svnsubgroupsfalse
+
+\if@svnmulti@subgroups
+\svnsubgroupstrue
+
+\def\svnsubgroup{%
+ \begingroup
+ \svn@removedotslash\svn@filedir
+ \svn@subgroup{\svn@filedir\svn@filebase}%
+ \svn@subgroup{\svn@filepath}%
+ \endgroup
+}
+
+\def\svn@subgroup#1{%
+ \ifnum\svnfilerev>-1\relax
+ \expandafter\ifx\csname svn@g@#1\endcsname\relax%
+ \expandafter\gdef\csname svn@g@#1\endcsname{1}%
+ \svn@updategroup{#1}%
+ \fi
+ \fi
+}
+
+\def\svnignoreextensions#1{%
+ \@for\svn@temp:=#1\do{%
+ \expandafter\def\csname svn@ignore@ext@\svn@temp\endcsname{}%
+ }%
+}
+
+\def\svnconsiderextensions#1{%
+ \@for\svn@temp:=#1\do{%
+ \expandafter\let\csname svn@ignore@ext@\svn@temp\endcsname\relax%
+ }%
+}
+
+\svnignoreextensions{aux,bbl,cfg,cls,fd,enc,fls,glo,idx,ilg,ind,ist,%
+lof,log,lot,out,sty,svn,svt,svx,toc}
+
+\svnmulti@atendinputfile{%
+ \if@svnmulti@subgroups
+ \ifsvnsubgroups
+ \expandafter\ifx\csname svn@ignore@ext@\svn@fileext\endcsname\relax
+ \svnsubgroup
+ \fi
+ \fi
+ \fi
+}
+
+\AtBeginDocument{%
+ \if@svnmulti@subgroups
+ \ifsvnsubgroups
+ \svn@addfiletogroup{\jobname .\svn@mainext}{\jobname}%
+ \svnsubgroup
+ \fi
+ \fi
+}
+
+\fi
+
+\if@svnmulti@external
+
+\if@svnmulti@groups
+\def\svnexternalgroup#1{%
+ \svn@ifequal{#1}{*}%
+ {\def\svn@externalgroup{#1}}%
+ {\def\svn@externalgroup{\svn@g}}%
+}
+\def\svn@externalgroup{\svn@g}
+\else
+\def\svn@externalgroup{}
+\fi
+
+\newcommand*\svnexternal[2][]{%
+ \if@filesw
+ \svn@checkwrite
+ \begingroup
+ \svn@ifequal{#1}{*}%
+ {\def\svn@temp{\svn@g}}%
+ {\svn@ifempty{#1}%
+ {\def\svn@temp{\svn@externalgroup}}%
+ {\def\svn@temp{#1}}%
+ }%
+ \immediate\write\svn@write{%
+ \noexpand\@svnexternal[\svn@temp]{\svn@filepath}{#2}%
+ }%
+ \endgroup
+ \fi
+ \svn@inputsvx{\svn@filedir\svn@filebase}%
+}
+
+\def\svnexternalpath#1{%
+ \if@filesw
+ \svn@checkwrite
+ \immediate\write\svn@write{%
+ \noexpand\@svnexternalpath{#1}%
+ }%
+ \fi
+}
+
+\newcommand*\@svnexternal[3][]{}
+\def\@svnexternalpath#1{}
+
+\newcommand*\svnexternalfile[1][\svn@filedir\svn@filebase]{%
+ \begingroup % TODO: maybe use \svn@catcodes
+ \catcode`\_=12
+ \catcode`\&=12
+ \catcode`\^=12
+ \catcode`\$=12
+ \catcode`\#=12
+ \svn@externalfile{#1}%
+}
+
+\def\svn@externalfile#1#2{%
+ \endgroup
+ \if@svnmulti@subgroups
+ \ifsvnsubgroups
+ \svn@ifequal{#1}{\svn@rg}%
+ {\svn@addfiletogroup{#2}{\svn@filedir\svn@filebase}}%
+ {\svn@addfiletogroup{#2}{#1}}%
+ \svn@subgroup{#2}%
+ \fi
+ \fi
+}
+
+\else
+ \def\svnexternalfile#1{}%
+\fi
+
+\if@svnmulti@autoload
+
+\svnmulti@atbegininputfile{%
+ \svn@ifequal{\svn@fileext}{tex}%
+ {\svn@inputsvx{\svn@filedir\svn@filebase}}%
+ {}%
+}
+
+%%\AtEndOfPackage{%
+\AtBeginDocument{%
+ \svn@inputsvx{\jobname}%
+}
+
+\fi
+
+
+\if@svnmulti@anygraphic
+
+\def\svngraphicsgroup#1{%
+ \svn@ifequal{#1}{*}%
+ {\def\svn@graphicsgroup{\svn@g}}%
+ {\def\svn@graphicsgroup{#1}}%
+}
+\def\svn@graphicsgroup{\svn@externalgroup}
+
+\def\svnignoregraphic#1{%
+ \expandafter\def\csname svn@ignoregraphic@#1\endcsname{}%
+}
+
+\def\svnconsidergraphic#1{%
+ \expandafter\let\csname svn@ignoregraphic@#1\endcsname\relax%
+}
+
+\fi
+
+\if@svnmulti@graphics
+\RequirePackage{graphics}[2006/02/20]
+
+\message{Package svn-multi: patching macro '\string\Gin@setfile' from the
+'graphics' package!}%
+\let\svnmulti@Gin@setfile\Gin@setfile
+\renewcommand*{\Gin@setfile}[3]{%
+ \expandafter\ifx\csname svn@ignoregraphic@#3\endcsname\relax%
+ \svnexternal[\svn@graphicsgroup]{{#3}}%
+ \fi
+ \svnmulti@Gin@setfile{#1}{#2}{#3}%
+}
+
+\fi
+
+\if@svnmulti@pgfimages
+\RequirePackage{pgf}[2008/01/15]
+
+\message{Package svn-multi: patching macro '\string\pgf@declareimage' and will
+patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
+\let\svnmulti@pgf@declareimage\pgf@declareimage
+\renewcommand*{\pgf@declareimage}[3][]{%
+ \svnmulti@pgf@declareimage[#1]{#2}{#3}%
+ \ifx\pgf@filename\empty\else
+ \expandafter\ifx\csname svn@ignoregraphic@\pgf@filename\endcsname\relax%
+ \expandafter\global\expandafter%
+ \let\csname svnmulti@pgf@image@#2!\endcsname=\pgf@image%
+ \expandafter\xdef\csname pgf@image@#2!\endcsname{%
+ \noexpand\svnexternal[\noexpand\svn@graphicsgroup]{{\pgf@filename}}%
+ \csname svnmulti@pgf@image@#2!\endcsname
+ }%
+ \fi
+ \fi
+}
+\fi
+\if@svnmulti@table
+\ifx\tableofcontents\relax\else
+\def\svnrevisionsname{Table of Revisions}%
+\def\svn@svt{svt}
+
+\AtBeginDocument{%
+\ifx\chapter\@undefined
+
+%% Adapted from the \tableofcontents macro, LaTeX `article' class [2005/09/16]
+\newcommand\tableofrevisions{%
+ \section*{\svnrevisionsname
+ \@mkboth{\MakeUppercase\svnrevisionsname}{\MakeUppercase\svnrevisionsname}}%
+ \svn@input{\jobname .\svn@svt}%
+}
+
+\else
+
+%% Adapted from the \tableofcontents macro, LaTeX `book' class [2005/09/16]
+\newcommand\tableofrevisions{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\svnrevisionsname
+ \@mkboth{\MakeUppercase\svnrevisionsname}{\MakeUppercase\svnrevisionsname}}%
+ \svn@input{\jobname .\svn@svt}%
+ \if@restonecol\twocolumn\fi
+}
+
+\fi
+}
+\fi % defined \tableofcontents
+
+\def\svn@writerow#1#2#3{%
+ \immediate\write\svn@svtwrite{%
+ \expandafter\noexpand\csname svn#1row\endcsname
+ \expandafter\noexpand\csname svntab#1\endcsname{#2}{#3}\space
+ \@ampersamchar\space
+ \svn@tabcell{rev}\space\@ampersamchar\space
+ \svn@tabcell{author}\space\@ampersamchar\space
+ \noexpand\svntabdate%
+ \svn@tabcellarg{year}%
+ \svn@tabcellarg{month}%
+ \svn@tabcellarg{day}%
+ \svn@tabcellarg{hour}%
+ \svn@tabcellarg{minute}%
+ \svn@tabcellarg{second}%
+ \svn@tabcellarg{timezonehour}%
+ \svn@tabcellarg{timezoneminute}%
+ \space\@backslashchar\@backslashchar
+ \expandafter\noexpand\csname endsvn#1row\endcsname
+ }%
+}
+
+\def\svn@writegrouprow#1{%
+ \begingroup
+ \def\svn@tabcellarg##1{{\csname @svng@#1@##1\endcsname}}%
+ \def\svn@tabcell##1{\expandafter\noexpand\csname svntab##1\endcsname%
+ \svn@tabcellarg{##1}%
+ }%
+ \svn@writerow{group}{#1}{}%
+ \endgroup
+}
+
+\def\svn@writesubgrouprow#1#2{%
+ \begingroup
+ \def\svn@tabcellarg##1{{\csname @svng@#2@##1\endcsname}}%
+ \def\svn@tabcell##1{\expandafter\noexpand\csname svntab##1\endcsname%
+ \svn@tabcellarg{##1}%
+ }%
+ \svn@writerow{subgroup}{#1}{#2}%
+ \endgroup
+}
+
+\def\svn@writefilerow#1#2{%
+ \begingroup
+ \def\svn@tabcellarg##1{{\csname @svng@#2@##1\endcsname}}%
+ \def\svn@tabcell##1{\expandafter\noexpand\csname svntab##1\endcsname%
+ \svn@tabcellarg{##1}%
+ }%
+ \svn@writerow{file}{#1}{#2}%
+ \endgroup
+}
+
+\def\svn@writeglobalrow{%
+ \begingroup
+ \def\svn@tabcellarg##1{{\csname @svn@##1\endcsname}}%
+ \def\svn@tabcell##1{\expandafter\noexpand\csname svntab##1\endcsname%
+ \svn@tabcellarg{##1}%
+ }%
+ \svn@writerow{global}{}{}%
+ \endgroup
+}
+
+\def\svntable{%
+ \begin{tabular}{p{0.425\textwidth}rp{0.25\textwidth}p{0.225\textwidth}}%
+ \hline
+}
+\def\endsvntable{\hline\end{tabular}}
+
+\def\svntablehead{%
+ Name & Rev & Last Author & Last Changed At \\\hline
+}
+\def\svntablefoot{}
+
+\def\svnbeforetable{}
+\def\svnaftertable{\clearpage}
+
+\def\svnglobalrow{}
+\def\endsvnglobalrow{}
+\def\svngrouprow{}
+\def\endsvngrouprow{}
+\def\svnsubgrouprow{}
+\def\endsvnsubgrouprow{}
+\def\svnfilerow{}
+\def\endsvnfilerow{}
+
+\def\svntabglobal{Document}
+\def\svntabgroup#1{Group `#1'}
+
+\def\svntabsubgroup#1{%
+ \raggedright
+ \addtolength{\leftskip}{#1\medskipamount}%
+ \begingroup
+ \catcode`\_=12
+ \catcode`\&=12
+ \catcode`\^=12
+ \catcode`\$=12
+ \catcode`\#=12
+ \svn@tabsubgroup
+}
+\def\svn@tabsubgroup#1{\endgroup Subgroup `\texttt{\small #1}'}
+
+\def\svntabfile#1{%
+ \raggedright
+ \addtolength{\leftskip}{#1\medskipamount}%
+ \begingroup
+ \catcode`\_=12
+ \catcode`\&=12
+ \catcode`\^=12
+ \catcode`\$=12
+ \catcode`\#=12
+ \svn@tabfile
+}
+\def\svn@tabfile#1{\endgroup File `\texttt{\small #1}'}
+
+\def\svntabrev{}
+\def\svntabauthor#1{\svnFullAuthor{#1}}
+\def\svntabdate#1#2#3#4#5#6#7#8{%
+ #1-#2-#3 #4:#5:#6% #7#8%
+}
+
+\fi
+
+\newcommand{\svn}{\@ifnextchar{*}{\svn@s}{\svn@n}}
+\def\svn@n#1{\@svn@n#1}
+\def\svn@s*#1{\@svn@s#1}
+\def\@svn@n$#1${#1}
+\def\@svn@s$#1 ${#1}
+
+%% Adapted from the \url macro of the `hyperref` package.
+\DeclareRobustCommand*{\svnnolinkurl}{%
+ \@ifundefined{hyper@normalise}%
+ {\PackageWarning{svn-multi}{Package hyperref is needed for \noexpand
+ \svnnolinkurl.}}%
+ {\hyper@normalise\svnnolinkurl@}%
+}%
+\def\svnnolinkurl@#1{\Hurl{#1}}%
+
+\def\svn@getfilename#1{%
+ \begingroup
+ \edef\svn@temp{#1}%
+ \expandafter\@svn@getfilename\svn@temp/{}\relax
+}%
+
+\def\@svn@getfilename#1/#2\relax{%
+ \svn@ifempty{#2}%
+ {\endgroup\gdef\svnfilefname{#1}}%
+ {\@svn@getfilename#2\relax}%
+}%
+
+\@input{\jobname .svn}
+
+\def\svn@checkwrite{%
+ \@ifundefined{svn@write}{%
+ \newwrite\svn@write
+ \immediate\openout\svn@write=\jobname.svn\relax%
+ \immediate\write\svn@write{\@percentchar\space SVN Keyword cache}%
+ %\immediate\write\svn@write{\noexpand\makeatletter}%
+ }{}%
+ \let\svn@checkwrite=\relax
+}
+{\catcode`\&=12
+\gdef\@ampersamchar{&}
+}
+\def\svn@writesvn{%
+ \if@svnmulti@groups
+ \fi
+ \svn@checkwrite
+ \immediate\write\svn@write{^^J%
+ \@percentchar\space Global values:^^J%
+ \noexpand\def\noexpand\svnrev{\@svn@rev}^^J%
+ \noexpand\def\noexpand\svndate{\@svn@date}^^J%
+ \noexpand\def\noexpand\svnauthor{\@svn@author}^^J%
+ \noexpand\def\noexpand\svnyear{\@svn@year}^^J%
+ \noexpand\def\noexpand\svnmonth{\@svn@month}^^J%
+ \noexpand\def\noexpand\svnday{\@svn@day}^^J%
+ \noexpand\def\noexpand\svnhour{\@svn@hour}^^J%
+ \noexpand\def\noexpand\svnminute{\@svn@minute}^^J%
+ \noexpand\def\noexpand\svnsecond{\@svn@second}^^J%
+ \noexpand\def\noexpand\svntimezonehour{\@svn@timezonehour}^^J%
+ \noexpand\def\noexpand\svntimezoneminute{\@svn@timezoneminute}^^J%
+ \noexpand\svn@gdefverb\noexpand\svnurl{\@svn@url}^^J%
+ \noexpand\svn@gdefverb\noexpand\svnfname{\@svn@fname}^^J%
+ }%
+ \if@svnmulti@groups
+ \svn@cleanfilelist\@svng@@files
+ \immediate\write\svn@write{%
+ \noexpand\def\noexpand\svng@@files{\@svng@@files}^^J%
+ }%
+ \svn@writeallgroups\@svng@@files
+ \ifx\svn@glist\empty\else
+ \begingroup
+ \immediate\write\svn@write{^^J%
+ \@percentchar\space SVN File Groups: \svn@glist
+ }%
+ \svn@writeallgroups\svn@glist
+ \endgroup
+ \fi
+ \else
+ \immediate\write\svn@write{^^J}%
+ \fi
+ \immediate\closeout\svn@write%
+}
+
+\def\svn@writegroupfiles#1{%
+ \begingroup
+ \advance\svn@grouplevel by 1\relax
+ \expandafter\let
+ \expandafter\svn@files\csname @svng@#1@files\endcsname
+ \ifx\svn@files\relax\else
+ \svn@cleanfilelist\svn@files
+ \@for\svn@file:=\svn@files\do{%
+ \svn@ifvalidrev{@svng@\svn@file @rev}%
+ {%
+ \@ifundefined{@svng@\svn@file @files}%
+ {\svn@writefilerow{\the\svn@grouplevel}{\svn@file}}%
+ {\svn@ifequal{\csname @svng@\svn@file @files\endcsname}{\svn@file.tex}%
+ {\svn@writefilerow{\the\svn@grouplevel}{\svn@file.tex}}%
+ {%
+ \svn@writesubgrouprow{\the\svn@grouplevel}{\svn@file}%
+ \svn@writegroupfiles{\svn@file}%
+ }%
+ }%
+ }{}%
+ }%
+ \fi
+ \endgroup
+}%
+
+\def\svn@writesvt{%
+ \if@svnmulti@table
+ \newwrite\svn@svtwrite
+ \immediate\openout\svn@svtwrite=\jobname.\svn@svt\relax
+ \@onelevel@sanitize\svntable%
+ \immediate\write\svn@svtwrite{%
+ \noexpand\svnbeforetable^^J%
+ \svntable
+ \noexpand\svntablehead^^J%
+ }%
+ \let\svn@grouplevel\@tempcnta
+ \svn@grouplevel=0\relax
+ \svn@writeglobalrow{}%
+ \svn@writegroupfiles{}%
+ \@for\svn@g:=\svn@glist\do{%
+ \@ifundefined{@svng@\svn@g @rev}{}%
+ {%
+ \expandafter
+ \ifnum\csname @svng@\svn@g @rev\endcsname>0\relax
+ \svn@writegrouprow{\svn@g}%
+ \svn@writegroupfiles{\svn@g}%
+ \fi
+ }%
+ }%
+
+ \@onelevel@sanitize\endsvntable%
+ \immediate\write\svn@svtwrite{%
+ \noexpand\svntablefoot^^J%
+ \endsvntable^^J%
+ \noexpand\svnaftertable
+ }%
+ \immediate\closeout\svn@svtwrite%
+ \fi
+}
+
+\AtEndDocument{%
+ \if@filesw
+ \ifx\@svn@rev\empty\else
+ \ifnum\@svn@rev<1\else
+ \svn@writesvn
+ \svn@writesvt
+ \fi
+ \fi
+ \fi
+}
+\endinput
+%%
+%% End of file `svn-multi.sty'.
diff --git a/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty b/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty
new file mode 100644
index 00000000000..190ab159052
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty
@@ -0,0 +1,44 @@
+%%
+%% This is file `svnkw.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% svn-multi.dtx (with options: `wrapper')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2006-2009 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.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 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 svn-multi.dtx, svn-multi-pl.dtx, svn-multi.ins
+%% and the derived files svn-multi.sty, svnkw.sty and svn-multi.pl.
+%%
+\def\filedate$#1: #2 #3 #4-#5-#6 #7 ${%
+ \year#4\month#5\day#6\relax
+ \def\filedate{#4/#5/#6}%
+ \def\filerev{#3}%
+}
+\filedate$Id: svn-multi.dtx 621 2009-03-23 12:26:36Z martin $
+\def\fileversion{v2.0}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{svnkw}
+[\filedate\space\fileversion\space Backward compatibility wrapper for svn-multi]
+\PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi'
+and is now only a backward compatibility wrapper which loads 'svn-multi'.
+Please adjust your document preamble to use the new name.}
+\RequirePackage{svn-multi}[\filedate]
+\endinput
+%%
+%% End of file `svnkw.sty'.