939 lines
30 KiB
TeX
939 lines
30 KiB
TeX
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{ifiseries}
|
|
\RequirePackage{kvoptions}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Options and their defaults
|
|
|
|
\DeclareBoolOption[false]{legacytexlive} % for the ancient TeX Live shipped with Ubuntu
|
|
\DeclareBoolOption[false]{natbib}
|
|
\DeclareBoolOption[false]{babelbib}
|
|
\DeclareBoolOption[true]{biblatex}
|
|
\DeclareStringOption[sort,numbers]{natbibOptions}
|
|
\DeclareStringOption[alphabetic]{biblatexstyle}
|
|
\DeclareStringOption[maxcitenames=4,maxbibnames=10,babel=other]{biblatexOptions}
|
|
\DeclareStringOption[]{bibresource}
|
|
\DeclareStringOption[ngerman,english]{babelOptions}
|
|
\DeclareStringOption[]{variorefOptions}
|
|
\DeclareStringOption[linesnumbered,ruled,vlined]{algorithmOptions}
|
|
\DeclareStringOption[alphaurl]{bibliographystyle} % only for bibtex, not biblatex
|
|
\DeclareStringOption[utf8]{inputencOptions}
|
|
\DeclareBoolOption[true]{tikz}
|
|
\DeclareBoolOption[true]{algorithmForwardCompatibility}
|
|
\DeclareBoolOption[true]{algorithmBackwardCompatibility}
|
|
\DeclareStringOption[smaller,nohyperlinks,printonlyused]{acronymOptions}
|
|
\DeclareStringOption[caption=false,font=footnotesize]{subfigOptions}
|
|
\DeclareStringOption[]{theorems}
|
|
\DeclareStringOption[Bibliography]{refname}
|
|
\DeclareStringOption[black]{hypercolor}
|
|
\DeclareBoolOption[false]{dottednumbers}
|
|
\DeclareStringOption[english]{language}
|
|
\DeclareBoolOption[true]{runningtitle}
|
|
|
|
\DeclareBoolOption[true]{layout}
|
|
\DeclareBoolOption[true]{pagelayout}
|
|
\DeclareStringOption[ustrade]{paper}
|
|
\DeclareStringOption[]{paperwidth}
|
|
\DeclareStringOption[]{paperheight}
|
|
\DeclareStringOption[0mm]{bindingoffset}
|
|
\DeclareStringOption[.25]{halfparskipfill}
|
|
\DeclareBoolOption[false]{halfparskip}
|
|
\DeclareStringOption[Palatino]{font}
|
|
\DeclareStringOption[12]{marginfrac}
|
|
\DeclareStringOption[floatrow]{figure}
|
|
\DeclareStringOption[]{compact}
|
|
\DeclareStringOption[1.5]{headsepmult}
|
|
\DeclareStringOption[3]{footskipmult}
|
|
\DeclareBoolOption[false]{leftmarkright}
|
|
\if@twoside
|
|
\DeclareBoolOption[false]{hcenter}
|
|
\else
|
|
\DeclareBoolOption[true]{hcenter}
|
|
\fi
|
|
\@ifclassloaded{book}%
|
|
{\DeclareStringOption[section]{theoremswithin}}%
|
|
{\DeclareStringOption[subsection]{theoremswithin}}
|
|
|
|
\DeclareBoolOption[false]{largepaper}
|
|
|
|
\ProcessKeyvalOptions*
|
|
|
|
\RequirePackage{etoolbox}
|
|
\RequirePackage{xifthen}
|
|
\RequirePackage{expl3}
|
|
|
|
\ifthenelse{\boolean{ifiseries@legacytexlive}}{% FIXME why can't i use \ififiseries@legacytexlive?
|
|
\let\ifiseries@natbibtrue\@undefined%
|
|
\let\ifiseries@natbibfalse\@undefined%
|
|
\let\ififiseries@natbib\@undefined%
|
|
\let\ifiseries@biblatextrue\@undefined%
|
|
\let\ifiseries@biblatexfalse\@undefined%
|
|
\let\ififiseries@biblatex\@undefined%
|
|
\DeclareBoolOption[true]{natbib}%
|
|
\DeclareBoolOption[false]{biblatex}%
|
|
}{}
|
|
|
|
\ififiseries@largepaper
|
|
\let\ifiseries@marginfrac\@undefined%
|
|
\let\ifiseries@headsepmult\@undefined%
|
|
\let\ifiseries@footskipmult\@undefined%
|
|
\DeclareStringOption[9]{marginfrac}%
|
|
\DeclareStringOption[2]{headsepmult}%
|
|
\DeclareStringOption[3.5]{footskipmult}%
|
|
\fi
|
|
|
|
\ExplSyntaxOn
|
|
% TeX Live 2009 (still shipped with Ubuntu in 2012) does not provide the 'onn' version.
|
|
% So we have to use a little trick to get the argument expanded.
|
|
% This will occur frequently in this code.
|
|
\newcommand{\ifiseries@temp}[1]{
|
|
\prg_case_str:nnn{#1}{
|
|
{english} {\relax}
|
|
{german} {
|
|
\let\ifiseries@babelOptions\@undefined%
|
|
\let\ifiseries@variorefOptions\@undefined%
|
|
\let\ifiseries@refname\@undefined%
|
|
\let\ifiseries@dottednumberstrue\@undefined%
|
|
\let\ifiseries@dottednumbersfalse\@undefined%
|
|
\let\ififiseries@dottednumbers\@undefined%
|
|
\DeclareStringOption[english,ngerman]{babelOptions}%
|
|
\DeclareStringOption[ngerman]{variorefOptions}%
|
|
\DeclareStringOption[Bibliografie]{refname}%
|
|
\DeclareBoolOption[true]{dottednumbers}%
|
|
\ifthenelse{\boolean{ifiseries@legacytexlive}}{%
|
|
\let\ifiseries@babelbibtrue\@undefined%
|
|
\let\ifiseries@babelbibfalse\@undefined%
|
|
\let\ififiseries@babelbib\@undefined%
|
|
\let\ifiseries@bibliographystyle\@undefined%
|
|
\DeclareBoolOption[true]{babelbib}%
|
|
\DeclareStringOption[babalpha]{bibliographystyle}%
|
|
}{}
|
|
}
|
|
}{\PackageError{ifiseries}{Unsupported~language:~#1}\@ehc}}
|
|
\ExplSyntaxOff
|
|
\expandafter\ifiseries@temp\expandafter{\ifiseries@language}
|
|
|
|
\ProcessKeyvalOptions*
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Packages with no or minimal influence on the main layout
|
|
|
|
\RequirePackage{etex}
|
|
\RequirePackage[\ifiseries@inputencOptions]{inputenc}
|
|
\RequirePackage[T1]{fontenc}
|
|
\@ifclassloaded{beamer}{}{\RequirePackage[rgb,svgnames]{xcolor}}
|
|
\RequirePackage[\ifiseries@babelOptions]{babel}
|
|
|
|
\RequirePackage{amsmath}
|
|
\RequirePackage[matha]{mathabx}
|
|
\RequirePackage{amssymb}
|
|
\RequirePackage{amsfonts}
|
|
\RequirePackage{amstext}
|
|
\RequirePackage{mathtools}
|
|
\RequirePackage{nicefrac}
|
|
\RequirePackage{graphicx}
|
|
\RequirePackage{grffile}
|
|
\RequirePackage{eso-pic}
|
|
\RequirePackage{listings}
|
|
\RequirePackage{booktabs}
|
|
\RequirePackage{multicol}
|
|
\RequirePackage{multirow}
|
|
\RequirePackage[autolanguage]{numprint}
|
|
\RequirePackage{units}
|
|
\RequirePackage[babel=true]{csquotes}
|
|
\ififiseries@natbib\RequirePackage[\ifiseries@natbibOptions]{natbib}\fi
|
|
\ififiseries@babelbib\RequirePackage{babelbib}\fi
|
|
\ififiseries@biblatex
|
|
\RequirePackage[style=\ifiseries@biblatexstyle,\ifiseries@biblatexOptions]{biblatex}%
|
|
\ifdefempty{\ifiseries@bibresource}{}{\addbibresource{\ifiseries@bibresource}}%
|
|
\DeclareFieldFormat[article,unpublished,inproceedings]{realtitlecase}{\MakeSentenceCase*{#1}}%
|
|
%% cf. texmf-dist/tex/latex/biblatex/biblatex.def
|
|
\renewbibmacro*{title}{%
|
|
\ifboolexpr{
|
|
test {\iffieldundef{title}}
|
|
and
|
|
test {\iffieldundef{subtitle}}
|
|
}
|
|
{}
|
|
{\printtext[title]{%
|
|
\printfield[realtitlecase]{title}%
|
|
\setunit{\subtitlepunct}%
|
|
\printfield[realtitlecase]{subtitle}}%
|
|
\newunit}%
|
|
\printfield{titleaddon}}%
|
|
%%
|
|
\else
|
|
\bibliographystyle{\ifiseries@bibliographystyle}%
|
|
\RequirePackage{bibentry}%
|
|
\fi
|
|
\RequirePackage[\ifiseries@variorefOptions]{varioref}
|
|
\RequirePackage{url}
|
|
\RequirePackage{dsfont}
|
|
\RequirePackage{bbding}
|
|
\RequirePackage{pifont}
|
|
\RequirePackage{calc}
|
|
\RequirePackage{blindtext}
|
|
\RequirePackage{setspace}
|
|
\RequirePackage{relsize}
|
|
\RequirePackage[\ifiseries@algorithmOptions]{algorithm2e}
|
|
\ififiseries@algorithmForwardCompatibility
|
|
\ifthenelse{\isundefined{\DontPrintSemicolon}}{\newcommand*{\DontPrintSemicolon}{\dontprintsemicolon}}{}
|
|
\ifthenelse{\isundefined{\SetAlgoVlined}}{\newcommand*{\SetAlgoVlined}{\SetVline}}{}
|
|
\ifthenelse{\isundefined{\SetAlgoNoLine}}{\newcommand*{\SetAlgoNoLine}{\SetNoline}}{}
|
|
\fi
|
|
\ififiseries@algorithmBackwardCompatibility
|
|
\ifthenelse{\isundefined{\RestyleAlgo}}{\let\RestyleAlgo\restylealgo}
|
|
\fi
|
|
\RequirePackage[compatibility=false]{caption} % compatibility switched off for hyperref
|
|
\RequirePackage{bookmark}
|
|
\RequirePackage{hyperref}
|
|
\hypersetup{%
|
|
final=true,%
|
|
colorlinks=true,%
|
|
linkcolor=\ifiseries@hypercolor,%
|
|
citecolor=\ifiseries@hypercolor,%
|
|
urlcolor=\ifiseries@hypercolor,%
|
|
}
|
|
\RequirePackage[strict]{changepage}
|
|
\ififiseries@tikz
|
|
\RequirePackage{tikz}
|
|
\usetikzlibrary{positioning}
|
|
\usetikzlibrary{arrows}
|
|
\usetikzlibrary{shapes}
|
|
\usetikzlibrary{shadows}
|
|
\usetikzlibrary{decorations.text}
|
|
\usetikzlibrary{decorations.markings}
|
|
\usetikzlibrary{decorations.pathmorphing}
|
|
\usetikzlibrary{petri}
|
|
\usetikzlibrary{shapes.symbols}
|
|
\usetikzlibrary{shapes.arrows}
|
|
\usetikzlibrary{decorations}
|
|
\usetikzlibrary{decorations.pathreplacing}
|
|
\usetikzlibrary{decorations.shapes}
|
|
\usetikzlibrary{calc}
|
|
\usetikzlibrary{chains}
|
|
\usetikzlibrary{patterns}
|
|
\usetikzlibrary{matrix}
|
|
\usetikzlibrary{backgrounds}
|
|
\usetikzlibrary{mindmap}
|
|
\usetikzlibrary{topaths}
|
|
\usetikzlibrary{automata}
|
|
\fi
|
|
\RequirePackage{microtype}
|
|
\RequirePackage{enumitem} %%% add 'inline' option once it is supported everywhere
|
|
\newlist{compactitemize}{itemize}{3}
|
|
\setlist[compactitemize]{label=\raisebox{.1em}{\smaller\textbullet}}
|
|
\newlist{compactenumerate}{enumerate}{2}
|
|
\setlist[compactenumerate]{label=\arabic*.}
|
|
\newlist{compactdescription}{description}{3}
|
|
\RequirePackage{placeins}
|
|
|
|
\ExplSyntaxOn
|
|
\renewcommand{\ifiseries@temp}[1]{
|
|
\prg_case_str:nnn{#1}{
|
|
{} {\relax}
|
|
{floatrow} {\RequirePackage{floatrow}\DeclareCaptionSubType[alph]{figure}}
|
|
{subfig} {\RequirePackage[\ifiseries@subfigOptions]{subfig}\RequirePackage{sidecap}\sidecaptionvpos{figure}{t}}
|
|
}{\PackageError{ifiseries}{Unknown~figure~system:~#1}\@ehc}}
|
|
\expandafter\ifiseries@temp\expandafter{\ifiseries@figure}
|
|
\ExplSyntaxOff
|
|
|
|
\RequirePackage[\ifiseries@acronymOptions]{acronym}
|
|
\RequirePackage{xspace}
|
|
\RequirePackage{hyphenat}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Useful commands
|
|
|
|
%% Remove margins for screen viewing.
|
|
%% This command is used by the code below if 'compact' is set.
|
|
%% It is the same as the '\nomargin' command in 'localKit'.
|
|
\newcommand*{\nomargin}{
|
|
\setlength{\oddsidemargin}{.02\textwidth-1in}
|
|
\setlength{\evensidemargin}{.02\textwidth-1in}
|
|
\setlength{\paperwidth}{1.04\textwidth}
|
|
\setlength{\paperheight}{\headheight+\headsep+\textheight+\footskip}
|
|
\setlength{\paperheight}{1.04\paperheight}
|
|
\setlength{\topmargin}{.02\paperheight-1in}
|
|
}
|
|
|
|
%% Abbreviations
|
|
\newcommand*{\abbrdot}{\protect\@ifnextchar.{}{.\@\xspace}}
|
|
\newcommand*{\abbrcomma}{\protect\@ifnextchar,{}{,\xspace}}
|
|
\newcommand*{\eg}{e.\@\,g.\@\abbrcomma}
|
|
\newcommand*{\ie}{i.\@\,e.\@\abbrcomma}
|
|
\newcommand*{\cf}{cf.\@\abbrcomma}
|
|
\newcommand*{\Eg}{E.\@\,g.\@\abbrcomma}
|
|
\newcommand*{\Ie}{I.\@\,e.\@\abbrcomma}
|
|
\newcommand*{\Cf}{Cf.\@\abbrcomma}
|
|
\newcommand*{\etal}{et~al\abbrdot}
|
|
\newcommand*{\etc}{etc\abbrdot}
|
|
\newcommand*{\vs}{vs\abbrdot}
|
|
\newcommand*{\Wlg}{W.l.o.g\abbrdot}
|
|
\newcommand*{\wlg}{w.l.o.g\abbrdot}
|
|
\newcommand*{\OBdA}{O.B.d.A\abbrdot}
|
|
\newcommand*{\oBdA}{o.B.d.A\abbrdot}
|
|
\newcommand*{\wrt}{w.r.t.\@\xspace}
|
|
\newcommand*{\rv}{r.v.\@\xspace}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Theorems. If 'theorems' is empty, nothing happens here.
|
|
|
|
\ExplSyntaxOn
|
|
\renewcommand{\ifiseries@temp}[1]{
|
|
\prg_case_str:nnn{#1}{
|
|
{} {\relax}
|
|
{numbersfirst} {
|
|
\ififiseries@dottednumbers% FIXME how can I pass through boolean options?
|
|
\RequirePackage[within=\ifiseries@theoremswithin,likeequations,language=\ifiseries@language,dottednumbers=true]{localTheorem}%
|
|
\else%
|
|
\RequirePackage[within=\ifiseries@theoremswithin,likeequations,language=\ifiseries@language,dottednumbers=false]{localTheorem}%
|
|
\fi%
|
|
\let\@subsection\subsection%
|
|
\renewcommand*\subsection{\@ifnextchar*{\@subsection}{\@subsection*}}%
|
|
\let\@subsubsection\subsubsection%
|
|
\renewcommand*\subsubsection{\@ifnextchar*{\@subsubsection}{\@subsubsection*}}%
|
|
}
|
|
{numberslast} {
|
|
\ififiseries@dottednumbers%
|
|
\RequirePackage[numbersfirst=false,language=\ifiseries@language,dottednumbers=true]{localTheorem}%
|
|
\else%
|
|
\RequirePackage[numbersfirst=false,language=\ifiseries@language,dottednumbers=false]{localTheorem}%
|
|
\fi%
|
|
}
|
|
}{\PackageError{ifiseries}{Unknown~theorem~system:~#1}\@ehc}}
|
|
\ExplSyntaxOff
|
|
\expandafter\ifiseries@temp\expandafter{\ifiseries@theorems}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Packages and settings with influence on the main layout
|
|
|
|
\ififiseries@layout
|
|
|
|
\newcommand*{\ifiseries@titlefontfamily}{}
|
|
\newcommand*{\ifiseries@sectionfontweight}{\bfseries}
|
|
\newcommand*{\ifiseries@chapterfontweight}{\bfseries}
|
|
|
|
%% Font and linespread.
|
|
\ExplSyntaxOn
|
|
\renewcommand{\ifiseries@temp}[1]{
|
|
\prg_case_str:nnn{#1}{
|
|
{} {\relax}
|
|
{Bera} {
|
|
\RequirePackage[scaled]{beraserif}%
|
|
\RequirePackage[scaled=.90]{berasans}%
|
|
\RequirePackage[scaled=.90]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{Charter} { %% sometimes problem: "Too many math alphabets used in version normal."
|
|
\usepackage[bitstream-charter]{mathdesign}%
|
|
\RequirePackage[scaled]{berasans}%
|
|
\RequirePackage[scaled]{beramono}%
|
|
\RequirePackage{eucal}%
|
|
\linespread{1.05}%
|
|
}
|
|
{ConcreteEuler} {
|
|
\RequirePackage{lmodern}%
|
|
\RequirePackage[boldsans]{concmath}%
|
|
\RequirePackage{eulervm}%
|
|
\RequirePackage[scaled=.84]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{DejaVu} {
|
|
\RequirePackage[scaled]{DejaVuSerif}
|
|
\RequirePackage{eulervm}
|
|
\RequirePackage[scaled=.95]{beramono}
|
|
\linespread{1.10}
|
|
}
|
|
{DejaVuCondensed} {
|
|
\RequirePackage[scaled]{DejaVuSerifCondensed}
|
|
\RequirePackage{eulervm}
|
|
\RequirePackage[scaled=.95]{beramono}
|
|
\linespread{1.10}
|
|
}
|
|
{Kerkis} { %% some problems in math mode, e.g., tildas extend into symbols
|
|
\usepackage{kmath,kerkis}%
|
|
\let\openbox\@undefined%
|
|
\RequirePackage[scaled=.81]{berasans}%
|
|
\RequirePackage[scaled=.81]{beramono}%
|
|
\renewcommand*{\bfdefault}{sb}%
|
|
\linespread{1.10}%
|
|
}
|
|
{KP} {
|
|
\RequirePackage{kpfonts}%
|
|
\linespread{1.05}%
|
|
}
|
|
{LatinModern} {
|
|
\RequirePackage{lmodern}%
|
|
\RequirePackage[scaled=.80]{beramono}%
|
|
\let\@bfseries\bfseries%
|
|
\renewcommand*{\bfseries}{\sffamily\@bfseries\fontseries{sbc}\selectfont}%
|
|
\linespread{1.05}%
|
|
}
|
|
{NewCenturySchoolbook} {
|
|
\RequirePackage{fouriernc}%
|
|
\RequirePackage[scaled=.85]{beramono}%
|
|
\linespread{1.10}%
|
|
}
|
|
{Palatino} {
|
|
\RequirePackage[sc]{mathpazo}%
|
|
\@ifclassloaded{beamer}{%
|
|
\RequirePackage[scaled=.90]{helvet}%
|
|
\RequirePackage[scaled=.80]{beramono}%
|
|
}{%
|
|
\RequirePackage[scaled=.80]{berasans}%
|
|
\RequirePackage[scaled=.80]{beramono}%
|
|
}%
|
|
\linespread{1.05}%
|
|
}
|
|
{Schola} {
|
|
\RequirePackage{fouriernc}% only for the math
|
|
\RequirePackage{tgschola}%
|
|
\RequirePackage[scaled=.88]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{Times} {
|
|
\RequirePackage{eucal}%
|
|
\RequirePackage{mathptmx}%
|
|
\RequirePackage[scaled=.87]{helvet}%
|
|
\RequirePackage[scaled=.82]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{Termes} {
|
|
\RequirePackage{tgtermes}%
|
|
\RequirePackage[scaled=.86]{berasans}%
|
|
\RequirePackage[scaled=.86]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{TX} {
|
|
\RequirePackage{txfonts}%
|
|
\RequirePackage[scaled=.86]{berasans}%
|
|
\RequirePackage[scaled=.86]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
{Utopia} {
|
|
\RequirePackage[widespace]{fourier}%
|
|
\RequirePackage{eucal}%
|
|
\RequirePackage[scaled=.82]{berasans}%
|
|
\RequirePackage[scaled=.82]{beramono}%
|
|
\linespread{1.05}%
|
|
}
|
|
}{\PackageError{ifiseries}{Unknown~font:~#1}\@ehc}}
|
|
\ExplSyntaxOff
|
|
\expandafter\ifiseries@temp\expandafter{\ifiseries@font}
|
|
|
|
%% \prg_case_str cannot occur inside an argument.
|
|
%% So we have to prepare several commands here to be called later
|
|
%% inside the \@ifclassloaded.
|
|
\ExplSyntaxOn
|
|
%
|
|
\newcommand{\ifiseries@temp@paper}[1]{
|
|
\prg_case_str:nnn{#1} {
|
|
{} {\relax}
|
|
{ustrade} {\geometry{paperwidth=15.24cm, paperheight=22.86cm}}
|
|
{15522} {\geometry{paperwidth=15.50cm, paperheight=22.00cm}}
|
|
{royal} {\geometry{paperwidth=15.57cm, paperheight=23.39cm}}
|
|
{crownquarto} {\geometry{paperwidth=18.91cm, paperheight=24.589cm}}
|
|
}{\geometry{paper=\ifiseries@paper}}}
|
|
%
|
|
\newcommand{\ifiseries@temp@compact}[1]{
|
|
\prg_case_str:nnn{#1}{
|
|
{} {\relax}
|
|
{moderate} {
|
|
\setlength{\headsep}{.5\baselineskip}%
|
|
\setlength{\footskip}{\baselineskip}%
|
|
\nomargin%
|
|
}
|
|
{strong} {
|
|
%% This does the same as the '\ebook' command in 'localKit'.
|
|
\fancyhf{}%
|
|
\fancyfoot[R]{\thepage}%
|
|
\fancypagestyle{plain}{\fancyhf{}\fancyfoot[R]{\thepage}}%
|
|
\setlength{\headsep}{0pt}%
|
|
\setlength{\headheight}{0pt}%
|
|
%\setlength{\topskip}{0pt}% affects height of textblock in ways difficult to determine!
|
|
\setlength{\footskip}{1.5\baselineskip}%
|
|
\setlength{\oddsidemargin}{.02\textwidth-1in}%
|
|
\setlength{\evensidemargin}{.02\textwidth-1in}%
|
|
\setlength{\paperwidth}{1.04\textwidth}%
|
|
\setlength{\paperheight}{\textheight+\footskip}%
|
|
\setlength{\topmargin}{.005\paperheight-1in}% CHANGE
|
|
\setlength{\paperheight}{1.02\paperheight}%
|
|
}
|
|
}{\PackageError{ifiseries}{Unknown~compact~system:~#1}\@ehc}}
|
|
\ExplSyntaxOff
|
|
%% End of preparations.
|
|
|
|
\@ifclassloaded{beamer}{}{%
|
|
%% Page layout.
|
|
\ififiseries@pagelayout
|
|
\RequirePackage{geometry}
|
|
\expandafter\ifiseries@temp@paper\expandafter{\ifiseries@paper}
|
|
\ifdefempty{\ifiseries@paperheight}{}{\ifdefempty{\ifiseries@paperwidth}{}%
|
|
{\geometry{paperwidth=\ifiseries@paperwidth,paperheight=\ifiseries@paperheight}}}
|
|
%
|
|
\ifthenelse
|
|
{\equal{\@ptsize}{1}}
|
|
{\setlength{\headheight}{13.59999pt}}
|
|
{}
|
|
%
|
|
\ififiseries@hcenter
|
|
\geometry{%
|
|
bindingoffset=\ifiseries@bindingoffset, %
|
|
heightrounded, %
|
|
headsep=\ifiseries@headsepmult\baselineskip, %
|
|
footskip=\ifiseries@footskipmult\baselineskip, %
|
|
left=3\paperwidth/(2*\ifiseries@marginfrac), hmarginratio=1:1, %
|
|
includehead, top=\paperheight/\ifiseries@marginfrac, vmarginratio=1:2}
|
|
\else
|
|
\geometry{%
|
|
bindingoffset=\ifiseries@bindingoffset, %
|
|
heightrounded, %
|
|
headsep=\ifiseries@headsepmult\baselineskip, %
|
|
footskip=\ifiseries@footskipmult\baselineskip, %
|
|
left=\paperwidth/\ifiseries@marginfrac, hmarginratio=1:2, %
|
|
includehead, top=\paperheight/\ifiseries@marginfrac, vmarginratio=1:2}
|
|
\fi
|
|
\fi % pagelayout
|
|
|
|
%% Folios and running titles (and others, see below).
|
|
\ififiseries@leftmarkright\let\rightmark\leftmark\fi
|
|
\RequirePackage{fancyhdr}
|
|
\pagestyle{fancy}
|
|
\fancyhf{}
|
|
\@ifclassloaded{book}{%
|
|
\let\@frontmatter\frontmatter
|
|
\renewcommand*{\frontmatter}{\@frontmatter\renewcommand*{\chaptermark}[1]{\markboth{##1}{##1}}}
|
|
\let\@mainmatter\mainmatter
|
|
\renewcommand*{\mainmatter}{\@mainmatter\renewcommand*{\chaptermark}[1]{\markboth{\thechapter. \ ##1}{}}}
|
|
\let\@backmatter\backmatter
|
|
\renewcommand*{\backmatter}{\@backmatter\bookmarksetup{startatroot}}
|
|
\let\@appendix\appendix
|
|
\renewcommand*{\appendix}{\bookmarksetup{startatroot}\@appendix}
|
|
\fancyhead[LE]{\nouppercase{\leftmark}}
|
|
}{ %%% else ifclassloaded book
|
|
\ififiseries@runningtitle\fancyhead[LE]{\nouppercase{\rightmark}}\fi
|
|
} %%% end ifclassloaded book
|
|
\ififiseries@runningtitle\fancyhead[RO]{\nouppercase{\rightmark}}\fi
|
|
\fancyfoot[RO]{\thepage}
|
|
\fancyfoot[LE]{\thepage}
|
|
\renewcommand*{\headrulewidth}{0pt}
|
|
\fancypagestyle{plain}{\fancyhf{}\fancyfoot[LE]{\thepage}\fancyfoot[RO]{\thepage}}
|
|
|
|
%% Compact system: reduce margins.
|
|
\expandafter\ifiseries@temp@compact\expandafter{\ifiseries@compact}
|
|
|
|
%% Empty clearpages (i.e., pages left blank before a chapter start).
|
|
\renewcommand*{\cleardoublepage}{%
|
|
\clearpage
|
|
\if@twoside
|
|
\ifodd
|
|
\c@page
|
|
\else
|
|
\thispagestyle{empty}
|
|
\hbox{}
|
|
\newpage
|
|
\if@twocolumn
|
|
\hbox{}
|
|
\newpage
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}
|
|
|
|
%% Section headings.
|
|
\RequirePackage{sectsty}
|
|
\sectionfont{\normalfont\Large\ifiseries@sectionfontweight\ifiseries@titlefontfamily}
|
|
\subsectionfont{\normalfont\large\ifiseries@sectionfontweight\ifiseries@titlefontfamily}
|
|
\subsubsectionfont{\normalfont\normalsize\ifiseries@sectionfontweight\ifiseries@titlefontfamily}
|
|
\ififiseries@dottednumbers
|
|
\def\@seccntformat#1{\csname the#1\endcsname.\quad}
|
|
\def\@subseccntformat#1{\csname the#1\endcsname.\quad}
|
|
\def\@subsubseccntformat#1{\csname the#1\endcsname.\quad}
|
|
\fi
|
|
|
|
%% Part title page (package 'sectsty' must be loaded first).
|
|
\newenvironment{centerpage}%
|
|
{\begin{adjustwidth*}%
|
|
{(\paperwidth-\textwidth)/2-1in-\oddsidemargin+\ifiseries@bindingoffset}%
|
|
{(\paperwidth-\textwidth)/2-1in-\evensidemargin}%
|
|
\centering}%
|
|
{\end{adjustwidth*}}
|
|
\newcommand*{\typesetpart}[1]{{%
|
|
\begin{centerpage}
|
|
\null
|
|
\vspace{.20\textheight}
|
|
\interlinepenalty \@M
|
|
\normalfont
|
|
\ifnum \c@secnumdepth >-2\relax
|
|
\LARGE\sc\bfseries\ifiseries@titlefontfamily \partname\nobreakspace\thepart
|
|
\par\normalsize\normalfont
|
|
\vskip 20\p@
|
|
\fi
|
|
\Huge \bfseries \ifiseries@titlefontfamily #1\par
|
|
\end{centerpage}
|
|
}}
|
|
\renewcommand*{\part}{%
|
|
\if@openright
|
|
\FloatBarrier
|
|
\newpage\thispagestyle{empty}\hbox{}
|
|
\cleardoublepage
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\thispagestyle{empty}%
|
|
\if@twocolumn
|
|
\onecolumn
|
|
\@tempswatrue
|
|
\else
|
|
\@tempswafalse
|
|
\fi
|
|
\secdef\@part\@spart%
|
|
}
|
|
\renewcommand*{\@part}[2][]{%
|
|
\ifnum \c@secnumdepth >-2\relax
|
|
\refstepcounter{part}%
|
|
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
|
|
\else
|
|
\addcontentsline{toc}{part}{#1}%
|
|
\fi
|
|
\markboth{}{}%
|
|
\typesetpart{#2}%
|
|
\@endpart%
|
|
}
|
|
|
|
%% Chapter titles
|
|
%% cf. texlive/2011/texmf-dist/tex/latex/base/book.cls
|
|
\@ifclassloaded{book}{%
|
|
\renewcommand*{\@makechapterhead}[1]{%
|
|
%\vspace*{20\p@}%
|
|
{\parindent \z@ \flushright \normalfont
|
|
\ifnum \c@secnumdepth >\m@ne
|
|
\if@mainmatter
|
|
\large\sc\ifiseries@chapterfontweight\ifiseries@titlefontfamily \@chapapp\space \thechapter
|
|
\par\normalsize\normalfont\nobreak
|
|
\vskip 20\p@
|
|
\fi
|
|
\fi
|
|
\interlinepenalty\@M
|
|
\huge \ifiseries@chapterfontweight \ifiseries@titlefontfamily #1\par\nobreak
|
|
\vskip 50\p@
|
|
}}
|
|
\renewcommand*{\@makeschapterhead}[1]{%
|
|
%\vspace*{50\p@}%
|
|
{\parindent \z@ \flushright
|
|
\normalfont
|
|
\interlinepenalty\@M
|
|
{\huge\bfseries #1\par\nobreak}
|
|
\vskip 50\p@
|
|
}}
|
|
}{} %%% end ifclassloaded book
|
|
} %%% end ifclassloaded not beamer
|
|
|
|
%% Bibliography.
|
|
\@ifclassloaded{book}{%
|
|
\newcommand*{\preparebibliography}{%
|
|
\renewcommand*{\refname}{\ifiseries@refname}%
|
|
\cleardoublepage
|
|
\phantomsection
|
|
\addcontentsline{toc}{chapter}{\refname}
|
|
}%
|
|
\newcommand*{\tocbibliography}{%
|
|
\preparebibliography%
|
|
\ififiseries@biblatex\printbibliography\else\bibliography{\ifiseries@bibresource}\fi}}{%
|
|
\newcommand*{\preparebibliography}{%
|
|
\renewcommand*{\refname}{\ifiseries@refname}%
|
|
\phantomsection
|
|
\addcontentsline{toc}{section}{\refname}
|
|
}%
|
|
\newcommand*{\tocbibliography}{%
|
|
\preparebibliography%
|
|
\ififiseries@biblatex\printbibliography\else\bibliography{\ifiseries@bibresource}\fi}}
|
|
|
|
%% For multiple authors.
|
|
\newcommand*{\andauthor}{\\[.5\baselineskip]}
|
|
|
|
%% Command to create generic cover pages.
|
|
\ifthenelse{\equal{\ifiseries@compact}{}}{\newcommand*{\ifiseries@titlepagetopskip}{}}%
|
|
{\newcommand*{\ifiseries@titlepagetopskip}{\vspace*{5ex}}}
|
|
\newcommand{\gentitlepage}[4]{%
|
|
\newpage
|
|
\thispagestyle{empty}
|
|
\begin{centerpage}
|
|
\ifiseries@titlepagetopskip%
|
|
\Huge #1\\
|
|
\normalsize\vspace{5ex}
|
|
\Large \ifthenelse{\equal{#2}{}}{\mbox{ }}{#2}\\
|
|
\normalsize\vspace{5ex}
|
|
\Large #3\\
|
|
\normalsize\vfill
|
|
#4
|
|
\end{centerpage}}
|
|
|
|
%% Command to create the cover page for dissertations.
|
|
\newcommand{\disstitlepage}[5]{%
|
|
\gentitlepage{#1}{#2}{#3}{%
|
|
Dissertation\\
|
|
zur Erlangung des akademischen Grades\\
|
|
%
|
|
\ifstrequal{#4}{nat}{%
|
|
Doktor der Naturwissenschaften\\%
|
|
(Dr.~rer.~nat.)\\%
|
|
}{\ifstrequal{#4}{ing}{%
|
|
Doktor der Ingenieurwissenschaften\\%
|
|
(Dr.-Ing.)\\%
|
|
}{}}%
|
|
%
|
|
der Technischen Fakult\"at\\
|
|
der Christian-Albrechts-Universit\"at zu Kiel\\
|
|
eingereicht im Jahr #5}}
|
|
|
|
%% Command to create the cover page for student's thesis.
|
|
\newcommand{\studtitlepage}[7]{%
|
|
\gentitlepage{#1}{#2}{#3}{%
|
|
#4\\
|
|
eingereicht im Jahr #5\\
|
|
\vspace{1ex}
|
|
Christian-Albrechts-Universit\"at zu Kiel\\
|
|
#6\\
|
|
\vspace{1ex}
|
|
Betreut durch: #7}}
|
|
|
|
%% Command to create the reviewer page for dissertations.
|
|
\newcommand{\dissreviewerpage}[4]{%
|
|
\newpage
|
|
\thispagestyle{plain}
|
|
\vspace*{.5\textheight}
|
|
\noindent
|
|
\begin{tabular}{@{}p{.20\textwidth}@{\hspace{.05\textwidth}}p{.75\textwidth}@{}}
|
|
1.~Gutachter: & \ifthenelse{\equal{#1}{_}}{\rule{12em}{.3pt}}{#1} \\[1em]
|
|
2.~Gutachter: & \ifthenelse{\equal{#2}{_}}{\rule{12em}{.3pt}}{#2}
|
|
\ifthenelse{\equal{#3}{}}{}{\\[1em] 3.~Gutachter: & \ifthenelse{\equal{#3}{_}}{\rule{12em}{.3pt}}{#3}}
|
|
\end{tabular}
|
|
\par
|
|
\vspace*{2em}
|
|
\noindent
|
|
Datum der m\"undlichen Pr\"ufung:~\ifthenelse{\equal{#4}{_}}{\rule{12em}{.3pt}}{#4}}
|
|
|
|
%% Eidesstattliche Erklaerung
|
|
\newcommand*{\eidesstatt}{%
|
|
\newpage
|
|
\thispagestyle{plain}
|
|
\hskip 0mm
|
|
\vfill
|
|
\noindent
|
|
\begin{otherlanguage}{ngerman}
|
|
\textbf{Eidesstattliche Erkl{\"a}rung}\par
|
|
\bigskip\noindent Hiermit erkl{\"a}re ich an Eides statt, dass
|
|
ich die vorliegende Arbeit selbst\-st{\"a}n\-dig verfasst und keine
|
|
anderen als die angegebenen Quellen und Hilfsmittel verwendet habe.\par
|
|
\bigskip\noindent Kiel,
|
|
\vskip 10mm
|
|
\hfill\rule{18em}{.3pt}%
|
|
\end{otherlanguage}}
|
|
|
|
%% Command to create a page with meta data.
|
|
\newcommand{\metapage}[7]{%
|
|
\newpage%
|
|
\thispagestyle{plain}%
|
|
\footnotesize%
|
|
\mbox{}\vfill%
|
|
\begin{itemize}[label=]%
|
|
\item Kiel Computer Science Series (KCSS) #1%
|
|
\item
|
|
ISSN 2193-6781 (print version)\\
|
|
ISSN 2194-6639 (electronic version)
|
|
\item Electronic version, updates, errata available via
|
|
\url{https://www.informatik.uni-kiel.de/kcss}
|
|
\ifthenelse{\equal{#2}{}}{}{\item The author can be contacted via #2}%
|
|
\item Published by the Department of Computer Science, Christian-Albrechts-Universit\"at zu Kiel%
|
|
\item #3%
|
|
\item Please cite as:%
|
|
\begin{itemize}%
|
|
\item #4%
|
|
\end{itemize}%
|
|
\item \lstinputlisting[%
|
|
nolol=true,frame=none,numbers=none,language={},style={},keywordsprefix={},basicstyle=\tt,%
|
|
aboveskip=\medskipamount,belowskip=\medskipamount,lineskip=0pt,boxpos=c,print=true,%
|
|
showlines=false,gobble=0,tabsize=8,showtabs=false,showspaces=false,%
|
|
linewidth=\linewidth,xleftmargin=0pt,xrightmargin=0pt,resetmargins=false,breaklines=false,%
|
|
columns={[c]fixed},flexiblecolumns=false,keepspaces=false,basewidth={0.6em,0.45em},fontadjust=false,%
|
|
mathescape=false,escapechar={},escapeinside={},%
|
|
]{#5}%
|
|
\item \textcopyright\ #6%
|
|
\ifthenelse{\equal{#7}{}}{}{\item #7}%
|
|
\end{itemize}%
|
|
\normalsize}
|
|
|
|
%% Paragraph skip instead of paragraph indentation.
|
|
\ififiseries@halfparskip
|
|
\setlength{\parskip}{.5\baselineskip plus .5\baselineskip}
|
|
\setlength{\parindent}{0em}
|
|
\setlength{\parfillskip}{\ifiseries@halfparskipfill\textwidth plus 1fil}
|
|
\fi
|
|
|
|
%% Enumeration environments.
|
|
%
|
|
\ififiseries@halfparskip
|
|
%
|
|
% For halfparskip, we set topsep to 0 everywhere.
|
|
% This seems to be necessary to prevent excessive whitespace.
|
|
%
|
|
\setitemize{leftmargin=*, label=$\triangleright$, topsep=0em}
|
|
\setenumerate{leftmargin=*, topsep=0em}
|
|
\setdescription{leftmargin=\parindent, style=sameline, font=\it, topsep=0em}
|
|
\setlist[compactitemize]{%
|
|
label=\raisebox{.1em}{\smaller\textbullet},%
|
|
leftmargin=*,%
|
|
topsep=.0em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
\setlist[compactitemize,2,3]{%
|
|
topsep=.0em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
%
|
|
\setlist[compactenumerate]{%
|
|
label=\arabic*.,%
|
|
leftmargin=*,%
|
|
topsep=.0em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
% FIXME: third level does not work for compactenumerate
|
|
\setlist[compactenumerate,2]{%
|
|
label=(\alph*),%
|
|
topsep=.0em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
%
|
|
\setlist[compactdescription]{%
|
|
style=sameline,%
|
|
font=\it,%
|
|
leftmargin=\parindent,%
|
|
topsep=.0em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
\setlist[compactdescription,2,3]{%
|
|
topsep=.0em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
\else
|
|
%
|
|
% Settings for non-halfparskip (the normal settings).
|
|
%
|
|
\@ifclassloaded{beamer}{\setitemize{leftmargin=*,%
|
|
label={\usebeamercolor[fg]{itemize item}%
|
|
\scriptsize\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}}%
|
|
\setenumerate{leftmargin=*}%
|
|
\setdescription{font={\normalfont\usebeamercolor[fg]{itemize item}}}}%
|
|
{\setitemize{leftmargin=*, label=$\triangleright$}%
|
|
\setenumerate{leftmargin=*}%
|
|
\setdescription{leftmargin=\parindent, style=sameline, font=\it}}
|
|
\setlist[compactitemize]{%
|
|
label=\raisebox{.1em}{\smaller\textbullet},%
|
|
leftmargin=*,%
|
|
topsep=.4em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
\setlist[compactitemize,2,3]{%
|
|
topsep=.1em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
%
|
|
\setlist[compactenumerate]{%
|
|
label=\arabic*.,%
|
|
leftmargin=*,%
|
|
topsep=.4em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
\setlist[compactenumerate,2,3]{%
|
|
topsep=.1em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
%
|
|
\setlist[compactdescription]{%
|
|
style=sameline,%
|
|
font=\it,%
|
|
leftmargin=\parindent,%
|
|
topsep=.4em plus .1em,%
|
|
parsep=.2em plus .1em,%
|
|
itemsep=.2em plus .1em,%
|
|
}
|
|
\setlist[compactdescription,2,3]{%
|
|
topsep=.1em,%
|
|
partopsep=.1em,%
|
|
parsep=.1em,%
|
|
itemsep=.1em,%
|
|
}
|
|
\fi
|
|
|
|
%% Figures and captions.
|
|
\captionsetup{font=small,labelfont=bf,labelsep=period}
|
|
\ifdefstring{\ifiseries@figure}{floatrow}{%
|
|
\captionsetup[subfigure]{labelformat=parens,labelsep=space}%
|
|
\floatsetup[table]{style=plaintop}%
|
|
\floatsetup[figure]{capbesideposition={center,inside},facing=yes}}{}
|
|
% Alter some defaults for better treatment of figures.
|
|
% Taken from http://mintaka.sdsu.edu/GF/bibliog/latex/floats.html
|
|
% See also p.105 of "TeX Unbound" for suggested values.
|
|
% General parameters, for ALL pages:
|
|
\renewcommand*{\topfraction}{0.9} % max fraction of floats at top
|
|
\renewcommand*{\bottomfraction}{0.8} % max fraction of floats at bottom
|
|
% Parameters for TEXT pages (not float pages):
|
|
\setcounter{topnumber}{2}
|
|
\setcounter{bottomnumber}{2}
|
|
\setcounter{totalnumber}{4} % 2 may work better
|
|
\setcounter{dbltopnumber}{2} % for 2-column pages
|
|
\renewcommand*{\dbltopfraction}{0.9} % fit big float above 2-col. text
|
|
\renewcommand*{\textfraction}{0.07} % allow minimal text w. figs
|
|
% Parameters for FLOAT pages (not text pages):
|
|
\renewcommand*{\floatpagefraction}{0.7} % require fuller float pages
|
|
% N.B.: floatpagefraction MUST be less than topfraction
|
|
\renewcommand*{\dblfloatpagefraction}{0.7} % require fuller float pages
|
|
|
|
%% Hyperref's \autoref feature.
|
|
\@ifclassloaded{beamer}{}{%
|
|
\providecommand{\subfigureautorefname}{\figureautorefname}
|
|
% \extrasenglish seem to be invoked twice, so need \renew.. there, hence all \...refname must be defined
|
|
\ifthenelse{\isundefined{\algorithmautorefname}}{\newcommand*{\algorithmautorefname}{Algorithm}}{}
|
|
\addto\extrasenglish{
|
|
\renewcommand*{\chapterautorefname}{Chapter}
|
|
\renewcommand*{\sectionautorefname}{Section}
|
|
\renewcommand*{\subsectionautorefname}{Section}
|
|
\renewcommand*{\algorithmautorefname}{Algorithm}}
|
|
} %%% end ifclassloaded not beamer
|
|
|
|
%% Configure listings package.
|
|
\lstset{basicstyle=\tt}
|
|
|
|
%% Configure the url package, and adjust \href command.
|
|
\ifthenelse{\isundefined{\DeclareUrlCommand}}{\renewcommand*{\path}[1]{\url{#1}}}{\DeclareUrlCommand\path{}} %%% workaround
|
|
\renewcommand*{\UrlFont}{\smaller\tt}
|
|
\let\@href\href
|
|
\renewcommand*{\href}[3][]{\@href[#1]{#2}{\UrlFont #3}}
|
|
|
|
%% Display settings.
|
|
\allowdisplaybreaks
|
|
\AtBeginDocument{
|
|
\setlength{\abovedisplayshortskip}{-.5\baselineskip plus .5\baselineskip}
|
|
\setlength{\abovedisplayskip}{\medskipamount}
|
|
\setlength{\belowdisplayshortskip}{\medskipamount}
|
|
\setlength{\belowdisplayskip}{\medskipamount}
|
|
}
|
|
|
|
\fi % ifiseries@layout
|