336 lines
9.6 KiB
OpenEdge ABL
336 lines
9.6 KiB
OpenEdge ABL
|
\NeedsTeXFormat{LaTeX2e}
|
||
|
\ProvidesClass{mimosis}[2017/08/01 Minimal modern thesis class]
|
||
|
|
||
|
\LoadClass[paper=a4,
|
||
|
twoside,
|
||
|
pagesize,
|
||
|
11pt,
|
||
|
DIV=10, % TODO: Make configurable
|
||
|
BCOR=10mm, % TODO: Make configurable
|
||
|
cleardoublepage=empty,
|
||
|
numbers=noenddot,
|
||
|
titlepage,
|
||
|
toc=bibliography,
|
||
|
toc=index,]{scrbook}
|
||
|
|
||
|
\RequirePackage{ifpdf}
|
||
|
\RequirePackage{ifxetex}
|
||
|
\RequirePackage{ifluatex}
|
||
|
|
||
|
% Makes it possible to switch between different languages in the text
|
||
|
% while keeping hyphenation rules correct. Should you add another one
|
||
|
% in the list, please ensure that `english` is the last one. The last
|
||
|
% language is used to control standard hyphenation.
|
||
|
%
|
||
|
% If you write your report in German, you need to change the order.
|
||
|
\RequirePackage[ngerman,french,english]{babel}
|
||
|
|
||
|
\newif\ifxetexorluatex
|
||
|
\ifxetex
|
||
|
\xetexorluatextrue
|
||
|
\else
|
||
|
\ifluatex
|
||
|
\xetexorluatextrue
|
||
|
\else
|
||
|
\xetexorluatexfalse
|
||
|
\fi
|
||
|
\fi
|
||
|
|
||
|
\ifxetexorluatex
|
||
|
\RequirePackage{fontspec}
|
||
|
\else
|
||
|
\RequirePackage[utf8]{inputenc}
|
||
|
\fi
|
||
|
|
||
|
\usepackage{csquotes}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Bibliography
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage[%
|
||
|
autocite = plain,
|
||
|
backend = bibtex,
|
||
|
doi = true,
|
||
|
url = true,
|
||
|
giveninits = true,
|
||
|
hyperref = true,
|
||
|
maxbibnames = 99,
|
||
|
maxcitenames = 99,
|
||
|
sortcites = true,
|
||
|
style = numeric,
|
||
|
]{biblatex}
|
||
|
|
||
|
% Remove the month field from the bibliography. It does not serve a good
|
||
|
% purpose, and often, it cannot be used because the journals have crazy
|
||
|
% issue policies.
|
||
|
\AtEveryBibitem{\clearfield{month}}
|
||
|
\AtEveryCitekey{\clearfield{month}}
|
||
|
|
||
|
% Suppress "in" for journal articles.
|
||
|
\renewbibmacro{in:}{%
|
||
|
\ifentrytype{article}
|
||
|
{%
|
||
|
}%
|
||
|
% else
|
||
|
{%
|
||
|
\printtext{\bibstring{in}\intitlepunct}%
|
||
|
}%
|
||
|
}
|
||
|
|
||
|
% Remove the parentheses for the year in an article. This removes a lot
|
||
|
% of undesired parentheses in the bibliography, which improves
|
||
|
% readability.
|
||
|
\renewbibmacro*{issue+date}{%
|
||
|
\setunit{\addcomma\space}
|
||
|
\iffieldundef{issue}
|
||
|
{\usebibmacro{date}}
|
||
|
{\printfield{issue}%
|
||
|
\setunit*{\addspace}%
|
||
|
\usebibmacro{date}}%
|
||
|
\newunit}
|
||
|
|
||
|
% Delimit the volume and the number of an article by a colon instead of
|
||
|
% by a dot, which I consider to be more readable.
|
||
|
\renewbibmacro*{volume+number+eid}{%
|
||
|
\printfield{volume}%
|
||
|
\setunit*{\addcolon}%
|
||
|
\printfield{number}%
|
||
|
\setunit{\addcomma\space}%
|
||
|
\printfield{eid}%
|
||
|
}
|
||
|
|
||
|
% Do not use a colon for the publisher location. Instead, connect
|
||
|
% publisher, location, and date via commas.
|
||
|
\renewbibmacro*{publisher+location+date}{%
|
||
|
\printlist{publisher}%
|
||
|
\setunit*{\addcomma\space}%
|
||
|
\printlist{location}%
|
||
|
\setunit*{\addcomma\space}%
|
||
|
\usebibmacro{date}%
|
||
|
\newunit%
|
||
|
}
|
||
|
|
||
|
% Ditto for other entry types.
|
||
|
\renewbibmacro*{organization+location+date}{%
|
||
|
\printlist{location}%
|
||
|
\setunit*{\addcomma\space}%
|
||
|
\printlist{organization}%
|
||
|
\setunit*{\addcomma\space}%
|
||
|
\usebibmacro{date}%
|
||
|
\newunit%
|
||
|
}
|
||
|
|
||
|
% Do not abbreviate "technical report".
|
||
|
\DefineBibliographyStrings{english}{%
|
||
|
techreport = {technical report},
|
||
|
}
|
||
|
|
||
|
% Display the label of a bibliographic entry in bare style, without any
|
||
|
% brackets. I like this more than the default.
|
||
|
%
|
||
|
% This is *really* the proper way of doing this.
|
||
|
\DeclareFieldFormat{labelnumberwidth}{#1\adddot}
|
||
|
|
||
|
% Ensure that DOIs are followed by a non-breakable space.
|
||
|
\DeclareFieldFormat{doi}{%
|
||
|
\mkbibacro{DOI}\addcolon\addnbspace
|
||
|
\ifhyperref
|
||
|
{\href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
|
||
|
%
|
||
|
{\nolinkurl{#1}}
|
||
|
}
|
||
|
|
||
|
% Add hair spaces between initials. Technically, this does not amount to
|
||
|
% a large change, but it is typographically correct.
|
||
|
\renewcommand*\bibinitdelim {\addnbthinspace}
|
||
|
\renewcommand*\bibnamedelima{\addnbthinspace}
|
||
|
\renewcommand*\bibnamedelimb{\addnbthinspace}
|
||
|
\renewcommand*\bibnamedelimi{\addnbthinspace}
|
||
|
|
||
|
% Make the font size of citations smaller. This looks more elegant and
|
||
|
% reduces their optical 'weight' somewhat.
|
||
|
\renewcommand*{\citesetup}{%
|
||
|
\biburlsetup
|
||
|
\small
|
||
|
}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Fonts & colours
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage[osf]{ebgaramond}
|
||
|
\RequirePackage[oldstyle,scale=0.7]{sourcecodepro}
|
||
|
|
||
|
\usepackage{xcolor}
|
||
|
|
||
|
\definecolor{hd-red} {RGB}{197, 13, 41}
|
||
|
\definecolor{hd-brown}{RGB}{ 90, 15, 20}
|
||
|
\definecolor{hd-beige}{RGB}{245,240,234}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Graphics
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\usepackage{graphicx}
|
||
|
\graphicspath{%
|
||
|
{Figures/}
|
||
|
{./}
|
||
|
}
|
||
|
|
||
|
% Suppress warnings about page groups in PDFs. This is not justified
|
||
|
% in most of the cases. I am pretty sure I am including my images in
|
||
|
% the right manner.
|
||
|
\begingroup\expandafter\expandafter\expandafter\endgroup
|
||
|
\expandafter\ifx\csname pdfsuppresswarningpagegroup\endcsname\relax
|
||
|
\else
|
||
|
\pdfsuppresswarningpagegroup=1\relax
|
||
|
\fi
|
||
|
|
||
|
\RequirePackage{subcaption}
|
||
|
|
||
|
% Make sub-references using \subref being typeset with parentheses.
|
||
|
% Otherwise, only the counter will be printed.
|
||
|
\captionsetup{subrefformat=parens}
|
||
|
|
||
|
% Styling the algorithm captions. They should not be larger than the captions for the figures and
|
||
|
% tables.
|
||
|
\captionsetup[algorithm]{%
|
||
|
font = small,
|
||
|
labelsep = colon
|
||
|
}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Pseudo-code
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
%
|
||
|
% Further information about styling and other issues with this package
|
||
|
% is available under:
|
||
|
%
|
||
|
% https://tex.stackexchange.com/questions/1375/what-is-a-good-package-for-displaying-algorithms
|
||
|
%
|
||
|
|
||
|
\RequirePackage{algorithm}
|
||
|
\RequirePackage{algorithmicx}
|
||
|
\RequirePackage{algpseudocode}
|
||
|
|
||
|
% Ensures that the `\autoref` command works with algorithms as well. The
|
||
|
% text may have to be changed for other languages, though.
|
||
|
\newcommand{\algorithmautorefname}{Algorithm}
|
||
|
|
||
|
% Use a small font in the body of an algorithm. This removes the weight
|
||
|
% of algorithm environments and makes them typographically more light.
|
||
|
\makeatletter
|
||
|
\algrenewcommand\ALG@beginalgorithmic{\small}
|
||
|
\makeatother
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Paragraph lists & compact enumerations
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage[%
|
||
|
olditem, % Do not modify itemize environments by default
|
||
|
oldenum % Do not modify enumerate environments by default
|
||
|
]{paralist}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Spacing
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage{setspace}
|
||
|
\onehalfspacing
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Tables
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage{booktabs}
|
||
|
\RequirePackage{tabularx}
|
||
|
\RequirePackage{multirow}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Hyperlinks & bookmarks
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage[%
|
||
|
colorlinks = true,
|
||
|
citecolor = hd-red,
|
||
|
linkcolor = hd-red,
|
||
|
urlcolor = hd-red,
|
||
|
]{hyperref}
|
||
|
|
||
|
\RequirePackage{bookmark}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Proper typesetting of units
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage[binary-units=true]{siunitx}
|
||
|
|
||
|
\sisetup{%
|
||
|
detect-all = true,
|
||
|
detect-family = true,
|
||
|
detect-mode = true,
|
||
|
detect-shape = true,
|
||
|
detect-weight = true,
|
||
|
detect-inline-weight = math,
|
||
|
}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Mathematics
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage{amsmath}
|
||
|
\RequirePackage{amsthm}
|
||
|
\RequirePackage{dsfont}
|
||
|
|
||
|
% Fix the spacing of \left and \right. Use these with the proper bracket
|
||
|
% in order to ensure that they scale automatically.
|
||
|
\let\originalleft\left
|
||
|
\let\originalright\right
|
||
|
\renewcommand{\left}{\mathopen{}\mathclose\bgroup\originalleft}
|
||
|
\renewcommand{\right}{\aftergroup\egroup\originalright}
|
||
|
|
||
|
\DeclareMathOperator*{\argmin} {arg\,min}
|
||
|
\DeclareMathOperator {\dist} {dist}
|
||
|
\DeclareMathOperator {\im} {im}
|
||
|
|
||
|
\newcommand{\domain}{\ensuremath{\mathcal{D}}}
|
||
|
\newcommand{\real} {\ensuremath{\mathds{R}}}
|
||
|
|
||
|
% Proper differential operators
|
||
|
\renewcommand{\d}[1]{\ensuremath{\operatorname{d}\!{#1}}}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Ordinals
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\newcommand {\rd}{\textsuperscript{\textup{rd}}\xspace}
|
||
|
\newcommand {\nd}{\textsuperscript{\textup{nd}}\xspace}
|
||
|
\renewcommand{\th}{\textsuperscript{\textup{th}}\xspace}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Penalties
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\clubpenalty = 10000
|
||
|
\widowpenalty = 10000
|
||
|
\displaywidowpenalty = 10000
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Headers
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\RequirePackage{scrlayer-scrpage}
|
||
|
\pagestyle{scrheadings}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Typefaces for sections
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\setkomafont{sectioning}{\normalfont\bfseries}
|
||
|
\setkomafont{descriptionlabel}{\normalfont\bfseries}
|
||
|
|
||
|
\setkomafont{caption}{\small}
|
||
|
\setkomafont{captionlabel}{\usekomafont{caption}}
|