\ProvidesClass{sasbase}[2017/11/6 SaS base class] \LoadClass[twocolumn]{article} \RequirePackage[utf8]{inputenc} \RequirePackage[shortlabels]{enumitem} \RequirePackage{environ} \RequirePackage{geometry} \RequirePackage{booktabs} \RequirePackage{mathptmx} \RequirePackage[12pt]{moresize} \RequirePackage{array} \RequirePackage{titlesec} \RequirePackage[titles]{tocloft} \RequirePackage[rm={lining,proportional},sf={lining, proportional},tt={lining, proportional, variable}]{cfr-lm} \RequirePackage[T1]{fontenc} \RequirePackage{indentfirst} \RequirePackage{fancyhdr} \RequirePackage{bm} \RequirePackage{roboto} \RequirePackage{varwidth} % SET PAGE GEOMETRY \geometry{ left=13mm, right=13mm, top=8mm, bottom=8mm, includeheadfoot} % ENABLE FANCY HEADERS \pagestyle{fancy} \fancyhf{} % DISABLE HEADER RULE \renewcommand{\headrulewidth}{0pt} % ADD PAGE NUMBER TO TOP RIGHT / LEFT (ODD / EVEN) \fancyhead[R]{\sffamily\bfseries\large{\textbf{\thepage}} \ifodd\value{page}\else\hfill\fi} % SET COLUMN GAP OF TWOCOLUMN LAYOUT \setlength{\columnsep}{6mm} % SET PLACE COMMAND \makeatletter \newcommand{\place}[1]{ \def\@place{#1} } \makeatother % SET DATE COMMAND (COLLIDES WITH BUILTIN) \makeatletter \newcommand{\datum}[1]{ \def\@datum{#1} } \makeatother % SET NUMBER COMMAND (COLLIDES WITH BUILTIN) \makeatletter \newcommand{\edition}[1]{ \def\@edition{#1} } \makeatother % HELPER TO EXTRACT YEAR FROM DATE \newcommand*\TheLastWord[1]{\expandafter\xreverseit\expandafter{\expandafter}#1 \relax} \def\xreverseit#1#2 #3{% \ifx\relax#3% #2% \expandafter\xthree \fi \xreverseit{#1 #2}#3% } \def\xthree#1#2#3{} % ------------------ % SECTION FORMATTING % ------------------ \titleformat {\section} {\centering\normalfont\bf\large\ostyle} {\thesection} {1em} {} \titleformat {\subsection} {\centering\normalfont\bf} {\thesubsection} {1em} {} \titleformat {\subsubsection} {\normalfont\bf} {\thesubsubsection} {1em} {} % ----------------- % TABLE OF CONTENTS % ----------------- % DISABLE BOLD \renewcommand{\cftsecfont}{\normalfont\ostyle} % ONLY SHOW SECTIONS IN TOC \setcounter{tocdepth}{1} % HIDE NUMBERING OF SECTIONS \setcounter{secnumdepth}{0} % DEFINE SPACING BETWEEN ITEMS \setlength{\cftbeforesecskip}{1mm} \setlength{\cftbeforetoctitleskip}{0mm} \setlength{\cftaftertoctitleskip}{5cm} % SET DOTS FOR SECTIONS \renewcommand{\cftsecdotsep}{\cftdotsep} % Redefinition of ToC command to remove heading \makeatletter \renewcommand\tableofcontents{% \vspace{-4mm} \@starttoc{toc} } \makeatother % CUSTOM TOC COMMAND \newcommand{\mycontents}{% \vspace{4mm} \ostyle \begin{tabular}{lp{.9\textwidth}} \textbf{Inhalt:} & \tableofcontents \\ \end{tabular} } % --------------------------------------- % TITLE (THIS IS WHERE THE MAGIC HAPPENS) % --------------------------------------- % SET WIDTH OF RULES IN TABULAR \setlength{\arrayrulewidth}{.3mm} % SET CELL HEIGHT %\renewcommand{\arraystretch}{2.5} % DEFINE OWN COLUMN TYPE \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} \newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}} \makeatletter \def\@maketitle{ \vspace*{-10mm} \begin{center} \textbf{\ostyle{\HUGE{\@title}}} \end{center} \vspace{5mm} \begin{tabular}{M{\dimexpr.1\textwidth-2\tabcolsep}|M{\dimexpr.8\textwidth-2\tabcolsep}|M{\dimexpr.1\textwidth-2\tabcolsep}@{}m{0pt}@{}} \hline \large \ostyle{\TheLastWord{\@datum}} & \large \ostyle{Ausgegeben in {\@place} am {\@datum}} & \large \ostyle{Nr. {\@edition}} &\\[5mm] \hline \multicolumn{3}{m{\dimexpr\textwidth-2\tabcolsep}}{\mycontents} \\ \hline \end{tabular} \vspace{10mm} %\thispagestyle{fancy} } \makeatother \newcommand{\mytitle}{ \maketitle \thispagestyle{fancy} } % --------------------------- % DEFINITION OF USEFUL MACROS % --------------------------- % OPTION TO ENABLE SQUARE BRACKETS OR ADDITIONS TO THE ARTICLES NAME \newif\ifsquare\squarefalse \newcommand{\squarestyle}{\squaretrue} \newcommand{\parensstyle}{\squarefalse} % ARTICLE COUNTER \newcounter{articleno} \setcounter{articleno}{1} \makeatletter \newenvironment{article}[1][nil]{ \begin{@paraorarticle}{#1}{Artikel} } { \end{@paraorarticle} } \makeatother \makeatletter \newenvironment{lawparagraph}[1][nil]{ \begin{@paraorarticle}{#1}{§} } { \end{@paraorarticle} } \makeatother \makeatletter % A GENERAL ARTICLE, PARAGRAPH, etc. ENVIRONMENT \newenvironment{@paraorarticle}[2]{ \def\val{#1} \def\null{nil} \ifsquare \subsubsection{#2 {\thearticleno}} \ifx\val\null \else \vspace*{-2mm} \noindent\bracketed{\textbf{#1}} \fi \else \subsubsection{#2 {\thearticleno} \ifx\val\null\else(#1)\fi} \fi \stepcounter{articleno} \begin{enumerate}[(1)] } { \end{enumerate} } \makeatother % LAW COMMAND \newcommand{\law}[1]{ \section{#1} \setcounter{articleno}{1} } % JUST TO MAKE CLEAR WHICH LEVEL TO USE \newcommand{\segmentoflaw}[1]{\subsection{#1}} % TEXT IN SQUARE BRACKETS \newcommand{\bracketed}[1]{$\left[\varwidth{\linewidth}#1\endvarwidth\right]$} % INCREASE HEIGHT OF BRACKETS \setlength\delimitershortfall{-2pt} % --- % FAQ % --- \newcommand{\topic}[1]{\subsection{#1}} % QUESTION ENVIRONMENT \newenvironment{question}[1]{ \subsubsection{Q: #1} \noindent\textbf{A:} } { } % ---------- % WIRTSCHAFT % ---------- \newcounter{total} \newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} \newenvironment{kostenrechnung}[0]{ \setcounter{total}{0} \begin{tabular}{p{2cm}p{4.5cm}p{8.5cm}R{2cm}} \toprule Posten & Berechnung & Kommentar & Kosten in €\\ \midrule } { \bottomrule Gesamt & & & \thetotal \\ \bottomrule \end{tabular} } \newenvironment{lohnrechnung}[0]{ \setcounter{total}{0} \begin{tabular}{p{8cm}p{3.5cm}p{3.5cm}R{2cm}} \toprule Stelle & Anzahl & Lohn pro Tag & Gesamt in €\\ \midrule } { \bottomrule Gesamt & & & \thetotal \\ \bottomrule \end{tabular} } \newcommand{\posten}[4]{\addtocounter{total}{#4} #1 & #2 & \textit{#3} & { \raggedleft #4 } \\}