Source

svn-multi / group_example.tex

Full commit
\RequirePackage{atbegshi}
\documentclass[a4paper,oneside]{scrbook}
\usepackage[all]{svn-multi}[2009/03/06]
\svnidlong
{$HeadURL: svn://server/group_example.tex $}
{$LastChangedDate: 2000-01-01 01:44:01 +0000 (Main file) $}
{$LastChangedRevision: 98 $}
{$LastChangedBy: author3 $}


% Pre-declaration of groups to define order in table
\svngroup{abc}
\svngroup{def}
\svngroup{ghi}
\svngroup{jkl}
%\svngroup{Images}
\svngroup{}

% Ignore logo in subfiles and set it explicitly into the main file:
%\svnexternal{{logo.jpg}}%
%\svnignoregraphic{logo.jpg}

% Special groups for images and other external files:
%\svngraphicsgroup{Images}
%\svnexternalgroup{external}

\let\ifvtex=\relax
\usepackage{hyperref}
\usepackage{ifthen}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\makeatletter
% Workaround for listinputlisting
\newcommand*{\svnlstinputlisting}[2][]{%
  {\let\input\@input\lstinputlisting[#1]{#2}}%
}
\makeatother
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{longtable}

% This is an example document to show the group feature of svn-multi 2.0.
% Please the notes below.

\makeatletter
% Version control information table for each chapter
\newcommand{\chaptervctable}{%
\par\noindent
\textbf{Version Control Information for this chapter}\\[\bigskipamount]%
\begin{tabular}{lp{0.7\textwidth}}
Chapter URL           & \svnnolinkurl{\svnfileurl}\\
Chapter File name     & \svnnolinkurl{\svnfilefname}\\
Last Changed Revision & \svnfilerev\\
Last Changed Author   & \svnfileauthor\\
Last Changed Date     & \svnfiledate\\
\end{tabular}
\bigskip
\par\noindent
This files contains the following SVN keywords:\\*[-\baselineskip]
{\let\input\@input
\svnlstinputlisting[firstline=5,lastline=9]{\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}