diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty new file mode 100644 index 00000000000..db290659ffe --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty @@ -0,0 +1,126 @@ +%% +%% This is file `hwexam.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hwexam.dtx (with options: `package') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{hwexam}[2012/01/28 v0.9b homework assignments and exams] +\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\newif\iftest\testfalse +\newif\ifsolutions\solutionsfalse +\DeclareOption{test}{\testtrue\solutionsfalse} +\newif\ifmultiple\multiplefalse +\DeclareOption{multiple}{\multipletrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{problem}} +\ProcessOptions +\RequirePackage{keyval}[1997/11/10] +\RequirePackage{problem} +\addmetakey{assig}{number} +\addmetakey*{assig}{title} +\addmetakey{assig}{type} +\addmetakey{assig}{given} +\addmetakey{assig}{due} +\def\given@due#1#2{% +\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{#1}\fi\fi% +\ifx\assig@given\@empty\else{Given {\assig@given}}\fi% +\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{, }\fi\fi% +\ifx\assig@due\@empty\else{Due {\assig@due}}\fi% +\ifx\assig@given\@empty\else{\ifx\assig@due\@empty\else{#2}\fi}\fi} +\ifmultiple +\def\assignment@titleblock{% +\@ifundefined{assig@number}{\stepcounter{section}}{\setcounter{section}{\assig@number}}% +\section*{\protect\document@hwexamtype~\arabic{section}:~\assig@title\given@due{\\(})}% +\addcontentsline{toc}{section}{\document@hwexamtype~{\arabic{section}}:~\assig@title}% +\setcounter{problem}{0}} +\else +\def\assignment@titleblock{% +\setcounter{section}{\assig@number} +\begin{center}\bf +\Large\@title\\ +\document@hwexamtype~\assig@number:~\assig@title\strut\\ +\large{\given@due()} +\end{center}} +\fi +\def\assignment@process@keys#1{\metasetkeys{assig}{#1} +\ifx\inclassig@title\@empty\else\def\assig@title{\inclassig@title}\fi +\ifx\inclassig@type\@empty\else\def\assig@type{\inclassig@type}\fi +\ifx\inclassig@number\@empty\else\def\assig@number{\inclassig@number}\fi +\ifx\inclassig@due\@empty\else\def\assig@due{\inclassig@due}\fi +\ifx\inclassig@given\@empty\else\def\assig@given{\inclassig@given}\fi} +\def\inclassig@title{} +\def\inclassig@type{} +\def\inclassig@number{} +\def\inclassig@due{} +\def\inclassig@given{} +\newenvironment{assignment}[1][]{\assignment@process@keys{#1}% +\assignment@titleblock}{} +\def\assig@default@type{Assignment} +\addmetakey[\assig@default@type]{document}{hwexamtype} +\addmetakey{inclassig}{number} +\addmetakey{inclassig}{title} +\addmetakey{inclassig}{type} +\addmetakey{inclassig}{given} +\addmetakey{inclassig}{due} +\newcommand{\includeassignment}[2][]{\metasetkeys{inclassig}{#1}\include{#2}} +\newcommand{\inputassignment}[2][]{\metasetkeys{inclassig}{#1}\input{#2}} +\addmetakey{quizheading}{tas} +\newcommand\quizheading[1]{\def\@tas{#1}% +\large\noindent NAME: \hspace{8cm} MAILBOX:\\[2ex]% +\ifx\@tas\@empty\else% +\noindent TA: \@for\@I:=\@tas\do{{\Large$\Box$}\@I\hspace*{1em}}\\[2ex]\fi} +\addmetakey{testheading}{min} +\addmetakey{testheading}{duration} +\addmetakey{testheading}{reqpts} +\newenvironment{testheading}[1][]{\metasetkeys{testheading}{#1} +{\noindent\large{}Name: \hfill Matriculation Number:\hspace*{2cm}\strut\\[1ex] +\begin{center}\Large\textbf{\@title}\\[1ex]\large\@date\\[3ex]\end{center} +{\textbf{You have +\ifx\test@heading@duration\@empty\testheading@min minutes\else\testheading@duration\fi +(sharp) for the test}};\\ Write the solutions to the sheet.}\par\noindent + +\newcount\check@time\check@time=\testheading@min +\advance\check@time by -\theassignment@totalmin +The estimated time for solving this exam is {\theassignment@totalmin} minutes, +leaving you {\the\check@time} minutes for revising your exam. + +\newcount\bonus@pts\bonus@pts=\theassignment@totalpts +\advance\bonus@pts by -\testheading@reqpts +You can reach {\theassignment@totalpts} points if you solve all problems. You will only need +{\testheading@reqpts} points for a perfect score, i.e.\ {\the\bonus@pts} points are +bonus points. \vfill +\begin{center} + {\Large\em + Different problems test different skills and knowledge, so do not get stuck on + one problem.}\vfill\par\correction@table \\[3ex] +\end{center}} +{\newpage} +\def\testspace#1{\iftest\vspace*{#1}\fi} +\def\testnewpage{\iftest\newpage\fi} +\def\testemptypage{\iftest\begin{center}This page was intentionally left + blank for extra space\end{center}\vfill\eject\else\fi} +\def\@problem#1#2#3{\stepcounter{assignment@probs} +\def\@test{#2}\ifx\@test\@empty\else\addtocounter{assignment@totalpts}{#2}\fi +\def\@test{#3}\ifx\@test\@empty\else\addtocounter{assignment@totalmin}{#3}\fi +\xdef\correction@probs{\correction@probs & #1}% +\xdef\correction@pts{\correction@pts & #2} +\xdef\correction@reached{\correction@reached &}} +\newcounter{assignment@probs} +\newcounter{assignment@totalpts} +\newcounter{assignment@totalmin} +\def\correction@probs{prob.}% +\def\correction@pts{total}% +\def\correction@reached{reached}% +\stepcounter{assignment@probs} +\def\correction@table{\begin{tabular}{|l|*{\theassignment@probs}{c|}|p{3cm}|}\hline% +&\multicolumn{\theassignment@probs}{c||}% +{\footnotesize To be used for grading, do not write here} &\\\hline +\correction@probs & Sum & grade\\\hline +\correction@pts &\theassignment@totalpts & \strut\hspace{3cm}\strut\\\hline +\correction@reached & & \\[.7cm]\hline +\end{tabular}} +\endinput +%% +%% End of file `hwexam.sty'. |