Initial version
Not yet satisfied with the way things look; maybe I should permit more customizations with respect to BibTeX and the like?pull/2/head
commit
6eed39985c
|
@ -0,0 +1,335 @@
|
|||
\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}}
|
Loading…
Reference in New Issue