\RequirePackage{atbegshi} \documentclass[a4paper,oneside]{scrbook} \usepackage[all]{svn-multi}[2010/12/29] \svnidlong {$HeadURL: svn://server/group_example.tex $} {$LastChangedDate: 2000-01-01 01:44:01 +0000 (Main file) $} {$LastChangedRevision: 98 $} {$LastChangedBy: author3 $} % Pre-declaration of groups to define order in table \svngroup{abc} \svngroup{def} \svngroup{ghi} \svngroup{jkl} %\svngroup{Images} \svngroup{} % Ignore logo in subfiles and set it explicitly into the main file: %\svnexternal{{logo.jpg}}% %\svnignoregraphic{logo.jpg} % Special groups for images and other external files: %\svngraphicsgroup{Images} %\svnexternalgroup{external} \let\ifvtex=\relax \usepackage{hyperref} \usepackage{ifthen} \usepackage{listings} \lstset{basicstyle=\ttfamily} \makeatletter % Workaround for listinputlisting \newcommand*{\svnlstinputlisting}[2][]{% {\let\input\@input\lstinputlisting[#1]{#2}}% } \makeatother \usepackage{booktabs} \usepackage{tabularx} \usepackage{longtable} % This is an example document to show the group feature of svn-multi 2.0. % Please the notes below. \makeatletter % Version control information table for each chapter \newcommand{\chaptervctable}{% \par\noindent \textbf{Version Control Information for this chapter}\\[\bigskipamount]% \begin{tabular}{lp{0.7\textwidth}} Chapter URL & \svnnolinkurl{\svnfileurl}\\ Chapter File name & \svnnolinkurl{\svnfilefname}\\ Last Changed Revision & \svnfilerev\\ Last Changed Author & \svnfileauthor\\ Last Changed Date & \svnfiledate\\ \end{tabular} \bigskip \par\noindent This files contains the following SVN keywords:\\*[-\baselineskip] {\let\input\@input \svnlstinputlisting[firstline=5,lastline=9]{\currfilepath} } } \makeatother % This file generates some example sub files from this file to avoid a lot of small % example files in the CTAN directory. In real life there would be separate % files from the beginning. \begin{filecontents}{group_example_part1a.tex} \svnidlong {$HeadURL: svn://server/group_example_part1a.tex $} {$LastChangedDate: 2000-01-01 01:00:01 +0000 (Chapter 1a) $} {$LastChangedRevision: 101 $} {$LastChangedBy: author1 $} \chapter{Subfile 1a} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part1b.tex} \svnidlong {$HeadURL: svn://server/group_example_part1b.tex $} {$LastChangedDate: 2001-01-01 00:00:01 +0000 (Subfile 1b) $} {$LastChangedRevision: 102 $} {$LastChangedBy: author2 $} \chapter{Subfile 1b} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part1c.tex} \svnidlong {$HeadURL: svn://server/group_example_part1c.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 1c) $} {$LastChangedRevision: 104 $} {$LastChangedBy: author3 $} \chapter{Subfile 1c} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part2a.tex} \svnidlong {$HeadURL: svn://server/group_example_part2a.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 2a) $} {$LastChangedRevision: 100 $} {$LastChangedBy: author1 $} \chapter{Subfile 2a} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part2b.tex} \svnidlong {$HeadURL: svn://server/group_example_part2b.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 2b) $} {$LastChangedRevision: 101 $} {$LastChangedBy: author1 $} \chapter{Subfile 2b} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part3a.tex} \svnidlong {$HeadURL: svn://server/group_example_part3a.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 3a) $} {$LastChangedRevision: 104 $} {$LastChangedBy: author3 $} \chapter{Subfile 3a} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part3b.tex} \svnidlong {$HeadURL: svn://server/group_example_part3b.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 3b) $} {$LastChangedRevision: 103 $} {$LastChangedBy: author2 $} \chapter{Subfile 3b} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_part4a.tex} \svnidlong {$HeadURL: svn://server/group_example_part4a.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 4a) $} {$LastChangedRevision: 99 $} {$LastChangedBy: author3 $} \chapter{Subfile 4a} \chaptervctable \input{group_example_part4a_sub1.tex} \end{filecontents} \begin{filecontents}{group_example_part4a_sub1.tex} \svnidlong {$HeadURL: svn://server/group_example_part4a_sub1.tex $} {$LastChangedDate: 2000-01-01 00:00:00 +0000 (SubSubfile 4a-1) $} {$LastChangedRevision: 96 $} {$LastChangedBy: author2 $} \section{SubSubfile 4a-1} This is a sub file in a sub file. \svnexternal{{Makefile}} \end{filecontents} \begin{filecontents}{group_example_part4b.tex} \svnidlong {$HeadURL: svn://server/group_example_part4b.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (Subfile 4b) $} {$LastChangedRevision: 105 $} {$LastChangedBy: author2 $} \chapter{Subfile 4b} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_end.tex} \svnidlong {$HeadURL: svn://server/group_example_end.tex $} {$LastChangedDate: 2000-01-01 00:00:01 +0000 (End) $} {$LastChangedRevision: 100 $} {$LastChangedBy: author1 $} \chapter{End credits} \chaptervctable \end{filecontents} \begin{filecontents}{group_example_unexpanded.tex} \svnidlong {$HeadURL$} {$LastChangedDate$} {$LastChangedRevision$} {$LastChangedBy$} \chapter{File with unexpanded keywords} \chaptervctable \end{filecontents} \svnRegisterAuthor{author1}{Andy Author, I.} \svnRegisterAuthor{author2}{A. Author, II.} \svnRegisterAuthor{author3}{Anthony Author, III.} % Have VC info on every part page \let\origpart=\part \def\part{% \setpartpreamble{% \vspace*{5cm} \par\noindent \textbf{Version Control Information for this part:}\\[\bigskipamount]% \begin{tabular}{lp{0.7\textwidth}} URL of latest File & \svnnolinkurl{\svncgurl}\\ Name of latest File & \svnnolinkurl{\svncgfname}\\ Last Changed Revision & \svncgrev\\ Last Changed Author & \svncgauthor\\ Last Changed Date & \svncgdate\\ \end{tabular} }\origpart } \listfiles \begin{document} % Custom titlepage: \hbox{}% \vfill \pdfbookmark{Title Page}{titlepage}% {\centering \Huge\texttt{svn-multi} v2.0 Keyword Groups Example Document\\ \Large Martin Scharrer\\ \large 2009/03/01\\ }% \vfill \par\noindent This is an example and test document for the group feature of svn-multi 2.0. Please note that the revision keywords were generated manually for testing purposes. The dates are not consistent with the revisions and contain a debug name instead of the date text like `(Sat, January 1 2009)'. This doesn't influence the correct functionality of the svn-multi package.\\ \bigskip {\hbox{}\hfill Happy \TeX ing!}\\ \vfill% \par\noindent {\large Version Control Information for this document:\\[\bigskipamount]}% \begin{tabular}{lp{0.7\textwidth}} Main URL & \svnnolinkurl{\svnmainurl}\\ Main File name & \svnnolinkurl{\svnmainfilename}\\ URL of latest file & \svnnolinkurl{\svnurl}\\ Name of latest file & \svnnolinkurl{\svnfname}\\ Last Changed Revision & \svnrev\\ Last Changed Author & \svnauthor\\ Last Changed Date & \svndate\\ \end{tabular} \bigskip\par\noindent The main file of this document contains the following SVN keywords:\\*[-\baselineskip] \svnlstinputlisting[firstline=3,lastline=7]{\currfilepath} \thispagestyle{empty} \clearpage % Default in Engish \renewcommand{\svnbeforetable}{% This is an automatic generated table using the \textbf{\sffamily table} option. \bigskip\par\noindent } \clearpage \pdfbookmark{Table of Revisions (1)}{tora}% \tableofrevisions \clearpage % Redefined to German % Uses booktabs for nicer table \renewcommand{\svnbeforetable}{% Can be redefined to another format and language: Verstehen Sie Deutsch? \bigskip\par\noindent } \renewenvironment{svntable}{% \begin{longtable}{p{6.2cm}rll} \toprule } {% \bottomrule \end{longtable} } \renewcommand*\svntablehead{% Name & Rev & Autor & Datum \\ \midrule[\heavyrulewidth] } \renewcommand{\svnrevisionsname}{Revisionen} \renewcommand{\svntabgroup}[1]{Gruppe `#1'} % Some highlight examples: % Print highest revision bold: \renewcommand{\svntabrev}[1]{\ifthenelse{#1=\svnrev}{\textbf{#1}}{#1}} % Highlight all dates after the 14th March 2008 12:00:00: \renewcommand{\svntabdate}[8]{% \ifthenelse{#1#2#3#4>2008031412}{\color{red}\bfseries}{}% \small #3.#2.#1\ #4:#5:#6% } % Mark all files last changed by the last author: \renewcommand{\svntabauthor}[1]{% \ifthenelse{\equal{#1}{\svnauthor}}{\color{green}}{}% \svnFullAuthor{#1}% } % Using \scriptsize and \svnnolinkurl for files and subgroups: \renewcommand{\svntabfile}[2]{% \addtolength{\leftskip}{#1\medskipamount}% Datei `{\scriptsize\svnnolinkurl{#2}}' } \renewcommand{\svntabsubgroup}[2]{% \addtolength{\leftskip}{#1\medskipamount}% Untergruppe `{\scriptsize\svnnolinkurl{#2}}'% } \renewcommand{\svntabglobal}[1]{Gesamtes Dokument} % Add rule before group rows: \renewcommand{\svngrouprow}{\midrule} % Add rule and description after global row: \renewcommand{\endsvnglobalrow}{\midrule Ohne Gruppe:\\} \pdfbookmark{Table of Revisions (2)}{torb}% \tableofrevisions \clearpage \svngroup{abc} \part{Abc} \input{group_example_part1a} \include{group_example_part1b} \include{group_example_part1c} \svngroup{def} \part{Def} \include{group_example_part2a} \include{group_example_part2b} \svngroup{ghi} \part{Ghi} \include{group_example_part3a} \include{group_example_part3b} \svngroup{jkl} \part{jkl} \include{group_example_part4a} \include{group_example_part4b} % The rest doesn't belong to a file group: \svngroup{} \include{group_example_end} \include{group_example_unexpanded} \chapter*{Reference Examples} %To reference e.g.\ keyword from group `abc' use: \section*{Group `abc'} \svnsetcg{abc} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by \svnFullAuthor{\svncgauthor}. Latest file is \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}). \section*{Subgroup `group\_example\_part3b'} \svnsetcg{group_example_part3b} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by \svnFullAuthor{\svncgauthor}. Latest file is \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}). \section*{File `group\_example\_part3b.tex'} \svnsetcg{group_example_part3b.tex} Revision \svncgrev\ from \svncgtoday\ \svncgtime\ done by \svnFullAuthor{\svncgauthor}. File name and url: \svnnolinkurl{\svncgfname} (URL: \url{\svncgurl}). \end{document}