diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r-- | Master/texmf-dist/doc/latex/skrapport/Makefile | 62 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/skrapport/skrapport.pdf | bin | 268087 -> 268245 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/skrapport/skrapport.tex | 4375 |
3 files changed, 0 insertions, 4437 deletions
diff --git a/Master/texmf-dist/doc/latex/skrapport/Makefile b/Master/texmf-dist/doc/latex/skrapport/Makefile deleted file mode 100644 index c653763275c..00000000000 --- a/Master/texmf-dist/doc/latex/skrapport/Makefile +++ /dev/null @@ -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 diff --git a/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf b/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf Binary files differindex 7391e83bdf3..3ec7599b6a3 100644 --- a/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf +++ b/Master/texmf-dist/doc/latex/skrapport/skrapport.pdf diff --git a/Master/texmf-dist/doc/latex/skrapport/skrapport.tex b/Master/texmf-dist/doc/latex/skrapport/skrapport.tex deleted file mode 100644 index 397da4a9185..00000000000 --- a/Master/texmf-dist/doc/latex/skrapport/skrapport.tex +++ /dev/null @@ -1,4375 +0,0 @@ -%% skrapport Skånings rapportklass -%% -%% Copyright (C) 2012-2016 by Simon Sigurdhsson <sigurdhsson@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@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@section} to make the TOC blend in a bit. - \begin{macro*}{\l@section} -\begin{MacroCode}{class} - \DeclareDocumentCommand\l@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@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@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@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@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@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@skrapport@titlepage} -\begin{MacroCode}{class} -\cs_new:Npn\ps@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@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@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@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@enumii} -\begin{MacroCode}{class} -\cs_set:Npn\p@enumii{\theenumi} -\end{MacroCode} - \end{macro*} - \begin{macro*}{\p@enumiii} -\begin{MacroCode}{class} -\cs_set:Npn\p@enumiii{\theenumi(\theenumii)} -\end{MacroCode} - \end{macro*} - \begin{macro*}{\p@enumiiv} -\begin{MacroCode}{class} -\cs_set:Npn\p@enumiv{\p@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@figure{tb} -\cs_new:Npn\ftype@figure{1} -\cs_new:Npn \ext@figure{lof} -\cs_new:Npn \fnum@figure{\figurename\ \thefigure} -\cs_new:Npn \fps@table {tb} -\cs_new:Npn\ftype@table {2} -\cs_new:Npn \ext@table {lot} -\cs_new:Npn \fnum@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@figure}{#1}} - \centering -}{ - \end@float -} -\DeclareDocumentEnvironment{figure*}{o}{ - \__skrapport_xfloat:nx{figure} - {\IfNoValueTF{#1}{tp}{#1}} - \centering -}{ - \end@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@table}{#1}} - \centering -}{ - \end@float -} -\DeclareDocumentEnvironment{table*}{o}{ - \__skrapport_xfloat:nx{table} - {\IfNoValueTF{#1}{tp}{#1}} - \centering -}{ - \end@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@setgroup % !!! - {\__skrapport_caption_name_style:#1:~} - {\__skrapport_caption_text_style:#2} - \color@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@section} - \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnn}} -\begin{MacroCode}{class} -\DeclareDocumentCommand\l@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@subsection} - \changes{0.12}{Now uses \cs{__skrapport_toc_line:nnnnnn}} -\begin{MacroCode}{class} -\DeclareDocumentCommand\l@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@subsubsection} - \changes{0.12}{Changed style to match \pkg{skdoc}} -\begin{MacroCode}{class} -\DeclareDocumentCommand\l@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@paragraph} -\begin{MacroCode}{class} -\DeclareDocumentCommand\l@paragraph{mm}{ - \int_compare:nF{4>\value{tocdepth}}{ - \msg_warning:nnnn{skrapport}{tocdepth-too-deep} - {4}{\l@paragraph} - } -} -\end{MacroCode} - \end{macro*} - \begin{macro*}{\l@subparagraph} -\begin{MacroCode}{class} -\DeclareDocumentCommand\l@subparagraph{mm}{ - \int_compare:nF{5>\value{tocdepth}}{ - \msg_warning:nnnn{skrapport}{tocdepth-too-deep} - {5}{\l@subparagraph} - } -} -\end{MacroCode} - \end{macro*} - - Fix for \emph{e.g.}~\pkg{tocloft} package. -\begin{MacroCode}{class} -\cs_set:Npn\l@figure{} -\cs_set:Npn\l@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@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@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@boldcolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\bfseries}} - \apptocmd{\itshape} - {\color{skrapport@italiccolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\itshape}} - \apptocmd{\__skrapport_title_style:} - {\color{skrapport@titlecolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_title_style:}} - \apptocmd{\__skrapport_smallprint_style:} - {\color{skrapport@smallprintcolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_smallprint_style:}} - \apptocmd{\__skrapport_abstract_style:} - {\color{skrapport@titlecolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_abstract_style:}} - \apptocmd{\quote} - {\color{skrapport@quotecolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\quote}} - \apptocmd{\__skrapport_caption_name_style:} - {\color{skrapport@captioncolor}}{} - {\msg_warning:nnn{skrapport}{color-patch-failed}{\__skrapport_caption_name_style:}} - \apptocmd{\__skrapport_emphstyle:} - {\color{skrapport@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@twocolumn\AtBeginDocument{% -% \renewcommand\section{\@startsection {section}{1}{\z@}% -% {-.999\baselineskip}{0.001\baselineskip}{\bfseries\mathversi%on{bold}\color{skrapport@titlecolor}}} -% \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% -% {\baselineskip}{-.35\baselineskip}{\bfseries\color{skrapport@titlecolor}\unskip}} -% \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% -% {\baselineskip}{-.35\baselineskip}{\itshape\color{skrapport@titlecolor}\unskip}} -% }\fi -% \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% -% {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\bfseries\color{skrapport@titlecolor}}} -% \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% -% {1ex \@plus .25ex \@minus -.25ex}{-1em}{\normalfont\normalsize\itshape\color{skrapport@titlecolor}}} -\begin{MacroCode}{class} - \AtBeginDocument{\@ifpackageloaded{hyperref}{% - \hypersetup{% - citebordercolor=skrapport@citecolor,citecolor=skrapport@citecolor,% - filebordercolor=skrapport@filecolor,filecolor=skrapport@filecolor,% - linkbordercolor=skrapport@linkcolor,linkcolor=skrapport@linkcolor,% - menubordercolor=skrapport@menucolor,menucolor=skrapport@menucolor,% - urlbordercolor=skrapport@urlcolor,urlcolor=skrapport@urlcolor,% - runbordercolor=skrapport@runcolor,runcolor=skrapport@runcolor% - } - }{}} - \AtBeginDocument{\color{skrapport@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@citecolor}{named}{green} -\definecolor{skrapport@filecolor}{named}{teal} -\definecolor{skrapport@linkcolor}{named}{red} -\definecolor{skrapport@menucolor}{named}{red} -\definecolor{skrapport@urlcolor}{named}{cyan} -\definecolor{skrapport@runcolor}{named}{teal} -\definecolor{skrapport@boldcolor}{named}{black} -\definecolor{skrapport@titlecolor}{named}{black} -\definecolor{skrapport@italiccolor}{named}{black} -\definecolor{skrapport@smallprintcolor}{named}{black} -\definecolor{skrapport@quotecolor}{named}{black} -\definecolor{skrapport@captioncolor}{named}{black} -\definecolor{skrapport@emphcolor}{named}{black} -\definecolor{skrapport@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@citecolor}{named}{skrapport@defaultcolor} -\definecolor{skrapport@filecolor}{named}{skrapport@defaultcolor} -\definecolor{skrapport@menucolor}{named}{skrapport@defaultcolor} -\definecolor{skrapport@runcolor}{named}{skrapport@defaultcolor} -\definecolor{skrapport@emphcolor}{HTML}{463335} -\definecolor{skrapport@linkcolor}{HTML}{CF5D3B} -\definecolor{skrapport@urlcolor}{named}{skrapport@linkcolor} -\definecolor{skrapport@titlecolor}{HTML}{B34430} -\definecolor{skrapport@captioncolor}{named}{skrapport@titlecolor} -\definecolor{skrapport@quotecolor}{HTML}{70524A} -\definecolor{skrapport@smallprintcolor}{named}{skrapport@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@citecolor}{named}{black} -\definecolor{skrapport@filecolor}{named}{black} -\definecolor{skrapport@linkcolor}{named}{black} -\definecolor{skrapport@menucolor}{named}{black} -\definecolor{skrapport@urlcolor}{named}{black} -\definecolor{skrapport@runcolor}{named}{black} -\definecolor{skrapport@boldcolor}{HTML}{030C22} -\definecolor{skrapport@titlecolor}{HTML}{20293F} -\definecolor{skrapport@italiccolor}{named}{black} -\definecolor{skrapport@smallprintcolor}{HTML}{A9B0B3} -\definecolor{skrapport@quotecolor}{HTML}{404749} -\definecolor{skrapport@captioncolor}{HTML}{030C22} -\definecolor{skrapport@emphcolor}{HTML}{20293F} -\definecolor{skrapport@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@citecolor}{HTML}{932444} -\definecolor{skrapport@filecolor}{HTML}{932444} -\definecolor{skrapport@linkcolor}{HTML}{932444} -\definecolor{skrapport@menucolor}{HTML}{932444} -\definecolor{skrapport@urlcolor}{HTML}{932444} -\definecolor{skrapport@runcolor}{HTML}{932444} -\definecolor{skrapport@boldcolor}{HTML}{311A2A} -\definecolor{skrapport@titlecolor}{HTML}{311A2A} -\definecolor{skrapport@italiccolor}{named}{black} -\definecolor{skrapport@smallprintcolor}{HTML}{D6CBCF} -\definecolor{skrapport@quotecolor}{HTML}{463335} -\definecolor{skrapport@captioncolor}{HTML}{311A2A} -\definecolor{skrapport@emphcolor}{HTML}{98758D} -\definecolor{skrapport@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@citecolor}{RGB}{140,35,24} -\definecolor{skrapport@filecolor}{RGB}{73,10,61} -\definecolor{skrapport@linkcolor}{RGB}{140,35,24} -\definecolor{skrapport@menucolor}{RGB}{140,35,24} -\definecolor{skrapport@urlcolor}{RGB}{73,10,61} -\definecolor{skrapport@runcolor}{RGB}{73,10,61} -\definecolor{skrapport@boldcolor}{RGB}{73,10,61} -\definecolor{skrapport@titlecolor}{RGB}{11,72,107} -\definecolor{skrapport@italiccolor}{named}{black} -\definecolor{skrapport@smallprintcolor}{RGB}{11,72,107} -\definecolor{skrapport@quotecolor}{RGB}{140,35,24} -\definecolor{skrapport@captioncolor}{RGB}{11,72,107} -\definecolor{skrapport@emphcolor}{RGB}{73,10,61} -\definecolor{skrapport@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} |