Skip to content
Snippets Groups Projects
HsH-classes.dtx 23.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jan Wille's avatar
    Jan Wille committed
    % \iffalse meta-comment
    %
    % Copyright (C) 2020 by Jan Wille <mail@janwille.de>
    % -------------------------------------------------------
    %
    % This file 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 2021-01-01 or later.
    %
    % \fi
    %
    %<*article|report|standalone>
    
    Jan Wille's avatar
    Jan Wille committed
    \typeout{Adapted from KOMA script for use in Hochschule Hannover <2023-08-08> Jan Wille}
    
    Jan Wille's avatar
    Jan Wille committed
    \NeedsTeXFormat{LaTeX2e}
    %
    %<article>\newcommand{\myClassName}{HsH-article}
    %<report>\newcommand{\myClassName}{HsH-report}
    %<standalone>\newcommand{\myClassName}{HsH-standalone}
    
    Jan Wille's avatar
    Jan Wille committed
    \ProvidesClass{\myClassName}[2023/08/08 v2.0 HsH-Class based on KOMA]
    
    Jan Wille's avatar
    Jan Wille committed
    
    %% commands for HsH-logo
    \newcommand{\HsHlogoPath}{HSH-Logo.pdf}
    \newcommand{\HsHlogoPage}{1}
    \newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}}
    \newif\if@german%
    
    Jan Wille's avatar
    Jan Wille committed
    %<article|report>\newif\if@todos\@todosfalse%
    
    Jan Wille's avatar
    Jan Wille committed
    
    %% document options -------------------------------------------------------------------------------
    
    \DeclareOption{german}{
    
    Jan Wille's avatar
    Jan Wille committed
      \@germantrue
    }
    
    \DeclareOption{ngerman}{
    
    Jan Wille's avatar
    Jan Wille committed
      \@germantrue
    }
    
    \DeclareOption{english}{
    
    Jan Wille's avatar
    Jan Wille committed
      \@germanfalse
    }
    
    \DeclareOption{f1}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\HsHlogoPage}{2}
    }
    
    \DeclareOption{f2}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\HsHlogoPage}{3}
    }
    
    \DeclareOption{f3}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\HsHlogoPage}{4}
    }
    
    \DeclareOption{f4}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\HsHlogoPage}{5}
    }
    
    \DeclareOption{f5}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\HsHlogoPage}{6}
    }
    
    \DeclareOption{sans}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\familydefault}{\sfdefault}
    }
    
    \DeclareOption{roman}{
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\familydefault}{\rmdefault}
    }
    
    Jan Wille's avatar
    Jan Wille committed
    %<*article|report>
    \DeclareOption{todos}{
      \@todostrue
    }
    %</article|report>
    
    Jan Wille's avatar
    Jan Wille committed
    %<article>\DeclareOption*{\expandafter\PassOptionsToClass\expandafter{\CurrentOption}{scrartcl}}
    %<report>\DeclareOption*{\expandafter\PassOptionsToClass\expandafter{\CurrentOption}{scrreprt}}
    %<standalone>\DeclareOption*{\expandafter\PassOptionsToClass\expandafter{\CurrentOption}{standalone}}
    
    Jan Wille's avatar
    Jan Wille committed
    %
    
    %<article|report>\ExecuteOptions{fontsize=11pt,a4paper,ngerman,sans} % default options
    %<standalone>\ExecuteOptions{margin=0.25cm,fontsize=11pt,a4paper,ngerman,sans} % default options
    
    Jan Wille's avatar
    Jan Wille committed
    \ProcessOptions\relax
    %% Load KOMA class
    %<article>\LoadClass{scrartcl}
    %<report>\LoadClass{scrreprt}
    %<standalone>\LoadClass[multi=tikzpicture,multi=circuitikz]{standalone}
    %<article|report>\KOMAoption{toc}{bibliography,listof}
    
    %% package loading and config ---------------------------------------------------------------------
    %
    % inputencoding, utf8 recomendet
    \PassOptionsToPackage{utf8}{inputenc}
    \RequirePackage{inputenc}
    %
    % outputencoding, T1 recomendet
    \PassOptionsToPackage{T1}{fontenc}
    \RequirePackage{fontenc}
    %
    
    % font
    \RequirePackage{lmodern}
    
    Jan Wille's avatar
    Jan Wille committed
    %
    % required for importing images
    \RequirePackage{graphicx}
    %
    % a lot of nice Math
    \RequirePackage{amsmath}
    %
    % german dezimal numbers
    \if@german\RequirePackage{ziffer}\fi
    %
    %<*article|report>
    % required for changing layout
    
    \PassOptionsToPackage{vmargin=5\baselineskip,bindingoffset=0.08\paperwidth,textwidth=0.75\paperwidth}{geometry}
    
    Jan Wille's avatar
    Jan Wille committed
    \if@todos
    
      \PassOptionsToPackage{paperwidth=1.2\paperwidth,left=2cm}{geometry}
    
    Jan Wille's avatar
    Jan Wille committed
    \else
    
      \PassOptionsToPackage{nomarginpar}{geometry}
    
    Jan Wille's avatar
    Jan Wille committed
    \fi
    
    Jan Wille's avatar
    Jan Wille committed
    %
    % language specific localisation
    
    \if@german
      \PassOptionsToPackage{ngerman}{babel}
    \else
      \PassOptionsToPackage{english}{babel}
    \fi
    
    Jan Wille's avatar
    Jan Wille committed
    \RequirePackage{babel}
    %
    % required for header and footer
    \PassOptionsToPackage{headsepline}{scrlayer-scrpage}
    \RequirePackage{scrlayer-scrpage}
    % compatability with listings
    \RequirePackage{scrhack}
    %
    % references and lists are clikable
    \PassOptionsToPackage{hidelinks}{hyperref}
    \RequirePackage{hyperref}
    %
    
    % put anchors at the beginning of floats
    \PassOptionsToPackage{hypcap=true}{caption}
    \RequirePackage{caption}
    %
    
    Jan Wille's avatar
    Jan Wille committed
    % generat bookmarkes
    \RequirePackage{bookmark}
    %
    % quotations
    \PassOptionsToPackage{babel}{csquotes}
    \if@german\PassOptionsToPackage{german=quotes}{csquotes}\fi
    \RequirePackage{csquotes}
    % this makes quotationmarks usable in text:
    \MakeOuterQuote{"}
    %
    
    Jan Wille's avatar
    Jan Wille committed
    % Todonote package
    % already changed the margins with geometry
    \if@todos
      \PassOptionsToPackage{svgnames}{xcolor}
      \PassOptionsToPackage{
        textsize=small,
        figwidth=.6\textwidth
      }{todonotes}
      \RequirePackage{todonotes}
      \setlength{\marginparwidth}{5.2cm}
    \else
        \newcommand{\listoftodos}[1][]{}
        \newcommand{\todo}[2][]{}
        \newcommand{\missingfigure}[2][]{}
    \fi
    %
    
    Jan Wille's avatar
    Jan Wille committed
    % foreach loops
    \RequirePackage{pgffor}
    %
    %</article|report>
    %
    
    %% options for not loaded packages ----------------------------------------------------------------
    
    Jan Wille's avatar
    Jan Wille committed
    %<article|report>\PassOptionsToPackage{backend=biber,style=alphabetic,sorting=nyt}{biblatex}
    
    \PassOptionsToPackage{free-standing-units}{siunitx}
    
    Jan Wille's avatar
    Jan Wille committed
    \PassOptionsToPackage{european,EFvoltages,straightvoltages,betterproportions}{circuitikz}
    
    %
    
    Jan Wille's avatar
    Jan Wille committed
    %% title matters ----------------------------------------------------------------------------------
    %
    
    % redefine title to accept a short tile (like chapter, etc..)
    \newcommand*{\@shorttitle}{\@empty}
    \renewcommand{\title}[2][]{
      \gdef\@title{#2}
      \gdef\@shorttitle{#1}
    }
    
    \newcommand*{\@matrikelnr}{}
    \newcommand{\matrikelnr}[1]{\gdef\@matrikelnr{#1}}
    \newcommand*{\@professor}{}
    \newcommand{\professor}[1]{\gdef\@professor{#1}}
    \newcommand*{\@keywords}{}
    \newcommand{\keywords}[1]{\gdef\@keywords{#1}}
    
    Jan Wille's avatar
    Jan Wille committed
    \let\@author\@empty
    \let\@keywords\@empty
    
    
    Jan Wille's avatar
    Jan Wille committed
    %
    %% typesetting indexes upright or standart
    \def\subinrm#1{\sb{\mathrm{#1}}}
    {\catcode`\_=13 \global\let_=\subinrm}
    % the toggle for upright subscripts
    \newcommand\upsubscripts{\catcode`\_=12 }
    % the toggle for italic subscripts
    \newcommand\normalsubscripts{\catcode`\_=8 }
    % setting upright as default
    \upsubscripts
    
    %
    %<*article|report>
    %% header and footer
    
    Jan Wille's avatar
    Jan Wille committed
    % first clear the default styles
    \clearpairofpagestyles
    % than we set the pagenumber for the plain and normal style
    
    Jan Wille's avatar
    Jan Wille committed
    %
    % now we define our custom header style
    
    \newpagestyle{HsHheadings}{
    
    % twosided left page header
    
        \parbox[b]{\sls@headwidth}{
          \LaTeXraggedright
          \ifx\@shorttitle\@empty\@title\else\@shorttitle\fi
        }%
      }
    
    % twosided right page header
      {
        \parbox[b]{\sls@headwidth}{
          \LaTeXraggedleft
          \leftmark
        }%
      }
    % onesided page header
    
      {
        \parbox[b]{.45\sls@headwidth}{
          \LaTeXraggedright
          \ifx\@shorttitle\@empty\@title\else\@shorttitle\fi
        }%
    
        \parbox[b]{.45\sls@headwidth}{
          \LaTeXraggedleft
          \headmark
        }%
    
      }
      (\textwidth,.1pt)
    }{
      {\pagemark}
      {\hfill\pagemark}
      {\hfill\pagemark}
    }
    \pagestyle{HsHheadings}
    
    Jan Wille's avatar
    Jan Wille committed
    %<article>\automark{section}
    
    %<report>\automark{chapter}
    
    Jan Wille's avatar
    Jan Wille committed
    % Chaptertitles get same header/footer as everything:
    
    %<report>\renewcommand*{\chapterpagestyle}{HsHheadings}
    
    Jan Wille's avatar
    Jan Wille committed
    
    %% floats
    % positioning of floats
    \renewcommand{\fps@figure}{h!t}
    \renewcommand{\fps@table}{h!t}
    %
    % check if KOMA is used
    \ifx\KOMAScriptVersion\undefined\else
    % center all floats
      \g@addto@macro\@floatboxreset\centering
    % center all captions
    
      \setcapwidth{0.8\textwidth}
    
    Jan Wille's avatar
    Jan Wille committed
    \fi
    % abbreviations for names:
    \if@german
      \renewcaptionname{ngerman}{\figurename}{Abb.}
      \renewcaptionname{ngerman}{\tablename}{Tab.}
      \renewcaptionname{ngerman}{\abstractname}{Abstract}
    \else
      \renewcaptionname{english}{\figurename}{Fig.}
      \renewcaptionname{english}{\tablename}{Tab.}
    \fi
    
    %% styling for itemize
    \renewcommand{\labelitemi}{$\bullet$}
    \renewcommand{\labelitemii}{$\circ$}
    \renewcommand{\labelitemiii}{$-$}
    \renewcommand{\labelitemiv}{$\cdot$}
    
    %% do stuff
    
    % indentation of new paragraphs
    \setlength\parindent{0pt}
    % all stuff is pushed to the top of the page ingenerall
    
    Jan Wille's avatar
    Jan Wille committed
    \raggedbottom
    
    % rulers when using draft disabled
    \renewcommand{\layercontentsmeasure}{\@empty}
    
    %<*report>
    % these commands are only defined for the book class, but they also make sens for the report class:
    %% define easy shorthands to switch pagenumbering
    \newif\if@mainmatter\@mainmattertrue
    \newcommand*\frontmatter{%
      \if@twoside\cleardoubleoddpage\else\clearpage\fi
      \@mainmatterfalse\pagenumbering{Roman}%
    }
    \newcommand*\mainmatter{%
      \if@twoside\cleardoubleoddpage\else\clearpage\fi
      \@mainmattertrue\pagenumbering{arabic}%
    }
    \newcommand*\backmatter{%
    
      \if@openright\cleardoubleoddpage\else\clearpage\fi
      \@mainmatterfalse\pagenumbering{roman}%
    
    Jan Wille's avatar
    Jan Wille committed
    %% custom commands
    
    % these two comand can convert decimal number into roman numerrals in etheir upper- or lowercase
    
    Jan Wille's avatar
    Jan Wille committed
    \newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}}
    \newcommand{\lowroman}[1]{\romannumeral#1\relax}
    
    Jan Wille's avatar
    Jan Wille committed
    %</article|report>
    %
    %% load config at beginning of document
    \AtBeginDocument{
      \makeatletter
    
    %<!standalone>  \RequirePackage{geometry}
    %<*!standalone>
    
    Jan Wille's avatar
    Jan Wille committed
    % solve some common errors:
      \@ifpackageloaded{biblatex}{
    % solves fontype warning in San-Serif
        \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}}
      }{}
      \@ifpackageloaded{subfigure}{
        \newcommand{\subfigureautorefname}{\figureautorefname}
      }{}
    
    %</!standalone>
    
    Jan Wille's avatar
    Jan Wille committed
      \InputIfFileExists{config.tex}{
        \ClassInfo{\myClassName}{config.tex was found. Using it...}
      }{
        \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.}
      }
      %% provide some usefull commands:
    % Makro for vertical lines around absolute values
      \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}}
      \makeatother
    }
    %
    %<*article|report>
    %% nicer abstract ---------------------------------------------------------------------------------
    
    \renewenvironment{abstract}{
      \quotation
      \setlength\parindent{0pt}
    %<article>  \section*{\abstractname}
    %<article>  \addcontentsline{toc}{section}{\abstractname}
    %<report>  \chapter*{\abstractname}
    %<report>  \addcontentsline{toc}{chapter}{\abstractname}
    
    Jan Wille's avatar
    Jan Wille committed
    }{%
      \ifx\@keywords\@empty\else
    
    %<article>    \vskip 0.5em
    %<report>    \vskip 2em
    
    Jan Wille's avatar
    Jan Wille committed
        \paragraph{\if@german Schlüsselwörter:\else Keywords:\fi}
        \@keywords
      \fi
      \endquotation
    }
    %% decloration of Authorship ----------------------------------------------------------------------
    \newif\if@oneAuthor \@oneAuthortrue
    \if@german
      \setlocalecaption{ngerman}{dATitle}{Selbstständigkeitserklärung}
      \setlocalecaption{ngerman}{dAPronomen}{\if@oneAuthor ich\else wir\fi}
      \setlocalecaption{ngerman}{dAPluralendung}{\if@oneAuthor\else n\fi}
      \setlocalecaption{ngerman}{dAGenitiv}{\if@oneAuthor mir\else uns\fi}
      \setlocalecaption{ngerman}{dAText}{
        Hiermit bestätige\dAPluralendungname\space\dAPronomenname, dass die folgende Arbeit eigenständig von \dAGenitivname\space allein erstellt
        und unter Berücksichtigung der zur Verfügung gestellten Aufgabenstellung sowie dem Arbeitsmaterial unter Angabe aller verwendeten Quellen
        erarbeitet wurde. Die Regelungen und Konsequenzen eines Plagiats, inklusive disziplinarischer Maßnahmen, sind \dAGenitivname\space
        bewusst. Insbesondere wurden alle Zitate und gedanklichen Übernahmen als solche kenntlich gemacht.
      }
    \else
      \setlocalecaption{english}{dATitle}{Declaration of Authorship}
      \setlocalecaption{english}{dAPronomen}{\if@oneAuthor I\else we\fi}
      \setlocalecaption{english}{dAPronomenf}{\if@oneAuthor I\else We\fi}
      \setlocalecaption{english}{dAPronomverb}{\if@oneAuthor am\else are\fi}
      \setlocalecaption{english}{dAGenitiv}{\if@oneAuthor my\else our\fi}
      \setlocalecaption{english}{dAText}{
        \dAPronomenfname\space hereby certify that the work \dAPronomenname\space\dAPronomverbname\space submitting is entirely of
        \dAGenitivname\space own making except where otherwise indicated. \dAPronomenfname\space\dAPronomverbname\space aware of regulations
        concerning plagiarism, including disciplinary actions that may result from it. Any use of the works of any other author, in any form, is
        properly acknowledged at their point of use.
      }
    \fi
    
    \newcommand{\declarationAuthorship}[1][b]{
      \let\@param#1
    
    Jan Wille's avatar
    Jan Wille committed
      \renewcommand{\thanks}{\sbox0}
      \foreach \x [count=\i] in \@author{\ifnum\i>1\global\@oneAuthorfalse\fi}
    %
      \thispagestyle{plain}
    
      \if\@param b\vspace*{\fill}\fi
    
    Jan Wille's avatar
    Jan Wille committed
      {\rule{\textwidth}{0.1pt}}
      \vskip 3em
      {\centering\huge\textbf{\dATitlename}\par}
      \vskip 3em
      {\dATextname\par}
    
    % creating a signature line for every author
    
    Jan Wille's avatar
    Jan Wille committed
      {\raggedleft
        \foreach \x in \@author{
          \begin{tabular}[t]{r}
            \\[3em]
            \rule{4cm}{0.4pt}\\
            {\footnotesize\x}
          \end{tabular}
        }
      \par}
    
      \if\@param t\vspace*{\fill}\fi
    
    Jan Wille's avatar
    Jan Wille committed
    }
    %
    %% reconfig Titlepage -----------------------------------------------------------------------------
    \newtoks\@tabtoks
    \newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}}
    \newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}}
    
    % %%\newcommand*\resettabtoks{\global\@tabtoks{}}
    
    Jan Wille's avatar
    Jan Wille committed
    \newcommand*\printtabtoks{\the\@tabtoks}
    \addtokomafont{publishers}{\normalsize}
    %
    %<article>\renewcommand\maketitle[1][c]{
    %<report>\renewcommand\maketitle[1][l]{
      \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
      \else
        \def\and{%
          \end{tabular}
          \hskip 1em \@plus.17fil
          \begin{tabular}[t]{c}%
        }
      \fi
    %<*article>
      \par
      \ifx\@uppertitleback\@empty\else
        \ClassWarning{\KOMAClassName}{%
          non empty \string\uppertitleback\space ignored
          by \string\maketitle\MessageBreak
          in `titlepage=false' mode%
        }
      \fi
      \ifx\@lowertitleback\@empty\else
        \ClassWarning{\KOMAClassName}{%
          non empty \string\lowertitleback\space ignored
          by \string\maketitle\MessageBreak
          in `titlepage=false' mode%
        }
      \fi
    %</article>
    %<report>  \begin{titlepage}
    %<article>  \begingroup
        \let\@param#1
        \ifx\@param\@empty
          \ClassError{\myClassName}{\maketitle\space with empty option}{
            \maketitle[] has been called with an empty parameter, this doesn't work. Use \maketitle instead.
          }
        \fi
    %<*report>
        \if@titlepageiscoverpage
          \edef\titlepage@restore{
            \noexpand\endgroup
            \noexpand\global\noexpand\@colht\the\@colht
            \noexpand\global\noexpand\@colroom\the\@colroom
            \noexpand\global\vsize\the\vsize
            \noexpand\global\noexpand\@titlepageiscoverpagefalse
            \noexpand\let\noexpand\titlepage@restore\noexpand\relax
          }
          \begingroup
          \topmargin=\dimexpr \coverpagetopmargin-1in\relax
          \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
          \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
          \textwidth=\dimexpr
          \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
          \textheight=\dimexpr
          \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
          \headheight=0pt
          \headsep=0pt
          \footskip=\baselineskip
          \@colht=\textheight
          \@colroom=\textheight
          \vsize=\textheight
          \columnwidth=\textwidth
          \hsize=\columnwidth
          \linewidth=\hsize
        \else
          \let\titlepage@restore\relax
        \fi
        \let\footnotesize\small
        \let\footnoterule\relax
        \let\footnote\thanks
    %</report>
    %<article>    \let\titlepage@restore\relax
        \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
        \let\@oldmakefnmark\@makefnmark
        \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}%
    %<article>    \next@tdpage
        \ifx\@extratitle\@empty
    %<article>      \ifx\@frontispiece\@empty\else \mbox{}\fi
    %<*report>
          \ifx\@frontispiece\@empty\else
            \if@twoside\mbox{}\next@tpage\fi
            \noindent\@frontispiece\next@tdpage
          \fi
    %</report>
        \else
    %<article>      \@makeextratitle
    %<*report>
          \noindent\@extratitle
          \ifx\@frontispiece\@empty
          \else
            \next@tpage
            \noindent\@frontispiece
          \fi
          \next@tdpage
    %</report>
        \fi
    %<*article>
        \ifx\@frontispiece\@empty
          \ifx\@extratitle\@empty\else\next@tdpage\fi
        \else
          \next@tpage
          \@makefrontispiece
          \next@tdpage
        \fi
        \global\@topnum=\z@
    %</article>
        \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
        \IfFileExists{\HsHlogoPath}{}{
          \ClassError{\myClassName}{HsH-Logo.pdf not found!}{
            The HsH Logo is necasary for the titlepage! Try putting it next to your source file or use \HsHlogoPath to define the file location
          }
        }
        \vspace*{1cm}
        \begin{minipage}[t]{\textwidth}%
          \ifx\@titlehead\@empty \else
            \usekomafont{titlehead}{\@titlehead}%
          \fi
          \hfill
    % image with referrencepoint in lower left corner:
          \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{\includeHsHlogohere}
        \end{minipage}
        \raisebox{10pt}{\rule{\textwidth}{0.5pt}}
        \null
    %<article>    \vskip 2em
    %<report>    \vfill
        \begingroup
          \if\@param c\centering\fi
          \if\@param r\raggedleft\fi
          \ifx\@subject\@empty\else
            {\usekomafont{subject}{\@subject\par}}
    %<article>        \vskip 1.5em
    %<report>        \vskip 3em
          \fi
          {\usekomafont{title}{\huge\@title\par}}
    %<article>      \vskip .5em
    %<report>      \vskip 1em
          {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}
    %<article|report>      \vskip 4em
          {\ifx\@matrikelnr\@empty
            \if\@author\@empty\else\usekomafont{author}{
              \parbox{\dimexpr\linewidth}{
                \if\@param c\centering\fi
                \if\@param r\raggedleft\fi
                \@author
              }
            }\fi
          \else
            \if\@author\@empty\else
              % sneeky comma needed after \@matrikelnr to deal with single item lists
              \foreach \x [count=\i,evaluate=\i as \y using {{\@matrikelnr,}[\i-1]}] in \@author {\eaddtabtoks{\x & \y\protect\\}}
              \usekomafont{author}{\def\arraystretch{1.2}
    
                \if\@param l\begin{tabular}{@{}l l}\printtabtoks\end{tabular}\fi
    
    Jan Wille's avatar
    Jan Wille committed
                \if\@param c\begin{tabular}{l l}\printtabtoks\end{tabular}\fi
    
                \if\@param r\begin{tabular}{r r@{}}\printtabtoks\end{tabular}\fi
    
    Jan Wille's avatar
    Jan Wille committed
            \fi
          \fi}
    %<article>      \vskip 1em
    %<report>      \vskip 1.5em
          {\usekomafont{date}{\@date\par}}
    %<article>      \vskip 1em
    %<report>      \vskip \z@ \@plus3fill
         {\if\@professor\@empty\else\usekomafont{publishers}{Professor\if@german(in)/Lehrbeauftragte(r)\fi: \@professor}\fi}
    %<*article>
          \ifx\@dedication\@empty\else
            \vskip 2em
            {\usekomafont{dedication}{\@dedication \par}}%
          \fi
    %</article>
          \par
        \endgroup
    %<article>    \vskip 2em
    %<report>    \vskip 3em
    %<article>    \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
        \@thanks\global\let\@thanks\@empty
    %<*report>
        \vfill\null
        \if@twoside
          \@tempswatrue
          \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
          \else
            \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
              \@tempswafalse
            \fi\fi
          \fi
          \if@tempswa
            \next@tpage
            \begin{minipage}[t]{\textwidth}
              \@uppertitleback
            \end{minipage}\par
            \vfill
            \begin{minipage}[b]{\textwidth}
              \@lowertitleback
            \end{minipage}\par
            \@thanks\global\let\@thanks\@empty
          \fi
        \else
          \ifx\@uppertitleback\@empty\else
            \ClassWarning{\KOMAClassName}{%
              non empty \string\uppertitleback\space ignored
              by \string\maketitle\MessageBreak
              in `twoside=false' mode%
            }
          \fi
          \ifx\@lowertitleback\@empty\else
            \ClassWarning{\KOMAClassName}{%
              non empty \string\lowertitleback\space ignored
              by \string\maketitle\MessageBreak
              in `twoside=false' mode%
            }
          \fi
        \fi
        \ifx\@dedication\@empty
        \else
          \next@tdpage\null\vfill
          {\centering\usekomafont{dedication}{\@dedication \par}}%
          \vskip \z@ \@plus3fill
          \@thanks\global\let\@thanks\@empty
          \cleardoubleemptypage
        \fi
        \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
    %</report>
    %<article>  \endgroup
    %<report>  \end{titlepage}
      \setcounter{footnote}{0}
      \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
        \let\thanks\relax
        \let\maketitle\relax
        \let\@maketitle\relax
        \global\let\@thanks\@empty
        \global\let\@author\@empty
        \global\let\@date\@empty
        \global\let\@title\@empty
        \global\let\@subtitle\@empty
        \global\let\@extratitle\@empty
        \global\let\@frontispiece\@empty
        \global\let\@titlehead\@empty
        \global\let\@subject\@empty
        \global\let\@publishers\@empty
        \global\let\@uppertitleback\@empty
        \global\let\@lowertitleback\@empty
        \global\let\@dedication\@empty
        \global\let\@matrikelnr\@empty
        \global\let\@prof\@empty
        \global\let\author\relax
        \global\let\title\relax
        \global\let\extratitle\relax
        \global\let\titlehead\relax
        \global\let\subject\relax
        \global\let\publishers\relax
        \global\let\uppertitleback\relax
        \global\let\lowertitleback\relax
        \global\let\dedication\relax
        \global\let\date\relax
        \global\let\matrikelnr\relax
        \global\let\professor\relax
      \fi
      \global\let\and\relax
    }
    %</article|report>
    
    %</article|report|standalone>
    
    Jan Wille's avatar
    Jan Wille committed
    %
    % Config file -------------------------------------------------------------------------------------
    %<*config>
    %% Meta Data for the PDF file
    \@ifpackageloaded{hyperref}{
      \hypersetup{
        pdfinfo={
          Title={\@title},
          Author={\@author},
          Subject={\@subject},
          Keywords={\@keywords}
        }
      }
    
    Jan Wille's avatar
    Jan Wille committed
    %% configs for optional packages:
    \@ifpackageloaded{biblatex}{
      \ExecuteBibliographyOptions{
        bibwarn=true,
        url=true,
        isbn=false,
      }
    }{}
    
    Jan Wille's avatar
    Jan Wille committed
    \@ifpackageloaded{todonotes}{
      \setuptodonotes{
        backgroundcolor=orange!60!white,
        linecolor=orange,
        bordercolor=white
      }
    }{}
    
    Jan Wille's avatar
    Jan Wille committed
    \@ifpackageloaded{siunitx}{
      \if@german
        \sisetup{output-decimal-marker={,}} % use comma as dezimal
      \fi
      \sisetup{
        tight-spacing=true,
        per-mode=symbol,
        scientific-notation=engineering,
        %exponent-to-prefix, % use this instead of sci-notatio
        round-mode = places, % round numbers
        round-precision = 3, % to 3 places
      }
    }{}
    \@ifpackageloaded{listings}{
    
    Jan Wille's avatar
    Jan Wille committed
      \PassOptionsToPackage{svgnames}{xcolor}
      \RequirePackage{xcolor}
    
      \RequirePackage{lstautogobble}
    
    Jan Wille's avatar
    Jan Wille committed
      \lstset{
        commentstyle=\color{gray},
    
    Jan Wille's avatar
    Jan Wille committed
        keywordstyle=\color{FireBrick}\bfseries,
        stringstyle=\color{DodgerBlue},
    
    Jan Wille's avatar
    Jan Wille committed
        showstringspaces=false,
        basicstyle=\ttfamily,
        tabsize=4,
        literate={Ö}{{\"O}}1{Ä}{{\"A}}1{Ü}{{\"U}}1{ß}{{\ss}}1{ü}{{\"u}}1{ä}{{\"a}}1{ö}{{\"o}}1,
        escapeinside={(*@}{@*)},
    
        autogobble=true,
    
    Jan Wille's avatar
    Jan Wille committed
      }
    }{}
    \@ifpackageloaded{enumitem}{
    
      \RequirePackage{amssymb}
    
    Jan Wille's avatar
    Jan Wille committed
      \newlist{checklist}{itemize}{2}
      \setlist[checklist]{label=$\square$}
    }{}
    \@ifpackageloaded{csvsimple}{
      \csvstyle{every csv}{separator=semicolon} % global seperator for csv files
    }{}
    \@ifpackageloaded{circuitikz}{
      \ctikzset{
        font=\footnotesize,
        bipole annotation style/.style={font=\tiny ,inner sep=1pt},
      }
    }{}
    \@ifpackageloaded{pgfplots}{
      \usepgfplotslibrary{fillbetween} % mark areas under or between graphs
      \usetikzlibrary{patterns} % for using pattern in plots
      \if@german
        \pgfplotsset{/pgf/number format/use comma}
      \fi
      \pgfplotsset{
        compat=1.16,
        /pgf/number format/read comma as period,
        every tick label/.append style={font=\tiny},
        every axis legend/.append style={font=\footnotesize},
        MyPlots/.style = {		% Style for all plots
          width=.6\textwidth,
          grid=major,
          grid style={dashed,gray!50},
          legend pos=outer north east,
          FM1/.style = {blue, thick, mark=x, mark size=1.5,samples=100},  	% Format 1
          FM2/.style = {orange, thick, mark=*, mark size=1,samples=100}, 		% Format 2
          FM3/.style = {green, thick, mark=square*, mark size=1,samples=100}, % Format 3
          FM4/.style = {red, thick, mark=diamond*, mark size=1,samples=100}, 	% Format 4
          FM5/.style = {pink, thick, mark=triangel*, mark size=1,samples=100},% Format 5
          errBars/.style = {error bars/.cd, y dir=both, y explicit, % ermöglicht Fehlerbalken
                  error mark options={mark size=1pt,rotate=90}},
        }
      }
    }{}
    \@ifpackageloaded{pgfplotstable}{
      \pgfplotstableset{
        col sep=semicolon, % global seperator for csv files
      }
    }{}
    %</config>
    %
    % \Finale
    \endinput