summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/svn-multi.pl4
-rw-r--r--Master/texmf-dist/doc/latex/svn-multi/README2
-rw-r--r--Master/texmf-dist/doc/latex/svn-multi/example.pdfbin43038 -> 42960 bytes
-rw-r--r--Master/texmf-dist/doc/latex/svn-multi/svn-multi.pdfbin1136846 -> 1232969 bytes
-rwxr-xr-xMaster/texmf-dist/scripts/svn-multi/svn-multi.pl4
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/Makefile3
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/svn-multi-pl.dtx29
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx565
-rw-r--r--Master/texmf-dist/tex/latex/svn-multi/svn-multi.sty322
-rw-r--r--Master/texmf-dist/tex/latex/svn-multi/svnkw.sty18
10 files changed, 838 insertions, 109 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/svn-multi.pl b/Build/source/texk/texlive/linked_scripts/svn-multi.pl
index 68159ee1213..b98168f7dcc 100755
--- a/Build/source/texk/texlive/linked_scripts/svn-multi.pl
+++ b/Build/source/texk/texlive/linked_scripts/svn-multi.pl
@@ -8,7 +8,7 @@
# E-mail: martin@scharrer-online.de
# WWW: http://www.scharrer-online.de/latex/svn-multi/
#
-# $Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $
+# $Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $
#
# This program works only in combination with the LaTeX package 'svn-multi' and
# generates .svx files with '\svnidlong' macros holding Subversion keywords for
@@ -57,7 +57,7 @@ use warnings;
use File::Basename;
my $VERSION = "0.2";
my ($REV,$DATE) =
- (split ' ','$Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $')[2,3];
+ (split ' ','$Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $')[2,3];
my $dollar = '$';
my @PATH;
diff --git a/Master/texmf-dist/doc/latex/svn-multi/README b/Master/texmf-dist/doc/latex/svn-multi/README
index 7b5ef2e18a5..e50ba810df2 100644
--- a/Master/texmf-dist/doc/latex/svn-multi/README
+++ b/Master/texmf-dist/doc/latex/svn-multi/README
@@ -1,6 +1,6 @@
--------------------------------------------------------------
svn-multi (was svnkw)
- version 2.0, Mar 23rd, 2009
+ version 2.1, Mar 27th, 2009
--------------------------------------------------------------
This package lets you typeset keywords of the version
diff --git a/Master/texmf-dist/doc/latex/svn-multi/example.pdf b/Master/texmf-dist/doc/latex/svn-multi/example.pdf
index 5a5f1435065..e96fecb03c0 100644
--- a/Master/texmf-dist/doc/latex/svn-multi/example.pdf
+++ b/Master/texmf-dist/doc/latex/svn-multi/example.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/svn-multi/svn-multi.pdf b/Master/texmf-dist/doc/latex/svn-multi/svn-multi.pdf
index 32bf5183d6f..454fee78ef6 100644
--- a/Master/texmf-dist/doc/latex/svn-multi/svn-multi.pdf
+++ b/Master/texmf-dist/doc/latex/svn-multi/svn-multi.pdf
Binary files differ
diff --git a/Master/texmf-dist/scripts/svn-multi/svn-multi.pl b/Master/texmf-dist/scripts/svn-multi/svn-multi.pl
index 68159ee1213..b98168f7dcc 100755
--- a/Master/texmf-dist/scripts/svn-multi/svn-multi.pl
+++ b/Master/texmf-dist/scripts/svn-multi/svn-multi.pl
@@ -8,7 +8,7 @@
# E-mail: martin@scharrer-online.de
# WWW: http://www.scharrer-online.de/latex/svn-multi/
#
-# $Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $
+# $Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $
#
# This program works only in combination with the LaTeX package 'svn-multi' and
# generates .svx files with '\svnidlong' macros holding Subversion keywords for
@@ -57,7 +57,7 @@ use warnings;
use File::Basename;
my $VERSION = "0.2";
my ($REV,$DATE) =
- (split ' ','$Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $')[2,3];
+ (split ' ','$Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $')[2,3];
my $dollar = '$';
my @PATH;
diff --git a/Master/texmf-dist/source/latex/svn-multi/Makefile b/Master/texmf-dist/source/latex/svn-multi/Makefile
index fc3662c8d2b..b6b663f2aa2 100644
--- a/Master/texmf-dist/source/latex/svn-multi/Makefile
+++ b/Master/texmf-dist/source/latex/svn-multi/Makefile
@@ -75,7 +75,8 @@ group_example.pdf: group_example.tex svn-multi.sty
zip: fullclean package doc example tests ${ZIPFILE}
${PACKAGE}.zip: zip
-zip: ZIPVERSION=$(shell grep '\\def\\fileversion{.*}' svn-multi.dtx | sed -e 's/\\def\\fileversion{\(.*\)}/\1/' -e 's/\s\+//g')
+zip: ZIPVERSION=$(shell grep 'Package: svn-multi ' svn-multi.log | \
+ sed -e 's/.*Package: svn-multi ....\/..\/..\s\+\(v\S\+\).*/\1/')
${ZIPFILE}: ${PACKFILES}
grep -q '\* Checksum passed \*' svn-multi.log
diff --git a/Master/texmf-dist/source/latex/svn-multi/svn-multi-pl.dtx b/Master/texmf-dist/source/latex/svn-multi/svn-multi-pl.dtx
index cd849921e65..c6b881819a2 100644
--- a/Master/texmf-dist/source/latex/svn-multi/svn-multi-pl.dtx
+++ b/Master/texmf-dist/source/latex/svn-multi/svn-multi-pl.dtx
@@ -12,7 +12,7 @@
# E-mail: martin@scharrer-online.de
# WWW: http://www.scharrer-online.de/latex/svn-multi/
#
-# $Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $
+# $Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $
#
# This program works only in combination with the LaTeX package 'svn-multi' and
# generates .svx files with '\svnidlong' macros holding Subversion keywords for
@@ -58,14 +58,19 @@
#
%<*driver>
\fi
-\def\filedate$#1: #2 #3 #4-#5-#6 #7 ${%
- \year#4\month#5\day#6\relax
- \def\filedate{#4/#5/#6}%
+\makeatletter
+% $Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $
+\def\svnmultipl@version {v0.1a}
+\def\svnmultipl@rev $#1: #2 ${\def\svnmultipl@rev{#2}}
+\def\svnmultipl@date $#1: #2-#3-#4 #5 ${%
+ \def\svnmultipl@today{{\year#2\month#3\day#4\today}}%
+ \def\svnmultipl@date{#2/#3/#4}%
}
-\filedate$Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $
-\def\fileversion{v0.1}
+\svnmultipl@rev $Rev: 692 $
+\svnmultipl@date $Date: 2009-03-27 21:38:45 +0000 (Fri, 27 Mar 2009) $
+
\ProvidesFile{svn-multi-pl.dtx}
- [\filedate\space\fileversion\space SVN Keywords extractor for svn-multi]
+ [\svnmultipl@date\space\svnmultipl@version\space SVN Keywords extractor for svn-multi]
\documentclass{ltxdoc}
\usepackage{ifpdf}
@@ -123,10 +128,12 @@
% }
% \iffalse " \fi
%
-% \title{The \textsf{svn-multi.pl} script\thanks{This document
-% corresponds to \textsf{svn-multi.pl}~\fileversion, dated \filedate.}}
+% \title{The \textsf{svn-multi.pl} Script}
% \author{Martin Scharrer \\ \url{martin@scharrer-online.de} \\
-% \url{http://www.scharrer-online.de/latex/svn-multi}}
+% \url{http://www.scharrer-online.de/latex/svn-multi} \\
+% CTAN: \url{http://tug.ctan.org/pkg/svn-multi}}
+% \date{Version \expandafter\@gobble\svnmultipl@version\\[0.5ex]\svnmultipl@today}
+%
%
% \ifpdf
% \hypersetup{
@@ -159,7 +166,7 @@ use File::Basename;
% \begin{macrocode}
my $VERSION = "0.2";
my ($REV,$DATE) =
- (split ' ','$Id: svn-multi-pl.dtx 591 2009-03-19 18:08:07Z martin $')[2,3];
+ (split ' ','$Id: svn-multi-pl.dtx 692 2009-03-27 21:38:45Z martin $')[2,3];
% \end{macrocode}
% Declaration of other global constants and variables:
diff --git a/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx b/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx
index 8b33547727d..c5e3f0af0c2 100644
--- a/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx
+++ b/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx
@@ -17,24 +17,35 @@
%
% This work consists of the files svn-multi.dtx and svn-multi.ins
% and the derived files svn-multi.sty and svnkw.sty.
-% $Id: svn-multi.dtx 621 2009-03-23 12:26:36Z martin $
+%
+% <*driver>
+\makeatletter
+% </driver>
% \fi
% \iffalse
-%<*package|driver|wrapper>
-\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}
-%</package|driver|wrapper>
+%<*package|driver>
+% $Id: svn-multi.dtx 691 2009-03-27 21:37:56Z martin $
+%
+\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
+
+%</package|driver>
%<*driver>
\ProvidesFile{svn-multi.dtx}
- [\filedate\space\fileversion\space SVN Keywords for multi-file LaTeX documents]
+ [\svnmulti@date\space\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
+
+\def\svnmulti@date $#1: #2-#3-#4 #5 $ {%
+ \def\svnmulti@today{{\year#2\month#3\day#4\today}}%
+ \def\svnmulti@date{#2/#3/#4}%
+}
+\svnmulti@date $Date: 2009-03-27 21:37:56 +0000 (Fri, 27 Mar 2009) $
\documentclass{ltxdoc}
-\usepackage{svn-multi}
+
+\usepackage{svn-multi}[\svnmulti@date]
\usepackage{booktabs}
\usepackage{ifpdf}
\ifpdf
@@ -98,8 +109,9 @@
\newcommand{\macrohlinkprefix}{desc}
\newcommand{\macrolink}{}
+\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\usepackage{lmodern}
+\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{}%
\def\DescribeMacro{\@ifnextchar*{\DescribeMacroS}{\DescribeMacroN}}
\def\DescribeMacroN{%
@@ -275,7 +287,7 @@
%<*package>
% \fi
%
-% \CheckSum{2264}
+% \CheckSum{2638}
%
% {\makeatother
% \CharacterTable
@@ -316,6 +328,8 @@
% \cs{svnfiletoday}.}
% \changes{v2.0}{2009/03/23}{New features: keyword groups, external file
% support, auto-include of images, files as subgroups and table of revisions.}
+% \changes{v2.1}{2009/03/27}{Added automatic extraction of keywords from
+% Subversion 'entries' file: 'autokw' option}
%
% ^^A \GetFileInfo{svn-multi.dtx}
%
@@ -330,7 +344,7 @@
% \DoNotIndex{\^,\ ,\_,\(,\),\$,\&,\#,\@ampersamchar,\AtEndOfPackage}
% \DoNotIndex{\@backslashchar,\begin,\bgroup,\chapter,\day}
% \DoNotIndex{\DeclareOption,\do,\dospecials,\@dottedtocline,\egroup}
-% \DoNotIndex{\end,\ExecuteOptions,\filedate,\fileversion,\@for}
+% \DoNotIndex{\end,\ExecuteOptions,\svnmulti@date,\svnmulti@version,\@for}
% \DoNotIndex{\futurelet,\g@addto@macro,\global,\@gobbletwo,\hline}
% \DoNotIndex{\hspace,\if@restonecol,\if@twocolumn,\ignorespaces}
% \DoNotIndex{\makeatletter,\MakeUppercase,\@mkboth,\month,\@namedef}
@@ -346,17 +360,18 @@
% \DoNotIndex{\ProcessKeyvalOptions,\SetupKeyvalOptions}
% \DoNotIndex{\@firstoftwo,\@secondoftwo,\@gobble}
%
-% \title{The \textsf{svn-multi} package \\ formerly known as \textsf{svnkw}}
+% \title{The \textsf{svn-multi} Package \\\large formerly known as
+% \textsf{svnkw}}
% \author{Martin Scharrer \\ \url{martin@scharrer-online.de} \\
% \url{http://www.scharrer-online.de/latex/svn-multi}\\
% CTAN: \url{http://tug.ctan.org/pkg/svn-multi}}
-% \date{Version \expandafter\@gobble\fileversion\\[0.5ex]\today}
+% \date{Version \expandafter\@gobble\svnmulti@version\\[0.5ex]\svnmulti@today}
%
% \ifpdf
% \hypersetup{%
% pdfauthor = {Martin Scharrer <martin@scharrer-online.de>},
-% pdftitle = {The svn-multi package, \fileversion, r\filerev\ from
-% \filedate},
+% pdftitle = {The svn-multi package, \svnmulti@version, r\svnmulti@rev\
+% from \svnmulti@date},
% pdfsubject = {Documentation of LaTeX package svn-multi which allows the
% typesetting of Subversion keywords in multi-file LaTeX
% documents},
@@ -366,6 +381,8 @@
% \fi
% \maketitle
%
+% \vfill
+%
% \section{Introduction}
% This package allows to typeset version control (VC) information provided by
% Subversion\footnote{Subversion homepage: \url{http://subversion.tigris.org/}}
@@ -390,6 +407,7 @@
% \item Including of the VC information of external files.
% \item Table of Revisions.
% \end{itemize}
+% \newpage
%
% \subsection{Scope of Keywords}
% This package provides the Subversion keyword data in several different scopes:
@@ -466,7 +484,7 @@
% other options below. This is the default for reasons mentioned above.
%
% \DescribeOption{all}
-% Activates all features of the package.
+% Activates all features of the package except of the experimental ones.
%
% \DescribeOption{verbatim}
% Controls the verbatim mode of the keyword parser macros. Normally verbatim
@@ -477,9 +495,8 @@
%
% \DescribeOption{external}
% Controls the support for keywords from external files described in
-% section~\ref{sec:external}. An old |.svn| file should be removed when this
-% feature is deactivated to avoid \textit{undefined macro} errors caused by
-% macros placed there by this feature.
+% section~\ref{sec:external}. This needs either the external script
+% \scr{svn-multi.pl} or the \op{autokw} option.
%
% If the \op{groups} option is enabled the macro
% \csi{svnexternalgroup}\marg{group name} can be used to declare a own group
@@ -552,7 +569,41 @@
% manually to ensure that the file-local macros are reset to empty values at
% the begin of each input file. This prevents the keyword from leaking over
% from one file to the next. After every subfile the file-local keyword macros
-% are also restored to the value of the parent file.
+% are also restored to the value of the parent file.
+%
+% \DescribeOption{autokw}
+% This experimental feature allows the automatically extraction of the keyword
+% values from the hidden Subversion working copy database. The database (a text
+% file called `|entries|') is located in the hidden Subversion directory
+% `|.svn|' (or `|_svn|' on some Windows installations) inside every directory
+% which is under VC.
+%
+% This feature makes an external script like \scr{svn-multi.pl} or even keyword
+% macros redundant as long the files are inside a Subversion working directory.
+% However, this feature does not work if the files are exported (\eg with
+% \texttt{svn~export}) or manually copied and also depends on the used version
+% of Subversion. Only versions starting with 1.4 (with working copy format
+% version 7) are supported. Earlier version used a different format for the
+% |entries| file. Newer versions should be compatible as long the basic format
+% is not changed again.
+%
+% The experimental status will be lifted after the feature was tested using
+% different Subversion versions on different platforms. Please do not hesitate
+% to send error reports to the package author. Minimal examples and information
+% about the used Subversion version and platform are very much appreciated.
+%
+% This option allows the following values:
+% \begin{description}
+% \item[\texttt{false}] Feature is disabled (default).
+% \item[\textnormal{\sffamily No value or \textbf{\texttt{true}} or
+% \textbf{\texttt{all}}}] The keywords of all files are automatically
+% extracted. No \cs{svnid} or \cs{svnidlong} macros or external scripts are
+% necessary as long the files are inside a Subversion working directory and
+% not exported.
+% \item[\texttt{ext}] Only the keywords of external files are extracted. This
+% avoids the need of the \scr{svn-multi.pl} script. The option \op{external}
+% must be still enabled manually.
+% \end{description}
%
% \subsection{Including Subversion Keywords}\label{sec:usage:id}
% Subversion keywords are included using \cs{svnid} or \cs{svnidlong}. These
@@ -1333,7 +1384,7 @@
% \begin{macrocode}
\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]
% \end{macrocode}
% \subsubsection*{Options}
@@ -1347,6 +1398,8 @@
}
\newif\if@svnmulti@anygraphic
\newif\if@svnmulti@autoload
+\newif\if@svnmulti@autokw
+\newif\if@svnmulti@autokwall
\DeclareVoidOption{old}{%
\@svnmulti@verbatimtrue
@@ -1379,6 +1432,7 @@
\DeclareStringOption{autoload}[true]
\DeclareBoolOption[false]{table}
\DeclareBoolOption[false]{filehooks}
+\DeclareStringOption[false]{autokw}[all]
\ExecuteOptions{old}
\ProcessKeyvalOptions{svn-multi}
@@ -1448,6 +1502,32 @@
\fi\fi\fi\fi
% \end{macrocode}
+% Set \op{autokw} modes:
+% \begin{macrocode}
+\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
+% \end{macrocode}
+
% General switch if any graphic option is enabled:
% \begin{macrocode}
\if@svnmulti@graphics
@@ -1525,7 +1605,35 @@
}
% \end{macrocode}
% \end{macro}
-%
+
+% \begin{macro}{\svn@ifeof}[1]{input file handle}
+% Checks if the input file is at the end-of-file (or not open).
+% \begin{macrocode}
+\def\svn@ifeof#1{%
+ \ifeof#1%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svn@ifonlyone}[1]{group name}
+% Checks if there is only one element in the given group file list.
+% It looks whether there is a comma in the list.
+% \begin{macrocode}
+\def\svn@ifonlyone#1{%
+ \expandafter\expandafter\expandafter
+ \svn@@ifonlyone\csname @svng@#1@files\endcsname,\relax
+}
+
+\def\svn@@ifonlyone#1,#2\relax{%
+ \svn@ifempty{#2}
+}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\svn@input}[1]{file name/path}
% Macro to load |.svx| and |.svt| files. The current keyword group is saved
% away and restored after the |.svx| file is loaded. The macros |\IfFileExists|
@@ -1541,7 +1649,7 @@
}
% \end{macrocode}
% \end{macro}
-%
+
% \begin{macro}{\svn@inputsvx}[1]{file name/path without extension}
% Used to save and restore file keywords when reading |.svx| files.
% \begin{macrocode}
@@ -1552,16 +1660,6 @@
}
% \end{macrocode}
% \end{macro}
-%
-% \begin{macro}{\@namexdef}[1]{macro name}
-% Provides an expanding and global version of |\@namedef|.
-% \begin{macrocode}
-\providecommand\@namexdef[1]{%
- \expandafter\xdef\csname #1\endcsname
-}
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Definition of init values}
% Initialisation of at least the revision to a numeric value is necessary to not
@@ -1599,7 +1697,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{%
@@ -1616,10 +1714,273 @@
\gdef\svnfiletimezoneminute{00}%
\gdef\svnfileurl{}%
\gdef\svnfilefname{}%
+ \gdef\svnfiledir{}%
}
\svn@initfile
% \end{macrocode}
+
+% \subsection{Auto-Keywords}
+
+% Special care must be taken for the line feed character, otherwise it causes an
+% error if \op{autokw} is disabled.
+% \begin{macrocode}
+\begingroup
+\@makeother\^^L
+\if@svnmulti@autokw
+\gdef\svne@ff{^^L}
+\fi
+\endgroup
+% \end{macrocode}
+
+% \begin{macrocode}
+\if@svnmulti@autokw
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newread\svne@read
+% \end{macrocode}
+
+% \begin{macro}{\svne@catcodes}
+% Sets the catcodes for verbatim input reading. Also removes the end-of-line
+% character.
+% \begin{macrocode}
+\newcommand*{\svne@catcodes}{%
+ \let\do\@makeother
+ \endlinechar=-1
+ \dospecials
+ \do\- \do\: \do\. \do\^^L
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@readline}[1]{macro}
+% Reads the next line to the provided macro and handles the end-of-file case
+% correctly.
+% \begin{macrocode}
+\def\svne@readline#1{%
+ \ifeof\svne@read
+ \def#1{}%
+ \else
+ \read\svne@read to #1\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@gobblerest}
+% Gobbles the rest of the current entry.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@endread}
+% Stops the reading process of the entries file.
+% \begin{macrocode}
+\def\svne@endread{%
+ \closein\svne@read
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@parseentriesfile}[1]{file path}
+% \begin{macrocode}
+\newcommand*{\svne@parseentriesfile}[1]{%
+ \begingroup
+ \let\next\relax
+% \end{macrocode}
+% Open the format file to read the version number:
+% \begin{macrocode}
+ \openin\svne@read=#1format\relax
+ \ifeof\svne@read\else
+ \svne@readline\svne@version
+ \closein\svne@read
+% \end{macrocode}
+% Check the format version:
+% \begin{macrocode}
+ \ifnum\svne@version>7\relax
+% \end{macrocode}
+% Now open the entries file and read the version number from there again.
+% \begin{macrocode}
+ \openin\svne@read=#1entries\relax
+ \ifeof\svne@read\else
+ \svne@catcodes
+ \svne@readline\svne@version
+% \end{macrocode}
+% Check the version and call the parse macros if OK:
+% \begin{macrocode}
+ \ifnum\svne@version>7\relax
+ \def\next{\svne@parsedirentry%
+ \svne@parseentries}
+ \else
+ \closein\svne@read
+ \fi
+ \fi
+ \fi
+ \fi
+ \next
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@parsedirentry}
+% Reads the first entry which is the directory entry and sets its URL as base
+% URL for all other entries.
+% \begin{macrocode}
+\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
+ }{}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@scandate}
+% \begin{macro}{\svne@scandate@}
+% Parses the date from the svn entries file. Special care is taken to handle the
+% case when the TeX parsing would fail. The catcode of the characters '|-|',
+% '|:|', '|.|' used inside the date is set explicitly to ensure the correct
+% value.
%
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{\svne@parseentries}
+% \begin{macrocode}
+\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
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svne@handleentry}
+% This macro is called for every entry except the first one which stands for the
+% directory. The VC data is located in the following macros: \csi{svne@name},
+% \csi{svne@date}, \csi{svne@rev}, \csi{svne@author}, \csi{svne@url}.
+%
+% This implementation sets the correct keywords and calls the update macro to
+% emulate the behaviour of \cs{svnidlong}. Then the \cs{svne@endread} macro is
+% used to stop the file reading.
+% \begin{macrocode}
+\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
+ }{}%
+}%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\svnegetfile}[1]{file path}
+% \begin{macrocode}
+\def\svnegetfile#1{%
+ \begingroup
+ \svn@getfilename{#1}%
+ \edef\svnfilefname{\svnfilefname}%
+ \@onelevel@sanitize\svnfilefname
+ \svne@parseentriesfile{\svnfiledir .svn/}%
+ \svne@parseentriesfile{\svnfiledir _svn/}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+
+% Load keywords of main document at begin of the document body if option is set
+% to 'all'.
+% \begin{macrocode}
+\if@svnmulti@autokwall
+\AtBeginDocument{%
+ \svnegetfile{\jobname.\svn@mainext}%
+}
+\fi
+% \end{macrocode}
+
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+
+
% \subsection{Timezone macros}
% \begin{macro}{\svntimezone}
% \begin{macro}{\svnfiletimezone}
@@ -2987,8 +3348,8 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
% The following extensions are ignored by default.
% \begin{macrocode}
-\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}
% \end{macrocode}
% Check at the end of every input file if files should be extra groups and
@@ -3005,11 +3366,29 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
}
% \end{macrocode}
+% The main file is added to the main base name (|\jobname|) subgroup here. This
+% subgroup is added as first element to the active group at begin of the
+% document body.
% \begin{macrocode}
+\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
@@ -3045,7 +3424,37 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\svnexternal}[2]{group name}{list of filenames in \texttt{\{ \}}}
+% \begin{macro}{\svnexternal}[2]{group name}{list of filenames in \texttt{\{
+% \}}}
+% \begin{macrocode}
+\if@svnmulti@autokw
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\else
+% \end{macrocode}
% Writes the current input file path and its argument as arguments of
% \cs{@svnexternal} into the |.svn| file.
% \begin{macrocode}
@@ -3067,6 +3476,9 @@ lof,log,lot,out,sty,svn,svt,svx,toc}
\svn@inputsvx{\svn@filedir\svn@filebase}%
}
% \end{macrocode}
+% \begin{macrocode}
+\fi
+% \end{macrocode}
% \end{macro}
% \begin{macro}{\svnexternalpath}[1]{list of paths in \texttt{\{ \}}}
@@ -3430,7 +3842,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% \begin{macro}{\svntable}
% \begin{macrocode}
\def\svntable{%
- \begin{tabular}{p{0.425\textwidth}rp{0.25\textwidth}p{0.225\textwidth}}%
+ \begin{tabular}{p{0.425\textwidth}rll}%
\hline
}
% \end{macrocode}
@@ -3621,6 +4033,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% \begin{macrocode}
\def\svn@getfilename#1{%
\begingroup
+ \gdef\svnfiledir{}%
\edef\svn@temp{#1}%
\expandafter\@svn@getfilename\svn@temp/{}\relax
}%
@@ -3635,9 +4048,15 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% split the remainder.
% \begin{macrocode}
\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
+ }%
}%
% \end{macrocode}
% \end{macro}
@@ -3741,18 +4160,34 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
\advance\svn@grouplevel by 1\relax
\expandafter\let
\expandafter\svn@files\csname @svng@#1@files\endcsname
+% \end{macrocode}
+% Stop if no files in list.
+% \begin{macrocode}
\ifx\svn@files\relax\else
\svn@cleanfilelist\svn@files
\@for\svn@file:=\svn@files\do{%
+% \end{macrocode}
+% Check if VC data is set and then if it is a (sub)group or not by looking at
+% the file list.
+% \begin{macrocode}
\svn@ifvalidrev{@svng@\svn@file @rev}%
{%
\@ifundefined{@svng@\svn@file @files}%
{\svn@writefilerow{\the\svn@grouplevel}{\svn@file}}%
- {\svn@ifequal{\csname @svng@\svn@file @files\endcsname}{\svn@file.tex}%
- {\svn@writefilerow{\the\svn@grouplevel}{\svn@file.tex}}%
- {%
- \svn@writesubgrouprow{\the\svn@grouplevel}{\svn@file}%
- \svn@writegroupfiles{\svn@file}%
+% \end{macrocode}
+% If subgroup only contains out of a TeX file with the same name print it as
+% file and only as subgroup otherwise. If the subgroup file list is empty the
+% subgroup was generated in error and is not printed at all.
+% \begin{macrocode}
+ {\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}%
+ }%
}%
}%
}{}%
@@ -3817,6 +4252,24 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% \end{macrocode}
% \end{macro}
+% Load the keywords of every subfile if the \op{autokw} option is enabled and
+% the extension is not on the ignore list.
+%
+% This code is placed here because it has to come after the at-begin-input-file
+% code.
+% \begin{macrocode}
+\if@svnmulti@autokwall
+
+\svnmulti@atbegininputfile{%
+ \expandafter
+ \ifx\csname svn@ignore@ext@\svn@fileext\endcsname\relax
+ \svnegetfile{\svn@filepath}%
+ \fi
+}
+
+\fi
+% \end{macrocode}
+
% At the end of document the values are written to the auxiliary file.
% \begin{macrocode}
\AtEndDocument{%
@@ -3842,11 +4295,11 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{svnkw}
-[\filedate\space\fileversion\space Backward compatibility wrapper for svn-multi]
-\PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi'
-and is now only a backward compatibility wrapper which loads 'svn-multi'.
-Please adjust your document preamble to use the new name.}
-\RequirePackage{svn-multi}[\filedate]
+ [2009/03/27 v2.1 Backward compatibility wrapper for svn-multi]
+\PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi' and is now
+only a backward compatibility wrapper which loads 'svn-multi'. Please adjust
+your document preamble to use the new name.}
+\RequirePackage{svn-multi}
% \end{macrocode}
% \iffalse
%</wrapper>
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
diff --git a/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty b/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty
index 190ab159052..b3aa179102a 100644
--- a/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty
+++ b/Master/texmf-dist/tex/latex/svn-multi/svnkw.sty
@@ -25,20 +25,14 @@
%% 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
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{svnkw}
-[\filedate\space\fileversion\space Backward compatibility wrapper for svn-multi]
-\PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi'
-and is now only a backward compatibility wrapper which loads 'svn-multi'.
-Please adjust your document preamble to use the new name.}
-\RequirePackage{svn-multi}[\filedate]
+ [2009/03/27 v2.1 Backward compatibility wrapper for svn-multi]
+\PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi' and is now
+only a backward compatibility wrapper which loads 'svn-multi'. Please adjust
+your document preamble to use the new name.}
+\RequirePackage{svn-multi}
\endinput
%%
%% End of file `svnkw.sty'.