%% %% This is file `exercises.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% exercises.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2020 by Roger Jud %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.2 of this license %% or (at your option) any later version. The latest version of this %% license is in: %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.2 or later is part of all distributions of LaTeX version %% 1999/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{exercises}[2000/05/17 v1.1 .dtx exercises file] \RequirePackage{verbatim} \RequirePackage{ifthen} \RequirePackage{kvoptions} \RequirePackage{xparse} \RequirePackage{marginnote} \SetupKeyvalOptions{ family=exercises, prefix=exercises@} \DeclareBoolOption{printsolution} \DeclareStringOption[2.0ex plus 1.0ex minus 0.5ex]{exercisespaceabove} \DeclareStringOption[1.5ex plus 1.0ex minus 0.5ex]{exercisespacebelow} \DeclareStringOption[2.0ex plus 1.0ex minus 0.5ex]{solutionspaceabove} \DeclareStringOption[1.5ex plus 1.0ex minus 0.5ex]{solutionspacebelow} \DeclareStringOption[0.25ex]{blockspace} \DeclareStringOption[0.5em]{inlinespace} \DeclareStringOption[arabic]{exercisenumberformat} \DeclareStringOption[aftername]{pointsposition} \DeclareStringOption[normalsize]{pointsfontsize} \DeclareStringOption[Pt.]{pointsname} \DeclareStringOption[Exercise]{exercisename} \DeclareStringOption[block]{exercisenameposition} \DeclareStringOption[Solution]{solutionname} \DeclareStringOption[block]{solutionnameposition} \DeclareStringOption[Pt.]{totalpointsname} \DeclareStringOption[round]{braces} \DeclareBoolOption[false]{starpoints} \ProcessKeyvalOptions{exercises} \ifthenelse{\equal{\exercises@exercisenumberformat}{arabic}}% {\newcommand{\exercises@formatnumbers}[1]{\arabic{#1}}}{}% \ifthenelse{\equal{\exercises@exercisenumberformat}{roman}}% {\newcommand{\exercises@formatnumbers}[1]{\roman{#1}}}{}% \ifthenelse{\equal{\exercises@exercisenumberformat}{Roman}}% {\newcommand{\exercises@formatnumbers}[1]{\Roman{#1}}}{}% \ifthenelse{\equal{\exercises@exercisenumberformat}{alph}}% {\newcommand{\exercises@formatnumbers}[1]{\alph{#1}}}{}% \ifthenelse{\equal{\exercises@exercisenumberformat}{Alph}}% {\newcommand{\exercises@formatnumbers}[1]{\Alph{#1}}}{}% \ifthenelse{\not\equal{\exercises@exercisenumberformat}{arabic}% \and \not\equal{\exercises@exercisenumberformat}{roman}% \and \not\equal{\exercises@exercisenumberformat}{Roman}% \and \not\equal{\exercises@exercisenumberformat}{alph}% \and \not\equal{\exercises@exercisenumberformat}{Alph}}% {\PackageError{exercises}% {"\exercises@exercisenumberformat" ist als Option von "exercisenumberformat" nicht erlaubt. % Stattdessen wurde "arabic" verwendet.}% {"\exercises@exercisenumberformat" ist als Option von "exercisenumberformat" nicht erlaubt. % Stattdessen wurde "arabic" verwendet.}% \newcommand{\exercises@formatnumbers}[1]{\arabic{#1}}}{}% \ifthenelse{\equal{\exercises@exercisenameposition}{block}}% {\newcommand{\exercises@placeexercise}{\noindent\par\vspace{\exercises@blockspace}}}{}% \ifthenelse{\equal{\exercises@exercisenameposition}{inline}}% {\newcommand{\exercises@placeexercise}{\hspace{\exercises@inlinespace}}}{}% \ifthenelse{\not\equal{\exercises@exercisenameposition}{block}% \and \not\equal{\exercises@exercisenameposition}{inline}}% {\PackageError{exercises}% {"\exercises@exercisenameposition" ist als Option von "exercisenameposition" nicht erlaubt. % Stattdessen wurde "block" verwendet.}% {"\exercises@exercisenameposition" ist als Option von "exercisenameposition" nicht erlaubt. % Stattdessen wurde "block" verwendet.} \newcommand{\exercises@placeexercise}{\noindent\par\vspace{\exercises@blockspace}}}{}% \ifthenelse{\equal{\exercises@solutionnameposition}{block}}% {\newcommand{\exercises@placesolution}{\noindent\par\vspace{\exercises@blockspace}}}{}% \ifthenelse{\equal{\exercises@solutionnameposition}{inline}}% {\newcommand{\exercises@placesolution}{\hspace{\exercises@inlinespace}}}{}% \ifthenelse{\not\equal{\exercises@solutionnameposition}{block}% \and \not\equal{\exercises@solutionnameposition}{inline}}% {\PackageError{exercises}% {"\exercises@solutionnameposition" ist als Option von "solutionnameposition" nicht erlaubt. % Stattdessen wurde "block" verwendet.}% {"\exercises@solutionnameposition" ist als Option von "solutionnameposition" nicht erlaubt. % Stattdessen wurde "block" verwendet.}% \newcommand{\exercises@placesolution}{\noindent\par\vspace{\exercises@blockspace}}}{}% \ifthenelse{\equal{\exercises@pointsposition}{aftername}}% {\newcommand{\exercises@placepoints}[1]{ #1}}{}% \ifthenelse{\equal{\exercises@pointsposition}{margin}}% {\newcommand{\exercises@placepoints}[1]% {\marginnote{#1}}}{}% \ifthenelse{\not\equal{\exercises@pointsposition}{aftername}% \and \not\equal{\exercises@pointsposition}{margin}}% {\PackageError{exercises}% {"\exercises@pointsposition" ist als Option von "pointsposition" nicht erlaubt. % Stattdessen wurde "aftername" verwendet.}% {"\exercises@pointsposition" ist als Option von "pointsposition" nicht erlaubt. % Stattdessen wurde "aftername" verwendet.}% \newcommand{\exercises@placepoints}[1]{ #1}}{}% \ifthenelse{\equal{\exercises@pointsfontsize}{normalsize}}% {\newcommand{\exercises@formatpoints}[1]{\normalsize #1}}{}% \ifthenelse{\equal{\exercises@pointsfontsize}{footnotesize}}% {\newcommand{\exercises@formatpoints}[1]{\footnotesize #1 \normalsize}}{}% %% \ifthenelse{\not\equal{\exercises@pointsfontsize}{normalsize}% \and \not\equal{\exercises@pointsfontsize}{footnotesize}}% {\PackageError{exercises}% {"\exercises@pointsfontsize" ist als Option von "pointsfontsize" nicht erlaubt. % Stattdessen wurde "normalsize" verwendet.}% {"\exercises@pointsfontsize" ist als Option von "pointsfontsize" nicht erlaubt. % Stattdessen wurde "normalsize" verwendet.}% \newcommand{\exercises@formatpoints}[1]{\normalsize #1}}{}% \ifthenelse{\equal{\exercises@braces}{nobraces}}% {\newcommand{\exercises@openbrace}{}% \newcommand{\exercises@closebrace}{}}{}% \ifthenelse{\equal{\exercises@braces}{round}}% {\newcommand{\exercises@openbrace}{(}% \newcommand{\exercises@closebrace}{)}}{}% \ifthenelse{\equal{\exercises@braces}{square}}% {\newcommand{\exercises@openbrace}{[}% \newcommand{\exercises@closebrace}{]}}{}% \ifthenelse{\not\equal{\exercises@braces}{nobraces}% \and \not\equal{\exercises@braces}{round}% \and \not\equal{\exercises@braces}{square}}% {% \PackageError{exercises}% {"\exercises@braces" ist als Option von "braces" nicht erlaubt. % Stattdessen wurde "round" verwendet.}% {"\exercises@braces" ist als Option von "braces" nicht erlaubt. % Stattdessen wurde "round" verwendet.}% \newcommand{\exercises@openbrace}{(}% \newcommand{\exercises@closebrace}{)}% }{}% \newcounter{exercises@totalpoints} \setcounter{exercises@totalpoints}{0} \newcounter{exercises@finaltotalpoints} \newcounter{exercises@exercisenumber} \setcounter{exercises@exercisenumber}{1} \newcounter{exercises@solutionnumber} \setcounter{exercises@solutionnumber}{1} \newcounter{i} \newlength{\exercises@parskipsave} \DeclareDocumentEnvironment{exercise}{o}{% \setlength{\exercises@parskipsave}{0cm} \setlength{\exercises@parskipsave}{\parskip} \setlength{\parskip}{0cm} \vspace{\exercises@exercisespaceabove}% \IfNoValueTF{#1}% {\textbf{\exercises@exercisename\ \exercises@formatnumbers{exercises@exercisenumber}:}\exercises@placeexercise}% {\addtocounter{exercises@totalpoints}{#1}% \textbf{\exercises@exercisename\ \exercises@formatnumbers{exercises@exercisenumber}:}% \ifthenelse{\boolean{exercises@starpoints}}% {\exercises@placepoints{\exercises@openbrace% \setcounter{i}{0}\whiledo{#1>\thei}{*\stepcounter{i}}% \exercises@closebrace}}% {\exercises@placepoints{\exercises@formatpoints{\exercises@openbrace#1 \exercises@pointsname\exercises@closebrace}}}\exercises@placeexercise% }% \setlength{\parskip}{\exercises@parskipsave}% }{% \setlength{\parskip}{0cm}% \stepcounter{exercises@exercisenumber}% \vspace{\exercises@exercisespacebelow}% \setlength{\parskip}{\exercises@parskipsave}% }% \newcommand\totalpoints{\theexercises@finaltotalpoints\ \exercises@totalpointsname}% \AtEndDocument{\immediate\write\@auxout% {\string\setcounter{exercises@finaltotalpoints}{\theexercises@totalpoints}}}% \DeclareDocumentEnvironment{solution}{o}{% \setlength{\exercises@parskipsave}{0cm} \setlength{\exercises@parskipsave}{\parskip} \setlength{\parskip}{0cm} \ifthenelse{\boolean{exercises@printsolution}}% {\vspace{\exercises@solutionspaceabove}}{}% \ifthenelse{\boolean{exercises@printsolution}}% {\textbf{\exercises@solutionname\ \exercises@formatnumbers{exercises@solutionnumber}:\exercises@placesolution}}% {\IfNoValueTF{#1}{}{\vspace{#1}}\comment}% \setlength{\parskip}{\exercises@parskipsave}% }% {% \setlength{\parskip}{0cm}% \ifthenelse{\boolean{exercises@printsolution}}{\vspace{\exercises@solutionspacebelow}}% {\endcomment}\stepcounter{exercises@solutionnumber}\setlength{\parskip}{\exercises@parskipsave}% \setlength{\parskip}{\exercises@parskipsave}% }% \newcommand{\exercisenewpage}{\ifthenelse{\boolean{exercises@printsolution}}{}{\newpage}} \newcommand{\solutionnewpage}{\ifthenelse{\boolean{exercises@printsolution}}{\newpage}{}} \newcommand{\ifsolutionthenelse}[2]{\ifthenelse{\boolean{exercises@printsolution}}{#1}{#2}} \endinput %% %% End of file `exercises.sty'.