|
|
- %%
- %% 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.
- %%
- \makeatletter
- \def\svnmulti@version{v2.3}
- \RequirePackage{svn-prov}
- \NeedsTeXFormat{LaTeX2e}[1999/12/01]
- \ProvidesPackageSVN
- {$Id: svn-multi.dtx 1866 2010-07-19 11:17:15Z martin $}
- [\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
-
- \RequirePackage{kvoptions}
-
- \SetupKeyvalOptions{%
- family = svn-multi,
- prefix = @svnmulti@
- }
- \newif\if@svnmulti@anygraphic
- \newif\if@svnmulti@autoload
- \newif\if@svnmulti@autokw
- \newif\if@svnmulti@autokwall
-
- \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}
- \DeclareStringOption[false]{autokw}[all]
-
- \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
-
- \def\svn@temp{true}
- \ifx\@svnmulti@autokw\svn@temp
- \@svnmulti@autokwtrue
- \@svnmulti@autokwalltrue
- \svn@depoption{filehooks}
- \fi
- \def\svn@temp{all}
- \ifx\@svnmulti@autokw\svn@temp
- \@svnmulti@autokwtrue
- \@svnmulti@autokwalltrue
- \svn@depoption{filehooks}
- \fi
- \def\svn@temp{ext}
- \ifx\@svnmulti@autokw\svn@temp
- \@svnmulti@autokwtrue
- \@svnmulti@autokwallfalse
- \fi
- \def\svn@temp{false}
- \ifx\@svnmulti@autokw\svn@temp
- \@svnmulti@autokwfalse
- \@svnmulti@autokwallfalse
- \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}%
- {\let\svn@temp\svn@revinit}%
- {\expandafter\edef
- \expandafter\svn@temp\expandafter{\csname #1\endcsname}}%
- \ifnum\svn@temp=\svn@revinit\relax
- \endgroup
- \expandafter
- \@secondoftwo
- \else
- \endgroup
- \expandafter
- \@firstoftwo
- \fi
- }
-
- \def\svn@ifeof#1{%
- \ifeof#1%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- }
-
- \def\svn@ifonlyone#1{%
- \expandafter\expandafter\expandafter
- \svn@@ifonlyone\csname @svng@#1@files\endcsname,\relax
- }
-
- \def\svn@@ifonlyone#1,#2\relax{%
- \svn@ifempty{#2}
- }
-
- \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
- \begingroup
- \svn@normalcatcodes
- \svn@input{#1.svx}%
- \endgroup
- \svn@popfilestack
- }
-
- \def\svn@normalcatcodes{%
- \catcode`\\=0\relax
- \catcode`\{=1\relax
- \catcode`\}=2\relax
- \catcode`\$=3\relax
- \catcode`\&=4\relax
- \catcode`\^^M=5\relax
- \catcode`\#=6\relax
- \catcode`\^=7\relax
- \catcode`\_=8\relax
- \catcode`\ =10\relax
- \catcode`\@=12\relax
- \catcode`\~=13\relax
- \catcode`\%=14\relax
- }
-
- \def\svn@revinit{-2}
- \let\svnrev\svn@revinit \let\@svn@rev\svn@revinit
- \let\ifsvnmodified\@secondoftwo
- \def\@svn@modified{@secondoftwo}%
- \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} \def\svn@rg{\svn@pg}
- \let\@svng@@files\relax
-
- \def\svn@initfile{%
- \global\let\svnfilerev\svn@revinit
- \global\let\ifsvnfilemodified\@secondoftwo
- \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@initfile
-
- \newif\ifsvn@modified
-
-
- \begingroup
- \@makeother\^^L
- \if@svnmulti@autokw
- \gdef\svne@ff{^^L}
- \fi
- \endgroup
-
- \if@svnmulti@autokw
- \newread\svne@read
-
- \newcommand*{\svne@catcodes}{%
- \let\do\@makeother
- \endlinechar=-1%
- \dospecials
- \do\-\do\:\do\.\do\^^L%
- }
-
- \def\svne@readline#1{%
- \ifeof\svne@read
- \def#1{}%
- \else
- \read\svne@read to #1\relax
- \fi
- }
-
- \def\svne@gobblerest{%
- \ifeof\svne@read
- \let\next\relax
- \else
- \read\svne@read to \svn@temp
- \ifx\svn@temp\svne@ff
- \let\next\relax
- \else
- \let\next\svne@gobblerest
- \fi
- \fi
- \next
- }
-
- \def\svne@endread{%
- \closein\svne@read
- }
-
- \newcommand*{\svne@parseentriesfile}[1]{%
- \begingroup
- \let\next\relax
- \def\svne@version{8}%
- \openin\svne@read=#1format\relax
- \ifeof\svne@read\else
- \svne@readline\svne@version
- \closein\svne@read
- \fi
- \ifnum\svne@version>7\relax
- \openin\svne@read=#1entries\relax
- \ifeof\svne@read\else
- \svne@catcodes
- \svne@readline\svne@version
- \ifnum\svne@version>7\relax
- \def\next{\svne@parsedirentry
- \svne@parseentries}%
- \else
- \closein\svne@read
- \fi
- \fi
- \fi
- \next
- \endgroup
- }
-
- \newcommand*{\svne@parsedirentry}{%
- \svne@readline\svne@name
- \svne@readline\svne@kind
- \svn@ifempty{\svne@name}%
- {\svn@ifequal{\svne@kind}{dir}%
- {%
- {\svne@readline\svn@temp}%
- \svne@readline\svne@baseurl
- \svne@gobblerest
- }{}%
- }{}%
- }
-
- \begingroup
-
- \@makeother\-
- \@makeother\:
- \@makeother\.
-
- \gdef\svne@scandate#1{%
- \expandafter\svne@scandate@#1\empty
- 0000-00-00T00:00:00.00000Z\empty\empty
- }
-
- \gdef\svne@scandate@#1-#2-#3T#4:#5:#6.#7\empty#8\empty{%
- \xdef\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@date{#1-#2-#3 #4:#5:#6Z}%
- }
-
- \endgroup
-
- \newcommand*{\svne@parseentries}{%
- \svn@ifeof{\svne@read}%
- {}%
- {%
- \svne@readline\svne@name
- \@onelevel@sanitize\svne@name
- \svn@ifeof{\svne@read}%
- {}%
- {%
- \svne@readline\svne@kind
- \svn@ifequal{\svne@kind}{file}%
- {%
- \svne@readline\svn@temp
- \svne@readline\svn@temp
- \svne@readline\svn@temp
- \svne@readline\svn@temp
- \svne@readline\svn@temp
- \svne@readline\svn@temp
- \svne@readline\svne@date
- \svne@readline\svne@rev
- \svne@readline\svne@author
- %\@onelevel@sanitize\svne@date
- \svne@scandate{\svne@date}%
- \edef\svne@url{\svne@baseurl/\svne@name}%
- \svne@handleentry
- }{}%
- \svne@gobblerest
- \svne@parseentries
- }%
- }%
- }
-
- \def\svne@handleentry{%
- \ifx\svne@rev\empty
- \let\svne@rev\svn@revinit
- \fi
- \svn@ifequal{\svne@name}{\svnfilefname}%
- {%
- \message{^^J%
- Read from '.svn/entries' file:^^J%
- Filename: \svne@name^^J%
- Date: \svne@date^^J%
- Revision: \svne@rev^^J%
- Author: \svne@author^^J%
- HeadURL: \svne@url^^J%
- ^^J%
- }%
- \svnkwdef{Filename}{\svne@name}%
- \svnkwdef{Date}{\svne@date}%
- \svnkwdef{Revision}{\svne@rev}%
- \svnkwdef{Author}{\svne@author}%
- \svnkwdef{HeadURL}{\svne@url}%
- \@svn@updateid{\svne@rev}{\svne@date}{\svne@author}{\svne@url}%
- \svne@endread
- }{}%
- }%
-
- \def\svnegetfile#1{%
- \begingroup
- \svn@getfilename{#1}%
- \edef\svnfilefname{\svnfilefname}%
- \@onelevel@sanitize\svnfilefname
- \svne@parseentriesfile{\svnfiledir .svn/}%
- \svne@parseentriesfile{\svnfiledir _svn/}%
- \endgroup
- }
-
- \if@svnmulti@autokwall
- \AtBeginDocument{%
- \svnegetfile{\jobname.\svn@mainext}%
- }
- \fi
-
- \fi
-
- \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}%
- \ifsvn@modified
- \global\let\ifsvnfilemodified\@firstoftwo
- \else
- \global\let\ifsvnfilemodified\@secondoftwo
- \fi
- \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@modified{\ifsvnfilemodified{@firstoftwo}{@secondoftwo}}%
- \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{URL}{}%
- \svnkwdef{Date}{}%
- \svnkwdef{Revision}{0}%
- \svnkwdef{Author}{}%
- \if@svnmulti@verbatim
- \expandafter\svnidlong@readverb
- \else
- \expandafter\svnidlong@readargs
- \fi
- }
- \def\svnidlong@readverb{%
- \@ifnextchar\bgroup
- {\svnidlong@readverb@\svnidlong@readverb@a}%
- {\PackageError{svn-multi}{Wrong syntax for \string\svnidlong}{}}%
- }
- \def\svnidlong@readverb@#1{%
- \begingroup
- \svn@catcodes
- \catcode`\{=1\relax
- \catcode`\}=2\relax
- #1%
- }
- \def\svnidlong@readverb@a#1{%
- \endgroup
- \svnkwsave@read #1\relax
- \@ifnextchar\bgroup
- {\svnidlong@readverb@\svnidlong@readverb@b}%
- {\PackageError{svn-multi}{Wrong syntax for \string\svnidlong}{}}%
- }
- \def\svnidlong@readverb@b#1{%
- \endgroup
- \svnkwsave@read #1\relax
- \@ifnextchar\bgroup
- {\svnidlong@readverb@\svnidlong@readverb@c}%
- {\PackageError{svn-multi}{Wrong syntax for \string\svnidlong}{}}%
- }
- \def\svnidlong@readverb@c#1{%
- \endgroup
- \svnkwsave@read #1\relax
- \@ifnextchar\bgroup
- {\svnidlong@readverb@\svnidlong@readverb@d}%
- {\PackageError{svn-multi}{Wrong syntax for \string\svnidlong}{}}%
- }
- \def\svnidlong@readverb@d#1{%
- \endgroup
- \svnkwsave@read #1\relax
- \ifx\svnkwDate\empty\else
- \@svn@scanlongdate{\svnkwDate}%
- \fi
- \@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}%
- {\svnkw{Author}}{\svnkw{URL}}%
- \ignorespaces
- }
-
- \if@svnmulti@verbatim
- \def\svn@catcodes{%
- \let\do\@makeother
- \dospecials
- \catcode`\^^M9
- \catcode`\ 10
- \catcode`\{1
- \catcode`\}2
- }
- \else
- \def\svn@catcodes{}
- \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\svnkwDate\empty\else
- \@svn@scanlongdate{\svnkwDate}%
- \fi
- \@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}%
- {\svnkw{Author}}{\svnkw{URL}}%
- \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}}%
- {%
- \afterassignment\svnkwdef@Rev@
- \@tempcnta=#1\relax
- }%
- }
- \def\svnkwdef@Rev@#1\relax{%
- \svnkwdef@{Rev}{\the\@tempcnta}%
- \def\svn@temp{#1}%
- \if M\svn@temp\relax
- \global\svn@modifiedtrue
- \else
- \if *\svn@temp\relax
- \global\svn@modifiedtrue
- \else
- \global\svn@modifiedfalse
- \fi
- \fi
- }
- \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@LastChangedDate=\svnkwdef@Date
- \def\svnkwRevision{\svnkwRev}
- \def\svnkwLastChangedRevision{\svnkwRev}
- \def\svnkwLastChangedBy{\svnkwAuthor}
- \def\svnkwLastChangedDate{\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}%
- {\def\next{\svn@removedotslash@##3\empty\empty\empty\relax}}%
- {\xdef#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}%
- \svn@pushfilestack
- \if@svnmulti@groups
- \svn@ifequal{\svn@filepath}{\jobname.\svn@mainext}%
- {\xdef\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}%
- \svn@popfilestack
- \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}%
- {\ifsvnfilemodified{@firstoftwo}{@secondoftwo}}%
- }\svn@filestack}%
- }
-
- \def\svn@restorefilekws#1#2\relax{%
- \svn@restorefilekws@#1\empty
- \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#7{%
- \gdef\svnfiletimezonehour{#1}%
- \gdef\svnfiletimezoneminute{#2}%
- \gdef\svnfileurl{#3}%
- \gdef\svnfilefname{#4}%
- \gdef\svn@g{#5}%
- \gdef\svn@pg{#6}%
- \expandafter\global\expandafter\let
- \expandafter\ifsvnfilemodified\csname#7\endcsname%
- }
-
- \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
- }
-
-
- \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}{\svn@revinit}%
- \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=\svn@revinit\else
- \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,fd,enc,fls,glo,idx,ilg,ind,ist,%
- lof,log,lot,out,svn,svt,svx,toc}
-
- \svnmulti@atendinputfile{%
- \if@svnmulti@subgroups
- \ifsvnsubgroups
- \expandafter\ifx\csname svn@ignore@ext@\svn@fileext\endcsname\relax
- \svnsubgroup
- \fi
- \fi
- \fi
- }
-
- \if@svnmulti@subgroups
- \ifsvnsubgroups
- \svn@addfiletogroup{\jobname .\svn@mainext}{\jobname}%
- \svnsubgroup
- \fi
- \fi
- \AtBeginDocument{%
- \if@svnmulti@subgroups
- \ifsvnsubgroups
- \@ifundefined{@svng@\svn@g @files@\jobname}%
- {%
- \@namedef{@svng@\svn@g @files@\jobname}{1}%
- \@ifundefined{@svng@\svn@g @files}%
- {%
- \expandafter
- \xdef\csname @svng@\svn@g @files\endcsname{\jobname}%
- }%
- {%
- \expandafter
- \xdef\csname @svng@\svn@g @files\endcsname
- {\jobname,\csname @svng@\svn@g @files\endcsname}%
- }%
- }{}%
- \svnsubgroup
- \fi
- \fi
- }
-
- \fi
-
- \if@svnmulti@external
-
- \if@svnmulti@groups
- \def\svnexternalgroup#1{%
- \svn@ifequal{#1}{*}%
- {\def\svn@externalgroup{\svn@pg}}%
- {\def\svn@externalgroup{#1}}%
- }
- \def\svn@externalgroup{\svn@pg}
- \else
- \def\svn@externalgroup{}
- \fi
-
- \if@svnmulti@autokw
- \newcommand*\svnexternal[2][]{%
- \svn@pushfilestack
- \svn@ifequal{#1}{*}%
- {\edef\svn@eg{\svn@pg}}%
- {\svn@ifempty{#1}%
- {\edef\svn@eg{\svn@externalgroup}}%
- {\edef\svn@eg{#1}}%
- }%
- \svne@@external#2\relax
- \svn@popfilestack
- }
-
- \def\svne@@external#1{%
- \ifx\relax#1\empty\else
- \svnegetfile{#1}%
- \begingroup\svn@externalfile{\svn@eg}{#1}%
- \expandafter\svne@@external
- \fi
- }
- \else
- \newcommand*\svnexternal[2][]{%
- \if@filesw
- \svn@checkwrite
- \begingroup
- \svn@ifequal{#1}{*}%
- {\def\svn@temp{\svn@pg}}%
- {\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}%
- }
- \fi
-
- \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@pg}}%
- {\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\relax
- \let\chapter\@undefined
- \fi
- \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{%
- \expandafter\ifx
- \csname if@twocolumn\expandafter\endcsname
- \csname iftrue\endcsname
- \@restonecoltrue\onecolumn
- \else
- \@restonecolfalse
- \fi
- \chapter*{\svnrevisionsname
- \@mkboth{\MakeUppercase\svnrevisionsname}{\MakeUppercase\svnrevisionsname}}%
- \svn@input{\jobname .\svn@svt}%
- \expandafter\ifx
- \csname if@restonecol\expandafter\endcsname
- \csname iftrue\endcsname
- \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}rll}%
- \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
- \gdef\svnfiledir{}%
- \edef\svn@temp{#1}%
- \expandafter\@svn@getfilename\svn@temp/{}\relax
- }%
-
- \def\@svn@getfilename#1/#2\relax{%
- \svn@ifempty{#2}%
- {%
- \endgroup
- \gdef\svnfilefname{#1}%
- }%
- {%
- \xdef\svnfiledir{\svnfiledir#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\let\noexpand\ifsvnmodified\@backslashchar\@svn@modified^^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@ifonlyone{\svn@file}%
- {\svn@writefilerow{\the\svn@grouplevel}%
- {\csname @svng@\svn@file @files\endcsname}}%
- {\svn@ifempty{\csname @svng@\svn@file @files\endcsname}%
- {}%
- {%
- \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
- }
-
- \if@svnmulti@autokwall
-
- \svnmulti@atbegininputfile{%
- \expandafter
- \ifx\csname svn@ignore@ext@\svn@fileext\endcsname\relax
- \svnegetfile{\svn@filepath}%
- \fi
- }
-
- \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'.
|