[Distr-commits] r628 - branches/distr-2.2/pkg/SweaveListingUtils/inst/doc branches/distr-2.2/pkg/distr/inst/doc branches/distr-2.2/pkg/distrDoc/inst/doc branches/distr-2.3/pkg/SweaveListingUtils/inst/doc branches/distr-2.3/pkg/distr/inst/doc branches/distr-2.3/pkg/distrDoc/inst/doc pkg/SweaveListingUtils/inst/doc pkg/distr/inst/doc pkg/distrDoc/inst/doc

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Mon Nov 2 18:29:57 CET 2009


Author: ruckdeschel
Date: 2009-11-02 18:29:56 +0100 (Mon, 02 Nov 2009)
New Revision: 628

Added:
   branches/distr-2.2/pkg/SweaveListingUtils/inst/doc/svn-multi.sty
   branches/distr-2.2/pkg/SweaveListingUtils/inst/doc/svnkw.sty
   branches/distr-2.2/pkg/distr/inst/doc/svn-multi.sty
   branches/distr-2.2/pkg/distr/inst/doc/svnkw.sty
   branches/distr-2.2/pkg/distrDoc/inst/doc/svn-multi.sty
   branches/distr-2.2/pkg/distrDoc/inst/doc/svnkw.sty
   branches/distr-2.3/pkg/SweaveListingUtils/inst/doc/svn-multi.sty
   branches/distr-2.3/pkg/SweaveListingUtils/inst/doc/svnkw.sty
   branches/distr-2.3/pkg/distr/inst/doc/svn-multi.sty
   branches/distr-2.3/pkg/distr/inst/doc/svnkw.sty
   branches/distr-2.3/pkg/distrDoc/inst/doc/svn-multi.sty
   branches/distr-2.3/pkg/distrDoc/inst/doc/svnkw.sty
   pkg/SweaveListingUtils/inst/doc/svn-multi.sty
   pkg/SweaveListingUtils/inst/doc/svnkw.sty
   pkg/distr/inst/doc/svn-multi.sty
   pkg/distr/inst/doc/svnkw.sty
   pkg/distrDoc/inst/doc/svn-multi.sty
   pkg/distrDoc/inst/doc/svnkw.sty
Log:
re-uploaded svn-multi.sty and svnkw.sty after error report by Jan de Leeuw.

