From df41ca308be95dbd0f1d0447874bbd1c58cd24d2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 1 Jun 2006 15:53:46 +0000 Subject: svninfo update git-svn-id: svn://tug.org/texlive/trunk@1638 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/svninfo/Makefile | 42 +- Master/texmf-dist/source/latex/svninfo/svninfo.dtx | 1402 +++++++++----------- Master/texmf-dist/source/latex/svninfo/svninfo.ins | 11 +- 3 files changed, 663 insertions(+), 792 deletions(-) (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/svninfo/Makefile b/Master/texmf-dist/source/latex/svninfo/Makefile index 968b2ea99f7..d235acbdedd 100644 --- a/Master/texmf-dist/source/latex/svninfo/Makefile +++ b/Master/texmf-dist/source/latex/svninfo/Makefile @@ -3,7 +3,7 @@ ## ## For configuration, update the following defines: ## -## $Id: Makefile 1490 2005-09-30 14:30:44Z brucker $ +## $Id: Makefile 1896 2006-05-11 08:25:56Z brucker $ ## ## This file ist part of the svninfo package. Please see the file ## svninfo.dtx for copyright information. @@ -18,31 +18,25 @@ DOCDIR = $(TEXDIR)/doc/latex2e DVIPS = dvips LATEX = latex MAKEINDEX = makeindex -LATEX2HTML = latex2html PDFLATEX = pdflatex - HTML_VER = 4.0,latin1,math - -HTML_DIR = html - TAR = tar ######################################################################## -REV = 0.3 +REV = 0.6 TAR_FILE = svninfo-$(REV).tar.gz TAR_DIR = svninfo-$(REV) -SRC = svninfo.dtx svninfo.ins README-$(REV) Makefile -GEN = svninfo.sty svninfo2html.tex svninfo.perl svninfo.cfg \ - svninfo.init +SRC = svninfo.dtx svninfo.ins README Makefile +GEN = svninfo.sty svninfo.cfg svninfo.init -all: $(BASE).sty dvi ps html pdf clean +all: $(BASE).sty dvi ps pdf clean sty: svninfo.sty -dtx: svninfo.dtx svninfo2html.tex -dvi: svninfo.dvi svninfo2html.dvi -ps: svninfo.ps svninfo2html.ps -pdf: svninfo.pdf svninfo2html.pdf +dtx: svninfo.dtx +dvi: svninfo.dvi +ps: svninfo.ps +pdf: svninfo.pdf idx: $(BASE).ind $(BASE).gls $(LATEX) $(BASE).dtx @@ -50,8 +44,6 @@ idx: $(BASE).ind $(BASE).gls $(LATEX) $*.ins svninfo.cfg: svninfo.sty -svninfo2html.tex: svninfo.sty -svninfo.perl: svninfo.sty svninfo.init: svninfo.sty %.dvi:%.dtx @@ -76,21 +68,7 @@ svninfo.init: svninfo.sty %.ps:%.dvi $(DVIPS) $*.dvi -html: svninfo.perl svninfo2html.tex - rm -fr $(HTML_DIR) - mkdir $(HTML_DIR) - @if type $(LATEX2HTML) > /dev/null 2>&1; \ - then $(LATEX) svninfo2html.tex; \ - $(LATEX2HTML) -dir $(HTML_DIR) -init_file svninfo.init \ - -html_version $(HTML_VER) svninfo2html.tex; \ - else echo; echo; \ - echo "******* no $(LATEX2HTML) installed"; \ - echo; echo; \ - fi - tar: distclean - rm -f README-$(REV) - cp README README-$(REV) rm -fr $(TAR_DIR) $(TAR_FILE) $(TAR_FILE).gz mkdir $(TAR_DIR) cp -p $(SRC) $(TAR_DIR) @@ -102,7 +80,7 @@ clean: *.out realclean: clean - rm -fr $(HTML_DIR) *.dvi *.ps $(GEN) *.pdf + rm -fr *.dvi *.ps $(GEN) *.pdf distclean: realclean rm -fr README-* diff --git a/Master/texmf-dist/source/latex/svninfo/svninfo.dtx b/Master/texmf-dist/source/latex/svninfo/svninfo.dtx index 4ab963da6e1..aad96124b55 100644 --- a/Master/texmf-dist/source/latex/svninfo/svninfo.dtx +++ b/Master/texmf-dist/source/latex/svninfo/svninfo.dtx @@ -7,10 +7,9 @@ %% %% This package is used to extract the revision and file information provided %% by the Subversion revision control system. -%% A PERL-package supporting svninfo and LaTeX2HTML is provieded too. %% %% Copyright (C) 1995 Dr. Juergen Vollmer -%% Copyright (C) 2003-2005 Achim D. Brucker +%% Copyright (C) 2003-2006 Achim D. Brucker %% %% License: %% This program can be redistributed and/or modified under the terms @@ -27,7 +26,7 @@ % in the driver %\fi % -%% \CheckSum{345} +%% \CheckSum{628} %% \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 %% Lower-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 @@ -62,67 +61,75 @@ % % \MakeShortVerb{\|} % \newcommand{\LatexToHtml}{\LaTeX 2\texttt{HTML}} +% \def\param#1{\texttt{\##1}} % \newcommand{\Cmd}[1]{\texttt{$\backslash$#1}} -% \newcommand{\SVN}{\emph{Subversion}} +% \newcommand{\Svn}{\emph{Subversion}} % \newcommand{\blank}{{\tiny$_\sqcup$}} % \newcommand{\Id}{\texttt{\$Id\$}} -% \newcommand{\SvnInfoCmd}[1]{\texttt{$\backslash$svnInfo\blank\$Id#1\$}} -% +% \newcommand{\SvnInfoCmd}[1]{\texttt{$\backslash$svnInfo\blank\$Id#1\$\blank}} +% +% \changes{v0.6}{2006/}{Added \texttt{\\svnInfoMinRevision} and +% \texttt{\\svnInfoMaxRevision} together with the option +% \texttt{revrange}. Also added support for \texttt{\\} in keywords.} +% \changes{v0.5}{2006/01/11}{Removed support for \LatexToHtml (it is +% non-free software and also seems to be unmaintained) and added new +% command \texttt{\\svnKeyword} for defining arbitrary svn keywords +% (e.g. \texttt{\string$Author:\string$}).} +% \changes{v0.4}{2005/11/07}{Added new package options \texttt{draft}, \texttt{final}, +% \texttt{eso-foot}, and \texttt{scrpage}. Fixed problem +% with `\_' in file names.} % \changes{v0.3}{2005/09/30}{Added support for \texttt{\$Id:\$} keywords without -% owner information (a bug reported by Uwe Ziegenhagen).} -% \changes{v0.2.1}{2005/04/07}{Added \texttt{\\svnId} (suggested by Thomas Weber).} +% owner information.} +% \changes{v0.2.1}{2005/04/07}{Added \texttt{\\svnId}.} % \changes{v0.2}{2005/01/17}{Removed \LatexToHtml{} build-dependency.} % \changes{v0.1}{2003/08/14}{Initial version, mainly a modified version % of the \texttt{rcsinfo} package.} % % \title{The \texttt{svninfo} package} % \author{Achim D.~Brucker\\ -% {\footnotesize email: brucker@freiburg.linux.de}} -% \date{Oktober 3, 2005\\Version 0.3} +% {\footnotesize brucker@freiburg.linux.de}\\ +% {\footnotesize http://www.brucker.ch/}} +% \date{May 11, 2006\\Version 0.6} % % \maketitle % % \begin{abstract} % \noindent This package is used to extract the revision and file -% information provided by the \SVN\ revision control system -% (\texttt{http://subversion.tigris.org}). Support for the \LatexToHtml\ -% conversion tool is provided\footnote{\LatexToHtml\ is a conversion -% tool that allows documents written in \LaTeX\ to become part of the -% World Wide Web. It's written by \emph{Nikos Drakos, Computer Based -% Learning Unit, University of Leeds.}}. +% information provided by the \Svn\ revision control system +% (\texttt{http://subversion.tigris.org}). % \end{abstract} % %\section{Introduction} % % To maintain different versions of a document or to keep track on the % development of one, -% the document is kept under a revison control system like \emph{SCCS}, -% \emph{CVS}, or \SVN. -% This package assumes you are using the \SVN\ system. +% the document is kept under a revision control system like \emph{SCCS}, +% \emph{CVS}, or \Svn. +% This package assumes you are using the \Svn\ system. % To present the version information of a document, one needs to extract it % from some kind of text inserted by the revision control system. -% \SVN\ offers therefore the \Id\ keyword, which is expanded by the \SVN\ -% \emph{update} command and contains a -% lot of useful information. This information is made available through -% this package. +% \Svn\ offers therefore several keywords that are expanded by the \Svn\ +% \emph{update} command. The most informative keyword is +% |$Id$| which contains a lot of useful information. This information +% is made available through this package. Additionally, the package +% allows one to extract also the information from the more specific +% keywords, e.g., |$Author$| or |$Date$|. % % The information obtained from the expanded \Id\ string are % \begin{itemize} % \item the filename, % \item the revision number, -% \item the date and time of the last \SVN\ \emph{co} command, and +% \item the date and time of the last \Svn\ \emph{co} command, and % \item name of the user who has done this action. % \end{itemize} % For each of these items a macro is defined. -% When \emph{updating} a file, the \SVN\ keywords should be contained in -% the \emph{updated} source. Further, one has to set the \SVN property +% When \emph{updating} a file, the \Svn\ keywords should be contained in +% the \emph{updated} source. Further, one has to set the \Svn property % for keyword expansion of that file, e.g.\ % \begin{verbatim} % svn propset svn:keywords "Id" svninfo.dtx % \end{verbatim} -% See the \SVN\ documentation for more details. -% If the user wishes, the |\today| macro is redefined, so that it returns -% the \SVN\ date. +% See the \Svn\ documentation for more details. % % If you want to read about the implementation, put a \% before % |\Only|\-|Description| in the code marked with |<*driver>| in the file @@ -136,14 +143,18 @@ % % \begin{description} % \item[today] -% Set the date of |\today| to the date obtained by the \SVN\ information. +% Set the date of |\svnToday| to the date obtained by the \Svn\ information. % If the \Id\ string is not expanded (see below), the current date is % used. % \item[notoday] -% Don't use the \SVN\ date for |\today|. +% Don't use the \Svn\ date for |\svnToday|. +% \item[revrange] For multi-file documents, display minimum and +% maximium revision. Every file of the document must either +% include a |\svnInfo| or a |\svnKeyword $Revision:$| statement. +% This is information needs two runs of \LaTeX{} to be correct. % \item[fancyhdr] % We use the \texttt{fancyhdr} package to fill the footline with -% \SVN\ information: filename, revision-number and date. +% \Svn\ information: filename, revision-number and date. % % If the \texttt{fancyhdr} package is not already loaded, it will be % loaded @@ -155,64 +166,86 @@ % \item[nofancy] % We don't define the footline. The % \texttt{fancyhdr} package is not loaded. +% \item[scrpage2] +% Use \texttt{scrpage2} instead of \texttt{fancyhdr}. +% \item[eso-foot] +% Use \texttt{eso-pic} for showing a tiny info line at the bottom +% line of the paper. % \item[long] % If used together with \texttt{fancy} / \texttt{fancyhdr} the date % string is printed in the long format -% as |\today| returns it. If \texttt{fancy} / \texttt{fancyhdr} +% as |\svnToday| returns it. If \texttt{fancy} / \texttt{fancyhdr} % is not used, nothing. % \item[short] % If used together with \texttt{fancy} / \texttt{fancyhdr} the date % string is printed in the short % format \emph{YYYY-MM-DD}. % If \texttt{fancy} / \texttt{fancyhdr} is not used, nothing. +% \item[final] Don't define the footline. If you want the \Svn\ in the +% final document, please use\\ +% \verb|\usepackage{draft}| +% \item[draft] If \texttt{nofancy} is not used, show a footline with \Svn information. % \end{description} -% If the \texttt{babel} package is used, the |\today| string is language +% If the \texttt{babel} package is used, the |\svnToday| string is language % dependent. % -% The default options are: \emph{today,long}. In the configuration file -% |svninfo.cfg| one of fancy heading packages may be set as a default -% option too. +% The default options are: \emph{draft,today,long}. You may also +% configure the default fancy heading packages in the configuration +% file |svninfo.cfg|. % %\subsection{Commands} % -% \subsubsection{Defining the \SVN\ information} +% \subsubsection{Defining the \Svn\ Id information} % % There is only one macro to define the information: -% |\svnInfo|\DescribeMacro{\svnInfo}. -% Since it must collaborate with \SVN\ it has an ``unusual'' calling sequence: -% The arguments are surrouned by \$. +% |\svnInfo|\DescribeMacro{\svnInfo}. Since it must collaborate with +% \Svn\ it has an ``unusual'' calling sequence: The arguments are +% prefaced with a `\$' and completed with a `\$\blank' (note the final +% space or carriage return). % The following arguments are valid:\\ % \hspace*{0.5em} \SvnInfoCmd{}\\ % \hspace*{0.5em} \SvnInfoCmd{:}\\ -% \hspace*{0.5em} \SvnInfoCmd{:\blank\emph{file}\blank\emph{rev}\blank\emph{YYYY-MM-DD}\blank\emph{hh:mm:ss}\blank\emph{owner}} +% \hspace*{0.5em} +% \SvnInfoCmd{:\blank\emph{file}\blank\emph{rev}\blank\emph{YYYY-MM-DD}\blank\emph{hh:mm:ss}\blank\emph{owner}\blank} % -% In the first two forms, \SVN\ has not expanded the \Id\ string. +% In the first two forms, \Svn\ has not expanded the \Id\ string. % This form will usually be used before the file is \emph{checked in} % the first time. % % \emph{YYYY-MM-DD} is a date, \emph{hh:mm:ss} a time. -% Note: when you perform the \SVN\ \emph{check out} command, the \Id\ string -% is expanded by \SVN\ automatically. +% Note: when you perform the \Svn\ \emph{check out} command, the \Id\ string +% is expanded by \Svn\ automatically. % % To take effect, |\svnInfo| must follow the |\begin{document}|. % If you are using multiple files for a document, you could place % |\svnInfo| at the % beginning of each file, so the information from the current file is -% obtained (this is not valid, when translating with \LatexToHtml, see below). +% obtained. % -% \subsubsection{Accessing the \SVN\ information} -% There are the following macros to access the information provided by \SVN. -% If \SVN\ has not expanded the \Id\ string, or no |\svnInfo| command is given, +% \subsubsection{Accessing the \Svn\ Id information} +% There are the following macros to access the information provided by \Svn. +% If \Svn\ has not expanded the \Id\ string, or no |\svnInfo| command is given, % default values are returned. % % \begin{itemize} % \item \DescribeMacro{\svnInfoFile} The name of the source file. % Default: \texttt{--sourcefile--}. -% \item \DescribeMacro{\svnInfoRevision} The \SVN\ revision number, of the +% \item \DescribeMacro{\svnInfoRevision} The revision number, of the % \emph{checked out} file. % Default: \texttt{--revision--}. +% \item \DescribeMacro{\svnInfoMinRevision} The minimum revision +% number of multi-file documents. Every file of the document must either +% include a |\svnInfo| or a |\svnKeyword $Revision:$| statement. +% This is information needs two runs of \LaTeX{} to be correct. +% of \LaTeX{} to be correct. +% Default: \texttt{--minrevision--}. +% \item \DescribeMacro{\svnInfoMaxRevision} The maximum revision +% number of multi-file documents. Every file of the document must either +% include a |\svnInfo| or a |\svnKeyword $Revision:$| statement. +% This is information needs two runs of \LaTeX{} to be correct. +% Default: \texttt{--maxrevision--}. % \item \DescribeMacro{\svnInfoDate} The date in the form \emph{YYYY-MM-DD}, -% when the file was \emph{checked out}. +% when the file was \emph{checked out}. % Default: the current date. % \item \DescribeMacro{\svnInfoTime} The time, when the file was % \emph{checked out}. @@ -226,90 +259,22 @@ % \item \DescribeMacro{\svnInfoDay} The day \emph{DD} of |\svnInfoDate|. % Default: the current day. % \item \DescribeMacro{\svnInfoLongDate} The date in the form of |\today| -% when the file was \emph{checked out}. This is language dependend. +% when the file was \emph{checked out}. This is language depended. % Default: the current date. -% \item \DescribeMacro{\svnId} Mimicks the behavior of the \Id\ strings, i.e.\ it -% prints a string with a summary of the above described information. -% \end{itemize} -% -% \subsection{\LatexToHtml} -% -% When converting a \LaTeX\ document to \texttt{HTML} using the -% \LatexToHtml\ tool, -% it's possible to use the \SVN\ information in the \texttt{HTML} document too. -% This functionality is offered by the extension file \texttt{svninfo.perl} -% which should be placed into the directory \texttt{LATEX2HTML/styles}. -% For more information have a look at the documentation of \LatexToHtml. -% -% An example is given in the file \texttt{svninfo2html.tex}. -% -% \noindent\underline{Notes} -% \begin{itemize} -% \item Use at least version \emph{99.1 release (March 30, 1999)} of -% \LatexToHtml. -% -% \item You should |\usepackage{html}|. -% -% \item You must run \LaTeX\ on the input file before running \LatexToHtml. -% -% \item In order to make \LatexToHtml\ read the \verb|.aux| file, you must -% either: -% \begin{itemize} -% \item call \LatexToHtml\ with the option -% \verb|-show_section_numbers| or -% \item include the \verb|.aux| file explicitly in your \LaTeX-source, by -% adding the lines in the preamble:\\ -% \verb|\begin{htmlonly}|\\ -% \verb|\input{|\emph{source}\verb|.aux}|\\ -% \verb|\end{htmlonly}|\\ -% which requires \verb|\usepackage{html}|. -% \end{itemize} -% If you don't do so, the \verb|\svnInfo...| commands give no value. -% -% \item If using the \LatexToHtml\ tool, only the last |\svnInfo| takes -% effect, e.g.~if using several input files each having the |\svnInfo| -% command, only the vales of the last included file are used. -% (If this is a serious problem for you, drop me a mail). -% -% \item If the \verb|fancy| / \verb|fancyhdr| option is given to the -% \verb|svninfo| package, -% the date of the \verb|ADDRESS| at the bottom of the \texttt{HTML} -% page is set to the \SVN\ date. -% -% \item If you would like to set your own \verb|ADDRESS| text, you should -% define a procedure, which sets \texttt{perl} \verb|$main::ADDRESS| -% variable in your local \texttt{.latex2html} initialization file. -% The routine may use the \texttt{perl} -% variables shown below. Assign a reference of this procdure to the -% \texttt{perl}-variable -% \verb|$svninfo::SetAddressProc|. -% E.g.\ if you have a \texttt{perl} routine \verb|&my_address_field|, -% then \\ -% \verb|$svninfo::SetAddressProc = &my_address_field|. +% \item \DescribeMacro{\svnId} Mimics the behavior of the \Id\ strings, i.e.\ it +% prints a string with a summary of the above described +% information. +% \item \DescribeMacro{\svnToday} The date obtained from the \Svn\ information +% in the format |\today| is using. % \end{itemize} -% -% \newcommand{\Var}[1]{\texttt{\$svninfo::#1}} -% \noindent -% Here are the commands, the Perl-variables and their output:\\ -% \begin{tabular}{lll} -% \LaTeX-command & \texttt{perl} variable & Result for this file \\\hline -% \verb|\today| & \texttt{\$today} & \today \\ -% \verb|\svnInfoFile| & \Var{File} & \svnInfoFile \\ -% \verb|\svnInfoRevision| & \Var{Revision} & \svnInfoRevision \\ -% \verb|\svnInfoOwner| & \Var{Owner} & \svnInfoOwner \\ -% \verb|\svnInfoDate| & \Var{Date} & \svnInfoDate \\ -% \verb|\svnInfoLongDate| & \Var{LongDate} & \svnInfoLongDate \\ -% \verb|\svnInfoDay| & \Var{Day} & \svnInfoDay \\ -% \verb|\svnInfoMonth| & \Var{Month} & \svnInfoMonth \\ -% \verb|\svnInfoYear| & \Var{Year} & \svnInfoYear \\ -% \end{tabular} -% % \section{Examples} % % \newcommand{\svnExample}{ % \begin{tabular}[t]{rl} % \Cmd{svnInfoFile} & \svnInfoFile \\ % \Cmd{svnInfoRevision} & \svnInfoRevision \\ +% \Cmd{svnInfoMinRevision} & \svnInfoMinRevision \\ +% \Cmd{svnInfoMaxRevision} & \svnInfoMaxRevision \\ % \Cmd{svnInfoDate} & \svnInfoDate \\ % \Cmd{svnInfoTime} & \svnInfoTime \\ % \Cmd{svnInfoOwner} & \svnInfoOwner \\ @@ -319,7 +284,7 @@ % \Cmd{svnInfoMonth} & \svnInfoMonth \\ % \Cmd{svnInfoDay} & \svnInfoDay \\ % \Cmd{svnInfoLongDate} & \svnInfoLongDate \\ -% \Cmd{today} & \today \\ +% \Cmd{svnToday} & \svnToday \\ % \end{tabular}\\ % \Cmd{svnId} \svnId % \bigskip @@ -339,38 +304,103 @@ % |\svnInfo| standard version\\ % {\small\verb+\svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $+}\\ % \svnExample -% +% % \svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z $ % |\svnInfo| standard version without owner\\ % {\small\verb+\svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z $+}\\ % \svnExample % +% \svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z infsec\brucker $ +% |\svnInfo| standard version with \\ in the owner \\ +% {\small\verb+\svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $+}\\ +% \svnExample +% % \svnInfo Id: svninfo.dtx 12 2002-04-19 12:27:55 brucker $ % |\svnInfo| no leading \$\\ % {\footnotesize\verb+\svnInfo Id: svninfo.dtx 12 2002-04-19 12:27:55 brucker $+}\\ % \svnExample % +% \section{The generic \Svn\ keyword interface} +% In addition to the already presented |\svnInfo| macro which is +% specially built for analyzing the \Svn |$Id$| information we also +% provide a generic interface via +% |\svnKeyword|\DescribeMacro{\svnKeyword}. This interface can +% be used to extract information from the remaining keywords: +% \begin{itemize} +% \item |$Date$|: The date of the last commit with changes. This +% information can also be accessed using the keyword +% |$LastChangedDate$|. +% \item |$Revision$|: The revision of the last commit with +% changes. This information can also be accessed using the keyword +% |$LastChangedRevision$| or |$Rev$|. +% \item |$Author$|: The author of the last commit with changes. This +% information can also be accessed using the keyword +% |$LastChangeBy$|. +% \item |$HeadURL$|: The the full URL to the latest version of the +% file in the repository. This information can also be accessed +% using the keyword |$URL$|. +% \end{itemize} +% These keywords can be accessed using the |\svnKeyword| +% macro. This macro accepts a single argument that should be of the +% form |$|\meta{Keyword}|$| (unexpanded) or +% |$|\meta{Keyword}:\blank\meta{value}\blank|$| (expanded), e.g.: +% \begin{verbatim} +% \svnKeyword $Author: brucker $ +% \end{verbatim} +% The |\svnKeyword| updates the corresponding \Svn\ Id +% information, e.g., our example updates |\svnInfoOwner|. In more +% detail: +% \begin{itemize} +% \item |\svnKeyword $Date:$| updates the date and time +% informations, e.g., |\svnInfoDate|\DescribeMacro{\svnInfoDate}, +% |\svnInfoMonth|\DescribeMacro{\svnInfoMonth}, or +% |\svnInfoTime|\DescribeMacro{\svnInfoTime}. +% \item |\svnKeyword $Revision:$| updates +% |\svnInfoRevision|\DescribeMacro{\svnInfoRevision}. +% \item |\svnKeyword $Author:$| updates +% |\svnInfoOwner|\DescribeMacro{\svnInfoOwner}. +% \item |\svnKeyword $HeadURL:$| updates +% |\svnInfoHeadURL|\DescribeMacro{\svnInfoHeadURL}. +% \end{itemize} +% +% Note, the parser used by |\svnKeyword| is not that powerful than +% the one used by |\svnInfo|. Thus it is advisable to use +% |\svnKeywordId| for the |$Id$| keyword and |\svnKeyword| +% only for the keywords described in this section. +% +% Further, the |\svnKeyword| macro does not reset all keyword +% definitions globally, i.e., you can combine the |$Revision$| +% of one file, with the |$Author$| of another file. Please take +% care of that! +% % \section{Acknowledgements} % %%%%%%%%%%%%%%%%%%%%%%%%% -% This package is directly based on \texttt{rcsinfo} from -% Dr.~J{\"u}rgen Vollmer which is distributed via the CTAN archives -% in directory '\texttt{macros/latex/contrib/rcsinfo}'. All the honour -% belongs to him, I only adopted his code to the format of the -% \verb+Id+ line subversion uses % and removed the support for -% the outdated fancyheadings package. +% This package is based on \texttt{rcsinfo} from Dr.~J{\"u}rgen +% Vollmer. The \texttt{rcsinfo} package is distributed via the CTAN +% archives ('\texttt{macros/latex/contrib/rcsinfo}'). +% +% The code for parsing generic \Svn{} keywords was taken from the +% \texttt{svn} packages written by Richard Lewis. The \texttt{svn} +% package is distributed via the CTAN archives +% ('\texttt{macros/latex/contrib/svn}'). +% +% Further I want to thank all the people that reported bugs and ideas +% for improvements, often including patches: Michael Niedermair, Heiko +% Oberdiek, Bernd Raichle, J\"org Sommer, Arnout Standaert, Thomas Weber, and Uwe +% Ziegenhagen. % % \section{Copyright and License} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \begin{tabular}{ll} % Copyright (\copyright) 1995 & Dr. J{\"u}rgen Vollmer\\ -% Copyright (\copyright) 2003--2005 & Achim D.~Brucker \texttt{brucker@freiburg.linux.de}\\ +% Copyright (\copyright) 2003--2006 & Achim D.~Brucker \texttt{brucker@freiburg.linux.de}\\ % \end{tabular} % % \noindent This program can be redistributed and/or modified under -% the terms of the \LaTeX Project Public License Distributed from CTAN -% archives in directory '\texttt{macros/latex/base/lppl.txt}'; either -% version 1 of the License, or any later version. +% the terms of the \LaTeX{} Project Public License Distributed from +% CTAN archives in directory '\texttt{macros/latex/base/lppl.txt}'; +% either version 1 of the License, or any later version. % % \StopEventually{} % @@ -388,7 +418,7 @@ %<*driver> \documentclass{article} \usepackage{doc} -\usepackage{svninfo} +\usepackage[nofancy]{svninfo} \OnlyDescription \makeatletter \if@svnInfoUseFancyhdr@ @@ -436,38 +466,29 @@ % \section{The Implementation} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% The implementation is based on cracking the \Id\ string. To support -% \LatexToHtml\ some macro definitions are written to the |.aux| file. -% These macros are the used by \LatexToHtml\ and |svninfo.perl| to extract -% the \SVN\ info. +% The implementation is based on cracking the \Id\ string. % % What do we need, and who we are: % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{svninfo}[2005/09/29 v0.3] +\ProvidesPackage{svninfo}[2006/05/11 v0.6] % \end{macrocode} % -% Declare some local counters to store the \SVN\ date +% Declare some local counters to store the \Svn\ date % \begin{macrocode} \newcount\@svnInfoDay \newcount\@svnInfoMonth \newcount\@svnInfoYear % \end{macrocode} -% Declare some local counters to hold some temporary information -% \begin{macrocode} -\newcount\@svnInfoYearTmp -\newcount\@svnInfoMonthTmp -\newcount\@svnInfoDayTmp -% \end{macrocode} % -% To memorize, that we want to set |\today| to the date obtained by the -% \SVN\ information. +% To memorize, that we want to set |\svnToday| to the date obtained by the +% \Svn\ information. % \begin{macrocode} \newif\if@svnInfoToday@ % \end{macrocode} % -% |\today| should return the date obtained by the \SVN\ information. +% |\svnToday| should return the date obtained by the \Svn\ information. % \begin{macrocode} \DeclareOption{today}{ \@svnInfoToday@true @@ -480,29 +501,78 @@ \@svnInfoToday@false } % \end{macrocode} +% To memorize if we should show ranges of revision (for multiple-file +% documents): +% \begin{macrocode} +\newif\if@svnInfoRevRange@ +\@svnInfoRevRange@false +% \end{macrocode} +% \begin{macrocode} +\DeclareOption{revrange}{ + \@svnInfoRevRange@true +} +% \end{macrocode} +% \begin{macrocode} +% To memorize if we are in final or draft mode: +% \begin{macrocode} +\newif\if@svnInfoDraft@ +% \end{macrocode} +% \begin{macrocode} +\DeclareOption{final}{ + \@svnInfoDraft@false +} +\DeclareOption{draft}{ + \@svnInfoDraft@true +} +% \end{macrocode} % -% To memorize, that we want to have the the new -% \texttt{fancyhdr} footline filled with \SVN\ information. +% To memorize, that we want to have the old \texttt{fancyheadings}, the new +% \texttt{fancyhdr}, or \texttt{srcpage2}, or \texttt{eso-pic} +% footline filled with \Svn\ information. % \begin{macrocode} +\newif\if@svnInfoUseFancy@ \newif\if@svnInfoUseFancyhdr@ +\newif\if@svnInfoUseScrpage@ +\newif\if@svnInfoUseEsofoot@ % \end{macrocode} % % We want to use the \texttt{fancyhdr} -% package, and set the footline with the \SVN\ information. +% package, and set the footline with the \Svn\ information. % Only one option may be in effect. % \begin{macrocode} \DeclareOption{fancy}{ + \@svnInfoUseFancy@true \@svnInfoUseFancyhdr@false + \@svnInfoUseScrpage@false + \@svnInfoUseEsofoot@false } \DeclareOption{fancyhdr}{ + \@svnInfoUseFancy@false \@svnInfoUseFancyhdr@true + \@svnInfoUseScrpage@false + \@svnInfoUseEsofoot@false +} +\DeclareOption{scrpage}{ + \@svnInfoUseFancy@false + \@svnInfoUseFancyhdr@false + \@svnInfoUseScrpage@true + \@svnInfoUseEsofoot@false +} +\DeclareOption{eso-foot}{ + \@svnInfoUseFancy@false + \@svnInfoUseFancyhdr@false + \@svnInfoUseScrpage@false + \@svnInfoUseEsofoot@true } % \end{macrocode} % % Ok we don't want do use it. % \begin{macrocode} \DeclareOption{nofancy}{ + \@svnInfoUseFancy@false \@svnInfoUseFancyhdr@false + \@svnInfoUseScrpage@false + \@svnInfoUseEsofoot@false } % \end{macrocode} % @@ -527,7 +597,7 @@ % % Use these default options, % \begin{macrocode} -\ExecuteOptions{today,long} +\ExecuteOptions{draft,today,long} % \end{macrocode} % % read the configuration file, to set the default fancy headings package, @@ -537,20 +607,35 @@ % % and the process the user options. % \begin{macrocode} -\ProcessOptions +\ProcessOptions*\relax % \end{macrocode} -% Load \texttt{fancyhdr} if neccessary. +% Load packages for page headers of footers if necessary. % \begin{macrocode} -\if@svnInfoUseFancyhdr@ - \RequirePackage{fancyhdr} -\fi +\if@svnInfoDraft@ + \if@svnInfoUseFancy@ + \RequirePackage{fancyheadings} + \fi + \if@svnInfoUseFancyhdr@ + \RequirePackage{fancyhdr} + \fi + \if@svnInfoUseScrpage@ + \RequirePackage{scrpage2} + \fi + \if@svnInfoUseEsofoot@ + \RequirePackage{eso-pic} + \fi +\fi +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{ifthen} % \end{macrocode} % % If no language for the |babel| package is given in the document, -% we have to redefine |\today| (otherwise the changed |\year|, |\month| and -% |\day| won't work). In this case use the english version of |\today|. +% we have to redefine |\svnToday| (otherwise the changed |\year|, |\month| and +% |\day| won't work). In this case use the English version of |\svnToday|. % \begin{macrocode} -\def\today{\ifcase\month\or +\def\svnToday{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} @@ -558,34 +643,32 @@ % % We have a problem, since the number of arguments of |\svnInfo| vary from % zero to five. -% To deal with that, we use some kind ``contuinuation passing'' style of +% To deal with that, we use some kind ``continuation passing'' style of % programming. % |\@svnInfoNext| contains the action to be done next. % -% Some packages (e.g.\ the |babel|-package with the |french|-option) -% change the catcode of |:| (colon). If this happens, we have to -% undo this in order to parse the \Id\ string (which contains a colon) -% and restore its original catcode afterwards. -% This flag is used to store whether the state of the colon was changed to -% be active. -% \begin{macrocode} -\newif\if@svnInfoColonIsActive@ -% \end{macrocode} %\begin{macro}{\svnInfo} -% Extract the \SVN\ information, and give commands shown above their values. +% Extract the \Svn\ information, and give commands shown above their values. % Check the catcode of |:| and set the flag. The restoration is done after the % |:| has been read. Allow \_ (underscore) in file names, hence change the % |\catcode| of it. % \begin{macrocode} -\def\svnInfo { - \catcode`\_=13 - \ifnum\catcode`\:=13 - \@svnInfoColonIsActive@true - \catcode`:=12 - \else - \@svnInfoColonIsActive@false - \fi + +% +% Whenever reading another portion of the SVN/RCS info, +% expand \@svnBeginRead before calling the reading macro +% and call \@svnEndRead as first thing inside the reading macro. +\def\@svnBeginRead{\begingroup + \catcode`\_=13 % + \catcode`:=12 % + \catcode`\\=12 % +} +\def\@svnEndRead{\endgroup +} + + +\def\svnInfo {\@svnBeginRead \@svnInfoReadArgs } % \end{macrocode} @@ -598,22 +681,14 @@ % \$Id-Tags to be expanded by SVN in some cases). % Restore the catcode of the |:|. % \begin{macrocode} -\def\@svnInfoReadArgs #1Id#2 { + +\def\@svnInfoReadArgs #1Id#2 {\@svnEndRead \@svnInfoDefaults - \if $#2 \let \@svnInfoNext = \@svnInfoEat - \else \let \@svnInfoNext = \@svnInfoEatColon + \if $#2 \expandafter\@svnInfoEat + \else \@svnBeginRead + \expandafter\@svnInfoEatColon \fi -% \end{macrocode} -% |#2| contains either |$| or |:$| or |:|\blank\ hence we have read the colon -% and can restore the catode of it. -% \begin{macrocode} - \if@svnInfoColonIsActive@ - \catcode`:=13 - \fi -% \end{macrocode} -% Start processing the \Id\ string. -% \begin{macrocode} - \@svnInfoNext $Id#2 + $Id#2 % } % \end{macrocode} %\end{macro} @@ -622,7 +697,7 @@ % This macro eats up its argument, i.e.\ removes it from the input. % Reset the |\catcode| of the underscore. % \begin{macrocode} -\def\@svnInfoEat #1 {\catcode`\_=8} +\def\@svnInfoEat #1 {} % \end{macrocode} %\end{macro} @@ -631,11 +706,12 @@ % The colon may be followed by a \$, which means that the \Id\ string is not % expanded. % \begin{macrocode} -\def\@svnInfoEatColon $Id:#1 { - \if $#1 \let \@svnInfoNext = \@svnInfoEat - \else \let \@svnInfoNext = \@svnInfoCrackAndEat +\def\@svnInfoEatColon $Id:#1 {\@svnEndRead + \if $#1 \expandafter\@svnInfoEat + \else \@svnBeginRead + \expandafter\@svnInfoCrackAndEat \fi - \@svnInfoNext #1 + #1 % } % \end{macrocode} %\end{macro} @@ -649,9 +725,8 @@ % We have to take the next 7 tokens. % Note, first argument (\verb|#1|) contains only spaces. % \begin{macrocode} -\def\@svnInfoCrackAndEat #1 #2 #3 #4 #5 #6 { - \@svnInfoCrackString #2 #3 #4 #5 #6 - \@svnInfoNext +\def\@svnInfoCrackAndEat #1 #2 #3 #4 #5 #6 {\@svnEndRead + \@svnInfoCrackString #2 #3 #4 #5 #6 % } % \end{macrocode} %\end{macro} @@ -667,36 +742,32 @@ % we already consumed the terminating \$. % % Split the date into year,month and day. -% If the option \texttt{today} is given, |\today| returns from now -% on the \SVN\ date. +% If the option \texttt{today} is given, |\svnToday| returns from now +% on the \Svn\ date. % -% Write some macro definitions to the |.aux| file, to support \LatexToHtml. % \begin{macrocode} -\def\@svnInfoCrackString #1 #2 #3 #4 #5 { - \def\svnInfoFile{#1} - \def\svnInfoRevision{#2} - \def\svnInfoTime{#4} - \if $#5 \let \@svnInfoNext = \relax - \def\svnInfoOwner{} - \def\svnId{#1\ #2\ #3\ #4} - \else \let \@svnInfoNext = \@svnInfoEat - \def\svnInfoOwner{#5} - \def\svnId{#1\ #2\ #3\ #4\ #5} - \fi - \write\@mainaux{\string\def\string\svnInfoFILE{#1}} - \write\@mainaux{\string\def\string\svnInfoREVISION{#2}} - \write\@mainaux{\string\def\string\svnInfoTIME{#4}} - \write\@mainaux{\string\def\string\svnInfoOWNER{#5}} - - - - \catcode`\_=8 - \@svnInfoSplitDate x#3x - \def\svnInfoLongDate{\@svnInfoToday} +\def\@svnInfoCrackString #1 #2 #3 #4 #5 {% + \def\svnInfoFile{#1}% + \def\svnInfoRevision{#2}% + \ifthenelse{\(\equal{\svnInfoMaxRevision}{--maxrevision--}\) % + \OR \( #2 > \svnInfoMaxRevision \)}{\def\svnInfoMaxRevision{#2}}{}% + \ifthenelse{\(\equal{\svnInfoMinRevision}{--minrevision--}\) % + \OR \( #2 < \svnInfoMinRevision \)}{\def\svnInfoMinRevision{#2}}{}% + \def\svnInfoTime{#4}% +% + \@svnInfoSplitDate x#3x% + \def\svnInfoLongDate{\@svnInfoToday}% \if@svnInfoToday@ - \year = \@svnInfoYear - \month = \@svnInfoMonth - \day = \@svnInfoDay + \year =\@svnInfoYear + \month =\@svnInfoMonth + \day =\@svnInfoDay + \fi + \if $#5 \def\svnInfoOwner{}%$% + \def\svnId{#1\ #2\ #3\ #4}% + \else + \def\svnInfoOwner{#5}% + \def\svnId{#1\ #2\ #3\ #4\ #5}% + \expandafter\@svnInfoEat \fi } % \end{macrocode} @@ -706,110 +777,139 @@ % This macro sets |\svnInfoYear|, |\svnInfoMonth|, and |\svnInfoDay|. % It takes a \texttt{x}\emph{YYYY-MM-DD}\texttt{x} style of argument. % \begin{macrocode} -\def\@svnInfoSplitDate x#1-#2-#3x{ - \@svnInfoDay = #3 - \@svnInfoMonth= #2 - \@svnInfoYear = #1 - \write\@mainaux{\string\def\string\svnInfoDAY{#3}} - \write\@mainaux{\string\def\string\svnInfoMONTH{#2}} - \write\@mainaux{\string\def\string\svnInfoYEAR{#1}} +\def\@svnInfoSplitDate x#1-#2-#3x{% + \@svnInfoDay =#3\relax + \@svnInfoMonth=#2\relax + \@svnInfoYear =#1\relax } % \end{macrocode} %\end{macro} % %\begin{macro}{\@svnInfoToday} -% Returns the \SVN\ date in the form as |\today| does it. +% Returns the \Svn\ date in the form as |\today| does it. % To do this, we set |\year|, |\month| and |\day| commands to the -% corresponding \SVN\ information, let |\today| does its work, i.e.\ +% corresponding \Svn\ information, let |\svnToday| does its work, i.e.\ % transforming the date into a language dependent string and reset % |\year|, |\month| and |\day| to their previous value. % % \begin{macrocode} \def\@svnInfoToday {% - \@svnInfoYearTmp = \year - \@svnInfoMonthTmp = \month - \@svnInfoDayTmp = \day - \year = \@svnInfoYear - \month = \@svnInfoMonth - \day = \@svnInfoDay - \today% - \year = \@svnInfoYearTmp - \month = \@svnInfoMonthTmp - \day = \@svnInfoDayTmp + \begingroup + \year =\@svnInfoYear + \month =\@svnInfoMonth + \day =\@svnInfoDay + \svnToday + \endgroup } + % \end{macrocode} %\end{macro} % %\begin{macro}{\@svnInfoDefaults} % This macro sets the default values. % \begin{macrocode} -\def\@svnInfoDefaults { - \@svnInfoYear = \year - \@svnInfoMonth = \month - \@svnInfoDay = \day - \def\svnInfoFile{--sourcefile--} +\def\@svnInfoDefaults {% + \@svnInfoYear =\year + \@svnInfoMonth =\month + \@svnInfoDay =\day + \def\svnInfoFile{--sourcefile--}% + \def\svnInfoHeadURL{--head-url--}% \def\svnInfoDate{\the\@svnInfoYear-\two@digits\@svnInfoMonth-% - \two@digits\@svnInfoDay} - \def\svnInfoTime{--time--} - \def\svnInfoRevision{--revision--} - \def\svnInfoOwner{--owner--} - \def\svnInfoYear{\the\@svnInfoYear} - \def\svnInfoMonth{\the\@svnInfoMonth} - \def\svnInfoDay{\the\@svnInfoDay} - \def\svnInfoLongDate{\@svnInfoToday} - \def\svnId{\svnInfoFile\ \svnInfoRevision\ \svnInfoTime\ \svnInfoOwner} + \two@digits\@svnInfoDay}% + \def\svnInfoTime{--time--}% + \def\svnInfoRevision{--revision--}% + \ifthenelse{\isundefined{\svnInfoMinRevision}}{\def\svnInfoMinRevision{--minrevision--}}{}% + \ifthenelse{\isundefined{\svnInfoMaxRevision}}{\def\svnInfoMaxRevision{--maxrevision--}}{}% + \def\svnInfoOwner{--owner--}% + \def\svnInfoYear{\the\@svnInfoYear}% + \def\svnInfoMonth{\the\@svnInfoMonth}% + \def\svnInfoDay{\the\@svnInfoDay}% + \def\svnInfoLongDate{\@svnInfoToday}% + \def\svnId{\svnInfoFile\ \svnInfoRevision\ \svnInfoTime\ \svnInfoOwner}% } + % \end{macrocode} %\end{macro} % %\begin{macro}{\@svnInfoFancyFoot} % This defines the contents of the footline % \begin{macrocode} -\def\@svnInfoFancyFoot { +\def\@svnInfoFancyFoot {% + \if@svnInfoRevRange@ + \def\@svnInfoRevisionRange{{ (\svnInfoMinRevision : \svnInfoMaxRevision)}}% + \else + \def\@svnInfoRevisionRange{\relax}% + \fi \if@svnInfoLong@ - \def\@svnInfoFancyInfo{{\footnotesize% - \emph{Rev: \svnInfoRevision, - \svnInfoLongDate}}} + \def\@svnInfoFancyInfo{{\footnotesize + \emph{Rev: \svnInfoRevision\@svnInfoRevisionRange, % + \svnInfoLongDate}}}% \else - \def\@svnInfoFancyInfo{{\footnotesize% - \emph{Rev: \svnInfoRevision, - \svnInfoDate}}} + \def\@svnInfoFancyInfo{{\footnotesize + \emph{Rev: \svnInfoRevision\@svnInfoRevisionRange, % + \svnInfoDate}}}% \fi - \def\@svnInfoFancyFile{{\footnotesize\emph{\svnInfoFile}}} + \def\@svnInfoFancyFile{{\footnotesize\emph{\svnInfoFile}}}% % \end{macrocode} -% and set it for the \texttt{fancyhdr} package. +% and set it for the \texttt{fancyheadings} package, +% package page style. % \begin{macrocode} + \if@svnInfoDraft@ + \if@svnInfoUseFancy@ + \rfoot[\fancyplain{\@svnInfoFancyFile}{\@svnInfoFancyFile}]% + {\fancyplain{\@svnInfoFancyInfo}{\@svnInfoFancyInfo}}% + \lfoot[\fancyplain{\@svnInfoFancyInfo}{\@svnInfoFancyInfo}]% + {\fancyplain{\@svnInfoFancyFile}{\@svnInfoFancyFile}}% + \setlength{\footrulewidth}{0.4pt}% + \setlength{\plainfootrulewidth}{0.4pt}% + \fi + \fi +% \end{macrocode} +% for the \texttt{fancyhdr} package, +% \begin{macrocode} + \if@svnInfoDraft@ \if@svnInfoUseFancyhdr@ - \if@twoside - \fancyfoot[LE,RO]{\@svnInfoFancyInfo} - \fancyfoot[LO,RE]{\@svnInfoFancyFile} - \fancyfoot[CO,CE]{\thepage} - \else - \fancyfoot[L,RO]{\@svnInfoFancyInfo} - \fancyfoot[LO,R]{\@svnInfoFancyFile} - \fancyfoot[C]{\thepage} - \fi - \renewcommand{\footrulewidth}{0.4pt} - \if@twoside + \fancyfoot[LE,RO]{\@svnInfoFancyInfo}% + \fancyfoot[LO,RE]{\@svnInfoFancyFile}% + \fancyfoot[CO,CE]{\thepage}% + \renewcommand{\footrulewidth}{0.4pt}% \fancypagestyle{plain}{% - \fancyfoot[LE,RO]{\@svnInfoFancyInfo} - \fancyfoot[LO,RE]{\@svnInfoFancyFile} - \fancyfoot[CO,CE]{\thepage} - \renewcommand{\footrulewidth}{0.4pt} + \fancyfoot[LE,RO]{\@svnInfoFancyInfo}% + \fancyfoot[LO,RE]{\@svnInfoFancyFile}% + \fancyfoot[CO,CE]{\thepage}% + \renewcommand{\footrulewidth}{0.4pt}% } - \else - \fancypagestyle{plain}{% - \fancyfoot[L,RO]{\@svnInfoFancyInfo} - \fancyfoot[LO,R]{\@svnInfoFancyFile} - \fancyfoot[C]{\thepage} - \renewcommand{\footrulewidth}{0.4pt} - } - \fi \fi + \fi +% \end{macrocode} +% for the \texttt{srcpage2} package, +% \begin{macrocode} + \if@svnInfoDraft@ +\if@svnInfoUseScrpage@ + \clearscrheadfoot% + \ohead{\headmark}% + \cfoot[\emph{\@svnInfoFancyInfo}]{\emph{\@svnInfoFancyInfo}}% + \ifoot[\@svnInfoFancyFile]{\@svnInfoFancyFile}% + \ofoot[\pagemark]{\pagemark}% + \pagestyle{scrheadings}% + \fi +\fi +% \end{macrocode} +% for the \texttt{eso-pic} package, +% \begin{macrocode} + \if@svnInfoDraft@ + \if@svnInfoUseEsofoot@ + \AddToShipoutPicture{% + \setlength{\unitlength}{1mm}% + \put(5,5){\tiny\svnInfoFile\quad\svnInfoRevision\quad\svnInfoDate% + \quad\svnInfoTime\quad\svnInfoOwner}% + } +\fi +\fi } % \end{macrocode} %\end{macro} - +% % Initialize the defaults % \begin{macrocode} \@svnInfoDefaults @@ -818,13 +918,260 @@ % At the start of the document, if we use the % \texttt{fancyhdr} footline, we should set it here. % \begin{macrocode} -\AtBeginDocument{ +\AtBeginDocument{% + \if@svnInfoDraft@ + \if@svnInfoUseFancy@ + \@svnInfoFancyFoot + \fi \if@svnInfoUseFancyhdr@ \@svnInfoFancyFoot \fi + \if@svnInfoUseScrpage@ + \@svnInfoFancyFoot + \fi + \if@svnInfoUseEsofoot@ + \@svnInfoFancyFoot + \fi +\fi +} +% \end{macrocode} +% At the end of the document +% \begin{macrocode} +\AtEndDocument{% + \immediate\write\@mainaux{\string\gdef\string\svnInfoMinRevision{\svnInfoMinRevision}}% + \immediate\write\@mainaux{\string\gdef\string\svnInfoMaxRevision{\svnInfoMaxRevision}}% +} +% \end{macrocode} +%\subsection{The generic \texttt{\string\svnKeyword} command} +% \begin{macro}{\svnKeyword} +% |\svnKeyword| is the main construct. The single argument +% should be of the form |$|\meta{Keyword}|$| or +% |$|\meta{Keyword}:\meta{space}\meta{value}\meta{space}|$|, where +% \meta{Keyword} and \meta{value} must be non-empty as well as +% brace- and |\if|--|\fi|- balanced. \meta{space} is a single space +% (if more are present they will be subsumed into \meta{value}). If +% `|$empty$|', `|$generic$|', |$Time$| or ever become keywords, or +% if keywords containing |@| ever exist then we may have problems. +% \begin{macrocode} +\def\svnKeyword $#1${\svn@$#1: $} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svnKeywordempty} +% If \meta{Keyword} is unexpanded then |\svnKeywordKeyword| is +% set to the macro |\svnKeywordempty|, which is initially empty. +% \begin{macrocode} +\let\svnKeywordempty\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svn@} +% \begin{macro}{\svn@tmp} +% |\svn@| does the work for |\svnKeyword|. It takes two +% arguments, the first is the \meta{Keyword}'s name, the second is +% empty (in which case \meta{Keyword} was unexpanded) or +% \meta{value}, the expansion of \meta{keyword}. +% \begin{macrocode} +\def\svn@$#1: #2${% + \def\svn@tmp{#2}% +% \end{macrocode} +% \begin{macro}{\svn@suffix} +% If \param2 is empty, then the keyword was unexpanded and +% |\svn@suffix| is set to |@unexp|, otherwise we had an +% expanded keyword so |\svn@suffix| is set to |@exp|. +% \begin{macrocode} + \ifx\svn@tmp\@empty + \def\svn@suffix{@unexp}% + \else + \def\svn@suffix{@exp}% + \fi +% \end{macrocode} +% If |\svnKeyword@|\param1\meta{suffix} is defined then run it +% with arguments `\param1\param2', else run +% |\svnKeyword@generic@|\meta{suffix} (again with argument +% \param1\param2---by default this defines `|\svnKeyword|\meta{\param1}' to +% be \param2, or |\svnKeywordempty| in the unexpanded case). +% \begin{macrocode} + \@ifundefined{svnKeyword@#1\svn@suffix}% + {\@nameuse{svnKeyword@generic\svn@suffix}{#1}{#2}}% + {\@nameuse{svnKeyword@#1\svn@suffix}{#1}{#2}}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \subsubsection{Dealing with general \texttt{\string$Keyword\string$}s} +% \begin{macro}{\svnKeyword@generic@exp} +% When we see |\svnKeyword $KeyWord: $|, and +% |\svnKeyword@KeyWord@exp| is undefined, then we define the macro +% |\svnKeywordKeyWord| to be || using +% |\svnKeyword@generic@exp{KeyWord}{}|. +% \begin{macrocode} +\def\svnKeyword@generic@exp#1#2{% + \expandafter\svn@set\csname svnKeyword#1\endcsname$#2$% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svnKeyword@generic@unexp} +% When we see |\svnKeyword $KeyWord$| and +% |\svnKeyword@KeyWord@unexp| is undefined, we define +% |\svnKeywordKeyWord| to be |\svnKeywordempty| using +% |\svnKeyword@generic@unexp{KeyWord}|. +% \begin{macrocode} +\def\svnKeyword@generic@unexp#1#2{% + \expandafter\global\expandafter\let\csname svnKeyword#1\endcsname\svnKeywordempty +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svn@set} +% |\svn@set#1$#2$| defines the command in \param{1} to be \param{2} +% without the trailing `\verb*| : |' that the call to |\svn@| added. +% \begin{macrocode} +\def\svn@set#1$#2 : ${\gdef#1{#2}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Dealing with the \texttt{\string$Date\string$} keyword} +% \begin{macro}{\svnKeyword@Date@unexp} +% \begin{macro}{\svnKeyword@LastChangedDate@unexp} +% \begin{macrocode} +\def\svnKeyword@Date@unexp#1#2{}% +\let\svnKeyword@LastChangedDate@unexp\svnKeyword@Date@unexp% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\svnKeyword@Date@exp} +% \begin{macro}{\svnKeyword@LastChangedDate@exp} +% \begin{macrocode} +\def\svnKeyword@Date@exp#1#2{% + \svn@parse@date$#2$% +}% +\let\svnKeyword@LastChangedDate@exp\svnKeyword@Date@exp +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\svn@parse@date} +% \begin{macrocode} +\def\svn@parse@date$#1-#2-#3 #4:#5:#6 #7${% + \@svnInfoDay =#3\relax% + \@svnInfoMonth=#2\relax% + \@svnInfoYear =#1\relax% + \def\svnInfoLongDate{\@svnInfoToday}% + \if@svnInfoToday@ + \year =\@svnInfoYear + \month =\@svnInfoMonth + \day =\@svnInfoDay + \fi +% \end{macrocode} +% We could add `GMT' to |\svnKeywordTime|. Or not bother. +% \begin{macrocode} + \def\svnInfoTime{#4:#5:#6}% } +% \end{macrocode} +% \end{macro} + +% \subsubsection{Dealing with the \texttt{\string$Id\string$} keyword} +% \begin{macro}{\svnKeyword@Id@unexp} +% \begin{macrocode} +\def\svnKeyword@Id@unexp#1#2{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svnKeyword@Id@exp} +% \begin{macrocode} +\def\svnKeyword@Id@exp#1#2{% + \svn@parse@id$#2$ +}% +\def\svn@parse@id$#1 : ${% + \svnInfo $Id: #1 $ % +}% +% \end{macrocode} +% \end{macro} + +% \subsubsection{Dealing with the \texttt{\string$Author\string$} keyword} +% \begin{macro}{\svnKeyword@Author@unexp} +% \begin{macro}{\svnKeyword@LastChangedBy@exp} +% \begin{macrocode} +\def\svnKeyword@Author@unexp#1#2{}% +\let\svnKeyword@LastChangedBy@unexp\svnKeyword@Author@unexp% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\svnKeyword@Author@exp} +% \begin{macro}{\svnKeyword@LastChangedBy@exp} +% \begin{macrocode} +\def\svnKeyword@Author@exp#1#2{% + \svn@parse@Author$#2$ +}% +\def\svn@parse@Author$#1 : ${% + \def\svnInfoOwner{#1}% +}% +\let\svnKeyword@LastChangedBy\svnKeyword@Author@exp% +% \end{macrocode} +% \end{macro} +% \end{macro} + +% \subsubsection{Dealing with the \texttt{\string$Revision\string$} keyword} +% \begin{macro}{\svnKeyword@Revision@unexp} +% \begin{macro}{\svnKeyword@LastChangedRevision@unexp} +% \begin{macro}{\svnKeyword@Rev@unexp} +% \begin{macrocode} +\def\svnKeyword@Revision@unexp#1#2{}% +\let\svnKeyword@LastChangedRevision@unexp\svnKeyword@Revision@unexp% +\let\svnKeyword@Rev@unexp\svnKeyword@Revision@unexp% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\svnKeyword@Revision@exp} +% \begin{macro}{\svnKeyword@LastChangedRevision@exp} +% \begin{macro}{\svnKeyword@Rev@exp} +% \begin{macrocode} +\def\svnKeyword@Revision@exp#1#2{% + \svn@parse@Revision$#2$% +}% +\def\svn@parse@Revision$#1 : ${% + \def\svnInfoRevision{#1}% + \ifthenelse{\(\equal{\svnInfoMaxRevision}{--maxrevision--}\) % + \OR \(#1 > \svnInfoMaxRevision \)}{\def\svnInfoMaxRevision{#1}}{}% + \ifthenelse{\(\equal{\svnInfoMinRevision}{--minrevision--}\) % + \OR \( #1 < \svnInfoMinRevision \)}{\def\svnInfoMinRevision{#1}}{}% +}% +\let\svnKeyword@LastChangedRevision@exp\svnKeyword@Revision@exp% +\let\svnKeyword@Rev@unexp\svnKeyword@Revision@exp% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} + +% \subsubsection{Dealing with the \texttt{\string$HeadURL\string$} keyword} +% \begin{macro}{\svnKeyword@HeadURL@unexp} +% \begin{macrocode} +\def\svnKeyword@HeadURL@unexp#1#2{}% +\let\svnKeyword@URL@unexp\svnKeyword@HeadURL@unexp% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\svnKeyword@HeadURL@exp} +% \begin{macrocode} +\def\svnKeyword@HeadURL@exp#1#2{% + \svn@parse@HeadURL$#2$% +}% +\def\svn@parse@HeadURL$#1 : ${% + \def\svnInfoHeadURL{#1}% +}% +\let\svnKeyword@URL@exp\svnKeyword@HeadURL@exp% % % \end{macrocode} +% \end{macro} +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \centerline{That's the end} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -834,128 +1181,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \iffalse -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following stuff does not show up in the documentation of the package: -% -% svninfo2html.tex: the example file for transforming to HTML -% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -%<*html> -\documentclass{article} -\IfFileExists{html.sty}{\usepackage{html}}{} -\usepackage{svninfo} - -\IfFileExists{html.sty}{% -% the svninfo.perl stuff needs that the .aux file has been read! -\begin{htmlonly}% -\input{svninfo2html.aux}% -\end{htmlonly}% -}{} - -\newcommand{\LatexToHtml}{\LaTeX 2\texttt{HTML}} -\newcommand{\Var}[1]{\texttt{\$svninfo::#1}} -\newcommand{\SVN}{\emph{SVN}} - -\pagestyle{fancy} - -\begin{document} -\svnInfo $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $ - -\author{Achim D. Brucker\\ - \small{\texttt{brucker@freiburg.linux.de}}} -\date{\today} -\title{Example for converting a \LaTeX\ document to \texttt{HTML}\\ - using \LatexToHtml\ and the \texttt{svninfo}-package} -\maketitle - -\section{Notes} -%%%%%%%%%%%%%%% - -\begin{itemize} -\item Use at least version \emph{99.1 release (March 30, 1999)} of - \LatexToHtml. - -\item You should \verb|\usepackage{html}|. - -\item You must run \LaTeX\ on the input file before running \LatexToHtml. - -\item In order to make \LatexToHtml\ read the \verb|.aux| file, you must - either: - \begin{itemize} - \item call \LatexToHtml\ with the option - \verb|-show_section_numbers| or - \item include the \verb|.aux| file explicitly in your \LaTeX-source, by - adding the lines in the preamble:\\ - \verb|\begin{|\verb|htmlonly}|\\ % looks ulgy, but otherwise - \verb|\input{|\emph{source}\verb|.aux}|\\ - \verb|\end{|\verb|htmlonly}|\\ % latex2html fails. - which requires \verb|\usepackage{html}|. - \end{itemize} - If you don't do so, the \verb|\svnInfo...| commands give no value. - -\item If using the \LatexToHtml\ tool, only the last \verb|\svnInfo| takes - effect, e.g.~if using several input files each having the \verb|\svnInfo| - command, only the vales of the last included file are used. - (If this is a serious problem for you, drop me a mail). - -\item If the \verb|fancy| / \verb|fancyhdr| option is given to the - \verb|svninfo| package, - the date of the \verb|ADDRESS| at the bottom of the \texttt{HTML} - page is set to the \SVN\ date. - -\item If you would like to set your own \verb|ADDRESS| text, you should - define a procedure, which sets \texttt{perl} \verb|$main::ADDRESS| - variable in your local \texttt{.latex2html} initialization file. - The routine may use the \texttt{perl} - variables shown below. Assign a reference of this procdure to the - \texttt{perl}-variable - \verb|$svninfo::SetAddressProc|. - E.g.\ if you have a \texttt{perl} routine \verb|&my_address_field|, - then \\ - \verb|$svninfo::SetAddressProc = &my_address_field|. - - For example the follownig \texttt{perl}-code does the job: -\begin{verbatim} -sub my_address_field -{ - $ADDRESS = '
This file was last updated on ' . - $svninfo::Date . - '  by ' . - '' . - 'Achim D. Brucker ' . - '<brucker@freiburg.linux.de>'; -} -$svninfo::SetAddressProc = \&my_address_field; -\end{verbatim} -\end{itemize} - -\newpage - -\section{Example} -%%%%%%%%%%%%%%%%% - -\label{sec-examples} -Here are the commands and their output: - -\begin{tabular}{lll} -\LaTeX-command & \texttt{perl} variable & Result for this file \\\hline -\verb|\today| & \texttt{\$today} & \today \\ -\verb|\svnInfoFile| & \Var{File} & \svnInfoFile \\ -\verb|\svnInfoRevision| & \Var{Revision} & \svnInfoRevision \\ -\verb|\svnInfoOwner| & \Var{Owner} & \svnInfoOwner \\ -\verb|\svnInfoDate| & \Var{Date} & \svnInfoDate \\ -\verb|\svnInfoLongDate| & \Var{LongDate} & \svnInfoLongDate \\ -\verb|\svnInfoDay| & \Var{Day} & \svnInfoDay \\ -\verb|\svnInfoMonth| & \Var{Month} & \svnInfoMonth \\ -\verb|\svnInfoYear| & \Var{Year} & \svnInfoYear \\ -\end{tabular} - -\end{document} -% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The following stuff does not show up in the documentation of the package: @@ -969,7 +1195,7 @@ Here are the commands and their output: \Msg{} \Msg{***********************************************************} \Msg{** Hello to the installation of the `svninfo' package.} -\Msg{** Version 0.3, September 29, 2005} +\Msg{** Version 0.6, May 11, 2006} \Msg{***********************************************************} \Msg{} @@ -977,7 +1203,6 @@ Here are the commands and their output: \askforoverwritefalse % \file{svninfo.ins}{\from{svninfo.dtx}{header,ins}} \file{svninfo.sty}{\from{svninfo.dtx}{header,package}} - \file{svninfo2html.tex}{\from{svninfo.dtx}{header,html}} \usepreamble\empty \usepostamble\empty \file{svninfo.perl}{\from{svninfo.dtx}{perl}} @@ -991,338 +1216,13 @@ Here are the commands and their output: \Msg{** To finish the installation move the file `svninfo.sty' and} \Msg{** svninfo.cfg to a place where LaTeX will find it.} \Msg{** To Get the documentation: `latex svninfo.dtx'} -\Msg{** and `latex svninfo2html.dtx'} -\Msg{** If you are using LaTeX2HTML, move the PERL-package} -\Msg{** `svninfo.perl' to a place where LaTeX2HTML will find it.} -\Msg{** `svninfo.perl' is created by running `latex svninfo.dtx'.} \Msg{** Happy TeXing} \Msg{***********************************************************} \Msg{} % -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following stuff does not show up in the documentation of the package: -% svninfo.perl -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%<*perl> -############################################################################### -# SVNINFO.PERL -# Copyright 1995 Dr. Juergen Vollmer -# Copyright 2003-2005 Achim D. Brucker -# -# Extension to LaTeX2HTML to translate LaTeX commands of the -# svninfo -# package to equivalent HTML commands. -# -# This is file `svninfo.perl', -# generated with the docstrip utility. -# -# The original source files were: -# -# svninfo.dtx (with options: `perl') -# -# IMPORTANT NOTICE: -# -# For the copyright see the source file. -# -# Any modified versions of this file must be renamed -# with new filenames distinct from svninfo.perl. -# -# For distribution of the original source see the terms -# for copying and modification in the file svninfo.dtx. -# -# This generated file may be distributed as long as the -# original source files, as listed above, are part of the -# same distribution. (The sources need not necessarily be -# in the same archive or directory.) -# -# $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $ -# -############################################################################### - -package svninfo; - -($Dummy1,$PackageVersionDate,$PackageVersionTime,$Dummy2) = - split (/ /,'$Date: 2005-04-08 08:18:47 +0200 (Fr, 08 Apr 2005) $'); - -print "\n\t svninfo style interface for LaTeX2HTML, $PackageVersionDate\n"; - -# set defaults options -$OptionFancy = 1; -$OptionToday = 1; -$OptionLong = 1; - -# set default values -$Date = `date '+%Y/%m/%d'`; -$Time = `date '+%H:%M:%S'`; -$File = "--sourcefile--"; -$Revision = "--revision--"; -$Owner = "--owner--"; -$Year = `date '+%Y'`; -$Month = `date '+%m'`; -$Day = `date '+%d'`; -$LongDate = $Date; - -sub SetAddress -{ - $main::address_data[1] = "Revision: $svninfo::Revision, $svninfo::LongDate"; - # Supply your own string if you don't like the default - $main::ADDRESS = "$main::address_data[0]
\n$main::address_data[1]
"; -} -if ($SetAddressProc == "") { - $SetAddressProc = \&svninfo::SetAddress; -} -sub make_cmds -{ - my $cmd; - foreach $cmd (File,Revision,Date,Time,Owner,Year,Month,Day,LongDate) { - eval "sub main::do_cmd_svnInfo$cmd { " - . 'my $val = $svninfo::' . "$cmd; " -# . 'printf STDERR "\ndo_cmd_svnInfo%s=%s\n", ' . $cmd .', $val;' - . "join('',\$val,\$_[0]);" - . "}"; - } -} - -@GermanMonthName = ('','Januar','Februar','März','April','Mai','Juni','Juli', - 'August','September','Oktober','November','Dezember'); -@EnglishMonthName = ('','January','February','March','April','May','June','July', - 'August','September','October','November','December'); -@FrenchMonthName = ('','Janvier','Février','Mars','Avril','Mai','Juin', - 'Juillet','Août','Septembre','Octobre','Novembre', - 'Décembre'); - -############################################################################### - -package main; - -# handling package options -sub do_svninfo_fancyhdr { $svninfo::OptionFancy = 1; } -sub do_svninfo_fancy { $svninfo::OptionFancy = 1; } -sub do_svninfo_nofancy { $svninfo::OptionFancy = 0; } -sub do_svninfo_today { $svninfo::OptionToday = 1; } -sub do_svninfo_notoday { $svninfo::OptionToday = 0; } -sub do_svninfo_short { $svninfo::OptionLong = 0; } -sub do_svninfo_long { $svninfo::OptionLong = 1; } - -# handling of LaTeX commands -sub do_cmd_svnInfo -{ - - local ($_) = @_; - - # printf STDERR "\ndo_cmd_svnInfo\n"; - - # see latex2html, procedure: substitute_meta_cmds, process_body_newcommand - # the format of the variable $new_command{cmd} is: - # $new_command{$cmd} = join(':!:',$argn,$body,$opt); - # note: opt = "}" means: Flag for no optional arg - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoFILE}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoREVISION}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoYEAR}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoMONTH}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoDAY}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoTIME}; - # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{svnInfoOWNER}; - - # the following assumes: LaTeX2HTML Version 99.1 release (March 30, 1999) - # may be later - my ($argn, $opt); - if (exists $new_command{svnInfoFILE}) { - ($argn, $svninfo::File, $opt) = split(/:!:/, $new_command{svnInfoFILE}); - } else { - $svninfo::File = $File - } - if (exists $new_command{svnInfoREVISION}) { - ($argn, $svninfo::Revision, $opt) = split(/:!:/, $new_command{svnInfoREVISION}); - } else { - $svninfo::Revision = $Revision - } - if (exists $new_command{svnInfoYEAR}) { - ($argn, $svninfo::Year, $opt) = split(/:!:/, $new_command{svnInfoYEAR}); - } else { - $svninfo::Year = $Year - } - if (exists $new_command{svnInfoMONTH}) { - ($argn, $svninfo::Month, $opt) = split(/:!:/, $new_command{svnInfoMONTH}); - } else { - $svninfo::Month = $Month - } - if (exists $new_command{svnInfoDAY}) { - ($argn, $svninfo::Day, $opt) = split(/:!:/, $new_command{svnInfoDAY}); - } else { - $svninfo::Day = $Day - } - if (exists $new_command{svnInfoTIME}) { - ($argn, $svninfo::Time, $opt) = split(/:!:/, $new_command{svnInfoTIME}); - } else { - $svninfo::Time = $Time - } - if (exists $new_command{svnInfoOWNER}) { - ($argn, $svninfo::Owner, $opt) = split(/:!:/, $new_command{svnInfoOWNER}); - } else { - $svninfo::Owner = $Owner - } - - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::File; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Revision; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Year; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Month; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Day; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Time; - # printf STDERR "yyyyyyyyyyy `%s'\n", $svninfo::Owner; - - # the following code is for oldfashioned latex2hmtl, not anymore supported - # format of $_: - # vvvvvv that's text following the SVN-Id-string - # <#nr#>.....<#nr>...... - # ^ ^ ^ that's the SVN-Id-string -# my ($Nr,$IdString,$Rest) = /(<#\d+#>)(.*)\1(.*)/s ; - - # The Id-String may contain various tags, remove them -# $IdString =~ s/<[^>]*>//g; - - # The Id-String may contain various tags, remove them -# $IdString =~ s/<[^>]*>//g; - - # split the Id-string -# my ($id,$file,$revision,$date,$time,$owner) = split(/\s/,$IdString); - - # remove trailing ,v -# $file =~ s/,v$//; - - # split date -# ($svninfo::Year,$svninfo::Month,$svninfo::Day) = split (/\//,$date); - -# $svninfo::Revision = $revision; -# $svninfo::File = $file; -# $svninfo::Date = $date; -# $svninfo::Time = $time; -# $svninfo::Owner = $owner; - - if ($default_language eq 'german' || $default_language eq 'austrian') { - $svninfo::LongDate = $svninfo::Day . '. ' . - $svninfo::GermanMonthName[$svninfo::Month] . ' ' . - $svninfo::Year; - $svnInfo::Date = $svninfo::Day . '. ' . $svninfo::Month . '. ' . $svninfo::Year; - } elsif ($default_language eq 'french') { - $svninfo::LongDate = $svninfo::Day . '. ' . - $svninfo::FrenchMonthName[$svninfo::Month] . ' ' . - $svninfo::Year; - $svnInfo::Date = $svninfo::Day . '. ' .$svninfo::Month . '. ' . $svninfo::Year; - } else { # english is the default - $svninfo::LongDate = $svninfo::EnglishMonthName[$svninfo::Month] . ' ' . - $svninfo::Day . ', ' . - $svninfo::Year; - $svnInfo::Date = $svninfo::Year . '/' .$svninfo::Month . '/' . $svninfo::Day; - } - - if ($svninfo::OptionFancy == 1) { - &$svninfo::SetAddressProc; - } - svninfo::make_cmds(); - - # printf STDERR "xxx $HTML_VERSION, $HTML_OPTIONS\n"; - # remove stuff generated for the $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $-string - # we assume that noting follows the "\svnInfo $Id....$" - if ($HTML_VERSION >= 3.2) { - /^[^\n]*/; - return $'; - } elsif ($HTML_VERSION == 3.1 || $HTML_VERSION == 2.1) { - /^[^\n]*/; - return $'; - } else { - if ($HTML_OPTIONS =~ /math/) { - /^[^\n]*/; - return $'; - } else { - /^[^\n]*/; - return $'; - } - } -} - -# Replace do_cmd_today (\today) using the SVN date. -sub do_cmd_today { - local($today); - if ($svninfo::OptionToday == 1) { - $today = $svninfo::LongDate; - } else { - if ($default_language eq 'german' || $default_language eq 'austrian') { - $today = (`date "+%m:%d, 20%y"`); - $today =~ s/(\d{1,2}):0?(\d{1,2}),/$2. $svninfo::GermanMonthName[$1]/o; - $today =~ s/20([7|8|9]\d{1})/19$1/o; - } elsif ($default_language eq 'french') { - $today = (`date "+%m:%d, 20%y"`); - $today =~ s/(\d{1,2}):0?(\d{1,2}),/$2 $svninfo::FrenchMonthName[$1]/o; - $today =~ s/20([7|8|9]\d{1})/19$1/o; - } else { # english is the default - $today = (`date "+%m:%d, 20%y"`); - $today =~ s/(\d{1,2}):0?/$svninfo::EnglishMonthName[$1] /o; - $today =~ s/20([7|8|9]\d{1})/19$1/o; - } - } - join('',$today,$_[0]); -} - -1; - -############################################################################### -% -% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following stuff does not show up in the documentation of the package: -% latex2html.init -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -%<*init> -# This is file `svninfo.init', -# generated with the docstrip utility. -# -# The original source files were: -# -# svninfo.dtx (with options: `init') -# -# IMPORTANT NOTICE: -# -# For the copyright see the source file. -# -# Any modified versions of this file must be renamed -# with new filenames distinct from svninfo.init. -# -# For distribution of the original source see the terms -# for copying and modification in the file svninfo.dtx. -# -# This generated file may be distributed as long as the -# original source files, as listed above, are part of the -# same distribution. (The sources need not necessarily be -# in the same archive or directory.) -# -# This file should be used as initialization file for LaTeX2HTML -# when transforming svninfo2html.tex --> HTML -# -# $Id: svninfo.dtx 1168 2005-04-08 06:18:47Z brucker $ -############################################################################### -sub my_address_field -{ - $ADDRESS = '
This file was last updated on ' . - $svninfo::Date . - '  by ' . - '' . - 'Achim D. Brucker ' . - '<brucker @ freiburg.linux.de>'; -} -$svninfo::SetAddressProc = \&my_address_field; -############################################################################### -% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% E N D of R C S I N F O . D T X +% E N D of S V N I N F O . D T X % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\fi diff --git a/Master/texmf-dist/source/latex/svninfo/svninfo.ins b/Master/texmf-dist/source/latex/svninfo/svninfo.ins index 0d93559e720..066aedc84ca 100644 --- a/Master/texmf-dist/source/latex/svninfo/svninfo.ins +++ b/Master/texmf-dist/source/latex/svninfo/svninfo.ins @@ -27,10 +27,9 @@ %% %% This package is used to extract the revision and file information provided %% by the Subversion revision control system. -%% A PERL-package supporting svninfo and LaTeX2HTML is provieded too. %% %% Copyright (C) 1995 Dr. Juergen Vollmer -%% Copyright (C) 2003 Achim D. Brucker +%% Copyright (C) 2003-2006 Achim D. Brucker %% License: %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN @@ -64,17 +63,15 @@ \Msg{} \Msg{***********************************************************} \Msg{** Hello to the installation of the `svninfo' package.} -\Msg{** Version 0.3, September 29, 2005} +\Msg{** Version 0.5, Januar 11, 2006} \Msg{***********************************************************} \Msg{} \generate{ \askforoverwritefalse \file{svninfo.sty}{\from{svninfo.dtx}{header,package}} - \file{svninfo2html.tex}{\from{svninfo.dtx}{header,html}} \usepreamble\empty \usepostamble\empty - \file{svninfo.perl}{\from{svninfo.dtx}{perl}} \file{svninfo.init}{\from{svninfo.dtx}{init}} \file{svninfo.cfg}{\from{svninfo.dtx}{header,config}} } @@ -85,10 +82,6 @@ \Msg{** To finish the installation move the file `svninfo.sty' and} \Msg{** svninfo.cfg to a place where LaTeX will find it.} \Msg{** To Get the documentation: `latex svninfo.dtx'} -\Msg{** and `latex svninfo2html.dtx'} -\Msg{** If you are using LaTeX2HTML, move the PERL-package} -\Msg{** `svninfo.perl' to a place where LaTeX2HTML will find it.} -\Msg{** `svninfo.perl' is created by running `latex svninfo.dtx'.} \Msg{** Happy TeXing} \Msg{***********************************************************} \Msg{} -- cgit v1.2.3