summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/skb/source/skb.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/skb/source/skb.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/skb/source/skb.dtx')
-rw-r--r--macros/latex/contrib/skb/source/skb.dtx2775
1 files changed, 2775 insertions, 0 deletions
diff --git a/macros/latex/contrib/skb/source/skb.dtx b/macros/latex/contrib/skb/source/skb.dtx
new file mode 100644
index 0000000000..c0fad1b8a8
--- /dev/null
+++ b/macros/latex/contrib/skb/source/skb.dtx
@@ -0,0 +1,2775 @@
+% \CheckSum{0}
+% \iffalse
+%
+% skb.dtx
+%% Copyright (c) 2011 Sven van der Meer <sven@vandermeer.de>
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3 of this license or (at
+%% your option) any later version.
+%% The latest version of this license is in
+%% <http://www.latex-project.org/lppl.txt>
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% The Current Maintainer of this work is
+%% Sven van der Meer <sven@vandermeer.de>
+%%
+%% This software is provided 'as is', without warranty of any kind, either
+%% expressed or implied, including, but not limited to, the implied
+%% warranties of merchantability and fitness for a particular purpose.
+%%
+%% This work consists of all files listed in MANIFEST.TXT.
+%%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{skb}
+\usepackage{dirtree}
+\usepackage{etoolbox}
+\usepackage{textcomp}
+\usepackage{gensymb}
+\usepackage{wasysym}
+\usepackage{units}
+\usepackage{float}
+\usepackage{comment}
+\usepackage{booktabs}
+\usepackage{graphicx}
+\usepackage{longtable}
+\usepackage{colortbl}
+\usepackage{biblatex}
+\usepackage[x11names]{xcolor}
+\usepackage[colorlinks,linkcolor=Brown4,citecolor=SeaGreen4,urlcolor=RoyalBlue3]{hyperref}
+\usepackage[printonlyused]{acronym}
+
+\RecordChanges
+\makeindex
+\GetFileInfo{skb.sty}
+
+\IfFileExists{user-guide/user-guide.tex}{\skbconfig[root=user-guide/]{skb.dtx}}
+ {\IfFileExists{../doc/user-guide/user-guide.tex}{\skbconfig[root=../doc/user-guide/]{skb.dtx}}
+ {\IfFileExists{../doc/latex/skb/user-guide/user-guide.tex}{\skbconfig[root=../doc/latex/skb/user-guide/]{skb.dtx}}{}
+ }
+}
+\skbconfig[pub=,acr=database,bib=database]{skb.dtx}
+\skbbibtex
+
+\begin{document}
+ \IfFileExists{skb.dtx}{\DocInput{skb.dtx}}
+ {\IfFileExists{../source/skb.dtx}{\DocInput{../source/skb.dtx}}
+ {\IfFileExists{../../source/latex/skb/skb.dtx}{\DocInput{../../source/latex/skb/skb.dtx}}{}
+ }
+ }
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%^^A For Changes please see PDF (heading History) or HISTORY.TXT
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%\title{The SKB package - Create and maintain%
+% a repository for long-living documents}
+%
+%\author{Sven van der Meer}
+%
+%\date{2011-06-03 v0.52}
+%
+%\maketitle
+%
+%\begin{abstract}
+% This package provides macros that help to build a repository for
+% long living documents. It focuses on structure and re-use of text, code,
+% figures etc. The basic concept is to first separate structure from content
+% (i.e. text about a topic from the structure it is presented by) and then
+% separating the content from the actual published document, thus enabling
+% easy re-use of text blocks in different publications (i.e. text about a
+% protocol in a short article about this protocol as well as in a book about
+% many protocols); all without constantly copying or changing text. As a side
+% effect, using the document classes provided, it hides a lot of \LaTeX~from
+% someone who just wants to write articles and books.
+%\end{abstract}
+%
+%\tableofcontents
+%
+%\skbtitle{The SKB package - Create and maintain%
+% a repository for long-living documents}
+%\skbauthor{Sven van der Meer, sven@vandermeer.de}
+%\skbsubject{LaTeX SKB}
+%\skbkeywords{SKB;LaTeX;Package}
+%
+%
+%\IfFileExists{user-guide/user-guide.tex}{\skbinput[from=pub]{user-guide-load}}
+% {\IfFileExists{../doc/user-guide/user-guide.tex}{\skbinput[from=pub]{user-guide-load}}
+% {\IfFileExists{../doc/latex/skb/user-guide/user-guide.tex}{\skbinput[from=pub]{user-guide-load}}{
+% \section*{About this Document}
+% \textbf{Note:} This PDF file was generated without the user guide.
+% }
+% }
+%}
+%
+%
+% \StopEventually{}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \setlength{\parindent}{0cm}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{Implementation: Kernel}
+%
+% First we do announce the package.
+% \begin{macrocode}
+%<*skbpackage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{skb}[2011/06/03 Sven's Knowledge Base - SKB for LaTeX v0.52]
+% \end{macrocode}
+%
+% Next we process the package's options. To do that, we define a new if
+% that indicates if we process slides with or without animation,
+% and then we set that new if accordingly.
+% \begin{macrocode}
+\newif\if@skbBeamerAnim
+\@skbBeamerAnimfalse
+\DeclareOption{beameranim}{\@skbBeamerAnimtrue}
+\DeclareOption{beamernoanim}{\@skbBeamerAnimfalse}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Required Packages}
+% Now we load a few packages that we need within the \skbacft{A3DS:SKB}. We use keyval
+% to allow for options in macros, the listings package for all listings,
+% dirtree to show tree structures similar to a directory tree, ifpdf
+% to establish whether we use \skbacft{ISO:PDF} or not, datetime to get the current date
+% and the versions package to allow for optional text. Note: some packages,
+% such as the package optional, are loaded at a later stage.
+% \begin{macrocode}
+\RequirePackage{keyval}
+\RequirePackage{listings}
+\RequirePackage{dirtree}
+\RequirePackage{ifpdf}
+\RequirePackage{datetime}
+\RequirePackage{versions}
+% \end{macrocode}
+%
+% \subsection{Conditiona/Optional Text Support}
+% Now we set everything that we need to provide optional text. Basically, we
+% want to distinguish between the following modes: text (normal text), slide
+% (for slides), note (for slite annotations), anim (for animated slides,
+% noanim (for non-animated slides) and memoir (if we use the memoir package).
+%
+% We start with the memoir package. First we define a configuration value
+% (used when loading the package optional) and a new if (telling us later
+% if memoir is loaded or not).
+% \begin{macrocode}
+\def\skb@cfg@memoir{}
+\newif\ifSkbMemoirLoaded
+% \end{macrocode}
+%
+% Now we test for the memoir package. Note, if this package is loaded after the
+% \skbacft{A3DS:SKB}, this test and all following actions will fail. If the package is loaded,
+% then we set the if to true, activate (include) the environment skbmodememoir
+% and set our configuration value to the string ", memoir". If the memoir
+% package is not loaded, then we set the if to false, deactivate (exclude) the
+% environment skbmodememoir and load the package booktabs (to provide the commands
+% \cmd{\toprule} and \cmd{\bottomrule}.
+% \begin{macrocode}
+\@ifclassloaded{memoir}
+ {\SkbMemoirLoadedtrue
+ \includeversion{skbmodememoir}
+ \def\skb@cfg@memoir{,memoir}}
+ {\SkbMemoirLoadedfalse
+ \excludeversion{skbmodememoir}
+ \RequirePackage{booktabs}}
+% \end{macrocode}
+%
+% Now we check for the style beamerarticle. We define an if, set its default value
+% to false and test for of the package is loaded (if so, we change the if to true).
+% \begin{macrocode}
+\newif\ifSkbBeamerArticleLoaded
+\SkbBeamerArticleLoadedfalse
+\@ifpackageloaded{beamerarticle}{\SkbBeamerArticleLoadedtrue}{}
+% \end{macrocode}
+%
+% Now we check for the beamer package. e define an if, set its default value
+% to false and test for of the package is loaded (if so, we change the if to true).
+% \begin{macrocode}
+\newif\ifSkbBeamerLoaded
+\SkbBeamerLoadedfalse
+\@ifclassloaded{beamer}{\SkbBeamerLoadedtrue}{}
+% \end{macrocode}
+%
+% Now we process the first optional text support. First, we define a configuration value
+% for beamer animations. If animations are requested (skb package option, see above),
+% we set that value to the string ",anim" and activate (include) the environment skbmodeanim
+% and deactivate (exclude) the environment skbmodenoanim. If no-animation is requested
+% (skb package option, see above) or as default we set the value to the string ",noanim" and
+% deactivate (exclude) the environment skbmodeanim and activate (include) the environment
+% skbmodenoanim.
+% \begin{macrocode}
+\def\skb@cfg@beameranim{}
+\if@skbBeamerAnim
+ \def\skb@cfg@beameranim{,anim}
+ \excludeversion{skbmodenoanim}
+ \includeversion{skbmodeanim}
+\else
+ \def\skb@cfg@beameranim{,noanim}
+ \excludeversion{skbmodeanim}
+ \includeversion{skbmodenoanim}
+\fi
+% \end{macrocode}
+%
+% Now we are ready to provide for all other optional text support. The code configures the environments
+% skbmodetext, skbmodenote and skbmodeslide and loads the optional package depending if we have the
+% beamer package loaded or have the package beamerarticle loaded or have none of the two packages loaded.
+% The environments (package versions) are excluded or included accordingly. The package optional is loaded
+% with the respective option activated (text, note or slide) and using the two configuration values we have
+% defined above (these values are either empty having no effect or contain the option to be included).
+% \begin{macrocode}
+\ifSkbBeamerLoaded
+ \excludeversion{skbmodetext}
+ \excludeversion{skbmodenote}
+ \includeversion{skbmodeslide}
+ \RequirePackage[slide\skb@cfg@memoir\skb@cfg@beameranim]{optional}
+\else\ifSkbBeamerArticleLoaded
+ \excludeversion{skbmodetext}
+ \includeversion{skbmodenote}
+ \excludeversion{skbmodeslide}
+ \RequirePackage[note\skb@cfg@memoir\skb@cfg@beameranim]{optional}
+\else
+ \includeversion{skbmodetext}
+ \excludeversion{skbmodenote}
+ \excludeversion{skbmodeslide}
+ \RequirePackage[text\skb@cfg@memoir\skb@cfg@beameranim]{optional}
+\fi\fi
+% \end{macrocode}
+%
+%
+% \subsection{Provide Command}
+% \DescribeMacro{\BibTeX}
+% \DescribeMacro{\DescribeMacro}
+% \DescribeMacro{\cmdprint}
+% \DescribeMacro{\cmd}
+% The \skbacft{A3DS:SKB} provides for a few commands that the documentation (and maybe your documents as well)
+% expect to be available. The first two are for typesetting SKB and BibTeX, the rest are simply
+% usefull.
+% \begin{macrocode}
+\providecommand{\BibTeX}{{\scshape Bib}\TeX}
+\providecommand{\DescribeMacro}[1]{\relax}
+\providecommand{\cmdprint}[1]{\texttt{\string#1}}
+\providecommand{\cmd}[1]{\cmdprint{#1}}%
+% \end{macrocode}
+%
+%
+% \subsection{Macro Redefinitions}
+% The \skbacft{A3DS:SKB} documentation uses the package dirtree and we want to have some of its default settings
+% changed. For the comments, the default configuration we want is an small, italic serif font in blue; and
+% for the style part we want a type writer font in black.
+% \begin{macrocode}
+\renewcommand*\DTstylecomment{\itshape\sffamily\color{blue}\small}
+\renewcommand*\DTstyle{\ttfamily\textcolor{black}}
+% \end{macrocode}
+%
+%
+% \subsection{At End of Document}
+%
+% Last not least, we define what should happen at the end of the processing of the input
+% document. At them moment, we call \cmd{\skbpdfinfo} to set \skbacft{ISO:PDF} meta information and
+% \cmd{\skboptionsused} to print out the change log and current set of \skbacft{A3DS:SKB} configuration
+% options.
+% \begin{macrocode}
+\AtEndDocument{
+ \skbpdfinfo
+ \skboptionsused
+}
+% \end{macrocode}
+%
+%
+% \subsection{Package Configuration}
+% The basic idea of the \skbacft{A3DS:SKB} is that different parts of a document (figures, slides,
+% repository, published documents) reside in different folders. So the main configuration
+% of the \skbacft{A3DS:SKB} is to provide macros to set and get these folders and to load files from them.
+%
+% To simplify coding, we introduce some macros that handle configuration information.
+% These macros will be used by the \skbacft{A3DS:SKB} package to define, set and get configuration
+% information. The macros also store the origin of changes to the configuration information.
+%
+% \DescribeMacro{\skb@tmp}
+% This variable is used to temporarily store macros and strings. The value can change anytime
+% a new \skbacft{A3DS:SKB} macro is called.
+% \begin{macrocode}
+\newcommand{\skb@tmp}{}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@origlast}
+% Is used to store the last location (second argument of \cmd{\skbconfig}) were any configuration
+% information has been changed. The currently possible locations are \skbem[code]{skb.sty}
+% for default values, \skbem[code]{skb.cfg} for the general configuration file,
+% \skbem[code]{skblocal.cfg} for the local configuration file and \skbem[code]{skbconfig}
+% when the macro \cmd{\skbconfig} was called.
+% \begin{macrocode}
+\newcommand{\skb@cfg@origlast}{skb.sty}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@defCfgVars}
+% This macro is used to define new configuration information. It defines two new macros, one for the
+% name of the configuration information and one for storing a change log. The first argument is the
+% name to be used and the second argument the default initialisation. For instance, to add the
+% configuration information for the root path with the default value `/doc' call
+% \begin{lstlisting}[style=generic,language=TeX,gobble=2]
+% \skb@defCfgVars{root}{/doc}
+% \end{lstlisting}
+% \begin{macrocode}
+\newcommand{\skb@defCfgVars}[2]{
+ \@namedef{skb@cfg@var@#1}{#2}
+ \@namedef{skb@cfg@orig@#1}{skb.sty}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@setCfgVars}
+% Alter configuration information and append the location from where its called (second argument of \cmd{\skbconfig}
+% taken from \cmd{skb@cfg@origlast}) to the change log.
+% \begin{macrocode}
+\newcommand{\skb@setCfgVars}[2]{
+ \@namedef{skb@cfg@var@#1}{#2}
+ \expandafter\protected@edef\csname skb@cfg@orig@#1\endcsname%
+ {\csname skb@cfg@orig@#1\endcsname,\space \skb@cfg@origlast}%
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@getCfgVars}
+% This macro provides access to configuration values. It is used everywhere in the \skbacft{A3DS:SKB} to retrieve
+% configuration values.
+% \begin{macrocode}
+\newcommand{\skb@getCfgVars}[1]{%
+ \csname skb@cfg@var@#1\endcsname%
+}%
+% \end{macrocode}
+%
+% Now we use \cmd{\skb@defCfgVars} to initialise all configuration values the \skbacft{A3DS:SKB} uses.
+%
+% \DescribeMacro{\skb@cfg@var@root}
+% The first one is the root directory. Everything that the \skbacft{A3DS:SKB} processes should be located
+% below the root. The \skbacft{A3DS:SKB} can currently not handle inputs from directories outside the root
+% hierarchy (Note: one can call \cmd{\skbconfig} anytime to change the root directory, but be carefull
+% with potential side effects!). The default value for the root directory is \skbem[code]{/doc}.
+% \begin{macrocode}
+\skb@defCfgVars{root}{/doc}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@acr}
+% \DescribeMacro{\skb@cfg@var@acrfile}
+% These two values define the directory and the file name for the acronym database.
+% The \skbacft{A3DS:SKB} uses the \skbem[code]{acronym} package and the two macros detail the directory
+% (\skbem[code]{acr}) and the file (\skbem[code]{acrfile}) where the acronyms can be found.
+% The default for the directory is \skbem[code]{database/latex} and the default
+% for the file is \skbem[code]{acronym}.
+% \begin{macrocode}
+\skb@defCfgVars{acr}{database/latex}
+\skb@defCfgVars{acrfile}{acronyms}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@bib}
+% \DescribeMacro{\skb@cfg@var@bibfile}
+% These two values define the directory and the file name for the \BibTeX~database.
+% The two macros detail the directory (\skbem[code]{bib}) and the main file (\skbem[code]{bibfile})
+% where bibliographic information can be found.
+% The default for the directory is \skbem[code]{database/bibtex} and the default for the
+% file is \skbem[code]{bibliography.tex}.
+% \begin{macrocode}
+\skb@defCfgVars{bib}{database/bibtex}
+\skb@defCfgVars{bibfile}{bibliography.tex}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@rep}
+% This value points to the \skbem[code]{repository} directory. The default value is \skbem[code]{repository}.
+% \begin{macrocode}
+\skb@defCfgVars{rep}{repository}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@pub}
+% This value points to the folder with the published documents. The default value is \skbem[code]{publish}.
+% \begin{macrocode}
+\skb@defCfgVars{pub}{publish}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@fig}
+% This value points to the directory for figures. The default value is \skbem[code]{figures}.
+% \begin{macrocode}
+\skb@defCfgVars{fig}{figures}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@cfg@var@sli}
+% This value points to the directory for slides. The default value is \skbem[code]{transparencies}.
+% \begin{macrocode}
+\skb@defCfgVars{sli}{transparencies}
+% \end{macrocode}
+%
+%
+% \subsection{Generic Input Macro}
+% \DescribeMacro{\skb@input@doife}
+% \cmd{\skb@input@doife} is the generic input macro. It expects four arguments.
+% The first argument is the \skbacft{A3DS:SKB} macro that should be used to input a file.
+% The second argument is the actual file to be loaded, without file extension.
+% The third argument is the file extension to be used.
+% The fours argument is plain text that should be added to the help message in
+% case an arror occured while loading the file.
+% If the second and third argument are empty, we assume that the first argument
+% already contains directory and file and file extension information.
+% \begin{macrocode}
+\newcommand{\skb@input@doife}[4]{%
+ \def\filearg{#2}
+ \ifx\filearg\empty%
+ \edef\intfile{\csname #1\endcsname}%
+ \else%
+ \edef\intfile{\csname #1\endcsname{#2}#3}%
+ \fi%
+ \InputIfFileExists{\intfile}{}%
+ {\PackageError{skb}%
+ {file not found: \intfile}%
+ {I did not find the requested file #4,%
+ \MessageBreak please check: \intfile%
+ \MessageBreak <return> to continue, no file loaded}%
+ }%
+}
+% \end{macrocode}
+%
+%
+% \subsection{Kernel support for skbinput}
+% This is the actual core functionality of the \skbacft{A3DS:SKB} package: flexibly load files from
+% various pre-defined locations (folders). We start with a few macros that we can use
+% later to test options using the package keyval.
+%
+% \DescribeMacro{\skb@input@var@rep}
+% This macro represents the string "rep", which will be later used to test for macro options, for instance in \cmd{\skbinput}.
+% \begin{macrocode}
+\def\skb@input@var@rep{rep}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@var@pub}
+% This macro represents the string "pub", which will be later used to test for macro options, for instance in \cmd{\skbinput}.
+% \begin{macrocode}
+\def\skb@input@var@pub{pub}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@var@fig}
+% This macro represents the string "fig", which will be later used to test for macro options, for instance in \cmd{\skbinput}.
+% \begin{macrocode}
+\def\skb@input@var@fig{fig}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@var@sli}
+% This macro represents the string "sli", which will be later used to test for macro options, for instance in \cmd{\skbinput}.
+% \begin{macrocode}
+\def\skb@input@var@sli{sli}
+% \end{macrocode}
+%
+% The next set of macros will load files from various supported folders. All of them behave identical:
+% they expect argument 1 being the reuqest file and use \cmd{\InputIfFileExists} to check whether this
+% file exists. If so, they simply input the file using \cmd{\input}. If not, they use \cmd{\PackageError} to
+% throw an error with a help message, showing the requested directory and file.
+% The extention .tex is automatically added to the argument, which in turn should only contain the path and the
+% basename of the file.
+%
+% \DescribeMacro{\skb@input@doroot}
+% Load a given .tex file from the root directory.
+% \begin{macrocode}
+\newcommand{\skb@input@doroot}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfileroot}{\intarg}{.tex}{in given location}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@dorep}
+% Load a given .tex file from the repository.
+% \begin{macrocode}
+\newcommand{\skb@input@dorep}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfilerep}{\intarg}{.tex}{in the repository}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@dopub}
+% Load a given .tex file from the directory with the published documents.
+% \begin{macrocode}
+\newcommand{\skb@input@dopub}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfilepub}{\intarg}{.tex}{in the published document folder}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@dofig}
+% Load a given .tex file from the figure directory.
+% \begin{macrocode}
+\newcommand{\skb@input@dofig}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfilefig}{\intarg}{.tex}{in the figure folder}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skb@input@dosli}
+% Load a given .tex file from the slide directory.
+% \begin{macrocode}
+\newcommand{\skb@input@dosli}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfilesli}{\intarg}{.tex}{in the slide folder}
+}
+% \end{macrocode}
+%
+%
+% \DescribeMacro{\skb@input@call}
+% \DescribeMacro{\skb@input@set}
+% These two macros are used to load files. \cmd{\skb@input@call} will point to the currently requested
+% load macro (see above).
+% \cmd{\skb@input@set} sets the default load option in \cmd{\skb@input@call} to \cmd{\skb@input@doroot}. That
+% means if no option is given for an input directory, then the \skbacft{A3DS:SKB} root directory will be used.
+% \begin{macrocode}
+\def\skb@input@call{}
+\newcommand\skb@input@set{%
+ \gdef\skb@input@call{\skb@input@doroot}
+}
+% \end{macrocode}
+%
+%
+% \section{Implementation: Configuring the \skbacft{A3DS:SKB}}
+% \subsection{Changing Configuration: skbconfig}
+% \subsubsection{The Macro Options}
+% The macro provides one option per \skbacft{A3DS:SKB} configuration value. Each option expects
+% one paramter; the new value. The options are
+% \skbem[code]{root} (for the root directory),
+% \skbem[code]{acr} (for the acronym directory),
+% \skbem[code]{acrfile} (for the acronym file),
+% \skbem[code]{bib} (for the bibtex directory),
+% \skbem[code]{bibfile} (for the bibtex file),
+% \skbem[code]{rep} (for the repository directory),
+% \skbem[code]{pub} (for the directory with the published documents) and
+% \skbem[code]{sli} (for the directory with slides).
+% \begin{macrocode}
+\define@key{skbconfig}{root}[]{\skb@setCfgVars{root}{#1}}
+\define@key{skbconfig}{acr}[]{\skb@setCfgVars{acr}{#1}}
+\define@key{skbconfig}{acrfile}[]{\skb@setCfgVars{acrfile}{#1}}
+\define@key{skbconfig}{bib}[]{\skb@setCfgVars{bib}{#1}}
+\define@key{skbconfig}{bibfile}[]{\skb@setCfgVars{bibfile}{#1}}
+\define@key{skbconfig}{rep}[]{\skb@setCfgVars{rep}{#1}}
+\define@key{skbconfig}{pub}[]{\skb@setCfgVars{pub}{#1}}
+\define@key{skbconfig}{fig}[]{\skb@setCfgVars{fig}{#1}}
+\define@key{skbconfig}{sli}[]{\skb@setCfgVars{sli}{#1}}
+% \end{macrocode}
+%
+% \subsubsection{The Macro}
+% \DescribeMacro{\skbconfig}
+% This macro allows to change the main directory and path information for the \skbacft{A3DS:SKB}.
+% It reads the provided options and changes the requested values in the \skbacft{A3DS:SKB}.
+% The macro takes one argument which will set the origin of the configuration change. If this
+% argument is empty, the origin will be set to \skbem[code]{skbconfig}.
+% \begin{macrocode}
+\newcommand{\skbconfig}[2][]{
+ \def\intarg{#2}
+% \end{macrocode}
+% If no second argument is given, then set \cmd{\skb@cfg@origlast} to the string
+% "skbconfig" (this macro's name) otherwise use the second argument to set
+% \cmd{\skb@cfg@origlast}. In both cases, print out a general warning about the change of
+% configuration values for later trace or debugging.
+% \begin{macrocode}
+ \ifx\intarg\empty
+ \renewcommand{\skb@cfg@origlast}{skbconfig}
+ \PackageWarning{skb}{load options overwritten by skbconfig}
+ \else
+ \renewcommand{\skb@cfg@origlast}{#2}
+ \PackageWarning{skb}{load options overwritten by #2}
+ \fi
+% \end{macrocode}
+% Now use the keyval package to process the options. They will set the respective
+% configuration values, so there is nothing else to do here.
+% \begin{macrocode}
+ \setkeys{skbconfig}{#1}
+}
+% \end{macrocode}
+%
+%
+% \subsection{Changing Configuration: skb.cfg and skblocal.cfg}
+% The \skbacft{A3DS:SKB} can also be configured using external configuration files. Two files will be loaded if they exist:
+% \begin{skbnotelist}
+% \item \skbem[code]{skb.cfg} -- Should be used with the installed package in your
+% \TeX/\LaTeX~distribution. If it exists, it will overwrite the default options
+% for directories and paths.
+% \item \skbem[code]{skblocal.cfg} -- Should be used in your local styles/template
+% directory. If it exsits, it will overwrite the default options as well as the
+% options loaded with \skbem[code]{skb.cfg}.
+% \end{skbnotelist}
+% We use \cmd{\InputIfFileExists} to test if the configuration file exist. If true, we load the
+% configuration file and print out a general warning for later trace or debugging. If not, we
+% simply do nothing.
+% \begin{macrocode}
+\InputIfFileExists{skb.cfg}{%
+ \PackageWarning{skb}{load options from skb.cfg}
+}{}
+\InputIfFileExists{skblocal.cfg}{%
+ \PackageWarning{skb}{load options from skblocal.cfg}
+}{}
+% \end{macrocode}
+%
+%
+% \subsection{Viewing Configuration: skboptionsused}
+% \DescribeMacro{\skboptionsused}
+% This macro can be used to print out a message (as package warning), which contains
+% the change log and the currently used value for all \skbacft{A3DS:SKB} configuration values.
+% \begin{macrocode}
+\newcommand{\skboptionsused}{
+ \PackageWarningNoLine{skb}{%
+ Options last changed by: \skb@cfg@origlast \MessageBreak
+ Change log: \MessageBreak
+ - root = \skb@cfg@orig@root \MessageBreak
+ - acr = \skb@cfg@orig@acr \MessageBreak
+ - acrfile = \skb@cfg@orig@acrfile \MessageBreak
+ - bib = \skb@cfg@orig@bib \MessageBreak
+ - bibfile = \skb@cfg@orig@bibfile \MessageBreak
+ - rep = \skb@cfg@orig@rep \MessageBreak
+ - pub = \skb@cfg@orig@pub \MessageBreak
+ - fig = \skb@cfg@orig@fig \MessageBreak
+ - sli = \skb@cfg@orig@sli \MessageBreak
+ Last set Path/File Options: \MessageBreak
+ - file root = \skbfileroot{} \MessageBreak
+ - path root = \skbpathroot \MessageBreak
+ - file acr = \skbfileacr \MessageBreak
+ - file bib = \skbfilebib \MessageBreak
+ - path bib = \skbpathbib \MessageBreak
+ - path rep = \skbfilerep{} \MessageBreak
+ - path pub = \skbfilepub{} \MessageBreak
+ - path fig = \skbfilefig{} \MessageBreak
+ - path sli = \skbfilesli{}
+ }
+}
+% \end{macrocode}
+%
+%
+% \section{Implementation: Files, Figures and Slides}
+%
+% \subsection{Declaring Headings: skbheading}
+% \DescribeMacro{\skbheading}
+% This macro can be used everywhere to declare a new heading and let the \skbacft{A3DS:SKB} decide which
+% document level to use. The actual document level must be declared in the loading file using
+% \cmd{\skbinput} with the option \skbem[code]{level}, otherwise this command will have no effect.
+% \begin{macrocode}
+\newcommand{\skbheading}[1]{
+ \ifx\empty\skb@inputLevel
+ #1
+ \else%
+ \skb@inputLevel{#1}%
+ \fi
+}
+% \end{macrocode}
+%
+% \subsection{Loading \TeX~files: skbinput}
+% \subsubsection{Macro Options}
+% \DescribeMacro{skbinput: opt from}
+% The option \skbem[code]{from} is used to point to one of the following \skbacft{A3DS:SKB} directories:
+% the repository (\skbem[code]{from=rep}),
+% the folder with the published documents (\skbem[code]{from=pub}),
+% the figure folder (\skbem[code]{from=fig}) or
+% the slide folder (\skbem[code]{from=sli}).
+% The option is optional, but when used must give one of the those values.
+% The \skbacft{A3DS:SKB} will throw an error otherwise. The implementation works as follows: if the
+% option is used, its paramter is evaluated. Depending on which \skbacft{A3DS:SKB} directories is
+% requested, the value \cmd{\skb@input@call} is set to point to the respective load
+% load macro. For instance, if the requested directory is the repository (\skbem[code]{from=rep})
+% then \cmd{\skb@input@call} will be pointed to \cmd{\skb@input@dorep}.
+% \begin{macrocode}
+\define@key{skbinput}{from}[]{%
+ \def\intarg{#1}
+ \ifx\skb@input@var@rep\intarg
+ \gdef\skb@input@call{\skb@input@dorep}
+ \else\ifx\skb@input@var@pub\intarg
+ \gdef\skb@input@call{\skb@input@dopub}
+ \else\ifx\skb@input@var@fig\intarg
+ \gdef\skb@input@call{\skb@input@dofig}
+ \else\ifx\skb@input@var@sli\intarg
+ \gdef\skb@input@call{\skb@input@dosli}
+ \else
+ \PackageError{skb}%
+ {Value for option \@tempa\space not supported: \intarg}%
+ {I do not know the value \intarg\space for the option \@tempa.%
+ \MessageBreak Please use either "rep", "pub", "fig" or "sli".%
+ \MessageBreak <return> to continue, no file will be loaded}
+ \fi\fi\fi\fi
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbinput: opt level}
+% The option \skbem[code]{level} is used to define the document level to
+% be used for the next occurance of \cmd{\skbheading}. Supported are all
+% document levels known to \LaTeX~and no check is done whether the currently
+% used document class supports them or not (for instance, the article class
+% does not support the document level chapter, however, memoir supports it even
+% in article mode). The supported paramters for this option are:
+% \skbem[code]{book} (memoir pacakge),
+% \skbem[code]{part} (memoir pacakge),
+% \skbem[code]{title} (base \LaTeX~classes),
+% \skbem[code]{chapter} (\LaTeX~book class),
+% \skbem[code]{section} (base \LaTeX~classes),
+% \skbem[code]{subsection} (base \LaTeX~classes) and
+% \skbem[code]{subsubsection} (base \LaTeX~classes).
+%
+% The option is optional, but when used must give one of the above described values.
+% The package will throw an error otherwise.
+%
+% We start be defining the macros we use later for testing the option.
+% This might be a slightly awkward way to do it, I am still looking into
+% optimising this code. Anyway, we define everything we need for book, part, title,
+% chapter, section, subsection and subsubsection.
+% \begin{macrocode}
+\def\skb@inputLevelBook{book}
+\def\skb@inputLevelPart{part}
+\def\skb@inputLevelTitle{title}
+\def\skb@inputLevelChapter{chapter}
+\def\skb@inputLevelSection{section}
+\def\skb@inputLevelSubSection{subsection}
+\def\skb@inputLevelSubSubSection{subsubsection}
+% \end{macrocode}
+%
+% Now we define a macro that will be used to point to the selected input level (\cmd{\skb@inputLevel})
+% and a macro that will be used to set the default input level to be empty (i.e. do nothing, \cmd{\skb@SetInputLevel}).
+% \begin{macrocode}
+\def\skb@inputLevel{}
+\newcommand\skb@SetInputLevel{\gdef\skb@inputLevel{}}
+% \end{macrocode}
+%
+% And here is the actual definition of the option \skbem[code]{level}. For each supported parameter (introduced and defined
+% above) we test if it was provided calling the option (put into \cmd{\\intarg} on start) and if so we point \cmd{\skb@inputLevel}
+% to the \LaTeX~macro realising that document level. For instance, if the requested level is subsection we point \cmd{\skb@inputLevel}
+% to the \LaTeX~macro \cmd{\subsection}. That means we can later simply call \cmd{\skb@inputLevel} to instruct \LaTeX~to realise the
+% requested document level. In case the parameter is not supported, the option will throw an error along with a help message.
+% \begin{macrocode}
+\define@key{skbinput}{level}[]{%
+ \def\intarg{#1}
+ \ifx\skb@inputLevelBook\intarg
+ \let\skb@inputLevel=\book
+ \else\ifx\skb@inputLevelPart\intarg
+ \let\skb@inputLevel=\part
+ \else\ifx\skb@inputLevelTitle\intarg
+ \let\skb@inputLevel=\title
+ \else\ifx\skb@inputLevelChapter\intarg
+ \let\skb@inputLevel=\chapter
+ \else\ifx\skb@inputLevelSection\intarg
+ \let\skb@inputLevel=\section
+ \else\ifx\skb@inputLevelSubSection\intarg
+ \let\skb@inputLevel=\subsection
+ \else\ifx\skb@inputLevelSubSubSection\intarg
+ \let\skb@inputLevel=\subsubsection
+ \else
+ \PackageError{skb}%
+ {Value for option \@tempa\space not supported: \intarg}%
+ {I do not know the value \intarg\space for the option \@tempa.%
+ \MessageBreak Please use only: book, part, title, chapter,%
+ \MessageBreak section, subsection or subsubsection.%
+ \MessageBreak <return> to continue, no level will be set and heading is ignored}
+ \fi\fi\fi\fi\fi\fi\fi
+}
+% \end{macrocode}
+%
+% \subsubsection{The Macro}
+% \DescribeMacro{\skbinput}
+% This macro will load a .tex file from the root directory or from an \skbacft{A3DS:SKB} known directory (if option \skbem[code]{from} is applied).
+% It will also configure the document level macro for the next use of \cmd{\skbjeading}, if the option \skbem[code]{level} is applied.
+% If \skbem[code]{level} is not used, then \cmd{\skbheading} will have no effect. The macro first sets the input level to be empty (\cmd{\skb@input@set})
+% and the input macro to the default value (\cmd{\skb@input@set}). The it processes the options (using the keyval pacakge) and finally calls
+% \cmd{\skb@input@call} to realise the load of the requested file.
+% \begin{macrocode}
+\newcommand\skbinput[2][]{%
+ \skb@input@set
+ \skb@SetInputLevel
+ \setkeys{skbinput}{#1}
+ \skb@input@call{#2}
+}
+% \end{macrocode}
+%
+%
+% \subsection{Loading Figures: skbfigure}
+% \subsubsection{Macro Options}
+% This macro supportes a number of options. To be able to test for the applied options, we first define a few macros
+% that will be used by \cmd{\skbfigure} to realise the requested figure input. We define one macro per option supported.
+% \begin{macrocode}
+\def\skb@FigureOptWidth{}
+\def\skb@FigureOptHeight{}
+\def\skb@FigureOptCenter{}
+\def\skb@FigureOptFigure{}
+\def\skb@FigureOptPosition{}
+\def\skb@FigureOptCaption{}
+\def\skb@FigureOptLabel{}
+\def\skb@FigureOptMultiinclide{}
+% \end{macrocode}
+%
+% To be able to reset all of these macros before processing a figure, we define a reset macro.
+% \begin{macrocode}
+\newcommand{\skb@figureOptReset}{
+ \gdef\skb@FigureOptWidth{}
+ \gdef\skb@FigureOptHeight{}
+ \gdef\skb@FigureOptCenter{}
+ \gdef\skb@FigureOptFigure{}
+ \gdef\skb@FigureOptPosition{}
+ \gdef\skb@FigureOptCaption{}
+ \gdef\skb@FigureOptLabel{}
+ \gdef\skb@FigureOptMultiinclide{}
+}
+% \end{macrocode}
+%
+% Now we define all options for \cmd{\skbfigure}. All options work the same way: they either take the parameter given and put it into
+% the corresponding macro we defined above or simply set the corresponding macro to true. This way we can test these corresponding macros
+% for being empty (default) or not and then decide how to process the figure input.
+%
+% \DescribeMacro{skbfigure opt width}
+% The first one is called \skbem[code]{width} used for the width of \cmd{\resizebox} and \cmd{includegraphics}.
+% \begin{macrocode}
+\define@key{skbfigures}{width}[]{%
+ \gdef\skb@FigureOptWidth{#1}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt height}
+% The option height is used for the height of \cmd{\resizebox} and \cmd{includegraphics}.
+% \begin{macrocode}
+\define@key{skbfigures}{height}[]{%
+ \gdef\skb@FigureOptHeight{#1}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt center}
+% The option center is used to trigger the center environment (so it only needs to set true).
+% \begin{macrocode}
+\define@key{skbfigures}{center}[true]{%
+ \gdef\skb@FigureOptCenter{true}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt figure}
+% The option figure is used to trigger the figure environment (so it only needs to set true).
+% \begin{macrocode}
+\define@key{skbfigures}{figure}[true]{%
+ \gdef\skb@FigureOptFigure{true}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt position}
+% The option position is used to fix the position when figure environment is used
+% \begin{macrocode}
+\define@key{skbfigures}{position}[]{%
+ \gdef\skb@FigureOptPosition{\begin{figure}[#1]}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt caption}
+% The option caption is used to define the caption of the figure used as \cmd{\caption}
+% \begin{macrocode}
+\define@key{skbfigures}{caption}[]{%
+ \gdef\skb@FigureOptCaption{\caption{#1}}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt label}
+% The option label is used to define the label of the figure used as \cmd{\label}
+% \begin{macrocode}
+\define@key{skbfigures}{label}[]{%
+ \gdef\skb@FigureOptLabel{\label{fig:#1}}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{skbfigure opt multiinclude}
+% The option multiinclude is a special option to use \cmd{\multiinclude}, automatically deactivates all other options
+% \begin{macrocode}
+\define@key{skbfigures}{multiinclude}[]{%
+ \gdef\skb@FigureOptMultiinclide{#1}
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{The Macro}
+% \DescribeMacro{\skbfigure}
+% \cmd{\skbfigure} itself expects options (processed using keyval) and the actual file to be included.
+% The file name should start at the figure root directory.
+% \begin{macrocode}
+\newcommand{\skbfigure}[2][]{
+% \end{macrocode}
+% First, we call our reset function and then use keyval to process the options.
+% \begin{macrocode}
+ \skb@figureOptReset
+ \setkeys{skbfigures}{#1}%
+
+% \end{macrocode}
+% Now we process the options figure and position to decide if and how to use the figure environment. If the figure option has been used, we
+% test if the position option has been used as well. If figure and position have been used, we
+% call \cmd{\skb@FigureOptPosition}, which expands to \cmd{\begin{figure}[option]}. If only the figure
+% option was used, we directly invoke \cmd{\begin{figure}}.
+% \begin{macrocode}
+ \ifx\skb@FigureOptFigure\empty\else
+ \ifx\skb@FigureOptPosition\empty
+ \begin{figure}
+ \else
+ \skb@FigureOptPosition
+ \fi
+ \fi
+% \end{macrocode}
+% Next is the center option. If it was used, we call \cmd{\begin{center}}.
+% \begin{macrocode}
+ \ifx\skb@FigureOptCenter\empty\else\begin{center}\fi
+
+% \end{macrocode}
+% The core of the macro. If the option multiinclude was not used, we proceed load the figure
+% as we would usually do with \LaTeX. If multiinclude was used, then we simply call \cmd{\multiinclude}
+% with the given overlay information, starting at number 0, using \skbacft{ISO:PDF} format and scaling everything to \cmd{\textwidth}.
+% \begin{macrocode}
+ \ifx\skb@FigureOptMultiinclide\empty
+ \ifx\skb@FigureOptWidth\empty
+ \ifx\skb@FigureOptHeight\empty
+ \resizebox{!}{!}%
+ {\includegraphics[]%
+ {\skbfilefig{#2}}}
+ \else
+ \resizebox{!}{\skb@FigureOptHeight}%
+ {\includegraphics[height=\skb@FigureOptHeight]%
+ {\skbfilefig{#2}}}
+ \fi
+ \else
+ \ifx\skb@FigureOptHeight\empty
+ \resizebox{\skb@FigureOptWidth}{!}%
+ {\includegraphics[width=\skb@FigureOptWidth]%
+ {\skbfilefig{#2}}}
+ \else
+ \resizebox{\skb@FigureOptWidth}%
+ {\skb@FigureOptHeight}%
+ {\includegraphics[%
+ width=\skb@FigureOptWidth,%
+ height=\skb@FigureOptHeight%]%
+ {\skbfilefig{#2}}}
+ \fi
+ \fi
+ \else
+ \resizebox{\textwidth}{!}%
+ {\multiinclude[<\skb@FigureOptMultiinclide>]%
+ [start=0,format=pdf,graphics={width=\textwidth}]%
+ {\skbfilefig{#2}}}
+ \fi
+
+% \end{macrocode}
+% If we did use the figure environment, then we check for given caption and label.
+% \begin{macrocode}
+ \ifx\skb@FigureOptFigure\empty\else%
+ \skb@FigureOptCaption
+ \skb@FigureOptLabel
+ \fi%
+
+% \end{macrocode}
+% And finally we close the figure and center environments if we did open them earlier.
+% \begin{macrocode}
+ \ifx\skb@FigureOptCenter\empty\else\end{center}\fi
+ \ifx\skb@FigureOptFigure\empty\else\end{figure}\fi
+}
+% \end{macrocode}
+%
+%
+% \subsection{Loading Slides: skbslide}
+% This macro allows to load a (configurable) combination of \skbacft{ISO:PDF} slide and \LaTeX~
+% annotation to be loaded in a single call.
+%
+% \subsubsection{Some Extentions}
+% \DescribeMacro{\skb@slides@callpath}
+% The first is a macro that will maintain the current path and file for loading slides.
+% \begin{macrocode}
+\def\skb@slides@callpath{}
+% \end{macrocode}
+% \DescribeMacro{\skb@slides@doslinote}
+% The second is a macro to load annotations from the slide folder.
+% \begin{macrocode}
+\newcommand{\skb@slides@doslinote}[1]{%
+ \def\intarg{#1}
+ \skb@input@doife{skbfilesli}{\intarg}{.tex}{in the slides folder}
+}
+% \end{macrocode}
+%
+% \subsubsection{Macro Options}
+% \DescribeMacro{\skbslide opt slidefrom}
+% The option \skbem[code]{slidefrom} is used to point to one of the following \skbacft{A3DS:SKB} directories:
+% \skbem[code]{sli} (the folder for slides) or
+% \skbem[code]{pub} (the folder for published documents) or
+% \skbem[code]{rep} (the repository directory).
+% The option is optional, but when used must give one of the above described values.
+% The \skbacft{A3DS:SKB} will throw an error otherwise.
+% \begin{macrocode}
+\define@key{skbslide}{slidefrom}[]{%
+ \def\intarg{#1}
+ \ifx\skb@input@var@sli\intarg
+ \let\skb@slides@callpath=\skbfilesli
+ \else\ifx\skb@input@var@pub\intarg
+ \let\skb@slides@callpath=\skbfilepub
+ \else\ifx\skb@input@var@rep\intarg
+ \let\skb@slides@callpath=\skbfilerep
+ \else
+ \PackageError{skb}%
+ {Value for option \@tempa\space not supported: \intarg}%
+ {I do not know the value \intarg\space for the option \@tempa.%
+ \MessageBreak Please use either "pub", "rep" or "sli".%
+ \MessageBreak <return> to continue, no file will be loaded}
+ \fi\fi\fi
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skbslide opt notefrom}
+% The option \skbem[code]{notefrom} is used to point to one of the following \skbacft{A3DS:SKB} directories:
+% \skbem[code]{sli} (the folder for slides) or
+% \skbem[code]{pub} (the folder for published documents) or
+% \skbem[code]{rep} (the repository directory).
+% The option is optional, but when used must give one of the above described values.
+% The \skbacft{A3DS:SKB} will throw an error otherwise.
+% \begin{macrocode}
+\define@key{skbslide}{notefrom}[]{%
+ \def\intarg{#1}
+ \ifx\skb@input@var@sli\intarg
+ \gdef\skb@input@call{\skb@slides@doslinote}
+ \else\ifx\skb@input@var@pub\intarg
+ \gdef\skb@input@call{\skb@input@dopub}
+ \else\ifx\skb@input@var@rep\intarg
+ \gdef\skb@input@call{\skb@input@dorep}
+ \else
+ \PackageError{skb}%
+ {Value for option \@tempa\space not supported: \intarg}%
+ {I do not know the value \intarg\space for the option \@tempa.%
+ \MessageBreak Please use either "pub", "rep" or "sli".%
+ \MessageBreak <return> to continue, no file will be loaded}
+ \fi\fi\fi
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skbslide opt annotate}
+% The option \skbem[code]{annotate} requests to load annotations for the slide. If not given, no
+% annotations will be loaded.
+% \begin{macrocode}
+\def\skb@slides@loadnote{}
+\define@key{skbslide}{annotate}[true]{%
+ \gdef\skb@slides@loadnote{true}
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{The Macro}
+% \DescribeMacro{\skbslide}
+% This macro will load the slide and annotation, depending on the options provided.
+% \begin{macrocode}
+\newcommand\skbslide[3][]{%
+ \gdef\skb@slides@loadnote{}
+ \gdef\skb@input@call{\skb@slides@doslinote}
+ \let\skb@slides@callpath=\skbfilesli
+ \setkeys{skbslide}{#1}
+
+ \def\sl{#2}
+ \def\an{#3}
+
+ \ifx\sl\empty\else
+ \begin{figure}[!bh]
+ \resizebox{\textwidth}{!}{\includegraphics[width=\textwidth]{\skb@slides@callpath{#2}}}
+ \end{figure}
+ \fi
+
+ \ifx\skb@slides@loadnote\empty\else
+ \ifx\an\empty
+ \skb@input@call{#2}
+ \clearpage
+ \else
+ \skb@input@call{#3}
+ \clearpage
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skbslide}
+% This simple macro can help to provide standardised citations on annotation pages.
+% \begin{macrocode}
+\newcommand{\skbslidecite}[2]{\small Source \textit{#2}: \textit{#1} \normalsize}
+% \end{macrocode}
+%
+%
+% \section{Implementation: Filenames, Acronyms and References}
+% \subsection{Path and File Names}
+% These macros are used within the \skbacft{A3DS:SKB} to generate path and filenames for all known
+% directories and files. They basically provide user-level access to kernel-level processed
+% configuration date.
+% All path names, except root, are fully qualified from root.
+% All filenames are fully qualified from root. Macros that expect an argument use that
+% very argument as the reuqested filename to provide path and filename.
+%
+% \DescribeMacro{\skbpathroot}
+% This macro returns the currently set root path.
+% \begin{macrocode}
+\newcommand{\skbpathroot}{\skb@getCfgVars{root}}
+% \end{macrocode}
+% \DescribeMacro{\skbfileroot}
+% This macro takes the given argument and prefixes the root path to it.
+% \begin{macrocode}
+\newcommand{\skbfileroot}[1]{\skb@getCfgVars{root}/#1}
+% \end{macrocode}
+% \DescribeMacro{\skbfileacr}
+% This macro returns the file of the acronym database.
+% \begin{macrocode}
+\newcommand{\skbfileacr}{\skb@getCfgVars{root}/\skb@getCfgVars{acr}/\skb@getCfgVars{acrfile}}
+% \end{macrocode}
+% \DescribeMacro{\skbpathbib}
+% This macro returns the path to the reference library.
+% \begin{macrocode}
+\newcommand{\skbpathbib}{\skb@getCfgVars{root}/\skb@getCfgVars{bib}}
+% \end{macrocode}
+% \DescribeMacro{\skbfilebib}
+% This macro returns the file that is used to load the reference library.
+% \begin{macrocode}
+\newcommand{\skbfilebib}{\skb@getCfgVars{root}/\skb@getCfgVars{bib}/\skb@getCfgVars{bibfile}}
+% \end{macrocode}
+% \DescribeMacro{\skbfilerep}
+% This macro takes the provided argument and prefixes the path to the repository to it.
+% \begin{macrocode}
+\newcommand{\skbfilerep}[1]{\skb@getCfgVars{root}/\skb@getCfgVars{rep}/#1}
+% \end{macrocode}
+% \DescribeMacro{\skbfilepub}
+% This macro takes the provided argument and prefixes the path to the published documents to it.
+% \begin{macrocode}
+\newcommand{\skbfilepub}[1]{\skb@getCfgVars{root}/\skb@getCfgVars{pub}/#1}
+% \end{macrocode}
+% \DescribeMacro{\skbfilefig}
+% This macro takes the provided argument and prefixes the path to the figures to it.
+% \begin{macrocode}
+\newcommand{\skbfilefig}[1]{\skb@getCfgVars{root}/\skb@getCfgVars{fig}/#1}
+% \end{macrocode}
+% \DescribeMacro{\skbfilesli}
+% This macro takes the provided argument and prefixes the path to the slides to it.
+% \begin{macrocode}
+\newcommand{\skbfilesli}[1]{\skb@getCfgVars{root}/\skb@getCfgVars{sli}/#1}
+% \end{macrocode}
+%
+%
+% \subsection{Loading Acronyms}
+% \DescribeMacro{\skbacronyms}
+% This macro will load the acronym database. It should be used at the place in your document were you want
+% the list of acronyms to appear. If the file is not found, an error is thrown.
+% \begin{macrocode}
+\newcommand{\skbacronyms}{%
+ \skb@input@doife{skbfileacr}{}{}{for acronym database}
+}
+% \end{macrocode}
+%
+% \subsection{Loading Reference Database}
+% \DescribeMacro{\skbbibtex}
+% This macro will load the reference database. It should be used before you start the actual document.
+% If the file is not found, an error is thrown.
+% \begin{macrocode}
+\newcommand{\skbbibtex}{%
+ \skb@input@doife{skbfilebib}{}{}{for bibtex database}
+}
+% \end{macrocode}
+%
+%
+%
+% \section{Implementation: Other useful Macros}
+%
+% \subsection{Emphasising Text: skbem}
+% \subsubsection{Macro Options}
+% \DescribeMacro{skbem opt italic}
+% This option will typset the given text for \cmd{\skbem} using italic font.
+% \begin{macrocode}
+\def\skb@emCmd{}
+\define@key{skbem}{italic}[true]{%
+ \gdef\skb@emCmd{\textit}%
+}%
+% \end{macrocode}
+% \DescribeMacro{skbem opt bold}
+% This option will typset the given text for \cmd{\skbem} using bold font.
+% \begin{macrocode}
+\define@key{skbem}{bold}[true]{%
+ \gdef\skb@emCmd{\textbf}%
+}%
+% \end{macrocode}
+% \DescribeMacro{skbem opt code}
+% This option will typset the given text for \cmd{\skbem} using the command \cmd{\skbcode} (see below).
+% \begin{macrocode}
+\define@key{skbem}{code}[true]{%
+ \gdef\skb@emCmd{\skbcode}%
+}%
+% \end{macrocode}
+%
+% \subsubsection{The Macro}
+% \DescribeMacro{\skbem}
+% This macro helps to emphasise text in an explicit way (as compared to use font commands within
+% the actual text). Simply call with the one of the option to emphasise text.
+% \begin{macrocode}
+\newcommand{\skbem}[2][]{%
+ \gdef\skb@emCmd{}%
+ \setkeys{skbem}{#1}%
+ \skb@emCmd{#2}%
+}%
+% \end{macrocode}
+%
+% \subsection{Emphasising Text: skbcode}
+% \DescribeMacro{\skbcode}
+% This macro is a facade for calling \cmd{\lstinline} with basicstyle set to type writer font.
+% It is used by \skbem[code]{skbem} with the option \skbem[code]{code} to call
+% \cmd{\lstinline} but can also be called directly.
+% \begin{macrocode}
+\newcommand{\skbcode}[1]{%
+ \lstinline[basicstyle=\ttfamily]{#1}%
+}%
+% \end{macrocode}
+%
+% \subsection{List Environments: skbnotelist and skbnoteenum}
+% These environments simulate \cmd{\tightlist} from the memoir package.
+% They work identical: call the environment itemize (for skbnotelist) or enumerate
+% (for skbnoteenum) and set the two values to 0 (thus minimising the margin between items).
+%
+% \DescribeMacro{\skbnotelist}
+% New Environment skbnotelist to minimise the margin between list items.
+% \begin{macrocode}
+\newenvironment{skbnotelist}
+ {\begin{itemize}
+ \ifSkbMemoirLoaded\else
+ \setlength{\parskip}{0cm}\setlength{\itemsep}{0cm}
+ \fi
+ }
+ {\end{itemize}}
+% \end{macrocode}
+%
+% \DescribeMacro{\skbnoteenum}
+% New Environment skbnotelist to minimise the margin between list items.
+% \begin{macrocode}
+\newenvironment{skbnoteenum}%
+ {\begin{enumerate}
+ \ifSkbMemoirLoaded\else
+ \setlength{\parskip}{0cm}\setlength{\itemsep}{0cm}
+ \fi
+ }
+ {\end{enumerate}}
+% \end{macrocode}
+%
+%
+% \subsection{Acronyms in Footnotes: skbacft}
+% \DescribeMacro{\skbacft}
+% This macro provides some functionality that the \skbem[code]{acronym} package does not offer:
+% introducing acronyms in a footnote (if they are used the first time) or simply use the short
+% form. I found this is useful when writing books, where sometimes introducing acronym in the
+% normal text flow somehow disturbs that very flow.
+% \begin{macrocode}
+\newcommand{\skbacft}[1]{%
+ \ifAC@dua
+ \ifAC@starred\acl*{#1}\else\acl{#1}\fi%
+ \else
+ \expandafter\ifx\csname ac@#1\endcsname\AC@used%
+ \acs{#1}%
+ \else
+ \acs{#1}\footnote{\acf{#1}}%
+ \fi
+ \fi}
+% \end{macrocode}
+%
+%
+% \subsection{PDF Meta Information: skbpdfinfo and more}
+%
+% \DescribeMacro{\skbtitle}
+% This macro allows to set text for the title of the generated \skbacft{ISO:PDF}.
+% \begin{macrocode}
+\def\skb@TitleText{}
+\newcommand{\skbtitle}[1]{\gdef\skb@TitleText{#1}}
+% \end{macrocode}
+% \DescribeMacro{\skbauthor}
+% This macro allows to set text for the author of the generated \skbacft{ISO:PDF}.
+% \begin{macrocode}
+\def\skb@AuthorText{}
+\newcommand{\skbauthor}[1]{\gdef\skb@AuthorText{#1}}
+% \end{macrocode}
+% \DescribeMacro{\skbsubject}
+% This macro allows to set text for the subject of the generated \skbacft{ISO:PDF}.
+% \begin{macrocode}
+\def\skb@SubjectText{}
+\newcommand{\skbsubject}[1]{\gdef\skb@SubjectText{#1}}
+% \end{macrocode}
+% \DescribeMacro{\skbkeywords}
+% This macro allows to set text for the keywords of the generated \skbacft{ISO:PDF}.
+% \begin{macrocode}
+\def\skb@KeywordsText{}
+\newcommand{\skbkeywords}[1]{\gdef\skb@KeywordsText{#1}}
+% \end{macrocode}
+% \DescribeMacro{\skbpdfinfo}
+% This macro will set the \skbacft{ISO:PDF} information in the generated \skbacft{ISO:PDF}. It first checks if
+% we are in \skbacft{ISO:PDF} mode, and then uses the information from \cmd{\skb@AuthorText},
+% \cmd{\skb@TitleText} plus subject and keywords from above.
+% \begin{macrocode}
+\newcommand{\skbpdfinfo}{%
+ \ifpdf
+ \pdfinfo{
+ /Author (\skb@AuthorText)
+ /Title (\skb@TitleText)
+ /ModDate (D:\pdfdate)
+ /Subject (\skb@SubjectText)
+ /Keywords (\skb@KeywordsText)
+ }
+ \fi
+}
+% \end{macrocode}
+%
+%
+% \subsection{Listing Styles and Support}
+% The \skbacft{A3DS:SKB} comes with a few pre-defined styles for the \skbem[code]{listing} package.
+% Most of these predefined styles use type writer font in scriptsize, arrange a grey
+% box around the listing and set the keywords to Blue4.
+%
+% The first style is the for any generic listing without specifying a language and no
+% line numbers.
+% \begin{macrocode}
+\lstdefinestyle{generic}
+ {basicstyle=\scriptsize\ttfamily, backgroundcolor=\color[gray]{.9},
+ frame=single, framerule=.5pt, numbers=none,
+ linewidth=0.99\textwidth, xleftmargin=3pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style is designed for listings within tables. It is similar to the generic one above,
+% except that the definitions for frame and numbers are not used, which seem to collide
+% with some table environments.
+% \begin{macrocode}
+\lstdefinestyle{gentab}
+ {basicstyle=\scriptsize\ttfamily, backgroundcolor=\color[gray]{.9},
+ framerule=0pt,
+ linewidth=.86\textwidth, xleftmargin=3pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style is the same as the generic one above, except that it switches on line numbers
+% and allows extra space for them within the grey box.
+% \begin{macrocode}
+\lstdefinestyle{genericLN}
+ {basicstyle=\scriptsize\ttfamily, backgroundcolor=\color[gray]{.9},
+ frame=single, framerule=.5pt, numbers=left,
+ linewidth=0.99\textwidth, xleftmargin=20pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style is based on the style \skbem[code]{genricLN}, basically using a slightly brighter
+% grey for the box.
+% \begin{macrocode}
+\lstdefinestyle{genericLNspecial}
+ {basicstyle=\small\ttfamily, backgroundcolor=\color[gray]{.97},
+ frame=single, framerule=.5pt, numbers=left,
+ linewidth=0.99\textwidth, xleftmargin=20pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style is designed for examples within slides (frames) using the \skbem[code]{beamer}
+% package.
+% \begin{macrocode}
+\lstdefinestyle{beamer-example}
+ {basicstyle=\scriptsize\ttfamily,
+ frame=single, framerule=0pt, numbers=none,
+ linewidth=0.99\textwidth, xleftmargin=3pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style is designed for examples within slides (frames) using the \skbem[code]{beamer}
+% with added line numbers.
+% \begin{macrocode}
+\lstdefinestyle{beamer-exampleLN}
+ {basicstyle=\scriptsize\ttfamily,
+ frame=single, framerule=0pt, numbers=left,
+ linewidth=0.99\textwidth, xleftmargin=20pt,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=\bfseries}
+% \end{macrocode}
+%
+% This style uses the definitions from the generic style above and set the language to Java.
+% \begin{macrocode}
+\lstdefinestyle{javaCode}
+ {basicstyle=\scriptsize\ttfamily, backgroundcolor=\color[gray]{.9},
+ frame=single, framerule=0pt, language=JAVA,
+ numbers=none,
+ keywordstyle=\bfseries\color{Blue4},
+ identifierstyle=,
+ linewidth=0.99\columnwidth}
+% \end{macrocode}
+%
+% This style can be used to set `normal' style after changing it.
+% \begin{macrocode}
+\lstdefinestyle{inText}
+ {basicstyle=\ttfamily}
+% \end{macrocode}
+%
+%
+% \section{Experimental Macros}
+% This part of the \skbacft{A3DS:SKB} is experimental. Please do not use it for production code or important
+% documents. The macros in this section will be moved as soon as they are stable, or simply
+% removed. They can, as long as they stay in this section, be changed at any time in future
+% releases.
+%
+% \subsection{Defining new relative Headings: skbheadingudc}
+% When we set the document level with \cmd{\skbheading}, it might be usefull to actually
+% have a macro that allows to relatively change headings. This is usefull if we have more than
+% one heading in a repository file, where the first one defines the heading and will get
+% an associative document level from the calling document while any subsequent heading might
+% need to go one level up or down. The macro here works as long as we don't need to
+% recursively store document levels. So it is not stable right now and makes only sense if
+% used for single headings.
+%
+% First, a macro that we use to point to the new heading (rather than the one used by \cmd{\skbinput}.
+% \begin{macrocode}
+\def\skb@newHeading{}
+% \end{macrocode}
+%
+% \subsubsection{Macro Options}
+% Now the option down, which indicates that this heading should be one level down from the previous one.
+% \begin{macrocode}
+\define@key{skbheadings}{down}[true]{%
+ \ifx\skb@inputLevel\part
+ \let\skb@newHeading=\chapter
+ \let\skb@inputLevel=\chapter
+ \else\ifx\skb@inputLevel\chapter
+ \let\skb@newHeading=\section
+ \let\skb@inputLevel=\section
+ \else\ifx\skb@inputLevel\section
+ \let\skb@newHeading=\subsection
+ \let\skb@inputLevel=\subsection
+ \else\ifx\skb@inputLevel\subsection
+ \let\skb@newHeading=\subsubsection
+ \let\skb@inputLevel=\subsubsection
+ \else
+ \KV@err{Invalid current level for SkbNewHeading(down),
+ please use: part, chapter, section or subsection}
+ \fi\fi\fi\fi
+}
+% \end{macrocode}
+%
+% Now the option up, which indicates that this heading should be one level up from the previous one.
+% \begin{macrocode}
+\define@key{skbheadings}{up}[true]{%
+ \ifx\skb@inputLevel\chapter
+ \let\skb@newHeading=\part
+ \let\skb@inputLevel=\part
+ \else\ifx\skb@inputLevel\section
+ \let\skb@newHeading=\chapter
+ \let\skb@inputLevel=\chapter
+ \else\ifx\skb@inputLevel\subsection
+ \let\skb@newHeading=\section
+ \let\skb@inputLevel=\section
+ \else\ifx\skb@inputLevel\subsubsection
+ \let\skb@newHeading=\subsection
+ \let\skb@inputLevel=\subsection
+ \else
+ \KV@err{Invalid current level for SkbNewHeading(up),
+ please use: chapter, section, subsection or subsubsection}
+ \fi\fi\fi\fi
+}
+% \end{macrocode}
+%
+% Now the option last, which indicates that this heading should be on the same level as the previous one.
+% \begin{macrocode}
+\define@key{skbheadings}{last}[true]{%
+ \let\skb@newHeading=\skb@inputLevel%
+}
+% \end{macrocode}
+%
+% \subsubsection{The Macro}
+%
+% \DescribeMacro{\skbheadingudc}
+% \begin{macrocode}
+\newcommand{\skbheadingudc}[2][]{%
+ \gdef\skb@newHeading{}
+ \setkeys{skbheadings}{#1}%
+ \ifx\empty\skb@newHeading\else%
+ \skb@newHeading{#2}%
+ \fi
+}
+% \end{macrocode}
+%
+%
+%
+%
+% \begin{macrocode}
+%</skbpackage>
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{The Configuration File skb.cfg}
+%
+% This file is used to overwrite the default values for the \skbacft{A3DS:SKB} configuration
+% options. It calles the macro \cmd{\skbconfig} using all possible options
+% of that very macro and providing usefull text as origin of the configuration change
+% \skbem[code]{skb.cfg}. Use this as template for the local configuration file
+% \skbem[code]{skblocal.cfg} if you need one.
+% \begin{macrocode}
+%<*skbcfg>
+\skbconfig[root=/doc,
+ acr=database/latex,
+ acrfile=acronyms,
+ bib=database/bibtex,
+ bibfile=bibliography.tex,
+ rep=repository,
+ pub=publish,
+ fig=figures,
+ sli=slides
+ ]{skb.cfg}
+%</skbcfg>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{The \skbacft{A3DS:SKB} Classes}
+%
+%
+% \subsection{The Class skbarticle}
+%
+% This class is an example on how to use the \skbacft{A3DS:SKB} with memoir. I use skbarticle
+% for my articles. Using this class as a template, one can easily write other
+% classes or change/overwrite the settings done here.
+%
+% First, we announce the package and the font definition file.
+% \begin{macrocode}
+%<*skbarticle>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skbarticle}[2011/06/03 The SKB Article class v0.52]
+% \end{macrocode}
+%
+% Now we load the memoir class with the following options:
+% \begin{skbnotelist}
+% \item 10pt - for 10 point font size
+% \item a4paper - I am European, so A4 paper makes sense here
+% \item extrafontsizes - tbd
+% \item twoside - I want my articles to be set with different even/odd pages
+% \item onecolumn - I don't necessarily like 2-columns for my articles
+% \item openright - tbd
+% \item article - use memoir as if it is an article
+% \end{skbnotelist}
+% \begin{macrocode}
+\LoadClass[10pt,a4paper,extrafontsizes,twoside,onecolumn,openright,article]{memoir}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphanumeric, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to none, not needed here.
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=none,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the acronym package and print only the acronyms actually used in the document.
+% This might move into the \skbacft{A3DS:SKB} package later.
+% \begin{macrocode}
+\RequirePackage[printonlyused]{acronym}
+% \end{macrocode}
+%
+% Load a view packages that I tend to use quite often:
+% \begin{skbnotelist}
+% \item etoolbox - etoolbox
+% \item comment - Add comments to your \LaTeX~files
+% \item graphicx - Enhanced graphic support, with key/value interface for include graphics
+% \item longtable - Helps with tables that span multiple pages
+% \item colortbl - Allows coloured cells in tables
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{etoolbox,comment,graphicx,longtable,colortbl}
+% \end{macrocode}
+%
+% And some more packages needed quite often:
+% \begin{skbnotelist}
+% \item textcomp - Special characters, such as \textregistered~and \textcopyright
+% \item gensymb - Generic characters (math and text mode), such as \degree, \celsius, \perthousand, \micro~and \ohm
+% \item wasysym - Adds characters from \textit{wasy} font, such as \smiley, \XBox~and \rightturn
+% \item units - Typeset units correctly (and produce 'nice' fractions), such as \unitfrac[10]{m}{s} and \nicefrac[\texttt]{1}{2}
+% \item float - Improves interface for floating environments (such as figures, tables)
+% \item xmpmulti - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{textcomp,gensymb,wasysym,units,xmpmulti,float}
+% \end{macrocode}
+%
+% The xcolor package provides driver independent access to all sorts of colour tins,
+% shades, tones and mixes. I like x11names, as you can tell.
+% \begin{macrocode}
+\RequirePackage[x11names]{xcolor}
+% \end{macrocode}
+%
+% The hyperref package provides layout for hyper references, such as URLs and references within a document,
+% such as acronyms, citations and the table of contents. We use the option colorlings and then provide
+% the colors we prefer for links (linkcolor), citations (citecolor) and URLs (urlcolor).
+% \begin{macrocode}
+\RequirePackage[colorlinks,%
+ linkcolor=Brown4,%
+ citecolor=SeaGreen4,%
+ urlcolor=RoyalBlue3%
+ ]{hyperref}
+%\RequirePackage[colorlinks,linkcolor=blue]{hyperref}
+% \end{macrocode}
+%
+%
+% \subsubsection{Memoir Options}
+%
+% Not sure, but I don't think semi-iso-pages are good. So not used right now.
+% \begin{macrocode}
+%\semiisopage
+% \end{macrocode}
+%
+% Change the margins for even and odd pages. Odd to 1cm and even to 1cm.
+% \begin{macrocode}
+\setlength{\oddsidemargin}{1cm}
+\setlength{\evensidemargin}{0cm}
+% \end{macrocode}
+%
+% Set width and height for the text. At the moment only the width, to 15cm
+% \begin{macrocode}
+\setlength{\textwidth}{15cm}
+%\setlength{\textheight}{24cm}
+% \end{macrocode}
+%
+% Don't use chapter numbers in sections, thus making them looking like sections
+% in a classic article (1 instead of the default 0.1)
+% \begin{macrocode}
+\def\thesection{\arabic{section}}
+% \end{macrocode}
+%
+% Allow table of contents to go up to sub-sections
+% \begin{macrocode}
+\settocdepth{subsection}
+% \end{macrocode}
+%
+% And numbering up to subsubsections
+% \begin{macrocode}
+\setsecnumdepth{subsubsection}
+% \end{macrocode}
+%
+% For lists, memoir provides different layouts. We use tightlists here, but can
+% switch that to firmlists if needed
+% \begin{macrocode}
+\tightlists
+%\firmlists
+% \end{macrocode}
+%
+% What are these for? I forgot...
+% \begin{macrocode}
+\midsloppy
+\raggedbottom
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc Settings}
+%
+% Finally, we do set the sort option for the bibliography to anyt (biblatex)
+% \begin{macrocode}
+\ExecuteBibliographyOptions{sorting=anyt}
+% \end{macrocode}
+%
+% There is no code for \cmd{\AtBeginDocument} and \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skbarticle>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{The Class skbbook}
+%
+% This class is an example on how to use the \skbacft{A3DS:SKB} with memoir. I use skbbook
+% for my books. Using this class as a template, one can easily write other
+% classes or change/overwrite the settings done here.
+%
+% First, we announce the package and the font definition file.
+% \begin{macrocode}
+%<*skbbook>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skbbook}[2011/06/03 The SKB Book class v0.52]
+% \end{macrocode}
+%
+% Now we load the memoir class with the following options:
+% \begin{skbnotelist}
+% \item 11pt - for 11 point font size
+% \item a4paper - I am European, so A4 paper makes sense here
+% \item extrafontsizes - tbd
+% \item twoside - I want my articles to be set with different even/odd pages
+% \item onecolumn - I don't necessarily like 2-columns for my articles
+% \item openright - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\LoadClass[11pt,a4paper,extrafontsizes,twoside,onecolumn,openright]{memoir}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphanumeric, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to none, not needed here.
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=none,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the acronym package and print only the acronyms actually used in the document.
+% This might move into the \skbacft{A3DS:SKB} package later
+% \begin{macrocode}
+\RequirePackage[printonlyused]{acronym}
+% \end{macrocode}
+%
+% Load a view packages that I tend to use quite often:
+% \begin{skbnotelist}
+% \item etoolbox - etoolbox
+% \item comment - Add comments to your \LaTeX~files
+% \item graphicx - Enhanced graphic support, with key/value interface for include graphics
+% \item longtable - Helps with tables that span multiple pages
+% \item colortbl - Allows coloured cells in tables
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{etoolbox,comment,graphicx,longtable,colortbl}
+% \end{macrocode}
+%
+% And some more packages needed quite often:
+% \begin{skbnotelist}
+% \item textcomp - Special characters, such as \textregistered~and \textcopyright
+% \item gensymb - Generic characters (math and text mode), such as \degree, \celsius, \perthousand, \micro~and \ohm
+% \item wasysym - Adds characters from \textit{wasy} font, such as \smiley, \XBox~and \rightturn
+% \item units - Typeset units correctly (and produce 'nice' fractions), such as \unitfrac[10]{m}{s} and \nicefrac[\texttt]{1}{2}
+% \item float - Improves interface for floating environments (such as figures, tables)
+% \item xmpmulti - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{textcomp,gensymb,wasysym,units,xmpmulti,float}
+% \end{macrocode}
+%
+% The xcolor package provides driver independent access to all sorts of colour tins,
+% shades, tones and mixes. I like x11names, as you can tell.
+% \begin{macrocode}
+\RequirePackage[x11names]{xcolor}
+% \end{macrocode}
+%
+% The hyperref package provides layout for hyper references, such as URLs and references within a document,
+% such as acronyms, citations and the table of contents. We use the option colorlings and then provide
+% the colors we prefer for links (linkcolor), citations (citecolor) and URLs (urlcolor).
+% \begin{macrocode}
+\RequirePackage[colorlinks,%
+ linkcolor=Brown4,%
+ citecolor=SeaGreen4,%
+ urlcolor=RoyalBlue3%
+ ]{hyperref}
+%\RequirePackage[colorlinks,linkcolor=blue]{hyperref}
+% \end{macrocode}
+%
+%
+% \subsubsection{Memoir Options}
+%
+% Not sure, but I don't think semi-iso-pages are good. So not used right now.
+% \begin{macrocode}
+%\semiisopage
+% \end{macrocode}
+%
+% Set the head styles to komalike (the other nice style is memman).
+% \begin{macrocode}
+\headstyles{komalike}
+% \end{macrocode}
+%
+% Change the margins for even and odd pages. Odd to .5cm and even to 0cm.
+% \begin{macrocode}
+\setlength{\oddsidemargin}{.5cm}
+\setlength{\evensidemargin}{0cm}
+% \end{macrocode}
+%
+% Set width and height for the text. Width to 15cm and length t0 22cm.
+% \begin{macrocode}
+\setlength{\textwidth}{15cm}
+\setlength{\textheight}{22cm}
+% \end{macrocode}
+%
+% Get half a centimeter back from the topmargin.
+% \begin{macrocode}
+\setlength{\topmargin}{-.5cm}
+% \end{macrocode}
+%
+% Allow table of contents to go up to subsub-sections
+% \begin{macrocode}
+\settocdepth{subsubsection}
+% \end{macrocode}
+%
+% And numbering up to subsubsections
+% \begin{macrocode}
+\setsecnumdepth{subsubsection}
+% \end{macrocode}
+%
+% For lists, memoir provides different layouts. We use tightlists here, but can
+% switch that to firmlists if needed
+% \begin{macrocode}
+\tightlists
+%\firmlists
+% \end{macrocode}
+%
+% What are these for? I forgot...
+% \begin{macrocode}
+\midsloppy
+\raggedbottom
+% \end{macrocode}
+%
+% Chapters shoud look like the memoir veelo style.
+% \begin{macrocode}
+\chapterstyle{veelo}
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc Settings}
+%
+% Finally, we do set the sort option for the bibliography to anyt (biblatex)
+% \begin{macrocode}
+\ExecuteBibliographyOptions{sorting=anyt}
+% \end{macrocode}
+%
+% There is no code for \cmd{\AtBeginDocument} and \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skbbook>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{The Class skbbeamer}
+%
+% This class is an example on how to use the \skbacft{A3DS:SKB} with memoir. I use skbbeamer
+% for my beamer presentations. Using this class as a template, one can easily write other
+% classes or change/overwrite the settings done here.
+%
+% First, we announce the package and the font definition file and process the options.
+% \begin{macrocode}
+%<*skbbeamer>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skbbeamer}[2011/06/03 The SKB Beamer class v0.52]
+\DeclareOption{beameranim}{\PassOptionsToPackage{\CurrentOption}{skb}}
+\DeclareOption{beamernoanim}{\PassOptionsToPackage{\CurrentOption}{skb}}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% Now we load the xcolor package and then the beamer class. That should load the x11names some
+% of the \skbacft{A3DS:SKB} listing styles use while not creating any clash between the packages beamer and xcolor.
+% \begin{macrocode}
+\RequirePackage[x11names]{xcolor}
+\LoadClass[x11names]{beamer}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphanumeric, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to none, not needed here.
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=none,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the acronym package and print only the acronyms actually used in the document.
+% This might move into the \skbacft{A3DS:SKB} package later
+% \begin{macrocode}
+\RequirePackage[printonlyused]{acronym}
+% \end{macrocode}
+%
+% Load a view packages that I tend to use quite often:
+% \begin{skbnotelist}
+% \item etoolbox - etoolbox
+% \item comment - Add comments to your \LaTeX~files
+% \item graphicx - Enhanced graphic support, with key/value interface for include graphics
+% \item longtable - Helps with tables that span multiple pages
+% \item colortbl - Allows coloured cells in tables
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{etoolbox,comment,graphicx,longtable,colortbl}
+% \end{macrocode}
+%
+% And some more packages needed quite often:
+% \begin{skbnotelist}
+% \item textcomp - Special characters, such as \textregistered~and \textcopyright
+% \item gensymb - Generic characters (math and text mode), such as \degree, \celsius, \perthousand, \micro~and \ohm
+% \item wasysym - Adds characters from \textit{wasy} font, such as \smiley, \XBox~and \rightturn
+% \item units - Typeset units correctly (and produce 'nice' fractions), such as \unitfrac[10]{m}{s} and \nicefrac[\texttt]{1}{2}
+% \item float - Improves interface for floating environments (such as figures, tables)
+% \item xmpmulti - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{textcomp,gensymb,wasysym,units,xmpmulti,float}
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc Settings}
+%
+% And some default settings for the dirtree package.
+% \begin{macrocode}
+\renewcommand*\DTstylecomment{\itshape\sffamily\color{blue}\scriptsize}
+\setlength{\DTbaselineskip}{10pt}
+\DTsetlength{0.2em}{1em}{0.2em}{0.4pt}{1.6pt}
+\renewcommand*\DTstyle{\scriptsize\ttfamily\textcolor{black}}
+% \end{macrocode}
+%
+% There is no code for \cmd{\AtBeginDocument} and \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skbbeamer>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{The Class skblncsbeamer}
+%
+% This class is an example on how to use the \skbacft{A3DS:SKB} with memoir. I use skblncsbeamer
+% for my beamer based handouts. Using this class as a template, one can easily write other
+% classes or change/overwrite the settings done here.
+%
+% First, we announce the package and the font definition file.
+% \begin{macrocode}
+%<*skblncsbeamer>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skblncsbeamer}[2011/06/03 The SKB LNCS Beamer class v0.52]
+% \end{macrocode}
+%
+% Just in case there is no \cmd{\titlepage} declared, the beamerarticle wants that.
+% \begin{macrocode}
+\providecommand{\titlepage}{}
+% \end{macrocode}
+%
+% Now we load the memoir class with the following options:
+% \begin{skbnotelist}
+% \item 9pt - for 9 point font size
+% \item a4paper - I am European, so A4 paper makes sense here
+% \item extrafontsizes - tbd
+% \item twoside - I want my articles to be set with different even/odd pages
+% \item onecolumn - I don't necessarily like 2-columns for my articles
+% \item openright - tbd
+% \item article - use memoir as if it is an article
+% \item x11names - this option will be forwarded to the xcolor/graphics packages
+% \end{skbnotelist}
+% \begin{macrocode}
+\LoadClass[9pt,a4paper,extrafontsizes,twoside,onecolumn,openright,article,x11names]{memoir}
+% \end{macrocode}
+%
+% For Beamer handouts, we need the beamerarticle package to load the frame thumbnails.
+% \begin{macrocode}
+\RequirePackage{beamerarticle,pgf}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphanumeric, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to none, not needed here.
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=none,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the acronym package and print only the acronyms actually used in the document.
+% This might move into the \skbacft{A3DS:SKB} package later.
+% \begin{macrocode}
+\RequirePackage[printonlyused]{acronym}
+% \end{macrocode}
+%
+% Load a view packages that I tend to use quite often:
+% \begin{skbnotelist}
+% \item etoolbox - etoolbox
+% \item comment - Add comments to your \LaTeX~files
+% \item graphicx - Enhanced graphic support, with key/value interface for include graphics
+% \item longtable - Helps with tables that span multiple pages
+% \item colortbl - Allows coloured cells in tables
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{etoolbox,comment,graphicx,longtable,colortbl}
+% \end{macrocode}
+%
+% And some more packages needed quite often:
+% \begin{skbnotelist}
+% \item textcomp - Special characters, such as \textregistered~and \textcopyright
+% \item gensymb - Generic characters (math and text mode), such as \degree, \celsius, \perthousand, \micro~and \ohm
+% \item wasysym - Adds characters from \textit{wasy} font, such as \smiley, \XBox~and \rightturn
+% \item units - Typeset units correctly (and produce 'nice' fractions), such as \unitfrac[10]{m}{s} and \nicefrac[\texttt]{1}{2}
+% \item float - Improves interface for floating environments (such as figures, tables)
+% \item xmpmulti - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{textcomp,gensymb,wasysym,units,xmpmulti}
+% \end{macrocode}
+%
+%
+% \subsubsection{Memoir Options}
+%
+% Not sure, but I don't think semi-iso-pages are good. So not used right now.
+% \begin{macrocode}
+%\semiisopage
+% \end{macrocode}
+%
+% We do want to list files.
+% \begin{macrocode}
+\listfiles
+% \end{macrocode}
+%
+% Change the margins for even and odd pages. Odd to 0cm and even to 1cm.
+% \begin{macrocode}
+\setlength{\oddsidemargin}{0cm}
+\setlength{\evensidemargin}{0cm}
+% \end{macrocode}
+%
+% Set width and height for the text. Width to 15cm and height to 24.5cm.
+% \begin{macrocode}
+\setlength{\textwidth}{15cm}
+\setlength{\textheight}{24.5cm}
+% \end{macrocode}
+%
+% Get half a centimeter back from the topmargin.
+% \begin{macrocode}
+\setlength{\topmargin}{-1.5cm}
+% \end{macrocode}
+%
+% Don't use chapter numbers in sections, thus making them looking like sections
+% in a classic article (1 instead of the default 0.1)
+% \begin{macrocode}
+\def\thesection{\arabic{section}}
+% \end{macrocode}
+%
+% Allow table of contents to go up to sub-sections
+% \begin{macrocode}
+\settocdepth{subsection}
+% \end{macrocode}
+%
+% And numbering up to subsubsections
+% \begin{macrocode}
+\setsecnumdepth{subsubsection}
+% \end{macrocode}
+%
+% Set the head styles to komalike (the other nice style is memman).
+% \begin{macrocode}
+\headstyles{komalike}
+% \end{macrocode}
+%
+% For lists, memoir provides different layouts. We use tightlists here, but can
+% switch that to firmlists if needed
+% \begin{macrocode}
+\tightlists
+%\firmlists
+% \end{macrocode}
+%
+% What are these for? I forgot...
+% \begin{macrocode}
+\midsloppy
+\raggedbottom
+% \end{macrocode}
+%
+% Set parindent to 0pt and parskip to 0.2pt.
+% \begin{macrocode}
+\parindent0pt
+\setlength{\parskip}{0.2cm}
+% \end{macrocode}
+%
+% \subsubsection{Misc Settings}
+%
+% Do an index.
+% \begin{macrocode}
+\makeindex
+% \end{macrocode}
+%
+% Before we start with the actual document, we want the title slide and
+% the table of contents on the first page.
+% \begin{macrocode}
+\AtBeginDocument{
+ \resizebox{\textwidth}{!}{\includeslide{title}}
+ \bigskip
+ \tableofcontents*
+ \bigskip
+ \newpage
+}
+% \end{macrocode}
+%
+% There is no code for \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skblncsbeamer>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{The Class skblncsppt}
+%
+% This class is an example on how to use the \skbacft{A3DS:SKB} with memoir. I use skblncsppt
+% for handouts (anotated slides) based on Microsoft's PPT. Reason for that is
+% that the \skbacft{ISO:PDF} export and print routines in Microsoft Office 2010 no longer
+% support vector images for the slide thumbnails, which renders handouts almost
+% useless. So I do print the PPT slides into \skbacft{ISO:PDF} (screen resolution, that way one
+% avoids frames around the slides), and then \LaTeX~to generate handouts.
+% Using this class as
+% a template, one can easily write other
+% classes or change/overwrite the settings done here.
+%
+% First, we announce the package and the font definition file.
+% \begin{macrocode}
+%<*skblncsppt>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skblncsppt}[2011/06/03 The SKB LNCS PPT class v0.52]
+% \end{macrocode}
+%
+% Now we load the memoir class with the following options:
+% \begin{skbnotelist}
+% \item 9pt - for 9 point font size
+% \item a4paper - I am European, so A4 paper makes sense here
+% \item extrafontsizes - tbd
+% \item twoside - I want my articles to be set with different even/odd pages
+% \item onecolumn - I don't necessarily like 2-columns for my articles
+% \item openright - tbd
+% \item article - use memoir as if it is an article
+% \end{skbnotelist}
+% \begin{macrocode}
+\LoadClass[9pt,a4paper,extrafontsizes,twoside,onecolumn,openright,article]{memoir}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphanumeric, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to none, not needed here.
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=none,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the acronym package and print only the acronyms actually used in the document.
+% This might move into the \skbacft{A3DS:SKB} package later.
+% \begin{macrocode}
+\RequirePackage[printonlyused]{acronym}
+% \end{macrocode}
+%
+% Load a view packages that I tend to use quite often:
+% \begin{skbnotelist}
+% \item etoolbox - etoolbox
+% \item comment - Add comments to your \LaTeX~files
+% \item graphicx - Enhanced graphic support, with key/value interface for include graphics
+% \item longtable - Helps with tables that span multiple pages
+% \item colortbl - Allows coloured cells in tables
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{etoolbox,comment,graphicx,longtable,colortbl}
+% \end{macrocode}
+%
+% And some more packages needed quite often:
+% \begin{skbnotelist}
+% \item textcomp - Special characters, such as \textregistered~and \textcopyright
+% \item gensymb - Generic characters (math and text mode), such as \degree, \celsius, \perthousand, \micro~and \ohm
+% \item wasysym - Adds characters from \textit{wasy} font, such as \smiley, \XBox~and \rightturn
+% \item units - Typeset units correctly (and produce 'nice' fractions), such as \unitfrac[10]{m}{s} and \nicefrac[\texttt]{1}{2}
+% \item float - Improves interface for floating environments (such as figures, tables)
+% \item xmpmulti - tbd
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage{textcomp,gensymb,wasysym,units,xmpmulti,float}
+% \end{macrocode}
+%
+% The xcolor package provides driver independent access to all sorts of colour tins,
+% shades, tones and mixes. I like x11names, as you can tell.
+% \begin{macrocode}
+\RequirePackage[x11names]{xcolor}
+% \end{macrocode}
+%
+% The hyperref package provides layout for hyper references, such as URLs and references within a document,
+% such as acronyms, citations and the table of contents. We use the option colorlings and then provide
+% the colors we prefer for links (linkcolor), citations (citecolor) and URLs (urlcolor).
+% \begin{macrocode}
+\RequirePackage[colorlinks,%
+ linkcolor=Brown4,%
+ citecolor=SeaGreen4,%
+ urlcolor=RoyalBlue3%
+ ]{hyperref}
+%\RequirePackage[colorlinks,linkcolor=blue]{hyperref}
+% \end{macrocode}
+%
+%
+% \subsubsection{Memoir Options}
+%
+% Not sure, but I don't think semi-iso-pages are good. So not used right now.
+% \begin{macrocode}
+%\semiisopage
+% \end{macrocode}
+%
+% We do want to list files.
+% \begin{macrocode}
+\listfiles
+% \end{macrocode}
+%
+% Change the margins for even and odd pages. Odd to 0cm and even to 1cm.
+% \begin{macrocode}
+\setlength{\oddsidemargin}{0cm}
+\setlength{\evensidemargin}{0cm}
+% \end{macrocode}
+%
+% Set width and height for the text. Width to 15cm and height to 24.5cm.
+% \begin{macrocode}
+\setlength{\textwidth}{15cm}
+\setlength{\textheight}{24.5cm}
+% \end{macrocode}
+%
+% Get half a centimeter back from the topmargin.
+% \begin{macrocode}
+\setlength{\topmargin}{-1.5cm}
+% \end{macrocode}
+%
+% Don't use chapter numbers in sections, thus making them looking like sections
+% in a classic article (1 instead of the default 0.1)
+% \begin{macrocode}
+\def\thesection{\arabic{section}}
+% \end{macrocode}
+%
+% Allow table of contents to go up to sub-sections
+% \begin{macrocode}
+\settocdepth{subsection}
+% \end{macrocode}
+%
+% And numbering up to subsubsections
+% \begin{macrocode}
+\setsecnumdepth{subsubsection}
+% \end{macrocode}
+%
+% Set the head styles to komalike (the other nice style is memman).
+% \begin{macrocode}
+\headstyles{komalike}
+% \end{macrocode}
+%
+% For lists, memoir provides different layouts. We use tightlists here, but can
+% switch that to firmlists if needed
+% \begin{macrocode}
+\tightlists
+%\firmlists
+% \end{macrocode}
+%
+% What are these for? I forgot...
+% \begin{macrocode}
+\midsloppy
+\raggedbottom
+% \end{macrocode}
+%
+% We want ruled pages and arabic page numbering.
+% \begin{macrocode}
+\pagestyle{ruled}
+\pagenumbering{arabic}
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc Settings}
+%
+% Do an index.
+% \begin{macrocode}
+\makeindex
+% \end{macrocode}
+%
+% There is no code for \cmd{\AtBeginDocument} and \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skblncsppt>
+% \end{macrocode}
+%
+%
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{The Class skbmoderncv}
+%
+% This class integrates the moderncv package into the \skbacft{A3DS:SKB}. I use moderncv
+% for my own CV and with the \skbacft{A3DS:SKB} I am able to maintain all information while
+% producing different documents (i.e. one for a research proposal, for my website, for journals, etc.).
+% This class provides some macros using biblatex to create several lists of publications, i.e. a different
+% list for articles, proceedings, conference papers per year, etc.
+%
+% First, we announce the package and the font definition file and process the options.
+% \begin{macrocode}
+%<*skbmoderncv>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{skbmoderncv}[2011/06/03 The SKB Modern CV class v0.52]
+% \end{macrocode}
+%
+% Now we load the moderncv package. By default we use an 11 point font and A4 paper. Once can change these
+% settings later in a CV document.
+% \begin{macrocode}
+\LoadClass[11pt,a4paper]{moderncv}
+% \end{macrocode}
+%
+% Load the \skbacft{A3DS:SKB}.
+% \begin{macrocode}
+\RequirePackage{skb}
+% \end{macrocode}
+%
+%
+% \subsubsection{Loaded Packages}
+%
+% I prefer BibLaTeX over plain \BibTeX, and other parts of the \skbacft{A3DS:SKB} (such as the \skbacft{LAMP}
+% server) produce BibLaTeX. The options are:
+% \begin{skbnotelist}
+% \item style - is set to alphabetic, much better to find/remember references.
+% If writing for IEEE or LNCS, numeric would be the prefered option.
+% \item sorting - is set to ynt, year first, then author name then title.
+% \item bibstyle - is set to standard, which means there are no labels (we set labels as enumerate list later).
+% \item hyperref - I want to have hyperef with my citations
+% \end{skbnotelist}
+% \begin{macrocode}
+\RequirePackage[style=alphabetic,sorting=ynt,bibstyle=standard,hyperref]{biblatex}
+% \end{macrocode}
+%
+% Load the eurofont package for the Euro sign.
+% \begin{macrocode}
+\RequirePackage{eurofont}
+% \end{macrocode}
+%
+% Load the enumitem package, which is used later to change indents on the enumerate list for publication references.
+% \begin{macrocode}
+\RequirePackage{enumitem}
+% \end{macrocode}
+%
+% Load the xcolor and hyperref packages to allow painting URLs in publication references.
+% \begin{macrocode}
+\RequirePackage[x11names]{xcolor}
+\RequirePackage[colorlinks,%
+ linkcolor=Brown4,%
+ citecolor=SeaGreen4,%
+ urlcolor=RoyalBlue3,%
+ pdftex
+ ]{hyperref}
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc Settings}
+%
+% Configure moderncv to use the classic layout.
+% \begin{macrocode}
+\moderncvtheme{classic}
+% \end{macrocode}
+%
+% Some definitions for list symbols.
+% \begin{macrocode}
+\newcommand{\up}[1]{\ensuremath{^\textrm{\scriptsize#1}}}
+\renewcommand{\listitemsymbol}{\textendash}
+% \end{macrocode}
+%
+% Define a new heading for BibLaTeX doing nothing, we want to set headings manually in the CV.
+% \begin{macrocode}
+\defbibheading{None}{}
+% \end{macrocode}
+%
+% \subsection{Macros}
+%
+% \DescribeMacro{\skbcvrefplain}
+% This macro prints a list of references without any labels. It expects a list of citation references, and empty list is valid and
+% and will result in an empty reference list. The macro defines a new environment for the BibTeX list adding an indent to the list
+% using moderncv counters. \cmd{\hintscolumnwidth} is the left column of an entry and \cmd{\separatorcolumnwidth} is the middle column
+% providing a spacer between left and right.
+%
+% With the new environment defined, the macro then opens a new refsgment (BibLaTeX) to group all references without impacting the overall
+% reference list. It uses \cmd{\nocite} to mark all references as being used without printing them, and then \cmd{\printbibliography} for
+% printing the list. The options here are:
+% \begin{skbnotelist}
+% \item heading - refers to the new heading we have defined earlier, called None.
+% \item segment - points to the current refsegment, so only references used here will be part of the list.
+% \item maxnames - the maximum names shown per entry, we want to see as many as possible.
+% \item minnames - the minimum names shown per entry, we want to see as many as possible.
+% \end{skbnotelist}
+% \begin{macrocode}
+\newcommand{\skbcvrefplain}[1]{%
+ \defbibenvironment{bibliography}
+ {\list{}{%
+ \setlength{\parindent}{\hintscolumnwidth}
+ \addtolength{\parindent}{\separatorcolumnwidth}
+ \leftmargin\parindent
+ \setlength{\parindent}{0pt}
+ \itemindent\parindent
+ \itemsep\bibitemsep
+ \parsep\bibparsep
+ }}
+ {\endlist}
+ {\item}
+
+ \begin{refsegment}
+ \nocite{#1}
+ \printbibliography[heading=None,segment=\therefsegment,maxnames=20,minnames=20]
+ \end{refsegment}
+}
+% \end{macrocode}
+%
+% \DescribeMacro{\skbcvrefenum}
+% This macro prints a list of references as an enumerated list, which helps to see how many entries a list has and also makes it
+% easier to read the list in the final CV. It expects a list of citation references, and empty list is valid and
+% and will result in an empty reference list. The macro defines a new environment for the BibTeX list using an enumerate environment, which
+% was of course alreadt changed loading the enumitem package. First, we calculate the length for \cmd{\parindent} by setting it to \cmd{hintscolumnwidth},
+% addint \cmd{separatorcolumnwidth} and finally adding another 1pt to it. This will make the items of the enumeration list appear within the left column of
+% the CV. We then apply a few options to the enumerate environment:
+% \begin{skbnotelist}
+% \item leftmargin - set to the newly calculate \cmd{\parindent}.
+% \item labelsep - set to the spacer defined in moderncv \cmd{\separatorcolumnwidth}.
+% \item label - set to use arabic numbers without any trailing full stop.
+% \item noitemsep - no vertical separation between items, we want a small list.
+% \item topsep - finally add a top separator for the items of 1pt.
+% \end{skbnotelist}
+% To reset \cmd{\parindent}, we set it back to 0pt once the enumerate environment is closed.
+%
+% With the new environment defined, the macro then opens a new refsgment (BibLaTeX) to group all references without impacting the overall
+% reference list. It uses \cmd{\nocite} to mark all references as being used without printing them, and then \cmd{\printbibliography} for
+% printing the list. The options here are:
+% \begin{skbnotelist}
+% \item heading - refers to the new heading we have defined earlier, called None.
+% \item segment - points to the current refsegment, so only references used here will be part of the list.
+% \item maxnames - the maximum names shown per entry, we want to see as many as possible.
+% \item minnames - the minimum names shown per entry, we want to see as many as possible.
+% \end{skbnotelist}
+% \begin{macrocode}
+\newcommand{\skbcvrefenum}[1]{%
+ \defbibenvironment{bibliography}
+ {\setlength{\parindent}{\hintscolumnwidth}
+ \addtolength{\parindent}{\separatorcolumnwidth}
+ \addtolength{\parindent}{1pt}
+ \begin{enumerate}[leftmargin=\parindent,labelsep=\separatorcolumnwidth,label*=\arabic*,noitemsep,topsep=1pt]{%
+ }}
+ {\end{enumerate}%
+ \setlength{\parindent}{0pt}
+ }
+ {\item}
+
+ \begin{refsegment}
+ \nocite{#1}
+ \printbibliography[heading=None,segment=\therefsegment,maxnames=20,minnames=20]
+ \end{refsegment}
+}
+% \end{macrocode}
+%
+%
+% There is no code for \cmd{\AtBeginDocument} and \cmd{\AtEndDocument}, so we are done now.
+% \begin{macrocode}
+%</skbmoderncv>
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%^^A \skbinput[from=rep,level=section]{history}
+%
+%\section{History and Change Log}
+%
+%\subsection{v0.10 from 06-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item first source forge release of the skb
+% \item at this stage a collection of .sty and .tex files
+% \item documentation in a separate pdf file
+% \item included acronym list
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.20 from 08-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item first \LaTeX~package version of the skb
+% \item no changes in the documentation and no change in commands
+% \item removed acronym list
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.30 from 14-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item First dtx release of the skb, including the package and all classes introduced in v0.2
+% \item Integrated parts of the v0.1 pdf as documentation and added documentation for many commands (not finished though)
+% \item Re-write of all load commands (publish, repository, figures, acronyms, bib) and rename of all old load commands, new command names use only lowercases in their names
+% \item In rewrite, many commands could be removed w/o losing their functionality
+% \item New Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbfigure} -- load figures with some options
+% \item \lstinline[basicstyle=\ttfamily]{\skbinput} -- load files with some options
+% \item \lstinline[basicstyle=\ttfamily]{\skbheading} -- set heading text in a file loaded
+% \item \lstinline[basicstyle=\ttfamily]{\skbheadingudc} -- set heading relatively to the last heading level (up, down, current) (experimental)
+% \item \lstinline[basicstyle=\ttfamily]{\skbem} -- emphasise code using options
+% \item \lstinline[basicstyle=\ttfamily]{\skbacft} -- rename of \lstinline[basicstyle=\ttfamily]{\SkbAcFT}
+% \item \lstinline[basicstyle=\ttfamily]{\skbacronyms} -- rename of \lstinline[basicstyle=\ttfamily]{\SkbLoadAcronyms}
+% \item \lstinline[basicstyle=\ttfamily]{\skbbibtex} -- rename of \lstinline[basicstyle=\ttfamily]{\SkbLoadBibtex}
+% \item environment \lstinline[basicstyle=\ttfamily]{skbnotelist} -- itemize list with \lstinline[basicstyle=\ttfamily]{\parskip 0} and \lstinline[basicstyle=\ttfamily]{\itemskip 0}
+% \item environment \lstinline[basicstyle=\ttfamily]{skbnoteenum} -- enumerate list with \lstinline[basicstyle=\ttfamily]{\parskip 0} and \lstinline[basicstyle=\ttfamily]{\itemskip 0}
+% \end{skbnotelist}
+% \item Replaced Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbSetTitle} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbheading}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbFigure} $\mapsto$ removed, closest is \lstinline[basicstyle=\ttfamily]{\skbfigure} (but changed behaviour!)
+% \item \lstinline[basicstyle=\ttfamily]{\listingInline} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbem[code]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbEmIT} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbem[italic]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbEmBF} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbem[bold]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbAcFT} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbacft}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadAcronyms} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbacronyms}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadBibtex} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbbibtex}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadRepository} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbinput[from=rep]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadPublish} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbinput[from=pub]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbItemizeBegin} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbItemizeEnd} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\end{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbEnumerateBegin} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\begin{skbnoteenum}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbEnumerateEnd} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\end{skbnoteenum}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbFigureBeamerTextWidth} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbfigure[width=##]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbFigureBeamerTextHeight} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbfigure[height=##]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbFigureBeamerNoResize} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbfigure[]}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbFigureBeamerTextWidthPDFMulti} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbfigure[multiinclude=##]}
+% \end{skbnotelist}
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.31 from 20-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item fixed space problem in \cmd{\skbem}
+% \item added error handling to the options skbconfig and skbheading
+% \item added error handling for skbinput related macros
+% \item separated documentation, skb.dtx is now using itself to create the documentation
+% \item removed old code: DeclareOptions (none declared)
+% \item changed a lot in the documentation
+% \item prepare for CTAN submission, i.e. adding README and other things
+%
+% \item New Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbconfig} -- change the path/file options
+% \item \lstinline[basicstyle=\ttfamily]{\skbsubject} -- add subject information for PDF
+% \item \lstinline[basicstyle=\ttfamily]{\subkeywords} -- add keyword information for PDF
+% \item \lstinline[basicstyle=\ttfamily]{\skbpdfinfo} -- generate PDF information
+% \end{skbnotelist}
+%
+% \item Changed Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbfigure} -- added option for position, moved caption/label from argument to option
+% \item \lstinline[basicstyle=\ttfamily]{\title} -- re-newed to store PDF info information (experimental)
+% \item \lstinline[basicstyle=\ttfamily]{\author} -- re-newed to store PDF info information (experimental)
+% \end{skbnotelist}
+%
+% \item Replaced Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbCodeInline} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbcode}
+% \end{skbnotelist}
+%
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.32 from 20-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item fastest re-release, I had built-in some problems and excluded important code in v0.31, fixed now
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.4 from 21-Jul-2010}
+%
+%\begin{skbnotelist}
+% \item major re-write of the kernel subsequently the documentation. Most internal macros will have been
+% changed or removed, some are added. Also re-arranged the macros in the dtx file to (hopefully)
+% optimise the documentation
+% \item added input for skb.cfg and skblocal.cfg to overwrite package options with configuration files
+% \item added skb.cfg to the distribution
+%
+% \item New Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbpathroot} -- returns current root path
+% \item \lstinline[basicstyle=\ttfamily]{\skbfileroot} -- returns root/\#1
+% \item \lstinline[basicstyle=\ttfamily]{\skbfileacr} -- returns current acronym path and file
+% \item \lstinline[basicstyle=\ttfamily]{\skbfilebib} -- returns current bibtex path and file
+% \item \lstinline[basicstyle=\ttfamily]{\skbpathbib} -- returns current bibtex path
+% \item \lstinline[basicstyle=\ttfamily]{\skbfilerep} -- returns rep/\#1
+% \item \lstinline[basicstyle=\ttfamily]{\skbfilepub} -- returns pub/\#1
+% \item \lstinline[basicstyle=\ttfamily]{\skbfilefig} -- returns fig/\#1
+% \item \lstinline[basicstyle=\ttfamily]{\skbfilesli} -- returns sli/\#1
+% \item \lstinline[basicstyle=\ttfamily]{\skboptionsused} -- prints a warning with change log of otptions and current values
+% \end{skbnotelist}
+%
+% \item Changed Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbconfig} -- added parameter to identify origin of the configuration change
+% \end{skbnotelist}
+%
+% \item Replaced Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbPathBib} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbpathbib}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbPathFig} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbfilefig}
+% \end{skbnotelist}
+%
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.5 from 04-Aug-2010}
+%
+%\begin{skbnotelist}
+% \item this is the first version on CTAN: http://www.ctan.org/tex-archive/macros/latex/contrib/skb/
+% \item added example describing how the SKB uses itself to create parts of its documentation
+% \item removed the redefinition of \cmd{\title} and \cmd{\author}, since they intererred with the beamer package definitions of these macros.
+% added \cmd{\skbtitle} and \cmd{\skbauthor} instead.
+% \item added RequiredPackage in the class skbbeamer before loading beamer to load xcolors with x11names
+% \item added test for nemoir class: if loaded, then skbnotelist and skbnoteenum will have no effect; if not loaded, then the package
+% booktabs will be loaded (for top/mid/bottomrule
+% \item added test for beamer package: depending if beamer or beamerarticle are loaded, the SKB will initialise a few newe ifs
+% \item added required package dirtree, and redefinition of some dirtree styles
+% \item added two options to the SKB package: beameranim and beamernoanim
+% \item added the package versions with the environments: skbmodetext, skbmodenote and skbmodeslide
+% \item added the package optional with the options: text, note, slide, anim and noanim
+% \item internally, the package optional also provides memoir
+% \item changed the documentation, moved manual description to user guide in folder /doc, moved history.tex into the dtx file and
+% changed most of the actual documentation (still not finished though)
+% \item skbbeamer: corrected load of beamer package
+% \item skblncsbeamer: moved load of skb after beamerarticle to allow skb to create proper options
+% \item added \cmd{\providecommand} for \cmd{DescribeMacro} and \cmd{\cmd}, so that we can use the user-guide in the dtx and stand-alone
+% \item added conditional load of skb.dtx in the driver
+% \item changed the sequence of definitions in the dtx file, again, hopefully the last time
+%
+% \item Bug Fixes (SF=sourceforge):
+% \begin{skbnotelist}
+% \item SF\#3032749 (skboptionsused doesn't work) -- fixed, changed \lstinline[basicstyle=\ttfamily]{\skb@setCfgVars}
+% \item SF\#3032752 (history section for v0.4 has wrong date) -- fixed, changed the heading
+% \item SF\#3032754 (skb.cfg missing/empty) -- fixed, changed the installer (skb.ins) to generate it and my local scripts to put it into /run
+% \item SF\#3033124 (renewcommand title/author doesn't work) -- fixed, no renewcommand anymore, two new commands to set author/title for pdfinfo
+% \item SF\#3038935 (skbinput not working w/o from) -- fixed, can load from root directory now
+% \end{skbnotelist}
+%
+% \item New Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbtitle} -- title for PDF info
+% \item \lstinline[basicstyle=\ttfamily]{\skbauthor} -- author for PDF info
+% \item \lstinline[basicstyle=\ttfamily]{\skbslide} -- load slides and annotations
+% \item \lstinline[basicstyle=\ttfamily]{\skbslidecite} -- for citations on slide annotation pages
+% \end{skbnotelist}
+%
+% \item Changed Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\skbinput} -- added option to load tex files from figures directory (option fig)
+% \end{skbnotelist}
+%
+% \item Replaced Commands:
+% \begin{skbnotelist}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadSlideNotes} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslide} with option annotate and first argument only
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadSlideNotesDifferent} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslide} with option annotate and both arguments
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadSlideNotesExtern} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslide} with option annotate and both arguments and option notefrom set
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadSlideNotes} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslide} without annotate and first argument only
+% \item \lstinline[basicstyle=\ttfamily]{\SkbLoadSlideOnlyNotes} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslide} with option annotate and second argument only
+% \item \lstinline[basicstyle=\ttfamily]{\SkbSlideSource} $\mapsto$ replaced by \lstinline[basicstyle=\ttfamily]{\skbslidecite}
+% \item \lstinline[basicstyle=\ttfamily]{\SkbBeamerAnimtrue} $\mapsto$ replaced by options beameranim and beamernoanim for skbbeamer
+% \item \lstinline[basicstyle=\ttfamily]{\SkbBeamerAnimtrue} $\mapsto$ usage of this if replaced by \cmd{\opt} with anim and noanim
+% \end{skbnotelist}
+%
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.51 from 12-May-2011}
+%
+%\begin{skbnotelist}
+% \item worked on the documentation, lots of changes
+% \item fixed a typo in skb.cfg, which made the bibliography file unloadable
+% \item changed linkcolor from AntiqueWhite4 to Brown4
+% \item added acronym database (short version of the automatically generated) and acronym handling in the documentation
+% \item removed \cmd{\SKB}, appropriately it's now an acronym rather than a special type setting
+% \item added bibtex load to the documentation
+% \item removed call to \cmd{\skbbibtex} from class files, users need to call that now manually. reason is that otherwise
+% configuration changes for bib/bibfile have no effect
+% \item changed load mechanism for the user guide, due to bibtex load problems
+% \item changed the two skbnote environments (list/enum), removed unnecessary temp storage
+% \item changed default acronym file name to acronyms, note the added 's'
+% \item added skbmoderncv class using the moderncv package and adding some macros for reference lists using biblatex
+%\end{skbnotelist}
+%
+%
+%\subsection{v0.52 from 03-Jun-2011}
+%
+%\begin{skbnotelist}
+% \item changed directory and package structure to be CTAN conform
+% \item re-worked README to reflect new package structure, and added information on generating files from the source
+%\end{skbnotelist}
+%
+%
+%
+%
+%\section*{Acronyms}
+% \skbacronyms
+%
+%\printbibliography
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+% \Finale
+\endinput
+%
+%% \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+ \ No newline at end of file