From f1bc7a1e098bc69167aeded28c140f4f34ebeb1c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 12 Apr 2010 00:52:57 +0000 Subject: svn-prov update (11apr10) git-svn-id: svn://tug.org/texlive/trunk@17807 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/svn-prov/README | 17 + Master/texmf-dist/doc/latex/svn-prov/svn-prov.pdf | Bin 263118 -> 300897 bytes Master/texmf-dist/source/latex/svn-prov/Makefile | 141 --------- .../texmf-dist/source/latex/svn-prov/svn-prov.dtx | 345 +++++++++++++-------- .../texmf-dist/source/latex/svn-prov/svn-prov.ins | 2 +- Master/texmf-dist/tex/latex/svn-prov/svn-prov.sty | 151 ++++++--- 6 files changed, 350 insertions(+), 306 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/svn-prov/README delete mode 100644 Master/texmf-dist/source/latex/svn-prov/Makefile diff --git a/Master/texmf-dist/doc/latex/svn-prov/README b/Master/texmf-dist/doc/latex/svn-prov/README new file mode 100644 index 00000000000..e037a717da8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/svn-prov/README @@ -0,0 +1,17 @@ +Package svn-prov +~~~~~~~~~~~~~~~~ +Copyright (C) 2009 Martin Scharrer +See the svn-prov.dtx or svn-prov.ins file for the licence information (LPPL). + + +This package introduces Subversion variants of the standard LaTeX macros +\ProvidesPackage, \ProvidesClass and \ProvidesFile where the file name and date +is extracted from Subversion Id keywords. The file name can also be given +explicitly as an optional argument. + +Syntax summary: + +\ProvidesPackageSVN [file name]{$Id: ... $}[Package Information (version, description)] +\ProvidesClassSVN [file name]{$Id: ... $}[Class Information (version, description)] +\ProvidesFileSVN [file name]{$Id: ... $}[File Information (version, description)] + diff --git a/Master/texmf-dist/doc/latex/svn-prov/svn-prov.pdf b/Master/texmf-dist/doc/latex/svn-prov/svn-prov.pdf index 92b5294c9e8..0d3cd6b7650 100644 Binary files a/Master/texmf-dist/doc/latex/svn-prov/svn-prov.pdf and b/Master/texmf-dist/doc/latex/svn-prov/svn-prov.pdf differ diff --git a/Master/texmf-dist/source/latex/svn-prov/Makefile b/Master/texmf-dist/source/latex/svn-prov/Makefile deleted file mode 100644 index 3bc5a902b3a..00000000000 --- a/Master/texmf-dist/source/latex/svn-prov/Makefile +++ /dev/null @@ -1,141 +0,0 @@ -# $Id: Makefile 1464 2009-10-21 17:09:12Z martin $ - -PACKAGE = svn-prov -PACKAGE_STY = ${PACKAGE}.sty -PACKAGE_DTX = ${PACKAGE}.dtx -PACKAGE_SCR = -PACKAGE_DOC = $(PACKAGE_DTX:.dtx=.pdf) -PACKAGE_SRC = ${PACKAGE_DTX} ${PACKAGE}.ins Makefile -PACKFILES = ${PACKAGE_SRC} ${PACKAGE_DOC} README - -TEXAUX = *.aux *.log *.glo *.ind *.idx *.out *.svn *.svx *.svt *.toc *.ilg *.gls *.hd *.fdb_latexmk -INSGENERATED = ${PACKAGE_STY} -GENERATED = ${INSGENERATED} ${PACKAGE}.pdf ${PACKAGE}.zip ${PACKAGE}.tar.gz ${TESTDIR}/test*.pdf -ZIPFILE = ${PACKAGE}-${ZIPVERSION}.zip -TDSZIPFILE = ${PACKAGE}-${ZIPVERSION}.tds.zip - -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} - -LATEX_OPTIONS = -interaction=batchmode -LATEX = pdflatex ${LATEX_OPTIONS} - -TEXMFDIR = ${HOME}/texmf - -RED = \033[01;31m -GREEN = \033[01;32m -WHITE = \033[00m - -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_DOC} - -package: ${PACKAGE_STY} ${PACKAGE_SCR} - -%.pdf: %.dtx - ${LATEX} $*.dtx - -makeindex -s gind.ist -o $*.ind $*.idx - -makeindex -s gglo.ist -o $*.gls $*.glo - ${LATEX} $*.dtx - ${LATEX} $*.dtx - -${PACKAGE}.pdf: ${PACKAGE}.sty - -${INSGENERATED}: ${PACKAGE_DTX} ${PACKAGE}.ins - yes | latex ${PACKAGE}.ins - -clean: - rm -f ${TEXAUX} $(addprefix ${TESTDIR}/, ${TEXAUX}) - -fullclean: clean - rm -f ${GENERATED} *~ *.backup - rm -f ${PACKAGE}*.zip - rm -rf tds/ - - -zip: ${PACKFILES} - @${MAKE} --no-print-directory ${ZIPFILE} - -zip: ZIPVERSION=$(shell grep "Package: ${PACKAGE} " ${PACKAGE}.log | \ - sed -e "s/.*Package: ${PACKAGE} ....\/..\/..\s\+\(v\S\+\).*/\1/") - -tdszip: ZIPVERSION=$(shell grep "Package: ${PACKAGE} " ${PACKAGE}.log | \ - sed -e "s/.*Package: ${PACKAGE} ....\/..\/..\s\+\(v\S\+\).*/\1/") - -${PACKAGE}%.zip: ${PACKFILES} - @test -n "${IGNORE_CHECKSUM}" || 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 - ${RM} $@ - zip $@ ${PACKFILES} - @echo - @echo "ZIP file $@ created!" - -release: fullclean package doc example tests zip - -############################################################################### - -# Make sure TeX finds the input files in TESTDIR -tests ${TESTS}: export TEXINPUTS:=${TEXINPUTS}:${TESTDIR} -tests ${TESTS}: LATEX_OPTIONS= - -testclean: - @${RM} $(foreach ext, aux log out pdf svn svx, tests/test*.${ext}) - -tests: package testclean - @echo "Running tests: ${TESTS}:" - @${MAKE} -e -i --no-print-directory ${TESTS} \ - TESTARGS="-interaction=batchmode -output-directory=${TESTDIR}"\ - TESTPLOPT="-q"\ - > /dev/null - -${TESTS}: % : ${TESTDIR}/%.tex package testclean - @-${LATEX} -interaction=nonstopmode ${TESTARGS} $< 1>/dev/null 2>/dev/null - @if (${LATEX} ${TESTARGS} $< && (test ! -e ${TESTDIR}/$*.pl || ${TESTDIR}/$*.pl ${TESTPLOPT})); \ - 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-prov/svn-prov.dtx b/Master/texmf-dist/source/latex/svn-prov/svn-prov.dtx index 9b73cedc852..ed29694d8e7 100644 --- a/Master/texmf-dist/source/latex/svn-prov/svn-prov.dtx +++ b/Master/texmf-dist/source/latex/svn-prov/svn-prov.dtx @@ -1,5 +1,5 @@ % \iffalse meta-comment -% $Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $ +% $Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $ % % Copyright (C) 2009-2010 by Martin Scharrer % @@ -25,31 +25,34 @@ % \iffalse %<*driver> \RequirePackage{svn-prov} -\makeatletter % %<*driver|package> -\def\svnprov@version{v2.\rev} +\def\svnprov@version{v3.\rev} % %<*driver> -\ProvidesFileSVN{$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +\ProvidesFileSVN{$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} [\svnprov@version\space DTX for \filebase.sty] -\DefineFileInfoSVN[svnprov] \DefineFileInfoSVN -\makeatother -\documentclass{ltxdoc} +\GetFileInfoSVN* +% Re-require package to check date +\RequirePackage{svn-prov}[\filedate] + +\documentclass{article} +\usepackage{ydoc} \usepackage[hyperfootnotes=false]{hyperref} +\usepackage{booktabs} +\usepackage[english]{babel} +\dateenglish \makeatletter %%% Examples %%% \RequirePackage{fancyvrb} \RequirePackage{listings} -\newenvironment{example} +\renewenvironment{example} {\begingroup\VerbatimOut[gobble=4]{\jobname.exa}} {\endVerbatimOut\endgroup\formatexample} -\newsavebox{\examplecodebox} -\newsavebox{\exampleresultbox} \usepackage{ifthen,calc} \def\examplebeforetext{The following code:} @@ -74,6 +77,7 @@ \usepackage{xspace} +\let\pkg\relax \newcommand*{\pkg}[1]{% \href{http://tug.ctan.org/pkg/#1}{\texttt{#1}}% % URL footnote (for print-out) on first appearance: @@ -103,7 +107,7 @@ % % \fi % -% \CheckSum{274} +% \CheckSum{435} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -137,9 +141,8 @@ % \title{The \textsf{svn-prov} package\\\large Use SVN Id keywords for package, % class and file header} % \author{Martin Scharrer \\ \url{martin@scharrer-online.de}} -% \makeatletter -% \date{Version~\svnprov@version\ - \svnprov@date} -% \makeatother +% \GetFileInfoSVN{svnprov} +% \date{Version~\fileversion\ - \filetoday} % % \maketitle % @@ -169,7 +172,7 @@ % \texttt{\frenchspacing\${}Id: \meta{filename} \meta{revision} \meta{date} % \meta{time} \meta{author} \$}\\[\smallskipamount] % e.g. for the source file of this document:\\*[\smallskipamount] -% |$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $| +% |$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $| % \par\smallskip % For this to work the Subversion \emph{property} \texttt{svn:keywords} must be % set to (at least) `|Id|' for the source file(s). e.g.\ using the command @@ -187,19 +190,9 @@ % % ^^A\subsection{Main Macros} % \manualnewpage%% -% \DescribeMacro{\ProvidesPackageSVN} -% \DescribeMacro{\ProvidesClassSVN} -% \DescribeMacro{\ProvidesFileSVN} -% \hspace*{-\parindent}\hspace{-\marginparsep} -% {\oarg -% {file name}\darg{Id: \ldots\ }\oarg -% {Package Information (version, description)}\\* -% \hspace*{-\marginparsep} -% \oarg{file name}\darg{Id: \ldots\ }\oarg -% {Class Information (version, description)}\\* -% \hspace*{-\marginparsep} -% \oarg{file name}\darg{Id: \ldots\ }\oarg -% {File Information (version, description)}}. +% \DescribeMacro\ProvidesPackageSVN [] {\$Id:~\$} [<\small version and/or description>] [<\small description>] +% \DescribeMacro\ProvidesClassSVN [] {\$Id:~\$} [<\small version and/or description>] [<\small description>] +% \DescribeMacro\ProvidesFileSVN [] {\$Id:~\$} [<\small version and/or description>] [<\small description>] % % All of these macros await a valid Subversion Id keyword string as a mandatory % argument. The file name and date is extracted from this string. For cases when @@ -209,15 +202,16 @@ % predefined and therefore ignored this is not needed for them when they are % packed inside a corresponding |.dtx| file, i.e. one with the same base name. % -% As with the standard macros mentioned above an optional argument can be given -% afterwards which contains additional information (date, version, description) -% of the package, class or file. However, the SVN macros automatically insert -% the date, so only a version number and a short description should be given. If -% this argument is not given a default information string is used which is shown -% below as \cs{revinfo}. +% As with the standard macros mentioned above additional information can be given optionally. +% Since v0.3 the SVN macro provide two optional arguments (before only one). +% If only one optional argument is given it is taken as a description text which may start +% with an potential version number. This version number must start with `|v|' and not include spaces +% and is extracted from the description. +% Alternatively the version number and the description can be provided using two separate optional arguments. +% If no optional argument is given the default string \cs{revinfo} (see below) is used instead. % -% Both optional arguments can include the following macros which are only valid -% inside them, but not afterwards: +% All three optional arguments can include the following macros which are only valid +% inside them, but not afterwards\footnote{They can be set using \cs{GetFileInfoSVN}}: % \begin{description} % \item[\cs{rev}] File revision. % \item[\cs{Rev}] File revision followed by a space. @@ -232,30 +226,37 @@ % % ^^A\subsection{Other Macros} % \par\medskip -% \DescribeMacro{\GetFileInfoSVN}\hspace*{-\parindent}\hspace{-\marginparsep}|*| -% \\[-\baselineskip]\hspace*{\parindent}The star version of this macro provides -% the file information of the last file which called one of the -% \cs{Provides\ldots SVN} macros. It is meant to be used inside a |.dtx| file -% directly after the provide macro so that the file information can be typeset -% inside the documentation. -% -% A `normal', non-star version is not yet implemented. +% \DescribeMacro\GetFileInfoSVN{} +% \DescribeMacro\GetFileInfoSVN* +% This macro sets the macros \cs{filebase}, \cs{fileext}, \cs{filename}, \cs{filedate}, \cs{fileversion}, \cs{filerev}, +% \cs{fileinfo} and \cs{filetoday} to the corresponding values of the file given by \meta{name}. The file must have been +% read/loaded before and use both a \cs{Provides\ldots SVN} macro and \cs{DefineFileInfoSVN}, otherwise the above macros +% will be set to |\relax|. The \meta{name} can be either the real filename or the optional short name used with +% \cs{DefineFileInfoSVN}. +% +% The star version of this macro provides the file information of the last file which called one of the +% \cs{Provides\ldots SVN} macros. +% +% The macros \cs{fileversion} and \cs{fileinfo} hold the file version and description taken from optional argument of +% the \cs{Provide...SVN} macro. The version is defined only if this argument starts with `|v|' and is otherwise empty. +% It includes all text up to the first space. +% The \cs{filetoday} macro generates a text representation of the \cs{filedate} using the \cs{today} macro. This macro +% must be first defined by the |\date|\meta{lang} macro from the \pkg{babel} package, otherwise \cs{filetoday} will not +% be defined. +% The other macros are described above. % -% The provided information macros are \cs{filebase}, \cs{fileext}, -% \cs{filename}, \cs{filedate}, \cs{filerev} and \cs{fileinfo}. The last one -% contains the file description, e.g.\ the content of the optional argument -% without date and version. The other macros were already described earlier. % % \par\medskip -% \DescribeMacro{\DefineFileInfoSVN}\hspace*{-\parindent}\hspace{-\marginparsep}\oarg{name} -% \marginpar{\it New in v1. 2009/05/03}\\ -% Defines a set of macros which provide the information collected by a previous +% \DescribeMacro\DefineFileInfoSVN[] +% Defined\marginpar{\it New in v1. 2009/05/03} +% a set of macros which provide the information collected by a previous % \cs{Provides\ldots} macro. The macros have the form % |\|\meta{name}|@|\meta{data} where \meta{name} is by default the filename % either with the file extension (general files) or without (packages and % classes). This default can be overwritten by the optional argument. -% The \meta{data} stands for |version|, |rev| (revision), |date| and |info| (the -% information part without the version number). +% The \meta{data} stands for |version|, |rev| (revision), |date| and |info| +% (the information part without the version number) +% and, since v3, file name |base| and |ext|(ension). % % \noindent % \textit{Example:} Applied to the |.dtx| file of this very package the @@ -263,12 +264,16 @@ % \begingroup % \makeatletter\centering % \begin{tabular}{ll} +% \toprule % Macro & Definition \\ -% \hline +% \midrule % \cs{svn-prov.dtx@version} & \@nameuse{svn-prov.dtx@version} \\ % \cs{svn-prov.dtx@rev} & \@nameuse{svn-prov.dtx@rev} \\ % \cs{svn-prov.dtx@date} & \@nameuse{svn-prov.dtx@date} \\ % \cs{svn-prov.dtx@info} & \@nameuse{svn-prov.dtx@info} \\ +% \cs{svn-prov.dtx@base} & \@nameuse{svn-prov.dtx@base} \\ +% \cs{svn-prov.dtx@ext} & \@nameuse{svn-prov.dtx@ext} \\ +% \bottomrule % \end{tabular} % \\[\medskipamount] % The style file however would get macros like \cs{svn-prov@version}. @@ -304,66 +309,80 @@ % \subsubsection*{Minimal usage} % \begin{example} % \ProvidesPackageSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % \end{example} % \begin{example} % \ProvidesClassSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % \end{example} % \begin{example} % \ProvidesFileSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % \end{example} % % \subsubsection*{Normal Usage} % \begin{example} % \ProvidesPackageSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % \begin{example} % \ProvidesClassSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % \begin{example} % \ProvidesFileSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % +% \subsubsection*{Normal Usage with only Description} +% \begin{example} +% \ProvidesFileSVN +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} +% [Example Description] +% \end{example} +% +% \subsubsection*{Normal Usage with separate Version and Description} +% \begin{example} +% \ProvidesFileSVN +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} +% [v1.0][Example Description] +% \end{example} +% % \subsubsection*{Overwriting Name} % \begin{example} % \ProvidesPackageSVN[othername] -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % % \subsubsection*{Overwriting Name including unneeded Extension} % \begin{example} % \ProvidesPackageSVN[othername.sty] -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % % \subsubsection*{Overwriting Name using Macros} % \begin{example} % \ProvidesFileSVN[\filebase.cfg] -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.0 Example Description] % \end{example} % % \subsubsection*{Using Macros in File Information String} % \begin{example} % \ProvidesPackageSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.\Rev Example Description] % \end{example} % % \subsubsection*{Adding Text to Default Information} % \begin{example} % \ProvidesPackageSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.\Rev Extra Text \revinfo] % \end{example} % @@ -373,7 +392,7 @@ % % \begin{example} % \ProvidesPackageSVN -% {$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $} +% {$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $} % [v1.\Rev Extra Text \revinfo] % \GetFileInfoSVN* % % ... @@ -395,6 +414,11 @@ % \StopEventually{} % \manualnewpage % \section{Implementation} +% +% \iffalse +%<*package> +% \fi +% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1999/12/01] % \end{macrocode} @@ -404,7 +428,7 @@ % used as filename. % \begin{macrocode} \def\ProvidesClassSVN{% - \svnprov@generic\ProvidesClass{\svnprov@filebase}% + \svnprov@generic\ProvidesClass{\svnprov@filebase@}% } % \end{macrocode} % \end{macro} @@ -414,7 +438,7 @@ % used as filename. % \begin{macrocode} \def\ProvidesFileSVN{% - \svnprov@generic\ProvidesFile{\svnprov@filebase.\svnprov@fileext}% + \svnprov@generic\ProvidesFile{\svnprov@filebase@.\svnprov@fileext@}% } % \end{macrocode} % \end{macro} @@ -424,13 +448,13 @@ % used as filename. % \begin{macrocode} \def\ProvidesPackageSVN{% - \svnprov@generic\ProvidesPackage{\svnprov@filebase}% + \svnprov@generic\ProvidesPackage{\svnprov@filebase@}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\svnprov@generic} -% Stores the arguments (1: original macro, 2: file mask (full filename of only +% Stores the arguments (1: original macro, 2: file mask (full filename if only % base is used?)). Then tests if a explicit file name was given as optional % argument. If not the file name from the SVN Id string is used. % \begin{macrocode} @@ -488,9 +512,8 @@ Id: #2 #3 #4-#5-#6 #7 $#8{% \def\next{% \begingroup - \def\@tempa####1>####2 {####2}% \PackageWarning{svn-prov}{Invalid SVN Id line found! File name might be - '#2' or '\expandafter\@tempa\meaning\@filef@und'. This occured}{}{}{}% + '#2' or '\expandafter\strip@prefix\meaning\@filef@und'. This occured}{}{}{}% \endgroup \svnprov@gobbleopt }% @@ -498,8 +521,8 @@ \ifx\relax#8\empty \def\svnprov@svnfilename{#2}% \svnprov@splitfilename{#2}% - \def\svnprov@filerev{#3}% - \def\svnprov@filedate{#4/#5/#6}% + \def\svnprov@filerev@{#3}% + \def\svnprov@filedate@{#4/#5/#6}% \def\next{\begingroup\svnprov@catcodes\svnprov@buildstring}% \fi \fi @@ -520,7 +543,7 @@ % \begin{macrocode} \def\svnprov@splitfilename#1{% \edef\g@tempa{#1}% - \let\svnprov@filebase\@gobble + \let\svnprov@filebase@\@gobble \expandafter \svnprov@splitfilename@\g@tempa.\relax } @@ -541,15 +564,15 @@ % \begin{macrocode} \def\svnprov@splitfilename@#1.#2\relax{% \if& - \ifx\svnprov@filebase\@gobble - \gdef\svnprov@filebase{#1}% - \gdef\svnprov@fileext{}% + \ifx\svnprov@filebase@\@gobble + \gdef\svnprov@filebase@{#1}% + \gdef\svnprov@fileext@{}% \else - \gdef\svnprov@fileext{#1}% + \gdef\svnprov@fileext@{#1}% \fi \let\next\relax \else - \xdef\svnprov@filebase{\svnprov@filebase.#1}% + \xdef\svnprov@filebase@{\svnprov@filebase@.#1}% \def\next{\svnprov@splitfilename@#2\relax}% \fi \next @@ -584,7 +607,7 @@ % prepended later. % \begin{macrocode} \def\svnprov@defaultdesc{% - (SVN Rev:\space\svnprov@filerev)% + (SVN Rev:\space\svnprov@filerev@)% } % \end{macrocode} % \end{macro} @@ -595,14 +618,19 @@ % filename and information. % \begin{macrocode} \newcommand*\svnprov@buildstring[1][\svnprov@defaultdesc]{% + \@ifnextchar{[}% + {\svnprov@buildstring@{#1}}% + {\svnprov@buildstring@{#1}[\relax]}% +} +\def\svnprov@buildstring@#1[#2]{% \endgroup \begingroup - \let\rev\svnprov@filerev - \let\filerev\svnprov@filerev + \let\rev\svnprov@filerev@ + \let\filerev\svnprov@filerev@ \def\Rev{\rev\space}% \let\revinfo\svnprov@defaultdesc - \let\filebase\svnprov@filebase - \let\fileext\svnprov@fileext + \let\filebase\svnprov@filebase@ + \let\fileext\svnprov@fileext@ \ifx\fileversion\@undefined \def\fileversion{v0.0}% \fi @@ -612,83 +640,158 @@ \svnprov@splitfilename{\svnprov@filename}% \fi \let\filename\svnprov@filename - \xdef\svnprov@fileinfo{#1}% + \ifx\relax#2\empty + \xdef\svnprov@fileinfo@{#1}% + \svnprov@getversion{#1}% + \global\let\svnprov@filedesc@\svnprov@filedesc@ + \global\let\svnprov@fileinfo@\svnprov@fileinfo@ + \else + \xdef\svnprov@fileversion@{#1}% + \xdef\svnprov@filedesc@{#2}% + \xdef\svnprov@fileinfo@{#1 #2}% + \fi \endgroup - \svnprov@ltxprov{\svnprov@filemask}[\svnprov@filedate\space\svnprov@fileinfo]% + \svnprov@ltxprov{\svnprov@filemask}% + [\svnprov@filedate@ + \ifx\svnprov@fileinfo@\empty\else + \space + \svnprov@fileinfo@ + \fi + ]% } % \end{macrocode} % \end{macro} % % \begin{macro}{\GetFileInfoSVN} -% At the moment this macro \textbf{must} be called with a star `|*|' which -% indicated that the current file is to be used. Other arguments are not -% implemented yet. -% -% The macro provides the file information of ``the current file'', i.e.\ the -% last file which called one of the above \cs{Provides\ldots} macros. For this -% the internal macros are simply copied to user-friendly names. +% \changes{v3.}{2010/04/01}{Added non-star version.} +% The macro provides the file information of the given file, or (the star version) the last file which called one of the above \cs{Provides\ldots} macros. +% For this the internal macros are simply copied to user-friendly names. % % This macro is inspired by the macro \cs{GetFileInfo}\marg{file name} from the % \texttt{doc} package. % \begin{macrocode} \def\GetFileInfoSVN#1{% \ifx*#1\relax - \let\filebase\svnprov@filebase - \let\fileext\svnprov@fileext + \let\filebase\svnprov@filebase@ + \let\fileext\svnprov@fileext@ \let\filename\svnprov@filename - \let\filedate\svnprov@filedate - \let\filerev\svnprov@filerev - \expandafter\svnprov@getversion - \svnprov@fileinfo\relax{} \relax\svnprov@endmarker - \let\fileversion\svnprov@fileversion - \let\fileinfo\svnprov@fileinfoonly + \let\filedate\svnprov@filedate@ + \let\filerev\svnprov@filerev@ + \let\fileversion\svnprov@fileversion@ + \let\fileinfo\svnprov@filedesc@ + \expandafter\svnprov@settoday@\svnprov@filedate@\relax + \else +% \end{macrocode} +% Given argument could be filename or short name. +% If a short name exists for the argument it was a filename is is defined as such, +% otherwise the filename is read from the |\|\meta{short name}|@long| macro. +% \begin{macrocode} + \expandafter\let\expandafter\@gtempa\csname#1@short\endcsname% + \ifx\@gtempa\relax + \def\@gtempa{#1}% + \expandafter\let\expandafter\filename\csname#1@long\endcsname + \else + \edef\filename{#1}% + \fi + \expandafter\let\expandafter\filebase\csname\@gtempa @base\endcsname + \expandafter\let\expandafter\fileext \csname\@gtempa @ext\endcsname + \expandafter\let\expandafter\filedate\csname\@gtempa @date\endcsname + \expandafter\let\expandafter\filerev \csname\@gtempa @rev\endcsname + \expandafter\let\expandafter\fileversion\csname\@gtempa @version\endcsname + \expandafter\let\expandafter\fileinfo\csname\@gtempa @info\endcsname + \@ifundefined{\@gtempa @date}% + {\def\filetoday{?}}% + {\expandafter\expandafter\expandafter\svnprov@settoday@\csname\@gtempa @date\endcsname\relax}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svnprov@settoday@} +% Sets \cs{filetoday} by expanding \cs{today} after setting the year/month/day locally. +% \begin{macrocode} +\def\svnprov@settoday@#1/#2/#3\relax{% + \ifx\today\@undefined + \def\filetoday{?}% \else - \PackageError{svn-prov}{Macro \textbackslash GetFileInfoSVN without '*' is - not implemented yet.}{}{}{}% + \begingroup + \year#1\relax + \month#2\relax + \day#3\relax + \xdef\filetoday{\today}% + \endgroup \fi } % \end{macrocode} % \end{macro} % % \begin{macro}{\DefineFileInfoSVN} -% Defines macros in the form |\|\meta{filename}|@|\meta{xxx}, where \meta{xxx} -% is date, version, rev(ision) and info. +% Defines macros in the form |\|\meta{filename}|@|\meta{xxx}, where \meta{xxx} is |date|, |version|, |rev|(ision), |info|, (file name)|base| and |ext|(ension). +% \changes{v3.}{2010/04/01}{Added file name `base' and 'ext'(ension).} % \begin{macrocode} \newcommand*\DefineFileInfoSVN[1][\svnprov@filemask]{% - \expandafter\svnprov@getversion - \svnprov@fileinfo\relax{} \relax\svnprov@endmarker \expandafter - \let\csname#1@date\endcsname\svnprov@filedate + \edef\csname\svnprov@filemask @short\endcsname{#1}% \expandafter - \let\csname#1@version\endcsname\svnprov@fileversion + \edef\csname#1@long\endcsname{\svnprov@filemask}% \expandafter - \let\csname#1@rev\endcsname\svnprov@filerev + \let\csname#1@base\endcsname\svnprov@filebase@ \expandafter - \let\csname#1@info\endcsname\svnprov@fileinfoonly + \let\csname#1@ext\endcsname\svnprov@fileext@ + \expandafter + \let\csname#1@date\endcsname\svnprov@filedate@ + \expandafter + \let\csname#1@version\endcsname\svnprov@fileversion@ + \expandafter + \let\csname#1@rev\endcsname\svnprov@filerev@ + \expandafter + \let\csname#1@info\endcsname\svnprov@filedesc@ } % \end{macrocode} % \end{macro} % % \begin{macro}{\svnprov@getversion} -% Splits the string at the first space into arguments \#1 (version) and \#2 -% (info). Argument \#3 will be empty if there was no space in the string. +% Checks if the argument (a file description) starts with `|v|'. If so +% everything until the first space is taken as version number. Otherwise +% the whole text is taken as description without version. +% Special care is taken to avoid a parser error if there is no space included. +% \changes{v3.}{2010/04/01}{Changed to look for leading `v' not just everything up to the first space.} % \begin{macrocode} -\def\svnprov@getversion#1 #2\relax#3\svnprov@endmarker{% - \if&% - \def\svnprov@fileversion{??}% +\def\svnprov@getversion#1{% + \edef\@tempa{#1\space}% + \expandafter\svnprov@@getversion\@tempa\svnprov@endmarker +} +\def\svnprov@@getversion{% + \@ifnextchar{v}% + {\svnprov@getversion@}% + {\svnprov@getversion@@}% +} +\def\svnprov@getversion@#1 #2\svnprov@endmarker{% + \gdef\svnprov@fileversion@{#1}% + \ifx&% + \gdef\svnprov@filedesc@{}% \else - \def\svnprov@fileversion{#1}% - \def\svnprov@fileinfoonly{#2}% + \xdef\svnprov@filedesc@{\svnprov@zapspace#2\svnprov@endmarker}% \fi } +\def\svnprov@getversion@@#1 \svnprov@endmarker{% + \gdef\svnprov@fileversion@{}% + \gdef\svnprov@filedesc@{#1}% +} +\def\svnprov@zapspace#1 \svnprov@endmarker{#1} % \end{macrocode} % \end{macro} % -% Finally, call the macro for this package itself. +% Finally, call the macros for this package itself. % \begin{macrocode} -\ProvidesPackageSVN{$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $}% +\ProvidesPackageSVN{$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $}% [\svnprov@version\space Package Date/Version from SVN Keywords] +\DefineFileInfoSVN[svnprov] % \end{macrocode} % +% \iffalse +% +% \fi +% % \Finale diff --git a/Master/texmf-dist/source/latex/svn-prov/svn-prov.ins b/Master/texmf-dist/source/latex/svn-prov/svn-prov.ins index 1ad59c32ee0..20f56c20890 100644 --- a/Master/texmf-dist/source/latex/svn-prov/svn-prov.ins +++ b/Master/texmf-dist/source/latex/svn-prov/svn-prov.ins @@ -1,4 +1,4 @@ -%% $Id: svn-prov.ins 1039 2009-05-02 15:42:31Z martin $ +%% $Id: svn-prov.ins 1853 2010-04-11 10:29:10Z martin $ \input docstrip.tex \preamble diff --git a/Master/texmf-dist/tex/latex/svn-prov/svn-prov.sty b/Master/texmf-dist/tex/latex/svn-prov/svn-prov.sty index 96ad3ff3403..e2ccf9d4c31 100644 --- a/Master/texmf-dist/tex/latex/svn-prov/svn-prov.sty +++ b/Master/texmf-dist/tex/latex/svn-prov/svn-prov.sty @@ -25,16 +25,16 @@ %% This work consists of the files svn-prov.dtx, svn-prov.ins %% and the derived file svn-prov.sty. %% -\def\svnprov@version{v2.\rev} +\def\svnprov@version{v3.\rev} \NeedsTeXFormat{LaTeX2e}[1999/12/01] \def\ProvidesClassSVN{% - \svnprov@generic\ProvidesClass{\svnprov@filebase}% + \svnprov@generic\ProvidesClass{\svnprov@filebase@}% } \def\ProvidesFileSVN{% - \svnprov@generic\ProvidesFile{\svnprov@filebase.\svnprov@fileext}% + \svnprov@generic\ProvidesFile{\svnprov@filebase@.\svnprov@fileext@}% } \def\ProvidesPackageSVN{% - \svnprov@generic\ProvidesPackage{\svnprov@filebase}% + \svnprov@generic\ProvidesPackage{\svnprov@filebase@}% } \def\svnprov@generic#1#2{% \def\svnprov@ltxprov{#1}% @@ -63,9 +63,8 @@ Id: #2 #3 #4-#5-#6 #7 $#8{% \def\next{% \begingroup - \def\@tempa####1>####2 {####2}% \PackageWarning{svn-prov}{Invalid SVN Id line found! File name might be - '#2' or '\expandafter\@tempa\meaning\@filef@und'. This occured}{}{}{}% + '#2' or '\expandafter\strip@prefix\meaning\@filef@und'. This occured}{}{}{}% \endgroup \svnprov@gobbleopt }% @@ -73,8 +72,8 @@ \ifx\relax#8\empty \def\svnprov@svnfilename{#2}% \svnprov@splitfilename{#2}% - \def\svnprov@filerev{#3}% - \def\svnprov@filedate{#4/#5/#6}% + \def\svnprov@filerev@{#3}% + \def\svnprov@filedate@{#4/#5/#6}% \def\next{\begingroup\svnprov@catcodes\svnprov@buildstring}% \fi \fi @@ -83,21 +82,21 @@ \endgroup \def\svnprov@splitfilename#1{% \edef\g@tempa{#1}% - \let\svnprov@filebase\@gobble + \let\svnprov@filebase@\@gobble \expandafter \svnprov@splitfilename@\g@tempa.\relax } \def\svnprov@splitfilename@#1.#2\relax{% \if& - \ifx\svnprov@filebase\@gobble - \gdef\svnprov@filebase{#1}% - \gdef\svnprov@fileext{}% + \ifx\svnprov@filebase@\@gobble + \gdef\svnprov@filebase@{#1}% + \gdef\svnprov@fileext@{}% \else - \gdef\svnprov@fileext{#1}% + \gdef\svnprov@fileext@{#1}% \fi \let\next\relax \else - \xdef\svnprov@filebase{\svnprov@filebase.#1}% + \xdef\svnprov@filebase@{\svnprov@filebase@.#1}% \def\next{\svnprov@splitfilename@#2\relax}% \fi \next @@ -106,17 +105,22 @@ \def\svnprov@endmarker{\@gobble{svn-prov endmarker}} \newcommand*\svnprov@gobbleopt[1][]{} \def\svnprov@defaultdesc{% - (SVN Rev:\space\svnprov@filerev)% + (SVN Rev:\space\svnprov@filerev@)% } \newcommand*\svnprov@buildstring[1][\svnprov@defaultdesc]{% + \@ifnextchar{[}% + {\svnprov@buildstring@{#1}}% + {\svnprov@buildstring@{#1}[\relax]}% +} +\def\svnprov@buildstring@#1[#2]{% \endgroup \begingroup - \let\rev\svnprov@filerev - \let\filerev\svnprov@filerev + \let\rev\svnprov@filerev@ + \let\filerev\svnprov@filerev@ \def\Rev{\rev\space}% \let\revinfo\svnprov@defaultdesc - \let\filebase\svnprov@filebase - \let\fileext\svnprov@fileext + \let\filebase\svnprov@filebase@ + \let\fileext\svnprov@fileext@ \ifx\fileversion\@undefined \def\fileversion{v0.0}% \fi @@ -126,48 +130,109 @@ \svnprov@splitfilename{\svnprov@filename}% \fi \let\filename\svnprov@filename - \xdef\svnprov@fileinfo{#1}% + \ifx\relax#2\empty + \xdef\svnprov@fileinfo@{#1}% + \svnprov@getversion{#1}% + \global\let\svnprov@filedesc@\svnprov@filedesc@ + \global\let\svnprov@fileinfo@\svnprov@fileinfo@ + \else + \xdef\svnprov@fileversion@{#1}% + \xdef\svnprov@filedesc@{#2}% + \xdef\svnprov@fileinfo@{#1 #2}% + \fi \endgroup - \svnprov@ltxprov{\svnprov@filemask}[\svnprov@filedate\space\svnprov@fileinfo]% + \svnprov@ltxprov{\svnprov@filemask}% + [\svnprov@filedate@ + \ifx\svnprov@fileinfo@\empty\else + \space + \svnprov@fileinfo@ + \fi + ]% } \def\GetFileInfoSVN#1{% \ifx*#1\relax - \let\filebase\svnprov@filebase - \let\fileext\svnprov@fileext + \let\filebase\svnprov@filebase@ + \let\fileext\svnprov@fileext@ \let\filename\svnprov@filename - \let\filedate\svnprov@filedate - \let\filerev\svnprov@filerev - \expandafter\svnprov@getversion - \svnprov@fileinfo\relax{} \relax\svnprov@endmarker - \let\fileversion\svnprov@fileversion - \let\fileinfo\svnprov@fileinfoonly + \let\filedate\svnprov@filedate@ + \let\filerev\svnprov@filerev@ + \let\fileversion\svnprov@fileversion@ + \let\fileinfo\svnprov@filedesc@ + \expandafter\svnprov@settoday@\svnprov@filedate@\relax + \else + \expandafter\let\expandafter\@gtempa\csname#1@short\endcsname% + \ifx\@gtempa\relax + \def\@gtempa{#1}% + \expandafter\let\expandafter\filename\csname#1@long\endcsname + \else + \edef\filename{#1}% + \fi + \expandafter\let\expandafter\filebase\csname\@gtempa @base\endcsname + \expandafter\let\expandafter\fileext \csname\@gtempa @ext\endcsname + \expandafter\let\expandafter\filedate\csname\@gtempa @date\endcsname + \expandafter\let\expandafter\filerev \csname\@gtempa @rev\endcsname + \expandafter\let\expandafter\fileversion\csname\@gtempa @version\endcsname + \expandafter\let\expandafter\fileinfo\csname\@gtempa @info\endcsname + \@ifundefined{\@gtempa @date}% + {\def\filetoday{?}}% + {\expandafter\expandafter\expandafter\svnprov@settoday@\csname\@gtempa @date\endcsname\relax}% + \fi +} +\def\svnprov@settoday@#1/#2/#3\relax{% + \ifx\today\@undefined + \def\filetoday{?}% \else - \PackageError{svn-prov}{Macro \textbackslash GetFileInfoSVN without '*' is - not implemented yet.}{}{}{}% + \begingroup + \year#1\relax + \month#2\relax + \day#3\relax + \xdef\filetoday{\today}% + \endgroup \fi } \newcommand*\DefineFileInfoSVN[1][\svnprov@filemask]{% - \expandafter\svnprov@getversion - \svnprov@fileinfo\relax{} \relax\svnprov@endmarker \expandafter - \let\csname#1@date\endcsname\svnprov@filedate + \edef\csname\svnprov@filemask @short\endcsname{#1}% + \expandafter + \edef\csname#1@long\endcsname{\svnprov@filemask}% + \expandafter + \let\csname#1@base\endcsname\svnprov@filebase@ + \expandafter + \let\csname#1@ext\endcsname\svnprov@fileext@ \expandafter - \let\csname#1@version\endcsname\svnprov@fileversion + \let\csname#1@date\endcsname\svnprov@filedate@ \expandafter - \let\csname#1@rev\endcsname\svnprov@filerev + \let\csname#1@version\endcsname\svnprov@fileversion@ \expandafter - \let\csname#1@info\endcsname\svnprov@fileinfoonly + \let\csname#1@rev\endcsname\svnprov@filerev@ + \expandafter + \let\csname#1@info\endcsname\svnprov@filedesc@ +} +\def\svnprov@getversion#1{% + \edef\@tempa{#1\space}% + \expandafter\svnprov@@getversion\@tempa\svnprov@endmarker } -\def\svnprov@getversion#1 #2\relax#3\svnprov@endmarker{% - \if&% - \def\svnprov@fileversion{??}% +\def\svnprov@@getversion{% + \@ifnextchar{v}% + {\svnprov@getversion@}% + {\svnprov@getversion@@}% +} +\def\svnprov@getversion@#1 #2\svnprov@endmarker{% + \gdef\svnprov@fileversion@{#1}% + \ifx&% + \gdef\svnprov@filedesc@{}% \else - \def\svnprov@fileversion{#1}% - \def\svnprov@fileinfoonly{#2}% + \xdef\svnprov@filedesc@{\svnprov@zapspace#2\svnprov@endmarker}% \fi } -\ProvidesPackageSVN{$Id: svn-prov.dtx 1747 2010-03-25 20:25:48Z martin $}% +\def\svnprov@getversion@@#1 \svnprov@endmarker{% + \gdef\svnprov@fileversion@{}% + \gdef\svnprov@filedesc@{#1}% +} +\def\svnprov@zapspace#1 \svnprov@endmarker{#1} +\ProvidesPackageSVN{$Id: svn-prov.dtx 1853 2010-04-11 10:29:10Z martin $}% [\svnprov@version\space Package Date/Version from SVN Keywords] +\DefineFileInfoSVN[svnprov] \endinput %% -- cgit v1.2.3