Added: branches/distr-2.2/pkg/SweaveListingUtils/inst/doc/svn-multi.sty
===================================================================
--- branches/distr-2.2/pkg/SweaveListingUtils/inst/doc/svn-multi.sty	                        (rev 0)
+++ branches/distr-2.2/pkg/SweaveListingUtils/inst/doc/svn-multi.sty	2009-11-02 17:29:56 UTC (rev 628)
@@ -0,0 +1,1752 @@
+%%
+%% 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 at 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.
+%% 
+\makeatletter
+\def\svnmulti at version {v2.1}
+\def\svnmulti at rev  $#1: #2 ${\def\svnmulti at rev{#2}}
+\def\svnmulti at date $#1: #2-#3-#4 #5 ${\def\svnmulti at date{#2/#3/#4}}
+\svnmulti at rev  $Rev: 691 $\relax
+\svnmulti at date $Date: 2009-03-27 21:37:56 +0000 (Fri, 27 Mar 2009) $\relax
+
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{svn-multi}
+ [\svnmulti at date\space\svnmulti at version\space SVN Keywords for multi-file LaTeX documents]
+
+\RequirePackage{kvoptions}
+
+\SetupKeyvalOptions{%
+  family = svn-multi,
+  prefix = @svnmulti@
+}
+\newif\if at svnmulti@anygraphic
+\newif\if at svnmulti@autoload
+\newif\if at svnmulti@autokw
+\newif\if at svnmulti@autokwall
+
+\DeclareVoidOption{old}{%
+  \@svnmulti at verbatimtrue
+  \@svnmulti at groupsfalse
+  \@svnmulti at externalfalse
+  \@svnmulti at graphicsfalse
+  \@svnmulti at pgfimagesfalse
+  \@svnmulti at autoloadfalse
+  \@svnmulti at tablefalse
+  \@svnmulti at filehooksfalse
+  \@svnmulti at subgroupsfalse
+}
+\DeclareVoidOption{all}{%
+  \@svnmulti at verbatimtrue
+  \@svnmulti at groupstrue
+  \@svnmulti at externaltrue
+  \@svnmulti at graphicstrue
+  \@svnmulti at pgfimagestrue
+  \@svnmulti at autoloadtrue
+  \@svnmulti at tabletrue
+  \@svnmulti at filehookstrue
+  \@svnmulti at 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}
+\DeclareStringOption[false]{autokw}[all]
+
+\ExecuteOptions{old}
+\ProcessKeyvalOptions{svn-multi}
+\def\svn at depoption#1{%
+  \csname if at svnmulti@#1\endcsname\else
+  \message{svn-multi: Required option '#1' enabled.}%
+  \csname @svnmulti@#1true\endcsname
+  \fi
+}
+
+\if at svnmulti@groups
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@external
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@subgroups
+  \svn at depoption{groups}
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@graphics
+  \svn at depoption{external}
+  \svn at depoption{autoload}
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@pgfimages
+  \svn at depoption{external}
+  \svn at depoption{autoload}
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@autoload
+  \svn at depoption{external}
+  \svn at depoption{filehooks}
+\fi
+\if at svnmulti@table
+  \svn at depoption{groups}
+  \svn at depoption{filehooks}
+\fi
+\ifx\@svnmulti at autoload\@undefined
+\else
+\ifx\@svnmulti at autoload\empty
+\else
+\def\svn at temp{true}
+\ifx\@svnmulti at autoload\svn at temp
+  \@svnmulti at autoloadtrue
+  \svn at depoption{external}
+  \svn at depoption{filehooks}
+\else
+\def\svn at temp{false}
+\ifx\@svnmulti at autoload\svn at temp
+  \if at svnmulti@autoload
+  \PackageWarning{svn-multi}{Option 'autoload' disabled.}
+  \fi
+  \@svnmulti at autoloadfalse
+\else
+  \PackageError{svn-multi}%
+    {Invalid value for 'autoload' option: '\@svnmulti at autoload'^^J%
+     ! Only 'true','false' or empty (='true') are allowed!}
+\fi\fi\fi\fi
+
+\def\svn at temp{true}
+\ifx\@svnmulti at autokw\svn at temp
+  \@svnmulti at autokwtrue
+  \@svnmulti at autokwalltrue
+  \svn at depoption{filehooks}
+\fi
+\def\svn at temp{all}
+\ifx\@svnmulti at autokw\svn at temp
+  \@svnmulti at autokwtrue
+  \@svnmulti at autokwalltrue
+  \svn at depoption{filehooks}
+\fi
+\def\svn at temp{ext}
+\ifx\@svnmulti at autokw\svn at temp
+  \@svnmulti at autokwtrue
+  \@svnmulti at autokwallfalse
+\fi
+\def\svn at temp{false}
+\ifx\@svnmulti at autokw\svn at temp
+  \@svnmulti at autokwfalse
+  \@svnmulti at autokwallfalse
+\fi
+
+\if at svnmulti@graphics
+  \@svnmulti at anygraphictrue
+\fi
+\if at svnmulti@pgfimages
+  \@svnmulti at anygraphictrue
+\fi
+
+\def\svn at ifempty#1{%
+  \begingroup
+  \edef\svn at temp{#1}%
+  \ifx\svn at temp\empty
+    \endgroup
+    \expandafter
+    \@firstoftwo
+  \else
+    \endgroup
+    \expandafter
+    \@secondoftwo
+  \fi
+}
+
+\def\svn at ifequal#1#2{%
+  \begingroup
+  \edef\svn at stringa{#1}%
+  \edef\svn at stringb{#2}%
+  \ifx\svn at stringa\svn at stringb
+    \endgroup
+    \expandafter
+    \@firstoftwo
+  \else
+    \endgroup
+    \expandafter
+    \@secondoftwo
+  \fi
+}
+
+\def\svn at ifvalidrev#1{%
+  \begingroup
+  \@ifundefined{#1}%
+    {\def\svn at temp{-1}}%
+    {\expandafter\edef
+     \expandafter\svn at temp\expandafter{\csname #1\endcsname}}%
+  \ifnum\svn at temp>-1\relax
+    \endgroup
+    \expandafter
+    \@firstoftwo
+  \else
+    \endgroup
+    \expandafter
+    \@secondoftwo
+  \fi
+}
+
+\def\svn at ifeof#1{%
+  \ifeof#1%
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi
+}
+
+\def\svn at ifonlyone#1{%
+  \expandafter\expandafter\expandafter
+  \svn@@ifonlyone\csname @svng@#1 at files\endcsname,\relax
+}
+
+\def\svn@@ifonlyone#1,#2\relax{%
+  \svn at ifempty{#2}
+}
+
+\def\svn at input#1{%
+  \begingroup
+    \let\svn at rg\svn at g
+    \IfFileExists{#1}{\@@input #1\relax}{}%
+    \global\let\svn at g\svn at rg
+  \endgroup
+}
+
+\def\svn at inputsvx#1{%
+  \svn at pushfilestack
+  \svn at input{#1.svx}%
+  \svn at popfilestack
+}
+
+\def\svnrev{-1}             \def\@svn at rev{-1}
+\def\svndate{}              \def\@svn at date{}
+\def\svnauthor{}            \def\@svn at author{}
+\def\svnyear{0000}          \def\@svn at year{0000}
+\def\svnmonth{00}           \def\@svn at month{00}
+\def\svnday{00}             \def\@svn at day{00}
+\def\svnhour{00}            \def\@svn at hour{00}
+\def\svnminute{00}          \def\@svn at minute{00}
+\def\svnsecond{00}          \def\@svn at second{00}
+\def\svntimezonehour{+00}   \def\@svn at timezonehour{+00}
+\def\svntimezoneminute{00}  \def\@svn at timezoneminute{00}
+\def\svnmainurl{NOT SET}    \def\svnmainfilename{NOT SET}
+\def\svnurl{} \def\svnfname{}
+\def\svn at temp{}
+
+\def\svn at pg{} \def\svn at g{} \def\svn at cg{\svn at g} \def\svn at rg{\svn at pg}
+\let\@svng@@files\relax
+
+\def\svn at 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{}%
+  \gdef\svnfiledir{}%
+}
+\svn at initfile
+
+
+\begingroup
+\@makeother\^^L
+\if at svnmulti@autokw
+\gdef\svne at ff{^^L}
+\fi
+\endgroup
+
+\if at svnmulti@autokw
+\newread\svne at read
+
+\newcommand*{\svne at catcodes}{%
+  \let\do\@makeother
+  \endlinechar=-1
+  \dospecials
+  \do\- \do\: \do\. \do\^^L
+}
+
+\def\svne at readline#1{%
+  \ifeof\svne at read
+    \def#1{}%
+  \else
+    \read\svne at read to #1\relax
+  \fi
+}
+
+\def\svne at gobblerest{%
+  \ifeof\svne at read
+    \let\next\relax
+  \else
+    \read\svne at read to \svn at temp
+    \ifx\svn at temp\svne at ff
+      \let\next\relax
+    \else
+      \let\next\svne at gobblerest
+    \fi
+  \fi
+  \next
+}
+
+\def\svne at endread{%
+  \closein\svne at read
+}
+
+\newcommand*{\svne at parseentriesfile}[1]{%
+  \begingroup
+    \let\next\relax
+    \openin\svne at read=#1format\relax
+    \ifeof\svne at read\else
+      \svne at readline\svne at version
+      \closein\svne at read
+      \ifnum\svne at version>7\relax
+        \openin\svne at read=#1entries\relax
+        \ifeof\svne at read\else
+          \svne at catcodes
+          \svne at readline\svne at version
+          \ifnum\svne at version>7\relax
+            \def\next{\svne at parsedirentry%
+                      \svne at parseentries}
+          \else
+            \closein\svne at read
+          \fi
+        \fi
+      \fi
+    \fi
+    \next
+  \endgroup
+}
+
+\newcommand*{\svne at parsedirentry}{%
+  \svne at readline\svne at name
+  \svne at readline\svne at kind
+  \svn at ifempty{\svne at name}%
+    {\svn at ifequal{\svne at kind}{dir}%
+      {%
+        {\svne at readline\svn at temp}%
+        \svne at readline\svne at baseurl
+        \svne at gobblerest
+      }{}%
+    }{}%
+}
+
+\begingroup
+
+\@makeother\-
+\@makeother\:
+\@makeother\.
+
+\gdef\svne at scandate#1{%
+  \expandafter\svne at scandate@#1\relax
+  0000-00-00T00:00:00.00000Z\relax\relax
+}
+
+\gdef\svne at scandate@#1-#2-#3T#4:#5:#6.#7\relax#8\relax{%
+  \gdef\svnfileyear{#1}%
+  \gdef\svnfilemonth{#2}%
+  \gdef\svnfileday{#3}%
+  \gdef\svnfilehour{#4}%
+  \gdef\svnfileminute{#5}%
+  \gdef\svnfilesecond{#6}%
+  \gdef\svnfiletimezonehour{+00}%
+  \gdef\svnfiletimezoneminute{00}%
+  \gdef\svnfiledate{#1-#2-#3 #4:#5:#6Z}%
+  \def\svne at date{#1-#2-#3 #4:#5:#6Z}%
+}
+
+\endgroup
+
+\newcommand*{\svne at parseentries}{%
+  \svn at ifeof{\svne at read}%
+  {}%
+  {%
+    \svne at readline\svne at name
+    \@onelevel at sanitize\svne at name
+    \svn at ifeof{\svne at read}%
+    {}%
+    {%
+    \svne at readline\svne at kind
+    \svn at ifequal{\svne at kind}{file}%
+      {%
+      \svne at readline\svn at temp
+      \svne at readline\svn at temp
+      \svne at readline\svn at temp
+      \svne at readline\svn at temp
+      \svne at readline\svn at temp
+      \svne at readline\svn at temp
+      \svne at readline\svne at date
+      \svne at readline\svne at rev
+      \svne at readline\svne at author
+      %\@onelevel at sanitize\svne at date
+      \svne at scandate{\svne at date}%
+      \edef\svne at url{\svne at baseurl/\svne at name}%
+      \svne at handleentry
+      }{}%
+    \svne at gobblerest
+    \svne at parseentries
+    }%
+  }%
+}
+
+\def\svne at handleentry{%
+  \svn at ifequal{\svne at name}{\svnfilefname}%
+    {%
+      \svnkwdef{Filename}{\svne at name}%
+      \svnkwdef{Date}{\svne at date}%
+      \svnkwdef{Revision}{\svne at rev}%
+      \svnkwdef{Author}{\svne at author}%
+      \svnkwdef{HeadURL}{\svne at url}%
+      \@svn at updateid{\svne at rev}{\svne at date}{\svne at author}{\svne at url}%
+      \svne at endread
+    }{}%
+}%
+
+\def\svnegetfile#1{%
+  \begingroup
+    \svn at getfilename{#1}%
+    \edef\svnfilefname{\svnfilefname}%
+    \@onelevel at sanitize\svnfilefname
+    \svne at parseentriesfile{\svnfiledir .svn/}%
+    \svne at parseentriesfile{\svnfiledir _svn/}%
+  \endgroup
+}
+
+\if at svnmulti@autokwall
+\AtBeginDocument{%
+    \svnegetfile{\jobname.\svn at mainext}%
+}
+\fi
+
+\fi
+
+\def\svntimezone{\svntimezonehour\svntimezoneminute\svn at gobblezeros}
+\def\svnfiletimezone{\svnfiletimezonehour\svnfiletimezoneminute\svn at gobblezeros}
+\def\svncgtimezone{\svncgtimezonehour\svncgtimezoneminute}
+
+\def\svn at gobblezeros{%
+  \futurelet\svn at nextchar\svn at gobblezeros@
+}
+\def\svn at gobblezeros@{%
+  \let\@tempa=\relax
+  \def\@tempb{0}%
+  \ifx0\svn at 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 at cg @year}{??}{%
+    \begingroup
+      \year\svncgyear \month\svncgmonth \day\svncgday
+      \relax \today
+    \endgroup
+  }%
+}%
+
+\newcommand*{\svnid}{%
+  \@svnidswtrue
+  \svnkwsave
+}
+\newif\if at svnidsw
+\@svnidswfalse
+
+\def\svn at scanId#1 #2 #3 #4 #5\relax{%
+  \@svn at scandate{#3 #4}%
+  \@svn at updateid{#2}{#3 #4}{#5}{#1}%
+  \svnkwdef{Filename}{#1}%
+  \svnkwdef{Date}{#3 #4}%
+  \svnkwdef{Revision}{#2}%
+  \svnkwdef{Author}{#5}%
+}
+
+\def\@svn at updateid#1#2#3#4{%
+  \xdef\svnfilerev{#1}%
+  \xdef\svnfiledate{#2}%
+  \xdef\svnfileauthor{#3}%
+  \xdef\svnfileurl{#4}%
+  \svn at getfilename\svnfileurl%
+  \ifx\svnfilerev\empty\else
+    \ifnum\@svn at rev<\svnfilerev
+      \xdef\@svn at rev{\svnfilerev}%
+      \xdef\@svn at date{\svnfiledate}%
+      \xdef\@svn at author{\svnfileauthor}%
+      \xdef\@svn at year{\svnfileyear}%
+      \xdef\@svn at month{\svnfilemonth}%
+      \xdef\@svn at day{\svnfileday}%
+      \xdef\@svn at hour{\svnfilehour}%
+      \xdef\@svn at minute{\svnfileminute}%
+      \xdef\@svn at second{\svnfilesecond}%
+      \xdef\@svn at timezonehour{\svnfiletimezonehour}%
+      \xdef\@svn at timezoneminute{\svnfiletimezoneminute}%
+      \xdef\@svn at url{\svnfileurl}%
+      \xdef\@svn at fname{\svnfilefname}%
+    \fi
+
+    \if at svnmulti@groups
+      \ifx\svn at g\empty\else
+        \svn at updategroup{\svn at g}%
+      \fi
+      \if at svnmulti@subgroups
+        \ifsvnsubgroups
+          \svn at updategroup{\svn at filedir\svn at filebase}%
+        \fi
+      \fi
+    \fi
+  \fi
+}
+
+\def\@svncg at save#1#2{%
+  \expandafter\xdef\csname @svng@\svn at g @#1\endcsname{#2}%
+}
+
+
+\newcommand{\svnidlong}{%
+  \svnkwdef{HeadURL}{}%
+  \svnkwdef{LastChangedDate}{}%
+  \svnkwdef{LastChangedRevision}{0}%
+  \svnkwdef{LastChangedBy}{}%
+  \begingroup
+    \if at svnmulti@verbatim
+      \svn at catcodes
+      \catcode`\{=12
+      \catcode`\}=12
+    \else
+      \def\svnidlong at readargsfull{\svnidlong at readargs}%
+    \fi
+    \svnidlong at readargsfull
+}
+
+\if at svnmulti@verbatim
+\def\svn at catcodes{%
+  \let\do\@makeother
+  \dospecials
+  \catcode`\^^M9
+  \catcode`\ 10
+  \catcode`\{1
+  \catcode`\}2
+}
+\else
+  \def\svn at catcodes{}
+\fi
+
+\if at svnmulti@verbatim
+\begingroup
+\catcode`\{=12\catcode`\}=12
+\catcode`\(=1\catcode`\)=2
+\gdef\svnidlong at readargsfull#1{#2}#3{#4}#5{#6}#7{#8}(%
+ \svnidlong at readargs(#2)(#4)(#6)(#8)%
+)
+\endgroup
+\fi
+
+\def\svnidlong at readargs#1#2#3#4{%
+    \svnkwsave at read #1\relax
+    \svnkwsave at read #2\relax
+    \svnkwsave at read #3\relax
+    \svnkwsave at read #4\relax
+  \endgroup
+  \ifx\svnkwLastChangedDate\empty\else
+    \@svn at scanlongdate{\svnkwLastChangedDate}%
+  \fi
+  \@svn at updateid{\svnkw{LastChangedRevision}}{\svnkw{LastChangedDate}}%
+  {\svnkw{LastChangedBy}}{\svnkw{HeadURL}}%
+  \ignorespaces
+}%
+
+\def\svnkwsave{%
+  \begingroup
+    \svn at catcodes
+    \svnkwsave at readargs
+}
+
+\gdef\svnkwsave at readargs#1{%
+    \svnkwsave at read#1\relax
+  \endgroup
+  \if at svnidsw
+    \ifx\svnkwId\empty\else
+      \expandafter
+      \svn at scanId\svnkwId\relax
+      \@svnidswfalse
+    \fi
+  \fi
+  \ignorespaces
+}
+
+\begingroup
+\if at svnmulti@verbatim
+\catcode`\$=12
+\fi
+\gdef\svnkwsave at read $#1$\relax{%
+  \svn at checkcolon#1:\relax
+}
+\endgroup
+
+\begingroup
+\catcode`\$=11
+\gdef\svnkwsave at 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 at Rev#1{%
+  \svn at ifempty{#1}%
+    {\svnkwdef@{Rev}{0}}%
+    {\svnkwdef@{Rev}{#1}}%
+}
+\def\svnkwdef at Author#1{\svnkwdef@{Author}{#1}}
+\def\svnkwdef at Date#1{\svnkwdef@{Date}{#1}}
+\def\svnkwdef at URL#1{\svnkwdef@{HeadURL}{#1}}
+\let\svnkwdef at Revision=\svnkwdef at Rev
+\let\svnkwdef at LastChangedRevision=\svnkwdef at Rev
+\let\svnkwdef at LastChangedBy=\svnkwdef at Author
+\let\svnkwdef at LastChangedAt=\svnkwdef at 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 at checkcolon#1:#2\relax{%
+  \svn at ifempty{#2}%
+    {\svnkwdef{#1}{}}%
+    {\svn at stripcolon#2\relax\svnkwdef{#1}{\svn at value}}%
+}
+
+\def\svn at stripcolon#1:\relax{%
+  \svn at ifempty{#1}%
+    {\gdef\svn at value{}}%
+    {\svn at ifequal{#1}{ }%
+      {\gdef\svn at value{}}%
+      {\svn at stripspace#1\relax\relax}%
+    }%
+}
+
+\def\svn at stripspace#1#2\relax{%
+  \svn at ifequal{#1}{ }%
+    {\gdef\svn at value{#2}}%
+    {\svn at striptrailingspace#1#2\relax}%
+}
+
+\def\svn at striptrailingspace#1 \relax{%
+  \gdef\svn at value{#1}%
+}
+
+\def\svn at gdefverb#1{%
+  \begingroup
+    \def\svn at temp{#1}%
+    \begingroup
+      \if at svnmulti@verbatim
+        \svn at catcodes
+      \fi
+      \svn at gdefverb@
+}
+
+\def\svn at gdefverb@#1{%
+    \endgroup
+    \expandafter\gdef\svn at temp{#1}%
+  \endgroup
+}
+
+\def\svn at namegdefverb#1{%
+  \begingroup
+    \expandafter\def
+    \expandafter\svn at temp
+    \expandafter{\csname #1\endcsname}%
+    \begingroup
+      \if at svnmulti@verbatim
+        \svn at catcodes
+      \fi
+      \svn at gdefverb@
+}
+
+\def\@svn at scandate#1{\@svn at scandate@#1\relax}
+
+\def\@svn at 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 at scanlongdate#1{\expandafter\@svn at scanlongdate@#1\relax}
+\def\@svn at 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 at parsetimezone#7\relax%
+}
+
+\def\@svn at 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 at author@#1\endcsname{#2}%
+}
+
+\newcommand{\svnFullAuthor}{%
+  \@ifnextchar{*}%
+    {\svnFullAuthor at star}%
+    {\svnFullAuthor at normal}%
+}%
+\def\svnFullAuthor at star*#1{%
+  \edef\svn at temp{#1}%
+  \svnFullAuthor@{\svn at temp}{~(\svn at temp)}%
+}%
+\def\svnFullAuthor at normal#1{%
+  \edef\svn at temp{#1}%
+  \svnFullAuthor@{\svn at temp}{}%
+}%
+\def\svnFullAuthor@#1#2{%
+  \@ifundefined{svn at author@#1}%
+    {#1}%
+    {\csname svn at author@#1\endcsname #2}%
+}
+
+\newcommand{\svnRegisterRevision}[2]{%
+  \expandafter\def\csname svn at revision@#1\endcsname{#2}%
+}
+
+\newcommand{\svnFullRevision}{%
+  \@ifnextchar{*}%
+    {\svnFullRevision at star}%
+    {\svnFullRevision at normal}%
+}
+\def\svnFullRevision at star*#1{%
+  \edef\svn at temp{#1}%
+  \svnFullRevision@{\svn at temp}{~(r\svn at temp)}%
+}
+\def\svnFullRevision at normal#1{%
+  \edef\svn at temp{#1}%
+  \svnFullRevision@{\svn at temp}{}%
+}
+\def\svnFullRevision@#1#2{%
+  \@ifundefined{svn at revision@#1}%
+    {Revision #1}%
+    {\csname svn at revision@#1\endcsname #2}%
+}
+
+\if at svnmulti@filehooks
+
+\RequirePackage{fink}[2008/02/27]
+\begingroup
+\def\svn at 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 at finkerror\relax
+}
+\@ifundefined{finkpath}{\svn at finkerror}{}%
+\@ifundefined{finkdir}{\svn at finkerror}{}%
+\@ifundefined{finkbase}{\svn at finkerror}{}%
+\@ifundefined{fink at prepare}{\svn at finkerror}{}%
+\@ifundefined{fink at restore}{\svn at finkerror}{}%
+\@ifundefined{fnk at maindir}{\svn at finkerror}{}%
+\@ifundefined{fnk at mainext}{\svn at finkerror}{}%
+\endgroup
+
+\def\svn at removedotslash#1{%
+  \def\svn at removedotslash@##1##2##3\relax{%
+    \svn at ifequal{./}{##1##2}%
+      {\edef#1{##3}\def\next{\svn at removedotslash@##3\empty\empty\empty\relax}}%
+      {\edef#1{##1##2##3}\let\next\relax}%
+    \next
+  }%
+  \expandafter\svn at removedotslash@#1\empty\empty\empty\relax
+}
+
+\let\svn at mainext\fnk at mainext
+\let\svn at maindir\fnk at maindir
+\svn at removedotslash\svn at maindir
+\edef\svn at filebase{\jobname}%
+\edef\svn at fileext{\svn at mainext}%
+\edef\svn at filedir{\svn at maindir}%
+\def\svn at filename{\fink at file\svn at filebase\svn at fileext}%
+\def\svn at filepath{\svn at filedir\svn at filename}%
+
+\def\svnmulti at begininputfilehook{}
+\message{Package svn-multi: patching macro '\string\fink at prepare' from the
+'fink' package!}%
+\let\svnmulti at fink@prepare\fink at prepare
+\renewcommand*{\fink at prepare}[1]{%
+  \svnmulti at fink@prepare{#1}%
+  \if at svnmulti@groups
+    \svn at ifequal{\svn at filepath}{\jobname.\svn at mainext}%
+      {\global\let\svn at pg\svn at g}%
+      {\xdef\svn at pg{\svn at filedir\svn at filebase}}%
+  \fi
+  \xdef\svn at filebase{\fink at nextbase}%
+  \xdef\svn at fileext{\fink at nextext}%
+  \xdef\svn at filedir{\fink at nextdir}%
+  \svn at removedotslash\svn at filedir
+  \svnmulti at begininputfilehook
+}%
+
+\def\svnmulti at endinputfilehook{}
+\message{Package svn-multi: patching macro '\string\fink at restore' from the
+'fink' package!}%
+\let\svnmulti at fink@restore\fink at restore
+\def\fink at restore#1{%
+  \svnmulti at endinputfilehook
+  \svnmulti at fink@restore{#1}%
+  \xdef\svn at filebase{\finkbase}%
+  \xdef\svn at fileext{\finkext}%
+  \xdef\svn at filedir{\finkdir}%
+  \svn at removedotslash\svn at filedir
+}%
+
+\def\svnmulti at atbegininputfile{%
+  \g at addto@macro\svnmulti at begininputfilehook
+}
+
+\long\def\svnmulti at atendinputfile#1{%
+  \begingroup
+    \@temptokena\expandafter{\svnmulti at endinputfilehook}%
+    \toks@{#1}%
+    \xdef\svnmulti at endinputfilehook{\the\toks@\the\@temptokena}%
+  \endgroup
+}
+
+\def\svn at filestack{{}}
+
+\def\svn at pushfilestack{%
+  \xdef\svn at filestack{{%
+    {\svnfilerev}%
+    {\svnfiledate}%
+    {\svnfileauthor}%
+    {\svnfileyear}%
+    {\svnfilemonth}%
+    {\svnfileday}%
+    {\svnfilehour}%
+    {\svnfileminute}%
+    {\svnfilesecond}%
+    {\svnfiletimezonehour}%
+    {\svnfiletimezoneminute}%
+    {\svnfileurl}%
+    {\svnfilefname}%
+    {\svn at g}%
+    {\svn at pg}%
+  }\svn at filestack}%
+}
+
+\def\svn at restorefilekws#1#2\relax{%
+  \svn at restorefilekws@#1\empty
+  \empty \empty \empty \empty
+  \empty \empty \empty \empty
+  \empty \empty \empty \empty
+  \svn at ifempty{#2}%
+    {\gdef\svn at filestack{{}}}%
+    {\gdef\svn at filestack{#2}}%
+}
+\def\svn at 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 at restorefilekws@@
+}
+
+\def\svn at restorefilekws@@#1#2#3#4#5#6{%
+  \gdef\svnfiletimezonehour{#1}%
+  \gdef\svnfiletimezoneminute{#2}%
+  \gdef\svnfileurl{#3}%
+  \gdef\svnfilefname{#4}%
+  \gdef\svn at g{#5}%
+  \gdef\svn at pg{#6}%
+}
+
+\def\svn at popfilestack{%
+  \ifx\svn at filestack\empty
+    \PackageWarning{svn-multi}{Underflow of file keyword stack!}%
+  \else
+    \svn at ifequal{\svn at filestack}{{}}%
+      {\PackageWarning{svn-multi}{Underflow of file keyword stack!}}%
+      {\expandafter\svn at restorefilekws\svn at filestack\relax}%
+  \fi
+}
+
+\svnmulti at atbegininputfile{%
+  \svn at pushfilestack
+}
+
+\svnmulti at atendinputfile{%
+  \svn at popfilestack
+}%
+
+\fi
+
+\if at svnmulti@groups
+\let\svn at glist=\empty
+
+\def\svngroup#1{%
+  \svn at ifequal{#1}{*}%
+    {\PackageError{svn-multi}%
+      {The group name '*' is invalid for '\string\svngroup'}{}{}%
+    }{}%
+  \xdef\svn at g{#1}%
+  \let\svn at pg\svn at g
+  \ifx\svn at g\empty\else%
+    \expandafter
+    \ifx\csname @svng@\svn at g @rev\endcsname\relax%
+      \svn at initgroup{\svn at g}%
+      \ifx\svn at glist\empty
+        \xdef\svn at glist{#1}%
+      \else
+        \xdef\svn at glist{\svn at glist,#1}%
+      \fi
+    \fi
+  \fi
+}
+
+\def\thesvngroup{\svn at g}
+
+\def\svnsetcg#1{%
+  \svn at ifequal{#1}{*}%
+    {\def\svn at cg{\svn at g}}%
+    {\def\svn at cg{#1}}%
+}
+
+\def\svncg at def#1{%
+  \expandafter
+  \def\csname svncg#1\endcsname{%
+    \@ifundefined{svng@\svn at cg @#1}{??}{%
+    \csname svng@\svn at cg @#1\endcsname}%
+  }%
+}
+
+\@for\@tempa:=%
+  rev,author,date,year,month,day,hour,minute,second,%
+  timezonehour,timezoneminute,url,fname%
+\do{%
+  \expandafter\svncg at def\expandafter{\@tempa}%
+}
+
+\def\thesvncg{\svn at cg}
+
+\def\svng#1#2{%
+  \@ifundefined{svng@\svn at temp @#2}%
+    {??}%
+    {\csname svng@\svn at temp @#2\endcsname}%
+}
+
+\def\svn at addfiletogroup#1#2{%
+  \expandafter
+  \ifx\csname @svng@#2 at files@#1\endcsname\relax%
+    \expandafter\gdef\csname @svng@#2 at files@#1\endcsname{1}%
+    %
+    \@ifundefined{@svng@#2 at files}%
+      {\expandafter\xdef\csname @svng@#2 at files\endcsname{#1}}%
+      {\expandafter\xdef\csname @svng@#2 at files\endcsname{%
+        \csname @svng@#2 at files\endcsname,#1%
+       }%
+      }%
+  \fi
+}
+
+\svnmulti at atbegininputfile{%
+  \svn at ifequal{\svn at filepath}{\svn at maindir\jobname.\svn at mainext}%
+    {}%
+    {\svn at initfile}%
+  \svn at ifequal{\svn at fileext}{\svn at mainext}%
+    {\svn at addfiletogroup{\svn at filedir\svn at filebase}{\svn at pg}}{}%
+  \svn at ifequal{\svn at fileext}{sty}%
+    {\svn at addfiletogroup{\svn at filedir\svn at filebase}{\svn at pg}}{}%
+  \svn at ifequal{\svn at fileext}{cls}%
+    {\svn at addfiletogroup{\svn at filedir\svn at filebase}{\svn at pg}}{}%
+  \svn at addfiletogroup{\svn at filepath}{\svn at filedir\svn at filebase}%
+}
+
+\def\svn at writegroup#1{%
+  \def\svn at writekw##1{%
+   \immediate\write\svn at write{%
+     \noexpand\@namedef{svng@#1@##1}{\csname @svng@#1@##1\endcsname}%
+   }%
+  }%
+  \svn at writekw{rev}%
+  \svn at writekw{date}%
+  \svn at writekw{author}%
+  \svn at writekw{year}%
+  \svn at writekw{month}%
+  \svn at writekw{day}%
+  \svn at writekw{hour}%
+  \svn at writekw{minute}%
+  \svn at writekw{second}%
+  \svn at writekw{timezonehour}%
+  \svn at writekw{timezoneminute}%
+  \@ifundefined{@svng@#1 at files}{}{%
+    \immediate\write\svn at write{%
+      \noexpand
+      \svn at namegdefverb{svng@#1 at files}{\csname @svng@#1 at files\endcsname}%
+    }%
+  }%
+  \immediate\write\svn at write{%
+    \noexpand
+    \svn at namegdefverb{svng@#1 at url}{\csname @svng@#1 at url\endcsname}^^J%
+    \noexpand
+    \svn at namegdefverb{svng@#1 at fname}{\csname @svng@#1 at fname\endcsname}^^J%
+  }%
+}
+\def\svn at writeallgroups#1{%
+  \begingroup
+    \ifx\relax#1\relax\else
+      \@for\svn at temp:=#1\do{%
+        \svn at ifvalidrev{@svng@\svn at temp @rev}%
+          {%
+            \expandafter
+            \svn at cleanfilelist\csname @svng@\svn at temp @files\endcsname
+            \svn at writegroup{\svn at temp}%
+            \@ifundefined{@svng@\svn at temp @files}{}%
+              {\expandafter\svn at writeallgroups
+               \csname @svng@\svn at temp @files\endcsname
+              }%
+          }{}%
+      }%
+    \fi
+  \endgroup
+}
+
+\def\svn at updategroup#1{%
+  \@ifundefined{@svng@#1 at rev}%
+    {\svn at initgroup{#1}}%
+    {}%
+  \expandafter
+  \ifnum\csname @svng@#1 at rev\endcsname<\svnfilerev
+    \svn at gkwset{#1}{rev}{\svnfilerev}%
+    \svn at gkwset{#1}{date}{\svnfiledate}%
+    \svn at gkwset{#1}{author}{\svnfileauthor}%
+    \svn at gkwset{#1}{year}{\svnfileyear}%
+    \svn at gkwset{#1}{month}{\svnfilemonth}%
+    \svn at gkwset{#1}{day}{\svnfileday}%
+    \svn at gkwset{#1}{hour}{\svnfilehour}%
+    \svn at gkwset{#1}{minute}{\svnfileminute}%
+    \svn at gkwset{#1}{second}{\svnfilesecond}%
+    \svn at gkwset{#1}{timezonehour}{\svnfiletimezonehour}%
+    \svn at gkwset{#1}{timezoneminute}{\svnfiletimezoneminute}%
+    \svn at gkwset{#1}{url}{\svnfileurl}%
+    \svn at gkwset{#1}{fname}{\svnfilefname}%
+  \fi
+}
+
+\def\svn at definegroup#1{%
+  \svn at gkwdef{#1}{rev}%
+  \svn at gkwdef{#1}{date}%
+  \svn at gkwdef{#1}{author}%
+  \svn at gkwdef{#1}{year}%
+  \svn at gkwdef{#1}{month}%
+  \svn at gkwdef{#1}{day}%
+  \svn at gkwdef{#1}{hour}%
+  \svn at gkwdef{#1}{minute}%
+  \svn at gkwdef{#1}{second}%
+  \svn at gkwdef{#1}{timezonehour}%
+  \svn at gkwdef{#1}{timezoneminute}%
+  \svn at gkwdef{#1}{url}%
+  \svn at gkwdef{#1}{fname}%
+}
+
+\def\svn at initgroup#1{%
+  \svn at gkwset{#1}{rev}{-1}%
+  \svn at gkwset{#1}{date}{}%
+  \svn at gkwset{#1}{author}{}%
+  \svn at gkwset{#1}{year}{0000}%
+  \svn at gkwset{#1}{month}{00}%
+  \svn at gkwset{#1}{day}{00}%
+  \svn at gkwset{#1}{hour}{00}%
+  \svn at gkwset{#1}{minute}{00}%
+  \svn at gkwset{#1}{second}{00}%
+  \svn at gkwset{#1}{timezonehour}{+00}%
+  \svn at gkwset{#1}{timezoneminute}{00}%
+  \svn at gkwset{#1}{url}{}%
+  \svn at gkwset{#1}{fname}{}%
+}
+
+\def\svn at gkwset#1#2#3{%
+  \expandafter
+  \xdef\csname @svng@#1@#2\endcsname{#3}%
+}
+
+\def\svn at gkwdef#1#2{%
+  \expandafter
+  \xdef\csname svng@#1@#2\endcsname{\csname @svng@#1@#2\endcsname}%
+}
+
+\def\svn at cleanfilelist#1{
+  \begingroup
+    \def\svn at tmplist{}%
+    \ifx\relax#1\relax\else
+      \@for\svn at temp:=#1\do{%
+        \expandafter\svn at ifvalidrev
+        \expandafter{@svng@\svn at temp @rev}%
+          {\edef\svn at tmplist{\svn at tmplist,\svn at temp}}%
+          {}%
+      }%
+      \xdef#1{\expandafter\@gobble\svn at tmplist\empty}%
+    \fi
+  \endgroup
+}
+
+\fi
+
+
+\newif\ifsvnsubgroups
+\svnsubgroupsfalse
+
+\if at svnmulti@subgroups
+\svnsubgroupstrue
+
+\def\svnsubgroup{%
+  \begingroup
+    \svn at removedotslash\svn at filedir
+    \svn at subgroup{\svn at filedir\svn at filebase}%
+    \svn at subgroup{\svn at filepath}%
+  \endgroup
+}
+
+\def\svn at subgroup#1{%
+  \ifnum\svnfilerev>-1\relax
+    \expandafter\ifx\csname svn at g@#1\endcsname\relax%
+      \expandafter\gdef\csname svn at g@#1\endcsname{1}%
+      \svn at updategroup{#1}%
+    \fi
+  \fi
+}
+
+\def\svnignoreextensions#1{%
+  \@for\svn at temp:=#1\do{%
+    \expandafter\def\csname svn at ignore@ext@\svn at temp\endcsname{}%
+  }%
+}
+
+\def\svnconsiderextensions#1{%
+  \@for\svn at temp:=#1\do{%
+  \expandafter\let\csname svn at ignore@ext@\svn at temp\endcsname\relax%
+  }%
+}
+
+\svnignoreextensions{aux,bbl,fd,enc,fls,glo,idx,ilg,ind,ist,%
+lof,log,lot,out,svn,svt,svx,toc}
+
+\svnmulti at atendinputfile{%
+  \if at svnmulti@subgroups
+    \ifsvnsubgroups
+      \expandafter\ifx\csname svn at ignore@ext@\svn at fileext\endcsname\relax
+      \svnsubgroup
+      \fi
+    \fi
+  \fi
+}
+
+\if at svnmulti@subgroups
+  \ifsvnsubgroups
+    \svn at addfiletogroup{\jobname .\svn at mainext}{\jobname}%
+    \svnsubgroup
+  \fi
+\fi
+\AtBeginDocument{%
+  \if at svnmulti@subgroups
+    \ifsvnsubgroups
+      \@ifundefined{@svng@\svn at g @files}%
+        {%
+          \expandafter
+          \xdef\csname @svng@\svn at g @files\endcsname{\jobname}%
+        }%
+        {%
+          \expandafter
+          \xdef\csname @svng@\svn at g @files\endcsname
+            {\jobname,\csname @svng@\svn at g @files\endcsname}%
+        }%
+      \svnsubgroup
+    \fi
+  \fi
+}
+
+\fi
+
+\if at svnmulti@external
+
+\if at svnmulti@groups
+\def\svnexternalgroup#1{%
+  \svn at ifequal{#1}{*}%
+    {\def\svn at externalgroup{#1}}%
+    {\def\svn at externalgroup{\svn at g}}%
+}
+\def\svn at externalgroup{\svn at g}
+\else
+\def\svn at externalgroup{}
+\fi
+
+\if at svnmulti@autokw
+\newcommand*\svnexternal[2][]{%
+  \svn at pushfilestack
+  \svn at ifequal{#1}{*}%
+    {\edef\svn at eg{\svn at g}}%
+    {\svn at ifempty{#1}%
+      {\edef\svn at eg{\svn at externalgroup}}%
+      {\edef\svn at eg{#1}}%
+    }%
+  \svne@@external#2\relax
+  \svn at popfilestack
+}
+
+\def\svne@@external#1{%
+  \ifx\relax#1\empty\else
+    \svnegetfile{#1}%
+    \begingroup\svn at externalfile{\svn at eg}{#1}%
+    \expandafter\svne@@external
+  \fi
+}
+\else
+\newcommand*\svnexternal[2][]{%
+  \if at filesw
+    \svn at checkwrite
+    \begingroup
+      \svn at ifequal{#1}{*}%
+        {\def\svn at temp{\svn at g}}%
+        {\svn at ifempty{#1}%
+          {\def\svn at temp{\svn at externalgroup}}%
+          {\def\svn at temp{#1}}%
+        }%
+      \immediate\write\svn at write{%
+        \noexpand\@svnexternal[\svn at temp]{\svn at filepath}{#2}%
+      }%
+    \endgroup
+  \fi
+  \svn at inputsvx{\svn at filedir\svn at filebase}%
+}
+\fi
+
+\def\svnexternalpath#1{%
+  \if at filesw
+    \svn at checkwrite
+    \immediate\write\svn at write{%
+      \noexpand\@svnexternalpath{#1}%
+    }%
+  \fi
+}
+
+\newcommand*\@svnexternal[3][]{}
+\def\@svnexternalpath#1{}
+
+\newcommand*\svnexternalfile[1][\svn at filedir\svn at filebase]{%
+  \begingroup % TODO: maybe use \svn at catcodes
+    \catcode`\_=12
+    \catcode`\&=12
+    \catcode`\^=12
+    \catcode`\$=12
+    \catcode`\#=12
+    \svn at externalfile{#1}%
+}
+
+\def\svn at externalfile#1#2{%
+  \endgroup
+  \if at svnmulti@subgroups
+    \ifsvnsubgroups
+      \svn at ifequal{#1}{\svn at rg}%
+        {\svn at addfiletogroup{#2}{\svn at filedir\svn at filebase}}%
+        {\svn at addfiletogroup{#2}{#1}}%
+      \svn at subgroup{#2}%
+    \fi
+  \fi
+}
+
+\else
+  \def\svnexternalfile#1{}%
+\fi
+
+\if at svnmulti@autoload
+
+\svnmulti at atbegininputfile{%
+  \svn at ifequal{\svn at fileext}{tex}%
+    {\svn at inputsvx{\svn at filedir\svn at filebase}}%
+    {}%
+}
+
+%%\AtEndOfPackage{%
+\AtBeginDocument{%
+  \svn at inputsvx{\jobname}%
+}
+
+\fi
+
+
+\if at svnmulti@anygraphic
+
+\def\svngraphicsgroup#1{%
+  \svn at ifequal{#1}{*}%
+    {\def\svn at graphicsgroup{\svn at g}}%
+    {\def\svn at graphicsgroup{#1}}%
+}
+\def\svn at graphicsgroup{\svn at externalgroup}
+
+\def\svnignoregraphic#1{%
+  \expandafter\def\csname svn at ignoregraphic@#1\endcsname{}%
+}
+
+\def\svnconsidergraphic#1{%
+  \expandafter\let\csname svn at ignoregraphic@#1\endcsname\relax%
+}
+
+\fi
+
+\if at svnmulti@graphics
+\RequirePackage{graphics}[2006/02/20]
+
+\message{Package svn-multi: patching macro '\string\Gin at setfile' from the
+'graphics' package!}%
+\let\svnmulti at Gin@setfile\Gin at setfile
+\renewcommand*{\Gin at setfile}[3]{%
+  \expandafter\ifx\csname svn at ignoregraphic@#3\endcsname\relax%
+    \svnexternal[\svn at graphicsgroup]{{#3}}%
+  \fi
+  \svnmulti at Gin@setfile{#1}{#2}{#3}%
+}
+
+\fi
+
+\if at svnmulti@pgfimages
+\RequirePackage{pgf}[2008/01/15]
+
+\message{Package svn-multi: patching macro '\string\pgf at declareimage' and will
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/distr -r 628


More information about the Distr-commits mailing list