summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/svn-multi
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-11-22 19:02:28 +0000
committerKarl Berry <karl@freefriends.org>2009-11-22 19:02:28 +0000
commitf416cde919529b4cc1dbde7a502981b7665cb0cf (patch)
treebdf6c00d65fabbfd3cd0dcd8914946a696a1e91a /Master/texmf-dist/source/latex/svn-multi
parent5c1ac0551ac7f6c96e8b09c1ba7b1f2ecb2e864d (diff)
svn-multi 2.2 (20oct09)
git-svn-id: svn://tug.org/texlive/trunk@16125 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/svn-multi')
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/Makefile114
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/example_chap1.tex52
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/example_main.tex71
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/group_example.tex371
-rw-r--r--Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx145
5 files changed, 673 insertions, 80 deletions
diff --git a/Master/texmf-dist/source/latex/svn-multi/Makefile b/Master/texmf-dist/source/latex/svn-multi/Makefile
index 719834dda14..e5964b0c68a 100644
--- a/Master/texmf-dist/source/latex/svn-multi/Makefile
+++ b/Master/texmf-dist/source/latex/svn-multi/Makefile
@@ -1,57 +1,70 @@
-# $Id: Makefile 628 2007-07-10 20:32:06Z martin $
+# $Id: Makefile 1052 2009-05-03 12:24:53Z martin $
+
+PACKAGE = svn-multi
+PACKAGE_STY = ${PACKAGE}.sty
+PACKAGE_DTX = ${PACKAGE}.dtx ${PACKAGE}-pl.dtx
+PACKAGE_SCR = ${PACKAGE}.pl
+PACKAGE_DOC = $(PACKAGE_DTX:.dtx=.pdf)
+PACKAGE_SRC = ${PACKAGE_DTX} ${PACKAGE}.ins Makefile example_chap1.tex example_main.tex group_example.tex
+PACKFILES = ${PACKAGE_SRC} ${PACKAGE_DOC} README
+
+TEXAUX = *.aux *.log *.glo *.ind *.idx *.out *.svn *.svx *.svt *.toc *.ilg *.gls *.hd *.exa *.exb *.fdb_latexmk
+INSGENERATED = ${PACKAGE_STY} svnkw.sty svn-multi.pl
+GENERATED = ${INSGENERATED} ${PACKAGE}.pdf svn-multi-pl.pdf example.pdf group_example.pdf group_example_*.tex ${PACKAGE}.zip ${PACKAGE}.tar.gz ${TESTDIR}/test*.pdf
+ZIPFILE = ${PACKAGE}-${ZIPVERSION}.zip
+TDSZIPFILE = ${PACKAGE}.tds.zip
-PACKAGE=svn-multi
-PACKFILES = ${PACKAGE}.dtx ${PACKAGE}.ins ${PACKAGE}.pdf svn-multi-pl.dtx example_main.tex \
- example_chap1.tex example.pdf Makefile README group_example.tex
-TEXAUX = *.aux *.log *.glo *.ind *.idx *.out *.svn *.svx *.svt *.toc *.ilg *.gls *.hd
TESTDIR = tests
TESTS = $(patsubst %.tex,%,$(subst ${TESTDIR}/,,$(wildcard ${TESTDIR}/test?.tex ${TESTDIR}/test??.tex))) # look for all test*.tex file names and remove the '.tex'
TESTARGS = -output-directory ${TESTDIR}
-INSGENERATED = ${PACKAGE}.sty svnkw.sty svn-multi.pl
-GENERATED = ${INSGENERATED} ${PACKAGE}.pdf svn-multi-pl.pdf example.pdf group_example.pdf group_example_*.tex ${PACKAGE}.zip ${PACKAGE}.tar.gz ${TESTDIR}/test*.pdf
-ZIPFILE = ${PACKAGE}-${ZIPVERSION}.zip
LATEX_OPTIONS = -interaction=batchmode
LATEX = pdflatex ${LATEX_OPTIONS}
+TEXMFDIR = ${HOME}/texmf
+
RED = \033[01;31m
GREEN = \033[01;32m
WHITE = \033[00m
-.PHONY: all doc package clean fullclean example testclean ${TESTS}
+CP = cp -v
+MV = mv -v
+RMDIR = rm -rf
+MKDIR = mkdir -p
+
+.PHONY: all doc package clean fullclean example testclean ${TESTS} tds ${CHECK_LOG}
+
+###############################################################################
all: package doc example
new: fullclean all
-doc: ${PACKAGE}.pdf svn-multi-pl.pdf
+doc: ${PACKAGE_DOC}
-package: ${PACKAGE}.sty ${PACKAGE}.pl
+package: ${PACKAGE_STY} ${PACKAGE_SCR}
%.pdf: %.dtx
${LATEX} $*.dtx
- ${LATEX} $*.dtx
-makeindex -s gind.ist -o $*.ind $*.idx
-makeindex -s gglo.ist -o $*.gls $*.glo
${LATEX} $*.dtx
${LATEX} $*.dtx
-%.pdf: %.eps
- epstopdf $<
-
-%.eps: %.dia
- dia -t eps -e $@ $<
-
${PACKAGE}.pdf: ${PACKAGE}.sty
-${INSGENERATED}: *.dtx ${PACKAGE}.ins
+${INSGENERATED}: ${PACKAGE_DTX} ${PACKAGE}.ins
yes | latex ${PACKAGE}.ins
@-chmod +x *.pl
clean:
rm -f ${TEXAUX} $(addprefix ${TESTDIR}/, ${TEXAUX})
-fullclean:
- rm -f ${TEXAUX} $(addprefix ${TESTDIR}/, ${TEXAUX}) ${GENERATED} *~ *.backup
+fullclean: clean
+ rm -f ${GENERATED} *~ *.backup
+ rm -f ${PACKAGE}*.zip
+ rm -rf tds/
+
+###############################################################################
example: example.pdf gexample
@@ -66,30 +79,30 @@ gexample: group_example.pdf
group_example.pdf: group_example.tex svn-multi.sty
${RM} $(addprefix group_example, ${TEXAUX}) group_example_*.tex
${LATEX} $<
- ${LATEX} $<
perl svn-multi.pl group_example
${LATEX} $<
${LATEX} $<
${LATEX} $<
-zip: fullclean package doc example tests ${ZIPFILE}
-${PACKAGE}.zip: zip
+###############################################################################
+
+zip: ${PACKFILES}
+ @${MAKE} --no-print-directory ${ZIPFILE}
-zip: ZIPVERSION=$(shell grep 'Package: svn-multi ' svn-multi.log | \
- sed -e 's/.*Package: svn-multi ....\/..\/..\s\+\(v\S\+\).*/\1/')
+zip: ZIPVERSION=$(shell grep "Package: ${PACKAGE} " ${PACKAGE}.log | \
+ sed -e "s/.*Package: ${PACKAGE} ....\/..\/..\s\+\(v\S\+\).*/\1/")
-${ZIPFILE}: ${PACKFILES}
- grep -q '\* Checksum passed \*' svn-multi.log
- grep -q '\* Checksum passed \*' svn-multi-pl.log
+${PACKAGE}%.zip: ${PACKFILES}
+ grep -L '\* Checksum passed \*' ${PACKAGE_DTX:.dtx=.log} | wc -l | grep -q '^0$$'
-pdfopt ${PACKAGE}.pdf opt_${PACKAGE}.pdf && mv opt_${PACKAGE}.pdf ${PACKAGE}.pdf
- zip ${ZIPFILE} ${PACKFILES}
+ ${RM} $@
+ zip $@ ${PACKFILES}
@echo
- @echo "ZIP file ${ZIPFILE} created!"
+ @echo "ZIP file $@ created!"
-tar.gz: ${PACKAGE}.tar.gz
+release: fullclean package doc example tests ${ZIPFILE}
-${PACKAGE}.tar.gz:
- tar -czf $@ ${PACKFILES}
+###############################################################################
# Make sure TeX finds the input files in TESTDIR
tests ${TESTS}: export TEXINPUTS:=${TEXINPUTS}:${TESTDIR}
@@ -112,4 +125,37 @@ ${TESTS}: % : ${TESTDIR}/%.tex package testclean
then /bin/echo -e "${GREEN}$@ succeeded${WHITE}" >&2; \
else /bin/echo -e "${RED}$@ failed!!!!!!${WHITE}" >&2; fi
+###############################################################################
+
+tds: .tds
+
+.tds: ${PACKAGE_STY} ${PACKAGE_DOC} ${PACKAGE_SRC}
+ @grep -q '\* Checksum passed \*' ${PACKAGE}.log
+ ${RMDIR} tds
+ ${MKDIR} tds/
+ ${MKDIR} tds/tex/ tds/tex/latex/ tds/tex/latex/${PACKAGE}/
+ ${MKDIR} tds/doc/ tds/doc/latex/ tds/doc/latex/${PACKAGE}/
+ ${MKDIR} tds/source/ tds/source/latex/ tds/source/latex/${PACKAGE}/
+ test -n "${PACKAGE_SCR}" && ${MKDIR} tds/scripts/ tds/scripts/${PACKAGE}/
+ ${CP} ${PACKAGE_STY} tds/tex/latex/${PACKAGE}/
+ ${CP} ${PACKAGE_DOC} tds/doc/latex/${PACKAGE}/
+ ${CP} ${PACKAGE_SRC} tds/source/latex/${PACKAGE}/
+ test -n "${PACKAGE_SCR}" && ${CP} ${PACKAGE_SCR} tds/scripts/${PACKAGE}/
+ @touch $@
+
+tdszip: ${TDSZIPFILE}
+
+${TDSZIPFILE}: .tds
+ ${RM} ${TDSZIPFILE}
+ cd tds && zip -r ../${TDSZIPFILE} .
+
+###############################################################################
+
+install: .tds
+ test -d "${TEXMFDIR}" && ${CP} -a tds/* "${TEXMFDIR}/" && texhash ${TEXMFDIR}
+
+uninstall:
+ test -d "${TEXMFDIR}" && ${RM} -rv "${TEXMFDIR}/tex/latex/${PACKAGE}" \
+ "${TEXMFDIR}/doc/latex/${PACKAGE}" "${TEXMFDIR}/source/latex/${PACKAGE}" \
+ "${TEXMFDIR}/scripts/${PACKAGE}" && texhash ${TEXMFDIR}
diff --git a/Master/texmf-dist/source/latex/svn-multi/example_chap1.tex b/Master/texmf-dist/source/latex/svn-multi/example_chap1.tex
new file mode 100644
index 00000000000..24ac0bc313b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/svn-multi/example_chap1.tex
@@ -0,0 +1,52 @@
+% Version control information:
+\svnidlong
+{$HeadURL: svn://server/dir/example_chap1.tex $}
+{$LastChangedDate: 2009-02-27 13:58:39 +0000 (Fri, 27 Feb 2009) $}
+{$LastChangedRevision: 211 $}
+{$LastChangedBy: martin $}
+
+\chapter{Example Chapter}
+
+\section{Version}
+\subsection*{This chapter}
+% \url is needed because there is an underscore in the name
+% The package 'underscore' seems not to work properly, so the 'hyperref'
+% package is used which is not the best solution. Avoid underscore in LaTeX filenames.
+Filename: \svnnolinkurl{\svnfilefname}\\
+URL: \svnnolinkurl{\svnfileurl}\\
+% Something like \href{\svnfileurl}{Download} works also!
+\textbf{Last change}\\
+Revision: \svnfilerev\\
+Date: \svnfiledate\\
+Year: \svnfileyear\\
+Time: \svnfilehour:\svnfileminute:\svnfilesecond\ \svnfiletimezone\\
+Timezone: \svnfiletimezonehour : \svnfiletimezoneminute\\
+Author: \svnfileauthor\\
+
+\subsection*{Whole document}
+Filename: \svnnolinkurl{\svnmainfilename}\\
+URL: \url{\svnmainurl}\\
+\textbf{Last change}\\
+Revision: \svnrev\\
+Date: \svndate\\
+Year: \svnyear\\
+Time: \svnhour:\svnminute:\svnsecond\ \svntimezone\\
+Timezone: \svntimezonehour : \svntimezoneminute\\
+Author: \svnauthor\\
+% [...]
+
+\section{Full Author Names}
+\svnRegisterRevision{14}{Test}
+
+Registered author name: \svnFullAuthor{\svnfileauthor}\\
+Registered revision name: \svnFullRevision{\svnfilerev}\\
+Registered author name (*): \svnFullAuthor*{\svnfileauthor}\\
+Registered revision name (*): \svnFullRevision*{\svnfilerev}\\
+
+\subsubsection*{Behaviour if value is not registered:}
+Not registered user name: \svnFullAuthor{someusername}\\
+Not registered revision name: \svnFullRevision{12}\\
+Not registered user name (*): \svnFullAuthor*{someusername}\\
+Not registered revision name (*): \svnFullRevision*{12}\\
+
+
diff --git a/Master/texmf-dist/source/latex/svn-multi/example_main.tex b/Master/texmf-dist/source/latex/svn-multi/example_main.tex
new file mode 100644
index 00000000000..ef4ebce0f33
--- /dev/null
+++ b/Master/texmf-dist/source/latex/svn-multi/example_main.tex
@@ -0,0 +1,71 @@
+\documentclass[12pt]{report}
+
+% Traditional way to include keywords:
+\usepackage{svn-multi}[2009/03/03]
+% Version control information:
+\svnidlong
+{$HeadURL: svn://server/dir/example_main.tex $}
+{$LastChangedDate: 2008-12-03 13:29:19 +0000 (Wed, 03 Dec 2008) $}
+{$LastChangedRevision: 146 $}
+{$LastChangedBy: martin $}
+% The extra Id to access the file name is not needed anymore because it is
+% extracted from the URL:
+%\svnid{$Id: example_main.tex 146 2008-12-03 13:29:19Z martin $}
+%
+% Don't forget to set the svn property 'svn:keywords' to
+% 'HeadURL LastChangedDate LastChangedRevision LastChangedBy' or
+% 'Id' or both depending if you use \svnidlong and/or \svnid
+
+% Alternative you can use the auto-keyword feature to extract the keywords from
+% the Subversion working directory:
+%\usepackage[autokw=all]{svn-multi}[2009/03/28]
+
+\usepackage{hyperref}
+
+\usepackage{fancyhdr}
+\renewcommand{\headrulewidth}{0.4pt}
+\renewcommand{\footrulewidth}{0.4pt}
+\setlength{\headheight}{14.5pt}
+% This will display the last changed revision of the current chapter.
+% Change \svnfilerev to \svnrev if you like to have the
+% document revision.
+\newcommand{\svnfooter}{Last Changed Rev: \svnfilerev}
+
+\pdfinfo{%
+ /CreationDate (D:\svnpdfdate)
+}
+
+\svnRegisterAuthor{johnd}{John Doe}
+\svnRegisterAuthor{maryd}{Mary Doe}
+\svnRegisterAuthor{martin}{Martin S.}
+\svnRegisterRevision{15}{Version~1}
+
+\listfiles
+\begin{document}
+
+\begin{titlepage}
+ \vspace{8ex}
+ {\huge Title\par}
+ \vspace{2ex}
+ {\large \noindent This is an small example document for the \texttt{svn-multi}
+ (aka \texttt{svnkw}) package. Please also look at the LaTeX source code of this
+ document. An advanced example which includes keyword groups is shown in
+ \url{group\_example.pdf}}
+ \vfill
+ \flushleft\sffamily
+ Version control information:\\
+ Head URL: \svnnolinkurl{\svnmainurl}\\
+ %or with hyperlink: Head URL: \url{\svnurl}\\
+ Last changed file: \texttt{\svnfname}\\
+ Last changed date: \svndate\\
+ Last changes revision: \svnrev\\
+ Version: \svnFullRevision*{\svnrev}\\
+ Last changed by: \svnFullAuthor*{\svnauthor}\\
+\end{titlepage}
+
+% Include chapters
+\include{example_chap1}
+%\include{example_chap2}
+%\include{example_chap3}
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/svn-multi/group_example.tex b/Master/texmf-dist/source/latex/svn-multi/group_example.tex
new file mode 100644
index 00000000000..692687d4f97
--- /dev/null
+++ b/Master/texmf-dist/source/latex/svn-multi/group_example.tex
@@ -0,0 +1,371 @@
+\documentclass[a4paper,oneside]{scrbook}
+\usepackage[all]{svn-multi}[2009/03/06]
+\svnidlong
+{$HeadURL: svn://server/group_example.tex $}
+{$LastChangedDate: 2000-01-01 01:44:01 +0000 (Main file) $}
+{$LastChangedRevision: 98 $}
+{$LastChangedBy: author3 $}
+
+% Pre-declaration of groups to define order in table
+\svngroup{abc}
+\svngroup{def}
+\svngroup{ghi}
+\svngroup{jkl}
+%\svngroup{Images}
+\svngroup{}
+
+% Ignore logo in subfiles and set it explicitly into the main file:
+%\svnexternal{{logo.jpg}}%
+%\svnignoregraphic{logo.jpg}
+
+% Special groups for images and other external files:
+%\svngraphicsgroup{Images}
+%\svnexternalgroup{external}
+
+\let\ifvtex=\relax
+\usepackage{hyperref}
+\usepackage{ifthen}
+\usepackage{listings}
+\lstset{basicstyle=\ttfamily}
+\makeatletter
+% Workaround for listinputlisting
+\newcommand*{\svnlstinputlisting}[2][]{%
+ {\let\input\@input\lstinputlisting[#1]{#2}}%
+}
+\makeatother
+\usepackage{booktabs}
+\usepackage{tabularx}
+\usepackage{longtable}
+
+% This is an example document to show the group feature of svn-multi 2.0.
+% Please the notes below.
+
+\makeatletter
+% Version control information table for each chapter
+\newcommand{\chaptervctable}{%
+\par\noindent
+\textbf{Version Control Information for this chapter}\\[\bigskipamount]%
+\begin{tabular}{lp{0.7\textwidth}}
+Chapter URL & \svnnolinkurl{\svnfileurl}\\
+Chapter File name & \svnnolinkurl{\svnfilefname}\\
+Last Changed Revision & \svnfilerev\\
+Last Changed Author & \svnfileauthor\\
+Last Changed Date & \svnfiledate\\
+\end{tabular}
+\bigskip
+\par\noindent
+This files contains the following SVN keywords:\\*[-\baselineskip]
+{\let\input\@input
+\svnlstinputlisting[firstline=5,lastline=9]{\finkpath}
+}
+}
+\makeatother
+
+% This file generates some example sub files from this file to avoid a lot of small
+% example files in the CTAN directory. In real life there would be separate
+% files from the beginning.
+
+\begin{filecontents}{group_example_part1a.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part1a.tex $}
+{$LastChangedDate: 2000-01-01 01:00:01 +0000 (Chapter 1a) $}
+{$LastChangedRevision: 101 $}
+{$LastChangedBy: author1 $}
+
+\chapter{Subfile 1a}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part1b.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part1b.tex $}
+{$LastChangedDate: 2001-01-01 00:00:01 +0000 (Subfile 1b) $}
+{$LastChangedRevision: 102 $}
+{$LastChangedBy: author2 $}
+
+\chapter{Subfile 1b}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part1c.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part1c.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 1c) $}
+{$LastChangedRevision: 104 $}
+{$LastChangedBy: author3 $}
+
+\chapter{Subfile 1c}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part2a.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part2a.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 2a) $}
+{$LastChangedRevision: 100 $}
+{$LastChangedBy: author1 $}
+
+\chapter{Subfile 2a}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part2b.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part2b.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 2b) $}
+{$LastChangedRevision: 101 $}
+{$LastChangedBy: author1 $}
+
+\chapter{Subfile 2b}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part3a.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part3a.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 3a) $}
+{$LastChangedRevision: 104 $}
+{$LastChangedBy: author3 $}
+
+\chapter{Subfile 3a}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part3b.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part3b.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 3b) $}
+{$LastChangedRevision: 103 $}
+{$LastChangedBy: author2 $}
+
+\chapter{Subfile 3b}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_part4a.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part4a.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 4a) $}
+{$LastChangedRevision: 99 $}
+{$LastChangedBy: author3 $}
+
+\chapter{Subfile 4a}
+\chaptervctable
+\input{group_example_part4a_sub1.tex}
+\end{filecontents}
+
+\begin{filecontents}{group_example_part4a_sub1.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part4a_sub1.tex $}
+{$LastChangedDate: 2000-01-01 00:00:00 +0000 (SubSubfile 4a-1) $}
+{$LastChangedRevision: 96 $}
+{$LastChangedBy: author2 $}
+
+\section{SubSubfile 4a-1}
+This is a sub file in a sub file.
+\svnexternal{{Makefile}}
+\end{filecontents}
+
+\begin{filecontents}{group_example_part4b.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_part4b.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 4b) $}
+{$LastChangedRevision: 105 $}
+{$LastChangedBy: author2 $}
+
+\chapter{Subfile 4b}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_end.tex}
+\svnidlong
+{$HeadURL: svn://server/group_example_end.tex $}
+{$LastChangedDate: 2000-01-01 00:00:01 +0000 (End) $}
+{$LastChangedRevision: 100 $}
+{$LastChangedBy: author1 $}
+
+\chapter{End credits}
+\chaptervctable
+\end{filecontents}
+
+\begin{filecontents}{group_example_unexpanded.tex}
+\svnidlong
+{$HeadURL$}
+{$LastChangedDate$}
+{$LastChangedRevision$}
+{$LastChangedBy$}
+
+\chapter{File with unexpanded keywords}
+\chaptervctable
+\end{filecontents}
+
+\svnRegisterAuthor{author1}{Andy Author, I.}
+\svnRegisterAuthor{author2}{A. Author, II.}
+\svnRegisterAuthor{author3}{Anthony Author, III.}
+
+% Have VC info on every part page
+\let\origpart=\part
+\def\part{%
+\setpartpreamble{%
+\vspace*{5cm}
+\par\noindent
+\textbf{Version Control Information for this part:}\\[\bigskipamount]%
+\begin{tabular}{lp{0.7\textwidth}}
+URL of latest File & \svnnolinkurl{\svncgurl}\\
+Name of latest File & \svnnolinkurl{\svncgfname}\\
+Last Changed Revision & \svncgrev\\
+Last Changed Author & \svncgauthor\\
+Last Changed Date & \svncgdate\\
+\end{tabular}
+}\origpart
+}
+
+\listfiles
+\begin{document}
+
+% Custom titlepage:
+\hbox{}%
+\vfill
+\pdfbookmark{Title Page}{titlepage}%
+{\centering
+\Huge\texttt{svn-multi} v2.0 Keyword Groups Example Document\\
+\Large Martin Scharrer\\
+\large 2009/03/01\\
+}%
+\vfill
+\par\noindent
+This is an example and test document for the group feature of svn-multi 2.0.
+Please note that the revision keywords were generated manually for testing
+purposes. The dates are not consistent with the revisions and contain a debug
+name instead of the date text like `(Sat, January 1 2009)'. This doesn't
+influence the correct functionality of the svn-multi package.\\
+\bigskip
+{\hbox{}\hfill Happy \TeX ing!}\\
+\vfill%
+\par\noindent
+{\large Version Control Information for this document:\\[\bigskipamount]}%
+\begin{tabular}{lp{0.7\textwidth}}
+Main URL & \svnnolinkurl{\svnmainurl}\\
+Main File name & \svnnolinkurl{\svnmainfilename}\\
+URL of latest file & \svnnolinkurl{\svnurl}\\
+Name of latest file & \svnnolinkurl{\svnfname}\\
+Last Changed Revision & \svnrev\\
+Last Changed Author & \svnauthor\\
+Last Changed Date & \svndate\\
+\end{tabular}
+\bigskip\par\noindent
+The main file of this document contains the following SVN
+keywords:\\*[-\baselineskip]
+\svnlstinputlisting[firstline=3,lastline=7]{\finkpath}
+\thispagestyle{empty}
+\clearpage
+
+% Default in Engish
+\renewcommand{\svnbeforetable}{%
+This is an automatic generated table using the \textbf{\sffamily table} option.
+\bigskip\par\noindent
+}
+\clearpage
+\pdfbookmark{Table of Revisions (1)}{tora}%
+\tableofrevisions
+\clearpage
+
+% Redefined to German
+% Uses booktabs for nicer table
+\renewcommand{\svnbeforetable}{%
+Can be redefined to another format and language: Verstehen Sie Deutsch?
+\bigskip\par\noindent
+}
+\renewenvironment{svntable}{%
+\begin{longtable}{p{6.2cm}rll}
+\toprule
+}
+{%
+\bottomrule
+\end{longtable}
+}
+\renewcommand*\svntablehead{%
+ Name & Rev & Autor & Datum \\
+\midrule[\heavyrulewidth]
+}
+\renewcommand{\svnrevisionsname}{Revisionen}
+\renewcommand{\svntabgroup}[1]{Gruppe `#1'}
+
+% Some highlight examples:
+% Print highest revision bold:
+\renewcommand{\svntabrev}[1]{\ifthenelse{#1=\svnrev}{\textbf{#1}}{#1}}
+% Highlight all dates after the 14th March 2008 12:00:00:
+\renewcommand{\svntabdate}[8]{%
+ \ifthenelse{#1#2#3#4>2008031412}{\color{red}\bfseries}{}%
+ \small #3.#2.#1\ #4:#5:#6%
+}
+% Mark all files last changed by the last author:
+\renewcommand{\svntabauthor}[1]{%
+ \ifthenelse{\equal{#1}{\svnauthor}}{\color{green}}{}%
+ \svnFullAuthor{#1}%
+}
+
+% Using \scriptsize and \svnnolinkurl for files and subgroups:
+\renewcommand{\svntabfile}[2]{%
+ \addtolength{\leftskip}{#1\medskipamount}%
+ Datei `{\scriptsize\svnnolinkurl{#2}}'
+}
+\renewcommand{\svntabsubgroup}[2]{%
+ \addtolength{\leftskip}{#1\medskipamount}%
+ Untergruppe `{\scriptsize\svnnolinkurl{#2}}'%
+}
+\renewcommand{\svntabglobal}[1]{Gesamtes Dokument}
+
+% Add rule before group rows:
+\renewcommand{\svngrouprow}{\midrule}
+% Add rule and description after global row:
+\renewcommand{\endsvnglobalrow}{\midrule Ohne Gruppe:\\}
+
+\pdfbookmark{Table of Revisions (2)}{torb}%
+\tableofrevisions
+\clearpage
+
+
+\svngroup{abc}
+\part{Abc}
+\include{group_example_part1a}
+\include{group_example_part1b}
+\include{group_example_part1c}
+
+\svngroup{def}
+\part{Def}
+\include{group_example_part2a}
+\include{group_example_part2b}
+
+\svngroup{ghi}
+\part{Ghi}
+\include{group_example_part3a}
+\include{group_example_part3b}
+
+\svngroup{jkl}
+\part{jkl}
+\include{group_example_part4a}
+\include{group_example_part4b}
+
+% The rest doesn't belong to a file group:
+\svngroup{}
+\include{group_example_end}
+\include{group_example_unexpanded}
+
+\chapter*{Reference Examples}
+%To reference e.g.\ keyword from group `abc' use:
+\section*{Group `abc'}
+\svnsetcg{abc} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by
+\svnFullAuthor{\svncgauthor}. Latest file is \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}).
+
+\section*{Subgroup `group\_example\_part3b'}
+\svnsetcg{group_example_part3b} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by
+\svnFullAuthor{\svncgauthor}. Latest file is \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}).
+
+\section*{File `group\_example\_part3b.tex'}
+\svnsetcg{group_example_part3b.tex} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by
+\svnFullAuthor{\svncgauthor}. File name and url: \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}).
+
+
+\end{document}
+
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 bfbd61432aa..192804000a8 100644
--- a/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx
+++ b/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx
@@ -24,27 +24,30 @@
% \fi
% \iffalse
%<*package|driver>
-% $Id: svn-multi.dtx 845 2009-04-21 12:03:08Z martin $
+% $Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $
%
-\def\svnmulti@version {v2.1a}
-\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: 845 $\relax
-\svnmulti@date $Date: 2009-04-21 13:03:08 +0100 (Tue, 21 Apr 2009) $\relax
-
+\def\svnmulti@version{v2.2}
+\RequirePackage{svn-prov}
%</package|driver>
%<*driver>
-\ProvidesFile{svn-multi.dtx}
- [\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-04-21 13:03:08 +0100 (Tue, 21 Apr 2009) $
+\ProvidesFileSVN{$Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $}
+ [\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
+\GetFileInfoSVN*
+\let\svnmulti@date\filedate
+\let\svnmulti@rev\filerev
\documentclass{ltxdoc}
+\def\svnmulti@today#1/#2/#3\relax{%
+ \begingroup
+ \year#1\relax
+ \month#2\relax
+ \day#3\relax
+ \xdef\svnmulti@today{\today}
+ \endgroup
+}
+\expandafter\svnmulti@today\svnmulti@date\relax
+
\usepackage{svn-multi}[\svnmulti@date]
\usepackage{booktabs}
\usepackage{ifpdf}
@@ -277,6 +280,7 @@
%\OnlyDescription
\widowpenalty=500
\clubpenalty=500
+\listfiles
\begin{document}
\DocInput{svn-multi.dtx}%
\PrintChanges
@@ -287,7 +291,7 @@
%<*package>
% \fi
%
-% \CheckSum{2652}
+% \CheckSum{2728}
%
% {\makeatother
% \CharacterTable
@@ -330,8 +334,8 @@
% 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}
-% \changes{v2.1a}{2009/04/21}{Bugfix for macros which external if switches which
-% might not be defined by all classes}
+% \changes{v2.2}{2009/10/19}{Added \css{ifsvnmodified} and
+% \css{ifsvnfilemodified} macros. Some bug fixes.}
%
% ^^A \GetFileInfo{svn-multi.dtx}
%
@@ -856,6 +860,22 @@
% macros. You can \eg say |\svnkwdef{Rev}{123}| and then typeset it with
% |\svnkw{Revision}| or |\svnkw{LastChangedRev}| if you like.
%
+% \subsubsection*{New in version 2.2. Will change in future versions:}
+% \DescribeMacro{ifsvnfilemodified}{\marg{case:~modified}\marg{case:~not
+% modified}}
+% \DescribeMacro*{ifsvnmodified}{\marg{case:~modified}\marg{case:~not modified}}
+% This two macro can be used to check if either the current or any file was
+% modified after it was last checked into the repository. At the moment (v2.2) a
+% file is marked `modified' if there is either a `|*|' or `|M|' after the
+% revision number, \eg `|$||Rev: 123M $|'. Such an marker is automatically added
+% for exported files (`|svn export|') if there where locally modified, but can
+% also be added manually.
+%
+% Future versions of this package might mark files as modified by use of the
+% \op{autokw} option which can read this information out of the working
+% directory Subversion entries.
+%
+% \newpage
% \subsection{Accessing Date Values}\label{sec:date}
% \begin{tabular}{@{}l@{\hspace{-2\macrosep}}l@{\hspace{-2\macrosep}}l@{}}\\
% \DescribeMacro*{svnyear}{}&
@@ -1001,7 +1021,6 @@
% Please note that you can't use \pkg{hyperref}'s |\nolinkurl| because it won't
% expand \cs{svnkw}.
%
-%
% \subsection{Table of Revisions}\label{sec:table}
% Version 2.0 introduces this new feature which allows a overview table to be
% typeset which holds the version control information of all files of the
@@ -1385,8 +1404,9 @@
% \subsubsection*{Package Identification}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{svn-multi}
- [\svnmulti@date\space\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
+\ProvidesPackageSVN
+ {$Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $}
+ [\svnmulti@version\space SVN Keywords for multi-file LaTeX documents]
% \end{macrocode}
% \subsubsection*{Options}
@@ -1587,22 +1607,22 @@
% \begin{macro}{\svn@ifvalidrev}[1]{macro name}
% Checks if the given macro (by name) is a valid revision, \ie defined and
-% greater than zero.
+% not equal to the init value.
% \begin{macrocode}
\def\svn@ifvalidrev#1{%
\begingroup
\@ifundefined{#1}%
- {\def\svn@temp{-1}}%
+ {\let\svn@temp\svn@revinit}%
{\expandafter\edef
\expandafter\svn@temp\expandafter{\csname #1\endcsname}}%
- \ifnum\svn@temp>-1\relax
+ \ifnum\svn@temp=\svn@revinit\relax
\endgroup
\expandafter
- \@firstoftwo
+ \@secondoftwo
\else
\endgroup
\expandafter
- \@secondoftwo
+ \@firstoftwo
\fi
}
% \end{macrocode}
@@ -1666,7 +1686,7 @@
% \subsection{Definition of init values}
% Initialisation of at least the revision to a numeric value is necessary to not
% break the |\ifnum| tests later in this package. The revision is initialised to
-% -1, but will be set to 0 if an unexpanded |$||Rev:$| keyword is read. This way
+% -2, but will be set to 0 if an unexpanded |$||Rev:$| keyword is read. This way
% it can be tested if a file had any keyword macros or not.\par
% Note that there a two different macros for the document global keywords:\par
% The user level |\svn|\meta{kw} macros hold the global value and are only valid
@@ -1684,7 +1704,10 @@
% |\svn@g|\meta{current group}|@|\meta{kw}.
% \begin{macrocode}
% Init values
-\def\svnrev{-1} \def\@svn@rev{-1}
+\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}
@@ -1703,7 +1726,8 @@
\let\@svng@@files\relax
\def\svn@initfile{%
- \gdef\svnfilerev{-1}%
+ \global\let\svnfilerev\svn@revinit
+ \global\let\ifsvnfilemodified\@secondoftwo
\gdef\svnfiledate{}%
\gdef\svnfileauthor{}%
\gdef\svnfileyear{0000}%
@@ -1719,6 +1743,8 @@
\gdef\svnfiledir{}%
}
\svn@initfile
+
+\newif\ifsvn@modified
% \end{macrocode}
% \subsection{Auto-Keywords}
@@ -2115,6 +2141,11 @@
% \begin{macrocode}
\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}%
@@ -2127,6 +2158,7 @@
\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}%
@@ -2167,10 +2199,10 @@
% We clear the keyword value first to reduce the risk though bad user input.
% \begin{macrocode}
\newcommand{\svnidlong}{%
- \svnkwdef{HeadURL}{}%
- \svnkwdef{LastChangedDate}{}%
- \svnkwdef{LastChangedRevision}{0}%
- \svnkwdef{LastChangedBy}{}%
+ \svnkwdef{URL}{}%
+ \svnkwdef{Date}{}%
+ \svnkwdef{Revision}{0}%
+ \svnkwdef{Author}{}%
% \end{macrocode}
% The catcodes are changed by \cs{svn@catcodes} to allow \TeX-special characters
% inside the keywords. The braces |{ }| are changed to allow comments between
@@ -2248,11 +2280,11 @@
% \end{macrocode}
% Now the update macros for date and id are called.
% \begin{macrocode}
- \ifx\svnkwLastChangedDate\empty\else
- \@svn@scanlongdate{\svnkwLastChangedDate}%
+ \ifx\svnkwDate\empty\else
+ \@svn@scanlongdate{\svnkwDate}%
\fi
- \@svn@updateid{\svnkw{LastChangedRevision}}{\svnkw{LastChangedDate}}%
- {\svnkw{LastChangedBy}}{\svnkw{HeadURL}}%
+ \@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}%
+ {\svnkw{Author}}{\svnkw{URL}}%
\ignorespaces
}%
% \end{macrocode}
@@ -2356,12 +2388,29 @@
%
% The keywords |Author| and |Date| are just calling \cs{svnkwdef@} with a fixed
% first argument. For the revision the value is checked if empty and then a 0
-% is substituted.
+% is substituted. Also a temp counter is used to strip any trailing characters
+% like `M' which indicate an exported and modified file.
% \begin{macrocode}
\def\svnkwdef@Rev#1{%
\svn@ifempty{#1}%
{\svnkwdef@{Rev}{0}}%
- {\svnkwdef@{Rev}{#1}}%
+ {%
+ \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}}
@@ -2373,14 +2422,14 @@
\let\svnkwdef@Revision=\svnkwdef@Rev
\let\svnkwdef@LastChangedRevision=\svnkwdef@Rev
\let\svnkwdef@LastChangedBy=\svnkwdef@Author
-\let\svnkwdef@LastChangedAt=\svnkwdef@Date
+\let\svnkwdef@LastChangedDate=\svnkwdef@Date
% \end{macrocode}
% and then for reading.
% \begin{macrocode}
\def\svnkwRevision{\svnkwRev}
\def\svnkwLastChangedRevision{\svnkwRev}
\def\svnkwLastChangedBy{\svnkwAuthor}
-\def\svnkwLastChangedAt{\svnkwDate}
+\def\svnkwLastChangedDate{\svnkwDate}
\def\svnkwURL{\svnkwHeadURL}
% \end{macrocode}
% So \eg |\svnkw{LastChangedRevision}| is always be the
@@ -2860,6 +2909,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
{\svnfilefname}%
{\svn@g}%
{\svn@pg}%
+ {\ifsvnfilemodified{@firstoftwo}{@secondoftwo}}%
}\svn@filestack}%
}
@@ -2867,7 +2917,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
\svn@restorefilekws@#1\empty
\empty \empty \empty \empty
\empty \empty \empty \empty
- \empty \empty \empty \empty
+ \empty \empty \empty \empty \empty
\svn@ifempty{#2}%
{\gdef\svn@filestack{{}}}%
{\gdef\svn@filestack{#2}}%
@@ -2885,13 +2935,15 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
\svn@restorefilekws@@
}
-\def\svn@restorefilekws@@#1#2#3#4#5#6{%
+\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{%
@@ -3200,7 +3252,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
% Initialises group.
% \begin{macrocode}
\def\svn@initgroup#1{%
- \svn@gkwset{#1}{rev}{-1}%
+ \svn@gkwset{#1}{rev}{\svn@revinit}%
\svn@gkwset{#1}{date}{}%
\svn@gkwset{#1}{author}{}%
\svn@gkwset{#1}{year}{0000}%
@@ -3306,7 +3358,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}%
% file keyword information is written.
% \begin{macrocode}
\def\svn@subgroup#1{%
- \ifnum\svnfilerev>-1\relax
+ \ifnum\svnfilerev=\svn@revinit\else
\expandafter\ifx\csname svn@g@#1\endcsname\relax%
\expandafter\gdef\csname svn@g@#1\endcsname{1}%
\svn@updategroup{#1}%
@@ -4115,6 +4167,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
\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%
@@ -4305,7 +4358,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{svnkw}
- [2009/03/27 v2.1 Backward compatibility wrapper for svn-multi]
+ [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.}