texlive[49540] Master: skrapport (30dec18)

commits+karl at tug.org commits+karl at tug.org
Sun Dec 30 23:11:16 CET 2018


Revision: 49540
          http://tug.org/svn/texlive?view=revision&revision=49540
Author:   karl
Date:     2018-12-30 23:11:16 +0100 (Sun, 30 Dec 2018)
Log Message:
-----------
skrapport (30dec18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/source/latex/skrapport/
    trunk/Master/texmf-dist/source/latex/skrapport/skrapport.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/skrapport/Makefile
    trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.tex

Deleted: trunk/Master/texmf-dist/doc/latex/skrapport/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/skrapport/Makefile	2018-12-30 22:10:06 UTC (rev 49539)
+++ trunk/Master/texmf-dist/doc/latex/skrapport/Makefile	2018-12-30 22:11:16 UTC (rev 49540)
@@ -1,62 +0,0 @@
-TEXMFHOME ?= $(shell kpsewhich -var-value TEXMFHOME)
-.PHONY: all clean distclean install dist test clean-test
-all: skrapport.tex skrapport.pdf skrapport.cls README
-clean: clean-test
-	rm -f *.gl? *.id? *.aux # problematic files
-	rm -f *.bbl *.bcf *.bib *.blg *.xdy # biblatex
-	rm -f *.fls *.log *.out *.run.xml *.toc # junk
-distclean: clean
-	rm -f *.cls *.sty *.clo *.tar.gz *.tds.zip README
-	git reset --hard
-
-%.pdf: %.tex %.cls
-	makeglossaries $*
-	biber $*
-	pdflatex -interaction=nonstopmode -halt-on-error $<
-	makeglossaries $*
-	pdflatex -interaction=nonstopmode -halt-on-error $<
-
-%.cls: %.tex
-	pdflatex -interaction=nonstopmode -halt-on-error $<
-
-%.sty: skrapport.cls
-
-%.clo: skrapport.cls
-
-README: README.md
-	sed -e '1,4d;$$d' $< > $@
-
-install: all
-	install -m 0644 skrapport-*.sty $(TEXMFHOME)/tex/latex/skrapport/
-	install -m 0644 skrapport-*.clo $(TEXMFHOME)/tex/latex/skrapport/
-	install -m 0644 skrapport.cls $(TEXMFHOME)/tex/latex/skrapport/skrapport.cls
-	install -m 0644 skrapport.pdf $(TEXMFHOME)/doc/latex/skrapport/skrapport.pdf
-	install -m 0644 skrapport.tex $(TEXMFHOME)/source/latex/skrapport/skrapport.tex
-	install -m 0644 README $(TEXMFHOME)/doc/latex/skrapport/README
-	-mktexlsr
-
-skrapport.tar.gz: all
-	mkdir -p           skrapport
-	cp README          skrapport/README
-	cp skrapport.pdf   skrapport/skrapport.pdf
-	mkdir -p           skrapport/source
-	cp Makefile        skrapport/source/Makefile
-	cp skrapport.tex   skrapport/source/skrapport.tex
-	mkdir -p           skrapport/latex
-	cp skrapport-*.sty skrapport/latex/
-	cp skrapport-*.clo skrapport/latex/
-	cp skrapport.cls   skrapport/latex/skrapport.cls
-	tar -czf $@ skrapport
-	rm -rf skrapport
-
-dist: skrapport.tar.gz
-
-test:
-	cp -f skrapport-*.sty tests/
-	cp -f skrapport-*.clo tests/
-	$(MAKE) -C tests
-
-clean-test:
-	$(MAKE) -C tests clean
-	rm -rf tests/skrapport-*.sty
-	rm -rf tests/skrapport-*.clo

Modified: trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.tex	2018-12-30 22:10:06 UTC (rev 49539)
+++ trunk/Master/texmf-dist/doc/latex/skrapport/skrapport.tex	2018-12-30 22:11:16 UTC (rev 49540)
@@ -1,4375 +0,0 @@
-%% skrapport Skånings rapportklass
-%%
-%% Copyright (C) 2012-2016 by Simon Sigurdhsson <sigurdhsson at gmail.com>
-%%
-%% 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 `maintained'.
-%%
-%% The Current Maintainer of this work is Simon Sigurdhsson.
-%%
-%% This work consists of the file skrapport.tex and the derived files:
-%%  * skrapport.cls
-%%  * skrapport-colortheme-default.sty
-%%  * skrapport-colortheme-unscathed.sty
-%%  * skrapport-colortheme-violet.sty
-%%  * skrapport-colortheme-cruelwater.sty
-%%  * skrapport-colortheme-skdoc.sty
-%%  * skrapport-size-common.sty
-%%  * skrapport-size10pt.clo
-%%  * skrapport-size11pt.clo
-%%  * skrapport-size12pt.clo
-\documentclass{skdoc}
-\let\SI\relax
-\usepackage{siunitx}
-\DeclareSIUnit\point{pt}
-\usepackage{hologo,booktabs,xcoffins,calc}
-\usepackage[style=authoryear]{biblatex}
-\usepackage{csquotes}
-\usepackage{varioref,cleveref}
-%\usepackage{chslacite}
-
-\ExplSyntaxOn
-\cs_set_protected_nopar:Npn\ExplHack{
-    \char_set_catcode_letter:n{ 58 }
-    \char_set_catcode_letter:n{ 95 }
-}
-\ExplSyntaxOff
-
-% Hide the implementation
-\OnlyDescription
-
-% Bibliography entries
-\begin{filecontents}{skrapport.bib}
-    @article{kpfonts,
-        author = {Christophe Caignaert},
-        title = {KP-Fonts 3.31},
-        year = {2010},
-        url = {http://www.tex.ac.uk/tex-archive/fonts/kpfonts/doc/kpfonts.pdf}
-    }
-    @standard{ISO216,
-        title = {ISO 216:2007},
-        subtitle = {Writing paper and certain classes of printed matter -- Trimmed sizes -- A and B series, and indication of machine direction},
-        author = {{International Organization for Standardization, Technical Committee 6}},
-        year = {2007}
-    }
-    @standard{ISO8601,
-        title = {ISO 8601:2004},
-        subtitle = {Data elements and interchange formats -- Information interchange -- Representation of dates and times},
-        author = {{International Organization for Standardization, Technical Committee 154}},
-        year = {2004}
-    }
-    @article{Flynn,
-        author = {Peter Flynn},
-        title = {Rolling your own Document Class: Using \LaTeX{} to
-                 keep away from the Dark Side},
-        journal = {The Prac\TeX{} Journal},
-        number = {4},
-        year = {2006},
-        url = {http://tug.org/pracjourn/2006-4/flynn/flynn.pdf}
-    }
-\end{filecontents}
-\addbibresource{skrapport.bib}
-
-% Declare the target files
-\SelfPreambleTo{\mypreamble}
-\DeclareFile[key=class,preamble=\mypreamble]{skrapport.cls}
-\DeclareFile[key=size-common,preamble=\mypreamble]%
-    {skrapport-size-common.sty}
-\DeclareFile[key=size-10,preamble=\mypreamble]{skrapport-size10pt.clo}
-\DeclareFile[key=size-11,preamble=\mypreamble]{skrapport-size11pt.clo}
-\DeclareFile[key=size-12,preamble=\mypreamble]{skrapport-size12pt.clo}
-\DeclareFile[key=theme-default,preamble=\mypreamble]%
-    {skrapport-colortheme-default.sty}
-\DeclareFile[key=theme-unscathed,preamble=\mypreamble]%
-    {skrapport-colortheme-unscathed.sty}
-\DeclareFile[key=theme-cruelwater,preamble=\mypreamble]%
-    {skrapport-colortheme-cruelwater.sty}
-\DeclareFile[key=theme-violet,preamble=\mypreamble]%
-    {skrapport-colortheme-violet.sty}
-\DeclareFile[key=theme-skdoc,preamble=\mypreamble]%
-    {skrapport-colortheme-skdoc.sty}
-
-% This is where the documentation begins
-\begin{document}
-    % Change & version info
-    \version{0.12i}
-    \changes{0.01}{Initial version}
-    \changes{0.03}{Removed \cs{rd} and \cs{id}}
-    \changes{0.04}{Added \pkg{microtype} package}
-    \changes{0.05}{Improved documentation}
-    \changes{0.06}{Corrected cheksum, further improved documentation}
-    \changes{0.07}{Various bugfixes, \hologo{XeLaTeX} compatibility,
-                    better float settings, quote style fix,
-                    \opt{intlimits} option to \pkg{amsmath}}
-    \changes{0.07a}{Fixed \pkg{kpfonts} issues}
-    \changes{0.09}{Introduced \pkg{kvoptions},
-                    fixed abstract in twocolumn mode}
-    \changes{0.10}{Include skmath if exists
-                    and wanted. Gobble optional arguments to
-                    \env{figure} and \env{table} in two-column mode}
-    \changes{0.10a}{Include \pkg{xparse} (fixes breakage)}
-    \changes{0.11}{Added \opt{minion} for Adobe Minion Pro font}
-    \changes{0.11a}{Added \opt{skdoc} font option and \thm{skdoc} color theme}
-    \changes{0.12}{Deprecated several macros, moved to \LaTeX3. Use of TOC depth above 3 is now unsupported}
-    \changes{0.12a}{The \pkg{fontspec} package is now only loaded when using the \texttt{word} or \texttt{none} font stacks on \hologo{LuaLaTeX} or \hologo{XeLaTeX}. The \texttt{word} font stack is now
-    the default font stack on \hologo{XeLaTeX}}
-    \changes{0.12b}{Minor and major bugfixes to \cs{maketitle}, \opt{ptsize}, \opt{twocolumn} and others}
-    \changes{0.12c}{Added german language option, fixed sectioning macros in \opt{twocolumn} mode}
-    \changes{0.12d}{Added \opt{hanging-titles}, latin phrase macros. Load \pkg{isomath}. Don't load \pkg{icomma}. Use \cs{frenchspacing}}
-    \changes{0.12e}{Replace usage of deprecated \pkg{expl3} macros (thanks for the heads-up, Joseph Wright!)}
-    \changes{0.12f}{Fix incorrect usage of \pkg{xparse} macros}
-    \changes{0.12g}{Track \pkg{expl3} changes (thanks to Joseph Wright)}
-    \changes{0.12h}{Fix incompatibilities with recent \pkg{expl3}}
-    \changes{0.12i}{Track \pkg{expl3} changes (thanks to Joseph Wright)}
-    % Don't forget to update the version number and release date of
-    % the package declaration in the implementation!
-
-    % Metadata
-    \package[ctan=skrapport,vcs=https://github.com/urdh/skrapport]{skrapport}
-    \title{The \textbf{\thepackage} document class}
-    \author{Simon Sigurdhsson}
-    \email{sigurdhsson at gmail.com}
-
-    % First page
-    \maketitle
-    \begin{abstract}
-        A document class intended for simple documents \emph{e.g.}
-        reports handed in to courses and such. It is small,
-        straight-forward and heavily inspired by the Prac\TeX{}
-        Journal style.
-    \end{abstract}
-    \tableofcontents
-
-    \section{Documentation}
-    The \thepackage\ document class aims to make typesetting simple but
-    stylish documents (mostly reports) as effortless as possible. It
-    does this by mostly reimplementing the default \pkg{article} class
-    in \LaTeX3, while making modifications to both form and function
-    along the way.
-
-    Because it is reimplemented in \LaTeX3, it may be incompatible with
-    any number of packages that patch or otherwise modify internals of
-    \pkg{article} or other document classes. For commonly used packages
-    (especially those used frequently by the author), this shouldn't be
-    a problem. The author gladly accepts reports of any such issues at
-    the project issue tracker --- see \enquote{Known issues} on
-    \vpageref{sec:issues}.
-
-    \subsection{Options}
-    As with other document classes, the class is loaded, possibly with
-    options, by issuing \Macro\documentclass[<options>]{skrapport}.
-    The class has a number of options controlling both form and function,
-    by \emph{e.g.} setting the font size, selecting a font stack, setting
-    the section title style, and so on.
-
-    \subsubsection{Layout}
-    Two options controlling the overall layout of the document are
-    provided. Collectively they control the paper size and text layout
-    of the document.
-
-    \Option{paper}\WithValues{a4, a5}\AndDefault{a4}
-    The \opt{paper} option controls the paper size of the document.
-    Internally, this is set by the \pkg{typearea} package, so in theory
-    many more paper sizes could be available, but the current options
-    cover most useful documents.
-
-    \Option{twocolumn}
-    The \opt{twocolumn} option sets up a two-column mode. This is not
-    provided by internal \LaTeX\ mechanics as in the original
-    \pkg{article} class, but instead by patching environments and macros
-    and using a combination of the \pkg{multicol} and \pkg{grid}
-    packages. In theory, this means that baselines of adjacent columns
-    should be aligned, and that three- or four-column modes are possible
-    in the future (but that'd be ridiculous).
-
-    \subsubsection{Style}
-    A couple of options to control the style of the document are
-    provided. Two of them, \opt{leqno} and \opt{fleqn}, are mainly
-    provided for compatibility with the \pkg{article} class.
-
-    \Option{leqno}
-    This option makes display math environments typeset their labels on
-    the left-hand side of the formula instead of the right-hand side.
-
-    \Option{fleqn}
-    This option makes display math environments left-align the entire
-    formula as opposed to centering it.
-
-    \Option{indent}\WithValues{true, false}\AndDefault{false}
-    The \opt{indent} option enables or disables the indentation of
-    paragraphs, with the default being not to indent anything. The
-    default behaviour thus is similar to that obtained using the
-    \pkg{parskip} package with the \pkg{article} package.
-
-    \Option{titles}\WithValues{rm, it, bf, sf}\AndDefault{bf}
-    Section titles (and a few other elements) are controlled by this
-    option in that they are typeset either using the regular roman font,
-    the boldfaced roman font or the sans serif font. For historical
-    reasons the default is a boldfaced roman font, but the sans serif
-    option is very handsome.
-
-    \Option{hanging-titles}\WithValues{true, false}\AndDefault{false}
-    This options allow sections to be set as \enquote{hanging} titles,
-    \emph{i.e.} with the section number in the margin.
-
-    \Option{color}\WithValues{\meta{color theme}}\AndDefault{default}
-    This option tells the class to activate color theme support and
-    optionally load a color theme. Several color themes are available
-    (as detailed by \enquote{Color themes} \vpageref{ssec:color}),
-    and the special value \texttt{false} disables color support
-    entirely (which only means that the \pkg{xcolor} package isn't
-    loaded, and that \cs{colortheme} remains undefined).
-
-    \subsubsection{Fonts}
-    Only two options control the font setup of the document class. The
-    class provides the same point sizes as \pkg{article}, but also
-    provides a large number of font stacks to choose from.
-
-    \Option{ptsize}\WithValues{10pt, 11pt, 12pt}\AndDefault{11pt}
-    The document class provides the same three point sizes as the
-    \pkg{article} class. There is room for expansion, but there really
-    shouldn't be any reason to use other point sizes.
-
-    \Option{font}\WithValues{none, kpfonts, lmodern, palatino, minion, skdoc, word}\AndDefault{kpfonts}
-    Several different font stacks, detailed by \vref{tab:font}, are
-    provided. Most of these work with \hologo{pdfLaTeX}, but there are
-    two special font stacks: \texttt{none} and \texttt{word}. The
-    former, predictably, loads no fonts whatsoever leaving the document
-    with Computer Modern fonts. This is useful if the fonts are replaced
-    later anyway, such as when using \hologo{XeLaTeX}.
-
-    The \texttt{word}
-    font stack, however, does load a few fonts. The fonts must be present
-    and installed on the system as OTF or TTF fonts, and the font stack
-    requires either \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
-    Both \texttt{word} and \texttt{none} load the \pkg{fontspec}
-    package, assuming the document is compiled using \hologo{XeLaTeX}
-    or \hologo{LuaLaTeX}.
-
-    \Notice{The \texttt{skdoc} font stack doesn't have a math font.}
-    \Warning{Currently, \pkg{fontspec} is always loaded by
-             \hologo{XeLaTeX} regardless of options due to
-             the use of \pkg{polyglossia}. This means that
-             you \emph{have} to use OpenType fonts in your
-             document, otherwise \emph{only} Latin Modern
-             Roman (\emph{i.e.} no sans-serif or monospace
-             fonts) will be available. Therefore, the \texttt{word}
-             font stack is the default when using \hologo{XeLaTeX}.
-             \Hologo{LuaLaTeX} is not affected by this.}
-
-    \begin{table}[tp]
-        \centering
-        \caption{Font stacks provided by \thepackage.}
-        \label{tab:font}
-        \NewCoffin\tempcoffin\newlength\templength
-        \SetHorizontalCoffin\tempcoffin{
-            \begin{tabular}{lllll}
-                \toprule
-                Font stack & Serif font & Math font & Sans serif font & Monospace font \\
-                \midrule
-                \texttt{kpfonts} & Kp-Fonts & Kp-Fonts & Kp-Fonts & Kp-Fonts \\
-                \texttt{lmodern} & Latin Modern & Latin Modern & Latin Modern & Source Code Pro \\
-                \texttt{palatino} & \TeX\ Gyre & PX & Arev & Source Code Pro \\
-                \texttt{minion} & Minion Pro & Minion Pro & Myriad Pro & Source Code Pro \\
-                \texttt{skdoc} & PT Serif & --- & Open Sans & Source Code Pro \\
-                \texttt{word} & Cambria & Cambria Math & Calibri & Consolas \\
-                \bottomrule
-            \end{tabular}
-        }
-        \setlength{\templength}{(\textwidth - \CoffinWidth\tempcoffin)/2}
-        \hspace*{\templength}
-        \TypesetCoffin\tempcoffin
-    \end{table}
-
-    \subsubsection{Functionality}
-    The final three options affect functionality in one way or another.
-    Since \thepackage\ was originally designed for reports written in
-    either swedish or english, the class always loads either \pkg{babel}
-    or \pkg{polyglossia} with either of these languages. Additionally,
-    the class may load the \pkg{skmath} package if desirable.
-
-    \Option{nomath}\WithValues{true, false}\AndDefault{false}
-    When \texttt{false}, the \pkg{skmath} package is loaded, providing
-    improvements to the math functionality of \pkg{amsmath} and friends.
-
-    \Option{lang}\WithValues{en, sv, de}\AndDefault{sv}
-    This option specifies what main language \pkg{babel} or
-    \pkg{polyglossia} set up with. English (or swedish, for
-    \texttt{lang=en}) is loaded as well, for use in constructs
-    that allow for a second language.
-
-    \Option{draft}\WithValues{true, false}\AndDefault{false}
-    The \opt{draft} option, much like in \pkg{article}, enables
-    \cs{overfullrule}s and possibly similar functionality in loaded
-    packages (if they react to the global \opt{draft} option).
-
-    \subsection{User-level commands and environments}
-    The general idea behind the document class is to provide most
-    (if not all) of the macros provided by the standard \LaTeXe{}
-    classes, as well as additional macros to simplify and beautify
-    the documents produced. As such, most of the documentation that
-    follows details macros that are present in the standard document
-    classes. Some of them have changed functionality or semantics,
-    so at least a skim through this section is recommended.
-
-    \subsubsection{The front page}
-    The front page is the part of the document that has seen the most
-    changes in \thepackage\ compared to \pkg{article}. In addition to
-    the new, Prac\TeX-inspired layout, there are a few additional
-    pieces of information in it. Also, the \cs{author} macro has been
-    dramatically improved.
-
-    \DescribeMacro\date{<ISO8601 date>}
-    The \cs{date} macro now internally employs \pkg{isodate} to typeset
-    the date of the document. This means that the input must be either
-    the string \enquote{today}, the token \cs{today} or a date as defined
-    by ISO8601\footcite{ISO8601}. The mechanisms provided by
-    \pkg{isodate} can be used to affect the output format.
-
-    \DescribeMacro\author[<email>]{<name>}
-    In contrast with the \pkg{article} package, the \cs{author} macro
-    should no longer be used to typeset several author names at once.
-    Instead, one \cs{author} command is to be issued for every author,
-    optionally providing a corresponding email. These are then combined,
-    in the order they are given, to form a list of authors and a
-    corresponding list of email adresses.
-
-    \DescribeMacro\regarding{<topic>}
-    This macro defines a topic or other short message detailing the
-    purpose of the document. It is typeset along with the date in the
-    upper left corner of the title page.
-
-    \DescribeMacro\license{<license name>}
-    The \cs{license} macro defines a short license name to be typeset
-    in the lower right corner of the title page. This mechanism could of
-    course be used to typeset an institution name or similar as well.
-    It is only typeset when also using the \env{titlepage} environment
-    described below.
-
-    \DescribeMacro\title{<document title>}
-    The \cs{title} macro, while not defined by \pkg{skrapport}, is
-    relevant to describe. It simply sets the title of the document, as
-    displayed by \cs{maketitle}.
-
-    \DescribeMacro\maketitle[hide=\{date,regarding,email\},nopdfinfo]
-    As in \pkg{article}, the \cs{maketitle} macro typesets the
-    information provided by \cs{title}, \cs{author} and friends to form
-    a stylish front page. When combined with \env{abstract},
-    \env{titlepage} and/or \cs{tableofcontents}, you get a very
-    good-looking preamble with almost no effort.
-
-    The optional argument is a key-value list with two valid entries,
-    \opt*{hide} and \opt*{nopdfinfo}. The \opt*{hide} entry accepts a
-    comma-separated list in which the values \opt*{date},
-    \opt*{regarding} and \opt*{email}
-    are interpreted as instructions to hide the corresponding entry from
-    the front page. The \opt*{nopdfinfo} key disables the generation of
-    PDF information by \pkg{hyperref}.
-
-    \DescribeEnv[<abstract text>]{abstract}
-    The \env{abstract} environment defines an abstract, which is typeset
-    in a block with the \cs{abstractname} word next to it (see
-    \emph{e.g.} the title page of this manual for an example).
-
-    \DescribeEnv[<title page contents>]{titlepage}
-    Normally, \cs{maketitle} doesn't reserve its own page. By enclosing
-    \cs{maketitle} (and \env{abstract} if appropriate) in the
-    \env{titlepage} environment, the contents are typeset on their
-    own page, without page numbering and with the \cs{license} text
-    in the lower right corner (if applicable).
-
-    \subsubsection{Sectioning}
-    \DescribeMacro\section*[<short title>]{<title>}
-    \DescribeMacro\subsection*[<short title>]{<title>}
-    \DescribeMacro\subsubsection*[<short title>]{<title>}
-    \DescribeMacro\paragraph*[<short title>]{<title>}
-    \DescribeMacro\subparagraph*[<short title>]{<title>}
-    The sectioning macros are superficially very similar to those
-    provided by \pkg{article}, but have been completely reimplemented
-    in \pkg{expl3} code. Additionally, the style of these sectioning
-    macros, as detailed by the \opt{titles} option documentation above,
-    can be changed.
-
-    All of them have both arguments and behaviour in common, only
-    differing in style. The starred versions are unnumbered, but still
-    accept the opional short title (simply discarding it). The optional
-    short title is used in the table of contents. The
-    \texttt{secnumdepth} counter limits the depth of section numbering.
-
-    The first three macros, being section titles, are typeset as actual
-    titles on their own line with appropriate spacing above and below.
-    The paragraph macros instead typeset run-in titles.
-
-    \subsubsection{Macros and environments from \pkg{article}}
-    Aside from the \env{itemize} and \env{enumerate} envionments and the
-    font selection macros, which are carried without modification from
-    \LaTeXe, a couple of environments and macros are defined.
-
-    The old font macros, whose use has been discouraged for a long time,
-    are now deprecated. Instead of functioning correctly, they will emit
-    an error and require user input. Use the \cs*{text??}/\cs*{??family}
-    macros instead. For emphasis, use the \cs{emph} macro.
-
-    \DescribeMacro\emph{<text>}
-    Emphasized text will be typeset in italic, or bold italic if the
-    macro is used in a context where italic is already used (such as
-    inside another \cs{emph} invokation).
-
-    \DescribeEnv[\cs*{item}\oarg{item} \meta{description}]{description}
-    The \env{description} environment behaves as expected, typesetting
-    a list of descriptions as in the \pkg{article} class.
-
-    \DescribeEnv[<short quote>]{quote}
-    Intended for short quotes, the \env{quote} environment simply
-    typesets a centered block of italic text.
-
-    \DescribeEnv[<long quote>]{quotation}
-    Longer quoted passages are typeset using the \env{quotation}
-    environment. This is simply a \env{quote} environment with additional
-    spacing above and below.
-
-    \DescribeEnv[<pretentious poetry>]{verse}
-    The \env{verse} environment is intended for poetry and other text
-    where line breaks are critical. Use \verb|\\| to break
-    lines.
-
-    \DescribeMacro\appendix
-    This macro signals the end of the main matter and the start of
-    the appendix. In essence, it resets the section numbering counter
-    and changes the section numbering to the upper-case alphabetic
-    sequence.
-
-    \subsubsection{Floats}
-    Both the \env{figure} and \env{table} float environments accept an
-    optional positioning argument. The default positioning is
-    \texttt{tp}. Both environments also have starred variants, which
-    do nothing in one-column mode while typesetting the figure across
-    both columns in two-column mode. As usual, \cs{centering},
-    \cs{caption} and \cs{label} should be used inside the floats.
-
-    \DescribeEnv[<content>]{figure}[position]
-    This float environment is intended for figures. The most common
-    contents are \cs{includegraphics} statements or \env{tikzpicture}
-    environments.
-
-    \DescribeEnv[<content>]{table}[position]
-    A float intended for tables. Probably contains \env{tabular}s.
-
-    \DescribeEnv{figcenter}
-    This environment is useful for wide figures and tables. It typesets
-    its contents centered horizonally, but allows the content to extend
-    into the margin. The content is set in a horizontal coffin.
-
-    \subsubsection{Table of contents}
-    \DescribeMacro\tableofcontents
-    The table of contents are typeset using this macro. The
-    \texttt{tocdepth} counter limits the depth of the table of
-    contents, but for stylistic reasons values higher than 3 are
-    unsupported.
-
-%    \subsubsection{Basic bibliography support}
-
-    \subsubsection{Miscellaneous}
-    \DescribeMacro\comment*{<comment>}
-    \DescribeMacro\note*{<comment>}
-    \DescribeMacro\com*{<comment>}
-    These macros, the two latter being aliases of the first one, typeset
-    an author's comment in the document. The starred variants typeset the
-    comment inline with a red background, while the unstarred variant
-    typesets the comment in a \cs{marginpar}.
-
-    \DescribeMacro\eg
-    \DescribeMacro\ie
-    \DescribeMacro\etc
-    \DescribeMacro\cf
-    \DescribeMacro\viz
-    These macro print the abbreviation of the latin phrases
-    \emph{exempli gratia}, \emph{id est}, \emph{et cetera},
-    \emph{confer} and \emph{videlicet}, respectively.
-    The macros peek ahead to find punctuation marks and spaces, so they
-    should behave correctly regardless of usage (assuming they're used in
-    running text and uncomplicated settings). In languages other than
-    english, appropriate translations are made if applicable.
-
-    \DescribeMacro\dash
-    This macro prints an em-dash surrounded by thin spaces, as discussed
-    by \textcite[\pno~8]{Flynn}. When \cs*{DeclareUnicodeCharacter} is
-    available, the real em dash uses this definition.
-
-    \subsubsection{Color theme support}
-    \DescribeMacro\colortheme{<theme>}
-    The \cs{colortheme} macro, which is only available when the
-    \opt{color} option is \texttt{true}, applies a color theme to
-    the document. For a list of available color themes, see
-    \enquote{Color themes} \vpageref{ssec:color}.
-
-    \subsubsection{Font size macros}
-    The font size macros, expectedly, set the size of the text. They
-    do not take arguments, instead affecting all subsequent text of the
-    current \TeX\ group, so use braces to provide and limit context.
-    Also note that unlike \pkg{article}, these macros are \emph{all}
-    available, regardless of point size option.
-
-    \DescribeMacro\tiny
-    Typesets {\tiny tiny} text.
-    \DescribeMacro\scriptsize
-    Typesets {\scriptsize script-size} text.
-    \DescribeMacro\footnotesize
-    Typesets {\footnotesize footnote-sized} text.
-    \DescribeMacro\small
-    Typesets {\small small} text.
-    \DescribeMacro\normalsize
-    Typesets normal text.
-    \DescribeMacro\large
-    Typesets {\large large} text.
-    \DescribeMacro\Large
-    Typesets {\Large slightly larger} text.
-    \DescribeMacro\LARGE
-    Typesets {\LARGE even larger} text.
-    \DescribeMacro\huge
-    Typesets {\huge huge} text.
-    \DescribeMacro\Huge
-    Typesets {\Huge really huge} text.
-
-    \subsection{Color themes}\label{ssec:color}
-    \DescribeMacro\colortheme{<theme>}
-    If the package is loaded with the \opt{color} option, changing the color theme is
-    possible using \cs{colortheme}, which loads an
-    appropriate package. At the moment, four color themes are available.
-
-    \Theme{default}
-    The \thm{default} theme is fairly conservative, only coloring
-    \pkg{hyperef} links with more readable, slightly darker colors than
-    the standard ones. It should print well even on non-color printers.
-
-    \Theme{unscathed}
-    The \thm{unscathed} theme is based on a palette with the same
-    name on COLOURlovers%
-\footnote{\url{http://www.colourlovers.com/palette/1440498/unscathed}},
-    and applies a \textcolor[HTML]{463335}{dark brown} color to
-    emphasized text, a \textcolor[HTML]{CF5D3B}{rusty} color to links,
-    a \textcolor[HTML]{B34430}{darker rust} color to titles and a
-    \textcolor[HTML]{70524A}{lighter brown} to quotes.
-
-    \Theme{cruelwater}
-    The \thm{cruelwater} theme is also based on a palette from
-    COLOURlovers%
-\footnote{\url{http://www.colourlovers.com/palette/126030/Cruel_Water_at_Night}},
-    and applies a \textcolor[HTML]{030C22}{dark blue} color to bold
-    text and captions, a \textcolor[HTML]{20293F}{slightly less dark
-    blue} to titles and emphasized text, a \textcolor[HTML]{A9B0B3}{
-    light gray} color to small print and a \textcolor[HTML]{404749}{
-    darker gray} to quotes.
-
-    \Theme{violet}
-    The \thm{violet} theme, like \thm{unscathed} and \thm{cruelwater},
-    is based on a COLOURlovers palette%
-\footnote{\url{http://www.colourlovers.com/palette/1831303/Violet_White_Bedrm}}.
-    It colors all links \textcolor[HTML]{932444}{bright purple}, applies
-    a \textcolor[HTML]{311A2A}{dark puple} color to titles, bold text
-    and captions, a \textcolor[HTML]{D6CBCF}{grayish purple} to small
-    print, a \textcolor[HTML]{463335}{dark brown} color to quotes and a
-    \textcolor[HTML]{98758D}{pastel violet} color to emphasized text.
-
-    \Theme{skdoc}
-    The \thm{skdoc} theme is loosely based on the \pkg{skdoc} document class, with which this documentation is typeset.
-
-%    \subsection{Additional information}
-%    The document class includes a number of packages by default. This
-%    is useful to know, since passing explicit options to these packages
-%    will require you to utilize the \cs{PassOptionsToPackage} macro
-%    before you load the class using \cs{documentclass}.
-%    Table~\ref{tab:pkgs} lists the packages included by \thepkg\ along
-%    with their options (if applicable).
-%
-%    \begin{table}[tbp]
-%        \centering
-%        \caption{User-level packages included by \thepkg.}
-%        \label{tab:pkgs}
-%        \begin{tabular}{llp{15em}}
-%            \toprule
-%            \textbf{Package} & \textbf{Options} & \textbf{Comments} \\
-%            \midrule
-%            \pkg{amsmath} & \texttt{intlimits} & Provides \hologo{AmS} commands and environments. \\
-%            \pkg{amssymb} & & Only if not using \opt{kpfonts}.\\
-%            \pkg{babel} & see options \opt{swe} and \opt{eng} & Only loaded if \emph{not} using \hologo{XeTeX}.\\
-%            \pkg{calc} & & \\
-%            \pkg{fontenc} & \texttt{T1} & Only loaded if \emph{not} using \hologo{XeTeX}. Makes sure we are using a good font encoding for crisp appearance on-screen (OT1 is horrible). \\
-%            \pkg{fontspec} & \texttt{quiet} & Only loaded if using \hologo{XeTeX}. Provides basic OTF font selection commands.\\
-%            \pkg{geometry} & \texttt{a4paper} or \texttt{a5paper} & This is used by the \opt{paper} option to set the paper area. \\
-%            \pkg{icomma} & & \\
-%            \pkg{inconsolata} & & \\
-%            \pkg{microtype} & & Provides micro-typographic improvements.\\
-%            \pkg{multicol} & & Only loaded with the \opt{twocolumn} option. \\
-%            \pkg{polyglossia} & see options \opt{swe} and \opt{eng} & Only loaded if using \hologo{XeTeX}.\\
-%            \pkg{skmath} & & Only if it exists and \opt{nomath} isn't set.\\
-%            \pkg{textcomp} & & Only if not using \opt{kpfonts}.\\
-%            \pkg{xcolor} & & Only loaded with the \opt{color} option.\\
-%            \bottomrule
-%        \end{tabular}
-%    \end{table}
-
-    \section{Known issues}\label{sec:issues}
-    A list of current issues is available in the Github repository of this
-    package\footnote{\url{https://github.com/urdh/skrapport/issues}}, but as
-    of the release of \theversion, there is one known issue:
-    \begin{description}
-    %    \item[\#6]  ???
-        \item[--] If a \cs{subsubsection} is the last item of the Table
-        of Contents, it will not be indented properly.
-    \end{description}
-
-    If you discover any bugs in this package, please report them to the issue
-    tracker in the \thepackage\ Github repository.
-
-    \Implementation\ExplHack
-    \section{Implementation}
-    Start by including \pkg{expl3}, \pkg{l3keys2e} and some other
-    useful packages, as well as declaring the class.
-\begin{MacroCode}{class}
-\RequirePackage{expl3,l3keys2e,xparse,xstring,etoolbox}
-\ProvidesExplClass{skrapport}%
-    {2018/12/29}{0.12i}{stylish report document class}
-\end{MacroCode}
-
-    \subsection{Messages}
-    Tons of messages are declared for future use.
-\begin{MacroCode}{class}
-\msg_new:nnnn{skrapport}{option-deprecated}{Option~`#1'~deprecated!}
-    {Please~use~`#2'~instead.}
-\msg_new:nnnn{skrapport}{option-no-effect}{Option~`#1'~deprecated!}
-    {It~has~no~effect;~simply~use~nothing~instead.}
-\msg_new:nnnn{skrapport}{invalid-paper-size}{Invalid~paper~size~`#1'!}
-    {\token_to_str:N\__skrapport_setup_paper:n~was~invoked~with~an~
-     invalid~argument;~paper~size~will~remain~unchanged.}
-\msg_new:nnnn{skrapport}{invalid-point-size}{Invalid~point~size~`#1'!}
-    {\token_to_str:N\__skrapport_setup_ptsize:n~was~invoked~with~an~
-     invalid~argument;~cannot~continue~without~setting~a~valid~point~
-     size.~Please~fix~the~issue~before~typesetting~again.}
-\msg_new:nnnn{skrapport}{invalid-titles}{Invalid~title~type~`#1'!}
-    {\token_to_str:N\__skrapport_setup_titles:n~was~invoked~with~an~
-     invalid~argument;~falling~back~to~`#2'.}
-\msg_new:nnnn{skrapport}{invalid-lang}{Invalid~language~`#1'!}
-    {\token_to_str:N\__skrapport_setup_lang:n~was~invoked~with~an~
-     invalid~argument;~`babel'~and/or~`polyglossia'~will~remain~
-    unloaded.}
-\msg_new:nnnn{skrapport}{invalid-font}{Invalid~font~`#1'!}
-    {\token_to_str:N\__skrapport_setup_font:n~was~invoked~with~an~
-     invalid~argument;~no~font~package~has~been~loaded.~This~may~result~
-     in~bad~rendering~due~to~old~Computer~Modern~fonts.}
-\msg_new:nnnn{skrapport}{noop-call}{No-op~invokation~of~macro!}
-    {\token_to_str:N#1~was~invoked,~but~circumstances~dictate~that~the~
-    macro~should~do~nothing.~Will~do~\token_to_str:N\prg_do_nothing:~
-    instead.}
-\msg_new:nnnn{skrapport}{old-font-deprecated}{Deprecated~macro~\token_to_str:N#1!}
-    {The~old~font~macro~\token_to_str:N#1~is~deprecated!~Use~
-    \token_to_str:N#2~instead.}
-\msg_new:nnnn{skrapport}{color-patch-failed}{Could~not~patch~macro~\token_to_str:N#1!}
-    {The~macro~\token_to_str:N#1~could~not~be~patched!~Color~theme~
-    support~may~be~incomplete.}
-\msg_new:nnnn{skrapport}{license-not-printed}{Detected~\token_to_str:N\license\ but~no~`titlepage'!}
-    {The~text~provided~by~\token_to_str:N\license\ is~only~printed~when~
-    the~`titlepage'~environment~is~used,~but~it~seems~to~be~missing.}
-\msg_new:nnnn{skrapport}{font-requires-xetex}{The~`font=#1'~option~requires~XeTeX~or~luaTeX!}
-    {Please~choose~another~font~setup~or~compile~the~document~with~
-    either~xelatex~or~lualatex.}
-\msg_new:nnnn{skrapport}{tocdepth-too-deep}{TOC~depth~is~too~deep!}
-    {The~current~tocdepth,~#1,~is~not~supported.~Please~redefine~the~
-    \token_to_str:N#2~macro~to~enable~support.}
-\msg_new:nnnn{skrapport}{caption-in-figcenter}{Cannot~use~\token_to_str:N\caption\ here!}
-    {The~\token_to_str:N\caption\ macro~can't~be~used~inside~figcenter~environments!~Please~move~the~caption~to~the~enclosing~float~environment.}
-\end{MacroCode}
-    This message should probably not be used at all. Except in
-    development versions straight off Github, of course.
-\begin{MacroCode}{class}
-\msg_new:nnn{skrapport}{not-implemented}
-    {Unimplemented~macro~\token_to_str:N#1!}
-\end{MacroCode}
-
-    \subsection{Options}
-    First, a few booleans used by parts of the option handling code.
-    \begin{macro}{\g__skrapport_draft_bool}
-    Are we in \opt{draft} mode?
-\begin{MacroCode}{class}
-\bool_new:N\g__skrapport_draft_bool
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\g__skrapport_color_bool}
-    Are we supposed to be using \opt{color}s?
-\begin{MacroCode}{class}
-\bool_new:N\g__skrapport_color_bool
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\g__skrapport_has_polyglossia_bool}
-    Has \pkg{polyglossia} been loaded?
-\begin{MacroCode}{class}
-\bool_new:N\g__skrapport_has_polyglossia_bool
-\end{MacroCode}
-    \end{macro}
-
-    \subsubsection{Option setup macros}
-    In this section, all options declared in the previous section are
-    implemented using setup macros. Some of these may have to be called
-    in an appropriate order, but I haven't checked that yet.
-
-    \begin{macro}{\__skrapport_setup_paper:n}[1]
-        {Paper size (\texttt{a4} or \texttt{a5})}
-    \changes{0.12}{Use \pkg{typearea} to set paper size}
-    Note the extra integer, which is set up for use with \pkg{grid}.
-    \begin{macro*}{\g__skrapport_grid_lines_int}
-\begin{MacroCode}{class}
-\int_new:N\g__skrapport_grid_lines_int
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_paper:n#1{
-    \str_case:nnF{#1}{
-\end{MacroCode}
-    The two options simply consist of passing the appropriate option
-    to the \pkg{typearea} package. Note that the use of \pkg{typearea}
-    mean that we theoretically could accept more paper size options.
-\begin{MacroCode}{class}
-        {a4}{
-            \PassOptionsToPackage{paper=A4}{typearea}
-            \int_gset:Nn\g__skrapport_grid_lines_int{40}
-        }
-        {a5}{
-            \PassOptionsToPackage{paper=A5}{typearea}
-            \int_gset:Nn\g__skrapport_grid_lines_int{28}
-        }
-    }{
-\end{MacroCode}
-    Invalid paper sizes (such calls should never happen) are
-    handled by issuing a warning and hoping that the default
-    paper size is acceptable.
-\begin{MacroCode}{class}
-        \msg_warning:nnn{skrapport}{invalid-paper-size}{#1}
-    }
-\end{MacroCode}
-    The \pkg{typearea} package is loaded with the options specified
-    earlier through \cs{PassOptionsToPackage}, and some additional ones.
-\begin{MacroCode}{class}
-    \AtEndOfClass{\RequirePackage[DIV=calc]{typearea}}
-\end{MacroCode}
-    In case the point size changes later, or two column mode is
-    activated, we recalculate the typearea just before the typesetting
-    begins.
-\begin{MacroCode}{class}
-    \AtBeginDocument{\recalctypearea}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_ptsize:n}[1]
-        {Point size (\texttt{10pt}, \texttt{11pt} or \texttt{12pt})}
-    The standard point sizes are defined much like in the \pkg{article}
-    class, \emph{i.e.} by saving a number and loading \file{size10.clo},
-    \file{size11.clo} or \file{size12.clo} as appropriate
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_ptsize:n#1{
-    \str_case:nnF{#1}{
-\end{MacroCode}
-    \begin{macro*}{\c__skrapport_ptsize_token}
-\begin{MacroCode}{class}
-        {10pt}{\int_const:Nn\c__skrapport_ptsize_int{0}}
-        {11pt}{\int_const:Nn\c__skrapport_ptsize_int{1}}
-        {12pt}{\int_const:Nn\c__skrapport_ptsize_int{2}}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-    }{
-\end{MacroCode}
-    Invalid point sizes are critical errors, since we can't recover
-    from them in any reasonable way. Loading a default point size is
-    unreasonable, since all in-class calls to this macro should know
-    what sizes are available, and if you're calling it with invalid
-    parameters from elsewhere, you should be punished.
-\begin{MacroCode}{class}
-        \msg_critical:nnn{skrapport}{invalid-point-size}{#1}
-    }
-    \file_input:n{skrapport-size#1.clo}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_twocolumn:}
-    \changes{0.12c}{Major changes to the sectioning commands, to
-    override what \pkg{grid} is doing}
-    Setting up for twocolumn mode is slightly compliacted. Note that this
-    macro should be called from \cs{AtEndOfClass} to ensure that we patch
-    everything correctly. Note also that \pkg{multicol} is always loaded
-    as it is used for the \env{theindex} environment.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_twocolumn:{
-    \RequirePackage{etoolbox}
-    \AtBeginDocument{
-        \KOMAoptions{twocolumn=false,DIV=12}
-    }
-\end{MacroCode}
-    We include the \pkg{grid} package in two-column mode, because
-    it looks way better that way.
-\begin{MacroCode}{class}
-    \int_set:Nn\l_tmpa_int{10+\c__skrapport_ptsize_int}
-    \int_set:Nn\l_tmpb_int{12*\l_tmpa_int/10}
-    \RequirePackage[fontsize=\l_tmpa_int pt,
-                    baseline=\l_tmpb_int pt,
-                    lines=\g__skrapport_grid_lines_int]{grid}
-\end{MacroCode}
-    Now, we patch commands. First up is \env{abstract}. Save the old
-    one in case we need it (we do).
-\begin{MacroCode}{class}
-    \cs_set_eq:Nc\__skrapport_onecol_abstract:{environment~abstract~code}
-    \cs_set_eq:Nc\__skrapport_end_onecol_abstract:{environment~abstract~end~aux~}
-    \pretocmd{\__skrapport_onecol_abstract:}{\null}{}{}
-    \RenewDocumentEnvironment{abstract}{}{\section*{\abstractname}}{}
-\end{MacroCode}
-    Then \env{document} (kind of, at least) and \cs{maketitle}. Again,
-    save the old \cs{maketitle}.
-\begin{MacroCode}{class}
-    \AfterEndPreamble{\begin{multicols}{2}}
-    \AtEndDocument{\end{multicols}}
-    \cs_set_eq:NN\__skrapport_onecol_maketitle:\maketitle
-    \pretocmd{\maketitle}{\begin{onecol}}{}{}
-    \apptocmd{\maketitle}{\end{onecol}}{}{}
-\end{MacroCode}
-    Next up is \env{titlepage}. This is where we need the saved
-    \env{abstract} and \cs{maketitle}.
-\begin{MacroCode}{class}
-    \BeforeBeginEnvironment{titlepage}{
-        \begin{onecol}
-        \cs_set_eq:cN{environment~abstract~code}\__skrapport_onecol_abstract:
-        \cs_set_eq:cN{environment~abstract~end~aux~}\__skrapport_end_onecol_abstract:
-        \cs_set_eq:NN\maketitle\__skrapport_onecol_maketitle:
-    }
-    \AfterEndEnvironment{titlepage}{\end{onecol}}
-\end{MacroCode}
-    Always typeset \env{equation} and friends outside the grid:
-\begin{MacroCode}{class}
-    \BeforeBeginEnvironment{equation}{\begin{gridenv}}
-    \AfterEndEnvironment{equation}{\end{gridenv}}
-    \BeforeBeginEnvironment{equation*}{\begin{gridenv}}
-    \AfterEndEnvironment{equation*}{\end{gridenv}}
-    \BeforeBeginEnvironment{multline}{\begin{gridenv}}
-    \AfterEndEnvironment{multline}{\end{gridenv}}
-    \BeforeBeginEnvironment{multline*}{\begin{gridenv}}
-    \AfterEndEnvironment{multline*}{\end{gridenv}}
-    \BeforeBeginEnvironment{gather}{\begin{gridenv}}
-    \AfterEndEnvironment{gather}{\end{gridenv}}
-    \BeforeBeginEnvironment{gather*}{\begin{gridenv}}
-    \AfterEndEnvironment{gather*}{\end{gridenv}}
-    \BeforeBeginEnvironment{align}{\begin{gridenv}}
-    \AfterEndEnvironment{align}{\end{gridenv}}
-    \BeforeBeginEnvironment{align*}{\begin{gridenv}}
-    \AfterEndEnvironment{align*}{\end{gridenv}}
-    \BeforeBeginEnvironment{flalign}{\begin{gridenv}}
-    \AfterEndEnvironment{flalign}{\end{gridenv}}
-    \BeforeBeginEnvironment{flalign*}{\begin{gridenv}}
-    \AfterEndEnvironment{flalign*}{\end{gridenv}}
-    \BeforeBeginEnvironment{alignat}{\begin{gridenv}}
-    \AfterEndEnvironment{alignat}{\end{gridenv}}
-    \BeforeBeginEnvironment{alignat*}{\begin{gridenv}}
-    \AfterEndEnvironment{alignat*}{\end{gridenv}}
-\end{MacroCode}
-    Since \pkg{grid} override the usual sectioning macros, we have to
-    provide fixed and improved variants that conform to our style
-    and out public API. This is only necessary for
-    the \enquote{major} sectioning macros, not \cs*{paragraph} and
-    \cs*{subparagraph}.
-    \begin{macro*}{\section}
-\begin{MacroCode}{class}
-    \skip_gset:Nn\c__skrapport_section_pre_skip{-.999\baselineskip}
-    \skip_gset:Nn\c__skrapport_section_post_skip{0.001\baselineskip}
-    \dim_gset:Nn \c__skrapport_section_indent_dim{\c_zero_dim}
-    \cs_set_protected:Nn\__skrapport_section_style:
-        {\normalfont\__skrapport_title_style:}
-    \DeclareDocumentCommand\section{som}{
-        \__skrapport_generic_section:nnnnn{section}{1}{##1}{##2}{##3}
-    }
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\subsection}
-\begin{MacroCode}{class}
-    \skip_gset:Nn\c__skrapport_subsection_pre_skip{\baselineskip}
-    \skip_gset:Nn\c__skrapport_subsection_post_skip{-.35\baselineskip}
-    \dim_gset:Nn \c__skrapport_subsection_indent_dim{\c_zero_dim}
-    \cs_set_protected:Nn\__skrapport_subsection_style:
-        {\normalfont\__skrapport_title_style:\unskip}
-    \DeclareDocumentCommand\subsection{som}{
-        \__skrapport_generic_section:nnnnn{subsection}{2}{##1}{##2}{##3}
-    }
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\subsubsection}
-\begin{MacroCode}{class}
-    \skip_gset:Nn\c__skrapport_subsubsection_pre_skip{\baselineskip}
-    \skip_gset:Nn\c__skrapport_subsubsection_post_skip{-.35\baselineskip}
-    \dim_gset:Nn \c__skrapport_subsubsection_indent_dim{\c_zero_dim}
-    \cs_set_protected:Nn\__skrapport_subsubsection_style:
-        {\normalfont\itshape\__skrapport_title_style:\unskip}
-    \DeclareDocumentCommand\subsubsection{som}{
-        \__skrapport_generic_section:nnnnn{subsubsection}{3}{##1}{##2}{##3}
-    }
-\end{MacroCode}
-    \end{macro*}
-    We also redefine \cs{l at section} to make the TOC blend in a bit.
-    \begin{macro*}{\l at section}
-\begin{MacroCode}{class}
-    \DeclareDocumentCommand\l at section{mm}{
-        \group_begin:
-            \skip_vertical:n{.75ex}
-            \__skrapport_title_style:
-            \__skrapport_toc_line:nnnnn{1}{0em}{1.3em}{##1}{
-                \__skrapport_title_style: ##2
-            }
-        \group_end:
-    }
-\end{MacroCode}
-    \end{macro*}
-    The \env{figure} environment is patched\ldots
-\begin{MacroCode}{class}
-    \cs_new:Npn\__skrapport_xdblfloat:nn##1##2{\@xdblfloat{##1}[##2]}
-    \cs_generate_variant:Nn\__skrapport_xdblfloat:nn{nx}
-    \RenewDocumentEnvironment{figure}{o}{
-        \begin{gridenv}
-            \vspace{\intextsep}
-            \begin{minipage}{\linewidth}
-                \cs_set:Npn\@captype{figure}
-                \centering
-    }{
-            \end{minipage}
-            \vspace{\intextsep}
-        \end{gridenv}
-    }
-    \RenewDocumentEnvironment{figure*}{o}{
-        \__skrapport_xdblfloat:nx{figure}
-            {\IfNoValueTF{##1}{tp}{##1}}
-        \dim_set_eq:NN\hsize\textwidth
-        \dim_set_eq:NN\linewidth\textwidth
-        \centering
-    }{
-        \end at dblfloat
-    }
-\end{MacroCode}
-    \ldots as is \env{table}.
-\begin{MacroCode}{class}
-    \RenewDocumentEnvironment{table}{o}{%
-        \begin{gridenv}
-            \vspace{\intextsep}
-            \begin{minipage}{\linewidth}
-                \cs_set:Npn\@captype{table}
-                \cs_set_eq:NN\__skrapport_old_caption:\caption
-                \RenewDocumentCommand{\caption}{om}{%
-                    \skip_set_eq:NN\l_tmpa_skip\abovecaptionskip
-                    \skip_set_eq:NN\abovecaptionskip\belowcaptionskip
-                    \skip_set_eq:NN\belowcaptionskip\l_tmpa_skip
-                    \vspace{\abovecaptionskip}
-                    \__skrapport_old_caption:[####1]{####2}
-                    \vspace{\belowcaptionskip}
-                }
-                \centering
-    }{
-            \end{minipage}
-            \vspace{\intextsep}
-        \end{gridenv}
-    }
-    \RenewDocumentEnvironment{table*}{o}{
-        \__skrapport_xdblfloat:nx{table}
-            {\IfNoValueTF{##1}{tp}{##1}}
-        \dim_set_eq:NN\hsize\textwidth
-        \dim_set_eq:NN\linewidth\textwidth
-        \centering
-    }{
-        \end at dblfloat
-    }
-\end{MacroCode}
-    \begin{environment}{onecol}
-    \changes{0.10}{Fixed, now not completely broken}
-    \changes{0.12b}{Reverted to \cs{newenvironment}, because \pkg{xparse} breaks the trickery}
-    Finally, we define an environment \env{onecol} that typesets
-    arbitrary material in a single column. This is a bit tricky to
-    do, and probably cargo-cult as well. We define the start of the
-    environment to immediately end itself (with the empty ending),
-    then end the \env{multiols} environment, redefine our end macro
-    to start \env{multicols} as well as redefining the start of
-    \env{onecol} to simply reset itself, then start the environment
-    again only to have it ended at once.
-
-    Basically, we trick \LaTeX\ into thinking that we have an empty
-    \env{onecol} environment at the end of the first \env{multicols},
-    then some content inside a fake \env{onecol}, then an empty
-    \env{onecol} at the start of the next \env{multicols}. Voilá, no
-    wierd group errors!
-\begin{MacroCode}{class}
-    \newenvironment{onecol}{
-        \end{onecol}
-        \end{multicols}
-        \group_begin:
-        \cs_set:Npn\endonecol{
-            \group_end:
-            \begin{multicols}{2}
-            \cs_set_eq:NN\__skrapport_old_onecol:\onecol
-            \cs_set:Npn\onecol{
-                \cs_set_eq:NN\onecol\__skrapport_old_onecol:
-            }
-            \begin{onecol}
-        }
-        \cs_set:Npn\onecol{}
-        \begin{onecol}
-    }{}
-\end{MacroCode}
-    \end{environment}
-\begin{MacroCode}{class}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_leqno:}
-    Instead of loading \file{leqno.clo}, we reimplement the (tiny) file
-    as LaTeX3 code and include it directly. It's not terribly advanced.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_leqno:{
-    \RenewDocumentCommand\@eqnnum{}{
-        \hbox_to_wd:nn{.01pt}{}
-        \hbox_overlap_right:n{
-            \normalfont\normalcolor
-            \skip_horizontal:n{-\displaywidth}
-            (\theequation)
-        }
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_fleqn:}
-    The \file{fleqn.clo} functionality is more complex, so we include
-    the file instead of reimplementing.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_fleqn:{
-    \file_input:n{fleqn.clo}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_titles:n}[1]
-        {Title style (\texttt{rm}, \texttt{it},
-                      \texttt{bf} or \texttt{sf})}
-    The title styles are implemented by creating a new macro
-    \cs{__skrapport_title_style:} which will later be used by
-    \cs{section} and friends.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_titles:n#1{
-    \str_case:nnF{#1}{
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_title_style:}
-        \changes{0.11a}{Removed incorrect \cs{bfseries}, replaced
-                        \cs{relax} with \cs{rmfamily}}
-        \changes{0.12d}{Added \texttt{it} option}
-\begin{MacroCode}{class}
-        {rm}{\cs_new_protected:Nn\__skrapport_title_style:{\rmfamily}}
-        {it}{\cs_new_protected:Nn\__skrapport_title_style:{\itshape}}
-        {bf}{\cs_new_protected:Nn\__skrapport_title_style:{\bfseries}}
-        {sf}{\cs_new_protected:Nn\__skrapport_title_style:{\sffamily}}
-\end{MacroCode}
-    \end{macro*}
-    The fall-back for incorrect parameters is an informational message
-    along with setting up for \cs{rmfamily} titles.
-\begin{MacroCode}{class}
-    }{
-        \msg_info:nnnn{skrapport}{invalid-titles}{#1}{rm}
-        \__skrapport_setup_titles:n{rm}
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_lang:n}[1]
-        {Language (\texttt{sv}, \texttt{en} or \texttt{de})}
-    \changes{0.12d}{Use \pkg{babel} mechanisms for language-dependent
-        strings, so they work correctly in \env{otherlanguage}}
-    Thus far only two language options are implemented, each of them
-    setting the other as the \enquote{other} language. We check if
-    \pkg{polyglossia} has been loaded (this is done by
-    \cs{__skrapport_setup_xelatex:}): if it has, we use the
-    \pkg{polyglossia} interface for setting languages, otherwise we
-    load the \pkg{babel} package with appropriate options.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_lang:n#1{
-    \str_case:nnF{#1}{
-        {sv}{
-            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
-                \setmainlanguage{swedish}
-                \setotherlanguage[variant=british]{english}
-            }{
-                \RequirePackage[british,swedish]{babel}
-            }
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_RFC_language:}
-\begin{MacroCode}{class}
-            \cs_gset:Nn\__skrapport_RFC_language:{swe}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-            \PassOptionsToPackage{iso,swedish}{isodate}
-        }
-        {en}{
-            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
-                \setmainlanguage[variant=british]{english}
-                \setotherlanguage{swedish}
-            }{
-                \RequirePackage[swedish,british]{babel}
-            }
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_RFC_language:}
-\begin{MacroCode}{class}
-            \cs_gset:Nn\__skrapport_RFC_language:{eng}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-            \PassOptionsToPackage{iso,british}{isodate}
-        }
-        {de}{
-            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
-                \setmainlanguage{ngerman}
-                \setotherlanguage[variant=british]{english}
-            }{
-                \RequirePackage[british,ngerman]{babel}
-            }
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_RFC_language:}
-\begin{MacroCode}{class}
-            \cs_gset:Nn\__skrapport_RFC_language:{ger}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-            \PassOptionsToPackage{iso,ngerman}{isodate}
-        }
-    }{
-\end{MacroCode}
-    Fallback prints an informational message and leaves both \pkg{babel}
-    and \pkg{polyglossia} unloaded.
-\begin{MacroCode}{class}
-        \msg_info:nnn{skrapport}{invalid-lang}{#1}
-    }
-\end{MacroCode}
-    After loading \pkg{babel} or \pkg{polyglossia}, we provide
-    translation strings. This is done using the \cs*{addto} and
-    \cs*{captions<lang>}, which is compatible with both packages.
-    \begin{macro*}{\captionsswedish}
-    \changes{0.12e}{Don't redefine standard language strings}
-    \begin{macro*}{\dateswedish}
-\begin{MacroCode}{class}
-    \addto\captionsswedish{
-        \cs_gset:Nn\__skrapport_and_word:{och}
-        \cs_gset:Nn\__skrapport_Email_word:{E-post}
-        \cs_gset:Nn\__skrapport_Comment_word:{Kommentar}
-        \cs_gset:Nn\__skrapport_eg_word:{t.ex.}
-        \cs_gset:Nn\__skrapport_ie_word:{dvs.}
-        \cs_gset:Nn\__skrapport_etc_word:{\emph{etc.}}
-        \cs_gset:Nn\__skrapport_cf_word:{jfr.}
-        \cs_gset:Nn\__skrapport_viz_word:{dvs.}
-    }
-    \cs_gset:Npn\dateswedish{
-        \cs_gset:Npn\today
-            {\int_use:N\year--\int_use:N\month--\int_use:N\day}
-    }
-\end{MacroCode}
-    \end{macro*}
-    \end{macro*}
-    \begin{macro*}{\captionsbritish}
-    \changes{0.12e}{Don't redefine standard language strings}
-    \begin{macro*}{\datebritish}
-\begin{MacroCode}{class}
-    \addto\captionsbritish{
-        \cs_gset:Nn\__skrapport_and_word:{and}
-        \cs_gset:Nn\__skrapport_Email_word:{Email}
-        \cs_gset:Nn\__skrapport_Comment_word:{Comment}
-        \cs_gset:Nn\__skrapport_eg_word:{\emph{e.g.}}
-        \cs_gset:Nn\__skrapport_ie_word:{\emph{i.e.}}
-        \cs_gset:Nn\__skrapport_etc_word:{\emph{etc.}}
-        \cs_gset:Nn\__skrapport_cf_word:{\emph{cf.}}
-        \cs_gset:Nn\__skrapport_viz_word:{\emph{viz.}}
-    }
-    \cs_gset:Npn\datebritish{
-        \cs_gset:Npn\today
-            {\int_use:N\year--\int_use:N\month--\int_use:N\day}
-    }
-\end{MacroCode}
-    \end{macro*}
-    \end{macro*}
-    \begin{macro*}{\captionsngerman}
-    \changes{0.12e}{Don't redefine standard language strings}
-    \begin{macro*}{\datengerman}
-\begin{MacroCode}{class}
-    \addto\captionsngerman{
-        \cs_gset:Nn\__skrapport_and_word:{und}
-        \cs_gset:Nn\__skrapport_Email_word:{E-Mail}
-        \cs_gset:Nn\__skrapport_Comment_word:{Kommentar}
-        \cs_gset:Nn\__skrapport_eg_word:{z.~B.}
-        \cs_gset:Nn\__skrapport_ie_word:{d.~h.}
-        \cs_gset:Nn\__skrapport_etc_word:{usw.}
-        \cs_gset:Nn\__skrapport_cf_word:{vgl.}
-        \cs_gset:Nn\__skrapport_viz_word:{\emph{viz.}}
-    }
-    \cs_gset:Npn\datengerman{
-        \cs_gset:Npn\today
-            {\int_use:N\day.\,\int_use:N\month.\,\int_use:N\year}
-    }
-\end{MacroCode}
-    \end{macro*}
-    \end{macro*}
-\begin{MacroCode}{class}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_font:n}[1]
-        {Font (\texttt{none}, \texttt{kpfonts}, \texttt{lmodern},
-         \texttt{palatino}, \texttt{minion} or \texttt{skdoc})}
-    \changes{0.12a}{Drop the post-\pkg{amsmath} hook entirely.
-                    Load \pkg{fontspec} in \texttt{word} and
-                    \texttt{none}}
-    We set up the somewhat involved font stack.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_font:n#1{
-    \PassOptionsToPackage{intlimits}{amsmath}
-    \PassOptionsToPackage{full}{textcomp}
-    \str_case:nnF{#1}{
-\end{MacroCode}
-    The \texttt{none} font stack is special. If we're using
-    \hologo{XeTeX} or \hologo{LuaTeX}, we load the \pkg{fontspec}
-    package. Otherwise, we do nothing.
-\begin{MacroCode}{class}
-        {none}{
-            \bool_if:nT{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
-                \RequirePackage[quiet]{fontspec}
-            }
-        }
-\end{MacroCode}
-    The \texttt{kpfonts} font stack simply loads \pkg{kpfonts}...
-\begin{MacroCode}{class}
-        {kpfonts}{
-            \RequirePackage[easyscsl,intlimits,sumlimits]{kpfonts}
-        }
-\end{MacroCode}
-    ...and the \texttt{lmodern} font stack loads \pkg{lmodern}.
-\begin{MacroCode}{class}
-        {lmodern}{
-            \RequirePackage{lmodern}
-        }
-\end{MacroCode}
-    The \texttt{palatino} font stack loads \pkg{tgpagella} if available,
-    but falls back to \pkg{mathpazo} otherwise.
-\begin{MacroCode}{class}
-        {palatino}{
-            \file_if_exist:nTF{tgpagella.sty}{
-                \RequirePackage{arev}
-                \RequirePackage{pxfonts}
-                \RequirePackage{tgpagella}
-            }{
-                \RequirePackage[osf]{mathpazo}
-            }
-        }
-\end{MacroCode}
-    Minion Pro, provided by the \texttt{minion} font stack, loads both
-    \pkg{minionpro} (the font) and \pkg{MnSymbol} (appropriate math
-    symbols).
-\begin{MacroCode}{class}
-        {minion}{
-            \AtEndOfClass{
-                \cs_set_eq:NN\__skrapport_old_vec:\vec
-                \cs_undefine:N\vec
-                \RequirePackage{MyriadPro}
-                \RequirePackage{MinionPro}
-                \RequirePackage{MnSymbol}
-                \cs_set_eq:NN\vec\__skrapport_old_vec:
-            }
-        }
-\end{MacroCode}
-    Finally, the \texttt{skdoc} font stack loads \pkg{PTSerif} and
-    \pkg{opensans}, inspired by the style of the \pkg{skdoc} class.
-\begin{MacroCode}{class}
-        {skdoc}{
-            \RequirePackage{PTSerif}
-            \RequirePackage[defaultsans,osfigures,scale=0.95]{opensans}
-        }
-\end{MacroCode}
-    The \texttt{word} font stack mimics recent versions of Microsoft
-    Word, using Cambria, Consolas and Calibri. This requires a modern
-    engine that supports \pkg{fontspec}.
-\begin{MacroCode}{class}
-        {word}{
-            \bool_if:nF{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
-                \msg_fatal:nnn{skrapport}{font-requires-xetex}{word}
-            }
-            \RequirePackage[quiet]{fontspec}
-            \setmainfont[Ligatures=TeX]{Cambria}
-            \setsansfont[Ligatures=TeX]{Calibri}
-            \setmonofont[Scale=0.95]{Consolas}
-            \apptocmd{\__skrapport_after_ams_hook:}{
-                \setmathfont{Cambria Math}
-            }{}{}
-        }
-    }{
-\end{MacroCode}
-    As a fallback, we print a waning and load no font packages.
-\begin{MacroCode}{class}
-        \msg_warning:nnn{skrapport}{invalid-font}{#1}
-    }
-    \str_if_eq:nnF{#1}{none}{
-\end{MacroCode}
-    All font stacks except \texttt{none} and \texttt{kpfonts} require
-    additional packages. Or, rather, \texttt{none} can't load these
-    packages by definition, and \texttt{kpfonts} already loads them
-    internally \footcite[p.~1]{kpfonts}. They are always useful.
-
-    We also load \pkg{sourcecodepro} as our monospace font.
-    But we don't load it when using the \texttt{none} font stack.
-\begin{MacroCode}{class}
-        \str_if_eq:nnF{#1}{kpfonts}{
-            \str_if_eq:nnF{#1}{word}{
-                \RequirePackage{sourcecodepro}
-            }
-            \AtEndOfClass{
-                \RequirePackage{amsmath}
-\end{MacroCode}
-    The \pkg{mnsymbol} package is incompatible with \pkg{amssymb}.
-\begin{MacroCode}{class}
-              \str_if_eq:nnF{#1}{minion}{
-                    \RequirePackage{amssymb}
-                }
-                \RequirePackage{textcomp}
-            }
-        }
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_parskip:}
-    \changes{0.12a}{Fixed bug where font size reset the \cs{parindent}}
-    This part mixes \LaTeXe\ and \LaTeX3, which may not be a good thing.
-    On the other hand, it seems hard to avoid. Most of the code is
-    half-lifted from \pkg{parskip} and converted to \LaTeX3.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_parskip:{
-    \AtEndOfClass{
-        \skip_gset:Nn\parskip{0.5\baselineskip~plus~2pt}
-        \dim_gzero:N\parindent
-        \skip_gset:Nn\parfillskip{30pt~plus~1fil}
-\end{MacroCode}
-    \begin{macro*}{\@listI}
-    \begin{macro*}{\@listi}
-\begin{MacroCode}{class}
-        \cs_gset:Npn\@listI{
-            \dim_set_eq:NN\leftmargin\leftmargini
-            \dim_set_eq:NN\parsep\parskip
-            \dim_zero:N\topsep
-            \dim_zero:N\itemsep
-        }
-        \cs_gset_eq:NN\@listi\@listI
-\end{MacroCode}
-    \end{macro*}
-    \end{macro*}
-\begin{MacroCode}{class}
-        \dim_gset_eq:NN\leftmargin\leftmargini
-        \dim_gset_eq:NN\parsep\parskip
-        \dim_gzero:N\topsep
-        \dim_gzero:N\itemsep
-\end{MacroCode}
-    \begin{macro*}{\@listii}
-\begin{MacroCode}{class}
-        \cs_gset:Npn\@listii{
-            \dim_set_eq:NN\leftmargin\leftmarginii
-            \dim_set_eq:NN\labelwidth\leftmarginii
-            \dim_set_eq:NN\parsep\parskip
-            \dim_sub:Nn\labelwidth{-\labelsep}
-            \dim_zero:N\topsep
-            \dim_zero:N\itemsep
-        }
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\@listiii}
-\begin{MacroCode}{class}
-        \cs_gset:Npn\@listiii{
-            \dim_set_eq:NN\leftmargin\leftmarginiii
-            \dim_set_eq:NN\labelwidth\leftmarginiii
-            \dim_set_eq:NN\parsep\parskip
-            \dim_sub:Nn\labelwidth{-\labelsep}
-            \dim_zero:N\topsep
-            \dim_zero:N\itemsep
-        }
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-        \dim_gzero:N\partopsep
-\end{MacroCode}
-    \begin{macro*}{\@starttoc}[1]
-        {Table of contents extension}
-    \changes{0.12h}{Replaced use of deprecated \cs{c_job_name_tl}
-                    with \cs{c_sys_jobname_str}}
-\begin{MacroCode}{class}
-        \RenewDocumentCommand\@starttoc{m}{
-            \group_begin:
-            \dim_zero:N\parskip
-            \file_if_exist:nT{\c_sys_jobname_str.##1}{
-                \file_input:n{\c_sys_jobname_str.##1}
-            }
-            \if at filesw
-                \iow_new:c{tf@##1}
-                \iow_open:cn{tf@##1}{\c_sys_jobname_str.##1}
-            \fi
-            \@nobreakfalse
-            \group_end:
-        }
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_math:}
-    This is the simplest option, only loading \pkg{skmath} if it exists.
-    Also the post-skmath hook is run.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_math:{
-    \file_if_exist:nT{skmath.sty}{\RequirePackage{skmath}}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_draft:}
-    Setting up the \opt{draft} mode is also fairly easy, as we only need
-    wider (wider than \SI{0}{\point}, that is) \cs{overfullrule}s.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_draft:{
-    \bool_if:NTF\g__skrapport_draft_bool{
-        \dim_gset:Nn\overfullrule{5pt}
-    }{
-        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_draft:}
-        \prg_do_nothing:
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_color:}
-    Setting up colors is also fairly easy, as we only have to load the
-    \pkg{xcolor} package. All the other color-related code is in other
-    places, utilizing the \cs{g__skdoc_color_bool} boolean.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_color:{
-    \bool_if:NTF\g__skrapport_color_bool{
-        \RequirePackage{xcolor}
-        \PassOptionsToPackage{
-            labelfont+={bf,color=skrapport at captioncolor}
-        }{caption}
-    }{
-        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_color:}
-        \prg_do_nothing:
-    }
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_setup_color:n}
-    We may also set up a specific color theme using options. This is
-    easily done by first calling \cs{__skrapport_setup_color:}, then
-    calling \cs{colortheme} at \cs{BeginDocument}.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_setup_color:n#1{
-    \__skrapport_setup_color:
-    \bool_if:NTF\g__skrapport_color_bool{
-        \AtBeginDocument{\colortheme{#1}}
-    }{
-        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_color:n}
-        \prg_do_nothing:
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_xelatex:}
-    \changes{0.12a}{Don't load \pkg{polyglossia} for \hologo{LuaTeX}.
-                    Don't load \pkg{fontspec} for any engine}
-    \changes{0.12d}{Force \texttt{quiet} option for \pkg{fontspec}}
-    This macro contains special setup code for the \hologo{XeTeX} and
-    \hologo{LuaTeX} engines, such as providing
-    missing commands (which have been replaced by equivalent Unicode
-    characters, apparently) and loading \pkg{polyglossia}.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_xelatex:{
-    \AtEndOfClass{
-        \cs_undefine:N\dblcolon
-        \cs_undefine:N\coloneqq
-        \cs_undefine:N\Coloneqq
-        \cs_undefine:N\eqqcolon
-        \RequirePackage{unicode-math}
-        \unimathsetup {
-            math-style     = ISO,
-            bold-style     = ISO,
-            sans-style     = italic,
-            nabla          = upright,
-            partial        = italic,
-            vargreek-shape = unicode
-        }
-    }
-\end{MacroCode}
-    \begin{macro}{\nobreakspace}
-\begin{MacroCode}{class}
-    \DeclareDocumentCommand\nobreakspace{}{\leavevmode\nobreak\space}
-\end{MacroCode}
-    \end{macro}
-    Since apparently \hologo{LuaLaTeX} isn't supported by
-    \pkg{polyglossia}, we fall back to \pkg{babel} in that engine.
-    Thus, only load \pkg{polyglossia} for \hologo{XeLaTeX}.
-\begin{MacroCode}{class}
-    \sys_if_engine_xetex:TF{
-        \PassOptionsToPackage{quiet}{fontspec}
-        \RequirePackage{polyglossia}
-        \bool_gset_true:N\g__skrapport_has_polyglossia_bool
-    }{
-        \bool_gset_false:N\g__skrapport_has_polyglossia_bool
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_pdftex:}
-    \changes{0.12d}{Load \pkg{isomath}}
-    This macro contains special setup code for the \hologo{pdfTeX}
-    engine. Currently, it only sets the font encoding to T1.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_pdftex:{
-    \RequirePackage[T1]{fontenc}
-    \AtEndOfClass{
-        \RequirePackage{isomath}
-    }
-    \bool_gset_false:N\g__skrapport_has_polyglossia_bool
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_setup_engine_specific:}
-    This macro detects the current engine and calls the appropriate
-    engine setup macro.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_engine_specific:{
-    \bool_if:nTF{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
-        \__skrapport_setup_xelatex:
-    }{
-        \__skrapport_setup_pdftex:
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{Variants with expandable arguments}
-    Some option setup macros accept arguments, but those arguments are
-    not expanded. Here, we provide variants which expand the parameters
-    properly using the excellent \pkg{l3prg} functionality.
-    \begin{macro}{\__skrapport_setup_ptsize:x}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_setup_ptsize:n{ x }
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_setup_titles:x}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_setup_titles:n{ x }
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_setup_lang:x}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_setup_lang:n{ x }
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_setup_font:x}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_setup_font:n{ x }
-\end{MacroCode}
-    \end{macro}
-
-    \subsubsection{Key-value system}
-    Let's define some \pkg{l3keys} corresponding to the options. Note
-    that most of them just refer to a macro in their \texttt{.code:n}
-    block --- these macros were defined earlier.
-\begin{MacroCode}{class}
-\keys_define:nn{skrapport}{
-\end{MacroCode}
-    \begin{option}{paper}{a4paper, a5paper, a4, a5}
-    \changes{0.12}{Values \texttt{a4paper} and \texttt{a5paper} are
-                  now deprecated}
-    \begin{option}{a4paper}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{a5paper}
-    \changes{0.12}{Option is now deprecated}
-    Declare the paper size options. Note that having to handle the
-    deprecated \texttt{a4paper} and \texttt{a5paper} values of the
-    \opt{paper} option makes the code less readable. In a few
-    versions, when these options are removed, the code should probably
-    be refactored to look something like the \opt{ptsize} option below.
-\begin{MacroCode}{class}
-    paper .choice:,
-    paper / a4 .code:n =
-        {\__skrapport_setup_paper:n{a4}},
-    paper / a5 .code:n =
-        {\__skrapport_setup_paper:n{a5}},
-    paper / a4paper .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {paper=a4paper}{paper=a4}
-         \keys_set:nn{skrapport}{paper=a4}},
-    paper / a5paper .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {paper=a5paper}{paper=a5}
-         \keys_set:nn{skrapport}{paper=a4}},
-    paper .value_required:n = true,
-    a4paper .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {a4paper}{paper=a4}
-         \keys_set:nn{skrapport}{paper=a4}},
-    a5paper .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {a5paper}{paper=a5}
-         \keys_set:nn{skrapport}{paper=a5}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-    \end{option}
-
-    \begin{option}{ptsize}{10pt, 11pt, 12pt}
-    \begin{option}{10pt}
-    \begin{option}{11pt}
-    \begin{option}{12pt}
-    Declare point size options. Note that we don't deprecate the
-    non-\opt{ptsize} aliases as they are much easier to type.
-\begin{MacroCode}{class}
-    ptsize .choices:nn =
-        { 10pt, 11pt, 12pt }
-        {\__skrapport_setup_ptsize:x{\tl_use:N\l_keys_choice_tl}},
-    ptsize .value_required:n = true,
-    10pt .meta:n = {ptsize=10pt},
-    11pt .meta:n = {ptsize=11pt},
-    12pt .meta:n = {ptsize=12pt},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-
-    \begin{option}{twocolumn}
-    \changes{0.08}{Added option \opt{twocolumn}}
-    \changes{0.12a}{Use \cs{AtEndOfClass} instead of \cs{AtEndClass}}
-    Declare column options. The code here should be run through
-    \cs{AtEndOfClass} so that the setup code can patch everythin
-    properly.
-    \begin{option}{onecolumn}
-    \changes{0.12}{Option is now deprecated}
-    The \opt{onecolumn} option has no effect and is deprecated.
-\begin{MacroCode}{class}
-    twocolumn .code:n =
-        {\AtEndOfClass{\__skrapport_setup_twocolumn:}},
-    onecolumn .code:n =
-        {\msg_warning:nnn{skrapport}{option-no-effect}{onecolumn}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-
-    \begin{option}{draft}{true, false}
-    \begin{option}{final}
-    Declare \opt{draft} and \opt{final} options. Note that even if the
-    \opt{final} option does absolutely nothing, users may expect it to
-    be there and as such it is not deprecated.
-\begin{MacroCode}{class}
-    draft .choice:,
-    draft / true .code:n =
-        {\bool_gset_true:N\g__skrapport_draft_bool
-         \__skrapport_setup_draft:},
-    draft / false .code:n =
-        {\bool_gset_false:N\g__skrapport_draft_bool},
-    draft .default:n = true,
-    final .code:n = {\prg_do_nothing:},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-
-    Declare the \opt{fleqn} and \opt{leqno} options, mainly for
-    compatibility with the \pkg{article} class.
-    \begin{option}{leqno}
-\begin{MacroCode}{class}
-    leqno .code:n =
-        {\__skrapport_setup_leqno:},
-\end{MacroCode}
-    \end{option}
-    \begin{option}{fleqn}
-\begin{MacroCode}{class}
-    fleqn .code:n =
-        {\__skrapport_setup_fleqn:},
-\end{MacroCode}
-    \end{option}
-
-    \begin{option}{titles}{rm, it, bf, sf}
-    Declare options for section titles. The old \opt*{??titles} aliases
-    are deprecated and will be removed in a future version.
-    \begin{option}{rmtitles}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{bftitles}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{sftitles}
-    \changes{0.09}{Added \opt{sftitles} option}
-    \changes{0.12}{Option is now deprecated}
-\begin{MacroCode}{class}
-    titles .choices:nn =
-        { rm, it, bf, sf }
-        {\__skrapport_setup_titles:x{\tl_use:N\l_keys_choice_tl}},
-    titles .value_required:n = true,
-    rmtitles .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {rmtitles}{titles=rm}
-         \keys_set:nn{skrapport}{titles=rm}},
-    bftitles .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {bftitles}{titles=bf}
-         \keys_set:nn{skrapport}{titles=bf}},
-    sftitles .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {sftitles}{titles=sf}
-         \keys_set:nn{skrapport}{titles=sf}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-
-    \begin{option}{hanging-titles}{true, false}
-    \changes{0.12d}{Added option to enable \enquote{hanging} titles}
-\begin{MacroCode}{class}
-    hanging-titles .bool_gset:N = \g__skrapport_hanging_titles_bool,
-    hanging-titles .default:n = true,
-    hanging-titles .initial:n = false,
-\end{MacroCode}
-    \end{option}
-
-    \begin{option}{lang}{sv, en, de}
-    \changes{0.12c}{Added option value \texttt{de}}
-    \changes{0.12}{Incompatible change: values \texttt{swe} and
-                   \texttt{eng} are now \texttt{sv} and \texttt{en},
-                   respectively}
-    \begin{option}{swe}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{eng}
-    \changes{0.12}{Option is now deprecated}
-    Declare options for swedish/english \pkg{babel} or
-    \pkg{polyglossia} support. Again, the old \opt{swe} and \opt{eng}
-    aliases are deprecated and will be removed.
-\begin{MacroCode}{class}
-    lang .choices:nn =
-        { sv, en, de }
-        {\__skrapport_setup_lang:x{\tl_use:N\l_keys_choice_tl}},
-    lang .value_required:n = true,
-    swe .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {swe}{lang=sv}
-         \keys_set:nn{skrapport}{lang=sv}},
-    eng .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {eng}{lang=en}
-         \keys_set:nn{skrapport}{lang=en}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-    \end{option}
-
-    \begin{option}{font}{none, kpfonts, lmodern, palatino, minion, skdoc}
-    Declare font options. Again, aliases are deprecated.
-    \begin{option}{kpfonts}
-    \changes{0.07}{Added option \opt{kpfonts}, set as default
-                    option for fonts}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{lmodern}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{palatino}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{minion}
-    \changes{0.11}{Added option \opt{minion}}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{skdoc}
-    \changes{0.11a}{Added option \opt{skdoc}}
-    \changes{0.12}{Option is now deprecated}
-    \begin{option}{nofont}
-    \changes{0.12}{Option is now deprecated}
-\begin{MacroCode}{class}
-    font .choices:nn =
-        { none, kpfonts, lmodern, palatino, minion, skdoc, word }
-        {\__skrapport_setup_font:x{\tl_use:N\l_keys_choice_tl}},
-    font .value_required:n = true,
-    nofont .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {nofont}{font=none}
-         \keys_set:nn{skrapport}{font=none}},
-    kpfonts .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {kpfonts}{font=kpfonts}
-         \keys_set:nn{skrapport}{font=kpfonts}},
-    lmodern .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {lmodern}{font=lmodern}
-         \keys_set:nn{skrapport}{font=lmodern}},
-    palatino .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {palatino}{font=palatino}
-         \keys_set:nn{skrapport}{font=palatino}},
-    minion .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {minion}{font=minion}
-         \keys_set:nn{skrapport}{font=minion}},
-    skdoc .code:n =
-        {\msg_warning:nnnn{skrapport}{option-deprecated}
-            {skdoc}{font=skdoc}
-         \keys_set:nn{skrapport}{font=skdoc}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-    \end{option}
-
-    \begin{option}{indent}{true, false}
-    \changes{0.02}{Added option of indented paragraphs}
-    \begin{option}{noindent}
-    \changes{0.12}{Option is now deprecated}
-    Declare indentation options. Since the \opt{noindent} option
-    technically has no effect and is an alias of \opt{indent=false},
-    it has been deprecated.
-\begin{MacroCode}{class}
-    indent .choice:,
-    indent / true .code:n = {\prg_do_nothing:},
-    indent / false .code:n = {\__skrapport_setup_parskip:},
-    indent .default:n = true,
-    noindent .code:n =
-        {\msg_warning:nnn{skrapport}{option-no-effect}{noindent}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-
-    \begin{option}{color}{true, false}
-    \changes{0.09}{Added \opt{color} option}
-    \changes{0.12}{Converted to a key-value option which will load
-                   the specified color theme.}
-    \begin{option}{nocolor}
-    Declare color options. Note that we explicitly set the boolean
-    \cs{g__skrapport_color_bool} as well as setting up the colors
-    through \cs{__skrapport_setup_color:n}, so that we can keep track
-    of the color usage even after the options have been set up.
-\begin{MacroCode}{class}
-    color .code:n =
-        {\str_if_eq:nnTF{#1}{false}
-            {\bool_gset_false:N\g__skrapport_color_bool}
-            {\bool_gset_true:N\g__skrapport_color_bool
-             \str_if_eq:nnTF{#1}{true}
-                {\__skrapport_setup_color:n{default}}
-                {\__skrapport_setup_color:n{#1}}}},
-    color .default:n = true,
-    nocolor .meta:n = {color=false},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-
-    \begin{option}{nomath}{true, false}
-    \begin{option}{math}
-    \changes{0.12}{Option is now deprecated}
-    Declare math options. As with the \opt{noindent} option, \opt{math}
-    has been deprecated since it is an alias and has no effect.
-\begin{MacroCode}{class}
-    nomath .choice:,
-    nomath / false .code:n = {\__skrapport_setup_math:},
-    nomath / true .code:n = {\prg_do_nothing:},
-    nomath .default:n = true,
-    math .code:n =
-        {\msg_warning:nnn{skrapport}{option-no-effect}{math}},
-\end{MacroCode}
-    \end{option}
-    \end{option}
-
-    That's it, we're done setting up the \pkg{l3keys} for the options.
-\begin{MacroCode}{class}
-}
-\end{MacroCode}
-
-    We will now define a \enquote{defaults} key-value system because
-    \texttt{.initial:n} doesn't work they way we want it to. This
-    key-value system will be used to set flags with which we will
-    determine wether to set certain default options.
-    \begin{macro}{\__skrapport_setup_defaults:}
-    \changes{0.12a}{\texttt{word} font stack is now the default font stack when using \hologo{XeLaTeX}}
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_setup_defaults:{
-    \bool_new:N\l__skrapport_has_option_indent_bool
-    \bool_new:N\l__skrapport_has_option_nomath_bool
-    \bool_new:N\l__skrapport_has_option_color_bool
-    \bool_new:N\l__skrapport_has_option_font_bool
-    \bool_new:N\l__skrapport_has_option_lang_bool
-    \bool_new:N\l__skrapport_has_option_titles_bool
-    \bool_new:N\l__skrapport_has_option_draft_bool
-    \bool_new:N\l__skrapport_has_option_ptsize_bool
-    \bool_new:N\l__skrapport_has_option_paper_bool
-    \keys_define:nn{skrapport-default}{
-        indent .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_indent_bool},
-        nomath .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_nomath_bool},
-        color .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_color_bool},
-        font .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_font_bool},
-        lang .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_lang_bool},
-        titles .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_titles_bool},
-        draft .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_draft_bool},
-        ptsize .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_ptsize_bool},
-        paper .code:n =
-            {\bool_set_true:N\l__skrapport_has_option_paper_bool},
-\end{MacroCode}
-    The following keys correspond to deprecated options. They should
-    be removed when the corresponding options are removed.
-\begin{MacroCode}{class}
-        nofont .code:n =   {\keys_set:nn{skrapport-default}{font}},
-        kpfonts .code:n =  {\keys_set:nn{skrapport-default}{font}},
-        lmodern .code:n =  {\keys_set:nn{skrapport-default}{font}},
-        palatino .code:n = {\keys_set:nn{skrapport-default}{font}},
-        minion .code:n =   {\keys_set:nn{skrapport-default}{font}},
-        skdoc .code:n =    {\keys_set:nn{skrapport-default}{font}},
-        swe .code:n =      {\keys_set:nn{skrapport-default}{lang}},
-        eng .code:n =      {\keys_set:nn{skrapport-default}{lang}},
-        rmtitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
-        bftitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
-        sftitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
-        10pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
-        11pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
-        12pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
-        a4paper .code:n =  {\keys_set:nn{skrapport-default}{paper}},
-        a5paper .code:n =  {\keys_set:nn{skrapport-default}{paper}},
-\end{MacroCode}
-\begin{MacroCode}{class}
-    }
-    \ProcessKeysOptions{skrapport-default}
-    \bool_if:NF\l__skrapport_has_option_indent_bool{
-        \keys_set:nn{skrapport}{indent=false}
-    }
-    \bool_if:NF\l__skrapport_has_option_nomath_bool{
-        \keys_set:nn{skrapport}{nomath=false}
-    }
-    \bool_if:NF\l__skrapport_has_option_color_bool{
-        \keys_set:nn{skrapport}{color=true}
-    }
-    \bool_if:NF\l__skrapport_has_option_font_bool{
-        \sys_if_engine_xetex:TF{
-            \keys_set:nn{skrapport}{font=word}
-        }{
-            \keys_set:nn{skrapport}{font=kpfonts}
-        }
-    }
-    \bool_if:NF\l__skrapport_has_option_lang_bool{
-        \keys_set:nn{skrapport}{lang=sv}
-    }
-    \bool_if:NF\l__skrapport_has_option_titles_bool{
-        \keys_set:nn{skrapport}{titles=bf}
-    }
-    \bool_if:NF\l__skrapport_has_option_draft_bool{
-        \keys_set:nn{skrapport}{draft=false}
-    }
-    \bool_if:NF\l__skrapport_has_option_ptsize_bool{
-        \keys_set:nn{skrapport}{ptsize=11pt}
-    }
-    \bool_if:NF\l__skrapport_has_option_paper_bool{
-        \keys_set:nn{skrapport}{paper=a4}
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    Finally, we process the class options using the keys defined earlier.
-    We also run the engine-specific code implemented above, and the fake
-    key system used to define defaults.
-
-    Note that we save and restore \cs{@classoptionslist} around the
-    engine-specific setup. This is because we might load \pkg{xkeyval},
-    which apparently removes all key-value options from the list when
-    loaded (and this is really bad for us).
-\begin{MacroCode}{class}
-\cs_set_eq:NN\__skrapport_tmpa_cs:\@classoptionslist
-\RequirePackage{xkeyval}
-\cs_set_eq:NN\__skrapport_tmpb_cs:\@classoptionslist
-\cs_set_eq:NN\@classoptionslist\__skrapport_tmpa_cs:
-\__skrapport_setup_engine_specific:
-\ProcessKeysOptions{skrapport}
-\__skrapport_setup_defaults:
-\cs_set_eq:NN\@classoptionslist\__skrapport_tmpb_cs:
-\cs_undefine:N\__skrapport_tmpa_cs:
-\cs_undefine:N\__skrapport_tmpb_cs:
-\end{MacroCode}
-
-    \subsection{Required packages}
-    We also include some essential packages per default. The
-    \pkg{calc} package, for instance, is essential in later
-    definitions.
-\begin{MacroCode}{class}
-\RequirePackage{calc,isodate,multicol}
-\end{MacroCode}
-
-    At the end of the class definition we load a very
-    useful package that improves typesetting: \pkg{microtype}.
-    Also set \cs{frenchspacing}.
-\begin{MacroCode}{class}
-\AtEndOfClass{
-    \RequirePackage{microtype}
-    \frenchspacing
-}
-\end{MacroCode}
-
-    When the document starts, we set the URL style if the user has
-    loaded the \pkg{url} package.
-\begin{MacroCode}{class}
-\AtBeginDocument{
-    \cs_if_exist:NT\urlstyle{\urlstyle{same}}
-}
-\end{MacroCode}
-
-    \subsection{Utilities}
-    We define useful \LaTeX3 replacements of \LaTeXe\ stuff that
-    hasn't made its way into \pkg{interface3}. This includes
-    a \cs{settowidth} clone and possibly more stuff later.
-    \begin{macro}{\dim_set_to_wd:Nn}
-\begin{MacroCode}{class}
-\cs_new:Npn\dim_set_to_wd:Nn#1#2{
-    \hbox_set:Nn\l_tmpa_box{#2}
-    \dim_set:Nn#1{\box_wd:N\l_tmpa_box}
-    \box_clear:N\l_tmpa_box
-}
-\end{MacroCode}
-    \end{macro}
-
-    \subsection{Hidden things}
-    Set some default measurements (should probably be replaced with
-    simply loading \pkg{typearea}).
-\begin{MacroCode}{class}
-\dim_add:Nn\textwidth{0.5\oddsidemargin}
-\dim_add:Nn\textwidth{0.5\evensidemargin}
-\dim_add:Nn\oddsidemargin{-0.5\oddsidemargin}
-\dim_add:Nn\evensidemargin{-0.5\evensidemargin}
-\dim_gset:Nn\lineskip{1pt}
-\dim_gset:Nn\normallineskip{1pt}
-\end{MacroCode}
-    \begin{macro}{\baselinestretch}
-    Note that we can't use \cs{RenewDocumentCommand} as that yields an
-    infinite loop before or at \env{document}.
-\begin{MacroCode}{class}
-\cs_set:Npn\baselinestretch{}
-\end{MacroCode}
-    \end{macro}
-
-    \subsubsection{Penalties}
-\begin{MacroCode}{class}
-\int_gset:Nn\@lowpenalty  {51}
-\int_gset:Nn\@medpenalty {151}
-\int_gset:Nn\@highpenalty{301}
-\setcounter{topnumber}{2}
-\setcounter{bottomnumber}{1}
-\setcounter{totalnumber}{4}
-\setcounter{dbltopnumber}{2}
-\end{MacroCode}
-    \begin{macro}{\topfraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\topfraction{}{.75}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\bottomfraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\bottomfraction{}{.5}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\textfraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\textfraction{}{.25}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\floatpagefraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\floatpagefraction{}{.625}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\dbltopfraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\dbltopfraction{}{.75}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\dblfloatpagefraction}
-\begin{MacroCode}{class}
-\RenewDocumentCommand\dblfloatpagefraction{}{.625}
-\end{MacroCode}
-    \end{macro}
-
-    \subsection{User-level commands and environments}
-    \subsubsection{The front page}
-    \begin{macro}{\title}[1]
-        {Title of the document}
-    \begin{macro*}{\g__skrapport_title_tl}
-\begin{MacroCode}{class}
-\tl_new:N\g__skrapport_title_tl
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\title{m}{
-    \tl_gset:Nn\g__skrapport_title_tl{#1}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\date}[1]
-        {Date in ISO8601 format}
-    The \cs{date} macro sets the current date of the document. It only
-    accepts dates accepted by \pkg{isodate} (or the special value
-    \enquote{\texttt{today}}). Dates are always printed using the
-    current format as specified by the \pkg{isodate} package. The default
-    value of the date (if \cs{date} isn't used) is \cs{today}.
-    \begin{macro*}{\g__skrapport_title_tl}
-\begin{MacroCode}{class}
-\tl_new:N\g__skrapport_date_tl
-\tl_gset:Nn\g__skrapport_date_tl{\today}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\date{m}{
-    \str_if_eq:nnTF{#1}{today}{
-        \tl_gset:Nn\g__skrapport_date_tl{\today}
-    }{
-        \if_meaning:w \today #1
-            \tl_gset:Nn\g__skrapport_date_tl{\today}
-        \else:
-            \tl_gset:Nn\g__skrapport_date_tl{\printdate{#1}}
-        \fi:
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \begin{macro}{\author}[2]
-        {Optional email address}
-        {Author name}
-    \changes{0.10b}{Improved \cs{author} macro}
-    \changes{0.12}{Use comma-separated lists instead of token list}
-    The \cs{author} macro is redefined to accept an optional argument
-    and to be used multiple times.
-    \begin{macro*}{\__skrapport_email:n}[1]
-        {Email address}
-    \changes{0.12a}{Store \cs{textemdash} instead of \cs{NoValue}}
-    The \cs{skrapport at email} helper macro typesets an email address
-    using \pkg{hyperref} if that package is used. This is suboptimal,
-    the macro behaves differently with respect to special characters
-    depending on wether \pkg{hyperref} is loaded or not.
-\begin{MacroCode}{class}
-\cs_new_nopar:Npn\__skrapport_email:n#1{
-    \texttt{#1}
-}
-\AtBeginDocument{
-    \cs_if_exist:NT\href{
-        \cs_gset_nopar:Npn\__skrapport_email:n#1{
-            \href{mailto:#1}{\nolinkurl{#1}}
-        }
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\g__skrapport_author_clist}
-\begin{MacroCode}{class}
-\clist_new:N\g__skrapport_author_clist
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\g__skrapport_email_clist}
-\begin{MacroCode}{class}
-\clist_new:N\g__skrapport_email_clist
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\author{om}{%
-    \clist_gput_right:Nn\g__skrapport_author_clist{#2}
-    \clist_gput_right:Nn\g__skrapport_email_clist
-        {\IfNoValueTF{#1}{\textemdash}{#1}}
-}
-\end{MacroCode}
-    \begin{macro}{\__skrapport_author_list:}
-    \changes{0.12a}{Use \cs{clist_use:Nnnn}}
-    This macro lists all the authors in the comma-separated list
-    \cs{g__skrapport_author_clist}, separating them with a comma
-    or the word \enquote{and} (in the appropriate language).
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_author_list:{
-    \clist_use:Nnnn\g__skrapport_author_clist
-        {~\__skrapport_and_word:{}~}{,~}{~\__skrapport_and_word:{}~}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_email_list:}
-    \changes{0.12a}{Use \cs{clist_use:Nnnn}}
-    This macro lists the email addresses in the comma-separated list
-    \cs{g__skrapport_email_clist} by applying \cs{__skrapport_email:}
-    if appropriate (or printing an em-dash if no value exists) and
-    separating them with commas.
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_email_list:{
-    \int_compare:nT{\clist_count:N\g__skrapport_author_clist>\c_zero}{
-        \clist_use:Nnnn\g__skrapport_email_clist{\\}{\\}{\\}
-    }
-}
-\end{MacroCode}
-    \end{macro}
-    \end{macro}
-
-    \begin{macro}{\regarding}[1]
-        {Text snippet}
-    This macro defines a variable used by \cs{maketitle} to insert a
-    simple text into the header on the title page.
-    \begin{macro*}{\g__skrapport_regarding_tl}
-\begin{MacroCode}{class}
-\tl_new:N\g__skrapport_regarding_tl
-\DeclareDocumentCommand\regarding{m}{
-    \tl_gset:Nn\g__skrapport_regarding_tl{#1}
-}
-\end{MacroCode}
-    \end{macro*}
-    \end{macro}
-
-    \begin{macro}{\license}[1]
-        {Short license description}
-    \changes{0.07}{Added command \cs{license}}
-    This macro defines a variable used by \cs{maketitle} to insert a
-    license into the footer on the titlepage.
-    \begin{macro*}{\g__skrapport_copyright_unprinted_bool}
-\begin{MacroCode}{class}
-\bool_new:N\g__skrapport_copyright_unprinted_bool
-\AtEndDocument{
-    \bool_if:NT\g__skrapport_copyright_unprinted_bool
-        {\msg_warning:nn{skrapport}{license-not-printed}}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\g__skrapport_copyright_tl}
-\begin{MacroCode}{class}
-\tl_new:N\g__skrapport_copyright_tl
-\DeclareDocumentCommand\license{m}{
-    \tl_gset:Nn\g__skrapport_copyright_tl{#1}
-    \bool_gset_true:N\g__skrapport_copyright_unprinted_bool
-}
-\end{MacroCode}
-    \end{macro*}
-    \end{macro}
-
-    \begin{macro}{\maketitle}[1]
-        {Optional key-value list}
-    \changes{0.12a}{Added optional key-value argument and PDFinfo}
-    The standard \cs{maketitle} command as taken from the \pkg{article}
-    class but with some basic restyling.
-\begin{MacroCode}{class}
-\keys_define:nn{skrapport/maketitle}{
-    hide .clist_set:N = \l__skrapport_maketitle_hide_clist,
-    hide .value_required:n = true,
-    nopdfinfo .bool_set_inverse:N = \l__skrapport_maketitle_pdfinfo_bool,
-    nopdfinfo .default:n = true,
-    nopdfinfo .initial:n = false
-}
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_smallprint_style:}
-\begin{MacroCode}{class}
-\cs_new_protected:Nn\__skrapport_smallprint_style:{}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_abstract_style:}
-\begin{MacroCode}{class}
-\cs_new_protected:Nn\__skrapport_abstract_style:
-    {\__skrapport_title_style:}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\maketitle{o}{
-    \clist_clear:N\l__skrapport_maketitle_hide_clist
-    \IfNoValueF{#1}{\keys_set:nn{skrapport/maketitle}{#1}}
-    \bool_if:NT\l__skrapport_maketitle_pdfinfo_bool{
-        \exp_args:NNx\cs_if_exist_use:NT\hypersetup{{
-            pdfinfo={
-                Title={\tl_use:N\g__skrapport_title_tl},
-                Subject={\tl_use:N\g__skrapport_regarding_tl},
-                Author={
-                    \clist_use:Nnnn\g__skrapport_author_clist{,~}{,~}{,~}
-                },
-                Lang={\__skrapport_RFC_language:}
-            }
-        }}
-    }
-    \par
-    \group_begin:
-        \RenewDocumentCommand\thefootnote{}{
-            \fnsymbol{footnote}
-        }
-        \RenewDocumentCommand\@makefnmark{}{
-            \hbox_overlap_right:n{
-                \@textsuperscript{\normalfont\@thefnmark}
-            }
-        }
-        \RenewDocumentCommand\@makefntext{+m}{
-            \dim_set:Nn\parindent{1em}\noindent
-            \hbox_to_wd:nn{1.8em}{
-                \hss\@textsuperscript{\normalfont\@thefnmark}
-            }
-            ##1
-        }
-        \newpage
-        \int_gzero:N\@topnum
-        \__skrapport_maketitle:
-        \thispagestyle{plain}
-    \group_end:
-    \setcounter{footnote}{0}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro*}{\__skrapport_maketitle:}
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_maketitle:{
-    \newpage
-    \hbox:n{}
-    \begin{flushleft}
-        \vspace{-\headsep}
-        \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{regarding}{
-            \small\__skrapport_smallprint_style:
-            \tl_use:N\g__skrapport_regarding_tl
-            \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{date}{
-                \tl_if_empty:NF\g__skrapport_regarding_tl{,~}
-            }
-        }
-        \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{date}{
-            \tl_use:N\g__skrapport_date_tl
-        }
-        \clist_if_in:NnTF\l__skrapport_maketitle_hide_clist{regarding}{
-            \clist_if_in:NnTF\l__skrapport_maketitle_hide_clist{date}
-                {}{\par}
-        }{\par}
-        \vspace{1.5cm}
-        {
-            \Huge\__skrapport_title_style:
-            \tl_use:N\g__skrapport_title_tl
-            \par
-        }
-        \vspace{.125cm}
-        {
-            \Large\__skrapport_title_style:
-            \__skrapport_author_list:
-        }
-        \vspace{.75cm}
-    \end{flushleft}
-    \par
-    \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{email}{
-        \dim_set_to_abstract_or_email_wd:N\l_tmpa_dim
-        \bool_gset_false:N\g__skrapport_abstract_used
-        \dim_set:Nn\l_tmpb_dim
-            {\textwidth-\l_tmpa_dim-\c__skrapport_abstract_separator_dim}
-        \begin{minipage}[t]{\l_tmpa_dim}
-            \begin{flushright}
-                \leavevmode\__skrapport_abstract_style:
-                \__skrapport_Email_word:
-            \end{flushright}
-        \end{minipage}
-        \hspace{\c__skrapport_abstract_separator_dim}
-        \begin{minipage}[t]{\l_tmpb_dim}
-            \__skrapport_email_list:
-        \end{minipage}
-        \par
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \begin{macro*}{\g__skrapport_abstract_used}
-    This boolean keeps track of wether the \env{abstract} environment has
-    been used, and is set accordingly in the main auxillary file.
-\begin{MacroCode}{class}
-\bool_new:N\g__skrapport_abstract_used
-\AtEndDocument{
-    \iow_shipout:Nx\@mainaux{ % !!!
-        \exp_not:N\ExplSyntaxOn
-        \bool_if:NTF\g__skrapport_abstract_used
-            {\exp_not:n{\bool_gset_true:N\g__skrapport_abstract_used}}
-            {\exp_not:n{\bool_gset_false:N\g__skrapport_abstract_used}}
-        \exp_not:N\ExplSyntaxOff
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\dim_set_to_abstract_or_email_wd:N}[1]
-        {Dimension register}
-    \changes{0.12a}{Set abstract style before word to fix incorrect width}
-    This macro sets a dimension to either the width of the email word
-    or the width of the abstract word depending on the state of
-    \cs{g__skrapport_abstract_used}.
-\begin{MacroCode}{class}
-\cs_new:Npn\dim_set_to_abstract_or_email_wd:N#1{
-    \dim_set_to_wd:Nn\l_tmpa_dim
-        {\__skrapport_abstract_style:\abstractname}
-    \dim_set_to_wd:Nn\l_tmpb_dim
-        {\__skrapport_abstract_style:\__skrapport_Email_word:}
-    \bool_if:NTF\g__skrapport_abstract_used
-        {\dim_set:Nn#1{\dim_max:nn{\l_tmpa_dim}{\l_tmpb_dim}}}
-        {\dim_set_eq:NN#1\l_tmpb_dim}
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \begin{environment}{abstract}
-    Standard restyled \env{abstract} environment from the
-    \pkg{article} class.
-\begin{MacroCode}{class}
-\dim_const:Nn\c__skrapport_abstract_separator_dim{1em}
-\DeclareDocumentEnvironment{abstract}{}{
-    \bool_gset_true:N\g__skrapport_abstract_used
-    \dim_set_to_abstract_or_email_wd:N\l_tmpa_dim
-    \dim_set:Nn\l_tmpb_dim
-        {\textwidth-\l_tmpa_dim-\c__skrapport_abstract_separator_dim}
-    \begin{minipage}[t]{\l_tmpa_dim}
-        \begin{flushright}
-            \leavevmode\__skrapport_abstract_style:
-            \abstractname
-        \end{flushright}
-    \end{minipage}
-    \hspace{\c__skrapport_abstract_separator_dim}
-    \begin{minipage}[t]{\l_tmpb_dim}
-}{
-    \end{minipage}
-}
-\end{MacroCode}
-    \end{environment}
-
-    \begin{environment}{titlepage}
-    Titlepage environment.
-    \begin{macro}{\ps at skrapport@titlepage}
-\begin{MacroCode}{class}
-\cs_new:Npn\ps at skrapport@titlepage{
-    \cs_set:Npn\@oddhead{}
-    \cs_set:Npn\@evenhead{}
-    \cs_set:Npn\@oddfoot{
-        \begin{minipage}{\textwidth}
-            \raggedleft\small\par
-            \__skrapport_smallprint_style:
-            \tl_use:N\g__skrapport_copyright_tl
-        \end{minipage}
-    }
-    \cs_set_eq:NN\@evenfoot\@oddfoot
-}
-\end{MacroCode}
-    \end{macro}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{titlepage}{}{
-    \cleardoublepage\setcounter{page}{1}
-}{
-    \bool_gset_false:N\g__skrapport_copyright_unprinted_bool
-    \thispagestyle{skrapport at titlepage}
-    \cleardoublepage\setcounter{page}{1}
-}
-\end{MacroCode}
-    \end{environment}
-
-    \subsubsection{Sectioning}
-    Sectioning macros. This is kind of messy. We start with creaiting
-    some counters using our homemade \LaTeX3 counter macros.
-\begin{MacroCode}{class}
-\setcounter{secnumdepth}{3}
-\newcounter{section}
-\newcounter{subsection}[section]
-\newcounter{subsubsection}[subsection]
-\newcounter{paragraph}[subsubsection]
-\newcounter{subparagraph}[paragraph]
-\end{MacroCode}
-    Next up, we have macros to display the section numberings.
-    \begin{macro*}{\thesection}
-\begin{MacroCode}{class}
-\cs_gset:Npn\thesection{
-    \arabic{section}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\thesubsection}
-\begin{MacroCode}{class}
-\cs_gset:Npn\thesubsection{
-    \thesection.\arabic{subsection}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\thesubsubsection}
-\begin{MacroCode}{class}
-\cs_gset:Npn\thesubsubsection{
-    \thesubsection.\arabic{subsubsection}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\theparagraph}
-\begin{MacroCode}{class}
-\cs_gset:Npn\theparagraph{
-    \thesubsubsection.\arabic{paragraph}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\thesubparagraph}
-\begin{MacroCode}{class}
-\cs_gset:Npn\thesubparagraph{
-    \theparagraph.\arabic{subparagraph}
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \paragraph{Pre- and post-section spacing}
-    Here comes the tricky part. We define two generic macros that add
-    spacing before and after the section title, to condense the code
-    a bit. Note that many of the following macros constitute a
-    reimplementation of \cs{@startsection}, \cs{@ssect}, \cs{@sect} and
-    friends.
-    \begin{macro}{\__skrapport_pre_section:n}[1]
-        {Skip before the section title}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_pre_section:n#1{
-    \leavevmode\par
-    \skip_set:Nn\l_tmpa_skip{#1}
-    \@afterindenttrue % !!!
-    \dim_compare:nT{\l_tmpa_skip<\c_zero_skip}{
-        \skip_set:Nn\l_tmpa_skip{-\l_tmpa_skip}
-        \@afterindentfalse % !!!
-    }
-    \if at nobreak \everypar{} \else
-        \addpenalty\@secpenalty % !!!
-        \skip_vertical:N\l_tmpa_skip
-    \fi
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_post_section:n}[1]
-        {Space after the section title}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_post_section:n#1{
-    \skip_set:Nn\l_tmpa_skip{#1}
-    \dim_compare:nTF{\l_tmpa_skip>\c_zero_skip}{
-        \par\nobreak
-        \skip_vertical:N\l_tmpa_skip
-        \@afterheading % !!!
-    }{
-        \@nobreakfalse
-        \global\@noskipsectrue
-        \skip_horizontal:n{-\l_tmpa_skip}
-    }
-    \ignorespaces
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{Starred sections}
-    These two macros (the first only being an alias for the second with
-    its last argument empty) correspond to unnumbered sections. Or,
-    rather, they do all the typesetting and none of the TOC/counter
-    stuff. This means that starred sections only call this macro, while
-    unstarred ones call other macros in addition to this macro.
-    \begin{macro*}{\__skrapport_section_star:nnn}
-    \begin{macro}{\__skrapport_section_star:nnnn}[4]
-        {Indentation of section title}
-        {Styling of the section title}
-        {Actual section title}
-        {Optional code to run in the indentation (\emph{i.e.} section number)}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_section_star:nnn#1#2#3{
-    \__skrapport_section_star:nnnn{#1}{#2}{#3}{}
-}
-\cs_new:Npn\__skrapport_section_star:nnnn#1#2#3#4{
-    \group_begin:
-        #2
-        \hbox_set:Nn\l_tmpa_box{{\skip_horizontal:n{#1}#4}}
-        \dim_set:Nn\hangindent{#1+\box_wd:N\l_tmpa_box}
-        \noindent\box_use_drop:N\l_tmpa_box
-        \interlinepenalty\@M % !!!
-        #3
-    \group_end:
-}
-\end{MacroCode}
-    \end{macro}
-    \end{macro*}
-
-    \paragraph{Unstarred sections}
-    This macro typesets an unstarred section, \emph{i.e.} a numbered
-    one. It defines a temporary macro containing the section number
-    (maybe, depends on the \cs{c at secnumdepth} counter) which it passes
-    on to \cs{__skrapport_section_star:nnnn}, and then writes some things
-    to the TOC.
-    \begin{macro}{\__skrapport_section_nostar:nnnnnn}[6]
-        {Section counter name}
-        {Section level}
-        {Indentation of section title}
-        {Styling of the section title}
-        {Actual section title}
-        {Section title for TOC}
-    \changes{0.12d}{Added support for hanging titles}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_section_nostar:nnnnnn#1#2#3#4#5#6{
-    \cs_set:Nn\__skrapport_saved_section:{}
-    \int_compare:nF{#2>\value{secnumdepth}}{
-        \refstepcounter{#1}
-        \cs_set:Nn\__skrapport_saved_section:{
-            \bool_if:NTF\g__skrapport_hanging_titles_bool
-                {\llap{\use:c{the#1}\hspace{1ex}}}
-                {\use:c{the#1}~}
-        }
-    }
-    \__skrapport_section_star:nnnn
-        {#3}{#4}{#5}{\__skrapport_saved_section:}
-    \use:c{#1mark}{#6}
-    \addcontentsline{toc}{#1}{
-        \int_compare:nF{#2>\value{secnumdepth}}{
-            \protect\numberline{\use:c{the#1}}
-        }
-        #6
-    }
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{Generic sectioning macros}
-    We will now set up a generic sectioning macro. First, we need
-    version of the above macros that expand their arguments.
-    \begin{macro*}{\__skrapport_pre_section:c}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_pre_section:n{c}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_post_section:c}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_post_section:n{c}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_section_star:ccn}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_section_star:nnn{ccn}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_section_nostar:nnccnn}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\__skrapport_section_nostar:nnnnnn{nnccnn}
-\end{MacroCode}
-    \end{macro*}
-
-    Now, the generic sectioning macro basically takes the sectioning
-    macro arguments straight up (arguments 3--5), additionally
-    requiring a section counter name and a section level. It expects
-    that constant dimensions (see definition of \cs{section} below)
-    and a formatting macro are available, and passes these as arguments
-    to the underlying sectioning macros as appropriate.
-    \begin{macro}{\__skrapport_generic_section:nnnnn}[5]
-        {Section counter name}
-        {Section level}
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional argument (or \cs{NoValue})}
-        {Section title text}
-\begin{MacroCode}{class}
-\cs_set:Nn\__skrapport_generic_section:nnnnn{
-    \__skrapport_pre_section:c{c__skrapport_#1_pre_skip}
-    \IfBooleanTF#3{
-        \__skrapport_section_star:ccn
-            {c__skrapport_#1_indent_dim}
-            {__skrapport_#1_style:}
-            {#5}
-    }{
-        \IfNoValueTF{#4}{
-            \__skrapport_section_nostar:nnccnn
-                {#1}{#2}
-                {c__skrapport_#1_indent_dim}
-                {__skrapport_#1_style:}
-                {#5}
-                {#5}
-        }{
-            \__skrapport_section_nostar:nnccnn
-                {#1}{#2}
-                {c__skrapport_#1_indent_dim}
-                {__skrapport_#1_style:}
-                {#5}
-                {#4}
-        }
-    }
-    \__skrapport_post_section:c{c__skrapport_#1_post_skip}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{Public sectioning API}
-    It's time to define the public sectioning macros. They all follow
-    the same format: first, two skips and one dimension (used by
-    \cs{__skrapport_generic_section:nnnnn}) are defined, as well as
-    a macro defining the text style of the section. Then, the actual
-    macro is provided.
-    \begin{macro}{\section}[3]
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional short title (or \cs{NoValue})}
-        {Sectioning title}
-    \begin{macro*}{\c__skrapport_section_pre_skip}
-    This is the skip \emph{before} a section title.
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_section_pre_skip{-4ex~plus~1ex~minus~-1ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_section_post_skip}
-    This is the skip \emph{after} a section title.
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_section_post_skip{.5ex~plus~.5ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_section_indent_dim}
-    This is the \emph{indentation} of a section title.
-\begin{MacroCode}{class}
-\dim_const:Nn \c__skrapport_section_indent_dim{\c_zero_dim}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_section_style:}
-    This is the text style of a section title.
-\begin{MacroCode}{class}
-\cs_set_protected:Nn\__skrapport_section_style:
-    {\normalfont\LARGE\__skrapport_title_style:}
-\end{MacroCode}
-    \end{macro*}
-    Finally, the public macro is provided.
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\section{som}{
-    \__skrapport_generic_section:nnnnn{section}{1}{#1}{#2}{#3}
-}
-\end{MacroCode}
-    \end{macro}
-
-    The other sectioning macros (macros from section to subparagraph are
-    available) are defined in an analogous manner.
-    \begin{macro}{\subsection}[3]
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional short title (or \cs{NoValue})}
-        {Sectioning title}
-    \begin{macro*}{\c__skrapport_subsection_pre_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subsection_pre_skip{-3ex~plus~1ex~minus~-1ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsection_post_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subsection_post_skip{.25ex~plus~.25ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsection_indent_dim}
-\begin{MacroCode}{class}
-\dim_const:Nn \c__skrapport_subsection_indent_dim{\c_zero_dim}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsection_style:}
-\begin{MacroCode}{class}
-\cs_set_protected:Nn\__skrapport_subsection_style:
-    {\normalfont\Large\__skrapport_title_style:}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\subsection{som}{
-    \__skrapport_generic_section:nnnnn{subsection}{2}{#1}{#2}{#3}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\subsubsection}[3]
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional short title (or \cs{NoValue})}
-        {Sectioning title}
-    \begin{macro*}{\c__skrapport_subsubsection_pre_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subsubsection_pre_skip{-2ex~plus~.5ex~minus~-.5ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsubsection_post_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subsubsection_post_skip{.125ex~plus~.125ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsubsection_indent_dim}
-\begin{MacroCode}{class}
-\dim_const:Nn \c__skrapport_subsubsection_indent_dim{\c_zero_dim}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subsubsection_style:}
-\begin{MacroCode}{class}
-\cs_set_protected:Nn\__skrapport_subsubsection_style:
-    {\normalfont\large\__skrapport_title_style:}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\subsubsection{som}{
-    \__skrapport_generic_section:nnnnn{subsubsection}{3}{#1}{#2}{#3}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\paragraph}[3]
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional short title (or \cs{NoValue})}
-        {Sectioning title}
-    \begin{macro*}{\c__skrapport_paragraph_pre_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_paragraph_pre_skip{1ex~plus~.25ex~minus~-.25ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_paragraph_post_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_paragraph_post_skip{-1em}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_paragraph_indent_dim}
-\begin{MacroCode}{class}
-\dim_const:Nn \c__skrapport_paragraph_indent_dim{\c_zero_dim}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_paragraph_style:}
-\begin{MacroCode}{class}
-\cs_set_protected:Nn\__skrapport_paragraph_style:
-    {\normalfont\normalsize\__skrapport_title_style:}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\paragraph{som}{
-    \__skrapport_generic_section:nnnnn{paragraph}{4}{#1}{#2}{#3}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\subparagraph}[3]
-        {Star (tested with \cs{IfBooleanTF})}
-        {Optional short title (or \cs{NoValue})}
-        {Sectioning title}
-    \begin{macro*}{\c__skrapport_subparagraph_pre_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subparagraph_pre_skip{1ex~plus~.25ex~minus~-.25ex}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subparagraph_post_skip}
-\begin{MacroCode}{class}
-\skip_const:Nn\c__skrapport_subparagraph_post_skip{-1em}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subparagraph_indent_dim}
-\begin{MacroCode}{class}
-\dim_const:Nn \c__skrapport_subparagraph_indent_dim{\parindent}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\c__skrapport_subparagraph_style:}
-\begin{MacroCode}{class}
-\cs_set_protected:Nn\__skrapport_subparagraph_style:
-    {\normalfont\normalsize\__skrapport_title_style:\itshape}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\subparagraph{som}{
-    \__skrapport_generic_section:nnnnn{subparagraph}{5}{#1}{#2}{#3}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \subsubsection{Macros and environments from \pkg{article}}
-    \paragraph{List environments}
-    First, several dimensions are provided and three penalties defined.
-\begin{MacroCode}{class}
-\dim_gset:Nn\leftmargini{2em}
-\dim_gset_eq:NN\leftmargin\leftmargini
-\dim_gset:Nn\leftmarginii{2em}
-\dim_gset:Nn\leftmarginiii{1.5em}
-\dim_gset:Nn\leftmarginiv{1.5em}
-\dim_gset:Nn\leftmarginv{1em}
-\dim_gset:Nn\leftmarginvi{1em}
-\dim_gset:Nn\labelsep{.5em}
-\dim_gset_eq:NN\labelwidth\leftmargini
-\dim_gsub:Nn\labelwidth{-\labelsep}
-\int_gset:Nn\@beginparpenalty{-\@lowpenalty}
-\int_gset:Nn\@endparpenalty  {-\@lowpenalty}
-\int_gset:Nn\@itempenalty    {-\@lowpenalty}
-\end{MacroCode}
-
-    Then, we define the appearance of the item numbers.
-    \begin{macro*}{\theenumi}
-    The first level consists of arabic numbers (\(1,2,3,\dotsc\)).
-\begin{MacroCode}{class}
-\cs_set:Npn\theenumi  {\arabic{enumi}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\theenumii}
-    The second level consists of lower-case alphabetic characters
-    (\(\text{a},\text{b},\text{c},\dotsc\)).
-\begin{MacroCode}{class}
-\cs_set:Npn\theenumii {\alph{enumii}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\theenumiii}
-    The third level consists of lower-case roman numerals
-    (\(\text{i},\text{ii},\text{iii},\dotsc\)).
-\begin{MacroCode}{class}
-\cs_set:Npn\theenumiii{\roman{enumiii}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\theenumiv}
-    The fourth level consists of upper-case alphabetic characters
-    (\(\text{A},\text{B},\text{C},\dotsc\)).
-\begin{MacroCode}{class}
-\cs_set:Npn\theenumiv {\Alph{enumiv}}
-\end{MacroCode}
-    \end{macro*}
-    We also need macros that typeset the actual labels. Here, different
-    levels have a different postfix: all levels except the second are
-    postfixed by a period, while the second level is postfixed by a
-    closing bracket.
-    \begin{macro*}{\labelenumi}
-\begin{MacroCode}{class}
-\cs_new:Npn\labelenumi{\theenumi.}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelenumii}
-\begin{MacroCode}{class}
-\cs_new:Npn\labelenumii{\theenumii)}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelenumiii}
-\begin{MacroCode}{class}
-\cs_new:Npn\labelenumiii{\theenumiii.}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelenumiv}
-\begin{MacroCode}{class}
-\cs_new:Npn\labelenumiv{\theenumiv.}
-\end{MacroCode}
-    \end{macro*}
-    We also fix the referencing of lower-level items so that one can
-    refer to them properly (\emph{i.e.} as 1b(iii) and so on).
-    \begin{macro*}{\p at enumii}
-\begin{MacroCode}{class}
-\cs_set:Npn\p at enumii{\theenumi}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\p at enumiii}
-\begin{MacroCode}{class}
-\cs_set:Npn\p at enumiii{\theenumi(\theenumii)}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\p at enumiiv}
-\begin{MacroCode}{class}
-\cs_set:Npn\p at enumiv{\p at enumiii\theenumiii}
-\end{MacroCode}
-    \end{macro*}
-
-    All that was for numbered lists (\env{enumerate}). Now, we define
-    the \enquote{labels} of \env{itemize} items. Alternately, they
-    are a bullet (\textbullet) and a boldfaced dash
-    ({\normalfont\bfseries\textendash}).
-    \begin{macro*}{\labelitemi}
-\begin{MacroCode}{class}
-\cs_set:Npn\labelitemi{\textbullet}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelitemii}
-\begin{MacroCode}{class}
-\cs_set:Npn\labelitemii{\normalfont\bfseries\textendash}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelitemiii}
-\begin{MacroCode}{class}
-\cs_set:Npn\labelitemiii{\textbullet}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\labelitemiv}
-\begin{MacroCode}{class}
-\cs_set:Npn\labelitemiv{\normalfont\bfseries\textendash}
-\end{MacroCode}
-    \end{macro*}
-
-    The last of the commonly used list environments is \env{description}.
-    Defining it is fairly simple --- we define a list with empty item
-    labels and a bit of hackery for the \cs{makelabel} macro inside.
-    \begin{environment}{description}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{description}{}{
-    \begin{list}{}{
-        \dim_zero:N\labelwidth
-        \dim_set:Nn\itemindent{-\leftmargin}
-        \cs_set_eq:NN\makelabel\descriptionlabel
-    }
-}{
-    \end{list}
-}
-\end{MacroCode}
-    \begin{macro}{\descriptionlabel}
-    Additionally, the \cs{descriptionlabel} macro is defined.
-\begin{MacroCode}{class}
-\NewDocumentCommand\descriptionlabel{m}{
-    \hspace{\labelsep}\normalfont\bfseries #1
-}
-\end{MacroCode}
-    \end{macro}
-    \end{environment}
-
-    \paragraph{Quotation environments}
-    The quotation environments are also fairly simple --- \env{quote}
-    is just a list with a single item, and \env{quotation} is a
-    \env{quote} with extra skips around it.
-    \begin{environment}{quote}
-\begin{MacroCode}{class}
-\NewDocumentEnvironment{quote}{}{
-    \begin{list}{}{
-        \dim_set_eq:NN\rightmargin\leftmargin
-    }
-    \item\itshape
-}{
-    \end{list}
-}
-\end{MacroCode}
-    \end{environment}
-    \begin{environment}{quotation}
-\begin{MacroCode}{class}
-\NewDocumentEnvironment{quotation}{}{
-    \bigskip
-    \begin{quote}
-}{
-    \end{quote}
-    \bigskip
-}
-\end{MacroCode}
-    \end{environment}
-    There's a \env{verse} environment, too, but it's just \env{quote}.
-    \begin{environment}{verse}
-\begin{MacroCode}{class}
-\NewDocumentEnvironment{verse}{}{
-    \begin{quote}
-}{
-    \end{quote}
-}
-\end{MacroCode}
-    \end{environment}
-
-    \paragraph{Front- and backmatter}
-    We only define one front/backmatter macro; \cs{appendix}.
-    \begin{macro}{\appendix}
-\begin{MacroCode}{class}
-\NewDocumentCommand\appendix{}{
-    \par
-    \setcounter{section}{0}
-    \setcounter{subsection}{0}
-    \cs_gset:Npn\thesection{\Alph{section}}
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{Old font macros}
-    The old font macros have been deprecated. Do not use!
-    \begin{macro}{\rm}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\rm{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\rm}{\textrm}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\sf}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\sf{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sf}{\textsf}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\tt}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\tt{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\tt}{\texttt}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\bf}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\bf{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\bf}{\textbf}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\it}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\it{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\it}{\textit}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\sl}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\sl{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sl}{\textsl}}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\sc}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\sc{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sc}{\textsc}}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{The emphasis macro}
-    \begin{macro}{\emph}
-    \changes{0.12}{Changed definition, may have introduced spacing issues}
-    Redefining the \cs{emph} style to be bold when nested.
-    \begin{macro*}{\em}
-    \changes{0.12}{Deprecated command}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\em{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\em}{\emph}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_emphstyle:}
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_emphstyle:{
-    \itshape
-    \dim_compare:nF{\fontdimen\c_one\font>\c_zero_dim}{\bfseries}
-}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\emph{+m}{
-    \ifmmode
-        \text{\__skrapport_emphstyle: #1}
-    \else
-        {\__skrapport_emphstyle: #1}
-    \fi
-}
-\end{MacroCode}
-    \end{macro}
-
-    \paragraph{The footnote rule}
-    \begin{macro*}{\footnoterule}
-    \changes{0.12}{Removed footnote rule entirely}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\footnoterule{}{}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\@makefntext}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\@makefntext{+m}{
-    \dim_set:Nn\parindent{1em}\noindent
-    \hbox_to_wd:nn{1.8em}{\hss\@makefnmark}
-    #1
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \subsubsection{Floats}
-    \paragraph{Table- and box-related lengths}
-\begin{MacroCode}{class}
-\dim_gset:Nn\arraycolsep    {5pt}
-\dim_gset:Nn\tabcolsep      {6pt}
-\dim_gset:Nn\arrayrulewidth{.4pt}
-\dim_gset:Nn\doublerulesep  {2pt}
-\dim_gset_eq:NN\tabbingsep\labelsep
-\skip_gset_eq:NN{\skip\@mpfootins}{\skip\footins}
-\dim_gset:Nn\fboxsep        {3pt}
-\dim_gset:Nn\fboxrule      {.4pt}
-\end{MacroCode}
-
-    \paragraph{Counters}
-\begin{MacroCode}{class}
-\newcounter{figure}
-\newcounter{table}
-\end{MacroCode}
-    \begin{macro*}{\theequation}
-\begin{MacroCode}{class}
-\cs_set:Npn\theequation{\arabic{equation}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\thefigure}
-\begin{MacroCode}{class}
-\cs_set:Npn\thefigure{\arabic{figure}}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\thetable}
-\begin{MacroCode}{class}
-\cs_set:Npn\thetable{\arabic{table}}
-\end{MacroCode}
-    \end{macro*}
-
-    \paragraph{Defaults}
-    The default placement, list extension and caption text of all floats.
-\begin{MacroCode}{class}
-\cs_new:Npn  \fps at figure{tb}
-\cs_new:Npn\ftype at figure{1}
-\cs_new:Npn  \ext at figure{lof}
-\cs_new:Npn \fnum at figure{\figurename\ \thefigure}
-\cs_new:Npn  \fps at table {tb}
-\cs_new:Npn\ftype at table {2}
-\cs_new:Npn  \ext at table {lot}
-\cs_new:Npn \fnum at table {\tablename\ \thetable}
-\end{MacroCode}
-
-    \paragraph{Environments}
-    \begin{macro}{\__skrapport_xfloat:nn}
-    \begin{macro*}{\__skrapport_xfloat:nx}
-    This is a helper macro basically replacing the \cs{@float} macro
-    used by \LaTeXe.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_xfloat:nn#1#2{\@xfloat{#1}[#2]}
-\cs_generate_variant:Nn\__skrapport_xfloat:nn{nx}
-\end{MacroCode}
-    \end{macro*}
-    \end{macro}
-    \begin{environment}{figure}
-    \changes{0.12a}{Figures are now \cs{centering}ed by default}
-    \begin{environment*}{figure*}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{figure}{o}{
-    \__skrapport_xfloat:nx{figure}
-        {\IfNoValueTF{#1}{\fps at figure}{#1}}
-    \centering
-}{
-    \end at float
-}
-\DeclareDocumentEnvironment{figure*}{o}{
-    \__skrapport_xfloat:nx{figure}
-        {\IfNoValueTF{#1}{tp}{#1}}
-    \centering
-}{
-    \end at float
-}
-\end{MacroCode}
-    \end{environment*}
-    \end{environment}
-    \begin{environment}{table}
-    \changes{0.12a}{Tables are now \cs{centering}ed by default}
-    \begin{environment*}{table*}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{table}{o}{
-    \__skrapport_xfloat:nx{table}
-        {\IfNoValueTF{#1}{\fps at table}{#1}}
-    \centering
-}{
-    \end at float
-}
-\DeclareDocumentEnvironment{table*}{o}{
-    \__skrapport_xfloat:nx{table}
-        {\IfNoValueTF{#1}{tp}{#1}}
-    \centering
-}{
-    \end at float
-}
-\end{MacroCode}
-    \end{environment*}
-    \end{environment}
-
-    In addition to the \env{figure} and \env{table} environments, we
-    also provide a \env{figcenter} environment that enables centering
-    of figures or tables that are too wide for the page.
-    \begin{macro*}{\coffin_typeset:Nnnon}
-\begin{MacroCode}{class}
-\cs_generate_variant:Nn\coffin_typeset:Nnnnn{Nnnon}
-\end{MacroCode}
-    \end{macro*}
-    \begin{environment}{figcenter}
-    \changes{0.12c}{Fixed the x-offset calculation}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{figcenter}{}{
-    \cs_set_eq:NN\l__tmpa_cs\caption
-    \cs_set:Npn\caption{\msg_error:nn{skrapport}{caption-in-figcenter}}
-    \coffin_clear:N\l_tmpa_coffin
-    \hcoffin_set:Nw\l_tmpa_coffin
-}{
-    \hcoffin_set_end:
-    \dim_set:Nn\l_tmpa_dim{(\textwidth - \coffin_wd:N\l_tmpa_coffin)/2}
-    \coffin_typeset:Nnnon\l_tmpa_coffin{H}{l}{\dim_use:N\l_tmpa_dim}{0pt}
-    \cs_set_eq:NN\caption\l__tmpa_cs
-    \cs_undefine:N\l__tmpa_cs
-}
-\end{MacroCode}
-    \end{environment}
-
-    \paragraph{Captions}
-    Before we begin, we pass options to \pkg{caption}, in case the user
-    is loading it or another package based upon it. This fixes an issue
-    where the custom caption style was overwritten with the ugly default
-    \pkg{article} caption style.
-\begin{MacroCode}{class}
-\PassOptionsToPackage{font=small,labelfont+=bf,textfont+=it}{caption}
-\end{MacroCode}
-    \begin{macro*}{\__skrapport_caption_name_style:}
-\begin{MacroCode}{class}
-\cs_new_protected:Nn\__skrapport_caption_name_style:{\small\bfseries}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_caption_text_style:}
-\begin{MacroCode}{class}
-\cs_new_protected:Nn\__skrapport_caption_text_style:{\small\itshape}
-\end{MacroCode}
-    \end{macro*}
-\begin{MacroCode}{class}
-\skip_new:N\abovecaptionskip
-\skip_set:Nn\abovecaptionskip{10pt}
-\skip_new:N\belowcaptionskip
-\skip_set:Nn\belowcaptionskip{10pt}
-\end{MacroCode}
-    \begin{macro*}{\@makecaption}
-    \changes{0.10c}{Fix missing coloring command for some captions}
-    \changes{0.12}{Split \cs{@captionstyle} into two macros}
-    \changes{0.12a}{Fix a bug which applied caption name styling to the
-        caption text}
-    This should possibly be redefined already at the \cs{caption} level.
-\begin{MacroCode}{class}
-\cs_new:Npn\@makecaption#1#2{
-    \skip_vertical:N\abovecaptionskip
-    \hbox_set:Nn\l_tmpa_box{
-        \color at setgroup % !!!
-        {\__skrapport_caption_name_style:#1:~}
-        {\__skrapport_caption_text_style:#2}
-        \color at endgroup % !!!
-    }
-    \dim_compare:nTF{\box_wd:N\l_tmpa_box>\hsize}{
-        {\__skrapport_caption_name_style:#1:~}
-        {\__skrapport_caption_text_style:#2}
-        \par
-    }{
-        \global\@minipagefalse % !!!
-        \hbox_to_wd:nn{\hsize}{
-            \hfil
-            \box_use_drop:N\l_tmpa_box
-            \hfil
-        }
-    }
-    \skip_vertical:N\belowcaptionskip
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \subsubsection{Table of contents}
-\begin{MacroCode}{class}
-\cs_new:Npn\@pnumwidth{1.55em}
-\cs_new:Npn\@tocrmarg{2em}
-\cs_new:Npn\@dotsep{1.7}
-\setcounter{tocdepth}{3}
-\end{MacroCode}
-    \begin{macro}{\tableofcontents}
-    \changes{0.12}{Removed spacing and \cs{@mkboth} call}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\tableofcontents{}{
-  \section*{\contentsname}
-  \makeatletter
-  \@starttoc{toc}
-  \makeatother
-}
-\end{MacroCode}
-    \end{macro}
-
-    The following macros conspire to replace \cs{@dottedtocline}.
-    \begin{macro*}{\__skrapport_toc_line:nnnnnn}[6]
-        {TOC line character}
-        {Table of contents level of the line}
-        {Indentation at the start of the line}
-        {Width of the section number}
-        {Section title}
-        {Page number}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_toc_line:nnnnnn#1#2#3#4#5#6{
-    \int_compare:nF{#2>\value{tocdepth}}{
-        \skip_vertical:n{0pt~plus~.2pt}
-        \group_begin:
-            \skip_set:Nn\leftskip{#3}
-            \skip_set_eq:NN\rightskip\@tocrmarg
-            \skip_set:Nn\parfillskip{-\rightskip}
-            \dim_set:Nn\parindent{#3}
-            \@afterindenttrue % !!!
-            \interlinepenalty\@M % !!!
-            \leavevmode
-\end{MacroCode}
-    This here is pretty dumb. We can't use a \LaTeX3\ temporary skip
-    register (or skip the temporary), because \texttt{\#5} further down
-    will contain a \cs{hbox} based on \cs{@tempdima}. The proper thing
-    to do here would be to rewrite \cs{addcontentsline}, I guess. Bah.
-\begin{MacroCode}{class}
-            \skip_set:Nn\@tempdima{#4} % !!! (dumb)
-            \skip_add:Nn\leftskip{\@tempdima}
-            \null\nobreak
-            \skip_horizontal:n{-\leftskip}
-            {#5}\nobreak
-            \str_if_eq:nnTF{#1}{}{
-                \hfill
-            }{
-                \leaders\hbox:n{
-                    \(\mkern\@dotsep mu\hbox{#1}\mkern\@dotsep mu\) % !!!
-                }
-            }
-            \hfill\nobreak
-            \hbox_to_wd:nn{\@pnumwidth}{ % !!!
-                \hfil\normalfont\normalcolor #6
-            }
-            \par
-        \group_end:
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\__skrapport_toc_line:nnnnnn}[5]
-        {Table of contents level of the line}
-        {Indentation at the start of the line}
-        {Width of the section number}
-        {Section title}
-        {Page number}
-    This is a variant of \cs{__skrapport_toc_line:nnnnnn} which
-    implicitly sets empty space as its TOC line.
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_toc_line:nnnnn#1#2#3#4#5{
-    \__skrapport_toc_line:nnnnnn{}{#1}{#2}{#3}{#4}{#5}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\l at section}
-    \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnn}}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\l at section{mm}{
-    \group_begin:
-        \skip_vertical:n{.75ex}
-        \bfseries
-        \__skrapport_toc_line:nnnnn{1}{0em}{1.3em}{#1}{#2}
-    \group_end:
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\l at subsection}
-    \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnnn}}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\l at subsection{mm}{
-    \group_begin:
-        \skip_vertical:n{.35ex}
-        \penalty\@secpenalty % !!!
-        \__skrapport_toc_line:nnnnnn{.}{2}{1.3em}{2em}{#1}{#2}
-    \group_end:
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\l at subsubsection}
-    \changes{0.12}{Changed style to match \pkg{skdoc}}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\l at subsubsection{mm}{
-    \skip_set:Nn\leftskip{3.3em}
-    \dim_set_eq:NN\parindent\c_zero_dim
-    \group_begin:
-        \cs_set_eq:NN\numberline\use_none:n
-        \small #1~[#2]
-    \group_end:
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\l at paragraph}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\l at paragraph{mm}{
-    \int_compare:nF{4>\value{tocdepth}}{
-        \msg_warning:nnnn{skrapport}{tocdepth-too-deep}
-            {4}{\l at paragraph}
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro*}{\l at subparagraph}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\l at subparagraph{mm}{
-    \int_compare:nF{5>\value{tocdepth}}{
-        \msg_warning:nnnn{skrapport}{tocdepth-too-deep}
-            {5}{\l at subparagraph}
-    }
-}
-\end{MacroCode}
-    \end{macro*}
-
-    Fix for \emph{e.g.}~\pkg{tocloft} package.
-\begin{MacroCode}{class}
-\cs_set:Npn\l at figure{}
-\cs_set:Npn\l at table{}
-\end{MacroCode}
-
-    \subsubsection{Basic bibliography support}
-\begin{MacroCode}{class}
-\dim_new:N\bibindent
-\dim_set:Nn\bibindent{2em}
-\end{MacroCode}
-    \begin{environment}{thebibliography}
-    \changes{0.12}{Removed \cs{@mkboth}, \cs{@openbib at code} and
-                   \cs{@noitemerr}}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{thebibliography}{m}{
-    \section*{\refname}
-    \list{\@biblabel{\arabic{enumiv}}}{
-        \dim_set_to_wd:Nn\labelwidth{\@biblabel{#1}}
-        \dim_set_eq:NN\leftmargin\labelwidth
-        \dim_add:Nn\leftmargin{\labelsep}
-        \usecounter{enumiv} % !!!
-        \cs_set:Nn\p at enumiv{}
-        \RenewDocumentCommand\theenumiv{}{\arabic{enumiv}}
-    }
-    \sloppy
-    \int_set:Nn\clubpenalty{4000}
-    \int_set_eq:NN\@clubpenalty\clubpenalty
-    \int_set:Nn\widowpenalty{4000}
-}{
-    \cs_set:Nn\@noitemerr{}
-    \endlist
-}
-\end{MacroCode}
-    \end{environment}
-    \begin{macro*}{\newblock}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\newblock{}{
-    \skip_horizontal:n{.11em~plus~.33em~minus~.07em}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{environment}{theindex}
-    \changes{0.12}{Use \pkg{multicol} instead of \cs{twocolumn} mode,
-                   removed \cs{@mkboth} call}
-\begin{MacroCode}{class}
-\DeclareDocumentEnvironment{theindex}{}{
-    \begin{multicols}{2}[\section*{\indexname}]
-    \thispagestyle{plain}
-    \dim_zero:N\parindent
-    \skip_set:N\parskip{\c_zero_skip~plus~.3pt}
-    \dim_zero:N\columnseprule
-    \dim_set:Nn\columnsep{35pt}
-    \cs_set_eq:NN\item\@idxitem
-}{
-    \end{multicols}
-}
-\end{MacroCode}
-    \end{environment}
-    \begin{macro*}{\@idxitem}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\@idxitem{}{
-    \par
-    \dim_set:Nn\hangindent{40pt}
-}
-\end{MacroCode}
-    \end{macro*}
-    \begin{macro}{\subitem}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\subitem{}{
-    \@idxitem
-    \hspace*{20pt}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\subsubitem}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\subsubitem{}{
-    \@idxitem
-    \hspace*{30pt}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro*}{\indexspace}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\indexspace{}{
-    \par
-    \skip_vertical:n{10pt~plus~5pt~minus~3pt}
-}
-\end{MacroCode}
-    \end{macro*}
-
-    \subsubsection{Miscellaneous}
-    A macro \cs{comment} (alias \cs{com}/\cs{note}) is defined to let
-    the user add comments and notes to the document.
-    \begin{macro}{\__skrapport_comment:n}
-\begin{MacroCode}{class}
-\cs_new:Npn\__skrapport_comment:n#1{
-    {\textbf{\__skrapport_Comment_word: :}~#1}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\comment}
-    \changes{0.10}{Added macro for comments}
-    \changes{0.12b}{No longer uses \cs{colorbox} if no color package is loaded}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\comment{sm}{
-    \IfBooleanTF{#1}
-        {
-            \cs_if_exist_use:NT\colorbox{{red!50}}
-                {\__skrapport_comment:n{#2}}
-        }
-        {\marginpar{\__skrapport_comment:n{#2}}}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\com}
-    \begin{macro}{\note}
-    \changes{0.10b}{Fixed a silly error in \cs{com} and \cs{note}}
-\begin{MacroCode}{class}
-\ProvideDocumentCommand\com{sm}
-    {\IfBooleanTF{#1}{\comment*{#2}}{\comment{#2}}}
-\ProvideDocumentCommand\note{sm}
-    {\IfBooleanTF{#1}{\comment*{#2}}{\comment{#2}}}
-\end{MacroCode}
-    \end{macro}
-    \end{macro}
-
-    \begin{macro}{\__skrapport_space_if_not_punctuation:}
-\begin{MacroCode}{class}
-\cs_new:Nn\__skrapport_space_if_not_punctuation:{
-    \clist_if_in:noF
-        {{,},:,;,!,?,-,),'}
-        {\token_to_meaning:N\l_peek_token}
-        {\ }
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\__skrapport_peek_punctuation:n}
-    \begin{macro*}{\__skrapport_peek_punctuation:x}
-\begin{MacroCode}{class}
-\cs_new_nopar:Nn\__skrapport_peek_punctuation:n{
-    \mbox{#1}
-    \peek_meaning_remove:NTF.{}{
-        \peek_meaning:NF\ {
-            \peek_after:Nw\__skrapport_space_if_not_punctuation:
-        }
-    }
-}
-\cs_generate_variant:Nn\__skrapport_peek_punctuation:n{x}
-\end{MacroCode}
-    \end{macro*}
-    \end{macro}
-    \begin{macro}{\eg}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\eg{}{
-    \__skrapport_peek_punctuation:x{\__skrapport_eg_word:}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\ie}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\ie{}{
-    \__skrapport_peek_punctuation:x{\__skrapport_ie_word:}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\etc}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\etc{}{
-    \__skrapport_peek_punctuation:x{\__skrapport_etc_word:}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\cf}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\cf{}{
-    \__skrapport_peek_punctuation:x{\__skrapport_cf_word:}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\viz}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\viz{}{
-    \__skrapport_peek_punctuation:x{\__skrapport_viz_word:}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\dash}
-\begin{MacroCode}{class}
-\DeclareDocumentCommand\dash{}{
-    \cs_if_exist_use:NT\texorpdfstring
-    {\unskip\nobreak\thinspace\textemdash\thinspace\ignorespaces}{{ - }}
-}
-\cs_if_exist_use:NT\DeclareUnicodeCharacter{{2014}{\dash}}
-\end{MacroCode}
-    \end{macro}
-
-    \subsubsection{Color theme support}
-    Color theme setup. Start by patching commands and declaring
-    default colors. Not implemented: background colors for e.g.
-    quote environments and sections headings, different colors
-    for the different sectioning levels.
-\begin{MacroCode}{class}
-\bool_if:NT\g__skrapport_color_bool{
-    \apptocmd{\bfseries}
-        {\color{skrapport at boldcolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\bfseries}}
-    \apptocmd{\itshape}
-        {\color{skrapport at italiccolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\itshape}}
-    \apptocmd{\__skrapport_title_style:}
-        {\color{skrapport at titlecolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_title_style:}}
-    \apptocmd{\__skrapport_smallprint_style:}
-        {\color{skrapport at smallprintcolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_smallprint_style:}}
-    \apptocmd{\__skrapport_abstract_style:}
-        {\color{skrapport at titlecolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_abstract_style:}}
-    \apptocmd{\quote}
-        {\color{skrapport at quotecolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\quote}}
-    \apptocmd{\__skrapport_caption_name_style:}
-        {\color{skrapport at captioncolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_caption_name_style:}}
-    \apptocmd{\__skrapport_emphstyle:}
-        {\color{skrapport at emphcolor}}{}
-        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_emphstyle:}}
-\end{MacroCode}
-% I have no idea why this was here or what difference it makes. These
-% things should be using \__skrapport_title_style:.
-%    \ifskrapport at twocolumn\AtBeginDocument{%
-%        \renewcommand\section{\@startsection {section}{1}{\z@}%
-%            {-.999\baselineskip}{0.001\baselineskip}{\bfseries\mathversi%on{bold}\color{skrapport at titlecolor}}}
-%        \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
-%            {\baselineskip}{-.35\baselineskip}{\bfseries\color{skrapport at titlecolor}\unskip}}
-%        \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
-%            {\baselineskip}{-.35\baselineskip}{\itshape\color{skrapport at titlecolor}\unskip}}
-%    }\fi
-%    \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
-%        {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\bfseries\color{skrapport at titlecolor}}}
-%    \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
-%        {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\itshape\color{skrapport at titlecolor}}}
-\begin{MacroCode}{class}
-    \AtBeginDocument{\@ifpackageloaded{hyperref}{%
-        \hypersetup{%
-            citebordercolor=skrapport at citecolor,citecolor=skrapport at citecolor,%
-            filebordercolor=skrapport at filecolor,filecolor=skrapport at filecolor,%
-            linkbordercolor=skrapport at linkcolor,linkcolor=skrapport at linkcolor,%
-            menubordercolor=skrapport at menucolor,menucolor=skrapport at menucolor,%
-            urlbordercolor=skrapport at urlcolor,urlcolor=skrapport at urlcolor,%
-            runbordercolor=skrapport at runcolor,runcolor=skrapport at runcolor%
-        }
-    }{}}
-    \AtBeginDocument{\color{skrapport at defaultcolor}}
-\end{MacroCode}
-    \begin{macro}{\colortheme}
-    The \cs{colortheme} macro allows the end-user to load color themes
-    (described later) to customize the colors of the document when the
-    class is loaded with the \opt{color} option.
-\begin{MacroCode}{class}
-    \DeclareDocumentCommand\colortheme{m}{
-        \usepackage{skrapport-colortheme-#1}
-    }
-\end{MacroCode}
-    \end{macro}
-\begin{MacroCode}{class}
-    \colortheme{default}
-}
-\end{MacroCode}
-
-    \subsection{Final class setup}
-    We end the document class by setting a few lengths along with the
-    page style and page numbering. Also, activate \cs{raggedbottom} and
-    \cs{onexolumn} (since we always do all the two-column stuff
-    ourselves anyway).
-\begin{MacroCode}{class}
-\dim_set:Nn\columnsep{10pt}
-\dim_zero:N\columnseprule
-\pagestyle{plain}
-\pagenumbering{arabic}
-\raggedbottom
-\onecolumn
-\endinput
-\end{MacroCode}
-
-    \subsection{Color themes}
-    As described earlier, the user can load color themes to customize
-    the appearance of the document if the class was loaded with the
-    \opt{color} option. Four themes are available by default.
-
-    \subsubsection{Default color theme}
-    \begin{theme}{Default}
-    \changes{0.09}{Added default color theme}
-\begin{MacroCode}{theme-default}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-colortheme-default}
-    {2012/06/07}{1.0}{skrapport color theme default}
-\definecolor{skrapport at citecolor}{named}{green}
-\definecolor{skrapport at filecolor}{named}{teal}
-\definecolor{skrapport at linkcolor}{named}{red}
-\definecolor{skrapport at menucolor}{named}{red}
-\definecolor{skrapport at urlcolor}{named}{cyan}
-\definecolor{skrapport at runcolor}{named}{teal}
-\definecolor{skrapport at boldcolor}{named}{black}
-\definecolor{skrapport at titlecolor}{named}{black}
-\definecolor{skrapport at italiccolor}{named}{black}
-\definecolor{skrapport at smallprintcolor}{named}{black}
-\definecolor{skrapport at quotecolor}{named}{black}
-\definecolor{skrapport at captioncolor}{named}{black}
-\definecolor{skrapport at emphcolor}{named}{black}
-\definecolor{skrapport at defaultcolor}{named}{black}
-\endinput
-\end{MacroCode}
-    \end{theme}
-
-    \subsubsection{Unscathed color theme}
-    \begin{theme}{Unscathed}
-    \changes{0.09}{Added \enquote{Unschathed} color theme}
-\begin{MacroCode}{theme-unscathed}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-colortheme-unscathed}
-    {2012/06/07}{1.0}{skrapport color theme unscathed}
-\definecolor{skrapport at citecolor}{named}{skrapport at defaultcolor}
-\definecolor{skrapport at filecolor}{named}{skrapport at defaultcolor}
-\definecolor{skrapport at menucolor}{named}{skrapport at defaultcolor}
-\definecolor{skrapport at runcolor}{named}{skrapport at defaultcolor}
-\definecolor{skrapport at emphcolor}{HTML}{463335}
-\definecolor{skrapport at linkcolor}{HTML}{CF5D3B}
-\definecolor{skrapport at urlcolor}{named}{skrapport at linkcolor}
-\definecolor{skrapport at titlecolor}{HTML}{B34430}
-\definecolor{skrapport at captioncolor}{named}{skrapport at titlecolor}
-\definecolor{skrapport at quotecolor}{HTML}{70524A}
-\definecolor{skrapport at smallprintcolor}{named}{skrapport at quotecolor}
-\endinput
-\end{MacroCode}
-    \end{theme}
-
-    \subsubsection{Cruelwater color theme}
-    \begin{theme}{Cruelwater}
-    \changes{0.09}{Added \enquote{Cruelwater} color theme}
-\begin{MacroCode}{theme-cruelwater}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-colortheme-cruelwater}
-    {2012/06/07}{1.0}{skrapport color theme cruelwater}
-\definecolor{skrapport at citecolor}{named}{black}
-\definecolor{skrapport at filecolor}{named}{black}
-\definecolor{skrapport at linkcolor}{named}{black}
-\definecolor{skrapport at menucolor}{named}{black}
-\definecolor{skrapport at urlcolor}{named}{black}
-\definecolor{skrapport at runcolor}{named}{black}
-\definecolor{skrapport at boldcolor}{HTML}{030C22}
-\definecolor{skrapport at titlecolor}{HTML}{20293F}
-\definecolor{skrapport at italiccolor}{named}{black}
-\definecolor{skrapport at smallprintcolor}{HTML}{A9B0B3}
-\definecolor{skrapport at quotecolor}{HTML}{404749}
-\definecolor{skrapport at captioncolor}{HTML}{030C22}
-\definecolor{skrapport at emphcolor}{HTML}{20293F}
-\definecolor{skrapport at defaultcolor}{named}{black}
-\endinput
-\end{MacroCode}
-    \end{theme}
-
-    \subsubsection{Violet color theme}
-    \begin{theme}{Violet}
-\changes{0.09}{Added \enquote{Violet} color theme}
-\begin{MacroCode}{theme-violet}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-colortheme-violet}
-    {2012/06/07}{1.0}{skrapport color theme violet}
-\definecolor{skrapport at citecolor}{HTML}{932444}
-\definecolor{skrapport at filecolor}{HTML}{932444}
-\definecolor{skrapport at linkcolor}{HTML}{932444}
-\definecolor{skrapport at menucolor}{HTML}{932444}
-\definecolor{skrapport at urlcolor}{HTML}{932444}
-\definecolor{skrapport at runcolor}{HTML}{932444}
-\definecolor{skrapport at boldcolor}{HTML}{311A2A}
-\definecolor{skrapport at titlecolor}{HTML}{311A2A}
-\definecolor{skrapport at italiccolor}{named}{black}
-\definecolor{skrapport at smallprintcolor}{HTML}{D6CBCF}
-\definecolor{skrapport at quotecolor}{HTML}{463335}
-\definecolor{skrapport at captioncolor}{HTML}{311A2A}
-\definecolor{skrapport at emphcolor}{HTML}{98758D}
-\definecolor{skrapport at defaultcolor}{named}{black}
-\endinput
-\end{MacroCode}
-    \end{theme}
-
-    \subsubsection{skdoc color theme}
-    \begin{theme}{skdoc}
-\changes{0.11a}{Added \enquote{skdoc} color theme}
-\begin{MacroCode}{theme-skdoc}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-colortheme-skdoc}
-    {2013/04/10}{1.0}{skrapport color theme skdoc}
-\definecolor{skrapport at citecolor}{RGB}{140,35,24}
-\definecolor{skrapport at filecolor}{RGB}{73,10,61}
-\definecolor{skrapport at linkcolor}{RGB}{140,35,24}
-\definecolor{skrapport at menucolor}{RGB}{140,35,24}
-\definecolor{skrapport at urlcolor}{RGB}{73,10,61}
-\definecolor{skrapport at runcolor}{RGB}{73,10,61}
-\definecolor{skrapport at boldcolor}{RGB}{73,10,61}
-\definecolor{skrapport at titlecolor}{RGB}{11,72,107}
-\definecolor{skrapport at italiccolor}{named}{black}
-\definecolor{skrapport at smallprintcolor}{RGB}{11,72,107}
-\definecolor{skrapport at quotecolor}{RGB}{140,35,24}
-\definecolor{skrapport at captioncolor}{RGB}{11,72,107}
-\definecolor{skrapport at emphcolor}{RGB}{73,10,61}
-\definecolor{skrapport at defaultcolor}{named}{black}
-\endinput
-\end{MacroCode}
-    \end{theme}
-
-    \section{Point sizes}
-    The point size options are pretty much \LaTeX3 translations of the
-    standard \pkg{article} class option files. There's a lot of duplicate
-    code here which may be worth to consolidate a bit.
-
-    \subsubsection{Common macros}
-    We first set up a package providing replacements for \LaTeXe\ macros,
-    common to all the point size files.
-\begin{MacroCode}{size-common}
-\RequirePackage{expl3}
-\ProvidesExplPackage{skrapport-size-common}
-    {2013/04/29}{1.0}{skrapport point size option common macros}
-\end{MacroCode}
-    \begin{macro}{\__skrapport_set_font_size:nn}[2]
-        {Font size}
-        {Baseline skip?} % !!!
-\begin{MacroCode}{size-common}
-\cs_new:Npn\__skrapport_set_font_size:nn#1#2{
-    \fontsize{#1}{#2} % !!!
-    \selectfont
-}
-\end{MacroCode}
-    \end{macro}
-\begin{MacroCode}{size-common}
-\endinput
-\end{MacroCode}
-
-    \subsubsection{Actual point size files}
-\begin{MacroCode}{size-10,size-11,size-12}
-\RequirePackage{expl3}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\ProvidesExplFile{skrapport-size10pt.clo}
-    {2013/04/29}{1.0}{skrapport point size option 10pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\ProvidesExplFile{skrapport-size11pt.clo}
-    {2013/04/29}{1.0}{skrapport point size option 11pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\ProvidesExplFile{skrapport-size12pt.clo}
-    {2013/04/29}{1.0}{skrapport point size option 12pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\RequirePackage{skrapport-size-common}
-\end{MacroCode}
-    \begin{macro}{\normalsize}
-\begin{MacroCode}{size-10,size-11,size-12}
-\RenewDocumentCommand\normalsize{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \__skrapport_set_font_size:nn{10}{12}
-    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt ~plus~3pt}
-    \skip_gset:Nn   \belowdisplayshortskip {6pt ~plus~3pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-    \__skrapport_set_font_size:nn{11}{13.2}
-    \skip_gset:Nn   \abovedisplayskip      {11pt ~plus~3pt  ~minus~6pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
-    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{12}{14.5}
-    \skip_gset:Nn   \abovedisplayskip      {12pt ~plus~3pt  ~minus~7pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
-    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
-    \cs_gset_eq:NN\@listi\@listI
-}
-\end{MacroCode}
-    \end{macro}
-\begin{MacroCode}{size-10,size-11,size-12}
-\normalsize
-\end{MacroCode}
-    \begin{macro}{\small}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\small{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \__skrapport_set_font_size:nn{9}{11}
-    \skip_gset:Nn   \abovedisplayskip      {8.5pt~plus~3pt~minus~4pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~2pt}
-    \skip_gset:Nn   \belowdisplayshortskip {4pt  ~plus~2pt~minus~2pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-    \__skrapport_set_font_size:nn{10}{12}
-    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt ~plus~2pt}
-    \skip_gset:Nn   \belowdisplayshortskip {6pt ~plus~3pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{11}{13.6}
-    \skip_gset:Nn   \abovedisplayskip      {11pt ~plus~3pt  ~minus~6pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
-    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
-    \cs_gset:Npn\@listi{
-        \dim_gset_eq:NN\leftmargin\leftmargini
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-        \skip_gset:Nn\topsep{4pt~plus~2pt~minus~2pt}
-        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-        \skip_gset:Nn\topsep{6pt~plus~2pt~minus~2pt}
-        \skip_gset:Nn\parsep{3pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-        \skip_gset:Nn\topsep{  9pt~plus~3pt~minus~5pt}
-        \skip_gset:Nn\parsep{4.5pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-        \skip_gset_eq:NN\itemsep\parsep
-    }
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\footnotesize}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\footnotesize{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \__skrapport_set_font_size:nn{8}{9.5}
-    \skip_gset:Nn   \abovedisplayskip      {6pt~plus~2pt~minus~4pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt~plus~1pt}
-    \skip_gset:Nn   \belowdisplayshortskip {3pt~plus~1pt~minus~2pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-    \__skrapport_set_font_size:nn{9}{11}
-    \skip_gset:Nn   \abovedisplayskip      {8pt~plus~2pt~minus~4pt}
-    \skip_gset:Nn   \abovedisplayshortskip {0pt~plus~1pt}
-    \skip_gset:Nn   \belowdisplayshortskip {4pt~plus~2pt~minus~2pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{10}{12}
-    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
-    \skip_gset:Nn   \abovedisplayshortskip { 0pt~plus~3pt}
-    \skip_gset:Nn   \belowdisplayshortskip { 6pt~plus~3pt~minus~3pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
-    \cs_gset:Npn\@listi{
-        \dim_gset_eq:NN\leftmargin\leftmargini
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-        \skip_gset:Nn\topsep{3pt~plus~1pt~minus~1pt}
-        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-        \skip_gset:Nn\topsep{4pt~plus~2pt~minus~2pt}
-        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-        \skip_gset:Nn\topsep{6pt~plus~2pt~minus~2pt}
-        \skip_gset:Nn\parsep{3pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-        \skip_gset_eq:NN\itemsep\parsep
-    }
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\scriptsize}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\scriptsize{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \__skrapport_set_font_size:nn{7}{8}
-\end{MacroCode}
-\begin{MacroCode}{size-11,size-12}
-    \__skrapport_set_font_size:nn{8}{9.5}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\tiny}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\tiny{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \__skrapport_set_font_size:nn{5}{6}
-\end{MacroCode}
-\begin{MacroCode}{size-11,size-12}
-    \__skrapport_set_font_size:nn{6}{7}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\large}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\large{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \__skrapport_set_font_size:nn{12}{14}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{14}{18}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\Large}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\Large{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \__skrapport_set_font_size:nn{14}{18}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{17}{22}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\LARGE}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\LARGE{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \__skrapport_set_font_size:nn{17}{22}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{20}{25}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\huge}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\huge{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \__skrapport_set_font_size:nn{20}{25}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{25}{30}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-    \begin{macro}{\Huge}
-\begin{MacroCode}{size-10,size-11,size-12}
-\NewDocumentCommand\Huge{}{
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \__skrapport_set_font_size:nn{25}{30}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \__skrapport_set_font_size:nn{30}{36}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\end{MacroCode}
-    \end{macro}
-\begin{MacroCode}{size-10}
-\dim_set:Nn\parindent {15pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\dim_set:Nn\parindent {17pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\dim_set:Nn\parindent {1.5em}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\skip_set:Nn\smallskipamount{ 3pt~plus~1pt~minus~1pt}
-\skip_set:Nn\medskipamount  { 6pt~plus~2pt~minus~2pt}
-\skip_set:Nn\bigskipamount  {12pt~plus~4pt~minus~4pt}
-\dim_set:Nn\headheight{12pt}
-\dim_set:Nn\headsep   {25pt}
-\dim_set:Nn\topskip   {10pt}
-\dim_set:Nn\footskip  {30pt}
-\dim_set:Nn\maxdepth  { 5pt}
-\end{MacroCode}
-    These (\emph{i.e.} text width and height) are hopefully overwritten
-    by \pkg{typearea} later, so we don't bother much with them.
-\begin{MacroCode}{size-10,size-11,size-12}
-\dim_set:Nn\textwidth  {\paperwidth-2cm}
-\dim_set:Nn\textheight{\paperheight-2cm}
-\dim_set:Nn\oddsidemargin  {.2cm}
-\dim_set:Nn\evensidemargin  {1cm}
-\dim_set:Nn\marginparsep   {11pt}
-\dim_set:Nn\marginparpush   {5pt}
-\dim_set:Nn\marginparwidth {.8cm-\marginparsep}
-\dim_set:Nn\topmargin{\paperheight-1cm
-                      -\headheight-\headsep
-                      -\textheight-\footskip
-                      -.5\topmargin}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\dim_set:Nn\footnotesep{6.65pt}
-\skip_set:Nn{\skip\footins} { 9pt~plus~4pt~minus~2pt}
-\skip_set:Nn\floatsep       {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\textfloatsep   {20pt~plus~2pt~minus~4pt}
-\skip_set:Nn\intextsep      {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\dblfloatsep    {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\dbltextfloatsep{20pt~plus~2pt~minus~4pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\dim_set:Nn\footnotesep{7.7pt}
-\skip_set:Nn{\skip\footins} {10pt~plus~4pt~minus~2pt}
-\skip_set:Nn\floatsep       {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\textfloatsep   {20pt~plus~2pt~minus~4pt}
-\skip_set:Nn\intextsep      {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\dblfloatsep    {12pt~plus~2pt~minus~2pt}
-\skip_set:Nn\dbltextfloatsep{20pt~plus~2pt~minus~4pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\dim_set:Nn\footnotesep{8.4pt}
-\skip_set:Nn{\skip\footins} {10.8pt~plus~4pt~minus~2pt}
-\skip_set:Nn\floatsep       {12pt  ~plus~2pt~minus~4pt}
-\skip_set:Nn\textfloatsep   {20pt  ~plus~2pt~minus~4pt}
-\skip_set:Nn\intextsep      {14pt  ~plus~4pt~minus~4pt}
-\skip_set:Nn\dblfloatsep    {14pt  ~plus~2pt~minus~4pt}
-\skip_set:Nn\dbltextfloatsep{20pt  ~plus~2pt~minus~4pt}
-\end{MacroCode}
-    These six have been changed slightly compared to \LaTeXe.
-\begin{MacroCode}{size-10,size-11,size-12}
-\skip_set:Nn\@fptop{ 5pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\skip_set:Nn\@fpsep{10pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\skip_set:Nn\@fpsep{11pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\skip_set:Nn\@fpsep{12pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\skip_set:Nn\@fpbot{ 5pt}
-\skip_set:Nn\@dblfptop{ 5pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\skip_set:Nn\@dblfpsep{10pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\skip_set:Nn\@dblfpsep{11pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\skip_set:Nn\@dblfpsep{12pt~plus~2fil}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\skip_set:Nn\@dblfpbot{ 5pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\skip_set:Nn\partopsep{2pt~plus~1pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\skip_set:Nn\partopsep{3pt~plus~1pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\skip_set:Nn\partopsep{3pt~plus~2pt~minus~2pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\cs_set:Npn\@listi{
-    \dim_set_eq:NN\leftmargin\leftmargini
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \skip_set:Nn\parsep {4pt~plus~2pt~minus~1pt}
-    \skip_set:Nn\topsep {8pt~plus~2pt~minus~4pt}
-    \skip_set:Nn\itemsep{4pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-    \skip_set:Nn\parsep {4.5pt~plus~2pt~minus~1pt}
-    \skip_set:Nn\topsep {  9pt~plus~3pt~minus~5pt}
-    \skip_set:Nn\itemsep{4.5pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \skip_set:Nn\parsep { 5pt~plus~2.5pt~minus~1pt}
-    \skip_set:Nn\topsep {10pt~plus~4pt  ~minus~6pt}
-    \skip_set:Nn\itemsep{ 5pt~plus~2.5pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-}
-\cs_set_eq:NN\@listI\@listi
-\dim_gset_eq:NN\leftmargin\leftmargini
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-\skip_gset:Nn\parsep {4pt~plus~2pt~minus~1pt}
-\skip_gset:Nn\topsep {8pt~plus~2pt~minus~4pt}
-\skip_gset:Nn\itemsep{4pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-\skip_gset:Nn\parsep {4.5pt~plus~2pt~minus~1pt}
-\skip_gset:Nn\topsep {  9pt~plus~3pt~minus~5pt}
-\skip_gset:Nn\itemsep{4.5pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-\skip_gset:Nn\parsep { 5pt~plus~2.5pt~minus~1pt}
-\skip_gset:Nn\topsep {10pt~plus~4pt  ~minus~6pt}
-\skip_gset:Nn\itemsep{ 5pt~plus~2.5pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-\cs_set:Npn\@listii{
-    \dim_set_eq:NN\leftmargin\leftmarginii
-    \dim_set:Nn\labelwidth{\leftmarginii-\labelsep}
-\end{MacroCode}
-\begin{MacroCode}{size-10}
-    \skip_set:Nn\parsep {2pt~plus~1pt~minus~1pt}
-    \skip_set:Nn\topsep {4pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-11}
-    \skip_set:Nn\parsep {  2pt~plus~1pt~minus~1pt}
-    \skip_set:Nn\topsep {4.5pt~plus~2pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \skip_set:Nn\parsep {2.5pt~plus~1pt  ~minus~1pt}
-    \skip_set:Nn\topsep {  5pt~plus~2.5pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-    \skip_set_eq:NN\itemsep\parsep
-}
-\cs_set:Npn\@listiii{
-    \dim_set_eq:NN\leftmargin\leftmarginiii
-    \dim_set:Nn\labelwidth{\leftmarginiii-\labelsep}
-    \skip_set_eq:NN\parsep\c_zero_skip
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11}
-    \skip_set:Nn\topsep   {2pt~plus~1pt~minus~1pt}
-    \skip_set:Nn\partopsep{1pt~plus~0pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-12}
-    \skip_set:Nn\topsep   {2.5pt~plus~1pt~minus~1pt}
-    \skip_set:Nn\partopsep{  1pt~plus~0pt~minus~1pt}
-\end{MacroCode}
-\begin{MacroCode}{size-10,size-11,size-12}
-    \skip_set_eq:NN\itemsep\topsep
-}
-\cs_set:Npn\@listiv{
-    \dim_set_eq:NN\leftmargin\leftmarginiv
-    \dim_set:Nn\labelwidth{\leftmarginiv-\labelsep}
-}
-\cs_set:Npn\@listv{
-    \dim_set_eq:NN\leftmargin\leftmarginv
-    \dim_set:Nn\labelwidth{\leftmarginv-\labelsep}
-}
-\cs_set:Npn\@listvi{
-    \dim_set_eq:NN\leftmargin\leftmarginvi
-    \dim_set:Nn\labelwidth{\leftmarginvi-\labelsep}
-}
-\endinput
-\end{MacroCode}
-
-    \Finale
-    \section{Installation}
-    The easiest way to install this package is using the package
-    manager provided by your \LaTeX\ installation if such a program
-    is available. Failing that, provided you have obtained the package
-    source (\file{skrapport.tex} and \file{Makefile}) from either CTAN
-    or Github, running \texttt{make install} inside the source directory
-    works well. This will extract the documentation and code from
-    \file{skrapport.tex}, install all files into the TDS tree at
-    \texttt{TEXMFHOME} and run \texttt{mktexlsr}.
-
-    If you want to extract code and documentation without installing
-    the package, run \texttt{make all} instead. If you insist on not
-    using \texttt{make}, remember that packages distributed using
-    \pkg{skdoc} must be extracted using \texttt{pdflatex}, \emph{not}
-    \texttt{tex} or \texttt{latex}.
-
-    \PrintChanges
-    \PrintIndex
-    \printbibliography
-\end{document}

Added: trunk/Master/texmf-dist/source/latex/skrapport/skrapport.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/skrapport/skrapport.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/skrapport/skrapport.tex	2018-12-30 22:11:16 UTC (rev 49540)
@@ -0,0 +1,4375 @@
+%% skrapport Skånings rapportklass
+%%
+%% Copyright (C) 2012-2016 by Simon Sigurdhsson <sigurdhsson at gmail.com>
+%%
+%% 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 `maintained'.
+%%
+%% The Current Maintainer of this work is Simon Sigurdhsson.
+%%
+%% This work consists of the file skrapport.tex and the derived files:
+%%  * skrapport.cls
+%%  * skrapport-colortheme-default.sty
+%%  * skrapport-colortheme-unscathed.sty
+%%  * skrapport-colortheme-violet.sty
+%%  * skrapport-colortheme-cruelwater.sty
+%%  * skrapport-colortheme-skdoc.sty
+%%  * skrapport-size-common.sty
+%%  * skrapport-size10pt.clo
+%%  * skrapport-size11pt.clo
+%%  * skrapport-size12pt.clo
+\documentclass{skdoc}
+\let\SI\relax
+\usepackage{siunitx}
+\DeclareSIUnit\point{pt}
+\usepackage{hologo,booktabs,xcoffins,calc}
+\usepackage[style=authoryear]{biblatex}
+\usepackage{csquotes}
+\usepackage{varioref,cleveref}
+%\usepackage{chslacite}
+
+\ExplSyntaxOn
+\cs_set_protected_nopar:Npn\ExplHack{
+    \char_set_catcode_letter:n{ 58 }
+    \char_set_catcode_letter:n{ 95 }
+}
+\ExplSyntaxOff
+
+% Hide the implementation
+\OnlyDescription
+
+% Bibliography entries
+\begin{filecontents}{skrapport.bib}
+    @article{kpfonts,
+        author = {Christophe Caignaert},
+        title = {KP-Fonts 3.31},
+        year = {2010},
+        url = {http://www.tex.ac.uk/tex-archive/fonts/kpfonts/doc/kpfonts.pdf}
+    }
+    @standard{ISO216,
+        title = {ISO 216:2007},
+        subtitle = {Writing paper and certain classes of printed matter -- Trimmed sizes -- A and B series, and indication of machine direction},
+        author = {{International Organization for Standardization, Technical Committee 6}},
+        year = {2007}
+    }
+    @standard{ISO8601,
+        title = {ISO 8601:2004},
+        subtitle = {Data elements and interchange formats -- Information interchange -- Representation of dates and times},
+        author = {{International Organization for Standardization, Technical Committee 154}},
+        year = {2004}
+    }
+    @article{Flynn,
+        author = {Peter Flynn},
+        title = {Rolling your own Document Class: Using \LaTeX{} to
+                 keep away from the Dark Side},
+        journal = {The Prac\TeX{} Journal},
+        number = {4},
+        year = {2006},
+        url = {http://tug.org/pracjourn/2006-4/flynn/flynn.pdf}
+    }
+\end{filecontents}
+\addbibresource{skrapport.bib}
+
+% Declare the target files
+\SelfPreambleTo{\mypreamble}
+\DeclareFile[key=class,preamble=\mypreamble]{skrapport.cls}
+\DeclareFile[key=size-common,preamble=\mypreamble]%
+    {skrapport-size-common.sty}
+\DeclareFile[key=size-10,preamble=\mypreamble]{skrapport-size10pt.clo}
+\DeclareFile[key=size-11,preamble=\mypreamble]{skrapport-size11pt.clo}
+\DeclareFile[key=size-12,preamble=\mypreamble]{skrapport-size12pt.clo}
+\DeclareFile[key=theme-default,preamble=\mypreamble]%
+    {skrapport-colortheme-default.sty}
+\DeclareFile[key=theme-unscathed,preamble=\mypreamble]%
+    {skrapport-colortheme-unscathed.sty}
+\DeclareFile[key=theme-cruelwater,preamble=\mypreamble]%
+    {skrapport-colortheme-cruelwater.sty}
+\DeclareFile[key=theme-violet,preamble=\mypreamble]%
+    {skrapport-colortheme-violet.sty}
+\DeclareFile[key=theme-skdoc,preamble=\mypreamble]%
+    {skrapport-colortheme-skdoc.sty}
+
+% This is where the documentation begins
+\begin{document}
+    % Change & version info
+    \version{0.12i}
+    \changes{0.01}{Initial version}
+    \changes{0.03}{Removed \cs{rd} and \cs{id}}
+    \changes{0.04}{Added \pkg{microtype} package}
+    \changes{0.05}{Improved documentation}
+    \changes{0.06}{Corrected cheksum, further improved documentation}
+    \changes{0.07}{Various bugfixes, \hologo{XeLaTeX} compatibility,
+                    better float settings, quote style fix,
+                    \opt{intlimits} option to \pkg{amsmath}}
+    \changes{0.07a}{Fixed \pkg{kpfonts} issues}
+    \changes{0.09}{Introduced \pkg{kvoptions},
+                    fixed abstract in twocolumn mode}
+    \changes{0.10}{Include skmath if exists
+                    and wanted. Gobble optional arguments to
+                    \env{figure} and \env{table} in two-column mode}
+    \changes{0.10a}{Include \pkg{xparse} (fixes breakage)}
+    \changes{0.11}{Added \opt{minion} for Adobe Minion Pro font}
+    \changes{0.11a}{Added \opt{skdoc} font option and \thm{skdoc} color theme}
+    \changes{0.12}{Deprecated several macros, moved to \LaTeX3. Use of TOC depth above 3 is now unsupported}
+    \changes{0.12a}{The \pkg{fontspec} package is now only loaded when using the \texttt{word} or \texttt{none} font stacks on \hologo{LuaLaTeX} or \hologo{XeLaTeX}. The \texttt{word} font stack is now
+    the default font stack on \hologo{XeLaTeX}}
+    \changes{0.12b}{Minor and major bugfixes to \cs{maketitle}, \opt{ptsize}, \opt{twocolumn} and others}
+    \changes{0.12c}{Added german language option, fixed sectioning macros in \opt{twocolumn} mode}
+    \changes{0.12d}{Added \opt{hanging-titles}, latin phrase macros. Load \pkg{isomath}. Don't load \pkg{icomma}. Use \cs{frenchspacing}}
+    \changes{0.12e}{Replace usage of deprecated \pkg{expl3} macros (thanks for the heads-up, Joseph Wright!)}
+    \changes{0.12f}{Fix incorrect usage of \pkg{xparse} macros}
+    \changes{0.12g}{Track \pkg{expl3} changes (thanks to Joseph Wright)}
+    \changes{0.12h}{Fix incompatibilities with recent \pkg{expl3}}
+    \changes{0.12i}{Track \pkg{expl3} changes (thanks to Joseph Wright)}
+    % Don't forget to update the version number and release date of
+    % the package declaration in the implementation!
+
+    % Metadata
+    \package[ctan=skrapport,vcs=https://github.com/urdh/skrapport]{skrapport}
+    \title{The \textbf{\thepackage} document class}
+    \author{Simon Sigurdhsson}
+    \email{sigurdhsson at gmail.com}
+
+    % First page
+    \maketitle
+    \begin{abstract}
+        A document class intended for simple documents \emph{e.g.}
+        reports handed in to courses and such. It is small,
+        straight-forward and heavily inspired by the Prac\TeX{}
+        Journal style.
+    \end{abstract}
+    \tableofcontents
+
+    \section{Documentation}
+    The \thepackage\ document class aims to make typesetting simple but
+    stylish documents (mostly reports) as effortless as possible. It
+    does this by mostly reimplementing the default \pkg{article} class
+    in \LaTeX3, while making modifications to both form and function
+    along the way.
+
+    Because it is reimplemented in \LaTeX3, it may be incompatible with
+    any number of packages that patch or otherwise modify internals of
+    \pkg{article} or other document classes. For commonly used packages
+    (especially those used frequently by the author), this shouldn't be
+    a problem. The author gladly accepts reports of any such issues at
+    the project issue tracker --- see \enquote{Known issues} on
+    \vpageref{sec:issues}.
+
+    \subsection{Options}
+    As with other document classes, the class is loaded, possibly with
+    options, by issuing \Macro\documentclass[<options>]{skrapport}.
+    The class has a number of options controlling both form and function,
+    by \emph{e.g.} setting the font size, selecting a font stack, setting
+    the section title style, and so on.
+
+    \subsubsection{Layout}
+    Two options controlling the overall layout of the document are
+    provided. Collectively they control the paper size and text layout
+    of the document.
+
+    \Option{paper}\WithValues{a4, a5}\AndDefault{a4}
+    The \opt{paper} option controls the paper size of the document.
+    Internally, this is set by the \pkg{typearea} package, so in theory
+    many more paper sizes could be available, but the current options
+    cover most useful documents.
+
+    \Option{twocolumn}
+    The \opt{twocolumn} option sets up a two-column mode. This is not
+    provided by internal \LaTeX\ mechanics as in the original
+    \pkg{article} class, but instead by patching environments and macros
+    and using a combination of the \pkg{multicol} and \pkg{grid}
+    packages. In theory, this means that baselines of adjacent columns
+    should be aligned, and that three- or four-column modes are possible
+    in the future (but that'd be ridiculous).
+
+    \subsubsection{Style}
+    A couple of options to control the style of the document are
+    provided. Two of them, \opt{leqno} and \opt{fleqn}, are mainly
+    provided for compatibility with the \pkg{article} class.
+
+    \Option{leqno}
+    This option makes display math environments typeset their labels on
+    the left-hand side of the formula instead of the right-hand side.
+
+    \Option{fleqn}
+    This option makes display math environments left-align the entire
+    formula as opposed to centering it.
+
+    \Option{indent}\WithValues{true, false}\AndDefault{false}
+    The \opt{indent} option enables or disables the indentation of
+    paragraphs, with the default being not to indent anything. The
+    default behaviour thus is similar to that obtained using the
+    \pkg{parskip} package with the \pkg{article} package.
+
+    \Option{titles}\WithValues{rm, it, bf, sf}\AndDefault{bf}
+    Section titles (and a few other elements) are controlled by this
+    option in that they are typeset either using the regular roman font,
+    the boldfaced roman font or the sans serif font. For historical
+    reasons the default is a boldfaced roman font, but the sans serif
+    option is very handsome.
+
+    \Option{hanging-titles}\WithValues{true, false}\AndDefault{false}
+    This options allow sections to be set as \enquote{hanging} titles,
+    \emph{i.e.} with the section number in the margin.
+
+    \Option{color}\WithValues{\meta{color theme}}\AndDefault{default}
+    This option tells the class to activate color theme support and
+    optionally load a color theme. Several color themes are available
+    (as detailed by \enquote{Color themes} \vpageref{ssec:color}),
+    and the special value \texttt{false} disables color support
+    entirely (which only means that the \pkg{xcolor} package isn't
+    loaded, and that \cs{colortheme} remains undefined).
+
+    \subsubsection{Fonts}
+    Only two options control the font setup of the document class. The
+    class provides the same point sizes as \pkg{article}, but also
+    provides a large number of font stacks to choose from.
+
+    \Option{ptsize}\WithValues{10pt, 11pt, 12pt}\AndDefault{11pt}
+    The document class provides the same three point sizes as the
+    \pkg{article} class. There is room for expansion, but there really
+    shouldn't be any reason to use other point sizes.
+
+    \Option{font}\WithValues{none, kpfonts, lmodern, palatino, minion, skdoc, word}\AndDefault{kpfonts}
+    Several different font stacks, detailed by \vref{tab:font}, are
+    provided. Most of these work with \hologo{pdfLaTeX}, but there are
+    two special font stacks: \texttt{none} and \texttt{word}. The
+    former, predictably, loads no fonts whatsoever leaving the document
+    with Computer Modern fonts. This is useful if the fonts are replaced
+    later anyway, such as when using \hologo{XeLaTeX}.
+
+    The \texttt{word}
+    font stack, however, does load a few fonts. The fonts must be present
+    and installed on the system as OTF or TTF fonts, and the font stack
+    requires either \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+    Both \texttt{word} and \texttt{none} load the \pkg{fontspec}
+    package, assuming the document is compiled using \hologo{XeLaTeX}
+    or \hologo{LuaLaTeX}.
+
+    \Notice{The \texttt{skdoc} font stack doesn't have a math font.}
+    \Warning{Currently, \pkg{fontspec} is always loaded by
+             \hologo{XeLaTeX} regardless of options due to
+             the use of \pkg{polyglossia}. This means that
+             you \emph{have} to use OpenType fonts in your
+             document, otherwise \emph{only} Latin Modern
+             Roman (\emph{i.e.} no sans-serif or monospace
+             fonts) will be available. Therefore, the \texttt{word}
+             font stack is the default when using \hologo{XeLaTeX}.
+             \Hologo{LuaLaTeX} is not affected by this.}
+
+    \begin{table}[tp]
+        \centering
+        \caption{Font stacks provided by \thepackage.}
+        \label{tab:font}
+        \NewCoffin\tempcoffin\newlength\templength
+        \SetHorizontalCoffin\tempcoffin{
+            \begin{tabular}{lllll}
+                \toprule
+                Font stack & Serif font & Math font & Sans serif font & Monospace font \\
+                \midrule
+                \texttt{kpfonts} & Kp-Fonts & Kp-Fonts & Kp-Fonts & Kp-Fonts \\
+                \texttt{lmodern} & Latin Modern & Latin Modern & Latin Modern & Source Code Pro \\
+                \texttt{palatino} & \TeX\ Gyre & PX & Arev & Source Code Pro \\
+                \texttt{minion} & Minion Pro & Minion Pro & Myriad Pro & Source Code Pro \\
+                \texttt{skdoc} & PT Serif & --- & Open Sans & Source Code Pro \\
+                \texttt{word} & Cambria & Cambria Math & Calibri & Consolas \\
+                \bottomrule
+            \end{tabular}
+        }
+        \setlength{\templength}{(\textwidth - \CoffinWidth\tempcoffin)/2}
+        \hspace*{\templength}
+        \TypesetCoffin\tempcoffin
+    \end{table}
+
+    \subsubsection{Functionality}
+    The final three options affect functionality in one way or another.
+    Since \thepackage\ was originally designed for reports written in
+    either swedish or english, the class always loads either \pkg{babel}
+    or \pkg{polyglossia} with either of these languages. Additionally,
+    the class may load the \pkg{skmath} package if desirable.
+
+    \Option{nomath}\WithValues{true, false}\AndDefault{false}
+    When \texttt{false}, the \pkg{skmath} package is loaded, providing
+    improvements to the math functionality of \pkg{amsmath} and friends.
+
+    \Option{lang}\WithValues{en, sv, de}\AndDefault{sv}
+    This option specifies what main language \pkg{babel} or
+    \pkg{polyglossia} set up with. English (or swedish, for
+    \texttt{lang=en}) is loaded as well, for use in constructs
+    that allow for a second language.
+
+    \Option{draft}\WithValues{true, false}\AndDefault{false}
+    The \opt{draft} option, much like in \pkg{article}, enables
+    \cs{overfullrule}s and possibly similar functionality in loaded
+    packages (if they react to the global \opt{draft} option).
+
+    \subsection{User-level commands and environments}
+    The general idea behind the document class is to provide most
+    (if not all) of the macros provided by the standard \LaTeXe{}
+    classes, as well as additional macros to simplify and beautify
+    the documents produced. As such, most of the documentation that
+    follows details macros that are present in the standard document
+    classes. Some of them have changed functionality or semantics,
+    so at least a skim through this section is recommended.
+
+    \subsubsection{The front page}
+    The front page is the part of the document that has seen the most
+    changes in \thepackage\ compared to \pkg{article}. In addition to
+    the new, Prac\TeX-inspired layout, there are a few additional
+    pieces of information in it. Also, the \cs{author} macro has been
+    dramatically improved.
+
+    \DescribeMacro\date{<ISO8601 date>}
+    The \cs{date} macro now internally employs \pkg{isodate} to typeset
+    the date of the document. This means that the input must be either
+    the string \enquote{today}, the token \cs{today} or a date as defined
+    by ISO8601\footcite{ISO8601}. The mechanisms provided by
+    \pkg{isodate} can be used to affect the output format.
+
+    \DescribeMacro\author[<email>]{<name>}
+    In contrast with the \pkg{article} package, the \cs{author} macro
+    should no longer be used to typeset several author names at once.
+    Instead, one \cs{author} command is to be issued for every author,
+    optionally providing a corresponding email. These are then combined,
+    in the order they are given, to form a list of authors and a
+    corresponding list of email adresses.
+
+    \DescribeMacro\regarding{<topic>}
+    This macro defines a topic or other short message detailing the
+    purpose of the document. It is typeset along with the date in the
+    upper left corner of the title page.
+
+    \DescribeMacro\license{<license name>}
+    The \cs{license} macro defines a short license name to be typeset
+    in the lower right corner of the title page. This mechanism could of
+    course be used to typeset an institution name or similar as well.
+    It is only typeset when also using the \env{titlepage} environment
+    described below.
+
+    \DescribeMacro\title{<document title>}
+    The \cs{title} macro, while not defined by \pkg{skrapport}, is
+    relevant to describe. It simply sets the title of the document, as
+    displayed by \cs{maketitle}.
+
+    \DescribeMacro\maketitle[hide=\{date,regarding,email\},nopdfinfo]
+    As in \pkg{article}, the \cs{maketitle} macro typesets the
+    information provided by \cs{title}, \cs{author} and friends to form
+    a stylish front page. When combined with \env{abstract},
+    \env{titlepage} and/or \cs{tableofcontents}, you get a very
+    good-looking preamble with almost no effort.
+
+    The optional argument is a key-value list with two valid entries,
+    \opt*{hide} and \opt*{nopdfinfo}. The \opt*{hide} entry accepts a
+    comma-separated list in which the values \opt*{date},
+    \opt*{regarding} and \opt*{email}
+    are interpreted as instructions to hide the corresponding entry from
+    the front page. The \opt*{nopdfinfo} key disables the generation of
+    PDF information by \pkg{hyperref}.
+
+    \DescribeEnv[<abstract text>]{abstract}
+    The \env{abstract} environment defines an abstract, which is typeset
+    in a block with the \cs{abstractname} word next to it (see
+    \emph{e.g.} the title page of this manual for an example).
+
+    \DescribeEnv[<title page contents>]{titlepage}
+    Normally, \cs{maketitle} doesn't reserve its own page. By enclosing
+    \cs{maketitle} (and \env{abstract} if appropriate) in the
+    \env{titlepage} environment, the contents are typeset on their
+    own page, without page numbering and with the \cs{license} text
+    in the lower right corner (if applicable).
+
+    \subsubsection{Sectioning}
+    \DescribeMacro\section*[<short title>]{<title>}
+    \DescribeMacro\subsection*[<short title>]{<title>}
+    \DescribeMacro\subsubsection*[<short title>]{<title>}
+    \DescribeMacro\paragraph*[<short title>]{<title>}
+    \DescribeMacro\subparagraph*[<short title>]{<title>}
+    The sectioning macros are superficially very similar to those
+    provided by \pkg{article}, but have been completely reimplemented
+    in \pkg{expl3} code. Additionally, the style of these sectioning
+    macros, as detailed by the \opt{titles} option documentation above,
+    can be changed.
+
+    All of them have both arguments and behaviour in common, only
+    differing in style. The starred versions are unnumbered, but still
+    accept the opional short title (simply discarding it). The optional
+    short title is used in the table of contents. The
+    \texttt{secnumdepth} counter limits the depth of section numbering.
+
+    The first three macros, being section titles, are typeset as actual
+    titles on their own line with appropriate spacing above and below.
+    The paragraph macros instead typeset run-in titles.
+
+    \subsubsection{Macros and environments from \pkg{article}}
+    Aside from the \env{itemize} and \env{enumerate} envionments and the
+    font selection macros, which are carried without modification from
+    \LaTeXe, a couple of environments and macros are defined.
+
+    The old font macros, whose use has been discouraged for a long time,
+    are now deprecated. Instead of functioning correctly, they will emit
+    an error and require user input. Use the \cs*{text??}/\cs*{??family}
+    macros instead. For emphasis, use the \cs{emph} macro.
+
+    \DescribeMacro\emph{<text>}
+    Emphasized text will be typeset in italic, or bold italic if the
+    macro is used in a context where italic is already used (such as
+    inside another \cs{emph} invokation).
+
+    \DescribeEnv[\cs*{item}\oarg{item} \meta{description}]{description}
+    The \env{description} environment behaves as expected, typesetting
+    a list of descriptions as in the \pkg{article} class.
+
+    \DescribeEnv[<short quote>]{quote}
+    Intended for short quotes, the \env{quote} environment simply
+    typesets a centered block of italic text.
+
+    \DescribeEnv[<long quote>]{quotation}
+    Longer quoted passages are typeset using the \env{quotation}
+    environment. This is simply a \env{quote} environment with additional
+    spacing above and below.
+
+    \DescribeEnv[<pretentious poetry>]{verse}
+    The \env{verse} environment is intended for poetry and other text
+    where line breaks are critical. Use \verb|\\| to break
+    lines.
+
+    \DescribeMacro\appendix
+    This macro signals the end of the main matter and the start of
+    the appendix. In essence, it resets the section numbering counter
+    and changes the section numbering to the upper-case alphabetic
+    sequence.
+
+    \subsubsection{Floats}
+    Both the \env{figure} and \env{table} float environments accept an
+    optional positioning argument. The default positioning is
+    \texttt{tp}. Both environments also have starred variants, which
+    do nothing in one-column mode while typesetting the figure across
+    both columns in two-column mode. As usual, \cs{centering},
+    \cs{caption} and \cs{label} should be used inside the floats.
+
+    \DescribeEnv[<content>]{figure}[position]
+    This float environment is intended for figures. The most common
+    contents are \cs{includegraphics} statements or \env{tikzpicture}
+    environments.
+
+    \DescribeEnv[<content>]{table}[position]
+    A float intended for tables. Probably contains \env{tabular}s.
+
+    \DescribeEnv{figcenter}
+    This environment is useful for wide figures and tables. It typesets
+    its contents centered horizonally, but allows the content to extend
+    into the margin. The content is set in a horizontal coffin.
+
+    \subsubsection{Table of contents}
+    \DescribeMacro\tableofcontents
+    The table of contents are typeset using this macro. The
+    \texttt{tocdepth} counter limits the depth of the table of
+    contents, but for stylistic reasons values higher than 3 are
+    unsupported.
+
+%    \subsubsection{Basic bibliography support}
+
+    \subsubsection{Miscellaneous}
+    \DescribeMacro\comment*{<comment>}
+    \DescribeMacro\note*{<comment>}
+    \DescribeMacro\com*{<comment>}
+    These macros, the two latter being aliases of the first one, typeset
+    an author's comment in the document. The starred variants typeset the
+    comment inline with a red background, while the unstarred variant
+    typesets the comment in a \cs{marginpar}.
+
+    \DescribeMacro\eg
+    \DescribeMacro\ie
+    \DescribeMacro\etc
+    \DescribeMacro\cf
+    \DescribeMacro\viz
+    These macro print the abbreviation of the latin phrases
+    \emph{exempli gratia}, \emph{id est}, \emph{et cetera},
+    \emph{confer} and \emph{videlicet}, respectively.
+    The macros peek ahead to find punctuation marks and spaces, so they
+    should behave correctly regardless of usage (assuming they're used in
+    running text and uncomplicated settings). In languages other than
+    english, appropriate translations are made if applicable.
+
+    \DescribeMacro\dash
+    This macro prints an em-dash surrounded by thin spaces, as discussed
+    by \textcite[\pno~8]{Flynn}. When \cs*{DeclareUnicodeCharacter} is
+    available, the real em dash uses this definition.
+
+    \subsubsection{Color theme support}
+    \DescribeMacro\colortheme{<theme>}
+    The \cs{colortheme} macro, which is only available when the
+    \opt{color} option is \texttt{true}, applies a color theme to
+    the document. For a list of available color themes, see
+    \enquote{Color themes} \vpageref{ssec:color}.
+
+    \subsubsection{Font size macros}
+    The font size macros, expectedly, set the size of the text. They
+    do not take arguments, instead affecting all subsequent text of the
+    current \TeX\ group, so use braces to provide and limit context.
+    Also note that unlike \pkg{article}, these macros are \emph{all}
+    available, regardless of point size option.
+
+    \DescribeMacro\tiny
+    Typesets {\tiny tiny} text.
+    \DescribeMacro\scriptsize
+    Typesets {\scriptsize script-size} text.
+    \DescribeMacro\footnotesize
+    Typesets {\footnotesize footnote-sized} text.
+    \DescribeMacro\small
+    Typesets {\small small} text.
+    \DescribeMacro\normalsize
+    Typesets normal text.
+    \DescribeMacro\large
+    Typesets {\large large} text.
+    \DescribeMacro\Large
+    Typesets {\Large slightly larger} text.
+    \DescribeMacro\LARGE
+    Typesets {\LARGE even larger} text.
+    \DescribeMacro\huge
+    Typesets {\huge huge} text.
+    \DescribeMacro\Huge
+    Typesets {\Huge really huge} text.
+
+    \subsection{Color themes}\label{ssec:color}
+    \DescribeMacro\colortheme{<theme>}
+    If the package is loaded with the \opt{color} option, changing the color theme is
+    possible using \cs{colortheme}, which loads an
+    appropriate package. At the moment, four color themes are available.
+
+    \Theme{default}
+    The \thm{default} theme is fairly conservative, only coloring
+    \pkg{hyperef} links with more readable, slightly darker colors than
+    the standard ones. It should print well even on non-color printers.
+
+    \Theme{unscathed}
+    The \thm{unscathed} theme is based on a palette with the same
+    name on COLOURlovers%
+\footnote{\url{http://www.colourlovers.com/palette/1440498/unscathed}},
+    and applies a \textcolor[HTML]{463335}{dark brown} color to
+    emphasized text, a \textcolor[HTML]{CF5D3B}{rusty} color to links,
+    a \textcolor[HTML]{B34430}{darker rust} color to titles and a
+    \textcolor[HTML]{70524A}{lighter brown} to quotes.
+
+    \Theme{cruelwater}
+    The \thm{cruelwater} theme is also based on a palette from
+    COLOURlovers%
+\footnote{\url{http://www.colourlovers.com/palette/126030/Cruel_Water_at_Night}},
+    and applies a \textcolor[HTML]{030C22}{dark blue} color to bold
+    text and captions, a \textcolor[HTML]{20293F}{slightly less dark
+    blue} to titles and emphasized text, a \textcolor[HTML]{A9B0B3}{
+    light gray} color to small print and a \textcolor[HTML]{404749}{
+    darker gray} to quotes.
+
+    \Theme{violet}
+    The \thm{violet} theme, like \thm{unscathed} and \thm{cruelwater},
+    is based on a COLOURlovers palette%
+\footnote{\url{http://www.colourlovers.com/palette/1831303/Violet_White_Bedrm}}.
+    It colors all links \textcolor[HTML]{932444}{bright purple}, applies
+    a \textcolor[HTML]{311A2A}{dark puple} color to titles, bold text
+    and captions, a \textcolor[HTML]{D6CBCF}{grayish purple} to small
+    print, a \textcolor[HTML]{463335}{dark brown} color to quotes and a
+    \textcolor[HTML]{98758D}{pastel violet} color to emphasized text.
+
+    \Theme{skdoc}
+    The \thm{skdoc} theme is loosely based on the \pkg{skdoc} document class, with which this documentation is typeset.
+
+%    \subsection{Additional information}
+%    The document class includes a number of packages by default. This
+%    is useful to know, since passing explicit options to these packages
+%    will require you to utilize the \cs{PassOptionsToPackage} macro
+%    before you load the class using \cs{documentclass}.
+%    Table~\ref{tab:pkgs} lists the packages included by \thepkg\ along
+%    with their options (if applicable).
+%
+%    \begin{table}[tbp]
+%        \centering
+%        \caption{User-level packages included by \thepkg.}
+%        \label{tab:pkgs}
+%        \begin{tabular}{llp{15em}}
+%            \toprule
+%            \textbf{Package} & \textbf{Options} & \textbf{Comments} \\
+%            \midrule
+%            \pkg{amsmath} & \texttt{intlimits} & Provides \hologo{AmS} commands and environments. \\
+%            \pkg{amssymb} & & Only if not using \opt{kpfonts}.\\
+%            \pkg{babel} & see options \opt{swe} and \opt{eng} & Only loaded if \emph{not} using \hologo{XeTeX}.\\
+%            \pkg{calc} & & \\
+%            \pkg{fontenc} & \texttt{T1} & Only loaded if \emph{not} using \hologo{XeTeX}. Makes sure we are using a good font encoding for crisp appearance on-screen (OT1 is horrible). \\
+%            \pkg{fontspec} & \texttt{quiet} & Only loaded if using \hologo{XeTeX}. Provides basic OTF font selection commands.\\
+%            \pkg{geometry} & \texttt{a4paper} or \texttt{a5paper} & This is used by the \opt{paper} option to set the paper area. \\
+%            \pkg{icomma} & & \\
+%            \pkg{inconsolata} & & \\
+%            \pkg{microtype} & & Provides micro-typographic improvements.\\
+%            \pkg{multicol} & & Only loaded with the \opt{twocolumn} option. \\
+%            \pkg{polyglossia} & see options \opt{swe} and \opt{eng} & Only loaded if using \hologo{XeTeX}.\\
+%            \pkg{skmath} & & Only if it exists and \opt{nomath} isn't set.\\
+%            \pkg{textcomp} & & Only if not using \opt{kpfonts}.\\
+%            \pkg{xcolor} & & Only loaded with the \opt{color} option.\\
+%            \bottomrule
+%        \end{tabular}
+%    \end{table}
+
+    \section{Known issues}\label{sec:issues}
+    A list of current issues is available in the Github repository of this
+    package\footnote{\url{https://github.com/urdh/skrapport/issues}}, but as
+    of the release of \theversion, there is one known issue:
+    \begin{description}
+    %    \item[\#6]  ???
+        \item[--] If a \cs{subsubsection} is the last item of the Table
+        of Contents, it will not be indented properly.
+    \end{description}
+
+    If you discover any bugs in this package, please report them to the issue
+    tracker in the \thepackage\ Github repository.
+
+    \Implementation\ExplHack
+    \section{Implementation}
+    Start by including \pkg{expl3}, \pkg{l3keys2e} and some other
+    useful packages, as well as declaring the class.
+\begin{MacroCode}{class}
+\RequirePackage{expl3,l3keys2e,xparse,xstring,etoolbox}
+\ProvidesExplClass{skrapport}%
+    {2018/12/29}{0.12i}{stylish report document class}
+\end{MacroCode}
+
+    \subsection{Messages}
+    Tons of messages are declared for future use.
+\begin{MacroCode}{class}
+\msg_new:nnnn{skrapport}{option-deprecated}{Option~`#1'~deprecated!}
+    {Please~use~`#2'~instead.}
+\msg_new:nnnn{skrapport}{option-no-effect}{Option~`#1'~deprecated!}
+    {It~has~no~effect;~simply~use~nothing~instead.}
+\msg_new:nnnn{skrapport}{invalid-paper-size}{Invalid~paper~size~`#1'!}
+    {\token_to_str:N\__skrapport_setup_paper:n~was~invoked~with~an~
+     invalid~argument;~paper~size~will~remain~unchanged.}
+\msg_new:nnnn{skrapport}{invalid-point-size}{Invalid~point~size~`#1'!}
+    {\token_to_str:N\__skrapport_setup_ptsize:n~was~invoked~with~an~
+     invalid~argument;~cannot~continue~without~setting~a~valid~point~
+     size.~Please~fix~the~issue~before~typesetting~again.}
+\msg_new:nnnn{skrapport}{invalid-titles}{Invalid~title~type~`#1'!}
+    {\token_to_str:N\__skrapport_setup_titles:n~was~invoked~with~an~
+     invalid~argument;~falling~back~to~`#2'.}
+\msg_new:nnnn{skrapport}{invalid-lang}{Invalid~language~`#1'!}
+    {\token_to_str:N\__skrapport_setup_lang:n~was~invoked~with~an~
+     invalid~argument;~`babel'~and/or~`polyglossia'~will~remain~
+    unloaded.}
+\msg_new:nnnn{skrapport}{invalid-font}{Invalid~font~`#1'!}
+    {\token_to_str:N\__skrapport_setup_font:n~was~invoked~with~an~
+     invalid~argument;~no~font~package~has~been~loaded.~This~may~result~
+     in~bad~rendering~due~to~old~Computer~Modern~fonts.}
+\msg_new:nnnn{skrapport}{noop-call}{No-op~invokation~of~macro!}
+    {\token_to_str:N#1~was~invoked,~but~circumstances~dictate~that~the~
+    macro~should~do~nothing.~Will~do~\token_to_str:N\prg_do_nothing:~
+    instead.}
+\msg_new:nnnn{skrapport}{old-font-deprecated}{Deprecated~macro~\token_to_str:N#1!}
+    {The~old~font~macro~\token_to_str:N#1~is~deprecated!~Use~
+    \token_to_str:N#2~instead.}
+\msg_new:nnnn{skrapport}{color-patch-failed}{Could~not~patch~macro~\token_to_str:N#1!}
+    {The~macro~\token_to_str:N#1~could~not~be~patched!~Color~theme~
+    support~may~be~incomplete.}
+\msg_new:nnnn{skrapport}{license-not-printed}{Detected~\token_to_str:N\license\ but~no~`titlepage'!}
+    {The~text~provided~by~\token_to_str:N\license\ is~only~printed~when~
+    the~`titlepage'~environment~is~used,~but~it~seems~to~be~missing.}
+\msg_new:nnnn{skrapport}{font-requires-xetex}{The~`font=#1'~option~requires~XeTeX~or~luaTeX!}
+    {Please~choose~another~font~setup~or~compile~the~document~with~
+    either~xelatex~or~lualatex.}
+\msg_new:nnnn{skrapport}{tocdepth-too-deep}{TOC~depth~is~too~deep!}
+    {The~current~tocdepth,~#1,~is~not~supported.~Please~redefine~the~
+    \token_to_str:N#2~macro~to~enable~support.}
+\msg_new:nnnn{skrapport}{caption-in-figcenter}{Cannot~use~\token_to_str:N\caption\ here!}
+    {The~\token_to_str:N\caption\ macro~can't~be~used~inside~figcenter~environments!~Please~move~the~caption~to~the~enclosing~float~environment.}
+\end{MacroCode}
+    This message should probably not be used at all. Except in
+    development versions straight off Github, of course.
+\begin{MacroCode}{class}
+\msg_new:nnn{skrapport}{not-implemented}
+    {Unimplemented~macro~\token_to_str:N#1!}
+\end{MacroCode}
+
+    \subsection{Options}
+    First, a few booleans used by parts of the option handling code.
+    \begin{macro}{\g__skrapport_draft_bool}
+    Are we in \opt{draft} mode?
+\begin{MacroCode}{class}
+\bool_new:N\g__skrapport_draft_bool
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\g__skrapport_color_bool}
+    Are we supposed to be using \opt{color}s?
+\begin{MacroCode}{class}
+\bool_new:N\g__skrapport_color_bool
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\g__skrapport_has_polyglossia_bool}
+    Has \pkg{polyglossia} been loaded?
+\begin{MacroCode}{class}
+\bool_new:N\g__skrapport_has_polyglossia_bool
+\end{MacroCode}
+    \end{macro}
+
+    \subsubsection{Option setup macros}
+    In this section, all options declared in the previous section are
+    implemented using setup macros. Some of these may have to be called
+    in an appropriate order, but I haven't checked that yet.
+
+    \begin{macro}{\__skrapport_setup_paper:n}[1]
+        {Paper size (\texttt{a4} or \texttt{a5})}
+    \changes{0.12}{Use \pkg{typearea} to set paper size}
+    Note the extra integer, which is set up for use with \pkg{grid}.
+    \begin{macro*}{\g__skrapport_grid_lines_int}
+\begin{MacroCode}{class}
+\int_new:N\g__skrapport_grid_lines_int
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_paper:n#1{
+    \str_case:nnF{#1}{
+\end{MacroCode}
+    The two options simply consist of passing the appropriate option
+    to the \pkg{typearea} package. Note that the use of \pkg{typearea}
+    mean that we theoretically could accept more paper size options.
+\begin{MacroCode}{class}
+        {a4}{
+            \PassOptionsToPackage{paper=A4}{typearea}
+            \int_gset:Nn\g__skrapport_grid_lines_int{40}
+        }
+        {a5}{
+            \PassOptionsToPackage{paper=A5}{typearea}
+            \int_gset:Nn\g__skrapport_grid_lines_int{28}
+        }
+    }{
+\end{MacroCode}
+    Invalid paper sizes (such calls should never happen) are
+    handled by issuing a warning and hoping that the default
+    paper size is acceptable.
+\begin{MacroCode}{class}
+        \msg_warning:nnn{skrapport}{invalid-paper-size}{#1}
+    }
+\end{MacroCode}
+    The \pkg{typearea} package is loaded with the options specified
+    earlier through \cs{PassOptionsToPackage}, and some additional ones.
+\begin{MacroCode}{class}
+    \AtEndOfClass{\RequirePackage[DIV=calc]{typearea}}
+\end{MacroCode}
+    In case the point size changes later, or two column mode is
+    activated, we recalculate the typearea just before the typesetting
+    begins.
+\begin{MacroCode}{class}
+    \AtBeginDocument{\recalctypearea}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_ptsize:n}[1]
+        {Point size (\texttt{10pt}, \texttt{11pt} or \texttt{12pt})}
+    The standard point sizes are defined much like in the \pkg{article}
+    class, \emph{i.e.} by saving a number and loading \file{size10.clo},
+    \file{size11.clo} or \file{size12.clo} as appropriate
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_ptsize:n#1{
+    \str_case:nnF{#1}{
+\end{MacroCode}
+    \begin{macro*}{\c__skrapport_ptsize_token}
+\begin{MacroCode}{class}
+        {10pt}{\int_const:Nn\c__skrapport_ptsize_int{0}}
+        {11pt}{\int_const:Nn\c__skrapport_ptsize_int{1}}
+        {12pt}{\int_const:Nn\c__skrapport_ptsize_int{2}}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+    }{
+\end{MacroCode}
+    Invalid point sizes are critical errors, since we can't recover
+    from them in any reasonable way. Loading a default point size is
+    unreasonable, since all in-class calls to this macro should know
+    what sizes are available, and if you're calling it with invalid
+    parameters from elsewhere, you should be punished.
+\begin{MacroCode}{class}
+        \msg_critical:nnn{skrapport}{invalid-point-size}{#1}
+    }
+    \file_input:n{skrapport-size#1.clo}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_twocolumn:}
+    \changes{0.12c}{Major changes to the sectioning commands, to
+    override what \pkg{grid} is doing}
+    Setting up for twocolumn mode is slightly compliacted. Note that this
+    macro should be called from \cs{AtEndOfClass} to ensure that we patch
+    everything correctly. Note also that \pkg{multicol} is always loaded
+    as it is used for the \env{theindex} environment.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_twocolumn:{
+    \RequirePackage{etoolbox}
+    \AtBeginDocument{
+        \KOMAoptions{twocolumn=false,DIV=12}
+    }
+\end{MacroCode}
+    We include the \pkg{grid} package in two-column mode, because
+    it looks way better that way.
+\begin{MacroCode}{class}
+    \int_set:Nn\l_tmpa_int{10+\c__skrapport_ptsize_int}
+    \int_set:Nn\l_tmpb_int{12*\l_tmpa_int/10}
+    \RequirePackage[fontsize=\l_tmpa_int pt,
+                    baseline=\l_tmpb_int pt,
+                    lines=\g__skrapport_grid_lines_int]{grid}
+\end{MacroCode}
+    Now, we patch commands. First up is \env{abstract}. Save the old
+    one in case we need it (we do).
+\begin{MacroCode}{class}
+    \cs_set_eq:Nc\__skrapport_onecol_abstract:{environment~abstract~code}
+    \cs_set_eq:Nc\__skrapport_end_onecol_abstract:{environment~abstract~end~aux~}
+    \pretocmd{\__skrapport_onecol_abstract:}{\null}{}{}
+    \RenewDocumentEnvironment{abstract}{}{\section*{\abstractname}}{}
+\end{MacroCode}
+    Then \env{document} (kind of, at least) and \cs{maketitle}. Again,
+    save the old \cs{maketitle}.
+\begin{MacroCode}{class}
+    \AfterEndPreamble{\begin{multicols}{2}}
+    \AtEndDocument{\end{multicols}}
+    \cs_set_eq:NN\__skrapport_onecol_maketitle:\maketitle
+    \pretocmd{\maketitle}{\begin{onecol}}{}{}
+    \apptocmd{\maketitle}{\end{onecol}}{}{}
+\end{MacroCode}
+    Next up is \env{titlepage}. This is where we need the saved
+    \env{abstract} and \cs{maketitle}.
+\begin{MacroCode}{class}
+    \BeforeBeginEnvironment{titlepage}{
+        \begin{onecol}
+        \cs_set_eq:cN{environment~abstract~code}\__skrapport_onecol_abstract:
+        \cs_set_eq:cN{environment~abstract~end~aux~}\__skrapport_end_onecol_abstract:
+        \cs_set_eq:NN\maketitle\__skrapport_onecol_maketitle:
+    }
+    \AfterEndEnvironment{titlepage}{\end{onecol}}
+\end{MacroCode}
+    Always typeset \env{equation} and friends outside the grid:
+\begin{MacroCode}{class}
+    \BeforeBeginEnvironment{equation}{\begin{gridenv}}
+    \AfterEndEnvironment{equation}{\end{gridenv}}
+    \BeforeBeginEnvironment{equation*}{\begin{gridenv}}
+    \AfterEndEnvironment{equation*}{\end{gridenv}}
+    \BeforeBeginEnvironment{multline}{\begin{gridenv}}
+    \AfterEndEnvironment{multline}{\end{gridenv}}
+    \BeforeBeginEnvironment{multline*}{\begin{gridenv}}
+    \AfterEndEnvironment{multline*}{\end{gridenv}}
+    \BeforeBeginEnvironment{gather}{\begin{gridenv}}
+    \AfterEndEnvironment{gather}{\end{gridenv}}
+    \BeforeBeginEnvironment{gather*}{\begin{gridenv}}
+    \AfterEndEnvironment{gather*}{\end{gridenv}}
+    \BeforeBeginEnvironment{align}{\begin{gridenv}}
+    \AfterEndEnvironment{align}{\end{gridenv}}
+    \BeforeBeginEnvironment{align*}{\begin{gridenv}}
+    \AfterEndEnvironment{align*}{\end{gridenv}}
+    \BeforeBeginEnvironment{flalign}{\begin{gridenv}}
+    \AfterEndEnvironment{flalign}{\end{gridenv}}
+    \BeforeBeginEnvironment{flalign*}{\begin{gridenv}}
+    \AfterEndEnvironment{flalign*}{\end{gridenv}}
+    \BeforeBeginEnvironment{alignat}{\begin{gridenv}}
+    \AfterEndEnvironment{alignat}{\end{gridenv}}
+    \BeforeBeginEnvironment{alignat*}{\begin{gridenv}}
+    \AfterEndEnvironment{alignat*}{\end{gridenv}}
+\end{MacroCode}
+    Since \pkg{grid} override the usual sectioning macros, we have to
+    provide fixed and improved variants that conform to our style
+    and out public API. This is only necessary for
+    the \enquote{major} sectioning macros, not \cs*{paragraph} and
+    \cs*{subparagraph}.
+    \begin{macro*}{\section}
+\begin{MacroCode}{class}
+    \skip_gset:Nn\c__skrapport_section_pre_skip{-.999\baselineskip}
+    \skip_gset:Nn\c__skrapport_section_post_skip{0.001\baselineskip}
+    \dim_gset:Nn \c__skrapport_section_indent_dim{\c_zero_dim}
+    \cs_set_protected:Nn\__skrapport_section_style:
+        {\normalfont\__skrapport_title_style:}
+    \DeclareDocumentCommand\section{som}{
+        \__skrapport_generic_section:nnnnn{section}{1}{##1}{##2}{##3}
+    }
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\subsection}
+\begin{MacroCode}{class}
+    \skip_gset:Nn\c__skrapport_subsection_pre_skip{\baselineskip}
+    \skip_gset:Nn\c__skrapport_subsection_post_skip{-.35\baselineskip}
+    \dim_gset:Nn \c__skrapport_subsection_indent_dim{\c_zero_dim}
+    \cs_set_protected:Nn\__skrapport_subsection_style:
+        {\normalfont\__skrapport_title_style:\unskip}
+    \DeclareDocumentCommand\subsection{som}{
+        \__skrapport_generic_section:nnnnn{subsection}{2}{##1}{##2}{##3}
+    }
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\subsubsection}
+\begin{MacroCode}{class}
+    \skip_gset:Nn\c__skrapport_subsubsection_pre_skip{\baselineskip}
+    \skip_gset:Nn\c__skrapport_subsubsection_post_skip{-.35\baselineskip}
+    \dim_gset:Nn \c__skrapport_subsubsection_indent_dim{\c_zero_dim}
+    \cs_set_protected:Nn\__skrapport_subsubsection_style:
+        {\normalfont\itshape\__skrapport_title_style:\unskip}
+    \DeclareDocumentCommand\subsubsection{som}{
+        \__skrapport_generic_section:nnnnn{subsubsection}{3}{##1}{##2}{##3}
+    }
+\end{MacroCode}
+    \end{macro*}
+    We also redefine \cs{l at section} to make the TOC blend in a bit.
+    \begin{macro*}{\l at section}
+\begin{MacroCode}{class}
+    \DeclareDocumentCommand\l at section{mm}{
+        \group_begin:
+            \skip_vertical:n{.75ex}
+            \__skrapport_title_style:
+            \__skrapport_toc_line:nnnnn{1}{0em}{1.3em}{##1}{
+                \__skrapport_title_style: ##2
+            }
+        \group_end:
+    }
+\end{MacroCode}
+    \end{macro*}
+    The \env{figure} environment is patched\ldots
+\begin{MacroCode}{class}
+    \cs_new:Npn\__skrapport_xdblfloat:nn##1##2{\@xdblfloat{##1}[##2]}
+    \cs_generate_variant:Nn\__skrapport_xdblfloat:nn{nx}
+    \RenewDocumentEnvironment{figure}{o}{
+        \begin{gridenv}
+            \vspace{\intextsep}
+            \begin{minipage}{\linewidth}
+                \cs_set:Npn\@captype{figure}
+                \centering
+    }{
+            \end{minipage}
+            \vspace{\intextsep}
+        \end{gridenv}
+    }
+    \RenewDocumentEnvironment{figure*}{o}{
+        \__skrapport_xdblfloat:nx{figure}
+            {\IfNoValueTF{##1}{tp}{##1}}
+        \dim_set_eq:NN\hsize\textwidth
+        \dim_set_eq:NN\linewidth\textwidth
+        \centering
+    }{
+        \end at dblfloat
+    }
+\end{MacroCode}
+    \ldots as is \env{table}.
+\begin{MacroCode}{class}
+    \RenewDocumentEnvironment{table}{o}{%
+        \begin{gridenv}
+            \vspace{\intextsep}
+            \begin{minipage}{\linewidth}
+                \cs_set:Npn\@captype{table}
+                \cs_set_eq:NN\__skrapport_old_caption:\caption
+                \RenewDocumentCommand{\caption}{om}{%
+                    \skip_set_eq:NN\l_tmpa_skip\abovecaptionskip
+                    \skip_set_eq:NN\abovecaptionskip\belowcaptionskip
+                    \skip_set_eq:NN\belowcaptionskip\l_tmpa_skip
+                    \vspace{\abovecaptionskip}
+                    \__skrapport_old_caption:[####1]{####2}
+                    \vspace{\belowcaptionskip}
+                }
+                \centering
+    }{
+            \end{minipage}
+            \vspace{\intextsep}
+        \end{gridenv}
+    }
+    \RenewDocumentEnvironment{table*}{o}{
+        \__skrapport_xdblfloat:nx{table}
+            {\IfNoValueTF{##1}{tp}{##1}}
+        \dim_set_eq:NN\hsize\textwidth
+        \dim_set_eq:NN\linewidth\textwidth
+        \centering
+    }{
+        \end at dblfloat
+    }
+\end{MacroCode}
+    \begin{environment}{onecol}
+    \changes{0.10}{Fixed, now not completely broken}
+    \changes{0.12b}{Reverted to \cs{newenvironment}, because \pkg{xparse} breaks the trickery}
+    Finally, we define an environment \env{onecol} that typesets
+    arbitrary material in a single column. This is a bit tricky to
+    do, and probably cargo-cult as well. We define the start of the
+    environment to immediately end itself (with the empty ending),
+    then end the \env{multiols} environment, redefine our end macro
+    to start \env{multicols} as well as redefining the start of
+    \env{onecol} to simply reset itself, then start the environment
+    again only to have it ended at once.
+
+    Basically, we trick \LaTeX\ into thinking that we have an empty
+    \env{onecol} environment at the end of the first \env{multicols},
+    then some content inside a fake \env{onecol}, then an empty
+    \env{onecol} at the start of the next \env{multicols}. Voilá, no
+    wierd group errors!
+\begin{MacroCode}{class}
+    \newenvironment{onecol}{
+        \end{onecol}
+        \end{multicols}
+        \group_begin:
+        \cs_set:Npn\endonecol{
+            \group_end:
+            \begin{multicols}{2}
+            \cs_set_eq:NN\__skrapport_old_onecol:\onecol
+            \cs_set:Npn\onecol{
+                \cs_set_eq:NN\onecol\__skrapport_old_onecol:
+            }
+            \begin{onecol}
+        }
+        \cs_set:Npn\onecol{}
+        \begin{onecol}
+    }{}
+\end{MacroCode}
+    \end{environment}
+\begin{MacroCode}{class}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_leqno:}
+    Instead of loading \file{leqno.clo}, we reimplement the (tiny) file
+    as LaTeX3 code and include it directly. It's not terribly advanced.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_leqno:{
+    \RenewDocumentCommand\@eqnnum{}{
+        \hbox_to_wd:nn{.01pt}{}
+        \hbox_overlap_right:n{
+            \normalfont\normalcolor
+            \skip_horizontal:n{-\displaywidth}
+            (\theequation)
+        }
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_fleqn:}
+    The \file{fleqn.clo} functionality is more complex, so we include
+    the file instead of reimplementing.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_fleqn:{
+    \file_input:n{fleqn.clo}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_titles:n}[1]
+        {Title style (\texttt{rm}, \texttt{it},
+                      \texttt{bf} or \texttt{sf})}
+    The title styles are implemented by creating a new macro
+    \cs{__skrapport_title_style:} which will later be used by
+    \cs{section} and friends.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_titles:n#1{
+    \str_case:nnF{#1}{
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_title_style:}
+        \changes{0.11a}{Removed incorrect \cs{bfseries}, replaced
+                        \cs{relax} with \cs{rmfamily}}
+        \changes{0.12d}{Added \texttt{it} option}
+\begin{MacroCode}{class}
+        {rm}{\cs_new_protected:Nn\__skrapport_title_style:{\rmfamily}}
+        {it}{\cs_new_protected:Nn\__skrapport_title_style:{\itshape}}
+        {bf}{\cs_new_protected:Nn\__skrapport_title_style:{\bfseries}}
+        {sf}{\cs_new_protected:Nn\__skrapport_title_style:{\sffamily}}
+\end{MacroCode}
+    \end{macro*}
+    The fall-back for incorrect parameters is an informational message
+    along with setting up for \cs{rmfamily} titles.
+\begin{MacroCode}{class}
+    }{
+        \msg_info:nnnn{skrapport}{invalid-titles}{#1}{rm}
+        \__skrapport_setup_titles:n{rm}
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_lang:n}[1]
+        {Language (\texttt{sv}, \texttt{en} or \texttt{de})}
+    \changes{0.12d}{Use \pkg{babel} mechanisms for language-dependent
+        strings, so they work correctly in \env{otherlanguage}}
+    Thus far only two language options are implemented, each of them
+    setting the other as the \enquote{other} language. We check if
+    \pkg{polyglossia} has been loaded (this is done by
+    \cs{__skrapport_setup_xelatex:}): if it has, we use the
+    \pkg{polyglossia} interface for setting languages, otherwise we
+    load the \pkg{babel} package with appropriate options.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_lang:n#1{
+    \str_case:nnF{#1}{
+        {sv}{
+            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
+                \setmainlanguage{swedish}
+                \setotherlanguage[variant=british]{english}
+            }{
+                \RequirePackage[british,swedish]{babel}
+            }
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_RFC_language:}
+\begin{MacroCode}{class}
+            \cs_gset:Nn\__skrapport_RFC_language:{swe}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+            \PassOptionsToPackage{iso,swedish}{isodate}
+        }
+        {en}{
+            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
+                \setmainlanguage[variant=british]{english}
+                \setotherlanguage{swedish}
+            }{
+                \RequirePackage[swedish,british]{babel}
+            }
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_RFC_language:}
+\begin{MacroCode}{class}
+            \cs_gset:Nn\__skrapport_RFC_language:{eng}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+            \PassOptionsToPackage{iso,british}{isodate}
+        }
+        {de}{
+            \bool_if:NTF\g__skrapport_has_polyglossia_bool{
+                \setmainlanguage{ngerman}
+                \setotherlanguage[variant=british]{english}
+            }{
+                \RequirePackage[british,ngerman]{babel}
+            }
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_RFC_language:}
+\begin{MacroCode}{class}
+            \cs_gset:Nn\__skrapport_RFC_language:{ger}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+            \PassOptionsToPackage{iso,ngerman}{isodate}
+        }
+    }{
+\end{MacroCode}
+    Fallback prints an informational message and leaves both \pkg{babel}
+    and \pkg{polyglossia} unloaded.
+\begin{MacroCode}{class}
+        \msg_info:nnn{skrapport}{invalid-lang}{#1}
+    }
+\end{MacroCode}
+    After loading \pkg{babel} or \pkg{polyglossia}, we provide
+    translation strings. This is done using the \cs*{addto} and
+    \cs*{captions<lang>}, which is compatible with both packages.
+    \begin{macro*}{\captionsswedish}
+    \changes{0.12e}{Don't redefine standard language strings}
+    \begin{macro*}{\dateswedish}
+\begin{MacroCode}{class}
+    \addto\captionsswedish{
+        \cs_gset:Nn\__skrapport_and_word:{och}
+        \cs_gset:Nn\__skrapport_Email_word:{E-post}
+        \cs_gset:Nn\__skrapport_Comment_word:{Kommentar}
+        \cs_gset:Nn\__skrapport_eg_word:{t.ex.}
+        \cs_gset:Nn\__skrapport_ie_word:{dvs.}
+        \cs_gset:Nn\__skrapport_etc_word:{\emph{etc.}}
+        \cs_gset:Nn\__skrapport_cf_word:{jfr.}
+        \cs_gset:Nn\__skrapport_viz_word:{dvs.}
+    }
+    \cs_gset:Npn\dateswedish{
+        \cs_gset:Npn\today
+            {\int_use:N\year--\int_use:N\month--\int_use:N\day}
+    }
+\end{MacroCode}
+    \end{macro*}
+    \end{macro*}
+    \begin{macro*}{\captionsbritish}
+    \changes{0.12e}{Don't redefine standard language strings}
+    \begin{macro*}{\datebritish}
+\begin{MacroCode}{class}
+    \addto\captionsbritish{
+        \cs_gset:Nn\__skrapport_and_word:{and}
+        \cs_gset:Nn\__skrapport_Email_word:{Email}
+        \cs_gset:Nn\__skrapport_Comment_word:{Comment}
+        \cs_gset:Nn\__skrapport_eg_word:{\emph{e.g.}}
+        \cs_gset:Nn\__skrapport_ie_word:{\emph{i.e.}}
+        \cs_gset:Nn\__skrapport_etc_word:{\emph{etc.}}
+        \cs_gset:Nn\__skrapport_cf_word:{\emph{cf.}}
+        \cs_gset:Nn\__skrapport_viz_word:{\emph{viz.}}
+    }
+    \cs_gset:Npn\datebritish{
+        \cs_gset:Npn\today
+            {\int_use:N\year--\int_use:N\month--\int_use:N\day}
+    }
+\end{MacroCode}
+    \end{macro*}
+    \end{macro*}
+    \begin{macro*}{\captionsngerman}
+    \changes{0.12e}{Don't redefine standard language strings}
+    \begin{macro*}{\datengerman}
+\begin{MacroCode}{class}
+    \addto\captionsngerman{
+        \cs_gset:Nn\__skrapport_and_word:{und}
+        \cs_gset:Nn\__skrapport_Email_word:{E-Mail}
+        \cs_gset:Nn\__skrapport_Comment_word:{Kommentar}
+        \cs_gset:Nn\__skrapport_eg_word:{z.~B.}
+        \cs_gset:Nn\__skrapport_ie_word:{d.~h.}
+        \cs_gset:Nn\__skrapport_etc_word:{usw.}
+        \cs_gset:Nn\__skrapport_cf_word:{vgl.}
+        \cs_gset:Nn\__skrapport_viz_word:{\emph{viz.}}
+    }
+    \cs_gset:Npn\datengerman{
+        \cs_gset:Npn\today
+            {\int_use:N\day.\,\int_use:N\month.\,\int_use:N\year}
+    }
+\end{MacroCode}
+    \end{macro*}
+    \end{macro*}
+\begin{MacroCode}{class}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_font:n}[1]
+        {Font (\texttt{none}, \texttt{kpfonts}, \texttt{lmodern},
+         \texttt{palatino}, \texttt{minion} or \texttt{skdoc})}
+    \changes{0.12a}{Drop the post-\pkg{amsmath} hook entirely.
+                    Load \pkg{fontspec} in \texttt{word} and
+                    \texttt{none}}
+    We set up the somewhat involved font stack.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_font:n#1{
+    \PassOptionsToPackage{intlimits}{amsmath}
+    \PassOptionsToPackage{full}{textcomp}
+    \str_case:nnF{#1}{
+\end{MacroCode}
+    The \texttt{none} font stack is special. If we're using
+    \hologo{XeTeX} or \hologo{LuaTeX}, we load the \pkg{fontspec}
+    package. Otherwise, we do nothing.
+\begin{MacroCode}{class}
+        {none}{
+            \bool_if:nT{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
+                \RequirePackage[quiet]{fontspec}
+            }
+        }
+\end{MacroCode}
+    The \texttt{kpfonts} font stack simply loads \pkg{kpfonts}...
+\begin{MacroCode}{class}
+        {kpfonts}{
+            \RequirePackage[easyscsl,intlimits,sumlimits]{kpfonts}
+        }
+\end{MacroCode}
+    ...and the \texttt{lmodern} font stack loads \pkg{lmodern}.
+\begin{MacroCode}{class}
+        {lmodern}{
+            \RequirePackage{lmodern}
+        }
+\end{MacroCode}
+    The \texttt{palatino} font stack loads \pkg{tgpagella} if available,
+    but falls back to \pkg{mathpazo} otherwise.
+\begin{MacroCode}{class}
+        {palatino}{
+            \file_if_exist:nTF{tgpagella.sty}{
+                \RequirePackage{arev}
+                \RequirePackage{pxfonts}
+                \RequirePackage{tgpagella}
+            }{
+                \RequirePackage[osf]{mathpazo}
+            }
+        }
+\end{MacroCode}
+    Minion Pro, provided by the \texttt{minion} font stack, loads both
+    \pkg{minionpro} (the font) and \pkg{MnSymbol} (appropriate math
+    symbols).
+\begin{MacroCode}{class}
+        {minion}{
+            \AtEndOfClass{
+                \cs_set_eq:NN\__skrapport_old_vec:\vec
+                \cs_undefine:N\vec
+                \RequirePackage{MyriadPro}
+                \RequirePackage{MinionPro}
+                \RequirePackage{MnSymbol}
+                \cs_set_eq:NN\vec\__skrapport_old_vec:
+            }
+        }
+\end{MacroCode}
+    Finally, the \texttt{skdoc} font stack loads \pkg{PTSerif} and
+    \pkg{opensans}, inspired by the style of the \pkg{skdoc} class.
+\begin{MacroCode}{class}
+        {skdoc}{
+            \RequirePackage{PTSerif}
+            \RequirePackage[defaultsans,osfigures,scale=0.95]{opensans}
+        }
+\end{MacroCode}
+    The \texttt{word} font stack mimics recent versions of Microsoft
+    Word, using Cambria, Consolas and Calibri. This requires a modern
+    engine that supports \pkg{fontspec}.
+\begin{MacroCode}{class}
+        {word}{
+            \bool_if:nF{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
+                \msg_fatal:nnn{skrapport}{font-requires-xetex}{word}
+            }
+            \RequirePackage[quiet]{fontspec}
+            \setmainfont[Ligatures=TeX]{Cambria}
+            \setsansfont[Ligatures=TeX]{Calibri}
+            \setmonofont[Scale=0.95]{Consolas}
+            \apptocmd{\__skrapport_after_ams_hook:}{
+                \setmathfont{Cambria Math}
+            }{}{}
+        }
+    }{
+\end{MacroCode}
+    As a fallback, we print a waning and load no font packages.
+\begin{MacroCode}{class}
+        \msg_warning:nnn{skrapport}{invalid-font}{#1}
+    }
+    \str_if_eq:nnF{#1}{none}{
+\end{MacroCode}
+    All font stacks except \texttt{none} and \texttt{kpfonts} require
+    additional packages. Or, rather, \texttt{none} can't load these
+    packages by definition, and \texttt{kpfonts} already loads them
+    internally \footcite[p.~1]{kpfonts}. They are always useful.
+
+    We also load \pkg{sourcecodepro} as our monospace font.
+    But we don't load it when using the \texttt{none} font stack.
+\begin{MacroCode}{class}
+        \str_if_eq:nnF{#1}{kpfonts}{
+            \str_if_eq:nnF{#1}{word}{
+                \RequirePackage{sourcecodepro}
+            }
+            \AtEndOfClass{
+                \RequirePackage{amsmath}
+\end{MacroCode}
+    The \pkg{mnsymbol} package is incompatible with \pkg{amssymb}.
+\begin{MacroCode}{class}
+              \str_if_eq:nnF{#1}{minion}{
+                    \RequirePackage{amssymb}
+                }
+                \RequirePackage{textcomp}
+            }
+        }
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_parskip:}
+    \changes{0.12a}{Fixed bug where font size reset the \cs{parindent}}
+    This part mixes \LaTeXe\ and \LaTeX3, which may not be a good thing.
+    On the other hand, it seems hard to avoid. Most of the code is
+    half-lifted from \pkg{parskip} and converted to \LaTeX3.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_parskip:{
+    \AtEndOfClass{
+        \skip_gset:Nn\parskip{0.5\baselineskip~plus~2pt}
+        \dim_gzero:N\parindent
+        \skip_gset:Nn\parfillskip{30pt~plus~1fil}
+\end{MacroCode}
+    \begin{macro*}{\@listI}
+    \begin{macro*}{\@listi}
+\begin{MacroCode}{class}
+        \cs_gset:Npn\@listI{
+            \dim_set_eq:NN\leftmargin\leftmargini
+            \dim_set_eq:NN\parsep\parskip
+            \dim_zero:N\topsep
+            \dim_zero:N\itemsep
+        }
+        \cs_gset_eq:NN\@listi\@listI
+\end{MacroCode}
+    \end{macro*}
+    \end{macro*}
+\begin{MacroCode}{class}
+        \dim_gset_eq:NN\leftmargin\leftmargini
+        \dim_gset_eq:NN\parsep\parskip
+        \dim_gzero:N\topsep
+        \dim_gzero:N\itemsep
+\end{MacroCode}
+    \begin{macro*}{\@listii}
+\begin{MacroCode}{class}
+        \cs_gset:Npn\@listii{
+            \dim_set_eq:NN\leftmargin\leftmarginii
+            \dim_set_eq:NN\labelwidth\leftmarginii
+            \dim_set_eq:NN\parsep\parskip
+            \dim_sub:Nn\labelwidth{-\labelsep}
+            \dim_zero:N\topsep
+            \dim_zero:N\itemsep
+        }
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\@listiii}
+\begin{MacroCode}{class}
+        \cs_gset:Npn\@listiii{
+            \dim_set_eq:NN\leftmargin\leftmarginiii
+            \dim_set_eq:NN\labelwidth\leftmarginiii
+            \dim_set_eq:NN\parsep\parskip
+            \dim_sub:Nn\labelwidth{-\labelsep}
+            \dim_zero:N\topsep
+            \dim_zero:N\itemsep
+        }
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+        \dim_gzero:N\partopsep
+\end{MacroCode}
+    \begin{macro*}{\@starttoc}[1]
+        {Table of contents extension}
+    \changes{0.12h}{Replaced use of deprecated \cs{c_job_name_tl}
+                    with \cs{c_sys_jobname_str}}
+\begin{MacroCode}{class}
+        \RenewDocumentCommand\@starttoc{m}{
+            \group_begin:
+            \dim_zero:N\parskip
+            \file_if_exist:nT{\c_sys_jobname_str.##1}{
+                \file_input:n{\c_sys_jobname_str.##1}
+            }
+            \if at filesw
+                \iow_new:c{tf@##1}
+                \iow_open:cn{tf@##1}{\c_sys_jobname_str.##1}
+            \fi
+            \@nobreakfalse
+            \group_end:
+        }
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_math:}
+    This is the simplest option, only loading \pkg{skmath} if it exists.
+    Also the post-skmath hook is run.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_math:{
+    \file_if_exist:nT{skmath.sty}{\RequirePackage{skmath}}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_draft:}
+    Setting up the \opt{draft} mode is also fairly easy, as we only need
+    wider (wider than \SI{0}{\point}, that is) \cs{overfullrule}s.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_draft:{
+    \bool_if:NTF\g__skrapport_draft_bool{
+        \dim_gset:Nn\overfullrule{5pt}
+    }{
+        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_draft:}
+        \prg_do_nothing:
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_color:}
+    Setting up colors is also fairly easy, as we only have to load the
+    \pkg{xcolor} package. All the other color-related code is in other
+    places, utilizing the \cs{g__skdoc_color_bool} boolean.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_color:{
+    \bool_if:NTF\g__skrapport_color_bool{
+        \RequirePackage{xcolor}
+        \PassOptionsToPackage{
+            labelfont+={bf,color=skrapport at captioncolor}
+        }{caption}
+    }{
+        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_color:}
+        \prg_do_nothing:
+    }
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_setup_color:n}
+    We may also set up a specific color theme using options. This is
+    easily done by first calling \cs{__skrapport_setup_color:}, then
+    calling \cs{colortheme} at \cs{BeginDocument}.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_setup_color:n#1{
+    \__skrapport_setup_color:
+    \bool_if:NTF\g__skrapport_color_bool{
+        \AtBeginDocument{\colortheme{#1}}
+    }{
+        \msg_log:nnn{skrapport}{noop-call}{\__skrapport_setup_color:n}
+        \prg_do_nothing:
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_xelatex:}
+    \changes{0.12a}{Don't load \pkg{polyglossia} for \hologo{LuaTeX}.
+                    Don't load \pkg{fontspec} for any engine}
+    \changes{0.12d}{Force \texttt{quiet} option for \pkg{fontspec}}
+    This macro contains special setup code for the \hologo{XeTeX} and
+    \hologo{LuaTeX} engines, such as providing
+    missing commands (which have been replaced by equivalent Unicode
+    characters, apparently) and loading \pkg{polyglossia}.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_xelatex:{
+    \AtEndOfClass{
+        \cs_undefine:N\dblcolon
+        \cs_undefine:N\coloneqq
+        \cs_undefine:N\Coloneqq
+        \cs_undefine:N\eqqcolon
+        \RequirePackage{unicode-math}
+        \unimathsetup {
+            math-style     = ISO,
+            bold-style     = ISO,
+            sans-style     = italic,
+            nabla          = upright,
+            partial        = italic,
+            vargreek-shape = unicode
+        }
+    }
+\end{MacroCode}
+    \begin{macro}{\nobreakspace}
+\begin{MacroCode}{class}
+    \DeclareDocumentCommand\nobreakspace{}{\leavevmode\nobreak\space}
+\end{MacroCode}
+    \end{macro}
+    Since apparently \hologo{LuaLaTeX} isn't supported by
+    \pkg{polyglossia}, we fall back to \pkg{babel} in that engine.
+    Thus, only load \pkg{polyglossia} for \hologo{XeLaTeX}.
+\begin{MacroCode}{class}
+    \sys_if_engine_xetex:TF{
+        \PassOptionsToPackage{quiet}{fontspec}
+        \RequirePackage{polyglossia}
+        \bool_gset_true:N\g__skrapport_has_polyglossia_bool
+    }{
+        \bool_gset_false:N\g__skrapport_has_polyglossia_bool
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_pdftex:}
+    \changes{0.12d}{Load \pkg{isomath}}
+    This macro contains special setup code for the \hologo{pdfTeX}
+    engine. Currently, it only sets the font encoding to T1.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_pdftex:{
+    \RequirePackage[T1]{fontenc}
+    \AtEndOfClass{
+        \RequirePackage{isomath}
+    }
+    \bool_gset_false:N\g__skrapport_has_polyglossia_bool
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_setup_engine_specific:}
+    This macro detects the current engine and calls the appropriate
+    engine setup macro.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_engine_specific:{
+    \bool_if:nTF{\sys_if_engine_luatex_p: || \sys_if_engine_xetex_p:}{
+        \__skrapport_setup_xelatex:
+    }{
+        \__skrapport_setup_pdftex:
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{Variants with expandable arguments}
+    Some option setup macros accept arguments, but those arguments are
+    not expanded. Here, we provide variants which expand the parameters
+    properly using the excellent \pkg{l3prg} functionality.
+    \begin{macro}{\__skrapport_setup_ptsize:x}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_setup_ptsize:n{ x }
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_setup_titles:x}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_setup_titles:n{ x }
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_setup_lang:x}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_setup_lang:n{ x }
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_setup_font:x}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_setup_font:n{ x }
+\end{MacroCode}
+    \end{macro}
+
+    \subsubsection{Key-value system}
+    Let's define some \pkg{l3keys} corresponding to the options. Note
+    that most of them just refer to a macro in their \texttt{.code:n}
+    block --- these macros were defined earlier.
+\begin{MacroCode}{class}
+\keys_define:nn{skrapport}{
+\end{MacroCode}
+    \begin{option}{paper}{a4paper, a5paper, a4, a5}
+    \changes{0.12}{Values \texttt{a4paper} and \texttt{a5paper} are
+                  now deprecated}
+    \begin{option}{a4paper}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{a5paper}
+    \changes{0.12}{Option is now deprecated}
+    Declare the paper size options. Note that having to handle the
+    deprecated \texttt{a4paper} and \texttt{a5paper} values of the
+    \opt{paper} option makes the code less readable. In a few
+    versions, when these options are removed, the code should probably
+    be refactored to look something like the \opt{ptsize} option below.
+\begin{MacroCode}{class}
+    paper .choice:,
+    paper / a4 .code:n =
+        {\__skrapport_setup_paper:n{a4}},
+    paper / a5 .code:n =
+        {\__skrapport_setup_paper:n{a5}},
+    paper / a4paper .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {paper=a4paper}{paper=a4}
+         \keys_set:nn{skrapport}{paper=a4}},
+    paper / a5paper .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {paper=a5paper}{paper=a5}
+         \keys_set:nn{skrapport}{paper=a4}},
+    paper .value_required:n = true,
+    a4paper .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {a4paper}{paper=a4}
+         \keys_set:nn{skrapport}{paper=a4}},
+    a5paper .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {a5paper}{paper=a5}
+         \keys_set:nn{skrapport}{paper=a5}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+    \end{option}
+
+    \begin{option}{ptsize}{10pt, 11pt, 12pt}
+    \begin{option}{10pt}
+    \begin{option}{11pt}
+    \begin{option}{12pt}
+    Declare point size options. Note that we don't deprecate the
+    non-\opt{ptsize} aliases as they are much easier to type.
+\begin{MacroCode}{class}
+    ptsize .choices:nn =
+        { 10pt, 11pt, 12pt }
+        {\__skrapport_setup_ptsize:x{\tl_use:N\l_keys_choice_tl}},
+    ptsize .value_required:n = true,
+    10pt .meta:n = {ptsize=10pt},
+    11pt .meta:n = {ptsize=11pt},
+    12pt .meta:n = {ptsize=12pt},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+
+    \begin{option}{twocolumn}
+    \changes{0.08}{Added option \opt{twocolumn}}
+    \changes{0.12a}{Use \cs{AtEndOfClass} instead of \cs{AtEndClass}}
+    Declare column options. The code here should be run through
+    \cs{AtEndOfClass} so that the setup code can patch everythin
+    properly.
+    \begin{option}{onecolumn}
+    \changes{0.12}{Option is now deprecated}
+    The \opt{onecolumn} option has no effect and is deprecated.
+\begin{MacroCode}{class}
+    twocolumn .code:n =
+        {\AtEndOfClass{\__skrapport_setup_twocolumn:}},
+    onecolumn .code:n =
+        {\msg_warning:nnn{skrapport}{option-no-effect}{onecolumn}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+
+    \begin{option}{draft}{true, false}
+    \begin{option}{final}
+    Declare \opt{draft} and \opt{final} options. Note that even if the
+    \opt{final} option does absolutely nothing, users may expect it to
+    be there and as such it is not deprecated.
+\begin{MacroCode}{class}
+    draft .choice:,
+    draft / true .code:n =
+        {\bool_gset_true:N\g__skrapport_draft_bool
+         \__skrapport_setup_draft:},
+    draft / false .code:n =
+        {\bool_gset_false:N\g__skrapport_draft_bool},
+    draft .default:n = true,
+    final .code:n = {\prg_do_nothing:},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+
+    Declare the \opt{fleqn} and \opt{leqno} options, mainly for
+    compatibility with the \pkg{article} class.
+    \begin{option}{leqno}
+\begin{MacroCode}{class}
+    leqno .code:n =
+        {\__skrapport_setup_leqno:},
+\end{MacroCode}
+    \end{option}
+    \begin{option}{fleqn}
+\begin{MacroCode}{class}
+    fleqn .code:n =
+        {\__skrapport_setup_fleqn:},
+\end{MacroCode}
+    \end{option}
+
+    \begin{option}{titles}{rm, it, bf, sf}
+    Declare options for section titles. The old \opt*{??titles} aliases
+    are deprecated and will be removed in a future version.
+    \begin{option}{rmtitles}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{bftitles}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{sftitles}
+    \changes{0.09}{Added \opt{sftitles} option}
+    \changes{0.12}{Option is now deprecated}
+\begin{MacroCode}{class}
+    titles .choices:nn =
+        { rm, it, bf, sf }
+        {\__skrapport_setup_titles:x{\tl_use:N\l_keys_choice_tl}},
+    titles .value_required:n = true,
+    rmtitles .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {rmtitles}{titles=rm}
+         \keys_set:nn{skrapport}{titles=rm}},
+    bftitles .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {bftitles}{titles=bf}
+         \keys_set:nn{skrapport}{titles=bf}},
+    sftitles .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {sftitles}{titles=sf}
+         \keys_set:nn{skrapport}{titles=sf}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+
+    \begin{option}{hanging-titles}{true, false}
+    \changes{0.12d}{Added option to enable \enquote{hanging} titles}
+\begin{MacroCode}{class}
+    hanging-titles .bool_gset:N = \g__skrapport_hanging_titles_bool,
+    hanging-titles .default:n = true,
+    hanging-titles .initial:n = false,
+\end{MacroCode}
+    \end{option}
+
+    \begin{option}{lang}{sv, en, de}
+    \changes{0.12c}{Added option value \texttt{de}}
+    \changes{0.12}{Incompatible change: values \texttt{swe} and
+                   \texttt{eng} are now \texttt{sv} and \texttt{en},
+                   respectively}
+    \begin{option}{swe}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{eng}
+    \changes{0.12}{Option is now deprecated}
+    Declare options for swedish/english \pkg{babel} or
+    \pkg{polyglossia} support. Again, the old \opt{swe} and \opt{eng}
+    aliases are deprecated and will be removed.
+\begin{MacroCode}{class}
+    lang .choices:nn =
+        { sv, en, de }
+        {\__skrapport_setup_lang:x{\tl_use:N\l_keys_choice_tl}},
+    lang .value_required:n = true,
+    swe .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {swe}{lang=sv}
+         \keys_set:nn{skrapport}{lang=sv}},
+    eng .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {eng}{lang=en}
+         \keys_set:nn{skrapport}{lang=en}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+    \end{option}
+
+    \begin{option}{font}{none, kpfonts, lmodern, palatino, minion, skdoc}
+    Declare font options. Again, aliases are deprecated.
+    \begin{option}{kpfonts}
+    \changes{0.07}{Added option \opt{kpfonts}, set as default
+                    option for fonts}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{lmodern}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{palatino}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{minion}
+    \changes{0.11}{Added option \opt{minion}}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{skdoc}
+    \changes{0.11a}{Added option \opt{skdoc}}
+    \changes{0.12}{Option is now deprecated}
+    \begin{option}{nofont}
+    \changes{0.12}{Option is now deprecated}
+\begin{MacroCode}{class}
+    font .choices:nn =
+        { none, kpfonts, lmodern, palatino, minion, skdoc, word }
+        {\__skrapport_setup_font:x{\tl_use:N\l_keys_choice_tl}},
+    font .value_required:n = true,
+    nofont .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {nofont}{font=none}
+         \keys_set:nn{skrapport}{font=none}},
+    kpfonts .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {kpfonts}{font=kpfonts}
+         \keys_set:nn{skrapport}{font=kpfonts}},
+    lmodern .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {lmodern}{font=lmodern}
+         \keys_set:nn{skrapport}{font=lmodern}},
+    palatino .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {palatino}{font=palatino}
+         \keys_set:nn{skrapport}{font=palatino}},
+    minion .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {minion}{font=minion}
+         \keys_set:nn{skrapport}{font=minion}},
+    skdoc .code:n =
+        {\msg_warning:nnnn{skrapport}{option-deprecated}
+            {skdoc}{font=skdoc}
+         \keys_set:nn{skrapport}{font=skdoc}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+    \end{option}
+
+    \begin{option}{indent}{true, false}
+    \changes{0.02}{Added option of indented paragraphs}
+    \begin{option}{noindent}
+    \changes{0.12}{Option is now deprecated}
+    Declare indentation options. Since the \opt{noindent} option
+    technically has no effect and is an alias of \opt{indent=false},
+    it has been deprecated.
+\begin{MacroCode}{class}
+    indent .choice:,
+    indent / true .code:n = {\prg_do_nothing:},
+    indent / false .code:n = {\__skrapport_setup_parskip:},
+    indent .default:n = true,
+    noindent .code:n =
+        {\msg_warning:nnn{skrapport}{option-no-effect}{noindent}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+
+    \begin{option}{color}{true, false}
+    \changes{0.09}{Added \opt{color} option}
+    \changes{0.12}{Converted to a key-value option which will load
+                   the specified color theme.}
+    \begin{option}{nocolor}
+    Declare color options. Note that we explicitly set the boolean
+    \cs{g__skrapport_color_bool} as well as setting up the colors
+    through \cs{__skrapport_setup_color:n}, so that we can keep track
+    of the color usage even after the options have been set up.
+\begin{MacroCode}{class}
+    color .code:n =
+        {\str_if_eq:nnTF{#1}{false}
+            {\bool_gset_false:N\g__skrapport_color_bool}
+            {\bool_gset_true:N\g__skrapport_color_bool
+             \str_if_eq:nnTF{#1}{true}
+                {\__skrapport_setup_color:n{default}}
+                {\__skrapport_setup_color:n{#1}}}},
+    color .default:n = true,
+    nocolor .meta:n = {color=false},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+
+    \begin{option}{nomath}{true, false}
+    \begin{option}{math}
+    \changes{0.12}{Option is now deprecated}
+    Declare math options. As with the \opt{noindent} option, \opt{math}
+    has been deprecated since it is an alias and has no effect.
+\begin{MacroCode}{class}
+    nomath .choice:,
+    nomath / false .code:n = {\__skrapport_setup_math:},
+    nomath / true .code:n = {\prg_do_nothing:},
+    nomath .default:n = true,
+    math .code:n =
+        {\msg_warning:nnn{skrapport}{option-no-effect}{math}},
+\end{MacroCode}
+    \end{option}
+    \end{option}
+
+    That's it, we're done setting up the \pkg{l3keys} for the options.
+\begin{MacroCode}{class}
+}
+\end{MacroCode}
+
+    We will now define a \enquote{defaults} key-value system because
+    \texttt{.initial:n} doesn't work they way we want it to. This
+    key-value system will be used to set flags with which we will
+    determine wether to set certain default options.
+    \begin{macro}{\__skrapport_setup_defaults:}
+    \changes{0.12a}{\texttt{word} font stack is now the default font stack when using \hologo{XeLaTeX}}
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_setup_defaults:{
+    \bool_new:N\l__skrapport_has_option_indent_bool
+    \bool_new:N\l__skrapport_has_option_nomath_bool
+    \bool_new:N\l__skrapport_has_option_color_bool
+    \bool_new:N\l__skrapport_has_option_font_bool
+    \bool_new:N\l__skrapport_has_option_lang_bool
+    \bool_new:N\l__skrapport_has_option_titles_bool
+    \bool_new:N\l__skrapport_has_option_draft_bool
+    \bool_new:N\l__skrapport_has_option_ptsize_bool
+    \bool_new:N\l__skrapport_has_option_paper_bool
+    \keys_define:nn{skrapport-default}{
+        indent .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_indent_bool},
+        nomath .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_nomath_bool},
+        color .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_color_bool},
+        font .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_font_bool},
+        lang .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_lang_bool},
+        titles .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_titles_bool},
+        draft .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_draft_bool},
+        ptsize .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_ptsize_bool},
+        paper .code:n =
+            {\bool_set_true:N\l__skrapport_has_option_paper_bool},
+\end{MacroCode}
+    The following keys correspond to deprecated options. They should
+    be removed when the corresponding options are removed.
+\begin{MacroCode}{class}
+        nofont .code:n =   {\keys_set:nn{skrapport-default}{font}},
+        kpfonts .code:n =  {\keys_set:nn{skrapport-default}{font}},
+        lmodern .code:n =  {\keys_set:nn{skrapport-default}{font}},
+        palatino .code:n = {\keys_set:nn{skrapport-default}{font}},
+        minion .code:n =   {\keys_set:nn{skrapport-default}{font}},
+        skdoc .code:n =    {\keys_set:nn{skrapport-default}{font}},
+        swe .code:n =      {\keys_set:nn{skrapport-default}{lang}},
+        eng .code:n =      {\keys_set:nn{skrapport-default}{lang}},
+        rmtitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
+        bftitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
+        sftitles .code:n = {\keys_set:nn{skrapport-default}{titles}},
+        10pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
+        11pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
+        12pt .code:n =     {\keys_set:nn{skrapport-default}{ptsize}},
+        a4paper .code:n =  {\keys_set:nn{skrapport-default}{paper}},
+        a5paper .code:n =  {\keys_set:nn{skrapport-default}{paper}},
+\end{MacroCode}
+\begin{MacroCode}{class}
+    }
+    \ProcessKeysOptions{skrapport-default}
+    \bool_if:NF\l__skrapport_has_option_indent_bool{
+        \keys_set:nn{skrapport}{indent=false}
+    }
+    \bool_if:NF\l__skrapport_has_option_nomath_bool{
+        \keys_set:nn{skrapport}{nomath=false}
+    }
+    \bool_if:NF\l__skrapport_has_option_color_bool{
+        \keys_set:nn{skrapport}{color=true}
+    }
+    \bool_if:NF\l__skrapport_has_option_font_bool{
+        \sys_if_engine_xetex:TF{
+            \keys_set:nn{skrapport}{font=word}
+        }{
+            \keys_set:nn{skrapport}{font=kpfonts}
+        }
+    }
+    \bool_if:NF\l__skrapport_has_option_lang_bool{
+        \keys_set:nn{skrapport}{lang=sv}
+    }
+    \bool_if:NF\l__skrapport_has_option_titles_bool{
+        \keys_set:nn{skrapport}{titles=bf}
+    }
+    \bool_if:NF\l__skrapport_has_option_draft_bool{
+        \keys_set:nn{skrapport}{draft=false}
+    }
+    \bool_if:NF\l__skrapport_has_option_ptsize_bool{
+        \keys_set:nn{skrapport}{ptsize=11pt}
+    }
+    \bool_if:NF\l__skrapport_has_option_paper_bool{
+        \keys_set:nn{skrapport}{paper=a4}
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    Finally, we process the class options using the keys defined earlier.
+    We also run the engine-specific code implemented above, and the fake
+    key system used to define defaults.
+
+    Note that we save and restore \cs{@classoptionslist} around the
+    engine-specific setup. This is because we might load \pkg{xkeyval},
+    which apparently removes all key-value options from the list when
+    loaded (and this is really bad for us).
+\begin{MacroCode}{class}
+\cs_set_eq:NN\__skrapport_tmpa_cs:\@classoptionslist
+\RequirePackage{xkeyval}
+\cs_set_eq:NN\__skrapport_tmpb_cs:\@classoptionslist
+\cs_set_eq:NN\@classoptionslist\__skrapport_tmpa_cs:
+\__skrapport_setup_engine_specific:
+\ProcessKeysOptions{skrapport}
+\__skrapport_setup_defaults:
+\cs_set_eq:NN\@classoptionslist\__skrapport_tmpb_cs:
+\cs_undefine:N\__skrapport_tmpa_cs:
+\cs_undefine:N\__skrapport_tmpb_cs:
+\end{MacroCode}
+
+    \subsection{Required packages}
+    We also include some essential packages per default. The
+    \pkg{calc} package, for instance, is essential in later
+    definitions.
+\begin{MacroCode}{class}
+\RequirePackage{calc,isodate,multicol}
+\end{MacroCode}
+
+    At the end of the class definition we load a very
+    useful package that improves typesetting: \pkg{microtype}.
+    Also set \cs{frenchspacing}.
+\begin{MacroCode}{class}
+\AtEndOfClass{
+    \RequirePackage{microtype}
+    \frenchspacing
+}
+\end{MacroCode}
+
+    When the document starts, we set the URL style if the user has
+    loaded the \pkg{url} package.
+\begin{MacroCode}{class}
+\AtBeginDocument{
+    \cs_if_exist:NT\urlstyle{\urlstyle{same}}
+}
+\end{MacroCode}
+
+    \subsection{Utilities}
+    We define useful \LaTeX3 replacements of \LaTeXe\ stuff that
+    hasn't made its way into \pkg{interface3}. This includes
+    a \cs{settowidth} clone and possibly more stuff later.
+    \begin{macro}{\dim_set_to_wd:Nn}
+\begin{MacroCode}{class}
+\cs_new:Npn\dim_set_to_wd:Nn#1#2{
+    \hbox_set:Nn\l_tmpa_box{#2}
+    \dim_set:Nn#1{\box_wd:N\l_tmpa_box}
+    \box_clear:N\l_tmpa_box
+}
+\end{MacroCode}
+    \end{macro}
+
+    \subsection{Hidden things}
+    Set some default measurements (should probably be replaced with
+    simply loading \pkg{typearea}).
+\begin{MacroCode}{class}
+\dim_add:Nn\textwidth{0.5\oddsidemargin}
+\dim_add:Nn\textwidth{0.5\evensidemargin}
+\dim_add:Nn\oddsidemargin{-0.5\oddsidemargin}
+\dim_add:Nn\evensidemargin{-0.5\evensidemargin}
+\dim_gset:Nn\lineskip{1pt}
+\dim_gset:Nn\normallineskip{1pt}
+\end{MacroCode}
+    \begin{macro}{\baselinestretch}
+    Note that we can't use \cs{RenewDocumentCommand} as that yields an
+    infinite loop before or at \env{document}.
+\begin{MacroCode}{class}
+\cs_set:Npn\baselinestretch{}
+\end{MacroCode}
+    \end{macro}
+
+    \subsubsection{Penalties}
+\begin{MacroCode}{class}
+\int_gset:Nn\@lowpenalty  {51}
+\int_gset:Nn\@medpenalty {151}
+\int_gset:Nn\@highpenalty{301}
+\setcounter{topnumber}{2}
+\setcounter{bottomnumber}{1}
+\setcounter{totalnumber}{4}
+\setcounter{dbltopnumber}{2}
+\end{MacroCode}
+    \begin{macro}{\topfraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\topfraction{}{.75}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\bottomfraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\bottomfraction{}{.5}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\textfraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\textfraction{}{.25}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\floatpagefraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\floatpagefraction{}{.625}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\dbltopfraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\dbltopfraction{}{.75}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\dblfloatpagefraction}
+\begin{MacroCode}{class}
+\RenewDocumentCommand\dblfloatpagefraction{}{.625}
+\end{MacroCode}
+    \end{macro}
+
+    \subsection{User-level commands and environments}
+    \subsubsection{The front page}
+    \begin{macro}{\title}[1]
+        {Title of the document}
+    \begin{macro*}{\g__skrapport_title_tl}
+\begin{MacroCode}{class}
+\tl_new:N\g__skrapport_title_tl
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\title{m}{
+    \tl_gset:Nn\g__skrapport_title_tl{#1}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\date}[1]
+        {Date in ISO8601 format}
+    The \cs{date} macro sets the current date of the document. It only
+    accepts dates accepted by \pkg{isodate} (or the special value
+    \enquote{\texttt{today}}). Dates are always printed using the
+    current format as specified by the \pkg{isodate} package. The default
+    value of the date (if \cs{date} isn't used) is \cs{today}.
+    \begin{macro*}{\g__skrapport_title_tl}
+\begin{MacroCode}{class}
+\tl_new:N\g__skrapport_date_tl
+\tl_gset:Nn\g__skrapport_date_tl{\today}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\date{m}{
+    \str_if_eq:nnTF{#1}{today}{
+        \tl_gset:Nn\g__skrapport_date_tl{\today}
+    }{
+        \if_meaning:w \today #1
+            \tl_gset:Nn\g__skrapport_date_tl{\today}
+        \else:
+            \tl_gset:Nn\g__skrapport_date_tl{\printdate{#1}}
+        \fi:
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \begin{macro}{\author}[2]
+        {Optional email address}
+        {Author name}
+    \changes{0.10b}{Improved \cs{author} macro}
+    \changes{0.12}{Use comma-separated lists instead of token list}
+    The \cs{author} macro is redefined to accept an optional argument
+    and to be used multiple times.
+    \begin{macro*}{\__skrapport_email:n}[1]
+        {Email address}
+    \changes{0.12a}{Store \cs{textemdash} instead of \cs{NoValue}}
+    The \cs{skrapport at email} helper macro typesets an email address
+    using \pkg{hyperref} if that package is used. This is suboptimal,
+    the macro behaves differently with respect to special characters
+    depending on wether \pkg{hyperref} is loaded or not.
+\begin{MacroCode}{class}
+\cs_new_nopar:Npn\__skrapport_email:n#1{
+    \texttt{#1}
+}
+\AtBeginDocument{
+    \cs_if_exist:NT\href{
+        \cs_gset_nopar:Npn\__skrapport_email:n#1{
+            \href{mailto:#1}{\nolinkurl{#1}}
+        }
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\g__skrapport_author_clist}
+\begin{MacroCode}{class}
+\clist_new:N\g__skrapport_author_clist
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\g__skrapport_email_clist}
+\begin{MacroCode}{class}
+\clist_new:N\g__skrapport_email_clist
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\author{om}{%
+    \clist_gput_right:Nn\g__skrapport_author_clist{#2}
+    \clist_gput_right:Nn\g__skrapport_email_clist
+        {\IfNoValueTF{#1}{\textemdash}{#1}}
+}
+\end{MacroCode}
+    \begin{macro}{\__skrapport_author_list:}
+    \changes{0.12a}{Use \cs{clist_use:Nnnn}}
+    This macro lists all the authors in the comma-separated list
+    \cs{g__skrapport_author_clist}, separating them with a comma
+    or the word \enquote{and} (in the appropriate language).
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_author_list:{
+    \clist_use:Nnnn\g__skrapport_author_clist
+        {~\__skrapport_and_word:{}~}{,~}{~\__skrapport_and_word:{}~}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_email_list:}
+    \changes{0.12a}{Use \cs{clist_use:Nnnn}}
+    This macro lists the email addresses in the comma-separated list
+    \cs{g__skrapport_email_clist} by applying \cs{__skrapport_email:}
+    if appropriate (or printing an em-dash if no value exists) and
+    separating them with commas.
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_email_list:{
+    \int_compare:nT{\clist_count:N\g__skrapport_author_clist>\c_zero}{
+        \clist_use:Nnnn\g__skrapport_email_clist{\\}{\\}{\\}
+    }
+}
+\end{MacroCode}
+    \end{macro}
+    \end{macro}
+
+    \begin{macro}{\regarding}[1]
+        {Text snippet}
+    This macro defines a variable used by \cs{maketitle} to insert a
+    simple text into the header on the title page.
+    \begin{macro*}{\g__skrapport_regarding_tl}
+\begin{MacroCode}{class}
+\tl_new:N\g__skrapport_regarding_tl
+\DeclareDocumentCommand\regarding{m}{
+    \tl_gset:Nn\g__skrapport_regarding_tl{#1}
+}
+\end{MacroCode}
+    \end{macro*}
+    \end{macro}
+
+    \begin{macro}{\license}[1]
+        {Short license description}
+    \changes{0.07}{Added command \cs{license}}
+    This macro defines a variable used by \cs{maketitle} to insert a
+    license into the footer on the titlepage.
+    \begin{macro*}{\g__skrapport_copyright_unprinted_bool}
+\begin{MacroCode}{class}
+\bool_new:N\g__skrapport_copyright_unprinted_bool
+\AtEndDocument{
+    \bool_if:NT\g__skrapport_copyright_unprinted_bool
+        {\msg_warning:nn{skrapport}{license-not-printed}}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\g__skrapport_copyright_tl}
+\begin{MacroCode}{class}
+\tl_new:N\g__skrapport_copyright_tl
+\DeclareDocumentCommand\license{m}{
+    \tl_gset:Nn\g__skrapport_copyright_tl{#1}
+    \bool_gset_true:N\g__skrapport_copyright_unprinted_bool
+}
+\end{MacroCode}
+    \end{macro*}
+    \end{macro}
+
+    \begin{macro}{\maketitle}[1]
+        {Optional key-value list}
+    \changes{0.12a}{Added optional key-value argument and PDFinfo}
+    The standard \cs{maketitle} command as taken from the \pkg{article}
+    class but with some basic restyling.
+\begin{MacroCode}{class}
+\keys_define:nn{skrapport/maketitle}{
+    hide .clist_set:N = \l__skrapport_maketitle_hide_clist,
+    hide .value_required:n = true,
+    nopdfinfo .bool_set_inverse:N = \l__skrapport_maketitle_pdfinfo_bool,
+    nopdfinfo .default:n = true,
+    nopdfinfo .initial:n = false
+}
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_smallprint_style:}
+\begin{MacroCode}{class}
+\cs_new_protected:Nn\__skrapport_smallprint_style:{}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_abstract_style:}
+\begin{MacroCode}{class}
+\cs_new_protected:Nn\__skrapport_abstract_style:
+    {\__skrapport_title_style:}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\maketitle{o}{
+    \clist_clear:N\l__skrapport_maketitle_hide_clist
+    \IfNoValueF{#1}{\keys_set:nn{skrapport/maketitle}{#1}}
+    \bool_if:NT\l__skrapport_maketitle_pdfinfo_bool{
+        \exp_args:NNx\cs_if_exist_use:NT\hypersetup{{
+            pdfinfo={
+                Title={\tl_use:N\g__skrapport_title_tl},
+                Subject={\tl_use:N\g__skrapport_regarding_tl},
+                Author={
+                    \clist_use:Nnnn\g__skrapport_author_clist{,~}{,~}{,~}
+                },
+                Lang={\__skrapport_RFC_language:}
+            }
+        }}
+    }
+    \par
+    \group_begin:
+        \RenewDocumentCommand\thefootnote{}{
+            \fnsymbol{footnote}
+        }
+        \RenewDocumentCommand\@makefnmark{}{
+            \hbox_overlap_right:n{
+                \@textsuperscript{\normalfont\@thefnmark}
+            }
+        }
+        \RenewDocumentCommand\@makefntext{+m}{
+            \dim_set:Nn\parindent{1em}\noindent
+            \hbox_to_wd:nn{1.8em}{
+                \hss\@textsuperscript{\normalfont\@thefnmark}
+            }
+            ##1
+        }
+        \newpage
+        \int_gzero:N\@topnum
+        \__skrapport_maketitle:
+        \thispagestyle{plain}
+    \group_end:
+    \setcounter{footnote}{0}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro*}{\__skrapport_maketitle:}
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_maketitle:{
+    \newpage
+    \hbox:n{}
+    \begin{flushleft}
+        \vspace{-\headsep}
+        \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{regarding}{
+            \small\__skrapport_smallprint_style:
+            \tl_use:N\g__skrapport_regarding_tl
+            \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{date}{
+                \tl_if_empty:NF\g__skrapport_regarding_tl{,~}
+            }
+        }
+        \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{date}{
+            \tl_use:N\g__skrapport_date_tl
+        }
+        \clist_if_in:NnTF\l__skrapport_maketitle_hide_clist{regarding}{
+            \clist_if_in:NnTF\l__skrapport_maketitle_hide_clist{date}
+                {}{\par}
+        }{\par}
+        \vspace{1.5cm}
+        {
+            \Huge\__skrapport_title_style:
+            \tl_use:N\g__skrapport_title_tl
+            \par
+        }
+        \vspace{.125cm}
+        {
+            \Large\__skrapport_title_style:
+            \__skrapport_author_list:
+        }
+        \vspace{.75cm}
+    \end{flushleft}
+    \par
+    \clist_if_in:NnF\l__skrapport_maketitle_hide_clist{email}{
+        \dim_set_to_abstract_or_email_wd:N\l_tmpa_dim
+        \bool_gset_false:N\g__skrapport_abstract_used
+        \dim_set:Nn\l_tmpb_dim
+            {\textwidth-\l_tmpa_dim-\c__skrapport_abstract_separator_dim}
+        \begin{minipage}[t]{\l_tmpa_dim}
+            \begin{flushright}
+                \leavevmode\__skrapport_abstract_style:
+                \__skrapport_Email_word:
+            \end{flushright}
+        \end{minipage}
+        \hspace{\c__skrapport_abstract_separator_dim}
+        \begin{minipage}[t]{\l_tmpb_dim}
+            \__skrapport_email_list:
+        \end{minipage}
+        \par
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \begin{macro*}{\g__skrapport_abstract_used}
+    This boolean keeps track of wether the \env{abstract} environment has
+    been used, and is set accordingly in the main auxillary file.
+\begin{MacroCode}{class}
+\bool_new:N\g__skrapport_abstract_used
+\AtEndDocument{
+    \iow_shipout:Nx\@mainaux{ % !!!
+        \exp_not:N\ExplSyntaxOn
+        \bool_if:NTF\g__skrapport_abstract_used
+            {\exp_not:n{\bool_gset_true:N\g__skrapport_abstract_used}}
+            {\exp_not:n{\bool_gset_false:N\g__skrapport_abstract_used}}
+        \exp_not:N\ExplSyntaxOff
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\dim_set_to_abstract_or_email_wd:N}[1]
+        {Dimension register}
+    \changes{0.12a}{Set abstract style before word to fix incorrect width}
+    This macro sets a dimension to either the width of the email word
+    or the width of the abstract word depending on the state of
+    \cs{g__skrapport_abstract_used}.
+\begin{MacroCode}{class}
+\cs_new:Npn\dim_set_to_abstract_or_email_wd:N#1{
+    \dim_set_to_wd:Nn\l_tmpa_dim
+        {\__skrapport_abstract_style:\abstractname}
+    \dim_set_to_wd:Nn\l_tmpb_dim
+        {\__skrapport_abstract_style:\__skrapport_Email_word:}
+    \bool_if:NTF\g__skrapport_abstract_used
+        {\dim_set:Nn#1{\dim_max:nn{\l_tmpa_dim}{\l_tmpb_dim}}}
+        {\dim_set_eq:NN#1\l_tmpb_dim}
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \begin{environment}{abstract}
+    Standard restyled \env{abstract} environment from the
+    \pkg{article} class.
+\begin{MacroCode}{class}
+\dim_const:Nn\c__skrapport_abstract_separator_dim{1em}
+\DeclareDocumentEnvironment{abstract}{}{
+    \bool_gset_true:N\g__skrapport_abstract_used
+    \dim_set_to_abstract_or_email_wd:N\l_tmpa_dim
+    \dim_set:Nn\l_tmpb_dim
+        {\textwidth-\l_tmpa_dim-\c__skrapport_abstract_separator_dim}
+    \begin{minipage}[t]{\l_tmpa_dim}
+        \begin{flushright}
+            \leavevmode\__skrapport_abstract_style:
+            \abstractname
+        \end{flushright}
+    \end{minipage}
+    \hspace{\c__skrapport_abstract_separator_dim}
+    \begin{minipage}[t]{\l_tmpb_dim}
+}{
+    \end{minipage}
+}
+\end{MacroCode}
+    \end{environment}
+
+    \begin{environment}{titlepage}
+    Titlepage environment.
+    \begin{macro}{\ps at skrapport@titlepage}
+\begin{MacroCode}{class}
+\cs_new:Npn\ps at skrapport@titlepage{
+    \cs_set:Npn\@oddhead{}
+    \cs_set:Npn\@evenhead{}
+    \cs_set:Npn\@oddfoot{
+        \begin{minipage}{\textwidth}
+            \raggedleft\small\par
+            \__skrapport_smallprint_style:
+            \tl_use:N\g__skrapport_copyright_tl
+        \end{minipage}
+    }
+    \cs_set_eq:NN\@evenfoot\@oddfoot
+}
+\end{MacroCode}
+    \end{macro}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{titlepage}{}{
+    \cleardoublepage\setcounter{page}{1}
+}{
+    \bool_gset_false:N\g__skrapport_copyright_unprinted_bool
+    \thispagestyle{skrapport at titlepage}
+    \cleardoublepage\setcounter{page}{1}
+}
+\end{MacroCode}
+    \end{environment}
+
+    \subsubsection{Sectioning}
+    Sectioning macros. This is kind of messy. We start with creaiting
+    some counters using our homemade \LaTeX3 counter macros.
+\begin{MacroCode}{class}
+\setcounter{secnumdepth}{3}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+\end{MacroCode}
+    Next up, we have macros to display the section numberings.
+    \begin{macro*}{\thesection}
+\begin{MacroCode}{class}
+\cs_gset:Npn\thesection{
+    \arabic{section}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\thesubsection}
+\begin{MacroCode}{class}
+\cs_gset:Npn\thesubsection{
+    \thesection.\arabic{subsection}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\thesubsubsection}
+\begin{MacroCode}{class}
+\cs_gset:Npn\thesubsubsection{
+    \thesubsection.\arabic{subsubsection}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\theparagraph}
+\begin{MacroCode}{class}
+\cs_gset:Npn\theparagraph{
+    \thesubsubsection.\arabic{paragraph}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\thesubparagraph}
+\begin{MacroCode}{class}
+\cs_gset:Npn\thesubparagraph{
+    \theparagraph.\arabic{subparagraph}
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \paragraph{Pre- and post-section spacing}
+    Here comes the tricky part. We define two generic macros that add
+    spacing before and after the section title, to condense the code
+    a bit. Note that many of the following macros constitute a
+    reimplementation of \cs{@startsection}, \cs{@ssect}, \cs{@sect} and
+    friends.
+    \begin{macro}{\__skrapport_pre_section:n}[1]
+        {Skip before the section title}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_pre_section:n#1{
+    \leavevmode\par
+    \skip_set:Nn\l_tmpa_skip{#1}
+    \@afterindenttrue % !!!
+    \dim_compare:nT{\l_tmpa_skip<\c_zero_skip}{
+        \skip_set:Nn\l_tmpa_skip{-\l_tmpa_skip}
+        \@afterindentfalse % !!!
+    }
+    \if at nobreak \everypar{} \else
+        \addpenalty\@secpenalty % !!!
+        \skip_vertical:N\l_tmpa_skip
+    \fi
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_post_section:n}[1]
+        {Space after the section title}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_post_section:n#1{
+    \skip_set:Nn\l_tmpa_skip{#1}
+    \dim_compare:nTF{\l_tmpa_skip>\c_zero_skip}{
+        \par\nobreak
+        \skip_vertical:N\l_tmpa_skip
+        \@afterheading % !!!
+    }{
+        \@nobreakfalse
+        \global\@noskipsectrue
+        \skip_horizontal:n{-\l_tmpa_skip}
+    }
+    \ignorespaces
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{Starred sections}
+    These two macros (the first only being an alias for the second with
+    its last argument empty) correspond to unnumbered sections. Or,
+    rather, they do all the typesetting and none of the TOC/counter
+    stuff. This means that starred sections only call this macro, while
+    unstarred ones call other macros in addition to this macro.
+    \begin{macro*}{\__skrapport_section_star:nnn}
+    \begin{macro}{\__skrapport_section_star:nnnn}[4]
+        {Indentation of section title}
+        {Styling of the section title}
+        {Actual section title}
+        {Optional code to run in the indentation (\emph{i.e.} section number)}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_section_star:nnn#1#2#3{
+    \__skrapport_section_star:nnnn{#1}{#2}{#3}{}
+}
+\cs_new:Npn\__skrapport_section_star:nnnn#1#2#3#4{
+    \group_begin:
+        #2
+        \hbox_set:Nn\l_tmpa_box{{\skip_horizontal:n{#1}#4}}
+        \dim_set:Nn\hangindent{#1+\box_wd:N\l_tmpa_box}
+        \noindent\box_use_drop:N\l_tmpa_box
+        \interlinepenalty\@M % !!!
+        #3
+    \group_end:
+}
+\end{MacroCode}
+    \end{macro}
+    \end{macro*}
+
+    \paragraph{Unstarred sections}
+    This macro typesets an unstarred section, \emph{i.e.} a numbered
+    one. It defines a temporary macro containing the section number
+    (maybe, depends on the \cs{c at secnumdepth} counter) which it passes
+    on to \cs{__skrapport_section_star:nnnn}, and then writes some things
+    to the TOC.
+    \begin{macro}{\__skrapport_section_nostar:nnnnnn}[6]
+        {Section counter name}
+        {Section level}
+        {Indentation of section title}
+        {Styling of the section title}
+        {Actual section title}
+        {Section title for TOC}
+    \changes{0.12d}{Added support for hanging titles}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_section_nostar:nnnnnn#1#2#3#4#5#6{
+    \cs_set:Nn\__skrapport_saved_section:{}
+    \int_compare:nF{#2>\value{secnumdepth}}{
+        \refstepcounter{#1}
+        \cs_set:Nn\__skrapport_saved_section:{
+            \bool_if:NTF\g__skrapport_hanging_titles_bool
+                {\llap{\use:c{the#1}\hspace{1ex}}}
+                {\use:c{the#1}~}
+        }
+    }
+    \__skrapport_section_star:nnnn
+        {#3}{#4}{#5}{\__skrapport_saved_section:}
+    \use:c{#1mark}{#6}
+    \addcontentsline{toc}{#1}{
+        \int_compare:nF{#2>\value{secnumdepth}}{
+            \protect\numberline{\use:c{the#1}}
+        }
+        #6
+    }
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{Generic sectioning macros}
+    We will now set up a generic sectioning macro. First, we need
+    version of the above macros that expand their arguments.
+    \begin{macro*}{\__skrapport_pre_section:c}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_pre_section:n{c}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_post_section:c}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_post_section:n{c}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_section_star:ccn}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_section_star:nnn{ccn}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_section_nostar:nnccnn}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\__skrapport_section_nostar:nnnnnn{nnccnn}
+\end{MacroCode}
+    \end{macro*}
+
+    Now, the generic sectioning macro basically takes the sectioning
+    macro arguments straight up (arguments 3--5), additionally
+    requiring a section counter name and a section level. It expects
+    that constant dimensions (see definition of \cs{section} below)
+    and a formatting macro are available, and passes these as arguments
+    to the underlying sectioning macros as appropriate.
+    \begin{macro}{\__skrapport_generic_section:nnnnn}[5]
+        {Section counter name}
+        {Section level}
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional argument (or \cs{NoValue})}
+        {Section title text}
+\begin{MacroCode}{class}
+\cs_set:Nn\__skrapport_generic_section:nnnnn{
+    \__skrapport_pre_section:c{c__skrapport_#1_pre_skip}
+    \IfBooleanTF#3{
+        \__skrapport_section_star:ccn
+            {c__skrapport_#1_indent_dim}
+            {__skrapport_#1_style:}
+            {#5}
+    }{
+        \IfNoValueTF{#4}{
+            \__skrapport_section_nostar:nnccnn
+                {#1}{#2}
+                {c__skrapport_#1_indent_dim}
+                {__skrapport_#1_style:}
+                {#5}
+                {#5}
+        }{
+            \__skrapport_section_nostar:nnccnn
+                {#1}{#2}
+                {c__skrapport_#1_indent_dim}
+                {__skrapport_#1_style:}
+                {#5}
+                {#4}
+        }
+    }
+    \__skrapport_post_section:c{c__skrapport_#1_post_skip}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{Public sectioning API}
+    It's time to define the public sectioning macros. They all follow
+    the same format: first, two skips and one dimension (used by
+    \cs{__skrapport_generic_section:nnnnn}) are defined, as well as
+    a macro defining the text style of the section. Then, the actual
+    macro is provided.
+    \begin{macro}{\section}[3]
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional short title (or \cs{NoValue})}
+        {Sectioning title}
+    \begin{macro*}{\c__skrapport_section_pre_skip}
+    This is the skip \emph{before} a section title.
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_section_pre_skip{-4ex~plus~1ex~minus~-1ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_section_post_skip}
+    This is the skip \emph{after} a section title.
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_section_post_skip{.5ex~plus~.5ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_section_indent_dim}
+    This is the \emph{indentation} of a section title.
+\begin{MacroCode}{class}
+\dim_const:Nn \c__skrapport_section_indent_dim{\c_zero_dim}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_section_style:}
+    This is the text style of a section title.
+\begin{MacroCode}{class}
+\cs_set_protected:Nn\__skrapport_section_style:
+    {\normalfont\LARGE\__skrapport_title_style:}
+\end{MacroCode}
+    \end{macro*}
+    Finally, the public macro is provided.
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\section{som}{
+    \__skrapport_generic_section:nnnnn{section}{1}{#1}{#2}{#3}
+}
+\end{MacroCode}
+    \end{macro}
+
+    The other sectioning macros (macros from section to subparagraph are
+    available) are defined in an analogous manner.
+    \begin{macro}{\subsection}[3]
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional short title (or \cs{NoValue})}
+        {Sectioning title}
+    \begin{macro*}{\c__skrapport_subsection_pre_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subsection_pre_skip{-3ex~plus~1ex~minus~-1ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsection_post_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subsection_post_skip{.25ex~plus~.25ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsection_indent_dim}
+\begin{MacroCode}{class}
+\dim_const:Nn \c__skrapport_subsection_indent_dim{\c_zero_dim}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsection_style:}
+\begin{MacroCode}{class}
+\cs_set_protected:Nn\__skrapport_subsection_style:
+    {\normalfont\Large\__skrapport_title_style:}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\subsection{som}{
+    \__skrapport_generic_section:nnnnn{subsection}{2}{#1}{#2}{#3}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\subsubsection}[3]
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional short title (or \cs{NoValue})}
+        {Sectioning title}
+    \begin{macro*}{\c__skrapport_subsubsection_pre_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subsubsection_pre_skip{-2ex~plus~.5ex~minus~-.5ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsubsection_post_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subsubsection_post_skip{.125ex~plus~.125ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsubsection_indent_dim}
+\begin{MacroCode}{class}
+\dim_const:Nn \c__skrapport_subsubsection_indent_dim{\c_zero_dim}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subsubsection_style:}
+\begin{MacroCode}{class}
+\cs_set_protected:Nn\__skrapport_subsubsection_style:
+    {\normalfont\large\__skrapport_title_style:}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\subsubsection{som}{
+    \__skrapport_generic_section:nnnnn{subsubsection}{3}{#1}{#2}{#3}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\paragraph}[3]
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional short title (or \cs{NoValue})}
+        {Sectioning title}
+    \begin{macro*}{\c__skrapport_paragraph_pre_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_paragraph_pre_skip{1ex~plus~.25ex~minus~-.25ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_paragraph_post_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_paragraph_post_skip{-1em}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_paragraph_indent_dim}
+\begin{MacroCode}{class}
+\dim_const:Nn \c__skrapport_paragraph_indent_dim{\c_zero_dim}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_paragraph_style:}
+\begin{MacroCode}{class}
+\cs_set_protected:Nn\__skrapport_paragraph_style:
+    {\normalfont\normalsize\__skrapport_title_style:}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\paragraph{som}{
+    \__skrapport_generic_section:nnnnn{paragraph}{4}{#1}{#2}{#3}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\subparagraph}[3]
+        {Star (tested with \cs{IfBooleanTF})}
+        {Optional short title (or \cs{NoValue})}
+        {Sectioning title}
+    \begin{macro*}{\c__skrapport_subparagraph_pre_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subparagraph_pre_skip{1ex~plus~.25ex~minus~-.25ex}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subparagraph_post_skip}
+\begin{MacroCode}{class}
+\skip_const:Nn\c__skrapport_subparagraph_post_skip{-1em}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subparagraph_indent_dim}
+\begin{MacroCode}{class}
+\dim_const:Nn \c__skrapport_subparagraph_indent_dim{\parindent}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\c__skrapport_subparagraph_style:}
+\begin{MacroCode}{class}
+\cs_set_protected:Nn\__skrapport_subparagraph_style:
+    {\normalfont\normalsize\__skrapport_title_style:\itshape}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\subparagraph{som}{
+    \__skrapport_generic_section:nnnnn{subparagraph}{5}{#1}{#2}{#3}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \subsubsection{Macros and environments from \pkg{article}}
+    \paragraph{List environments}
+    First, several dimensions are provided and three penalties defined.
+\begin{MacroCode}{class}
+\dim_gset:Nn\leftmargini{2em}
+\dim_gset_eq:NN\leftmargin\leftmargini
+\dim_gset:Nn\leftmarginii{2em}
+\dim_gset:Nn\leftmarginiii{1.5em}
+\dim_gset:Nn\leftmarginiv{1.5em}
+\dim_gset:Nn\leftmarginv{1em}
+\dim_gset:Nn\leftmarginvi{1em}
+\dim_gset:Nn\labelsep{.5em}
+\dim_gset_eq:NN\labelwidth\leftmargini
+\dim_gsub:Nn\labelwidth{-\labelsep}
+\int_gset:Nn\@beginparpenalty{-\@lowpenalty}
+\int_gset:Nn\@endparpenalty  {-\@lowpenalty}
+\int_gset:Nn\@itempenalty    {-\@lowpenalty}
+\end{MacroCode}
+
+    Then, we define the appearance of the item numbers.
+    \begin{macro*}{\theenumi}
+    The first level consists of arabic numbers (\(1,2,3,\dotsc\)).
+\begin{MacroCode}{class}
+\cs_set:Npn\theenumi  {\arabic{enumi}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\theenumii}
+    The second level consists of lower-case alphabetic characters
+    (\(\text{a},\text{b},\text{c},\dotsc\)).
+\begin{MacroCode}{class}
+\cs_set:Npn\theenumii {\alph{enumii}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\theenumiii}
+    The third level consists of lower-case roman numerals
+    (\(\text{i},\text{ii},\text{iii},\dotsc\)).
+\begin{MacroCode}{class}
+\cs_set:Npn\theenumiii{\roman{enumiii}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\theenumiv}
+    The fourth level consists of upper-case alphabetic characters
+    (\(\text{A},\text{B},\text{C},\dotsc\)).
+\begin{MacroCode}{class}
+\cs_set:Npn\theenumiv {\Alph{enumiv}}
+\end{MacroCode}
+    \end{macro*}
+    We also need macros that typeset the actual labels. Here, different
+    levels have a different postfix: all levels except the second are
+    postfixed by a period, while the second level is postfixed by a
+    closing bracket.
+    \begin{macro*}{\labelenumi}
+\begin{MacroCode}{class}
+\cs_new:Npn\labelenumi{\theenumi.}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelenumii}
+\begin{MacroCode}{class}
+\cs_new:Npn\labelenumii{\theenumii)}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelenumiii}
+\begin{MacroCode}{class}
+\cs_new:Npn\labelenumiii{\theenumiii.}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelenumiv}
+\begin{MacroCode}{class}
+\cs_new:Npn\labelenumiv{\theenumiv.}
+\end{MacroCode}
+    \end{macro*}
+    We also fix the referencing of lower-level items so that one can
+    refer to them properly (\emph{i.e.} as 1b(iii) and so on).
+    \begin{macro*}{\p at enumii}
+\begin{MacroCode}{class}
+\cs_set:Npn\p at enumii{\theenumi}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\p at enumiii}
+\begin{MacroCode}{class}
+\cs_set:Npn\p at enumiii{\theenumi(\theenumii)}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\p at enumiiv}
+\begin{MacroCode}{class}
+\cs_set:Npn\p at enumiv{\p at enumiii\theenumiii}
+\end{MacroCode}
+    \end{macro*}
+
+    All that was for numbered lists (\env{enumerate}). Now, we define
+    the \enquote{labels} of \env{itemize} items. Alternately, they
+    are a bullet (\textbullet) and a boldfaced dash
+    ({\normalfont\bfseries\textendash}).
+    \begin{macro*}{\labelitemi}
+\begin{MacroCode}{class}
+\cs_set:Npn\labelitemi{\textbullet}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelitemii}
+\begin{MacroCode}{class}
+\cs_set:Npn\labelitemii{\normalfont\bfseries\textendash}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelitemiii}
+\begin{MacroCode}{class}
+\cs_set:Npn\labelitemiii{\textbullet}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\labelitemiv}
+\begin{MacroCode}{class}
+\cs_set:Npn\labelitemiv{\normalfont\bfseries\textendash}
+\end{MacroCode}
+    \end{macro*}
+
+    The last of the commonly used list environments is \env{description}.
+    Defining it is fairly simple --- we define a list with empty item
+    labels and a bit of hackery for the \cs{makelabel} macro inside.
+    \begin{environment}{description}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{description}{}{
+    \begin{list}{}{
+        \dim_zero:N\labelwidth
+        \dim_set:Nn\itemindent{-\leftmargin}
+        \cs_set_eq:NN\makelabel\descriptionlabel
+    }
+}{
+    \end{list}
+}
+\end{MacroCode}
+    \begin{macro}{\descriptionlabel}
+    Additionally, the \cs{descriptionlabel} macro is defined.
+\begin{MacroCode}{class}
+\NewDocumentCommand\descriptionlabel{m}{
+    \hspace{\labelsep}\normalfont\bfseries #1
+}
+\end{MacroCode}
+    \end{macro}
+    \end{environment}
+
+    \paragraph{Quotation environments}
+    The quotation environments are also fairly simple --- \env{quote}
+    is just a list with a single item, and \env{quotation} is a
+    \env{quote} with extra skips around it.
+    \begin{environment}{quote}
+\begin{MacroCode}{class}
+\NewDocumentEnvironment{quote}{}{
+    \begin{list}{}{
+        \dim_set_eq:NN\rightmargin\leftmargin
+    }
+    \item\itshape
+}{
+    \end{list}
+}
+\end{MacroCode}
+    \end{environment}
+    \begin{environment}{quotation}
+\begin{MacroCode}{class}
+\NewDocumentEnvironment{quotation}{}{
+    \bigskip
+    \begin{quote}
+}{
+    \end{quote}
+    \bigskip
+}
+\end{MacroCode}
+    \end{environment}
+    There's a \env{verse} environment, too, but it's just \env{quote}.
+    \begin{environment}{verse}
+\begin{MacroCode}{class}
+\NewDocumentEnvironment{verse}{}{
+    \begin{quote}
+}{
+    \end{quote}
+}
+\end{MacroCode}
+    \end{environment}
+
+    \paragraph{Front- and backmatter}
+    We only define one front/backmatter macro; \cs{appendix}.
+    \begin{macro}{\appendix}
+\begin{MacroCode}{class}
+\NewDocumentCommand\appendix{}{
+    \par
+    \setcounter{section}{0}
+    \setcounter{subsection}{0}
+    \cs_gset:Npn\thesection{\Alph{section}}
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{Old font macros}
+    The old font macros have been deprecated. Do not use!
+    \begin{macro}{\rm}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\rm{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\rm}{\textrm}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\sf}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\sf{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sf}{\textsf}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\tt}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\tt{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\tt}{\texttt}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\bf}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\bf{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\bf}{\textbf}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\it}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\it{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\it}{\textit}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\sl}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\sl{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sl}{\textsl}}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\sc}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\sc{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\sc}{\textsc}}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{The emphasis macro}
+    \begin{macro}{\emph}
+    \changes{0.12}{Changed definition, may have introduced spacing issues}
+    Redefining the \cs{emph} style to be bold when nested.
+    \begin{macro*}{\em}
+    \changes{0.12}{Deprecated command}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\em{}{\msg_error:nnnn{skrapport}{old-font-deprecated}{\em}{\emph}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_emphstyle:}
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_emphstyle:{
+    \itshape
+    \dim_compare:nF{\fontdimen\c_one\font>\c_zero_dim}{\bfseries}
+}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\emph{+m}{
+    \ifmmode
+        \text{\__skrapport_emphstyle: #1}
+    \else
+        {\__skrapport_emphstyle: #1}
+    \fi
+}
+\end{MacroCode}
+    \end{macro}
+
+    \paragraph{The footnote rule}
+    \begin{macro*}{\footnoterule}
+    \changes{0.12}{Removed footnote rule entirely}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\footnoterule{}{}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\@makefntext}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\@makefntext{+m}{
+    \dim_set:Nn\parindent{1em}\noindent
+    \hbox_to_wd:nn{1.8em}{\hss\@makefnmark}
+    #1
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \subsubsection{Floats}
+    \paragraph{Table- and box-related lengths}
+\begin{MacroCode}{class}
+\dim_gset:Nn\arraycolsep    {5pt}
+\dim_gset:Nn\tabcolsep      {6pt}
+\dim_gset:Nn\arrayrulewidth{.4pt}
+\dim_gset:Nn\doublerulesep  {2pt}
+\dim_gset_eq:NN\tabbingsep\labelsep
+\skip_gset_eq:NN{\skip\@mpfootins}{\skip\footins}
+\dim_gset:Nn\fboxsep        {3pt}
+\dim_gset:Nn\fboxrule      {.4pt}
+\end{MacroCode}
+
+    \paragraph{Counters}
+\begin{MacroCode}{class}
+\newcounter{figure}
+\newcounter{table}
+\end{MacroCode}
+    \begin{macro*}{\theequation}
+\begin{MacroCode}{class}
+\cs_set:Npn\theequation{\arabic{equation}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\thefigure}
+\begin{MacroCode}{class}
+\cs_set:Npn\thefigure{\arabic{figure}}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\thetable}
+\begin{MacroCode}{class}
+\cs_set:Npn\thetable{\arabic{table}}
+\end{MacroCode}
+    \end{macro*}
+
+    \paragraph{Defaults}
+    The default placement, list extension and caption text of all floats.
+\begin{MacroCode}{class}
+\cs_new:Npn  \fps at figure{tb}
+\cs_new:Npn\ftype at figure{1}
+\cs_new:Npn  \ext at figure{lof}
+\cs_new:Npn \fnum at figure{\figurename\ \thefigure}
+\cs_new:Npn  \fps at table {tb}
+\cs_new:Npn\ftype at table {2}
+\cs_new:Npn  \ext at table {lot}
+\cs_new:Npn \fnum at table {\tablename\ \thetable}
+\end{MacroCode}
+
+    \paragraph{Environments}
+    \begin{macro}{\__skrapport_xfloat:nn}
+    \begin{macro*}{\__skrapport_xfloat:nx}
+    This is a helper macro basically replacing the \cs{@float} macro
+    used by \LaTeXe.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_xfloat:nn#1#2{\@xfloat{#1}[#2]}
+\cs_generate_variant:Nn\__skrapport_xfloat:nn{nx}
+\end{MacroCode}
+    \end{macro*}
+    \end{macro}
+    \begin{environment}{figure}
+    \changes{0.12a}{Figures are now \cs{centering}ed by default}
+    \begin{environment*}{figure*}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{figure}{o}{
+    \__skrapport_xfloat:nx{figure}
+        {\IfNoValueTF{#1}{\fps at figure}{#1}}
+    \centering
+}{
+    \end at float
+}
+\DeclareDocumentEnvironment{figure*}{o}{
+    \__skrapport_xfloat:nx{figure}
+        {\IfNoValueTF{#1}{tp}{#1}}
+    \centering
+}{
+    \end at float
+}
+\end{MacroCode}
+    \end{environment*}
+    \end{environment}
+    \begin{environment}{table}
+    \changes{0.12a}{Tables are now \cs{centering}ed by default}
+    \begin{environment*}{table*}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{table}{o}{
+    \__skrapport_xfloat:nx{table}
+        {\IfNoValueTF{#1}{\fps at table}{#1}}
+    \centering
+}{
+    \end at float
+}
+\DeclareDocumentEnvironment{table*}{o}{
+    \__skrapport_xfloat:nx{table}
+        {\IfNoValueTF{#1}{tp}{#1}}
+    \centering
+}{
+    \end at float
+}
+\end{MacroCode}
+    \end{environment*}
+    \end{environment}
+
+    In addition to the \env{figure} and \env{table} environments, we
+    also provide a \env{figcenter} environment that enables centering
+    of figures or tables that are too wide for the page.
+    \begin{macro*}{\coffin_typeset:Nnnon}
+\begin{MacroCode}{class}
+\cs_generate_variant:Nn\coffin_typeset:Nnnnn{Nnnon}
+\end{MacroCode}
+    \end{macro*}
+    \begin{environment}{figcenter}
+    \changes{0.12c}{Fixed the x-offset calculation}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{figcenter}{}{
+    \cs_set_eq:NN\l__tmpa_cs\caption
+    \cs_set:Npn\caption{\msg_error:nn{skrapport}{caption-in-figcenter}}
+    \coffin_clear:N\l_tmpa_coffin
+    \hcoffin_set:Nw\l_tmpa_coffin
+}{
+    \hcoffin_set_end:
+    \dim_set:Nn\l_tmpa_dim{(\textwidth - \coffin_wd:N\l_tmpa_coffin)/2}
+    \coffin_typeset:Nnnon\l_tmpa_coffin{H}{l}{\dim_use:N\l_tmpa_dim}{0pt}
+    \cs_set_eq:NN\caption\l__tmpa_cs
+    \cs_undefine:N\l__tmpa_cs
+}
+\end{MacroCode}
+    \end{environment}
+
+    \paragraph{Captions}
+    Before we begin, we pass options to \pkg{caption}, in case the user
+    is loading it or another package based upon it. This fixes an issue
+    where the custom caption style was overwritten with the ugly default
+    \pkg{article} caption style.
+\begin{MacroCode}{class}
+\PassOptionsToPackage{font=small,labelfont+=bf,textfont+=it}{caption}
+\end{MacroCode}
+    \begin{macro*}{\__skrapport_caption_name_style:}
+\begin{MacroCode}{class}
+\cs_new_protected:Nn\__skrapport_caption_name_style:{\small\bfseries}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_caption_text_style:}
+\begin{MacroCode}{class}
+\cs_new_protected:Nn\__skrapport_caption_text_style:{\small\itshape}
+\end{MacroCode}
+    \end{macro*}
+\begin{MacroCode}{class}
+\skip_new:N\abovecaptionskip
+\skip_set:Nn\abovecaptionskip{10pt}
+\skip_new:N\belowcaptionskip
+\skip_set:Nn\belowcaptionskip{10pt}
+\end{MacroCode}
+    \begin{macro*}{\@makecaption}
+    \changes{0.10c}{Fix missing coloring command for some captions}
+    \changes{0.12}{Split \cs{@captionstyle} into two macros}
+    \changes{0.12a}{Fix a bug which applied caption name styling to the
+        caption text}
+    This should possibly be redefined already at the \cs{caption} level.
+\begin{MacroCode}{class}
+\cs_new:Npn\@makecaption#1#2{
+    \skip_vertical:N\abovecaptionskip
+    \hbox_set:Nn\l_tmpa_box{
+        \color at setgroup % !!!
+        {\__skrapport_caption_name_style:#1:~}
+        {\__skrapport_caption_text_style:#2}
+        \color at endgroup % !!!
+    }
+    \dim_compare:nTF{\box_wd:N\l_tmpa_box>\hsize}{
+        {\__skrapport_caption_name_style:#1:~}
+        {\__skrapport_caption_text_style:#2}
+        \par
+    }{
+        \global\@minipagefalse % !!!
+        \hbox_to_wd:nn{\hsize}{
+            \hfil
+            \box_use_drop:N\l_tmpa_box
+            \hfil
+        }
+    }
+    \skip_vertical:N\belowcaptionskip
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \subsubsection{Table of contents}
+\begin{MacroCode}{class}
+\cs_new:Npn\@pnumwidth{1.55em}
+\cs_new:Npn\@tocrmarg{2em}
+\cs_new:Npn\@dotsep{1.7}
+\setcounter{tocdepth}{3}
+\end{MacroCode}
+    \begin{macro}{\tableofcontents}
+    \changes{0.12}{Removed spacing and \cs{@mkboth} call}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\tableofcontents{}{
+  \section*{\contentsname}
+  \makeatletter
+  \@starttoc{toc}
+  \makeatother
+}
+\end{MacroCode}
+    \end{macro}
+
+    The following macros conspire to replace \cs{@dottedtocline}.
+    \begin{macro*}{\__skrapport_toc_line:nnnnnn}[6]
+        {TOC line character}
+        {Table of contents level of the line}
+        {Indentation at the start of the line}
+        {Width of the section number}
+        {Section title}
+        {Page number}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_toc_line:nnnnnn#1#2#3#4#5#6{
+    \int_compare:nF{#2>\value{tocdepth}}{
+        \skip_vertical:n{0pt~plus~.2pt}
+        \group_begin:
+            \skip_set:Nn\leftskip{#3}
+            \skip_set_eq:NN\rightskip\@tocrmarg
+            \skip_set:Nn\parfillskip{-\rightskip}
+            \dim_set:Nn\parindent{#3}
+            \@afterindenttrue % !!!
+            \interlinepenalty\@M % !!!
+            \leavevmode
+\end{MacroCode}
+    This here is pretty dumb. We can't use a \LaTeX3\ temporary skip
+    register (or skip the temporary), because \texttt{\#5} further down
+    will contain a \cs{hbox} based on \cs{@tempdima}. The proper thing
+    to do here would be to rewrite \cs{addcontentsline}, I guess. Bah.
+\begin{MacroCode}{class}
+            \skip_set:Nn\@tempdima{#4} % !!! (dumb)
+            \skip_add:Nn\leftskip{\@tempdima}
+            \null\nobreak
+            \skip_horizontal:n{-\leftskip}
+            {#5}\nobreak
+            \str_if_eq:nnTF{#1}{}{
+                \hfill
+            }{
+                \leaders\hbox:n{
+                    \(\mkern\@dotsep mu\hbox{#1}\mkern\@dotsep mu\) % !!!
+                }
+            }
+            \hfill\nobreak
+            \hbox_to_wd:nn{\@pnumwidth}{ % !!!
+                \hfil\normalfont\normalcolor #6
+            }
+            \par
+        \group_end:
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\__skrapport_toc_line:nnnnnn}[5]
+        {Table of contents level of the line}
+        {Indentation at the start of the line}
+        {Width of the section number}
+        {Section title}
+        {Page number}
+    This is a variant of \cs{__skrapport_toc_line:nnnnnn} which
+    implicitly sets empty space as its TOC line.
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_toc_line:nnnnn#1#2#3#4#5{
+    \__skrapport_toc_line:nnnnnn{}{#1}{#2}{#3}{#4}{#5}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\l at section}
+    \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnn}}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\l at section{mm}{
+    \group_begin:
+        \skip_vertical:n{.75ex}
+        \bfseries
+        \__skrapport_toc_line:nnnnn{1}{0em}{1.3em}{#1}{#2}
+    \group_end:
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\l at subsection}
+    \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnnn}}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\l at subsection{mm}{
+    \group_begin:
+        \skip_vertical:n{.35ex}
+        \penalty\@secpenalty % !!!
+        \__skrapport_toc_line:nnnnnn{.}{2}{1.3em}{2em}{#1}{#2}
+    \group_end:
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\l at subsubsection}
+    \changes{0.12}{Changed style to match \pkg{skdoc}}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\l at subsubsection{mm}{
+    \skip_set:Nn\leftskip{3.3em}
+    \dim_set_eq:NN\parindent\c_zero_dim
+    \group_begin:
+        \cs_set_eq:NN\numberline\use_none:n
+        \small #1~[#2]
+    \group_end:
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\l at paragraph}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\l at paragraph{mm}{
+    \int_compare:nF{4>\value{tocdepth}}{
+        \msg_warning:nnnn{skrapport}{tocdepth-too-deep}
+            {4}{\l at paragraph}
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro*}{\l at subparagraph}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\l at subparagraph{mm}{
+    \int_compare:nF{5>\value{tocdepth}}{
+        \msg_warning:nnnn{skrapport}{tocdepth-too-deep}
+            {5}{\l at subparagraph}
+    }
+}
+\end{MacroCode}
+    \end{macro*}
+
+    Fix for \emph{e.g.}~\pkg{tocloft} package.
+\begin{MacroCode}{class}
+\cs_set:Npn\l at figure{}
+\cs_set:Npn\l at table{}
+\end{MacroCode}
+
+    \subsubsection{Basic bibliography support}
+\begin{MacroCode}{class}
+\dim_new:N\bibindent
+\dim_set:Nn\bibindent{2em}
+\end{MacroCode}
+    \begin{environment}{thebibliography}
+    \changes{0.12}{Removed \cs{@mkboth}, \cs{@openbib at code} and
+                   \cs{@noitemerr}}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{thebibliography}{m}{
+    \section*{\refname}
+    \list{\@biblabel{\arabic{enumiv}}}{
+        \dim_set_to_wd:Nn\labelwidth{\@biblabel{#1}}
+        \dim_set_eq:NN\leftmargin\labelwidth
+        \dim_add:Nn\leftmargin{\labelsep}
+        \usecounter{enumiv} % !!!
+        \cs_set:Nn\p at enumiv{}
+        \RenewDocumentCommand\theenumiv{}{\arabic{enumiv}}
+    }
+    \sloppy
+    \int_set:Nn\clubpenalty{4000}
+    \int_set_eq:NN\@clubpenalty\clubpenalty
+    \int_set:Nn\widowpenalty{4000}
+}{
+    \cs_set:Nn\@noitemerr{}
+    \endlist
+}
+\end{MacroCode}
+    \end{environment}
+    \begin{macro*}{\newblock}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\newblock{}{
+    \skip_horizontal:n{.11em~plus~.33em~minus~.07em}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{environment}{theindex}
+    \changes{0.12}{Use \pkg{multicol} instead of \cs{twocolumn} mode,
+                   removed \cs{@mkboth} call}
+\begin{MacroCode}{class}
+\DeclareDocumentEnvironment{theindex}{}{
+    \begin{multicols}{2}[\section*{\indexname}]
+    \thispagestyle{plain}
+    \dim_zero:N\parindent
+    \skip_set:N\parskip{\c_zero_skip~plus~.3pt}
+    \dim_zero:N\columnseprule
+    \dim_set:Nn\columnsep{35pt}
+    \cs_set_eq:NN\item\@idxitem
+}{
+    \end{multicols}
+}
+\end{MacroCode}
+    \end{environment}
+    \begin{macro*}{\@idxitem}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\@idxitem{}{
+    \par
+    \dim_set:Nn\hangindent{40pt}
+}
+\end{MacroCode}
+    \end{macro*}
+    \begin{macro}{\subitem}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\subitem{}{
+    \@idxitem
+    \hspace*{20pt}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\subsubitem}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\subsubitem{}{
+    \@idxitem
+    \hspace*{30pt}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro*}{\indexspace}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\indexspace{}{
+    \par
+    \skip_vertical:n{10pt~plus~5pt~minus~3pt}
+}
+\end{MacroCode}
+    \end{macro*}
+
+    \subsubsection{Miscellaneous}
+    A macro \cs{comment} (alias \cs{com}/\cs{note}) is defined to let
+    the user add comments and notes to the document.
+    \begin{macro}{\__skrapport_comment:n}
+\begin{MacroCode}{class}
+\cs_new:Npn\__skrapport_comment:n#1{
+    {\textbf{\__skrapport_Comment_word: :}~#1}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\comment}
+    \changes{0.10}{Added macro for comments}
+    \changes{0.12b}{No longer uses \cs{colorbox} if no color package is loaded}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\comment{sm}{
+    \IfBooleanTF{#1}
+        {
+            \cs_if_exist_use:NT\colorbox{{red!50}}
+                {\__skrapport_comment:n{#2}}
+        }
+        {\marginpar{\__skrapport_comment:n{#2}}}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\com}
+    \begin{macro}{\note}
+    \changes{0.10b}{Fixed a silly error in \cs{com} and \cs{note}}
+\begin{MacroCode}{class}
+\ProvideDocumentCommand\com{sm}
+    {\IfBooleanTF{#1}{\comment*{#2}}{\comment{#2}}}
+\ProvideDocumentCommand\note{sm}
+    {\IfBooleanTF{#1}{\comment*{#2}}{\comment{#2}}}
+\end{MacroCode}
+    \end{macro}
+    \end{macro}
+
+    \begin{macro}{\__skrapport_space_if_not_punctuation:}
+\begin{MacroCode}{class}
+\cs_new:Nn\__skrapport_space_if_not_punctuation:{
+    \clist_if_in:noF
+        {{,},:,;,!,?,-,),'}
+        {\token_to_meaning:N\l_peek_token}
+        {\ }
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\__skrapport_peek_punctuation:n}
+    \begin{macro*}{\__skrapport_peek_punctuation:x}
+\begin{MacroCode}{class}
+\cs_new_nopar:Nn\__skrapport_peek_punctuation:n{
+    \mbox{#1}
+    \peek_meaning_remove:NTF.{}{
+        \peek_meaning:NF\ {
+            \peek_after:Nw\__skrapport_space_if_not_punctuation:
+        }
+    }
+}
+\cs_generate_variant:Nn\__skrapport_peek_punctuation:n{x}
+\end{MacroCode}
+    \end{macro*}
+    \end{macro}
+    \begin{macro}{\eg}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\eg{}{
+    \__skrapport_peek_punctuation:x{\__skrapport_eg_word:}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\ie}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\ie{}{
+    \__skrapport_peek_punctuation:x{\__skrapport_ie_word:}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\etc}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\etc{}{
+    \__skrapport_peek_punctuation:x{\__skrapport_etc_word:}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\cf}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\cf{}{
+    \__skrapport_peek_punctuation:x{\__skrapport_cf_word:}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\viz}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\viz{}{
+    \__skrapport_peek_punctuation:x{\__skrapport_viz_word:}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\dash}
+\begin{MacroCode}{class}
+\DeclareDocumentCommand\dash{}{
+    \cs_if_exist_use:NT\texorpdfstring
+    {\unskip\nobreak\thinspace\textemdash\thinspace\ignorespaces}{{ - }}
+}
+\cs_if_exist_use:NT\DeclareUnicodeCharacter{{2014}{\dash}}
+\end{MacroCode}
+    \end{macro}
+
+    \subsubsection{Color theme support}
+    Color theme setup. Start by patching commands and declaring
+    default colors. Not implemented: background colors for e.g.
+    quote environments and sections headings, different colors
+    for the different sectioning levels.
+\begin{MacroCode}{class}
+\bool_if:NT\g__skrapport_color_bool{
+    \apptocmd{\bfseries}
+        {\color{skrapport at boldcolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\bfseries}}
+    \apptocmd{\itshape}
+        {\color{skrapport at italiccolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\itshape}}
+    \apptocmd{\__skrapport_title_style:}
+        {\color{skrapport at titlecolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_title_style:}}
+    \apptocmd{\__skrapport_smallprint_style:}
+        {\color{skrapport at smallprintcolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_smallprint_style:}}
+    \apptocmd{\__skrapport_abstract_style:}
+        {\color{skrapport at titlecolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_abstract_style:}}
+    \apptocmd{\quote}
+        {\color{skrapport at quotecolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\quote}}
+    \apptocmd{\__skrapport_caption_name_style:}
+        {\color{skrapport at captioncolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_caption_name_style:}}
+    \apptocmd{\__skrapport_emphstyle:}
+        {\color{skrapport at emphcolor}}{}
+        {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_emphstyle:}}
+\end{MacroCode}
+% I have no idea why this was here or what difference it makes. These
+% things should be using \__skrapport_title_style:.
+%    \ifskrapport at twocolumn\AtBeginDocument{%
+%        \renewcommand\section{\@startsection {section}{1}{\z@}%
+%            {-.999\baselineskip}{0.001\baselineskip}{\bfseries\mathversi%on{bold}\color{skrapport at titlecolor}}}
+%        \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+%            {\baselineskip}{-.35\baselineskip}{\bfseries\color{skrapport at titlecolor}\unskip}}
+%        \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+%            {\baselineskip}{-.35\baselineskip}{\itshape\color{skrapport at titlecolor}\unskip}}
+%    }\fi
+%    \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+%        {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\bfseries\color{skrapport at titlecolor}}}
+%    \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+%        {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\itshape\color{skrapport at titlecolor}}}
+\begin{MacroCode}{class}
+    \AtBeginDocument{\@ifpackageloaded{hyperref}{%
+        \hypersetup{%
+            citebordercolor=skrapport at citecolor,citecolor=skrapport at citecolor,%
+            filebordercolor=skrapport at filecolor,filecolor=skrapport at filecolor,%
+            linkbordercolor=skrapport at linkcolor,linkcolor=skrapport at linkcolor,%
+            menubordercolor=skrapport at menucolor,menucolor=skrapport at menucolor,%
+            urlbordercolor=skrapport at urlcolor,urlcolor=skrapport at urlcolor,%
+            runbordercolor=skrapport at runcolor,runcolor=skrapport at runcolor%
+        }
+    }{}}
+    \AtBeginDocument{\color{skrapport at defaultcolor}}
+\end{MacroCode}
+    \begin{macro}{\colortheme}
+    The \cs{colortheme} macro allows the end-user to load color themes
+    (described later) to customize the colors of the document when the
+    class is loaded with the \opt{color} option.
+\begin{MacroCode}{class}
+    \DeclareDocumentCommand\colortheme{m}{
+        \usepackage{skrapport-colortheme-#1}
+    }
+\end{MacroCode}
+    \end{macro}
+\begin{MacroCode}{class}
+    \colortheme{default}
+}
+\end{MacroCode}
+
+    \subsection{Final class setup}
+    We end the document class by setting a few lengths along with the
+    page style and page numbering. Also, activate \cs{raggedbottom} and
+    \cs{onexolumn} (since we always do all the two-column stuff
+    ourselves anyway).
+\begin{MacroCode}{class}
+\dim_set:Nn\columnsep{10pt}
+\dim_zero:N\columnseprule
+\pagestyle{plain}
+\pagenumbering{arabic}
+\raggedbottom
+\onecolumn
+\endinput
+\end{MacroCode}
+
+    \subsection{Color themes}
+    As described earlier, the user can load color themes to customize
+    the appearance of the document if the class was loaded with the
+    \opt{color} option. Four themes are available by default.
+
+    \subsubsection{Default color theme}
+    \begin{theme}{Default}
+    \changes{0.09}{Added default color theme}
+\begin{MacroCode}{theme-default}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-colortheme-default}
+    {2012/06/07}{1.0}{skrapport color theme default}
+\definecolor{skrapport at citecolor}{named}{green}
+\definecolor{skrapport at filecolor}{named}{teal}
+\definecolor{skrapport at linkcolor}{named}{red}
+\definecolor{skrapport at menucolor}{named}{red}
+\definecolor{skrapport at urlcolor}{named}{cyan}
+\definecolor{skrapport at runcolor}{named}{teal}
+\definecolor{skrapport at boldcolor}{named}{black}
+\definecolor{skrapport at titlecolor}{named}{black}
+\definecolor{skrapport at italiccolor}{named}{black}
+\definecolor{skrapport at smallprintcolor}{named}{black}
+\definecolor{skrapport at quotecolor}{named}{black}
+\definecolor{skrapport at captioncolor}{named}{black}
+\definecolor{skrapport at emphcolor}{named}{black}
+\definecolor{skrapport at defaultcolor}{named}{black}
+\endinput
+\end{MacroCode}
+    \end{theme}
+
+    \subsubsection{Unscathed color theme}
+    \begin{theme}{Unscathed}
+    \changes{0.09}{Added \enquote{Unschathed} color theme}
+\begin{MacroCode}{theme-unscathed}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-colortheme-unscathed}
+    {2012/06/07}{1.0}{skrapport color theme unscathed}
+\definecolor{skrapport at citecolor}{named}{skrapport at defaultcolor}
+\definecolor{skrapport at filecolor}{named}{skrapport at defaultcolor}
+\definecolor{skrapport at menucolor}{named}{skrapport at defaultcolor}
+\definecolor{skrapport at runcolor}{named}{skrapport at defaultcolor}
+\definecolor{skrapport at emphcolor}{HTML}{463335}
+\definecolor{skrapport at linkcolor}{HTML}{CF5D3B}
+\definecolor{skrapport at urlcolor}{named}{skrapport at linkcolor}
+\definecolor{skrapport at titlecolor}{HTML}{B34430}
+\definecolor{skrapport at captioncolor}{named}{skrapport at titlecolor}
+\definecolor{skrapport at quotecolor}{HTML}{70524A}
+\definecolor{skrapport at smallprintcolor}{named}{skrapport at quotecolor}
+\endinput
+\end{MacroCode}
+    \end{theme}
+
+    \subsubsection{Cruelwater color theme}
+    \begin{theme}{Cruelwater}
+    \changes{0.09}{Added \enquote{Cruelwater} color theme}
+\begin{MacroCode}{theme-cruelwater}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-colortheme-cruelwater}
+    {2012/06/07}{1.0}{skrapport color theme cruelwater}
+\definecolor{skrapport at citecolor}{named}{black}
+\definecolor{skrapport at filecolor}{named}{black}
+\definecolor{skrapport at linkcolor}{named}{black}
+\definecolor{skrapport at menucolor}{named}{black}
+\definecolor{skrapport at urlcolor}{named}{black}
+\definecolor{skrapport at runcolor}{named}{black}
+\definecolor{skrapport at boldcolor}{HTML}{030C22}
+\definecolor{skrapport at titlecolor}{HTML}{20293F}
+\definecolor{skrapport at italiccolor}{named}{black}
+\definecolor{skrapport at smallprintcolor}{HTML}{A9B0B3}
+\definecolor{skrapport at quotecolor}{HTML}{404749}
+\definecolor{skrapport at captioncolor}{HTML}{030C22}
+\definecolor{skrapport at emphcolor}{HTML}{20293F}
+\definecolor{skrapport at defaultcolor}{named}{black}
+\endinput
+\end{MacroCode}
+    \end{theme}
+
+    \subsubsection{Violet color theme}
+    \begin{theme}{Violet}
+\changes{0.09}{Added \enquote{Violet} color theme}
+\begin{MacroCode}{theme-violet}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-colortheme-violet}
+    {2012/06/07}{1.0}{skrapport color theme violet}
+\definecolor{skrapport at citecolor}{HTML}{932444}
+\definecolor{skrapport at filecolor}{HTML}{932444}
+\definecolor{skrapport at linkcolor}{HTML}{932444}
+\definecolor{skrapport at menucolor}{HTML}{932444}
+\definecolor{skrapport at urlcolor}{HTML}{932444}
+\definecolor{skrapport at runcolor}{HTML}{932444}
+\definecolor{skrapport at boldcolor}{HTML}{311A2A}
+\definecolor{skrapport at titlecolor}{HTML}{311A2A}
+\definecolor{skrapport at italiccolor}{named}{black}
+\definecolor{skrapport at smallprintcolor}{HTML}{D6CBCF}
+\definecolor{skrapport at quotecolor}{HTML}{463335}
+\definecolor{skrapport at captioncolor}{HTML}{311A2A}
+\definecolor{skrapport at emphcolor}{HTML}{98758D}
+\definecolor{skrapport at defaultcolor}{named}{black}
+\endinput
+\end{MacroCode}
+    \end{theme}
+
+    \subsubsection{skdoc color theme}
+    \begin{theme}{skdoc}
+\changes{0.11a}{Added \enquote{skdoc} color theme}
+\begin{MacroCode}{theme-skdoc}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-colortheme-skdoc}
+    {2013/04/10}{1.0}{skrapport color theme skdoc}
+\definecolor{skrapport at citecolor}{RGB}{140,35,24}
+\definecolor{skrapport at filecolor}{RGB}{73,10,61}
+\definecolor{skrapport at linkcolor}{RGB}{140,35,24}
+\definecolor{skrapport at menucolor}{RGB}{140,35,24}
+\definecolor{skrapport at urlcolor}{RGB}{73,10,61}
+\definecolor{skrapport at runcolor}{RGB}{73,10,61}
+\definecolor{skrapport at boldcolor}{RGB}{73,10,61}
+\definecolor{skrapport at titlecolor}{RGB}{11,72,107}
+\definecolor{skrapport at italiccolor}{named}{black}
+\definecolor{skrapport at smallprintcolor}{RGB}{11,72,107}
+\definecolor{skrapport at quotecolor}{RGB}{140,35,24}
+\definecolor{skrapport at captioncolor}{RGB}{11,72,107}
+\definecolor{skrapport at emphcolor}{RGB}{73,10,61}
+\definecolor{skrapport at defaultcolor}{named}{black}
+\endinput
+\end{MacroCode}
+    \end{theme}
+
+    \section{Point sizes}
+    The point size options are pretty much \LaTeX3 translations of the
+    standard \pkg{article} class option files. There's a lot of duplicate
+    code here which may be worth to consolidate a bit.
+
+    \subsubsection{Common macros}
+    We first set up a package providing replacements for \LaTeXe\ macros,
+    common to all the point size files.
+\begin{MacroCode}{size-common}
+\RequirePackage{expl3}
+\ProvidesExplPackage{skrapport-size-common}
+    {2013/04/29}{1.0}{skrapport point size option common macros}
+\end{MacroCode}
+    \begin{macro}{\__skrapport_set_font_size:nn}[2]
+        {Font size}
+        {Baseline skip?} % !!!
+\begin{MacroCode}{size-common}
+\cs_new:Npn\__skrapport_set_font_size:nn#1#2{
+    \fontsize{#1}{#2} % !!!
+    \selectfont
+}
+\end{MacroCode}
+    \end{macro}
+\begin{MacroCode}{size-common}
+\endinput
+\end{MacroCode}
+
+    \subsubsection{Actual point size files}
+\begin{MacroCode}{size-10,size-11,size-12}
+\RequirePackage{expl3}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\ProvidesExplFile{skrapport-size10pt.clo}
+    {2013/04/29}{1.0}{skrapport point size option 10pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\ProvidesExplFile{skrapport-size11pt.clo}
+    {2013/04/29}{1.0}{skrapport point size option 11pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\ProvidesExplFile{skrapport-size12pt.clo}
+    {2013/04/29}{1.0}{skrapport point size option 12pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\RequirePackage{skrapport-size-common}
+\end{MacroCode}
+    \begin{macro}{\normalsize}
+\begin{MacroCode}{size-10,size-11,size-12}
+\RenewDocumentCommand\normalsize{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \__skrapport_set_font_size:nn{10}{12}
+    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt ~plus~3pt}
+    \skip_gset:Nn   \belowdisplayshortskip {6pt ~plus~3pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+    \__skrapport_set_font_size:nn{11}{13.2}
+    \skip_gset:Nn   \abovedisplayskip      {11pt ~plus~3pt  ~minus~6pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
+    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{12}{14.5}
+    \skip_gset:Nn   \abovedisplayskip      {12pt ~plus~3pt  ~minus~7pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
+    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
+    \cs_gset_eq:NN\@listi\@listI
+}
+\end{MacroCode}
+    \end{macro}
+\begin{MacroCode}{size-10,size-11,size-12}
+\normalsize
+\end{MacroCode}
+    \begin{macro}{\small}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\small{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \__skrapport_set_font_size:nn{9}{11}
+    \skip_gset:Nn   \abovedisplayskip      {8.5pt~plus~3pt~minus~4pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~2pt}
+    \skip_gset:Nn   \belowdisplayshortskip {4pt  ~plus~2pt~minus~2pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+    \__skrapport_set_font_size:nn{10}{12}
+    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt ~plus~2pt}
+    \skip_gset:Nn   \belowdisplayshortskip {6pt ~plus~3pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{11}{13.6}
+    \skip_gset:Nn   \abovedisplayskip      {11pt ~plus~3pt  ~minus~6pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt  ~plus~3pt}
+    \skip_gset:Nn   \belowdisplayshortskip {6.5pt~plus~3.5pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
+    \cs_gset:Npn\@listi{
+        \dim_gset_eq:NN\leftmargin\leftmargini
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+        \skip_gset:Nn\topsep{4pt~plus~2pt~minus~2pt}
+        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+        \skip_gset:Nn\topsep{6pt~plus~2pt~minus~2pt}
+        \skip_gset:Nn\parsep{3pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+        \skip_gset:Nn\topsep{  9pt~plus~3pt~minus~5pt}
+        \skip_gset:Nn\parsep{4.5pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+        \skip_gset_eq:NN\itemsep\parsep
+    }
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\footnotesize}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\footnotesize{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \__skrapport_set_font_size:nn{8}{9.5}
+    \skip_gset:Nn   \abovedisplayskip      {6pt~plus~2pt~minus~4pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt~plus~1pt}
+    \skip_gset:Nn   \belowdisplayshortskip {3pt~plus~1pt~minus~2pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+    \__skrapport_set_font_size:nn{9}{11}
+    \skip_gset:Nn   \abovedisplayskip      {8pt~plus~2pt~minus~4pt}
+    \skip_gset:Nn   \abovedisplayshortskip {0pt~plus~1pt}
+    \skip_gset:Nn   \belowdisplayshortskip {4pt~plus~2pt~minus~2pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{10}{12}
+    \skip_gset:Nn   \abovedisplayskip      {10pt~plus~2pt~minus~5pt}
+    \skip_gset:Nn   \abovedisplayshortskip { 0pt~plus~3pt}
+    \skip_gset:Nn   \belowdisplayshortskip { 6pt~plus~3pt~minus~3pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+    \skip_gset_eq:NN\belowdisplayskip      \abovedisplayskip
+    \cs_gset:Npn\@listi{
+        \dim_gset_eq:NN\leftmargin\leftmargini
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+        \skip_gset:Nn\topsep{3pt~plus~1pt~minus~1pt}
+        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+        \skip_gset:Nn\topsep{4pt~plus~2pt~minus~2pt}
+        \skip_gset:Nn\parsep{2pt~plus~1pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+        \skip_gset:Nn\topsep{6pt~plus~2pt~minus~2pt}
+        \skip_gset:Nn\parsep{3pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+        \skip_gset_eq:NN\itemsep\parsep
+    }
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\scriptsize}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\scriptsize{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \__skrapport_set_font_size:nn{7}{8}
+\end{MacroCode}
+\begin{MacroCode}{size-11,size-12}
+    \__skrapport_set_font_size:nn{8}{9.5}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\tiny}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\tiny{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \__skrapport_set_font_size:nn{5}{6}
+\end{MacroCode}
+\begin{MacroCode}{size-11,size-12}
+    \__skrapport_set_font_size:nn{6}{7}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\large}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\large{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \__skrapport_set_font_size:nn{12}{14}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{14}{18}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\Large}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\Large{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \__skrapport_set_font_size:nn{14}{18}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{17}{22}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\LARGE}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\LARGE{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \__skrapport_set_font_size:nn{17}{22}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{20}{25}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\huge}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\huge{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \__skrapport_set_font_size:nn{20}{25}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{25}{30}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+    \begin{macro}{\Huge}
+\begin{MacroCode}{size-10,size-11,size-12}
+\NewDocumentCommand\Huge{}{
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \__skrapport_set_font_size:nn{25}{30}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \__skrapport_set_font_size:nn{30}{36}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\end{MacroCode}
+    \end{macro}
+\begin{MacroCode}{size-10}
+\dim_set:Nn\parindent {15pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\dim_set:Nn\parindent {17pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\dim_set:Nn\parindent {1.5em}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\skip_set:Nn\smallskipamount{ 3pt~plus~1pt~minus~1pt}
+\skip_set:Nn\medskipamount  { 6pt~plus~2pt~minus~2pt}
+\skip_set:Nn\bigskipamount  {12pt~plus~4pt~minus~4pt}
+\dim_set:Nn\headheight{12pt}
+\dim_set:Nn\headsep   {25pt}
+\dim_set:Nn\topskip   {10pt}
+\dim_set:Nn\footskip  {30pt}
+\dim_set:Nn\maxdepth  { 5pt}
+\end{MacroCode}
+    These (\emph{i.e.} text width and height) are hopefully overwritten
+    by \pkg{typearea} later, so we don't bother much with them.
+\begin{MacroCode}{size-10,size-11,size-12}
+\dim_set:Nn\textwidth  {\paperwidth-2cm}
+\dim_set:Nn\textheight{\paperheight-2cm}
+\dim_set:Nn\oddsidemargin  {.2cm}
+\dim_set:Nn\evensidemargin  {1cm}
+\dim_set:Nn\marginparsep   {11pt}
+\dim_set:Nn\marginparpush   {5pt}
+\dim_set:Nn\marginparwidth {.8cm-\marginparsep}
+\dim_set:Nn\topmargin{\paperheight-1cm
+                      -\headheight-\headsep
+                      -\textheight-\footskip
+                      -.5\topmargin}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\dim_set:Nn\footnotesep{6.65pt}
+\skip_set:Nn{\skip\footins} { 9pt~plus~4pt~minus~2pt}
+\skip_set:Nn\floatsep       {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\textfloatsep   {20pt~plus~2pt~minus~4pt}
+\skip_set:Nn\intextsep      {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\dblfloatsep    {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\dbltextfloatsep{20pt~plus~2pt~minus~4pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\dim_set:Nn\footnotesep{7.7pt}
+\skip_set:Nn{\skip\footins} {10pt~plus~4pt~minus~2pt}
+\skip_set:Nn\floatsep       {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\textfloatsep   {20pt~plus~2pt~minus~4pt}
+\skip_set:Nn\intextsep      {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\dblfloatsep    {12pt~plus~2pt~minus~2pt}
+\skip_set:Nn\dbltextfloatsep{20pt~plus~2pt~minus~4pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\dim_set:Nn\footnotesep{8.4pt}
+\skip_set:Nn{\skip\footins} {10.8pt~plus~4pt~minus~2pt}
+\skip_set:Nn\floatsep       {12pt  ~plus~2pt~minus~4pt}
+\skip_set:Nn\textfloatsep   {20pt  ~plus~2pt~minus~4pt}
+\skip_set:Nn\intextsep      {14pt  ~plus~4pt~minus~4pt}
+\skip_set:Nn\dblfloatsep    {14pt  ~plus~2pt~minus~4pt}
+\skip_set:Nn\dbltextfloatsep{20pt  ~plus~2pt~minus~4pt}
+\end{MacroCode}
+    These six have been changed slightly compared to \LaTeXe.
+\begin{MacroCode}{size-10,size-11,size-12}
+\skip_set:Nn\@fptop{ 5pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\skip_set:Nn\@fpsep{10pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\skip_set:Nn\@fpsep{11pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\skip_set:Nn\@fpsep{12pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\skip_set:Nn\@fpbot{ 5pt}
+\skip_set:Nn\@dblfptop{ 5pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\skip_set:Nn\@dblfpsep{10pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\skip_set:Nn\@dblfpsep{11pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\skip_set:Nn\@dblfpsep{12pt~plus~2fil}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\skip_set:Nn\@dblfpbot{ 5pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\skip_set:Nn\partopsep{2pt~plus~1pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\skip_set:Nn\partopsep{3pt~plus~1pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\skip_set:Nn\partopsep{3pt~plus~2pt~minus~2pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\cs_set:Npn\@listi{
+    \dim_set_eq:NN\leftmargin\leftmargini
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \skip_set:Nn\parsep {4pt~plus~2pt~minus~1pt}
+    \skip_set:Nn\topsep {8pt~plus~2pt~minus~4pt}
+    \skip_set:Nn\itemsep{4pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+    \skip_set:Nn\parsep {4.5pt~plus~2pt~minus~1pt}
+    \skip_set:Nn\topsep {  9pt~plus~3pt~minus~5pt}
+    \skip_set:Nn\itemsep{4.5pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \skip_set:Nn\parsep { 5pt~plus~2.5pt~minus~1pt}
+    \skip_set:Nn\topsep {10pt~plus~4pt  ~minus~6pt}
+    \skip_set:Nn\itemsep{ 5pt~plus~2.5pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+}
+\cs_set_eq:NN\@listI\@listi
+\dim_gset_eq:NN\leftmargin\leftmargini
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+\skip_gset:Nn\parsep {4pt~plus~2pt~minus~1pt}
+\skip_gset:Nn\topsep {8pt~plus~2pt~minus~4pt}
+\skip_gset:Nn\itemsep{4pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+\skip_gset:Nn\parsep {4.5pt~plus~2pt~minus~1pt}
+\skip_gset:Nn\topsep {  9pt~plus~3pt~minus~5pt}
+\skip_gset:Nn\itemsep{4.5pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+\skip_gset:Nn\parsep { 5pt~plus~2.5pt~minus~1pt}
+\skip_gset:Nn\topsep {10pt~plus~4pt  ~minus~6pt}
+\skip_gset:Nn\itemsep{ 5pt~plus~2.5pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+\cs_set:Npn\@listii{
+    \dim_set_eq:NN\leftmargin\leftmarginii
+    \dim_set:Nn\labelwidth{\leftmarginii-\labelsep}
+\end{MacroCode}
+\begin{MacroCode}{size-10}
+    \skip_set:Nn\parsep {2pt~plus~1pt~minus~1pt}
+    \skip_set:Nn\topsep {4pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-11}
+    \skip_set:Nn\parsep {  2pt~plus~1pt~minus~1pt}
+    \skip_set:Nn\topsep {4.5pt~plus~2pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \skip_set:Nn\parsep {2.5pt~plus~1pt  ~minus~1pt}
+    \skip_set:Nn\topsep {  5pt~plus~2.5pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+    \skip_set_eq:NN\itemsep\parsep
+}
+\cs_set:Npn\@listiii{
+    \dim_set_eq:NN\leftmargin\leftmarginiii
+    \dim_set:Nn\labelwidth{\leftmarginiii-\labelsep}
+    \skip_set_eq:NN\parsep\c_zero_skip
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11}
+    \skip_set:Nn\topsep   {2pt~plus~1pt~minus~1pt}
+    \skip_set:Nn\partopsep{1pt~plus~0pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-12}
+    \skip_set:Nn\topsep   {2.5pt~plus~1pt~minus~1pt}
+    \skip_set:Nn\partopsep{  1pt~plus~0pt~minus~1pt}
+\end{MacroCode}
+\begin{MacroCode}{size-10,size-11,size-12}
+    \skip_set_eq:NN\itemsep\topsep
+}
+\cs_set:Npn\@listiv{
+    \dim_set_eq:NN\leftmargin\leftmarginiv
+    \dim_set:Nn\labelwidth{\leftmarginiv-\labelsep}
+}
+\cs_set:Npn\@listv{
+    \dim_set_eq:NN\leftmargin\leftmarginv
+    \dim_set:Nn\labelwidth{\leftmarginv-\labelsep}
+}
+\cs_set:Npn\@listvi{
+    \dim_set_eq:NN\leftmargin\leftmarginvi
+    \dim_set:Nn\labelwidth{\leftmarginvi-\labelsep}
+}
+\endinput
+\end{MacroCode}
+
+    \Finale
+    \section{Installation}
+    The easiest way to install this package is using the package
+    manager provided by your \LaTeX\ installation if such a program
+    is available. Failing that, provided you have obtained the package
+    source (\file{skrapport.tex} and \file{Makefile}) from either CTAN
+    or Github, running \texttt{make install} inside the source directory
+    works well. This will extract the documentation and code from
+    \file{skrapport.tex}, install all files into the TDS tree at
+    \texttt{TEXMFHOME} and run \texttt{mktexlsr}.
+
+    If you want to extract code and documentation without installing
+    the package, run \texttt{make all} instead. If you insist on not
+    using \texttt{make}, remember that packages distributed using
+    \pkg{skdoc} must be extracted using \texttt{pdflatex}, \emph{not}
+    \texttt{tex} or \texttt{latex}.
+
+    \PrintChanges
+    \PrintIndex
+    \printbibliography
+\end{document}


Property changes on: trunk/Master/texmf-dist/source/latex/skrapport/skrapport.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2018-12-30 22:10:06 UTC (rev 49539)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2018-12-30 22:11:16 UTC (rev 49540)
@@ -1092,7 +1092,6 @@
  'simurgh',     "&MAKEflatten",
  'skak',        "&MAKEflatten",
  'skeyval',     "&MAKEmv_doctex",
- 'skrapport',   "&MAKEflatten",
  'slashbox',    "die 'skipping, noinfo license, c.1993'",
  'slidenotes',  "die 'skipping, nonfree'",
  'smallcap',    "die 'skipping, questionable license, 1996'",
@@ -1459,7 +1458,6 @@
  'schule',		=> '&POSTschule',
  'simple-resume-cv'	=> '&POST_simple_rmFonts',
  'simple-thesis-dissertation' => '&POST_simple_rmFonts',
- 'skrapport'		=> '&POSTskrapport',
  'splitindex'           => '&POST_do_man',
  'startex'              => '&POST_otherformat', 
  'tap'                  => '&POSTtap',
@@ -2459,7 +2457,6 @@
  'rcs',                 'rcs.el|src|' . $standardsource,
  'ruhyphen',            '^[^.]*$|README.ru|hyphen.rules',
  'selnolig',            'NULL',                 # not .fea
- 'skrapport',		'NULL',			# keep in doc
  'texosquery',		'java|\.batch$|' . $standardsource,
  'thailatex',           'NULL',                 # no gain in splitting up
  'tlcockpit',		'TODO|build|project|src',
@@ -2650,7 +2647,6 @@
  'schedule'     => 'latex',  # requires interaction
  'silence'      => 'latex -translate-file=empty.tcx',   # no 8-bit
  'skdoc'        => 'tex',
- 'skrapport'    => 'pdflatex', # as with download
  'svg'		=> 'etex -interaction=nonstopmode',
  'svn-multi'    => 'latex',  # interaction for .pl
  'teubner'      => 'latex',  # interaction
@@ -6482,13 +6478,6 @@
   &SYSTEM ("$MV doc/* . && rmdir doc");
 }
 
-sub POSTskrapport {
-  # ordinarily when we flatten we want the directory name appended, as
-  # in README.doc, README.source, etc. But for this package, better not to.
-  print "POST$package - rename Makefile.source\n";
-  &SYSTEM ("$MV Makefile.source Makefile");
-}
-
 sub POST_simple_rmFonts {
   print "POST$package - rm Fonts dir\n";
   &SYSTEM ("$RM -r Fonts");



More information about the tex-live-commits mailing list