summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/csassignments
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-06-08 20:45:43 +0000
committerKarl Berry <karl@freefriends.org>2022-06-08 20:45:43 +0000
commitac30b2bebca651fc914289e669b791073d005a2c (patch)
treebb374ad6cee60bccab5a1784359d67e10be47459 /Master/texmf-dist/tex/latex/csassignments
parentc08dcc67a64828f8274c8ef5eb89e378ea8496f6 (diff)
csassignments (8jun22)
git-svn-id: svn://tug.org/texlive/trunk@63517 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/csassignments')
-rw-r--r--Master/texmf-dist/tex/latex/csassignments/csassignments.cls317
1 files changed, 317 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/csassignments/csassignments.cls b/Master/texmf-dist/tex/latex/csassignments/csassignments.cls
new file mode 100644
index 00000000000..53b13a3139e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/csassignments/csassignments.cls
@@ -0,0 +1,317 @@
+%%
+%% This is file `csassignments.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% csassignments.dtx (with options: `cls')
+%%
+%% -------------------------------------------------------------------
+%% LICENCE
+%% -------------------------------------------------------------------
+%%
+%% This is a generated file.
+%%
+%% MIT License
+%%
+%% Copyright (C) 2022 by Alexander Bartolomey
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE
+%%
+%% This work consists of the source files:
+%% - csassignments.dtx (documented LaTeX file)
+%% - csassignments.ins (installer)
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{csassignments}[2022/06/01 v1.0.0 Assignments Class for CS]
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass[a4paper,11pt]{article}
+\makeatletter
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{0.6em}
+\RequirePackage[left=2.5cm,right=2.5cm,top=2cm,bottom=2cm,
+ includeheadfoot]{geometry}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[english]{babel}
+\RequirePackage{titlesec}
+\RequirePackage{enumitem}
+\RequirePackage{graphicx}
+\RequirePackage{tocloft}
+\RequirePackage{float}
+\RequirePackage{ifthen}
+\RequirePackage{translations}
+\RequirePackage{csquotes}
+\RequirePackage{fancyhdr}
+\RequirePackage{microtype}
+\RequirePackage{stmaryrd}
+\RequirePackage{pdfpages}
+\RequirePackage[hidelinks, unicode]{hyperref}
+\RequirePackage{tikz}
+\RequirePackage{microtype}
+\RequirePackage[fleqn]{amsmath}
+\RequirePackage{amsthm}
+\RequirePackage{amssymb}
+\RequirePackage{mathtools}
+\RequirePackage{totcount}
+\RequirePackage{changepage}
+\RequirePackage{etoolbox}
+\RequirePackage{environ}
+\RequirePackage{multicol}
+\RequirePackage{tgpagella}
+\RequirePackage{suffix}
+\usetikzlibrary{arrows,calc}
+\DeclareLanguage{english}
+\DeclareLanguage{german}
+\select@language{english}
+\ProvideTranslation{german}{prefixAuthor}{Eingereicht von}
+\ProvideTranslation{english}{prefixAuthor}{Handed in by}
+\ProvideTranslationFallback{prefixAuthor}{Handed in by}
+\ProvideTranslation{german}{prefixDate}{am}
+\ProvideTranslation{english}{prefixDate}{on}
+\ProvideTranslationFallback{prefixDate}{on}
+\ProvideTranslation{ngerman}{exercise}{Aufgabe}
+\ProvideTranslation{english}{exercise}{Exercise}
+\ProvideTranslationFallback{exercise}{Exercise}
+\ProvideTranslation{ngerman}{exerciseAbbrev}{Aufg.}
+\ProvideTranslation{english}{exerciseAbbrev}{Ex.}
+\ProvideTranslationFallback{exerciseAbbrev}{Ex.}
+\ProvideTranslation{ngerman}{subexercise}{Teilaufgabe}
+\ProvideTranslation{english}{subexercise}{Subexercise}
+\ProvideTranslationFallback{subexercise}{Subexercise}
+\ProvideTranslation{ngerman}{points}{Punkte}
+\ProvideTranslation{english}{points}{Points}
+\ProvideTranslationFallback{points}{Points}
+\ProvideTranslation{ngerman}{sheet}{Abgabe}
+\ProvideTranslation{english}{sheet}{Exercise Sheet}
+\ProvideTranslationFallback{sheet}{Exercise Sheet}
+\ProvideTranslation{ngerman}{studentId}{Matr.Nr.}
+\ProvideTranslation{english}{studentId}{Student ID}
+\ProvideTranslationFallback{studentId}{Student ID}
+\newtotcounter{exercisenumber}
+\newtotcounter{subexercisenumber}
+\newtotcounter{totalpoints}
+\edef\exerciseLabelGradingTable{}
+\edef\gradingTableExercisePoints{}
+\edef\PTableA{}
+\edef\PTableB{}
+\edef\PTHead{}
+\newcommand{\@addPT}[2]{
+ \edef\gradingTableExerciseLabel{\GetTranslation{exerciseAbbrev} #1 &}
+ \edef\gradingTableExercisePoints{\qquad / $#2$ &}
+ \xappto\PTableA{\gradingTableExerciseLabel}
+ \xappto\PTableB{\gradingTableExercisePoints}
+ \xappto\PTHead{c | }
+}
+\newcommand{\gradingtable}{%
+ \ifdef{\PTHeadSaved}{%
+ {\Large\bfseries Grading Table}\\%
+ \begin{table}[h!]
+ \renewcommand\arraystretch{2}%
+ \begin{tabular}{\expandonce{\PTHeadSaved} c}
+ \PTableASaved {\Large$\Sigma$}\\ \hline
+ \PTableBSaved \qquad / $\totalpointsSaved$
+ \end{tabular}
+ \renewcommand{\arraystretch}{1}%
+ \end{table}
+ }{\texttt{Compile again}\ClassWarning{Compile again to properly
+ display grading table}}
+}
+\newcommand{\@pointsPerExercise}[1]{
+ \ifstrempty{#1}{}{{\quad\large\bfseries/#1 \GetTranslation{points}}}
+}
+\newcommand{\@exerciseLabel}[1]{
+ \quad\ifstrempty{#1}{}{\bfseries(#1)}
+}
+\newcommand\exercise[2][]{
+ \penalty150
+ \ifblank{#1}{\def\points{0}}{\def\points{#1}}
+ \stepcounter{exercisenumber}
+ \setcounter{subexercisenumber}{0}
+ \par
+ \vspace{1.5\baselineskip}
+ {
+ {\Large\bfseries\GetTranslation{exercise}\ \arabic{exercisenumber}}
+ \@exerciseLabel{#2}
+ \@exerciseRules
+ \notblank{#1}{\@pointsPerExercise{#1}}{}
+ }
+ \par
+ \notblank{#1}{
+ \addtocounter{totalpoints}{\points}
+ \@addPT{\arabic{exercisenumber}}{\points}
+ }{}
+}
+\WithSuffix\newcommand\exercise*[2][]{
+ \penalty150
+ \ifblank{#1}{\def\points{0}}{\def\points{#1}}
+ \stepcounter{exercisenumber}
+ \setcounter{subexercisenumber}{0}
+ \par
+ \vspace{1.5\baselineskip}
+ {
+ {\Large\bfseries\GetTranslation{exercise}\ \arabic{exercisenumber}}
+ \@exerciseLabel{#2}
+ \@exerciseRules
+ \notblank{#1}{\@pointsPerExercise{#1}}{}
+ }
+ \par
+ \addtocounter{totalpoints}{\points}
+}
+\AtEndDocument{
+ \makeatletter
+ \immediate\write\@mainaux{\string\gdef\string\PTableASaved{\PTableA}}
+ \immediate\write\@mainaux{\string\gdef\string\PTableBSaved{\PTableB}}
+ \immediate\write\@mainaux{\string\gdef\string\PTHeadSaved{\PTHead}}
+ \immediate\write\@mainaux{\string\gdef\string\totalpointsSaved%
+ {\arabic{totalpoints}}}
+ \makeatother
+}
+\newcommand{\subexercise}[1][]{
+ \penalty150
+ \stepcounter{subexercisenumber}
+ \par
+ \vspace{0.5\baselineskip}
+ {
+ {\bfseries\GetTranslation{subexercise}\ (\alph{subexercisenumber})}
+ \quad\ifstrempty{#1}{}{(#1)}
+ \@subexerciseRules
+ }
+ \par
+}
+\def\Vhrulefill{\leavevmode\leaders\hrule height 0.7ex depth
+\dimexpr0.4pt-0.7ex\hfill\kern0pt}
+\newcommand{\exerciseRules}{
+ \renewcommand{\@exerciseRules}{\hspace{1em}\Vhrulefill} }
+ \newcommand{\subexerciseRules}{
+ \renewcommand{\@subexerciseRules}{\hspace{0em}\Vhrulefill} }
+\newcommand{\@exerciseRules}{}
+\newcommand{\@subexerciseRules}{}
+\newcommand{\nopoints}{
+ \renewcommand{\@pointsPerExercise}{}
+ \renewcommand{\gradingtable}{}
+ \renewcommand{\exercise}{\@exerciseNoPoints}
+}
+\newcommand{\@exerciseNoPoints}[1]{
+ \def\points{0}
+ \stepcounter{exercisenumber}
+ \setcounter{subexercisenumber}{0}
+ \par
+ \vspace{1.5\baselineskip}
+ { {\Large\bfseries\GetTranslation{exercise}\ \arabic{exercisenumber}}
+ \@exerciseLabel{#1} \@exerciseRules }
+ \par
+}
+\newcommand{\@course}{Assignment}
+\newcommand{\@sheet}{}
+\newcommand{\@group}{}
+\newcommand{\@prefixId}{\GetTranslation{studentId} }
+\newcommand{\@members}{}
+\newcommand{\@member}[2][]%
+ {\notblank{#1}{#2, \notblank{#1}{\@prefixId{#1}}{} \\}{#2}}
+\newcommand{\@due}{}
+\newcommand{\@prefixAuthor}{\GetTranslation{prefixAuthor}}
+\newcommand{\@prefixDate}{\GetTranslation{prefixDate}}
+\newcommand{\course}[1]{\expandafter\notblank\expandafter{#1}%
+ {\def\@course{#1}}{}}
+\newcommand{\sheet}[1]{\def\@sheet{\GetTranslation{sheet} #1}}
+\newcommand{\group}[1]{\renewcommand{\@group}{#1}}
+\newcommand{\due}[1]{\renewcommand{\@due}{#1}}
+\newcommand{\member}[2][]{
+ \expandafter\renewcommand\expandafter\@members\expandafter
+ {\@members\@member[#1]{#2}}
+ \expandafter\renewcommand\expandafter\pdfmembers\expandafter
+ {\pdfmembers\pdfmember[#1]{#2}}
+}
+\newcommand{\PrefixId}[1]{\renewcommand{\@prefixId}{#1}}
+\newcommand{\PrefixAuthor}[1]{\renewcommand{\@prefixAuthor}{#1}}
+\newcommand{\PrefixDate}[1]{\renewcommand{\@prefixDate}{#1}}
+\renewcommand{\and}{\\}
+\renewcommand{\maketitle}{
+ \thispagestyle{empty}
+ {\bfseries\Huge\@course}
+ \par
+ \expandafter\notblank\expandafter\@sheet{{\LARGE\@sheet\\}}{}
+ \par
+ \expandafter\notblank\expandafter\@members{
+ {\footnotesize\bfseries\@prefixAuthor}\\
+ \hspace*{4pt}{\large{\vspace*{4pt}\begin{tabular}[t]{@{}l}
+ \@members
+ \end{tabular}}}\\
+ }{}
+ \expandafter\notblank\expandafter\@due{
+ {\footnotesize\bfseries\@prefixDate}\\
+ \vspace*{4pt}{\hspace*{4pt}{\large\@due}}\\
+ }{}
+ \vskip \baselineskip
+ \pagestyle{fancy}
+}
+\renewcommand{\headrulewidth}{1pt}
+\setlength\headheight{4\baselineskip}
+\rhead{
+ \begin{tabular}{r}
+ \textbf{\@course} \\
+ \@sheet \\
+ {\small\@due}
+ \end{tabular}
+}
+\lhead{
+ \small{%
+ \begin{tabular}{l}
+ \@members
+ \end{tabular}%
+ }
+ }
+\newcommand{\@pdfauthorprefix}{\expandafter\notblank\expandafter%
+ {\@group}{Group \@group: }{}\relax}
+\newcommand{\pdfmembers}{}
+\newcommand{\pdfmember}[2][]{\expandafter\notblank\expandafter%
+ {#1}{#2, {#1};}{#2}}
+\AtBeginDocument{\hypersetup{
+ pdftitle = {\texorpdfstring{Assignment \@sheet}{}},
+ pdfauthor = {\texorpdfstring{\@pdfauthorprefix\pdfmembers}{}},
+ pdfsubject = {\texorpdfstring{\@course}{}}
+}}
+\newcommand{\N}{\ensuremath{\mathbf{N}}}
+\newcommand{\Z}{\ensuremath{\mathbf{Z}}}
+\newcommand{\R}{\ensuremath{\mathbf{R}}}
+\newcommand{\Q}{\ensuremath{\mathbf{Q}}}
+\newcommand{\C}{\ensuremath{\mathbf{C}}}
+\newcommand{\F}{\ensuremath{\mathbb{F}}}
+\newcommand{\primefield}{\ensuremath{\mathbb{P}}}
+\newcommand{\modring}[2]{#1/\!#2\:}
+\newcommand{\derivative}[1]{\ensuremath{\frac{d}{d#1}}}
+\newcommand{\matadd}[3]{\ensuremath{\xmapsto{\mathrm{add}_{#1,#2,#3}}}}
+\newcommand{\matmul}[2]{\ensuremath{\xmapsto{\mathrm{mul}_{#1,#2}}}}
+\newcommand{\matswap}[2]{\ensuremath{\xmapsto{\mathrm{sw}_{#1,#2}}}}
+\renewcommand{\forall}{\ensuremath{\hskip 2pt \oforall \hskip 2pt}}
+\renewcommand{\exists}{\ensuremath{\hskip 2pt \oexists \hskip 2pt}}
+\newcommand{\ceil}[1]{\ensuremath{\left\lceil #1 \right \rceil}}
+\newcommand{\floor}[1]{\ensuremath{\left\lfloor #1 \right \rfloor}}
+\newcommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}}
+\newcommand{\rfrac}[2]{{}^{#1}\!/_{#2}}
+\renewcommand{\mod}{\ \mathrm{mod}\ }
+\newcommand{\rel}[1]{\ensuremath{\mathrel{#1}}}
+\newcommand{\QED}{\hfill\(\square\)}
+\newtheoremstyle{it}{3pt}{3pt}{}{}{\itshape}{:}{.5em}{}
+\theoremstyle{it}
+\makeatother
+\endinput
+%%
+%% End of file `csassignments.cls'.