From cc75bcfc8776fba3d4f4a2563118d6bc3df7a714 Mon Sep 17 00:00:00 2001 From: Stefan Huber Date: Sat, 22 Oct 2022 09:48:01 +0200 Subject: [PATCH] Initial import --- exsheet.cls | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 exsheet.cls diff --git a/exsheet.cls b/exsheet.cls new file mode 100644 index 0000000..bab2694 --- /dev/null +++ b/exsheet.cls @@ -0,0 +1,150 @@ +% Stefan Huber, 2010-02 +% Stefan Huber, 2019-09-23 +% Stefan Huber, 2020-06-23 +% Stefan Huber, 2021-06-21 + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{exsheet} + + +\DeclareOption{10pt}{\PassOptionsToClass{\CurrentOption}{article}} +\DeclareOption{12pt}{\PassOptionsToClass{\CurrentOption}{article}} + +\DeclareOption{german}{\def \exsheetgerman{}} +\DeclareOption{ngerman}{\def \exsheetgerman{}} +\DeclareOption{austrian}{\def \exsheetgerman{}} +\DeclareOption{naustrian}{\def \exsheetgerman{}} +\DeclareOption{showanswers}{\def \exsheetshowanswers{}} + + +\PassOptionsToClass{a4paper,notitlepage,twoside}{article} +\ProcessOptions\relax + +%-------------------- This is based on the article class ---------------- + +\LoadClass{article} +\RequirePackage{xifthen,geometry,fancyhdr,enumitem,comment} + + +%------------------ Defining the most common environments --------------- + +\@ifundefined{exsheetgerman}{ + \newcommand{\theexercise}{Exercise} + \newcommand{\thepoint}{Point} + \newcommand{\thepoints}{Points} + \newcommand{\thestudnumber}{Number} + \newcommand{\theanswer}{Answer} +}{% + \newcommand{\theexercise}{Aufgabe} + \newcommand{\thepoint}{Punkt} + \newcommand{\thepoints}{Punkte} + \newcommand{\thestudnumber}{Personenkennzeichen} + \newcommand{\theanswer}{Antwort} +} + +%Check whether we should show the answers +\@ifundefined{exsheetshowanswers}{ + \excludecomment{answer} +}{ + \newenvironment{answer}{\vspace*{0.5em}\textit{\theanswer:} \hspace*{0.5em} }{} +} + +\newcounter{excounter} +\setcounter{excounter}{1} +\newenvironment{exercise}[1][]{% + \vspace*{2em}% + \textbf{\theexercise~\arabic{excounter}}: + \ifthenelse{\isempty{#1}}{}{% + \ifnum#1=1% + \hfill[#1 \thepoint]% + \else% + \hfill[#1 \thepoints]% + \fi% + }% + \newline} +{\addtocounter{excounter}{1}} + + +\def\@semester{} +\newcommand{\semester}[1]{\def\@semester{#1}} + +\def\@lva{} +\newcommand{\lva}[1]{\def\@lva{#1}} + +\def\@auth{} +\renewcommand{\author}[1]{\def\@auth{#1}\def\@author{#1}} + +\def\@institute{\ } +\newcommand{\institute}[1]{\def\@institute{#1}} + +\newcommand{\studentinfo}{% + { + Name: \underline{\hspace{6cm}} + \hfill + \thestudnumber: \underline{\hspace{4cm}} + \vspace*{2em} + } +} + + + + +%------------------ Basic layout ---------------------------------------- + +\geometry{verbose,a4paper,width=16cm,height=23cm} + +\fancypagestyle{exsheet} +{ + \fancyhf{}% + \fancyhead[LO,LE]{% + \begin{minipage}{70mm} + \@lva\\ + \@semester + \vspace{1mm} + \end{minipage} + } + \fancyhead[RO,RE]{% + \begin{minipage}{70mm} + \raggedleft + \@institute\\ + \@auth + \vspace{1mm} + \end{minipage} + } +} + +\setlength{\headheight}{2.5em} +\renewcommand{\headrulewidth}{1pt} + +\setlength{\parindent}{0em} + + +%------------------ Common command --------------------------------------- + +\let\oldmaketitle\maketitle + +\renewcommand{\@maketitle}{% + \noindent + \begin{center} + {\LARGE\bf\@title}\\ + \vspace{1em}\@date + \end{center} + + \vspace{4em} +} + +\renewcommand{\maketitle}{% + \oldmaketitle + \thispagestyle{exsheet} + \pagestyle{exsheet} +} + + +\renewcommand\abstract{\it\noindent} + +%------------------ Defining specific commands environments --------------- + +\newenvironment{choices}{% + \begin{itemize}[label=$\square$, labelsep=2ex] + }{\end{itemize}} + -- 2.30.2