summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-03-29 00:02:03 +0000
committerKarl Berry <karl@freefriends.org>2009-03-29 00:02:03 +0000
commit43a7105f048cdbdeda3ea4c6c6ebd31948e2c5f0 (patch)
tree7d948dc496a28981ad02eaab14ba2f02d2fca071 /Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
parenteaa8639264ba02c98a791e7a78bb22239841f79f (diff)
svn-multi 2.1 (28mar09)
git-svn-id: svn://tug.org/texlive/trunk@12558 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty')
-rw-r--r--Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty322
1 files changed, 298 insertions, 24 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
index 76550d11554..22d1d92e512 100644
--- a/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
+++ b/Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty
@@ -25,16 +25,16 @@
%% 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}
+\makeatletter
+\def\svnmulti@version {v2.1}
+\def\svnmulti@rev $#1: #2 ${\def\svnmulti@rev{#2}}
+\def\svnmulti@date $#1: #2-#3-#4 #5 ${\def\svnmulti@date{#2/#3/#4}}
+\svnmulti@rev $Rev: 691 $\relax
+\svnmulti@date $Date: 2009-03-27 21:37:56 +0000 (Fri, 27 Mar 2009) $\relax
+
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{svn-multi}
- [\filedate\space\fileversion\space SVN Keywords for multi-file LaTeX documents]
+ [\svnmulti@date\space\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
\RequirePackage{kvoptions}
@@ -44,6 +44,8 @@
}
\newif\if@svnmulti@anygraphic
\newif\if@svnmulti@autoload
+\newif\if@svnmulti@autokw
+\newif\if@svnmulti@autokwall
\DeclareVoidOption{old}{%
\@svnmulti@verbatimtrue
@@ -76,6 +78,7 @@
\DeclareStringOption{autoload}[true]
\DeclareBoolOption[false]{table}
\DeclareBoolOption[false]{filehooks}
+\DeclareStringOption[false]{autokw}[all]
\ExecuteOptions{old}
\ProcessKeyvalOptions{svn-multi}
@@ -136,6 +139,29 @@
! 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
@@ -188,6 +214,24 @@
\@secondoftwo
\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
@@ -195,14 +239,12 @@
\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{}
@@ -219,7 +261,7 @@
\def\svnurl{} \def\svnfname{}
\def\svn@temp{}
-\def\svn@pg{} \def\svn@g{} \def\svn@cg{\svn@g}
+\def\svn@pg{} \def\svn@g{} \def\svn@cg{\svn@g} \def\svn@rg{\svn@pg}
\let\@svng@@files\relax
\def\svn@initfile{%
@@ -236,8 +278,181 @@
\gdef\svnfiletimezoneminute{00}%
\gdef\svnfileurl{}%
\gdef\svnfilefname{}%
+ \gdef\svnfiledir{}%
}
\svn@initfile
+
+
+\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
+ \openin\svne@read=#1format\relax
+ \ifeof\svne@read\else
+ \svne@readline\svne@version
+ \closein\svne@read
+ \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
+ \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\relax
+ 0000-00-00T00:00:00.00000Z\relax\relax
+}
+
+\gdef\svne@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@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{%
+ \svn@ifequal{\svne@name}{\svnfilefname}%
+ {%
+ \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}
@@ -1004,8 +1219,8 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
}%
}
-\svnignoreextensions{aux,bbl,cfg,cls,fd,enc,fls,glo,idx,ilg,ind,ist,%
-lof,log,lot,out,sty,svn,svt,svx,toc}
+\svnignoreextensions{aux,bbl,fd,enc,fls,glo,idx,ilg,ind,ist,%
+lof,log,lot,out,svn,svt,svx,toc}
\svnmulti@atendinputfile{%
\if@svnmulti@subgroups
@@ -1017,10 +1232,25 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
\fi
}
+\if@svnmulti@subgroups
+ \ifsvnsubgroups
+ \svn@addfiletogroup{\jobname .\svn@mainext}{\jobname}%
+ \svnsubgroup
+ \fi
+\fi
\AtBeginDocument{%
\if@svnmulti@subgroups
\ifsvnsubgroups
- \svn@addfiletogroup{\jobname .\svn@mainext}{\jobname}%
+ \@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
@@ -1041,6 +1271,27 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
\def\svn@externalgroup{}
\fi
+\if@svnmulti@autokw
+\newcommand*\svnexternal[2][]{%
+ \svn@pushfilestack
+ \svn@ifequal{#1}{*}%
+ {\edef\svn@eg{\svn@g}}%
+ {\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
@@ -1058,6 +1309,7 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
\fi
\svn@inputsvx{\svn@filedir\svn@filebase}%
}
+\fi
\def\svnexternalpath#1{%
\if@filesw
@@ -1263,7 +1515,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
}
\def\svntable{%
- \begin{tabular}{p{0.425\textwidth}rp{0.25\textwidth}p{0.225\textwidth}}%
+ \begin{tabular}{p{0.425\textwidth}rll}%
\hline
}
\def\endsvntable{\hline\end{tabular}}
@@ -1339,14 +1591,21 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
\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}}%
- {\@svn@getfilename#2\relax}%
+ \svn@ifempty{#2}%
+ {%
+ \endgroup
+ \gdef\svnfilefname{#1}%
+ }%
+ {%
+ \xdef\svnfiledir{\svnfiledir#1/}%
+ \@svn@getfilename#2\relax
+ }%
}%
\@input{\jobname .svn}
@@ -1415,11 +1674,15 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
{%
\@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}%
+ {\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}%
+ }%
}%
}%
}{}%
@@ -1463,6 +1726,17 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
\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