gra-projekt/Ausarbeitung/aspdoc.cls

163 lines
5.8 KiB
TeX

% 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%