%% %% 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-2007 by Martin Scharrer %% %% 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 and svn-multi.ins %% and the derived files svn-multi.sty and svnkw.sty. %% %% DTX Id: $Id: svn-multi.dtx 628 2007-07-10 20:32:06Z martin $ \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{svn-multi} [2009/02/27 v1.4 SVN Keywords for multi-file LaTeX documents] \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} \def\svnrev{0} \def\svnfilerev{0} \def\@svn@rev{0} \def\svndate{} \def\svnfiledate{} \def\@svn@date{} \def\svnauthor{} \def\svnfileauthor{} \def\@svn@author{} \def\svnyear{0} \def\svnfileyear{0} \def\@svn@year{0} \def\svnmonth{0} \def\svnfilemonth{0} \def\@svn@month{0} \def\svnday{0} \def\svnfileday{0} \def\@svn@day{0} \def\svnhour{0} \def\svnfilehour{0} \def\@svn@hour{0} \def\svnminute{0} \def\svnfileminute{0} \def\@svn@minute{0} \def\svnsecond{0} \def\svnfilesecond{0} \def\@svn@second{0} \def\svntimezonehour{+00} \def\svnfiletimezonehour{+00} \def\@svn@timezonehour{+00} \def\svntimezoneminute{00} \def\svnfiletimezoneminute{00} \def\@svn@timezoneminute{00} \def\svnmainurl{NOT SET}\def\svnmainfilename{NOT SET} \def\svntimezone{\svntimezonehour\svntimezoneminute\svn@gobblezeros} \def\svnfiletimezone{\svnfiletimezonehour\svnfiletimezoneminute\svn@gobblezeros} \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 } \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}% \svnkwdef{Filename}{#1}% \svnkwdef{Date}{#3 #4}% \svnkwdef{Revision}{#2}% \svnkwdef{Author}{#5}% } \def\@svn@updateid#1#2#3{% #1 = rev, #2 date, #3 author (username) \xdef\svnfilerev{#1}% \xdef\svnfiledate{#2}% \xdef\svnfileauthor{#3}% \ifx\svnfilerev\empty\else \ifnum\@svn@rev<\svnfilerev \xdef\@svn@rev{#1}% \xdef\@svn@date{#2}% \xdef\@svn@author{#3}% \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}% \else\fi \fi } \newcommand{\svnidlong}{% \svnkwdef{HeadURL}{}% \svnkwdef{LastChangedDate}{}% \svnkwdef{LastChangedRevision}{0}% \svnkwdef{LastChangedBy}{}% \begingroup \svn@catcodes \catcode`\{=12 \catcode`\}=12 \svnidlong@readargsfull } \def\svn@catcodes{% \let\do\@makeother \dospecials \catcode`\^^M9 \catcode`\ 10 \catcode`\{1 \catcode`\}2 } \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 \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}}% \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 \catcode`\$=12 \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{\svnkwdef@{Rev}{#1}} \def\svnkwdef@Author#1{\svnkwdef@{Author}{#1}} \def\svnkwdef@Date#1{\svnkwdef@{Date}{#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} \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{% \def\svn@test{#2}% \ifx\svn@test\empty \svnkwdef{#1}{}% \else \svn@stripcolon#2\relax \svnkwdef{#1}{\svn@value}% \fi } \def\svn@stripcolon#1:\relax{% \def\svn@test{#1}% \ifx\svn@test\empty \gdef\svn@value{}% \else \ifx\svn@test\svn@spaceonly \gdef\svn@value{}% \else \svn@stripspace#1\relax\relax \fi\fi } \def\svn@spaceonly{ } \def\svn@stripspace#1#2\relax{% \def\svn@test{#1}% \ifx\svn@test\svn@spaceonly \gdef\svn@value{#2}% \else \svn@striptrailingspace#1#2\relax \fi } \def\svn@striptrailingspace#1 \relax{% \gdef\svn@value{#1}% } \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} {\edef\svnmainurl{\svnkw{HeadURL}} \edef\svnmainfilename{\svnkw{Filename}}} \AtBeginDocument{\svnsetmainfile} \newcommand{\svnRegisterAuthor}[2]{% \expandafter\def\csname svn@author@#1\endcsname{#2}% } \newcommand{\svnFullAuthor}{% \@ifnextchar{*} {\svnFullAuthor@star} {\svnFullAuthor@normal} } \def\svnFullAuthor@star*#1{\svnFullAuthor@{#1}{~(#1)}} \def\svnFullAuthor@normal#1{\svnFullAuthor@{#1}{}} \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{\svnFullRevision@{#1}{~(r#1)}} \def\svnFullRevision@normal#1{\svnFullRevision@{#1}{}} \def\svnFullRevision@#1#2{% \@ifundefined{svn@revision@#1} {Revision #1} {\csname svn@revision@#1\endcsname #2}% } \DeclareRobustCommand*{\svnnolinkurl}{% \@ifundefined{hyper@normalise} {\PackageWarning{svn-multi}{Package hyperref is needed for \noexpand \svnnolinkurl.}} {\hyper@normalise\svnnolinkurl@}}% \def\svnnolinkurl@#1{\Hurl{#1}} \AtEndDocument{% \if@filesw \ifx\@svn@rev\empty\else \ifnum\@svn@rev=0\else \ifx\@svn@date\empty\else \ifx\@svn@author\empty\else \newwrite\svn@write \immediate\openout\svn@write=\jobname.svn \immediate\write\svn@write{% \@percentchar\space SVN cache^^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% } \immediate\closeout\svn@write% \fi\fi\fi\fi\fi% } \InputIfFileExists{\jobname.svn}{}{} \endinput %% %% End of file `svn-multi.sty'.