%%% =========================================================================== %%% EXTERNAL FILES %%% =========================================================================== \begin{filecontents}{pkgloader-additional.sty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % A list of recommended rules derived from % : % % \begin{macrocode} \Load {tikz-3dplot} late if loaded because {the tikz-3dplot documentation explicitly says to do so} % \end{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % A list of recommended rules derived from % : % % \begin{macrocode} \Load {graphicx} early if loaded \Load {relsize} early if loaded \Load {ragged2e} early if loaded \Load {amsmath} before {pst-pdf} if loaded \Load {ltxtable} after {hyperref} if loaded % \end{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{filecontents} \begin{filecontents}{solarized.sty} \usepackage[x11names, rgb, html]{xcolor} % Solarized colors \definecolor{sbase03}{HTML}{002B36} \definecolor{sbase02}{HTML}{073642} \definecolor{sbase01}{HTML}{586E75} \definecolor{sbase00}{HTML}{657B83} \definecolor{sbase0}{HTML}{839496} \definecolor{sbase1}{HTML}{93A1A1} \definecolor{sbase2}{HTML}{EEE8D5} \definecolor{sbase3}{HTML}{FDF6E3} \definecolor{syellow}{HTML}{B58900} \definecolor{sorange}{HTML}{CB4B16} \definecolor{sred}{HTML}{DC322F} \definecolor{smagenta}{HTML}{D33682} \definecolor{sviolet}{HTML}{6C71C4} \definecolor{sblue}{HTML}{268BD2} \definecolor{scyan}{HTML}{2AA198} \definecolor{sgreen}{HTML}{859900} \end{filecontents} \begin{filecontents}{solarized-light.sty} \usepackage{solarized} \usepackage{listings} \lstset{ % How/what to match sensitive=true, % Border (above and below) frame=lines, % Extra margin on line (align with paragraph) xleftmargin=\parindent, % Put extra space under caption belowcaptionskip=1\baselineskip, % Colors backgroundcolor=\color{sbase3}, basicstyle=\color{sbase00}\ttfamily, keywordstyle=\color{scyan}, commentstyle=\color{sbase1}, stringstyle=\color{sblue}, numberstyle=\color{sviolet}, identifierstyle=\color{sbase00}, % Break long lines into multiple lines? breaklines=true, % Show a character for spaces? showstringspaces=false, tabsize=2 } \end{filecontents} %%% =========================================================================== %%% DOCUMENT PREAMBLE %%% =========================================================================== \RequirePackage[additional]{pkgloader} % manage options and loading order of packages \RequirePackage[l2tabu,orthodox]{nag} % issue warnings for deprecated code \PassOptionsToPackage{pdftex}{graphicx} \PassOptionsToPackage{num}{isodate} \PassOptionsToPackage{nochapter}{vhistory} \PassOptionsToPackage{svgnames,table}{xcolor} %%% Document class and generic options %%% =========================================================================== \documentclass[% american, ]{scrartcl} %%% Language and encoding %%% --------------------------------------------------------------------------- \usepackage[utf8]{inputenc} % Datei-Kodierung (benötigt für Umlaute) % latin9 (ISO-8859-9) = latin1+"Euro sign" \usepackage[TS1,T1]{fontenc} % Schrift-Kodierung \usepackage{babel} % Rechtschreibung, Silbentrennung etc. %%% Load packages %%% =========================================================================== \usepackage{solarized-light} % solarized color scheme for listings %%% NOTE: The package loading order is organized by , comments on %%% when to load packages are merely informational %%% Fonts and symbols %%% --------------------------------------------------------------------------- \usepackage[osf,sc]{mathpazo} % Adobe Palatino, 'mathpazo' in equations \linespread{1.05} % >> increase linespread for Palatino \renewcommand{\sfdefault}{iwona} % Iwona (sans-serif) \usepackage[scaled=0.85]{beramono} % Bera Mono (monospace) \usepackage{fontawesome} % web-related icons %%% Typesetting %%% --------------------------------------------------------------------------- \usepackage{csquotes} % context sensitive quotation facilities \usepackage{ellipsis} % fix space around ellipses (\dots), load after \usepackage{enumitem} % customized lists (incompatible(?) with glossaries) \usepackage{isodate} % date formatting \usepackage{listings} % source code printer for LaTeX \usepackage{microtype} % micro-typographic extensions of pdfTEX \usepackage{ragged2e} % improved ragged text % >> load early \usepackage{relsize} % relative text sizes % >> load early \usepackage{siunitx} % unit and number typesetting %%% Tables %%% --------------------------------------------------------------------------- \usepackage{array} % improved array- and tabular-environments \usepackage{booktabs} % professional table typesetting %%% Math %%% ---------------------------------------------------------------------------´ \usepackage{amsmath} % various math typesetting improvements % >> load before \usepackage{mathtools} % extends and fixes some bugs %%% Development tools %%% --------------------------------------------------------------------------- \usepackage{accsupp} % better accessibility support for PDF files (experimental) \usepackage{blindtext} % blindtext macros \usepackage{fixltx2e} % bug fixes for LaTeX2e %%% Graphics, color, boxes %%% --------------------------------------------------------------------------- \usepackage{keystroke} % graphical representation of the keys on a computer keyboard \usepackage{tcolorbox} % coloured and framed text boxes with a heading line %%% Lists and Bibliographies %%% --------------------------------------------------------------------------- \usepackage{makeidx} % create an index %%% References and Links %%% --------------------------------------------------------------------------- \usepackage{hyperref} % hyperlinks and pdf setup \usepackage{cleveref} % automatic references % >> load after because adds special supportfor this package \LoadPackagesNow %%% Document meta data %%% =========================================================================== \newcommand{\doctitle}{The \texttt{ksp-thesis} class} \newcommand{\docsubtitle}{A \LaTeX\ class for theses published with KIT Scientific Publishing} \newcommand{\docauthor}{David Heinze} \newcommand{\docauthoremail}{http://exergie100.de/en/contact/} \newcommand{\docsubject}{\docsubtitle} \newcommand{\dockeywords}{LaTeX, class, dissertation, thesis, KIT, KIT Scientific Publishing, ClassicThesis, ArsClassica} \newcommand{\doctime}{\today} %%% Package settings %%% =========================================================================== %%% %%% --------------------------------------------------------------------------- \hypersetup{% hidelinks, % no border, no special color breaklinks=true, % enable breakable links hypertexnames=true, % use guessable names for links linktocpage=true, % table of contents links to pages hyperfootnotes=false, % no links to footnotes bookmarksopenlevel=1, bookmarksopen=true, bookmarksnumbered=true, plainpages=false, % Anchors even on plain pages ? pageanchor=true, % Pages are linkable pdftitle={\doctitle}, pdfauthor={\docauthor, \docauthoremail}, pdfkeywords={\dockeywords}, pdfpagelabels=true, % set PDF page labels pdfpagemode=UseOutlines, % show bookmarks on start pdfstartpage=1, % page at which PDF document opens pdfhighlight=/O, % how link buttons behave when selected; pdftex, % use pdftex backend } %%% Setup autoreferences for %%% --------------------------------------------------------------------------- %%% http://www.ureader.de/msg/136221647.aspx %%% http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords \makeatletter \AtBeginDocument{ \@ifpackageloaded{babel}{% \addto\extrasamerican{% \renewcommand*{\figureautorefname}{Figure}% \renewcommand*{\tableautorefname}{Table}% \renewcommand*{\partautorefname}{Part}% \renewcommand*{\chapterautorefname}{Chapter}% \renewcommand*{\sectionautorefname}{Section}% \renewcommand*{\subsectionautorefname}{Section}% \renewcommand*{\subsubsectionautorefname}{Section}% }% \addto\extrasngerman{% \renewcommand*{\paragraphautorefname}{Absatz}% \renewcommand*{\subparagraphautorefname}{Unterabsatz}% \renewcommand*{\footnoteautorefname}{Fu\"snote}% \renewcommand*{\FancyVerbLineautorefname}{Zeile}% \renewcommand*{\theoremautorefname}{Theorem}% \renewcommand*{\appendixautorefname}{Anhang}% \renewcommand*{\equationautorefname}{Gleichung}% \renewcommand*{\itemautorefname}{Punkt}% }% % Fix to getting autorefs for subfigures right (thanks to Belinda Vogt for changing the definition) \providecommand{\subfigureautorefname}{\figureautorefname}% }{\relax} } \makeatother %%% settings %%% --------------------------------------------------------------------------- \crefname{equation}{eq.}{eqs.} \Crefname{equation}{Equation}{Equations} \crefname{figure}{fig.}{figs.} \Crefname{figure}{Figure}{Figures} \crefname{table}{tab.}{tabs.} \Crefname{table}{Table}{Tables} %%% %%% --------------------------------------------------------------------------- \sisetup{ per-mode = symbol-or-fraction, retain-unity-mantissa = false, } %%% %%% --------------------------------------------------------------------------- \pdfcompresslevel=0 \pdfadjustspacing=1 %%% %%% --------------------------------------------------------------------------- \lstloadlanguages{tex,command.com} \lstset{% language=[LaTeX]Tex, moretexcs = { % additional tex keywords cftchapnumwidth, cftpartnumwidth, cftpartpagefont, definecolor, PassOptionsToPackage, RaggedRight, reducewspc, reducewstr, resetwspc, resetwstr, setlength, }, numbers=none, aboveskip=0pt,belowskip=0pt, frame=none, showstringspaces=false, % marks blank spaces in strings breaklines=true, % automatic line breaking } %%% %%% --------------------------------------------------------------------------- \tcbuselibrary{% breakable, % automatic breaking of a tcolorbox listings, % use the package to typeset listings skins, % required for advanced box styling } \tcbset{ break with pad/.style={ breakable, enhanced jigsaw, pad at break*=#1, }, break without pad/.style={break with pad=0mm}, } %%% %%% --------------------------------------------------------------------------- \isodate % print dates as yyyy-mm-dd %%% Custom commands %%% =========================================================================== %%% abbreviations %%% --------------------------------------------------------------------------- \newcommand{\KIT}{\textsmaller{KIT}\xspace} \newcommand{\KSP}{\textsmaller{KSP}\xspace} %%% text formats %%% --------------------------------------------------------------------------- \newcommand{\textpkgname}[1]{\textsf{#1}} \newcommand{\textfilename}[1]{\texttt{#1}} \newcommand{\textkey}[1]{\fbox{\textsf{#1}}} \newcommand{\textprgout}[1]{{<<\textit{#1}>>}} \lstMakeShortInline[language=bash]| \newcommand{\optionfont}[1]{{\ttfamily\bfseries #1}} \newcommand{\optionvaluefont}[1]{{\ttfamily\itshape #1}} \newcommand{\optionvaluedefaultfont}[1]{\textbf{#1}} \newcommand{\option}[1]{\optionfont{#1\index{options!\texttt{#1}}}} \newcommand{\commandfont}[1]{{\ttfamily\bfseries #1}} \newcommand{\commandargfont}[1]{{\ttfamily #1}} %%% custom lists %%% --------------------------------------------------------------------------- \newenvironment{optionlist}{% \begin{description}[font=\normalfont\optionfont, leftmargin=0pt, labelindent=-\marginparwidth, style=nextline] \newcommand{\opt}[1][\empty]{\item[##1\ifx##1\empty\else\index{options!##1}\fi]} }{% \end{description} } \newenvironment{valuelist}{% \begin{description}[font=\normalfont\optionvaluefont, leftmargin=1em, labelindent=-\marginparwidth, style=nextline] }{% \end{description} } \newenvironment{commandlist}{% \begin{description}[font=\normalfont,leftmargin=0pt, labelindent=-\marginparwidth, style=nextline] \newcommand{\cmd}[2]{\item[\commandfont{\textbackslash##1}\commandargfont{##2}\index{commands!\texttt{\textbackslash##1}}]} }{% \end{description} } %%% boxes %%% --------------------------------------------------------------------------- \newtcblisting{texcode}[2][]{ no listing options, listing only, coltitle=sbase2, colbacktitle=sbase0, colback=sbase3, colframe=sbase02, boxrule=0.5pt, left=1mm,right=1mm,top=0mm,bottom=0mm, fonttitle=\footnotesize\ttfamily, title=#2,#1 } \newtcbinputlisting{\inputtexcode}[3][]{% listing file={#3}, no listing options, listing only, coltitle=sbase2, colbacktitle=sbase0, colback=sbase3, colframe=sbase02, boxrule=0.5pt, left=1mm,right=1mm,top=0mm,bottom=0mm, fonttitle=\footnotesize\ttfamily, title=#2,#1 } %%% Content data %%% =========================================================================== \makeindex %%% =========================================================================== %%% DOCUMENT CONTENT %%% =========================================================================== \begin{document} \selectlanguage{american} \title{\doctitle} \subtitle{\docsubtitle} \author{\docauthor\thanks{\docauthoremail}} \date{\doctime} \publishers{\normalsize \begin{abstract}\noindent \begin{quote} The \textpkgname{ksp-thesis} class is a \LaTeX\ class intended for authors who want to publish their thesis or other scientific work with \emph{\KIT Scientific Publishing (\KSP)}. The class is based on the \textpkgname{scrbook} class of the \textpkgname{KOMA-script} package in combination with the \textpkgname{ClassicThesis} and \textpkgname{ArsClassica} packages. It modifies some of the layout and style definitions of these packages in order to provide a document layout that should be compatible with the requirements by \KSP. \end{quote} \end{abstract} } \maketitle %%% =========================================================================== \section{Introduction} This class is intended to aid authors intending to publish a thesis (or a similar scientific work) with \KIT Scientific Publishing (\KSP)\footnote{\url{http://www.ksp.kit.edu/}}, the internal publishing company of the Karlsruhe Institute of Technology (\KIT). The layout provided by this class was used for publication of my own thesis at \KSP and should thus adhere to their requirements. However, while being based on the official \LaTeX\ templates provided by \KSP, the class is not maintained by \KSP. The \textpkgname{ksp-thesis} class builds on the \textpkgname{scrbook} class of the \textpkgname{KOMA-script}\footnote{\url{http://www.ctan.org/pkg/koma-script}} package in combination with the \textpkgname{ClassicThesis}\footnote{\url{http://www.ctan.org/pkg/classicthesis}} and \textpkgname{ArsClassica}\footnote{\url{http://www.ctan.org/pkg/arsclassica}} packages. Therefore, you (the user of this class) should be familiar with these three packages. \pagebreak % keep text block on one page André Miede, the author of the \textpkgname{ClassicThesis} package, asks his package users to send him a postcard: \begin{quote}\itshape If you like the style then I would appreciate a postcard: \begin{center} André Miede \\ Detmolder Straße 32 \\ 31737 Rinteln \\ Germany \end{center} The postcards I received so far are available at: \begin{center} \url{http://postcards.miede.de} \end{center} \end{quote} As the \textpkgname{ksp-thesis} class uses many features of the \textpkgname{ClassicThesis} package, I would ask you to do so as well if you use \textpkgname{ksp-thesis} class. %%% =========================================================================== \section{Installation} \begin{enumerate} \item Get the latest release of \textfilename{ksp-thesis.zip} from \url{https://github.com/GORywwyN/ksp-thesis/tree/master/release/} or download the file \url{http://mirrors.ctan.org/macros/latex/contrib/ksp-thesis.zip} \item Extract the file \textfilename{ksp-thesis.tds.zip} from the archive \item Unpack the \textfilename{ksp-thesis.tds.zip} archive in the root directory of the local \TeX\ installation tree, for example \begin{itemize} \item \textfilename{/usr/local/share/texmf/} or \item \textfilename{/usr/share/texmf-local/} or \item \textfilename{C:\textbackslash Local TeX Files\textbackslash} \end{itemize} \item Update the file hash tables (also known as the file name database). On \TeX Live systems, run |texhash| as root (|sudo texhash|). On MiK\TeX, run |initexmf --update-fndb| in a command window or use the \textprgout{Refresh FNDB} button of the MiK\TeX\ Options window. \end{enumerate} \clearpage %%% =========================================================================== \section{Usage} Using \textpkgname{ksp-thesis} as your document class (\lstinline|\documentclass{ksp-thesis}|) without any options will have the following effects: \begin{enumerate} \item The \textpkgname{scrbook} class of the \textpkgname{KOMA-script} package is loaded as base class. All options provided to the class (except the \textpkgname{ksp-thesis}-specific options listed in \cref{sec:options}) are passed on to \textpkgname{KOMA-script}. \item The packages \textpkgname{ClassicThesis} and \textpkgname{ArsClassica} are loaded, thus applying their layout and style settings. However, some settings of these packages are overridden or changed: \begin{enumerate} \item The page layout defined by \textpkgname{ClassicThesis} is overridden and constructed by \textpkgname{KOMA-script} instead. \item Parts and chapters in the table of contents are emphasized by using bold font instead of uppercase words. \item Page numbers are set flushed right in the table of contents. \item List environments (\lstinline|itemize,enumerate,description|) are set ragged right. \item Headings (\lstinline|chapter|, \dots, \lstinline|subsubsection|) are set ragged right. \item Heading numbers use the width of the current chapter number, whereby the headings from level \lstinline|chapter| until \lstinline|subsubsection| begin at the same horizontal position. \item The numbers of footnotes are shifted to the left so that footnotes have the same left margin as the text area. \item Formatting (coloring) of hyperlinks is removed.\footnote{I believe that coloring options should be left to the document author and in general used sparingly.} \end{enumerate} \end{enumerate} Some of these settings can be changed using the class options listed in the following. %%% --------------------------------------------------------------------------- \subsection{Options} \label{sec:options} The class options below are formatted as \optionfont{option}\optionvaluefont{=\optionvaluedefaultfont{default value}} or \optionvaluefont{=value}. For boolean options, \optionvaluefont{=true} can be omitted. %%% ........................................................................... \subsubsection{Generic layout} \label{sec:generic-layout} \begin{optionlist} \opt[layout] Set the \textpkgname{KOMA-script} page layout according to one of the following options: \begin{valuelist} \item[=\optionvaluedefaultfont{report}] \KIT Scientific Report layout (A4 paper size) for publication release \item[=17x24] \KIT Scientific Publishing book layout (\SI{17}{\centi\meter} x \SI{24}{\centi\meter} paper size) for publication release \item[=official] two-sided layout (paper size A4) for faculty and thesis committee (identical to \optionvaluefont{report}) \item[=draft] singled-sided layout (paper size A4) for private and correction prints \end{valuelist} \opt[raggedlists] Set lists (itemize, enumerate, description) \dots \begin{valuelist} \item[=\optionvaluedefaultfont{true}] \dots ragged right. (More specifically, the \lstinline|\RaggedRight| command of the \textpkgname{ragged2e} package is used.) \item[=false] \dots justified. \end{valuelist} \end{optionlist} %%% ........................................................................... \subsubsection{Table of contents layout} \label{sec:toc-layout} \begin{optionlist} \opt[dottedtoc] Set page numbers in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{true}] \dots flushed right. For sections entries and below, page numbers are separated by dots. For part and chapter entries, empty space is used by default. This default setting can be changed with the options \option{dottedtocparts} and \option{dottedtocchapters}. \item[=false] \dots separated by a fixed-width space. \end{valuelist} \opt[dottedtocparts] Separate part entries and page numbers in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{false}] \dots with empty space. \item[=true] \dots with dots. This value should only be used with \option{dottedtoc}\optionvaluefont{=true}. \end{valuelist} \opt[dottedtocchapters] Separate chapter entries and page numbers in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{false}] \dots with empty space. \item[=true] \dots with dots. This value should only be used with \option{dottedtoc}\optionvaluefont{=true}. \end{valuelist} \opt[tocpartentriesbold] Format part entries in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{true}] \dots with bold font. \item[=false] \dots with spaced low small caps. (This is the default setting of \textpkgname{ClassicThesis}). \end{valuelist} \opt[tocchapterentriesbold] Format chapter entries in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{true}] \dots with bold font. \item[=false] \dots with spaced low small caps. (This is the default setting of \textpkgname{ClassicThesis}). \end{valuelist} \opt[tocentriesbold] Format part and chapter entries in the table of contents \dots \begin{valuelist} \item[=\optionvaluedefaultfont{true}] \dots with bold font. \item[=false] \dots with spaced low small caps. (This is the default setting of \textpkgname{ClassicThesis}). \end{valuelist} \end{optionlist} %%% --------------------------------------------------------------------------- \subsection{Commands} When publishing with \KSP, you will be asked to avoid single syllables or short words in the last line of a paragraph. For this purpose, \textpkgname{ksp-thesis} defines some commands that can be used to change the word spacing or stretching\footnote{Make sure that the legibility of your text is not impaired when using these commands.}. \begin{commandlist} \cmd{reducewspc}{[]} Change the word spacing to \commandargfont{} (default: \commandargfont{.95}) times its original value. \cmd{reducewstr}{[]} Change the word stretching to \commandargfont{} (default: \commandargfont{.95}) times its original value. \cmd{resetwspc}{} Reset the word spacing to its default value. \cmd{resetwstr}{} Reset the word stretching to its default value. \end{commandlist} %%% =========================================================================== \section{Troubleshooting and Usage Tips} %%% --------------------------------------------------------------------------- \subsection{Using options of the \textpkgname{ClassicThesis} package} If you want to use options of the \textpkgname{ClassicThesis} package, you have to provide them \emph{before} the documentclass definition. In general, I recommend using at least the following options: \begin{texcode}{how to pass options to the \textpkgname{ClassicThesis} package} \PassOptionsToPackage{% pdfspacing, % make use of pdftex' letter spacing capabilities via the microtype package. floatperchapter, % activate numbering per chapter for all floats such as figures, tables, and listings }{classicthesis} \documentclass[% listof=totoc, % add list of figures, tables, etc. to table of contents ngerman,english, % document language(s) ]{ksp-thesis} \end{texcode} %%% --------------------------------------------------------------------------- \subsection{Spacing of heading numbers for long documents} If your document contains a large number of parts and/or chapters, you may have to enlarge the space reserved for part and chapter numbers in the table of contents. This space is controlled by \lstinline|\cftpartnumwidth| and \lstinline|\cftchapnumwidth|, respectively. For example, if your document contains eight parts, you may adjust the width as follows: \begin{texcode}{how to adjust the width of part and chapter numbers in the table of contents} \settowidth{\cftpartnumwidth}{\cftpartpagefont VIII} \setlength{\cftchapnumwidth}{\cftpartnumwidth} \end{texcode} Further information on how to modify the layout of the table of contents can be found in the documentation of the \textpkgname{tocloft}\footnote{\url{http://www.ctan.org/pkg/tocloft}} package. %%% --------------------------------------------------------------------------- \subsection{Changing the color of part headings} Part headings are displayed using the color \enquote{\texttt{parttitlecolor}}.% \footnote{The \textpkgname{ClassicThesis} package uses the color \enquote{\texttt{Maroon}} as defined by the \textpkgname{xcolor} package to emphasize part headings. I believe that it is more convenient to use a semantic color name instead.} % If, for example, you prefer a black-and-white document, you can thus simply redefine this color to be black: \begin{texcode}{how to change the color of part headings} \definecolor{parttitlecolor}{named}{black} \end{texcode} %%% =========================================================================== \section{Example} Here is a minimal example of a document based on \textpkgname{ksp-thesis}: \inputtexcode[break with pad]{minimal example document}{../demo/minimal/example.tex} A complete, extensively commented example which can be used as framework for your thesis can be found in the subfolder \textfilename{./demo/full/}. %%% =========================================================================== \cleardoublepage \phantomsection \addcontentsline{toc}{chapter}{\indexname} \printindex \end{document}