162 lines
5.8 KiB
TeX
162 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%
|