%% cleanthesis.sty %% Copyright 2015 R. Langner % % 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 R. Langner. % % This work consists of all files listed in MANIFEST.md. % % % ************************************************** % % Clean Thesis % -- A LaTeX Style for Thesis Documents -- % % ************************************************** % % Readme: % ---------------------------------------- % Please check out the README.md file in the root of this package. % % ************************************************** \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{cleanthesis}[2015/08/26 v0.3.1 Clean-looking thesis style inspired by Apple's user guide documents] % % ************************************************** % Package options % ************************************************** % % -- process all available package options % % % The xkeyval package enables us to handle for example key-value pairs % in an easy way \RequirePackage{xkeyval} % OPTION sansserif % --> values = true|false \define@boolkey[ct]{cthesis}{sansserif}[true]{} \setkeys[ct]{cthesis}{sansserif=false} % OPTION hangfigurecaption % --> values = true|false \define@boolkey[ct]{cthesis}{hangfigurecaption}[true]{} \setkeys[ct]{cthesis}{hangfigurecaption=false} % OPTION hangsection % --> values = true|false \define@boolkey[ct]{cthesis}{hangsection}[true]{} \setkeys[ct]{cthesis}{hangsection=true} % OPTION hangsubsection % --> values = true|false \define@boolkey[ct]{cthesis}{hangsubsection}[true]{} \setkeys[ct]{cthesis}{hangsubsection=true} % OPTION figuresep % --> values = none|colon|period|space|quad|endash \define@choicekey*[ct]{cthesis}{figuresep}{none,colon,period,space,quad,newline,endash}[endash]{\def\cthesis@figuresep{#1}} \setkeys[ct]{cthesis}{figuresep=endash} % OPTION colorize % --> values = full|reduced|bw \define@choicekey*[ct]{cthesis}{colorize}[\val\colorizenr]{full,reduced,bw}[full]{\def\cthesis@colorize{\colorizenr}} \setkeys[ct]{cthesis}{colorize=full} % OPTION colortheme % --> values = bluemagenta|bluegreen \define@choicekey*[ct]{cthesis}{colortheme}[\val\themenr]{bluemagenta,bluegreen}[bluemagenta]{\def\cthesis@colortheme{\themenr}} \setkeys[ct]{cthesis}{colortheme=bluemagenta} % OPTION bibsys % --> values = biber|bibtex \define@choicekey*[ct]{cthesis}{bibsys}[\val\bibsysnr]{biber,bibtex}[bibtex]{\def\cthesis@bibsys{#1}} \setkeys[ct]{cthesis}{bibsys=bibtex} % OPTION bibfile % --> values = file name of your bibtex file \define@key[ct]{cthesis}{bibfile}[bib-refs]{\def\cthesis@bibfile{#1}} \setkeys[ct]{cthesis}{bibfile=bib-refs} % OPTION bibstyle % --> values = alphabetic|numeric|authoryear \define@choicekey*[ct]{cthesis}{bibstyle}[\val\bibstylenr]{alphabetic,numeric,authoryear}[alphabetic]{\def\cthesis@bibstyle{#1}} \setkeys[ct]{cthesis}{bibstyle=alphabetic} \DeclareOptionX*{ \PackageWarning{cleanthesis}{Unknown option ‘\CurrentOption’}% } \ProcessOptionsX[ct] % ************************************************** % Color Definitions % ************************************************** % % -- defines color themes and color commands % % % The xcolor package enables us to create/handle/name different colors \RequirePackage[dvipsnames]{xcolor} % updates all colors regarding the defined main and accessory % color, as well as the defined colorize mode (full, reduced, bw) \long\def\ct@cthesis@updatecolors{% % sets all colors (like colorize == full) % -- footer colors \colorlet{ctcolorfooterpage}{ctcolorblack} \colorlet{ctcolorfooterline}{ctcolormain} \colorlet{ctcolorfootermark}{ctcolorblack} \colorlet{ctcolorfootertitle}{ctcolormain} % -- sectioning colors \colorlet{ctcolortitle}{ctcolormain} \colorlet{ctcolorpartnum}{ctcolormain} \colorlet{ctcolorpartline}{ctcolorblack} \colorlet{ctcolorparttext}{ctcolorblack} \colorlet{ctcolorchapternum}{ctcolormain} \colorlet{ctcolorchapterline}{ctcolormain} \colorlet{ctcolorsection}{ctcolormain} \colorlet{ctcolorsubsection}{ctcolormain} \colorlet{ctcolorparagraph}{ctcolorblack} % --> text colors \colorlet{ctcolorfloatlabel}{ctcoloraccessory} \colorlet{ctcolorlistlabel}{ctcolormain} \ifcase\cthesis@colorize % case = 0 (colorize == full) % do nothing \or % case = 1 (colorize == reduced) % --> footer colors \colorlet{ctcolorfooterline}{ctcolorgray} \colorlet{ctcolorfootertitle}{ctcolorgray} % --> sectioning colors \colorlet{ctcolorsubsection}{ctcolorblack} \colorlet{ctcolorpartnum}{ctcolorblack} % --> text colors \colorlet{ctcolorlistlabel}{ctcolorblack} \or % case = 2 (colorize == bw) % --> footer colors \colorlet{ctcolorfooterline}{ctcolorgray} \colorlet{ctcolorfootertitle}{ctcolorgray} % --> sectioning colors \colorlet{ctcolortitle}{ctcolorblack} \colorlet{ctcolorpartnum}{ctcolorblack} \colorlet{ctcolorchapternum}{ctcolorblack} \colorlet{ctcolorchapterline}{ctcolorblack} \colorlet{ctcolorsection}{ctcolorblack} \colorlet{ctcolorsubsection}{ctcolorblack} % --> text colors \colorlet{ctcolorfloatlabel}{ctcolorblack} \colorlet{ctcolorlistlabel}{ctcolorblack} \else \fi } % sets the main and accessory color for the document \def\cthesissetcolor#1#2#3{% \definecolor{ctcolormain}{#1}{#2}% \definecolor{ctcoloraccessory}{#1}{#3}% \ct@cthesis@updatecolors% } % sets the blue-magenta color theme (blue/magenta) \def\cthesissetcolorbluemagenta{% \cthesissetcolor{cmyk}{1, .50, .10, .01}{.18, .98, .18, 0}% } % sets the blue-green color theme (blue/green) \def\cthesissetcolorbluegreen{% \cthesissetcolor{cmyk}{.61, .47, .03, 0}{.48, .05, .91, 0}% } % defines general colors \definecolor{ctcolorblack}{gray}{0} \definecolor{ctcolorgray}{gray}{.5} \definecolor{ctcolorgraylight}{gray}{.8} % sets the color theme regarding the given package option colortheme \ifcase\cthesis@colortheme % case 0 (colortheme == bluemagenta) \cthesissetcolorbluemagenta \or % case 1 (colortheme == bluegreen) \cthesissetcolorbluegreen \else % all other cases \cthesissetcolorbluemagenta \fi % ************************************************** % Font Definitions (see http://www.tug.dk/FontCatalogue/) % ************************************************** \RequirePackage[T1]{fontenc} % font types and character verification %\ifthenelse{\boolean{@sansserif}}% \ifct@cthesis@sansserif % {% % Using sans-serif fonts % %\RequirePackage{helvet} % Font: Helvetica %\RequirePackage{nimbus} % Font: Nimbus Sans, a clone of the Helvetica \RequirePackage{tgheros} % Font: TEX Gyre Heros %\RequirePackage{libertine} % Font: Biolinum, the standard sans serif typeface with the Libertine package %\RequirePackage[scaled]{berasans} % Font: Bera Sans, a a version of Bitstream Vera Sans slightly enhanced \renewcommand*\familydefault{\sfdefault}% % }{% \else % Using serif fonts % \RequirePackage{lmodern} % font set: Latin Modern \RequirePackage{charter} % font set: Charter %\RequirePackage{fourier} % font set: (basically improved utopia) % } \fi % ************************************************** % Load Packages % ************************************************** \RequirePackage{fixltx2e} % packages provides fixes to LaTeX2e \RequirePackage{microtype} % typographic tuning \RequirePackage{setspace} % for line spacing, e.g. \onehalfspacing \RequirePackage[]{graphicx} % graphics import features \RequirePackage{fancyhdr} % for header and footer modifications \RequirePackage{enumitem} % for simple list modifications \RequirePackage{blindtext} % package for blind text \RequirePackage{textcomp} % different symbols \RequirePackage{hyperref} % interactive link inside the document % \RequirePackage[ % modify figure and table captions font={small}, % - small font size labelfont={bf,sf,color=ctcolorfloatlabel},% - label in bold, sans-serif and magenta labelsep=\cthesis@figuresep, % - separator: none, colon, period, space, quad, newline, endash singlelinecheck=false % - no centered single-lined captions ]{caption}[2008/08/24] %\ifthenelse{\boolean{@figurecaptionoutside}}% \ifct@cthesis@hangfigurecaption % {% \DeclareCaptionFormat{llap}{\llap{#1#2}#3\par}% \captionsetup{format=llap,labelsep=quad,singlelinecheck=false}% % }{} \fi % \RequirePackage[ % page layout modifications paper=a4paper, % - use A4 paper size %scale={0.86,0.94}, % - total body size (h,v) %scale={0.86,0.94}, % - total body size (h,v) nohead, % - no header includefoot, % - include footer space includemp, % - include side note space bindingoffset=0.5cm, % - binding correction top=2.25cm, % - total body: top margin left=3.75cm, % - total body: left margin (odd pages) right=0.75cm, % - total body: right margin (odd pages) bottom=1.5cm, % - total body: bottom margin marginparwidth=1.75cm, % - width for side note marginparsep=10pt, % - space between notes and body text (content) footskip=2cm, % - footer skip size ]{geometry} % \RequirePackage[ % advanced quotes strict=true, % - warning are errors now style=german % - german quotes ]{csquotes} % \RequirePackage[ % use biblatex for bibliography backend=\cthesis@bibsys, % - use biber backend (bibtex replacement) or bibtex bibencoding=utf8, % - use auto file encode style=\cthesis@bibstyle, % - use alphabetic (or numeric) bib style natbib=true, % - allow natbib commands hyperref=true, % - activate hyperref support backref=true, % - activate backrefs isbn=false, % - don't show isbn tags url=false, % - don't show url tags doi=false, % - don't show doi tags urldate=long, % - display type for dates maxnames=3,% minnames=1,% maxbibnames=5,% minbibnames=3,% maxcitenames=2,% mincitenames=1% ]{biblatex} \bibliography{\cthesis@bibfile} \DefineBibliographyStrings{ngerman}{% andothers = {{et\,al\adddot}}, % 'et al.' instead of 'u.a.' backrefpage = {{zitiert auf Seite}},% backrefpages = {{zitiert auf den Seiten}},% } % ************************************************** % Text Format % ************************************************** \setstretch{1.2} % value for line spacing, use \setstretch{} or \singlespacing or \onehalfspacing or \doublespacing \setlength{\parindent}{0em} % value for paragraph indentation \clubpenalty = 10000 % prevent single lines at the beginning of a paragraph (Schusterjungen) \widowpenalty = 10000 % prevent single lines at the end of a paragraph (Hurenkinder) \displaywidowpenalty = 10000 % % ************************************************** % List Definitions % ************************************************** \newenvironment{my_list}% {\begin{enumerate}% \setlength{\itemsep}{1pt}% \setlength{\parskip}{0pt}% \setlength{\parsep}{0pt}% }% {\end{enumerate}} % \newenvironment{my_list_num} {\begin{enumerate}[topsep=-5pt,partopsep=0pt,parsep=2pt,itemsep=3pt]} {\end{enumerate}}% \newenvironment{my_list_item} {\begin{itemize}[topsep=-5pt,partopsep=0pt,parsep=2pt,itemsep=3pt]} {\end{itemize}}% \newenvironment{ct_version_list} {\begin{itemize}[topsep=-5pt,partopsep=0pt,parsep=2pt,itemsep=3pt]} {\end{itemize}}% \newenvironment{ct_version_list_sub} {\begin{itemize}[topsep=-0pt,partopsep=0pt,parsep=0pt,itemsep=0pt]} {\end{itemize}}% \renewcommand{\descriptionlabel}[1]{% \hspace*{\labelsep}% \color{ctcolorlistlabel}% \tgherosfont\textbf{#1}% } \newenvironment{my_list_desc} {\begin{description}[% style=multiline,% topsep=-5pt,% leftmargin=3cm,% partopsep=0pt,% parsep=2pt,% itemsep=3pt% ]} {\end{description}}% % ************************************************** % Header and Footer % ************************************************** \pagestyle{fancy} \renewcommand{\chaptermark}[1]{% \markboth{% \footnotesize% {\color{ctcolorfootermark}\textbf{\chaptername\ \thechapter}}% \quad% {\color{ctcolorfootertitle}#1}% }{}% } \renewcommand{\sectionmark}[1]{% \markright{% \footnotesize% {\color{ctcolorfootermark}\textbf{\thesection}}% \quad% {\color{ctcolorfootertitle}#1}% }% } % \fancypagestyle{plain}{% \fancyhf{} \fancyfootoffset[OR]{1.85cm} \fancyfoot[OR]{% {\ }\tgherosfont% {\color{ctcolorfooterline}\rule[-90pt]{1.25pt}{100pt}}% \hspace*{10pt}\begin{minipage}[b]{1.5cm}% \color{ctcolorfooterpage}\normalsize\textbf{\thepage}% \end{minipage}% } \fancyfootoffset[EL]{1.85cm} \fancyfoot[EL]{% \tgherosfont% \begin{minipage}[b]{1.5cm}% \raggedleft\color{ctcolorfooterpage}\normalsize\textbf{\thepage}% \end{minipage}% \hspace*{10pt}{\color{ctcolorfooterline}\rule[-90pt]{1.25pt}{100pt}}% } \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} } % \fancypagestyle{maincontentstyle}{% \pagestyle{plain} \fancyhf{} \fancyfootoffset[OR]{1.85cm} \fancyfoot[OR]{% {\ }\tgherosfont\footnotesize% \rightmark% \hspace*{0.75cm}{\color{ctcolorfooterline}\rule[-90pt]{1.25pt}{100pt}}% \hspace*{10pt}\begin{minipage}[b]{1.5cm}% \color{ctcolorfooterpage}\normalsize\textbf{\thepage}% \end{minipage}% } \fancyfootoffset[EL]{1.85cm} \fancyfoot[EL]{% \tgherosfont\footnotesize% \begin{minipage}[b]{1.5cm}% \raggedleft\color{ctcolorfooterpage}\normalsize\textbf{\thepage}% \end{minipage}% \footnotesize% \hspace*{10pt}{\color{ctcolorfooterline}\rule[-90pt]{1.25pt}{100pt}}% \hspace*{0.75cm}\leftmark% } } % ************************************************** % New Commands % ************************************************** % TODO command \definecolor{color_todo}{rgb}{.6,.8,.2} \newcommand{\TODO}[1]{{\color{color_todo}\textbf{[TODO #1]}}} % % % ref commands, e.g. for images, tables and text labels % -------------------------------------------------- % RESULT = (siehe Tab. 12.4) \newcommand{\tabref}[1]{(siehe Tab.~\ref{#1})} % % RESULT = (siehe Tab. 12.4) \newcommand{\tableref}[1]{(siehe Tab.~\ref{#1} Seite~\pageref{#1})} % % -------------------------------------------------- % RESULT = (siehe 3.4) \newcommand{\tref}[1]{(siehe \ref{#1})} % % RESULT = Abschnitt 3.4 \newcommand{\treft}[1]{Abschnitt~\ref{#1}} % % RESULT = (siehe 3.4, Seite 12) \newcommand{\textref}[1]{(siehe \ref{#1}, Seite~\pageref{#1})} % % RESULT = Abschnitt 3.4 (siehe Seite 12) \newcommand{\textreft}[1]{Abschnitt~\ref{#1} (siehe Seite~\pageref{#1})} % % -------------------------------------------------- % RESULT = (siehe Abb. 10.4) \newcommand{\fref}[1]{(siehe Abb.~\ref{#1})} % % RESULT = (siehe Abb. 10.4 b) \newcommand{\frefadd}[2]{(siehe Abb.~\ref{#1}~#2)} % % RESULT = (siehe Abb. 10.4, Seite 12) \newcommand{\figref}[1]{(siehe Abb.~\ref{#1}, Seite~\pageref{#1})} % % RESULT = (siehe Abb. 10.4 b, Seite 12) \newcommand{\figrefadd}[2]{(siehe Abb.~\ref{#1}~#2, Seite~\pageref{#1})} % % RESULT = Abbildung 10.4 \newcommand{\figreft}[1]{Abbildung~\ref{#1}} % % RESULT = Abbildung 10.4 b \newcommand{\figrefaddt}[2]{Abbildung~\ref{#1}~#2} % % -------------------------------------------------- % RESULT = (siehe Seite 12) \newcommand{\seepage}[1]{(siehe Seite~\pageref{#1})} % ************************************************** % Sectioning Commands % ************************************************** % \newcommand*{\ctSetFont}[3]{% arg1=#1, arg2=#2, arg3=#3% } % own font definitions \newcommand{\helv}{\fontfamily{phv}\fontsize{9}{11}\selectfont} \newcommand{\book}{\fontfamily{pbk}\fontseries{m}\fontsize{11}{13}\selectfont} \newcommand{\tgherosfont}{\fontfamily{qhv}\selectfont} \newcommand{\thesispartlabelfont}{\color{ctcolorpartnum}\book\fontsize{60}{60}\selectfont} \newcommand{\thesispartfont}{\color{ctcolorparttext}\huge \tgherosfont\selectfont} \newcommand{\thesischapterfont}{\color{ctcolorblack}\huge \fontfamily{phv}\selectfont} %\newcommand{\thesissectionfont}{\color{ctcolormain}\LARGE\bfseries \tgherosfont} \newcommand{\thesissectionfont}{\color{ctcolorsection}\LARGE \tgherosfont} \newcommand{\thesissubsectionfont}{\color{ctcolorsubsection}\Large \tgherosfont} \newcommand{\thesisparagraphfont}{\color{ctcolorparagraph}\tgherosfont\small\bfseries} % % headings \setkomafont{part}{\thesispartfont} % for chapter entries \setkomafont{chapter}{\thesischapterfont} % for chapter entries \setkomafont{section}{\thesissectionfont} % for section entries \setkomafont{subsection}{\thesissubsectionfont} % for section entries \addtokomafont{subsubsection}{\tgherosfont} %\addtokomafont{paragraph}{\tgherosfont} \setkomafont{paragraph}{\thesisparagraphfont} %\setkomafont{subsection}{\large} % for subsection entries % % ************************************************** % Sectioning % ************************************************** % % -- modifications regarding sectioning (structural) commands, % i.e. \part, \chapter, \section, \subsection, \subsubsection, \paragraph % % % The package titlesec enables us to modify (style) the sectioning commands % -- usage: \titlespacing{\command}{left}{before-sep}{after-sep}[right-sep] % -- usage: \titleformat{\command}[shape]{format}{label}{sep}{before}[after] % -- usage: \titleclass{\command}{class} % -- classes: page (single page), top (like chapters), % straight (title in the middle) \RequirePackage{titlesec} % % > formats: \part \titleclass{\part}{top} % <-- display: \assignpagestyle{\part}{empty} % <-- no page numbers/decorations \titleformat{\part}% [display]% {\usekomafont{part}}% {\raggedleft{% {\thesispartlabelfont% \partname\ \thepart\ \quad}% {\color{ctcolorpartline}% \hspace*{-200pt}\rule[20pt]{600pt}{2pt}} }% }% {0em}% {\raggedleft}% [\phantomsection] % % > formats: \chapter % % The following command is used to avoid overlapping % of the chapter headline text, see bug/ticket #1 % Solution adapted according to the comment from "Gonzalo Medina" - Thanks % http://tex.stackexchange.com/questions/165878/width-of-chapter-section-with-titlesec \newcommand\ctformatchapter[1]{\parbox[t]{\dimexpr\textwidth-4em\relax}{\raggedright#1}} % \titleformat{\chapter}[display]% {\usekomafont{chapter}}% {\vspace{-8em}\raggedleft{% {\color{ctcolorchapterline}% \rule[-5pt]{2pt}{5cm}}\quad% {\color{ctcolorchapternum} \fontsize{60}{60}\selectfont\thechapter}% }% }% {-2.1em}% {\ctformatchapter}% [\phantomsection] % % > formats: \section \titlespacing{\section}{0em}{.75em}{.2em}%[0pt] %\ifthenelse{\boolean{@sectionlabeloutside}}% \ifct@cthesis@hangsection % {% \titleformat{\section}[hang]% {\usekomafont{section}}% {\color{ctcolorblack}\thesection\hspace*{10pt}}% {0pt}% {\raggedright}% [\phantomsection] % }{% \else \titleformat{\section}[block]% {\usekomafont{section}}% {\color{ctcolorblack}\thesection\hspace*{10pt}}% {0pt}% {\raggedright}% [\phantomsection] % } \fi % % > formats: \subsection \titlespacing{\subsection}{0em}{.5em}{0em}%[0pt] %\ifthenelse{\boolean{@subsectionlabeloutside}}% \ifct@cthesis@hangsubsection % {% \titleformat{\subsection}[hang]% {\usekomafont{subsection}}% {\color{ctcolorblack}\thesubsection\hspace*{10pt}}% {0pt}% {\raggedright}% [\phantomsection] % }{% \else \titleformat{\subsection}[block]% {\usekomafont{subsection}}% {\color{ctcolorblack}\thesubsection\hspace*{10pt}}% {0pt}% {\raggedright}% [\phantomsection] % } \fi % % > formats: \paragraph \titlespacing{\paragraph}{0pt}{\parsep}{1em}%[0pt] % \titleformat{\paragraph}[runin]% % {\usekomafont{paragraph}}% % {}% % {}% % {}% % [] % % % ************************************************** % ToC, LoF, LoT % ************************************************** % % -- modifications regarding the table of contents, % the list of figures and the list of tables % % % The tocloft package enables us to control the typographic design of the % table of contents, list of figures and list of tables \RequirePackage{tocloft} % % > adjusts the indention for figure and table entries (lof and lot) % -- \cftsetindents{entry}{indent}{numwidth} sets the entry's indent to % the length indent and its numwidth to the length numwidth \cftsetindents{figure}{0em}{3em} \cftsetindents{table}{0em}{3em} % % % % ************************************************** % Mishmash % ************************************************** % % Clean chapter quotations \newcommand{\hugequote}{% {\book\fontsize{75}{80}\selectfont% \hspace*{-.475em}\color{ctcolorgraylight}% \textit{\glqq}% \vskip -.26em}% } \newcommand{\cleanchapterquote}[3]{% \begin{minipage}{.865\textwidth}% \begin{flushright} \begin{minipage}{.65\textwidth}% \begin{flushleft} {\hugequote}\textit{#1} \end{flushleft} \begin{flushright} --- \textbf{#2} \\ #3 \end{flushright} \end{minipage}% \end{flushright} \end{minipage}% \bigskip } % % Clean Quotation environment \newenvironment{thesis_quotation}% {% \begin{minipage}{.865\textwidth}% \begin{flushright} \begin{minipage}{.95\textwidth}% }% {% \end{minipage}% \end{flushright} \end{minipage}% }% % % Clean signs around word origins in definitions %\newcommand{\cthesisorigin}[1]{\textsf{\textlangle}#1\textsf{\textrangle}}