diff --git a/Ausarbeitung/aspdoc.cls b/Ausarbeitung/aspdoc.cls new file mode 100644 index 0000000..b8e16bd --- /dev/null +++ b/Ausarbeitung/aspdoc.cls @@ -0,0 +1,162 @@ +% aspdoc.cls +% Written by Alexis Engelke in 10/2018 +% Copyright (c) TUM I10 2018. All rights reserved. + +% Options: +% - course: erap, asp, [rasp] +% For course=rasp/asp/erap \ifasp is defined. +% - tasksheet +% Defines solution environment, defines \theSheetNumber +% - project +% Enhances content of header, defines \theTaskNumber and \theName + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{aspdoc}[2021/10/05 ASPDOC document class v0.5] + +\LoadClass[11pt]{scrartcl} + +\RequirePackage{kvoptions} +\RequirePackage[utf8]{inputenc} +\RequirePackage[T1]{fontenc} +\RequirePackage[ngerman]{babel} % TODO: Make this an option +\RequirePackage[babel,german=quotes]{csquotes} +\RequirePackage{amsmath} +\RequirePackage{graphicx} +\RequirePackage{color} +\RequirePackage{listings} +\RequirePackage{booktabs} +\RequirePackage{float} +\RequirePackage{microtype} +\RequirePackage{tikz} +\RequirePackage{tabularx} +\RequirePackage{hyperref} +\RequirePackage{xstring} +\RequirePackage[headsepline,footsepline,plainfootsepline,markcase=upper]{scrlayer-scrpage} + +\usetikzlibrary{shapes,positioning} + +\SetupKeyvalOptions{ + family=aspdoc, + prefix=aspdoc@ +} + +% Fonts +\setkomafont{dictum}{\normalfont\normalcolor\rmfamily\small} +\renewcommand{\rmdefault}{ppl} +\newcommand{\tttilde}{\raise.17ex\hbox{$\scriptstyle\mathtt{\sim}$}} + +\definecolor{dkgreen}{rgb}{0,0.6,0} +\definecolor{gray}{rgb}{0.5,0.5,0.5} +\definecolor{mauve}{rgb}{0.58,0,0.82} + +\newcommand{\@maintitle}{\large\@title \\ \@date} +\newcommand{\@headertitle}{\@title} + +\newif\if@solution + +\DeclareVoidOption{tasksheet}{ + \IfSubStr{\jobname}{\detokenize{Lsg}}{ + \@solutiontrue + \StrBetween*[2,3]{\jobname}{\detokenize{_}}{\detokenize{_}}[\sheetNumberRaw] + }{ + \StrBehind*[2]{\jobname}{\detokenize{_}}[\sheetNumberRaw] + } + % Remove a single leading zero + \IfBeginWith{\sheetNumberRaw}{0}{% + \StrGobbleLeft{\sheetNumberRaw}{1}[\theSheetNumber]% + }{% + \global\let\theSheetNumber\sheetNumberRaw% + } + % + \newcommand{\secprefix}[1]{\setcounter{section}{0}\def\thesection{##1\theSheetNumber.\arabic{section}}\renewcommand*{\theHsection}{ch##1.\the\value{section}}} + % + \title{Arbeitsblatt \theSheetNumber} + \renewcommand{\@headertitle}{Blatt \theSheetNumber} +} +\DeclareVoidOption{project}{ + \StrGobbleLeft{\jobname}{5}[\theTaskNumber] + \renewcommand{\@maintitle}{\large\@title {} (A\theTaskNumber)\\ Projektaufgabe -- Aufgabenbereich \@subtitle} + \renewcommand{\@headertitle}{Projektaufgabe A\theTaskNumber} + \newcommand{\theName}{\@title} +} +\DeclareStringOption{course} +\ProcessKeyvalOptions*\relax + +\IfEq{\aspdoc@course}{rasp}{\IfSubStr{\jobname}{\detokenize{ASP}}{\def\aspdoc@course{asp}}{\def\aspdoc@course{gra}}}{} +\IfEqCase{\aspdoc@course}{% + {asp}{\newif\ifasp\asptrue% + \newcommand{\@courselong}{\vspace{-.2em}Aspekte der systemnahen Programmierung\\bei der Spieleentwicklung}% + \newcommand{\@courseshort}{Praktikum ASP} + \newcommand{\raspi}{\textit{Raspberry Pi 3}\,} + \newcommand{\raspis}{\textit{Raspberry Pi 3}\,} + \newcommand{\board}{\raspi} + \newcommand{\boards}{\raspis}}% + {erap}{\newif\ifasp\aspfalse% + \newcommand{\@courselong}{Grundlagenpraktikum: Rechnerarchitektur}% + \newcommand{\@courseshort}{Praktikum GRA}}% + {gra}{\newif\ifasp\aspfalse% + \newcommand{\@courselong}{Grundlagenpraktikum: Rechnerarchitektur}% + \newcommand{\@courseshort}{Praktikum GRA}}% + {eragp}{% + \newcommand{\@courselong}{Großpraktikum Rechnerarchitektur}% + \newcommand{\@courseshort}{Großpraktikum ERA}}% + {erat}{% + \newcommand{\@courselong}{Übungen zu Einführung in die Rechnerarchitektur}% + \newcommand{\@courseshort}{Übung ERA}}% +}[ + \newcommand{\@courselong}{\textit{Lehrveranstaltung}} + \newcommand{\@courseshort}{\textit{Veranstaltung LV}} +] + +% Solution environment for task sheets +\newenvironment{solution}{% + \if@solution\itshape\bfseries\else\setbox\z@\vbox\bgroup\fi% +}{% + \if@solution\else\egroup\fi% +} + +\pagestyle{scrheadings} +\clearscrheadfoot +\ihead{\rmfamily\normalcolor \@courseshort{} -- \@headertitle\headmark} +\if@solution\chead{\textbf{Lösung}}\fi +\ohead{\pagemark} + +\lstset{ % + language=C, + basicstyle=\upshape\footnotesize\ttfamily, + numbers=left, % where to put the line-numbers + numberstyle=\tiny\color{gray}, % the style that is used for the line-numbers + numbersep=5pt, % how far the line-numbers are from the code + showstringspaces=false, + frame=single, % adds a frame around the code + rulecolor=\color{black}, + tabsize=2, % sets default tabsize to 2 spaces + captionpos=b, % sets the caption-position to bottom + breaklines=true, % sets automatic line breaking + breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace + title=\lstname, % show the filename of files included with \lstinputlisting; + belowskip=-0.8 \baselineskip, % avoid blank line after listing + % also try caption instead of title + keywordstyle=\color{blue}, % keyword style + commentstyle=\color{dkgreen}, % comment style + stringstyle=\color{mauve}, % string literal style + escapeinside={\%*}{*)}, % if you want to add LaTeX within your code + literate={ö}{{\"o}}1 + {ä}{{\"a}}1 + {ü}{{\"u}}1 + {~}{{\tttilde}}1 + {:)}{{\rotatebox{270}{\hspace{-.5em}\rmfamily :)}}}2 +} + +% Clear author macro so that we can check whether an author is set +\def\@author{} +\renewcommand{\maketitle}{ + \begin{center} + \small\textsc{Lehrstuhl für Rechnerarchitektur und Parallele Systeme}\\[.4em] + {\Large\bfseries\@courselong}\\[.7em] + \begin{tabular}{c}\@maintitle\end{tabular} + \ifdefempty{\@author}{}{\\[1em]\begin{tabular}{c}\@author\end{tabular}} + \end{center} +} + +\endinput%