\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}}