From 87c74b3292e1c3efc4427ae0536a1d30a0dc8e4b Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 1 Feb 2021 03:00:47 +0000 Subject: CTAN sync 202102010300 --- .../contrib/xsim/doc/examples/xsim.blanks.pdf | Bin 29952 -> 0 bytes .../contrib/xsim/doc/examples/xsim.blanks.tex | 23 - .../xsim/doc/examples/xsim.boxed-headings.pdf | Bin 38376 -> 0 bytes .../xsim/doc/examples/xsim.boxed-headings.tex | 30 - .../xsim/doc/examples/xsim.code-and-output.pdf | Bin 30938 -> 0 bytes .../xsim/doc/examples/xsim.code-and-output.tex | 53 - .../contrib/xsim/doc/examples/xsim.collections.pdf | Bin 33206 -> 0 bytes .../contrib/xsim/doc/examples/xsim.collections.tex | 62 - .../contrib/xsim/doc/examples/xsim.crossref.pdf | Bin 38749 -> 0 bytes .../contrib/xsim/doc/examples/xsim.crossref.tex | 60 - .../xsim/doc/examples/xsim.description-list.pdf | Bin 41167 -> 0 bytes .../xsim/doc/examples/xsim.description-list.tex | 42 - .../doc/examples/xsim.different-point-types.pdf | Bin 42153 -> 0 bytes .../doc/examples/xsim.different-point-types.tex | 52 - .../xsim/doc/examples/xsim.difficulties.pdf | Bin 31555 -> 0 bytes .../xsim/doc/examples/xsim.difficulties.tex | 53 - .../contrib/xsim/doc/examples/xsim.floating.pdf | Bin 37708 -> 0 bytes .../contrib/xsim/doc/examples/xsim.floating.tex | 50 - .../xsim/doc/examples/xsim.golatex-80640.pdf | Bin 46308 -> 0 bytes .../xsim/doc/examples/xsim.golatex-80640.tex | 131 -- .../xsim/doc/examples/xsim.golatex-91339.pdf | Bin 65379 -> 0 bytes .../xsim/doc/examples/xsim.golatex-91339.tex | 94 - .../xsim/doc/examples/xsim.grade-distribution.pdf | Bin 23204 -> 0 bytes .../xsim/doc/examples/xsim.grade-distribution.tex | 56 - .../latex/contrib/xsim/doc/examples/xsim.hints.pdf | Bin 45719 -> 0 bytes .../latex/contrib/xsim/doc/examples/xsim.hints.tex | 59 - .../contrib/xsim/doc/examples/xsim.listings.pdf | Bin 45738 -> 0 bytes .../contrib/xsim/doc/examples/xsim.listings.tex | 48 - .../xsim/doc/examples/xsim.listofexercises.pdf | Bin 57220 -> 0 bytes .../xsim/doc/examples/xsim.listofexercises.tex | 81 - .../xsim/doc/examples/xsim.multiplechoice.pdf | Bin 31016 -> 0 bytes .../xsim/doc/examples/xsim.multiplechoice.tex | 70 - .../contrib/xsim/doc/examples/xsim.pointsums.pdf | Bin 28127 -> 0 bytes .../contrib/xsim/doc/examples/xsim.pointsums.tex | 30 - .../xsim/doc/examples/xsim.randomexercises.pdf | Bin 23102 -> 0 bytes .../xsim/doc/examples/xsim.randomexercises.tex | 58 - .../contrib/xsim/doc/examples/xsim.texsx-13635.pdf | Bin 86047 -> 0 bytes .../contrib/xsim/doc/examples/xsim.texsx-13635.tex | 70 - .../xsim/doc/examples/xsim.texsx-155630.pdf | Bin 20045 -> 0 bytes .../xsim/doc/examples/xsim.texsx-155630.tex | 26 - .../xsim/doc/examples/xsim.texsx-199360.pdf | Bin 56153 -> 0 bytes .../xsim/doc/examples/xsim.texsx-199360.tex | 60 - .../xsim/doc/examples/xsim.texsx-299534.pdf | Bin 48094 -> 0 bytes .../xsim/doc/examples/xsim.texsx-299534.tex | 32 - .../xsim/doc/examples/xsim.texsx-305110.pdf | Bin 36968 -> 0 bytes .../xsim/doc/examples/xsim.texsx-305110.tex | 67 - .../xsim/doc/examples/xsim.texsx-308883.pdf | Bin 27155 -> 0 bytes .../xsim/doc/examples/xsim.texsx-308883.tex | 13 - .../xsim/doc/examples/xsim.texsx-338165.pdf | Bin 57235 -> 0 bytes .../xsim/doc/examples/xsim.texsx-338165.tex | 70 - .../xsim/doc/examples/xsim.texsx-350028.pdf | Bin 130569 -> 0 bytes .../xsim/doc/examples/xsim.texsx-350028.tex | 134 -- .../xsim/doc/examples/xsim.texsx-369065.pdf | Bin 65721 -> 0 bytes .../xsim/doc/examples/xsim.texsx-369065.tex | 77 - .../xsim/doc/examples/xsim.texsx-369636.pdf | Bin 46504 -> 0 bytes .../xsim/doc/examples/xsim.texsx-369636.tex | 46 - .../xsim/doc/examples/xsim.texsx-369803.pdf | Bin 55079 -> 0 bytes .../xsim/doc/examples/xsim.texsx-369803.tex | 50 - .../xsim/doc/examples/xsim.texsx-370642.pdf | Bin 28426 -> 0 bytes .../xsim/doc/examples/xsim.texsx-370642.tex | 25 - .../xsim/doc/examples/xsim.texsx-391530.pdf | Bin 25040 -> 0 bytes .../xsim/doc/examples/xsim.texsx-391530.tex | 67 - .../xsim/doc/examples/xsim.texsx-395273.pdf | Bin 50580 -> 0 bytes .../xsim/doc/examples/xsim.texsx-395273.tex | 74 - .../xsim/doc/examples/xsim.texsx-498299.pdf | Bin 42513 -> 0 bytes .../xsim/doc/examples/xsim.texsx-498299.tex | 75 - .../xsim/doc/examples/xsim.texwelt-15093.pdf | Bin 36256 -> 0 bytes .../xsim/doc/examples/xsim.texwelt-15093.tex | 133 -- .../xsim/doc/examples/xsim.texwelt-23968.pdf | Bin 46008 -> 0 bytes .../xsim/doc/examples/xsim.texwelt-23968.tex | 70 - .../xsim/doc/examples/xsim.texwelt-6698.pdf | Bin 43899 -> 0 bytes .../xsim/doc/examples/xsim.texwelt-6698.tex | 86 - .../contrib/xsim/doc/examples/xsim.various.pdf | Bin 86646 -> 0 bytes .../contrib/xsim/doc/examples/xsim.various.tex | 237 -- macros/latex/contrib/xsim/doc/xsim-manual.cls | 1008 -------- macros/latex/contrib/xsim/doc/xsim.history | 158 -- macros/latex/contrib/xsim/doc/xsim.ideas | 29 - macros/latex/contrib/xsim/doc/xsim_manual.pdf | Bin 1269638 -> 0 bytes macros/latex/contrib/xsim/doc/xsim_manual.tex | 2421 -------------------- 79 files changed, 6080 deletions(-) delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.blanks.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.blanks.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.collections.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.collections.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.crossref.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.crossref.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.description-list.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.description-list.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.difficulties.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.difficulties.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.floating.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.floating.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.hints.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.hints.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.listings.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.listings.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.pointsums.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.pointsums.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.tex delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.various.pdf delete mode 100644 macros/latex/contrib/xsim/doc/examples/xsim.various.tex delete mode 100644 macros/latex/contrib/xsim/doc/xsim-manual.cls delete mode 100644 macros/latex/contrib/xsim/doc/xsim.history delete mode 100644 macros/latex/contrib/xsim/doc/xsim.ideas delete mode 100644 macros/latex/contrib/xsim/doc/xsim_manual.pdf delete mode 100644 macros/latex/contrib/xsim/doc/xsim_manual.tex (limited to 'macros/latex/contrib/xsim/doc') diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.blanks.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.blanks.pdf deleted file mode 100644 index dd26d67157..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.blanks.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.blanks.tex b/macros/latex/contrib/xsim/doc/examples/xsim.blanks.tex deleted file mode 100644 index b479e961c2..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.blanks.tex +++ /dev/null @@ -1,23 +0,0 @@ -\documentclass{article} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{xsim,lipsum,xcolor} - -\xsimsetup{ - solution/print = true , - blank/filled-style = \underline{\textcolor{red}{#1}} -} - -\begin{document} - -\begin{exercise}[points=3] - Erklären Sie den Begriff. - - \blank[width=4\linewidth,linespread=1.5]{} -\end{exercise} -\begin{solution} - \blank[width=4\linewidth,linespread=1.5]{Die Lösung hier soll rot sein.} -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.pdf deleted file mode 100644 index 99ba5bbc2a..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.tex b/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.tex deleted file mode 100644 index 9ff47d9d99..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.boxed-headings.tex +++ /dev/null @@ -1,30 +0,0 @@ -\documentclass{article} - -\usepackage{tcolorbox} -\usepackage{xsim} -\usepackage{needspace} - -\DeclareExerciseEnvironmentTemplate{custom} - {% - \Needspace*{5\baselineskip} - \begin{tcolorbox} - \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}.}% - \GetExercisePropertyT{subtitle}{ \textit{#1}}% - \end{tcolorbox} - \noindent - } - {\vspace{\baselineskip}} - -\xsimsetup{exercise/template = custom} - -\usepackage{lipsum} - -\begin{document} - -\begin{exercise}[subtitle=Foo bar baz] - \lipsum[1] -\end{exercise} - -\lipsum[2] - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.pdf deleted file mode 100644 index 72894ac9a6..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.tex b/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.tex deleted file mode 100644 index 66afaf9b8a..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.code-and-output.tex +++ /dev/null @@ -1,53 +0,0 @@ -\documentclass{article} -\usepackage{xsimverb,listings,xcolor} - -\lstdefinestyle{mystyle}{ - language = [AlLaTeX]TeX , - basicstyle = \ttfamily , - columns = fullflexible , - commentstyle = \color{gray!70} , - keywordstyle = \color{red!70!black} -} - -\makeatletter -\NewDocumentEnvironment{example}{!o} - {% - \XSIMgobblechars{2}% - \XSIMsetfilebegin{\@percentchar\space file `\jobname.tmp'}% - \XSIMsetfileend{\@percentchar\space bye bye}% - \IfNoValueTF{#1} - {\XSIMfilewritestart*{\jobname.tmp}} - {\XSIMfilewritestart{\jobname.tmp}}% - } - {% - \XSIMfilewritestop - \lstinputlisting[style=mystyle]{\jobname.tmp}% - \input{\jobname.tmp} - } - -\NewDocumentEnvironment{code}{!o} - {% - \XSIMgobblechars{2}% - \IfNoValueTF{#1} - {\XSIMfilewritestart*{\jobname.tmp}} - {\XSIMfilewritestart{\jobname.tmp}}% - } - {% - \XSIMfilewritestop - \lstinputlisting[style=mystyle]{\jobname.tmp}% - } -\makeatother - -\begin{document} - -\begin{example} - bla bla \LaTeX -\end{example} - -\bigskip - -\begin{code}[] - blubber \LaTeX -\end{code} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.collections.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.collections.pdf deleted file mode 100644 index fd785cc057..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.collections.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.collections.tex b/macros/latex/contrib/xsim/doc/examples/xsim.collections.tex deleted file mode 100644 index 990391e091..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.collections.tex +++ /dev/null @@ -1,62 +0,0 @@ -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseCollection{foo-easy} -\DeclareExerciseCollection{foo-medium} -\DeclareExerciseTagging{difficulty} - -\usepackage{lipsum} -\begin{filecontents*}{foo.tex} -\begin{exercise}[difficulty=easy,points=1] - foo one \lipsum[4] -\end{exercise} -\begin{solution} - foo one \lipsum[4] -\end{solution} -\begin{exercise}[difficulty=medium,points=1] - foo two \lipsum[4] -\end{exercise} -\begin{solution} - foo two \lipsum[4] -\end{solution} -\begin{exercise}[difficulty=easy,points=1] - foo three \lipsum[4] -\end{exercise} -\begin{solution} - foo three \lipsum[4] -\end{solution} -\end{filecontents*} - -\begin{document} - -\begin{exercise} - outside before -\end{exercise} - -\collectexercises{foo-easy} -\xsimsetup{difficulty=easy} -\input{foo.tex} -\collectexercisesstop{foo-easy} -% collection `foo-easy' now contains all exercises of file `foo.tex' tagged -% with `difficulty=easy' - -\collectexercises{foo-medium} -\xsimsetup{difficulty=medium} -\input{foo.tex} -\collectexercisesstop{foo-medium} -% collection `foo-medium' now contains all exercises of file `foo.tex' -% tagged with `difficulty=medium' - -\section{Easy} -\printcollection{foo-easy} - -\section{Medium} -\printcollection{foo-medium} - -\printsolutions[difficulty=medium] - -\section{All Exercises and Their Solutions Again, in Order of Appearance} - -\printcollection[print=both]{all exercises} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.crossref.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.crossref.pdf deleted file mode 100644 index 8151a0cef3..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.crossref.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.crossref.tex b/macros/latex/contrib/xsim/doc/examples/xsim.crossref.tex deleted file mode 100644 index fa2fbbb509..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.crossref.tex +++ /dev/null @@ -1,60 +0,0 @@ -\documentclass{article} -\usepackage{xsim,lipsum,hyperref} - -\DeclareExerciseHeadingTemplate{custom} - {\section{\XSIMtranslate{default-heading}}} - -\DeclareExerciseEnvironmentTemplate{custom} - {% - \IfInsideSolutionTF - {\label{sol:\ExerciseID}} - {\label{ex:\ExerciseID}} - \subsection* - {% - \XSIMmixedcase{\GetExerciseName}% - \IfInsideSolutionTF - { - to \GetExerciseParameter{exercise-name}% - ~\GetExerciseProperty{counter}% - } - {% - ~\GetExerciseProperty{counter} - \GetExercisePropertyT{subtitle} - { {\normalfont\itshape\PropertyValue}}% - }% - } - \noindent\llap{% - \footnotesize\sffamily - \IfInsideSolutionTF - {% - \XSIMmixedcase{\GetExerciseParameter{exercise-name}} - on page~\pageref{ex:\ExerciseID}.% - } - {% - \XSIMmixedcase{\GetExerciseParameter{solution-name}} - on page~\pageref{sol:\ExerciseID}.% - }% - \hspace*{\marginparsep}% - }% - } - {} -\xsimsetup{ - exercise/template = custom , - solution/template = custom , - print-solutions/headings-template = custom -} - -\begin{document} - -\section{Exercises} -\begin{exercise} - \lipsum[4] -\end{exercise} -\begin{solution} - \lipsum[4] -\end{solution} - -\clearpage -\printsolutions - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.description-list.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.description-list.pdf deleted file mode 100644 index d506ad960b..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.description-list.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.description-list.tex b/macros/latex/contrib/xsim/doc/examples/xsim.description-list.tex deleted file mode 100644 index f3c9ed6d74..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.description-list.tex +++ /dev/null @@ -1,42 +0,0 @@ -\documentclass{article} -\usepackage{xsim,lipsum} - -\DeclareExerciseEnvironmentTemplate{item} - {\item[\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}]} - {} -\xsimsetup{ - exercise/template=item, - solution/template=item, - print-solutions/headings-template=none -} - -\newenvironment{exercises} - {\section{Exercises}\description} - {\enddescription} - -\newenvironment{solutions} - {\section{Solutions}\description} - {\enddescription} - -\begin{document} - -\begin{exercises} - \begin{exercise} - \lipsum[4] - \end{exercise} - \begin{solution} - \lipsum[3] - \end{solution} - \begin{exercise} - \lipsum[12] - \end{exercise} - \begin{solution} - \lipsum[23] - \end{solution} -\end{exercises} - -\begin{solutions} - \printsolutions -\end{solutions} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.pdf deleted file mode 100644 index b1de5d6325..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.tex b/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.tex deleted file mode 100644 index 0ac3536776..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.different-point-types.tex +++ /dev/null @@ -1,52 +0,0 @@ -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseGoal{A} -\DeclareExerciseGoal{C} -\DeclareExerciseGoal{E} - -\newcommand*\printA{\TotalExerciseGoal{A}{~A~point}{~A~points}} -\newcommand*\printC{\TotalExerciseGoal{C}{~C~point}{~C~points}} -\newcommand*\printE{\TotalExerciseGoal{E}{~E~point}{~E~points}} - -\usepackage{needspace} -\DeclareExerciseEnvironmentTemplate{custom} - {% - \par\vspace{\baselineskip} - \Needspace*{2\baselineskip} - \noindent - \textbf{\GetExerciseProperty{counter}}% - \IfExercisePropertySetT{subtitle} - { \textit{\GetExerciseProperty{subtitle}}} % - \IfInsideSolutionF{% - \marginpar{% - (\IfExercisePropertySetTF{E}{\GetExerciseProperty{E}}{0}/% - \IfExercisePropertySetTF{C}{\GetExerciseProperty{C}}{0}/% - \IfExercisePropertySetTF{A}{\GetExerciseProperty{A}}{0})% - }% - }% - } - {} -\xsimsetup{ - exercise/template = custom , - solution/template = custom -} -\renewcommand*\theexercise{\arabic{exercise}.} - -\begin{document} - -Reachable: \printA, \printC, and \printE. - -\begin{exercise}[E=1] - Differentiate $y=3x^2+5x+3$. -\end{exercise} - -\begin{exercise}[E=2,C=1] - Find the equation of the tangent line to the function $y=x/2$ at $x=2$. -\end{exercise} - -\begin{exercise}[C=1,A=2] - Prove that the derivative of a constant is zero. -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.pdf deleted file mode 100644 index 846f19e201..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.tex b/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.tex deleted file mode 100644 index 02712f15d6..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.difficulties.tex +++ /dev/null @@ -1,53 +0,0 @@ -\documentclass{article} - -\usepackage[clear-aux]{xsim} -\DeclareExerciseTagging{difficulty} -\xsimsetup{ - difficulty={easy,hard} -} - -\DeclareExerciseEnvironmentTemplate{custom} - { - \subsection* - {% - \XSIMmixedcase {\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfExercisePropertySetT{difficulty} - { {\normalfont(\GetExerciseProperty{difficulty})}}% - \IfInsideSolutionF{% - \IfExercisePropertySetT{subtitle} - { {\normalfont\itshape\GetExerciseProperty{subtitle}}}% - }% - }% - \IfExercisePropertySetT{points} - {% - \marginpar - {% - \IfInsideSolutionF{\rule{1.2cm}{1pt}\slash}% - \GetExerciseProperty{points}% - \IfExercisePropertySetT{bonus-points} - {\nobreakspace(+\GetExerciseProperty{bonus-points})} - \nobreakspace\XSIMtranslate{point-abbr}% - }% - }% - } - {} - -\xsimsetup{exercise/template = custom} - -\begin{document} - -\begin{exercise}[difficulty=easy] - An easy question. -\end{exercise} -\begin{exercise}[difficulty=medium] - This one's a bit harder. -\end{exercise} -\begin{exercise}[difficulty=hard] - Now let’s see if you can solve this one. -\end{exercise} -\begin{exercise}[difficulty=medium] - This is medium but printed anyway -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.floating.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.floating.pdf deleted file mode 100644 index e2e96537ef..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.floating.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.floating.tex b/macros/latex/contrib/xsim/doc/examples/xsim.floating.tex deleted file mode 100644 index 08448df35a..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.floating.tex +++ /dev/null @@ -1,50 +0,0 @@ -% floating exercises: -\documentclass{article} -\usepackage{xsim,newfloat,caption,lipsum} - -\DeclareFloatingEnvironment[ - fileext=loe, - listname={List of Exercises}, - name=Exercise, - placement=htp, -]{ex} - -\DeclareExerciseEnvironmentTemplate{float} - {% - \ex - \captionsetup{labelformat=empty,singlelinecheck=false,listformat=empty} - \IfExercisePropertySetTF{subtitle}{% - \XSIMexpandcode{% - \noexpand\caption{% - \noexpand\textbf{% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - }: \GetExerciseProperty{subtitle}% - }% - }% - }{% - \caption{% - \textbf{% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - }% - }% - }% - } - {\endex} - -\xsimsetup{exercise/template = float} - -\begin{document} - -\listofexs - -\begin{exercise} - \lipsum[4] -\end{exercise} - -\begin{exercise}[subtitle=Let's have a look] - \lipsum[4] -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.pdf deleted file mode 100644 index 76cf1617cb..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.tex b/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.tex deleted file mode 100644 index 5ccdff63a4..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-80640.tex +++ /dev/null @@ -1,131 +0,0 @@ -% http://golatex.de/viewtopic,p,80640.html -\documentclass[fontsize=12pt,parskip=half]{scrartcl} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[ngerman]{babel} - -\newlength\breite -\setlength\breite{160mm} -\newlength\hoehe -\setlength\hoehe{80mm} - -\usepackage[ - hdivide={3.0cm,\breite,}, - vdivide={2.2cm,,2.2cm}]{geometry} -\usepackage[bitstream-charter]{mathdesign} - -\usepackage[babel]{microtype} - -\usepackage[inline]{enumitem} - -\usepackage{amsmath,siunitx} -\sisetup{ - locale = DE , - per-mode = fraction -} - -\usepackage{xsim,needspace,tikz,tcolorbox} - -\xsimsetup{ - exercise/template = gitter , - solution/template = gitter -} - -\DeclareExerciseEnvironmentTemplate{gitter} - {% - \IfInsideSolutionT{% - \tcolorbox[ - detach title , - title = Lösung: , - before upper = {\tcbtitle\space} , - fonttitle = \bfseries , - fontupper = \large , - valign = center , - colframe = black!50!white , - colback = black!12!white , - coltext = blue , - coltitle = blue , - height = \hoehe , - width = \breite , - sharp corners - ] - }% - } - {% - \IfInsideSolutionTF - {\endtcolorbox} - {% - \IfSolutionPrintF{% - \par - \begin{tikzpicture}[semitransparent] - \draw[step=4mm, line width=0.15mm, black!60!white] (0,0) grid - (\breite,\hoehe); - \end{tikzpicture} - \par - } - }% - } - -\begin{document} - -\begin{exercise} - Für die \textbf{Schülerausgabe} sollen Häuschen (Grid) mit Seitenlänge - \SI{4}{\mm} gesetzt werden. -\end{exercise} -\begin{solution} - Hier soll die Lösung stehen: $E=m\cdot c^2$. -\end{solution} - -\xsimsetup{solution/print=true} - -\begin{exercise} - Für die \textbf{Lehrerausgabe} sollen statt Häuschen die Lösung in - z.\,B. einer Box geschrieben werden. Dafür soll die Lösung (bezogen auf - dieses Beispiel) auch in einer Box mit der exakten Breite \SI{160}{\mm} und - der exakten Höhe \SI{80}{\mm} gesetzt werden. Weiter soll natürlich die - Position der Lösungsbox und der Häuschenbox exakt identisch sein. -\end{exercise} -\begin{solution} - Hier soll die Lösung stehen: $E=m\cdot c^2$. -\end{solution} - -\clearpage - -\begin{exercise} - Beschreiben Sie die \textbf{Satzgruppe des Pythagoras}. -\end{exercise} -\begin{solution} - \begin{align*} - \left.\begin{aligned} - c^2 &=a^2+b^2\\ - a^2 &=p\cdot c\;\wedge\; b^2=q\cdot c\\ - h^2 &=p\cdot q - \end{aligned}\right\} - \begin{gathered} - \text{Satzgruppe}\\ - \text{des Pythagoras} - \end{gathered} - \end{align*} -\end{solution} - -\begin{exercise} - Geben Sie die Formel der \textbf{gleichförmigen Bewegung} wieder. Gehen Sie - davon aus, dass Sie 1000~Meter in - \SI[parse-numbers=false]{3\frac{1}{2}}{Minuten} laufen. - \begin{enumerate*}[label=\bfseries\alph*)] - \item Mit welcher Geschwindigkeit legen Sie die Strecke zurück? - \item Geben Sie die Geschwindigkeit in \si{\km\per\hour} an. - \end{enumerate*} - \textbf{Hinweis:} Nehmen Sie zur Berechnung die vereinfachte Form und gehen - Sie davon aus, dass Ihre Geschwindigkeit konstant ist. -\end{exercise} -\begin{solution} - \begin{align*} - s &=v\cdot t+s_0 \\ - 1000 &=v\cdot 210 \\ - v &=\frac{\SI{1000}{\m}}{\SI{210}{\second}} \\ - v &=\SI{4.76}{\m\per\second} = \SI{17.1}{\km\per\hour} - \end{align*} -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.pdf deleted file mode 100644 index 97cb4659e0..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.tex b/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.tex deleted file mode 100644 index 8ae03971c5..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.golatex-91339.tex +++ /dev/null @@ -1,94 +0,0 @@ -% http://golatex.de/viewtopic,p,91339.html -\documentclass[18pt,a4paper]{article} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{xsim,tcolorbox} -\usepackage{amsmath} -\xsimsetup{ - exercise/within = section , - exercise/the-counter = \thesection.\arabic{exercise} , - print-solutions/headings-template=none -} -\SetExerciseParameters{exercise}{ - exercise-template = mine , - solution-template = mine -} - -\DeclareExerciseEnvironmentTemplate{mine} - {% - \tcolorbox[ - % colors: - colback = white , colframe = black , coltitle = black , - % rules: - boxrule = 0pt , toprule = 1pt , bottomrule = 1pt , arc = 0pt , - % spacing: - boxsep = 0pt , left = 0pt , right = 0pt , - % title: - detach title , before upper = \tcbtitle\par\noindent , - fonttitle = \bfseries , - title = \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter} - ] - } - {\endtcolorbox} - -\DeclareExerciseTranslation{German}{exercise}{Aufgabe} -\DeclareExerciseTagging{difficulty} - -\begin{document} - -\section{Wellenausbreitung im Vakuum und in Materie} -\subsection{Maxwellsche Gleichungen} - -\begin{align*} - \nabla \cdot \vec{E}\left(\vec{r}, t \right) = - \frac{\varrho\left(\vec{r}, t \right)}{\varepsilon_0} -\end{align*} - -\begin{exercise}[difficulty=easy] -Something stupid -\end{exercise} -\begin{solution} -Here is a nonstupid solution for your problem -\end{solution} - -\subsection{Empirischer Zugang zu Wellengleichungen} - -\begin{exercise}[difficulty=hard] -Eine weitere Aufgabe -\end{exercise} -\begin{solution} -Solution Number 2 -\end{solution} - -\subsection*{Lösungen} -\printsolutions[section,difficulty=hard] - -\section{Wellenausbreitung im Vakuum und in Materie} -\subsection{Maxwellsche Gleichungen} - -\begin{align*} - \nabla \cdot \vec{E}\left(\vec{r}, t \right) = - \frac{\varrho\left(\vec{r}, t \right)}{\varepsilon_0} -\end{align*} - -\begin{exercise}[difficulty=easy] -Something stupid -\end{exercise} -\begin{solution} -Here is a nonstupid solution for your problem -\end{solution} - -\subsection{Empirischer Zugang zu Wellengleichungen} - -\begin{exercise}[difficulty=hard] -Eine weitere Aufgabe -\end{exercise} -\begin{solution} -Solution Number 2 -\end{solution} - -\subsection*{Lösungen} -\printsolutions[section] - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.pdf deleted file mode 100644 index 248358c4a1..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.tex b/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.tex deleted file mode 100644 index 8e9731de24..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.grade-distribution.tex +++ /dev/null @@ -1,56 +0,0 @@ -\documentclass{article} -\usepackage{xsim} - -\xsimsetup{grades/split=;} - -\DeclareGradeDistribution{ - 1 = 1 ; - 1,5 = .9167 ; - 2 = .8333 ; - 2,5 = .75 ; - 3 = .6667 ; - 3,5 = .5833 ; - 4 = .5 -} - -\begin{document} - -\begin{exercise}[points=4] -\end{exercise} - -\begin{exercise}[points=4] -\end{exercise} - -\begin{exercise}[points=4] -\end{exercise} - -\begin{exercise}[points=4,bonus-points=10] -\end{exercise} - -\begin{exercise}[points=4] -\end{exercise} - -\begin{exercise}[points=4] -\end{exercise} - - -\goalsforgrade{points + bonus-points}{1,5} -\goalsforgrade{points+bonus-points}{2} - -\pointsforgrade{1} -\pointsforgrade{1,5} -\pointsforgrade{2} -\pointsforgrade{2,5} -\pointsforgrade{3} -\pointsforgrade{3,5} -\pointsforgrade{4} - -\totalgoalforgrade{1} -\totalgoalforgrade{1,5} -\totalgoalforgrade{2} -\totalgoalforgrade{2,5} -\totalgoalforgrade{3} -\totalgoalforgrade{3,5} -\totalgoalforgrade{4} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.hints.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.hints.pdf deleted file mode 100644 index a34fbd8f79..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.hints.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.hints.tex b/macros/latex/contrib/xsim/doc/examples/xsim.hints.tex deleted file mode 100644 index 10a0bffed9..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.hints.tex +++ /dev/null @@ -1,59 +0,0 @@ -% https://tex.stackexchange.com/q/224408/ -\documentclass{article} -\usepackage{xsim} - -\usepackage{needspace} - -\DeclareExerciseProperty{hint} - -% we'll use a description list for the hints: -\newcommand\printhints{% - \begin{description} - \ForEachUsedExerciseByType{% - \def\ExerciseType{##1}% - \def\ExerciseID{##2}% - \GetExercisePropertyT{hint} - {% - \item[\XSIMmixedcase{\GetExerciseName}~##3] - ####1% - }% - }% - \end{description} -} - -\newcommand\hint[1]{\SetExerciseProperty{hint}{#1}} - -\begin{document} - -\section{Problems} -% set hint through option: -\begin{exercise}[subtitle=Pythagoras,hint=This is a hint to the first problem.] - This is the first problem. -\end{exercise} -\begin{solution} - This is the solution to the first problem. -\end{solution} - -\begin{exercise}[subtitle=Another Problem] - This is the second problem. -\end{exercise} -\begin{solution} - This is the solution to the second problem. -\end{solution} - -% set hint with custom command: -\begin{exercise}[subtitle=Yet Another Problem] - This is the third problem. - \hint{This is a hint to the third problem.} -\end{exercise} -\begin{solution} - This is the solution to the third problem. -\end{solution} - -\section{Hints} -\printhints - -\section{Solutions} -\printsolutions[headings=false] - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.listings.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.listings.pdf deleted file mode 100644 index 0d388f2c70..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.listings.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.listings.tex b/macros/latex/contrib/xsim/doc/examples/xsim.listings.tex deleted file mode 100644 index 6dd302feb0..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.listings.tex +++ /dev/null @@ -1,48 +0,0 @@ -% http://tex.stackexchange.com/questions/131546/ -\documentclass{article} - -\usepackage{xcolor} -\usepackage{listings} -\usepackage{xsim} - -\lstset{ - frame=single, - xleftmargin=20pt, - numbers=left, - numberstyle=\small, - tabsize=2, - breaklines, - showspaces=false, - showstringspaces=false, - language=C, - basicstyle=\small\ttfamily, - commentstyle=\itshape\color{gray} -} - -\begin{document} - -\begin{exercise}[points=6] -Consider the following C program. -\begin{lstlisting} -#include - -int main(int argc, char *argv[]) { - printf("hello, world\n"); -} -\end{lstlisting} -\end{exercise} -\begin{solution} -Consider the following C program. -\begin{lstlisting} -#include - -int main(int argc, char *argv[]) { - printf("hello, world\n"); -} -\end{lstlisting} -\end{solution} - -\pagebreak -\printsolutions - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.pdf deleted file mode 100644 index 8050ee8f90..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.tex b/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.tex deleted file mode 100644 index c2a9a3fe36..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.listofexercises.tex +++ /dev/null @@ -1,81 +0,0 @@ -% https://tex.stackexchange.com/q/94766/ -\documentclass[a4paper,10pt]{book} -\usepackage[utf8]{inputenc} - -\usepackage{xsim} -\xsimsetup{ - exercise/within=chapter, - exercise/template=theorem , - exercise/the-counter=\thechapter.\arabic{exercise} -} - -\DeclareExerciseEnvironmentTemplate{theorem} - {% - \par\addvspace{\baselineskip} - \noindent - \XSIMexpandcode{\noexpand\label{\ExerciseType:\ExerciseID}} - \Large\textbf{% - \space\GetExerciseProperty{counter}% - \GetExercisePropertyT{subtitle}{ (\PropertyValue)}% - } \normalsize\itshape - } - {\par\addvspace{\baselineskip}} - -\usepackage{multicol} - -\newcommand\listofexercises{ - \chapter*{List of Exercises} - \def\CurrentExerciseChapter{}% - \ForEachPrintedExerciseByType{ - \global\let\LastExerciseChapter\CurrentExerciseChapter - \xdef\CurrentExerciseChapter{\ExercisePropertyGet{##1}{##2}{chapter}}% - \XSIMifeqF{\LastExerciseChapter}{\CurrentExerciseChapter} - { - \XSIMifblankF{\LastExerciseChapter}{\end{multicols}} - \begin{multicols}{2}% - [\contentsline{chapter}{Chapter \CurrentExerciseChapter}{}{}] - } - \contentsline - {section} - {% - Exercise \ExercisePropertyGet{##1}{##2}{counter}% - \XSIMifblankF{##4}{ (##4)}% - } - {\pageref{##1:##2}}{}% - } - \end{multicols} -} - -% \usepackage{hyperref} -% \newcommand\theHexercise{\thechapter.\arabic{exercise}} - -\begin{document} - -\chapter{kinetic} -\begin{exercise} - 435-1 -\end{exercise} -\begin{exercise}[subtitle=Foo Bar] - 435-2 -\end{exercise} -\begin{exercise} - 435-3 -\end{exercise} - -\chapter{momentum} -\begin{exercise} - 436-1 -\end{exercise} -\begin{exercise} - 436-2 -\end{exercise} -\begin{exercise} - 436-3 -\end{exercise} -\begin{exercise} - 436-4 -\end{exercise} - -\listofexercises - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.pdf deleted file mode 100644 index 02dac6c4df..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.tex b/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.tex deleted file mode 100644 index e0db3eb0c5..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.multiplechoice.tex +++ /dev/null @@ -1,70 +0,0 @@ -\documentclass{scrartcl} -\usepackage[clear-aux]{xsim} - -\usepackage{enumitem,amssymb,fmtcount} -\newlist{choices}{itemize}{1} -\setlist[choices]{label=$\Box$} -\newcommand*\choice{\item} - -\DeclareExerciseProperty{choices} -\DeclareExerciseProperty*{multiple} -\DeclareExerciseEnvironmentTemplate{mc} - {% - \UseExerciseTemplate{begin}{default}% - \IfExerciseBooleanPropertyTF{multiple} - {Select one or more correct answers} - {% - \GetExercisePropertyT{choices} - {Select \numberstringnum{#1} correct answer\ifnum#1>1 s\fi.}% - }% - \begin{choices} - } - {% - \end{choices} - \UseExerciseTemplate{end}{default}% - } - -\DeclareExerciseType{mc}{ - exercise-env = multiplechoice , - solution-env = correctchoices , - exercise-name = Question , - solution-name = Solution , - exercise-template = mc , - solution-template = mc , - counter = exercise -} - -\xsimsetup{ - exercise/name = Question , - solution/name = Solution -} - -\begin{document} - -\section{Questions} -\begin{multiplechoice}[choices=1] - \choice one - \choice two - \choice three - \choice four -\end{multiplechoice} - -\begin{exercise} - Answer this question on a separate sheet. -\end{exercise} - -\begin{multiplechoice}[multiple] - \choice one - \choice two - \choice three - \choice four -\end{multiplechoice} - -\begin{multiplechoice}[choices=2] - \choice one - \choice two - \choice three - \choice four -\end{multiplechoice} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.pdf deleted file mode 100644 index aa822a1bd7..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.tex b/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.tex deleted file mode 100644 index 29d7ac0cdc..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.pointsums.tex +++ /dev/null @@ -1,30 +0,0 @@ -\documentclass{article} -\usepackage{xsim,lipsum} - -\NewDocumentCommand\printcompletepoints{}{% - \TotalExerciseGoals{points + bonus-points} - {\,\XSIMtranslate{point}} - {\,\XSIMtranslate{points}}% -} - -\NewDocumentCommand\pointsandbonus{}{% - \TotalExerciseGoal{points}{}{}% - \IfExerciseGoalsSumTF{bonus-points}{=0} - {} - {\,(+\,\TotalExerciseGoal{bonus-points}{}{})}% - \,\XSIMtranslate{points}% -} - -\begin{document} - -\begin{exercise}[points=3,bonus-points=1] - \lipsum[4] -\end{exercise} - -\begin{exercise}[points=8,bonus-points=3] - \lipsum[4] -\end{exercise} - -\printtotalpoints\ vs.\@ \printcompletepoints\ vs.\@ \pointsandbonus - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.pdf deleted file mode 100644 index 773d34f495..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.tex b/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.tex deleted file mode 100644 index 60877b1a4a..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.randomexercises.tex +++ /dev/null @@ -1,58 +0,0 @@ -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseCollection{foo} - -\usepackage{filecontents} -\begin{filecontents*}{random.tex} -\begin{exercise}[ID=A] - exercise A -\end{exercise} -\begin{solution} - solution A -\end{solution} -\begin{exercise}[ID=B] - exercise B -\end{exercise} -\begin{solution} - solution B -\end{solution} -\begin{exercise}[ID=C] - exercise C -\end{exercise} -\begin{solution} - solution C -\end{solution} -\begin{exercise}[ID=D] - exercise D -\end{exercise} -\begin{solution} - solution D -\end{solution} -\begin{exercise}[ID=E] - exercise E -\end{exercise} -\begin{solution} - solution E -\end{solution} -\begin{exercise}[ID=F] - exercise F -\end{exercise} -\begin{solution} - solution F -\end{solution} -\end{filecontents*} - -\begin{document} - -\collectexercises{foo} -\input{random.tex} -\collectexercisesstop{foo} - -\section*{Exercises} -\printrandomexercises[collection=foo,exclude=D]{3} - -\section*{Solutions} -\printsolutions* - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.pdf deleted file mode 100644 index af889a6709..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.tex deleted file mode 100644 index 3b52ce46b2..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-13635.tex +++ /dev/null @@ -1,70 +0,0 @@ -% https://tex.stackexchange.com/q/13635/ -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseEnvironmentTemplate{theorem:remark} - { - \par\addvspace{\baselineskip} - \noindent - \textit{% - \IfInsideSolutionF{\XSIMmixedcase{\GetExerciseName}~}% - \GetExerciseProperty{counter}}% - \GetExercisePropertyT{subtitle}{ \textup{(#1)}}% - . % - } - {\par\addvspace{\baselineskip}} - -\DeclareExerciseHeadingTemplate{exercises}{\subsection*{Exercises}} - -\xsimsetup{ - exercise/template = theorem:remark , - exercise/within = section , - exercise/the-counter = \thesection.\arabic{exercise} , - print-collection/headings = true , - print-collection/headings-template = exercises -} - -\DeclareExerciseCollection{prime numbers} -\DeclareExerciseCollection{Zeta function} - -\begin{document} - -\collectexercises{prime numbers} -\section{Prime Numbers} - -A \emph{prime number} is a positive integer other than $1$ that is only -divisible by $1$ and itself. - -\begin{exercise}[subtitle=Euclid's Theorem] - \label{ex:euclid} - Show that there are infinitely many prime numbers. -\end{exercise} - -As you will show in Exercise \ref{ex:euclid}, there are infinitely many -primes. The number of primes that are smaller than a given natural number $n$ -is denoted $\pi(n)$. - -\begin{exercise} - Find an asymptotic formula for $\pi(n)$. \emph{Hint:} You might find - Exercise \ref{ex:zeta} helpful. -\end{exercise} -\collectexercisesstop{prime numbers} - -\printcollection{prime numbers} - -\collectexercises{Zeta function} -\section{Zeta function} - -The zeta function is given by $\zeta(s) = \sum_{n=1}^\infty n^{-s}$, where $s$ -is a complex number with real part bigger than $1$. -\begin{exercise}\label{ex:zeta} - Extend $\zeta$ as far as possible and find all zeros - of the function. -\end{exercise} -For example $\zeta(2) = \frac{\pi^2}{6}$. - -\collectexercisesstop{Zeta function} - -\printcollection{Zeta function} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.pdf deleted file mode 100644 index 6c9fc4482a..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.tex deleted file mode 100644 index 2edb7bfdad..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-155630.tex +++ /dev/null @@ -1,26 +0,0 @@ -% https://tex.stackexchange.com/q/155630/ -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseCollection{foo} - -\begin{document} - -\collectexercises{foo} -\begin{exercise} - foo -\end{exercise} -\begin{exercise} - bar -\end{exercise} -\begin{exercise} - baz -\end{exercise} -\collectexercisesstop{foo} - -% shuffle around for a different version: -\printexercise{exercise}{1} -\printexercise{exercise}{3} -\printexercise{exercise}{2} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.pdf deleted file mode 100644 index 9492549598..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.tex deleted file mode 100644 index 334275140a..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-199360.tex +++ /dev/null @@ -1,60 +0,0 @@ -% http://tex.stackexchange.com/a/199360/ -\documentclass{scrartcl} -\usepackage[clear-aux]{xsim} - -\usepackage{tcolorbox,blindtext} - -\DeclareExerciseEnvironmentTemplate{custom} - {% - \begin{tcolorbox}[ - width = \textwidth , - colbacktitle = \IfInsideSolutionTF{green}{red} , - coltitle = black , - title = {\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}]} - {\end{tcolorbox}} - -\xsimsetup{ - exercise/template = custom , - solution/template = custom -} - -\begin{document} - -\begin{exercise} - First Question -\end{exercise} -\begin{solution} - Yes, it's a question -\end{solution} - -\begin{exercise}[print=false,use] - Question: What is special about Brontosaurs? -\end{exercise} -\begin{solution} - They are thin at one end, thick in the middle and thin on the end again -\end{solution} - -\begin{exercise} - Proof -\begin{equation} - a^2 + b^2 = c^2 -\end{equation} -\end{exercise} -\begin{solution} - to be done -\end{solution} - -\begin{exercise} - Cite a Latin Text -\end{exercise} -\begin{solution} - \textcolor{blue}{\blindtext} -\end{solution} - -\begin{exercise} - \textcolor{red}{\textbf{Cite a Latin text again}} -\end{exercise} - -\printsolutions* - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.pdf deleted file mode 100644 index c006aeb34c..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.tex deleted file mode 100644 index 1c2be46df3..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-299534.tex +++ /dev/null @@ -1,32 +0,0 @@ -% http://tex.stackexchange.com/q/299534/ -\documentclass{article} -\usepackage{pythontex} -\usepackage{xsim} - -\begin{document} - -\section{Test} - -\begin{exercise}[subtitle = Codeless Question,points=10] - A question without code, worth 10 points. Subtitle and point values are in - correct place. -\end{exercise} -\begin{solution} - Solution 1 -\end{solution} - -\begin{exercise}[subtitle = Codeful Question,points=15] -Now with PythonTeX: -\begin{pyblock} -print("hello, world!") -sum = 0 -for j in range(0,100): - sum += j -print(sum) -\end{pyblock} -\end{exercise} -\begin{solution} - Solution 2 -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.pdf deleted file mode 100644 index fb92e875a9..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.tex deleted file mode 100644 index c10928da0c..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-305110.tex +++ /dev/null @@ -1,67 +0,0 @@ -% https://tex.stackexchange.com/q/305110 -\documentclass[12pt, a4paper]{book} -\usepackage{xsim} - -\xsimsetup{ - exercise/within = section , - exercise/the-counter = \thesection.\arabic{exercise} -} - -\begin{document} -\part{EXCERCISES} -\chapter{Topic 1} - -\section{Section} - -\begin{exercise} - I'm an excercise. -\end{exercise} -\begin{solution} - I'm a solution. -\end{solution} - -\section{Section} - -\begin{exercise} - I'm an excercise. -\end{exercise} -\begin{solution} - I'm a solution. -\end{solution} - -\chapter{Topic 2} - -\section{Section} -\begin{exercise} - I'm an excercise. -\end{exercise} -\begin{solution} - I'm a solution. -\end{solution} - -\section{Section} -\begin{exercise} - I'm an excercise. -\end{exercise} -\begin{solution} - I'm a solution. -\end{solution} - -\setcounter{chapter}{0} -\part{SOLUTIONS} - -\chapter{Topic 1} -\section{Section} -\printsolutions[chapter=1,section=1] - -\section{Section} -\printsolutions[chapter=1,section=2] - -\chapter{Topic 2} -\section{Section} -\printsolutions[chapter=2,section=1] - -\section{Section} -\printsolutions[chapter=2,section=2] - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.pdf deleted file mode 100644 index eb27dce140..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.tex deleted file mode 100644 index 74e762fa08..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-308883.tex +++ /dev/null @@ -1,13 +0,0 @@ -% https://tex.stackexchange.com/q/308883/ -\documentclass{article} -\usepackage{xsim,siunitx} -\xsimsetup{goal-print={\num{#1}}} -\sisetup{output-decimal-marker={,}} - -\begin{document} - -\begin{exercise}[points=2.5] - foo -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.pdf deleted file mode 100644 index 4b5a09474d..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.tex deleted file mode 100644 index a0b204f914..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-338165.tex +++ /dev/null @@ -1,70 +0,0 @@ -% http://tex.stackexchange.com/q/338165 -\documentclass{article} -\usepackage[T1]{fontenc} -\usepackage{leading,microtype} -\usepackage[french]{babel} - -\usepackage{tasks} -\usepackage{xsim} -\usepackage{tcolorbox} -\tcbuselibrary{breakable, skins} -\settasks{ label = \arabic*. } - -\DeclareExerciseEnvironmentTemplate{boxed} - {% - \tcolorbox[ - enhanced , - attach boxed title to top center = {yshift=-7.5pt} , - colback = white , colbacktitle = white , - coltitle = black , colframe = black , - boxed title style = { colframe = white } , - fonttitle=\bfseries, - sharp corners=all, - breakable, - title= - \XSIMmixedcase{\GetExerciseName}% - \IfInsideSolutionF{% - ~\GetExerciseProperty{counter}% - \IfExercisePropertySetT{subtitle}{: \GetExerciseProperty{subtitle}}% - }% - ] - } - {\endtcolorbox} - -\xsimsetup{ - exercise/template = boxed , - solution/template = boxed , - solution/print = true -} - -\leading{15pt} - -\newcommand*\complement{\overline} -\newcommand*\union{\cup} -\newcommand*\intersection{\cap} -\newcommand*\set[1]{\{#1\}} - -\begin{document} - -\begin{exercise}[subtitle=Set Calculus] - Soient $E=\set{1,2,3,4,5,6,7}$ et $A$, $B$, $C$ et $D$ quatre parties de E - d\'efinies par $A=\set{1,2,3,4}$, $B=\set{4,5,6,7}$, $C=\set{1,3,5,7}$ et - $D=\set{2,3,4,5,6}$. - \begin{tasks}(2) - \task Calculer $\complement{A}$. - \task Calculer $(A\union B) \intersection (C\union D)$. - \task Calculer $(A\intersection B) \union (C\intersection D)$. - \task Calculer $\complement{(\complement{A}\union B)} \union - \complement{(C\intersection D)}$. - \end{tasks} -\end{exercise} -\begin{solution} - \begin{tasks}(2) - \task $\set{5,6,7}$ - \task $E$ - \task $\set{3,4,5}$ - \task $\set{1,2,3,4,6,7}$ - \end{tasks} -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.pdf deleted file mode 100644 index 36645464fc..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.tex deleted file mode 100644 index 8f49a92f60..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-350028.tex +++ /dev/null @@ -1,134 +0,0 @@ -% http://tex.stackexchange.com/q/350028/ -\documentclass{book} -\usepackage[T1]{fontenc} -\usepackage{xsim} -\usepackage[most]{tcolorbox} -\tcbuselibrary{skins,breakable} - -\DeclareExerciseEnvironmentTemplate{tcolorbox} - {% - \tcolorbox[ - enhanced, - colframe=green!20!black, - colback=yellow!10!white, - coltitle=green!40!black, - fonttitle=\bfseries, - underlay={% - \begin{tcbclipinterior} - \shade[ - inner color=\IfInsideSolutionTF{red!50!yellow}{green!80!yellow}, - outer color=yellow!10!white] - (interior.north west) circle (2cm); - \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}] - (interior.south west) grid (interior.north east); - \end{tcbclipinterior}% - }, - attach title to upper=\quad, - title = \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter} - \IfExercisePropertySetT{points}{% - (\GetExerciseProperty{points} - \IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}})% - }]% - \IfInsideSolutionT{\label{solution:\ExerciseID}}% - } - {% - \endtcolorbox - \vspace*{\baselineskip} - \IfInsideSolutionTF - {% - \noindent Exercise~\GetExerciseProperty{counter} is on - page~\GetExerciseProperty{page}.% - } - {% - \noindent The solution of this exercise is on - page~\pageref{solution:\ExerciseID}.% - }% - \vspace{\baselineskip} - } - -\xsimsetup{ - exercise/template = tcolorbox , - solution/template = tcolorbox -} - -\usepackage{fmtcount,etoolbox} -\newrobustcmd*\mystringnum[2]{\csname#1stringnum\endcsname{#2}} -\renewcommand*\thechapter{\mystringnum{number}{\value{chapter}}} -\renewcommand*\thesection{\arabic{chapter}.\arabic{section}} - -% for the header: \MakeUppercase{\mystringnum{number}{1}} -% => \mystringnum{NUMBER}{1} -% => \NUMBERstringnum{1} -% elsewhere: \mystringnum{number}{1} -% => \numberstringnum{1} - -\usepackage{totcount} -\regtotcounter{chapter} - -\newcounter{chapters} -\setcounter{chapters}{1} -\newcommand*\printsolutionsperchapter{% - \whileboolexpr - { test { \ifnumless {\value{chapters}} {\totvalue{chapter}+1} } } - {% - \printsolutions[chapter=\value{chapters},headings-template=per-chapter] - \stepcounter{chapters}% - }% -} - -\begin{document} - -\chapter{The First Chapter} - -\begin{exercise} - Compute the derivative of the following function: - \begin{equation*} - f(x) = \sin((\sin x)^2) - \end{equation*} -\end{exercise} -\begin{solution} - The derivative is: - \begin{align*} - f’(x) &= ( \sin((\sin x)^2) )' - = \cos((\sin x)^2) \cdot 2\sin x \cos x - \end{align*} -\end{solution} - -\begin{exercise} - Compute the derivative of the following function: - \begin{equation*} - f(x) = \sin((\sin x)^2) - \end{equation*} -\end{exercise} -\begin{solution} - The derivative is: - \begin{align*} - f’(x) &= ( \sin((\sin x)^2) )' - = \cos((\sin x)^2) \cdot 2\sin x \cos x - \end{align*} -\end{solution} - -\chapter{The Second Chapter} - -\begin{exercise} - Compute the derivative of the following function: - \begin{equation*} - f(x) = (x^2+1) \sqrt{x^4+1} - \end{equation*} -\end{exercise} -\begin{solution} - The derivative is: - \begin{align*} - f’(x) &= ( (x^2+1) \sqrt{x^4+1} )' - = 2x\sqrt{x^4+1} + \frac{2x^3(x^2+1)}{\sqrt{x^4+1}} - \end{align*} -\end{solution} - -\clearpage -\section{Solutions of the Exercices} - -\printsolutionsperchapter - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.pdf deleted file mode 100644 index 6aa9ab572b..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.tex deleted file mode 100644 index b62b85127a..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369065.tex +++ /dev/null @@ -1,77 +0,0 @@ -% https://tex.stackexchange.com/q/369065/ -\documentclass{article} -\usepackage{xsim,tcolorbox,needspace} - -\xsimsetup{ - exercise/within=section , - exercise/the-counter = \thesection.\arabic{exercise} , - exercise/template=cyan-box , - exercise/name=Example , - solution/template=red , - solution/print=true -} - -\DeclareExerciseEnvironmentTemplate{cyan-box} - {% - \begin{tcolorbox}[arc=0mm,boxrule=1pt,colback=white,colframe=cyan,leftrule=3mm] - \textsf{% - \MakeUppercase{% - \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}% - }% - }% - \GetExercisePropertyT{subtitle}{ \textit{#1}}% - \quad - } - {\end{tcolorbox}} - -\DeclareExerciseEnvironmentTemplate{red} - {% - \par - \Needspace*{2\baselineskip} - \noindent - \textsf{\textcolor{red}{\MakeUppercase{\XSIMmixedcase{\GetExerciseName}}}}% - \quad - } - {\par\bigskip} - -\begin{document} - -\section{My first set of exercises} -\begin{exercise} - Prove that $\frac{1}{2}\Delta(f_{ij}f^{ij}) - =\nabla^{k}f^{ij}+f^{ij}f^{k}[2\nabla_{i}R_{jk}-\nabla_{k}R_{ij}]$ -\end{exercise} -\begin{solution} - From \dots -\end{solution} - -\begin{exercise} - Prove that Paulinho is smart. -\end{exercise} -\begin{solution} - All ducks are smart. Paulinho is a duck. Therefore, Paulinho is smart. -\end{solution} - -\begin{exercise} - Prove that Paulinho is smart. -\end{exercise} -\begin{solution} - All ducks are smart. Paulinho is a duck. Therefore, Paulinho is smart. -\end{solution} - -\section{My second set of exercises} -\begin{exercise} - Prove that Paulinho is smart. -\end{exercise} -\begin{solution} - All ducks are smart. Paulinho is a duck. Therefore, Paulinho is smart. -\end{solution} - -\begin{exercise} - Prove that Paulinho is smart. -\end{exercise} -\begin{solution} - All ducks are smart. Paulinho is a duck. Therefore, Paulinho is smart. -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.pdf deleted file mode 100644 index 2bc106f303..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.tex deleted file mode 100644 index e13b8653f4..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369636.tex +++ /dev/null @@ -1,46 +0,0 @@ -% https://tex.stackexchange.com/q/369686/ -\documentclass[a4paper,11pt]{article} -\usepackage[top=2cm, bottom=3cm, left=4cm, right=4cm]{geometry} - -\usepackage[T1]{fontenc} -\usepackage{fourier} -\usepackage{tgpagella} -\usepackage[utf8]{inputenc} - -\usepackage{xsim,needspace,adjustbox,scrextend} - -\xsimsetup{ - exercise/the-counter = \arabic{exercise}. , - exercise/template = square -} - -\DeclareExerciseEnvironmentTemplate{square} - {% - \Needspace*{2\baselineskip}% - \addmargin[0pt]{.15\textwidth}% - \par\noindent - \adjustbox{ - fbox = 1pt 0pt, - lap = {\textwidth}, - valign = t, - set vsize = {0pt}{0pt} - }{\rule{0pt}{20pt}\hspace{20pt}}% - \textbf{\GetExerciseProperty{counter}} % - } - {\endaddmargin\vspace{\baselineskip}} - -\usepackage{lipsum} - -\begin{document} - -\noindent\hrulefill - -\begin{exercise} - \lipsum[1] -\end{exercise} - -\begin{exercise} - \lipsum[2] -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.pdf deleted file mode 100644 index 73eab39f10..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.tex deleted file mode 100644 index 58b6800f93..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-369803.tex +++ /dev/null @@ -1,50 +0,0 @@ -% https://tex.stackexchange.com/q/369803 -\documentclass[a4paper,parskip=half]{scrartcl} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{amsmath} -\usepackage{amsthm} -\usepackage{amsfonts} -\usepackage{amssymb} - -\usepackage[left=2cm,right=2.5cm,top=2.5cm,bottom=2cm]{geometry} - -\usepackage{xsim,siunitx} -\DeclareExerciseTagging{difficulty} -\DeclareExerciseEnvironmentTemplate{custom} - {% - \subsection* - {% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfInsideSolutionF - {% - \IfExercisePropertySetT{subtitle} - { {\normalfont(\GetExerciseProperty{subtitle})}}% - }% - }% - }{} - -\xsimsetup{ - exercise/name = \XSIMtranslate{question} , - exercise/template=custom , - solution/print=true -} - -\begin{document} - -\begin{exercise}[ID=wdsw, subtitle = Widerstandswürfel , difficulty = 2] - Gegeben ist ein Würfel, wobei jede der Kanten einen Widerstand von $R = - \SI{1}{\ohm}$ hat. - - Wie groß ist der Widerstand entlang einer Raumdiagonale? -\end{exercise} -\begin{solution} - Wir wollen den Widerstand zwischen den Punkten $X$ und $Y$ bestimmen, also - entlang der Raumdiagonale (siehe Abb. \ref{fig:wdsws1}). Weil die - Raumdiagonale eine Symmetrieachse ist, sollte das Problem symmetrisch sein, - und deswegen eine recht einfache Lösung haben. -\end{solution} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.pdf deleted file mode 100644 index 13933e80c3..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.tex deleted file mode 100644 index 99b300c4a0..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-370642.tex +++ /dev/null @@ -1,25 +0,0 @@ -% https://tex.stackexchange.com/q/370642/ -\documentclass[a4paper,12pt]{article} -\usepackage{xsim} - -\DeclareExerciseEnvironmentTemplate{simple} - {\par\noindent\textbf{\GetExerciseProperty{counter}}. } - {\par} -\xsimsetup{exercise/template=simple} - -\begin{document} - -\begin{exercise}\label{eq1} - Let $X$ be such that\dots -\end{exercise} - -\begin{exercise} - In this exercise consider $Y=2$ \dots -\end{exercise} - -\begin{exercise} - Consider $X$ as in exercise~\ref{eq1} (I would like to see the issue - number~1) -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.pdf deleted file mode 100644 index 137c858769..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.tex deleted file mode 100644 index 1deafe5fb0..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-391530.tex +++ /dev/null @@ -1,67 +0,0 @@ -% https://tex.stackexchange.com/q/391530 -\documentclass{article} -\usepackage{xsim} - -\DeclareExerciseType{subquestion}{ - exercise-env = question , - solution-env = answer , - exercise-name = Question , - solution-name = Answer , - exercise-template = item , - solution-template = item -} - -\DeclareExerciseProperty{title} - -\makeatletter -\DeclareExerciseEnvironmentTemplate{named} - {% - \subsection*{% - \GetExercisePropertyTF{title} - {#1} - {??\@latex@warning{Please give an exercise title}}% - }% - } - {} -\makeatother - -\DeclareExerciseEnvironmentTemplate{item} - {\item} - {} - -\DeclareExerciseCollection{exercise-pool} - -\xsimsetup{ - exercise/template = named -} - -\begin{filecontents*}{\jobname-exercises.tex} -\begin{question} - Who is the Defence Minister? -\end{question} -\begin{question} - Who is the Home Minister? -\end{question} -\begin{question} - Who is the Finance Minister? -\end{question} -\begin{question} - Who is the External Affairs Minister? -\end{question} -\end{filecontents*} - -\begin{document} - -\collectexercises{exercise-pool} -\input{\jobname-exercises.tex} -\collectexercisesstop{exercise-pool} - -\begin{exercise}[title=Answer the following in one sentence:] - \begin{enumerate} - \item Who is the President? - \item Who is the Prime Minister? - \printrandomexercises[collection=exercise-pool]{2} - \end{enumerate} -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.pdf deleted file mode 100644 index c3796c8ee0..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.tex deleted file mode 100644 index fe6152ed96..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-395273.tex +++ /dev/null @@ -1,74 +0,0 @@ -\documentclass{article} -\usepackage{xsim,tcolorbox,needspace} - -% declare a boolean property: -\DeclareExerciseProperty*{short} -% declare a tag like property: -\DeclareExerciseTagging{level} - -% declare a template which typesets exercises differently according to given -% properties: -\DeclareExerciseEnvironmentTemplate{exercise} - {% - \renewcommand*\theenumi{\theexercise.\arabic{enumi}}% - \par\addvspace{\baselineskip} - \Needspace*{2\baselineskip} - \noindent - \GetExercisePropertyT{level}{\marginpar{\sffamily Level: #1}}% - \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}.} % - \GetExercisePropertyT{subtitle}{\textit{#1}}% - \IfExerciseBooleanPropertyF{short}{\par\noindent}% - } - {} - -% declare a tcolorbox template for the solutions: -\DeclareExerciseEnvironmentTemplate{solution} - {\tcolorbox[colback=yellow,colframe=red]} - {\endtcolorbox} - -% declare a user command for short answers: -\NewDocumentCommand\answer{m}{% - \IfSolutionPrintT{% - \UseExerciseTemplate{begin}{solution}% - #1% - \UseExerciseTemplate{end}{solution}% - }{}% -} - -% setup exercises and solutions: -\SetExerciseParameters{exercise}{ - exercise-template = exercise , - solution-template = solution -} - -% remove this option to hide the answers: -\xsimsetup{solution/print=true} - -\usepackage{lipsum} - -\begin{document} - -\begin{exercise}[level=hard,short] - Just a short exercise -\end{exercise} -\begin{solution} - The somewhat longer solution to the short exercise. \lipsum[1] -\end{solution} - -\begin{exercise}[subtitle=This one has a title,level=easy] - Answer the following questions. - \begin{enumerate} - \item question \answer{answer} - \item question \answer{answer} - \end{enumerate} -\end{exercise} - -\begin{exercise} - A long exercise. \lipsum[4]\answer{The answer} -\end{exercise} - -\begin{exercise}[level=medium,short] - Another short exercise.\answer{The answer} -\end{exercise} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.pdf deleted file mode 100644 index 99e8314406..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.tex deleted file mode 100644 index 6716d52e7e..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texsx-498299.tex +++ /dev/null @@ -1,75 +0,0 @@ -\documentclass{article} -\usepackage[no-files]{xsim} -\usepackage{tasks} - -\DeclareExerciseEnvironmentTemplate{item} - {\item[\GetExerciseProperty{counter}]} - {} - -\DeclareExerciseProperty{answer} - -\newcommand*\answer[1]{% - \XSIMexpandcode{% - \SetExerciseProperty{answer} - { (\noexpand\textit{\alph{task}}) \unexpanded{#1}}}% - #1% -} - -\newcommand*\getanswers{% - \def\betweenanswers{\def\betweenanswers{\hspace{2em}}}% - \ForEachUsedExerciseByID{% - \betweenanswers##3\ExercisePropertyGet{##1}{##2}{answer}% - }% -} - -\xsimsetup{ - exercise/template = item, - exercise/the-counter = \arabic{exercise}. -} - -\NewTasksEnvironment[ - label = (\textit{\alph*}) , - label-width = 14pt -]{choice}[\choice] - -\newenvironment{questions} - {\itemize} - {\enditemize} - -\begin{document} - -\section{Problems} -\begin{questions} - \begin{exercise} - What is the product of $-2$ and $3$? - \begin{choice}(4) - \choice \answer{$-6$} - \choice $6$ - \choice $5$ - \choice $-5$ - \end{choice} - \end{exercise} - \begin{exercise} - What is the sum of the sides of a polygon called? - \begin{choice}(2) - \choice Leg - \choice \answer{Perimeter} - \choice Area - \choice Volume - \end{choice} - \end{exercise} - \begin{exercise} - What is the sum of $-2$ and $-3$? - \begin{choice}(4) - \choice $-6$ - \choice $6$ - \choice $5$ - \choice \answer{$-5$} - \end{choice} - \end{exercise} -\end{questions} - -\section{Answers} -\getanswers - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.pdf deleted file mode 100644 index 3dc9fb1649..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.tex deleted file mode 100644 index 1f3fcfefcb..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-15093.tex +++ /dev/null @@ -1,133 +0,0 @@ -% http://texwelt.de/wissen/fragen/15093/ -\documentclass[paper=a4]{scrartcl} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{xsim,needspace} - -\DeclareExerciseTagging{AFB} -\DeclareExerciseEnvironmentTemplate{myexam} - { - \par\vspace{\baselineskip} - \Needspace*{3\baselineskip} - \noindent - \textbf{\IfInsideSolutionTF{Lösung}{Aufgabe}~\GetExerciseProperty{counter}.}% - \GetExercisePropertyT{subtitle}{\quad\textit{#1}}% - \hfill - \GetExercisePropertyT{AFB}{Schwierigkeit: #1}% - \GetExercisePropertyT{points}{% - \marginpar{% - \PropertyValue - \GetExercisePropertyT{bonus-points}{+\PropertyValue}% - \,P.% - }% - }% - \par\noindent - } - {} - -\xsimsetup{exercise/template=myexam} - -\begin{document} - -\begin{exercise}[subtitle=Eine Frage, AFB=1, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[AFB=2, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[AFB=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[subtitle=Eine andere Frage, AFB=4, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[subtitle=Eine Frage, AFB=2] - Das ist eine sehr tolle Frage. -\end{exercise} - -\end{document} - -% andere Idee: -\documentclass[paper=a4]{scrartcl} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{xsim} - -\DeclareExerciseTagging{AFB} - -\DeclareExerciseEnvironmentTemplate{AFB}{% - \subsection*{% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfExercisePropertySetT{subtitle}% - { {\normalfont\itshape\GetExerciseProperty{subtitle}}}% - } - \marginpar{% - \GetExercisePropertyT{AFB}{% - \leavevmode\llap{Schwierigkeit: \PropertyValue\hspace*{\marginparsep}}% - }% - \GetExercisePropertyT{points}{% - \PropertyValue - \nobreakspace\XSIMtranslate{points}% - }% - }% -}{} - -\DeclareExerciseEnvironmentTemplate{AFBsol}{% - \subsection*{% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfExercisePropertySetT{subtitle}% - { {\normalfont\itshape\GetExerciseProperty{subtitle}}}% - } - \textit{\small - \GetExercisePropertyT{AFB}{Schwierigkeit: \PropertyValue}% - \GetExercisePropertyT{points}{% - \IfExercisePropertySetT{AFB}{ }% - (\PropertyValue\nobreakspace\XSIMtranslate{points})% - }% - }% - \par\noindent -}{} - -\DeclareExerciseTranslation{German}{default-heading}{Lösungen} - -\xsimsetup{ - exercise/template=AFB , - solution/template=AFBsol , - exercise/name=Aufgabe -} - -\begin{document} - -\begin{exercise}[subtitle=Eine Frage, AFB=1, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} -\begin{solution} - Das ist eine tolle Lösung! -\end{solution} -\begin{exercise}[AFB=2, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[AFB=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[subtitle=Eine andere Frage, AFB=4, points=3] - Das ist eine sehr tolle Frage. -\end{exercise} - -\begin{exercise}[subtitle=Eine Frage, AFB=2] - Das ist eine sehr tolle Frage. -\end{exercise} - -\printsolutions - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.pdf deleted file mode 100644 index e9816a9793..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.tex deleted file mode 100644 index bf205bb7fb..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-23968.tex +++ /dev/null @@ -1,70 +0,0 @@ -% http://texwelt.de/wissen/fragen/23968/ -\documentclass{article} -\usepackage{xsim} - -% new property: -\DeclareExerciseProperty{shortsolution} - -% new environment: -\NewDocumentEnvironment{shortsolution}{+b} - {% - \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}% - \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}% - \SetExerciseProperty{shortsolution}{#1}% - } - {} - -% we'll use a description list for the list of short solutions: -\newcommand\printshortsolutions{% - \begin{description} - \ForEachUsedExerciseByType{% - \def\ExerciseType{##1}% - \def\ExerciseID{##2}% - \GetExercisePropertyT{shortsolution} - {% - \item[Short Solution ##3] - ####1% - }% - }% - \end{description} -} - -\begin{document} - -\section{Problems} -% set shortsolution through option: -\begin{exercise}[subtitle=Pythagoras] - This is the first problem. -\end{exercise} -\begin{shortsolution} - This is a shortsolution to the first problem. -\end{shortsolution} -\begin{solution} - This is the solution to the first problem. -\end{solution} - -\begin{exercise}[subtitle=Another Problem] - This is the second problem. -\end{exercise} -\begin{solution} - This is the solution to the second problem. -\end{solution} - -% set shortsolution with custom command: -\begin{exercise}[subtitle=Yet Another Problem] - This is the third problem. -\end{exercise} -\begin{shortsolution} - This is a shortsolution to the third problem. -\end{shortsolution} -\begin{solution} - This is the solution to the third problem. -\end{solution} - -\section{Shortsolutions} -\printshortsolutions - -\section{Solutions} -\printsolutions[headings=false] - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.pdf deleted file mode 100644 index 000663bf44..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.tex b/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.tex deleted file mode 100644 index 9e388b9f69..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.texwelt-6698.tex +++ /dev/null @@ -1,86 +0,0 @@ -% http://texwelt.de/wissen/fragen/6698/ -\documentclass{article} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} - -\usepackage{needspace} -\usepackage{xsim} -\xsimsetup{ - exercise/name = Aufgabe , - solution/name = Lösung , - exercise/within = section , - exercise/the-counter = \thesection.\arabic{exercise} , - exercise/template = mine -} - -\newif\iflist - -\DeclareExerciseEnvironmentTemplate{mine}{ - \par\vspace{\baselineskip} - \Needspace*{3\baselineskip} - \noindent - \textbf{\GetExerciseName~\GetExerciseProperty{counter}}% - \GetExercisePropertyT{subtitle}{\quad\textit{#1}}% - \iflist - \GetExercisePropertyT{page}{ (Seite~#1)}% - \fi - % not necessary if you don't use points: - \GetExercisePropertyT{points}{% - \marginpar{% - \PropertyValue - \GetExercisePropertyT{bonus-points}{+\PropertyValue}% - \,\XSIMtranslate{points-abbr}% - }% - }% - \par\noindent -} -{} - -\usepackage{multicol} - -\begin{document} - -\section{Erstes Kapitel} -\begin{exercise} - Eine erste Aufgabe -\end{exercise} -\begin{exercise} - Eine zweite Aufgabe -\end{exercise} - -\subsection{Erstes Unterkapitel} -\begin{exercise} - Eine Aufgabe in einem Unterkapitel -\end{exercise} -\begin{exercise} - Noch eine Aufgabe in einem Unterkapitel -\end{exercise} - -\subsubsection{Tiefer geschachteltes Unterkapitel} -\begin{exercise} - Noch eine Aufgabe -\end{exercise} - -\subsubsection{Weiter geschachtelt} -\begin{exercise} - Eine weitere Aufgabe -\end{exercise} - -\subsection{Zweites Unterkapitel} -\begin{exercise} - Und eine weitere Aufgabe -\end{exercise} - -\clearpage - -\section{Zweites Kapitel} -\begin{exercise} - Eine Aufgabe in einem anderen Kapitel -\end{exercise} - -\begin{multicols}{2}[\section{Aufgabenübersicht}] - \listtrue - \printcollection{all exercises} -\end{multicols} - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.various.pdf b/macros/latex/contrib/xsim/doc/examples/xsim.various.pdf deleted file mode 100644 index d0406e830c..0000000000 Binary files a/macros/latex/contrib/xsim/doc/examples/xsim.various.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/examples/xsim.various.tex b/macros/latex/contrib/xsim/doc/examples/xsim.various.tex deleted file mode 100644 index 1b7b13f98b..0000000000 --- a/macros/latex/contrib/xsim/doc/examples/xsim.various.tex +++ /dev/null @@ -1,237 +0,0 @@ -\documentclass{article} -\usepackage{xsim,lipsum,tcolorbox} - -\DeclareExerciseType{question}{ - exercise-env = question , - solution-env = hint , - exercise-name = Question , - solution-name = Hint , - exercise-template = default , - solution-template = default , - counter = exercise % shares a counter with the `exercise' type -} - -\DeclareExerciseType{problem}{ - exercise-env = problem , - solution-env = answer , - exercise-name = Problem , - solution-name = Answer , - exercise-template = tcolorbox , - solution-template = tcolorbox -} - -\DeclareExerciseProperty{grade} -\DeclareExerciseProperty{difficulty} - -\tcbuselibrary{breakable} -\DeclareExerciseEnvironmentTemplate{tcolorbox} - {% - \newcommand*\writehere{% - \IfInsideSolutionTF{}{% - \tcblower - \emph{Your answer:} - \vspace*{4cm} - }% - } - \vspace{\baselineskip} - \tcolorbox[ - colback = red!5!white , - colframe = red!75!black , - colbacktitle = yellow!50!red , - coltitle = red!25!black , - fonttitle = \bfseries , - subtitle style = { - boxrule = 0.4pt , - colback = yellow!50!red!25!white - } , - breakable , - title = \GetExerciseName~\GetExerciseProperty{counter} - \IfExercisePropertySetT{points}{% - (\GetExerciseProperty{points} - \IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}})% - }] - \IfInsideSolutionF{% - \IfExercisePropertySetT{tags}{% - Tags: \ListExerciseTags{tags}{, } \par - }% - }% - } - {% - \endtcolorbox - \vspace{\baselineskip} - } - -\xsimsetup{ - % tags = {geometry} , - % topics = {geometry} - % tags/ingore-untagged % if true untagged exercise will be printed regardless - % % which tags have been chosen -} - -\begin{document} - -\gradingtable \par \bigskip - -Total: \printtotalpoints \par -from questions: \printpoints{question} \par -from exercises: \printpoints{exercise} \par -from problems: \printpoints{problem} \par \bigskip - -Total bonus: \printtotalbonus \par -from questions: \printbonus{question} \par -from exercises: \printbonus{exercise} \par -from problems: \printbonus{problem} \par - -% 1 -\begin{exercise}[points=4,bonus-points=1,topics=geometry,tags={geometry,triangles},grade=7] - \lipsum[1] -\begin{verbatim} -foo x^2 y^3 \gna -\end{verbatim} -\end{exercise} -\begin{solution}[print] - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\begin{verbatim} -foo x^2 y^3 \gna -\end{verbatim} -\end{solution} - -% 2 -\begin{exercise}[subtitle=Foo,points=5,topics=analysis,tags={analysis,functions},grade=11] - \lipsum[2] -\end{exercise} -\begin{solution} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{solution} - -% 3 -\begin{problem}[tags={analysis,functions}] - \lipsum[3] - \writehere -\end{problem} -\begin{answer} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{answer} - -% 4 -\begin{question} - \lipsum[4] - - \verb+\ExerciseID+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} - - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} -\end{question} -\begin{hint} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{hint} - -% 5 -\begin{problem}[points=2] - \lipsum[3] - - \verb+\ExerciseID+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} - - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} - \writehere -\end{problem} -\begin{answer} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{answer} - -% 6 -\begin{problem}[points=1] - \lipsum[3] - - \verb+\ExerciseID+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} - - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} -\end{problem} -\begin{answer} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{answer} - -% 7 -\begin{exercise}[ID=test] - \lipsum[5] - - \verb+\ExerciseID+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} - - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} - - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} -\end{exercise} -\begin{solution} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{solution} - -% 8 -\begin{exercise}[print=false,use=false] - \lipsum[5] -\end{exercise} -\begin{solution} - This is the solution to \ExerciseType\ \GetExerciseProperty{counter}. -\end{solution} - -% \printsolutionstype{exercise} - -\printsolutions* - -\section{Statistics} - -\ForEachUsedExerciseByType{% - \noindent\XSIMmixedcase{\ExerciseParameterGet{#1}{exercise-name}}~#3: \\ - \hspace*{2em}id: #2, type: #1, subtitle: #4, points: #5, bonus: #6\par \medskip -} - -\bigskip - -\ForEachUsedExerciseByID{% - \noindent\XSIMmixedcase{\ExerciseParameterGet{#1}{exercise-name}}~#3: \\ - \hspace*{2em}id: #2, type: #1, subtitle: #4, points: #5, bonus: #6\par \medskip -} - -\bigskip - -\ForEachUsedExerciseByType{% - \ExercisePropertyIfSetT{#1}{#2}{points} - { \XSIMmixedcase{\ExerciseParameterGet{#1}{exercise-name}}~#3: #5~points\par }% -} - -\bigskip - -Number of questions: \numberofquestions \par -Number of exercises: \numberofexercises \par -Number of problems: \numberofproblems - -\section{Grading tables} - -\gradingtable[template=default*,type=exercise] \par \bigskip - -\gradingtable[template=default*,type=problem] \par \bigskip - -\gradingtable[template=default*] \par \bigskip - -% vertical -\gradingtable[type=exercise] \par \bigskip - -\gradingtable[type=problem] \par \bigskip - -\gradingtable - -\end{document} diff --git a/macros/latex/contrib/xsim/doc/xsim-manual.cls b/macros/latex/contrib/xsim/doc/xsim-manual.cls deleted file mode 100644 index c1d198ab04..0000000000 --- a/macros/latex/contrib/xsim/doc/xsim-manual.cls +++ /dev/null @@ -1,1008 +0,0 @@ -% ---------------------------------------------------------------------------- -% the XSIM package -% -% eXercise Sheets IMproved -% -% ---------------------------------------------------------------------------- -% Clemens Niederberger -% Web: https://github.com/cgnieder/xsim -% E-Mail: contact@mychemistry.eu -% ---------------------------------------------------------------------------- -% Copyright 2017--2020 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% 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.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% ---------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% ---------------------------------------------------------------------------- -% -% please ignore the contents of this file -- it is not a good example for -% coding... -% -\ProvidesClass{xsim-manual}[2020/04/04] - -\LoadClass[load-preamble,add-index]{cnltx-doc} -\RequirePackage{imakeidx} -\RequirePackage[utf8]{inputenc} -\RequirePackage{xsim,xsimverb} - -\RequirePackage{geometry} -\geometry{ - left = 3.5cm , - right = 3cm , - marginparwidth = 3cm , - marginparsep = 2mm -} - -\setcnltx{ - package = {xsim}, - info = - \textsc{e\textcolor{cnltx}{X}ercise \textcolor{cnltx}{S}heets - \textcolor{cnltx}{IM}proved} \\ - the official successor of the \cnltxpackagenameformat{exsheets} package , - url = https://github.com/cgnieder/xsim , - authors = Clemens Niederberger , - email = contact@mychemistry.eu , - quote-format = \small\biolinumLF , - add-cmds = { - blank , - addbonus , - addpoints , - AddtoExerciseGoal , - AddtoExerciseGoalPrint , - AddtoExerciseTypeGoal , - AddtoExerciseTypeGoalPrint , - blank , - collectexercises , - collectexercisestype , - collectexercisesstop , - DeclareExerciseCollection , - DeclareExerciseEnvironmentTemplate , - DeclareExerciseGoal , - DeclareExerciseHeadingTemplate , - DeclareExerciseProperty , - DeclareExercisePropertyAlias , - DeclareExerciseTableTemplate , - DeclareExerciseTagging , - DeclareExerciseTranslation , - DeclareExerciseTranslations , - DeclareExerciseType , - DeclareGradeDistribution , - ExerciseCollection , - ExerciseGoalValuePrint , - ExerciseID , - ExerciseParameterGet , - ExerciseParameterIfSetF , - ExerciseParameterIfSetT , - ExerciseParameterIfSetTF , - ExercisePropertyGet , - ExercisePropertyGetAlias , - ExercisePropertyGlobalSave , - ExercisePropertyIfSetF , - ExercisePropertyIfSetT , - ExercisePropertyIfSetTF , - ExercisePropertySave , - ExerciseSetExpandedProperty , - ExerciseSetProperty , - ExerciseTableType , - ExerciseTableCode , - ExerciseType , - ForeachExerciseTag , - ForEachExerciseTranslation , - ForEachPrintedExerciseByType , - ForEachPrintedExerciseByID , - ForEachUsedExerciseByType , - ForEachUsedExerciseByID , - GetExerciseAliasProperty , - GetExerciseHeadingF , - GetExerciseIdForProperty , - GetExerciseName , - GetExerciseParameter , - GetExerciseProperty , - GetExercisePropertyF , - GetExercisePropertyT , - GetExercisePropertyTF , - GlobalSaveExerciseProperty , - gradingtable , - IfExerciseBooleanPropertyF , - IfExerciseBooleanPropertyT , - IfExerciseBooleanPropertyTF , - IfExerciseGoalF , - IfExerciseGoalF , - IfExerciseGoalTF , - IfExerciseGoalSingularF , - IfExerciseGoalSingularT , - IfExerciseGoalSingularTF , - IfExerciseGoalsSumF , - IfExerciseGoalsSumT , - IfExerciseGoalsSumTF , - IfExercisePropertyExistF , - IfExercisePropertyExistT , - IfExercisePropertyExistTF , - IfExercisePropertySetF , - IfExercisePropertySetT , - IfExercisePropertySetTF , - IfExerciseTypeGoalsSumF , - IfExerciseTypeGoalsSumT , - IfExerciseTypeGoalsSumTF , - IfExerciseTagSetF , - IfExerciseTagSetT , - IfExerciseTagSetTF , - IfExerciseTopicSetF , - IfExerciseTopicSetT , - IfExerciseTopicSetTF , - IfInsideSolutionF , - IfInsideSolutionT , - IfInsideSolutionTF , - loadxsimstyle , - numberofexercises , - numberofusedexercises , - points , - printallsolutions , - printcollection , - printexercise , - printgoal , - printpoints , - printrandomexercises , - printsolution , - printsolutions , - printsolutionstype , - PropertyValue , - ProvideExerciseTagging , - SaveExerciseProperty , - SetExerciseParameter , - SetExerciseParameters , - SetExerciseProperty , - SetExpandedExerciseProperty , - theexercise , - TotalExerciseGoal , - TotalExerciseGoals , - TotalExerciseTypeGoal , - TotalExerciseTypeGoals , - UseExerciseTags , - UseExerciseTagsX , - UseExerciseTemplate , - xprintexercise , - xprintsolution , - XSIMatbegindocument , - XSIMatenddocument , - XSIMexpandcode , - XSIMsetfilebegin , - XSIMfilewritestart , - XSIMfilewritestop , - XSIMgobblechars , - XSIMsetfileend , - XSIMifblankT , - XSIMifblankF , - XSIMifblankTF , - XSIMifchapterF , - XSIMifchapterT , - XSIMifchapterTF , - XSIMifeqF , - XSIMifeqT , - XSIMifeqTF , - XSIMmixedcase , - xsimprint , - XSIMputright , - xsimsetup , - xsimstyle , - XSIMtranslate , - xsimxprint - } , - add-envs = { exercise , solution } , - add-silent-cmds = { - @percentchar , - bottomrule , - breite , - choice , - cs , - DeclareFloatingEnvironment , - enddescription , - endtcolorbox , - hint , - hoehe , - iflist , - IfNoValueTF , - ifnumless , - lipsum , - lstdefinestyle , - lstset , - midrule , - Needspace , - NewDocumentCommand , - NewDocumentEnvironment , - newlist , - numberofcolumns , - numberofproblems , - pkg , - pointsandbonus , - printA, printC, printE , - printhints , - printcompletepoints , - printsumofpointsandbonus , - setlist , - settasks , - tcbuselibrary , - tcolorbox , - thechapter , - thesection , - toprule , - whileboolexpr , - xsim - } , - pre-output = { \let\marginpar\marginnote } , - add-listings-options = { - numberstyle = \tiny\noncopy - } , - index-setup = { level = \section } , - makeindex-setup = { columns = 2 , columnsep = 1em } , - module-sep = {\texttt{/}}% -} - -\renewcommand*\versionnoteformat{\tiny\sffamily\RaggedRight} -\RequirePackage[en-US]{datetime2} -\DTMlangsetup[en-US]{abbr} -\newrobustcmd*\xsim@add@version[2]{\csdef{xsimversion#1}{\DTMdate{#2}}} -\renewrobustcmd*\sinceversion[1]{% - \cnltx@version@note{\GetTranslation{cnltx-introduced} #1 (\csuse{xsimversion#1})}% -} -\renewrobustcmd*\changedversion[1]{% - \cnltx@version@note{\GetTranslation{cnltx-changed} #1 (\csuse{xsimversion#1})}% -} - -\newnote*\sincechanged[2]{% - \GetTranslation{cnltx-introduced} #1, - changed with version #2 (\csuse{xsimversion#2})} - -\RequirePackage{xsimverb} -\ExplSyntaxOn -\tl_replace_all:Nnn \c_xsimverb_date_tl {/} {-} -\ExplSyntaxOff - -\newnote*\xsimverbversion{% - \pkg{xsimverb} version~\csname c_xsimverb_version_tl\endcsname\ - (\expandafter\expandafter\expandafter\DTMdate - \expandafter\expandafter\expandafter{\csname c_xsimverb_date_tl\endcsname})% -} - -\renewcommand*\versionnoteformat{\scriptsize\sffamily\RaggedRight} - -\renewcommand*\cnltx@module@text[2]{% - \begingroup - \reversemarginpar - \setlength\marginparsep{1em}% - \marginnote{\hfill\llap{\module#1{#2}\cnltx@module@sep}}% - \endgroup -} - -\RequirePackage{accsupp} -\newcommand*\noncopy[1]{% - \BeginAccSupp{method=escape,ActualText={}}% - #1% - \EndAccSupp{}% -} - -\def\libertine@figurestyle{LF} -\RequirePackage{amsmath} -\undef\lvert \undef\lVert -\undef\rvert \undef\rVert -\RequirePackage[libertine]{newtxmath} -\def\libertine@figurestyle{OsF} - -\RequirePackage{refcount} - -\renewcommand*\footref[1]{% - \begingroup - \unrestored@protected@xdef\@thefnmark{\getrefnumber{#1}}% - \endgroup - \@footnotemark -} - -\newcommand*\eTeX{% - \texorpdfstring - {\mbox{$\epsilon$-\TeX}} - {e-TeX}% -} - -\RequirePackage[ - backend=biber, - style=cnltx, - sortlocale=en_US, - indexing=cite]{biblatex} -\RequirePackage{csquotes} -\addbibresource{cnltx.bib} - -\RequirePackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\defbibheading{bibliography}{\section{References}} - -\colorlet{property}{orange} -\newidxcmd\property{\code{\textcolor{property}{#1}}}[ (property)] -\newrobustcmd*\prop{\@ifstar{\cnltx@prop@star}{\cnltx@prop@nostar}} - -\RequirePackage{marginnote} - -\renewcommand*\module@idx@app{ (option class)} - -\newrobustcmd*\cnltx@prop@star{% - \cnltx@ifdash - {\cnltx@prop@aux*\meta} - {\cnltx@prop@aux*\marg}% -} -\newrobustcmd*\cnltx@prop@nostar{% - \cnltx@ifdash - {\cnltx@prop@aux{}\meta} - {\cnltx@prop@aux{}\marg}% -} -\newcommand*\cnltx@prop@aux[4]{% - \code{\property#1{#3}\cnltx@isvalue#2{#4}}% -} - -\newrobustcmd*\propis{% - \@ifstar - {\cnltx@propis*} - {\cnltx@propis{}}% -} -\newrobustcmd*\cnltx@propis[1]{% - \cnltx@ifdash - {\cnltx@prop@aux{#1}\@firstofone} - {\cnltx@prop@aux{#1}\Marg}% -} -\newrobustcmd*\choiceprop{% - \@ifstar - {\cnltx@choiceprop@star} - {\cnltx@choiceprop@nostar}% -} -\def\cnltx@choiceprop@star#1#2{% - \code{\property*{#1}\cnltx@isvalue\choices{#2}}} -\def\cnltx@choiceprop@nostar#1#2{% - \code{\property{#1}\cnltx@isvalue\choices{#2}}} -\newcommand*\boolprop{% - \@ifstar - {\cnltx@boolprop@star} - {\cnltx@boolprop@nostar}% -} -\def\cnltx@boolprop@star#1{\choiceprop*{#1}{\default{true},false}} -\def\cnltx@boolprop@nostar#1{\choiceprop{#1}{\default{true},false}} - -\newenvironment{properties} - {% - \def\propert{\@cnltx@option@item\property}% - \def\propval{\@cnltx@option@item\prop}% - \def\proplit{\@cnltx@option@item\propis}% - \def\propchoice{\@cnltx@option@item\choiceprop}% - \def\propbool{\@cnltx@option@item\boolprop}% - \cnltxlist - } - {\endcnltxlist} - -\colorlet{parameter}{blue} -\newidxcmd\parameter{\code{\textcolor{parameter}{#1}}}[ (parameter)] -\newrobustcmd*\para{\@ifstar{\cnltx@para@star}{\cnltx@para@nostar}} - -\newrobustcmd*\cnltx@para@star{% - \cnltx@ifdash - {\cnltx@para@aux*\meta} - {\cnltx@para@aux*\marg}% -} -\newrobustcmd*\cnltx@para@nostar{% - \cnltx@ifdash - {\cnltx@para@aux{}\meta} - {\cnltx@para@aux{}\marg}% -} -\newcommand*\cnltx@para@aux[4]{% - \code{\parameter#1{#3}\cnltx@isvalue#2{#4}}% -} - -\newrobustcmd*\parais{% - \@ifstar - {\cnltx@parais*} - {\cnltx@parais{}}% -} -\newrobustcmd*\cnltx@parais[1]{% - \cnltx@ifdash - {\cnltx@para@aux{#1}\@firstofone} - {\cnltx@para@aux{#1}\Marg}% -} -\newrobustcmd*\choicepara{% - \@ifstar - {\cnltx@choicepara@star} - {\cnltx@choicepara@nostar}% -} -\def\cnltx@choicepara@star#1#2{% - \code{\parameter*{#1}\cnltx@isvalue\choices{#2}}} -\def\cnltx@choicepara@nostar#1#2{% - \code{\parameter{#1}\cnltx@isvalue\choices{#2}}} -\newcommand*\boolpara{% - \@ifstar - {\cnltx@boolpara@star} - {\cnltx@boolpara@nostar}% -} -\def\cnltx@boolpara@star#1{\choicepara*{#1}{\default{true},false}} -\def\cnltx@boolpara@nostar#1{\choicepara{#1}{\default{true},false}} - -\newenvironment{parameters} - {% - \def\param{\@cnltx@option@item\parameter}% - \def\paraval{\@cnltx@option@item\para}% - \def\paralit{\@cnltx@option@item\parais}% - \def\parachoice{\@cnltx@option@item\choicepara}% - \def\parabool{\@cnltx@option@item\boolpara}% - \cnltxlist - } - {\endcnltxlist} - -\RequirePackage{acro} - -\DeclareAcronym{prop}{ - short = property , - long = \emph{Properties} are options of exercises which are individual for - each exercise and can be retrieved and used in exercise templates. , - short-plural-form = properties -} - -\DeclareAcronym{para}{ - short = parameter , - long = \emph{Parameters} are options of exercise types which are the same - for each exercise of a type and can be retrieved and used in exercise - templates. -} - -\DeclareAcronym{goal}{ - short = goal , - long = \emph{Goals} are a certain type of \acsp*{prop} with a numerical - value the sum of which is available throughout the document. -} - -\DeclareAcronym{tag}{ - short = tag , - long = \emph{Tags} are a certain type of \acsp*{prop} with a csv list as - value which can be used for selective usage of exercises. -} - -\DeclareAcronym{coll}{ - short = collection , - long = A \emph{collection} bundles a number of exercises of one type or all - types of exercises within certain barriers in the document. Those - exercise collections can be printed at any place in the document. -} - -\DeclareAcronym{tmpl}{ - short = template , - long = {\emph{Templates} are generic code frameworks which are used for - typesetting \xsim's objects such as exercises, solutions, or grading - tables.} -} - -\providecommand*\environ{\@ifstar\environ@star\environ@nostar} -\providecommand*\environ@star[1]{\beginenv*\Marg{\env*{#1}}} -\providecommand*\environ@nostar[1]{\beginenv*\Marg{\env{#1}}} - -\RequirePackage{tcolorbox} -\tcbuselibrary{skins,breakable} -\tcbset{enhanced,enhanced jigsaw} - -\newtcolorbox{bewareofthedog}{ - colback = red!2!white!98 , - colframe = red , - underlay={% - \path[draw=none] - (interior.south west) - rectangle node[red]{\Huge\bfseries !} - ([xshift=-4mm]interior.north west); - }% -} - -\newtcolorbox{cnltxcode}[1][]{ - boxrule = 1pt , - colback = cnltxbg , - colframe = cnltx , - arc = 5pt , - beforeafter skip = .5\baselineskip ,% - #1% -} - -\newcommand*\xsimman@readoptions[1]{% - \catcode`\^^M=13 - \xsimman@read@options{#1}% -} - -\begingroup -\catcode`\^^M=13 -\gdef\xsimman@read@options#1#2^^M{% - \ifblank{#2}{}{\xsimman@read@options@#2}% - #1% - \XSIMfilewritestart*{\jobname.tmp}% -}% -\endgroup - -\def\xsimman@read@options@[#1]{\pgfqkeys{/cnltx}{#1}} - -\RenewDocumentEnvironment{sourcecode}{} - {% - \xsimman@readoptions{% - \setlength\cnltx@sidebysidewidth - {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% - \XSIMexpandcode{% - \noexpand\lstset{ - style=cnltx, - \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } - {linewidth=\cnltx@sidebysidewidth,}{}% - \expandonce\cnltx@local@listings@options - }% - }% - \XSIMgobblechars{2}% - }% - } - {% - \XSIMfilewritestop - \cnltxcode[breakable]% - \lstinputlisting[style=cnltx]{\jobname.tmp}% - \endcnltxcode - } - -\RenewDocumentEnvironment{example}{} - {% - \xsimman@readoptions{% - \setlength\cnltx@sidebysidewidth - {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% - \XSIMexpandcode{% - \noexpand\lstset{ - style=cnltx, - \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } - {linewidth=\cnltx@sidebysidewidth,}{}% - \expandonce\cnltx@local@listings@options - }% - }% - \XSIMgobblechars{2}% - }% - } - {% - \XSIMfilewritestop - \catcode`\^^M=5 - \ifbool{cnltx@sidebyside} - {% - \cnltxcode - \noindent - \minipage[c]{\cnltx@sidebysidewidth}% - \cnltx@pre@source@hook - \lstinputlisting[style=cnltx] {\jobname.tmp}% - \cnltx@after@source@hook - \endminipage\hfill - \minipage[c]{\cnltx@sidebysidewidth}% - \cnltx@pre@example@hook - \input {\jobname.tmp}% - \cnltx@after@example@hook - \endminipage - } - {% - \cnltxcode[breakable]% - \cnltx@pre@source@hook - \lstinputlisting{\jobname.tmp}% - \cnltx@after@source@hook - \tcblower - \cnltx@pre@example@hook - \input {\jobname.tmp}% - \cnltx@after@example@hook - }% - \endcnltxcode - } - -\RenewDocumentEnvironment{sourcecode}{} - {% - \xsimman@readoptions{% - \setlength\cnltx@sidebysidewidth - {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% - \XSIMexpandcode{% - \noexpand\lstset{ - style=cnltx, - \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } - {linewidth=\cnltx@sidebysidewidth,}{}% - \expandonce\cnltx@local@listings@options - }% - }% - \XSIMgobblechars{2}% - }% - } - {% - \XSIMfilewritestop - \cnltxcode[breakable]% - \lstinputlisting[style=cnltx]{\jobname.tmp}% - \endcnltxcode - } - -\RenewDocumentEnvironment{example}{} - {% - \xsimman@readoptions{% - \setlength\cnltx@sidebysidewidth - {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% - \XSIMexpandcode{% - \noexpand\lstset{ - style=cnltx, - \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } - {linewidth=\cnltx@sidebysidewidth,}{}% - \expandonce\cnltx@local@listings@options - }% - }% - \XSIMgobblechars{2}% - }% - } - {% - \XSIMfilewritestop - \catcode`\^^M=5 - \ifbool{cnltx@sidebyside} - {% - \cnltxcode - \noindent - \minipage[c]{\cnltx@sidebysidewidth}% - \cnltx@pre@source@hook - \lstinputlisting[style=cnltx] {\jobname.tmp}% - \cnltx@after@source@hook - \endminipage\hfill - \minipage[c]{\cnltx@sidebysidewidth}% - \cnltx@pre@example@hook - \input {\jobname.tmp}% - \cnltx@after@example@hook - \endminipage - } - {% - \cnltxcode[breakable]% - \cnltx@pre@source@hook - \lstinputlisting{\jobname.tmp}% - \cnltx@after@source@hook - \tcblower - \cnltx@pre@example@hook - \input {\jobname.tmp}% - \cnltx@after@example@hook - }% - \endcnltxcode - } - -\renewrobustcmd*\inputsourcecode[2][]{% - \begingroup - \pgfqkeys{/cnltx}{#1}% - \XSIMexpandcode{% - \noexpand\lstset{ - style=cnltx,% - \expandonce\cnltx@local@listings@options - }% - }% - \cnltxcode[breakable]% - \lstinputlisting{#2}% - \endcnltxcode - \endgroup -} - -\RequirePackage{longtable,booktabs} - -\RequirePackage{lipsum} -\RequirePackage{varioref} -\RequirePackage{bookmark} - -\xsimsetup{ - % clear-aux , - path = exercises -} - -\DeclareExerciseCollection{foo} -\DeclareExerciseCollection{layouts} - -\newrobustcmd*\TF{% - \colorlet{outside}{.}% - \textcolor{red}{\underline{\textcolor{outside}{TF}}}% -} - -\newcommand*\narg{\textcolor{argument}{\code{-}}} -\newcommand*\barg{\textcolor{argument}{\code{\bang}}} - -\newrobustcmd\bang{!} - -\renewrobustcmd*\code[1]{\begingroup\codefont\let\^\textasciicircum#1\endgroup} - -% ---------------------------------------------------------------------------- -\loadxsimstyle{layouts} - -\DeclareExerciseEnvironmentTemplate{tcolorbox} - {% - \tcolorbox[ - colback = red!5!white , - colframe = red!75!black , - colbacktitle = yellow!50!red , - coltitle = red!25!black , - subtitle style = { - boxrule = 0.4pt , - colback = yellow!50!red!25!white - } , - breakable , - drop shadow , - beforeafter skip = .5\baselineskip , - title = - \textbf{\GetExerciseName~\GetExerciseProperty{counter}}% - \GetExercisePropertyT{subtitle} - { \textit{\PropertyValue}}% - \IfInsideSolutionF{% - \GetExercisePropertyT{points} - { % notice the space - (\printgoal{\PropertyValue} - \IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}})% - }% - }% - ]% - } - {\endtcolorbox} - -\DeclareExerciseProperty*{bonus} -\DeclareExerciseEnvironmentTemplate{bonus} - {% - \subsection* - {% - \IfExerciseBooleanPropertyT{bonus}{\llap{$\bigstar$ }Bonus }% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfInsideSolutionF - {% - \IfExercisePropertySetT{subtitle} - { {\normalfont\itshape\GetExerciseProperty{subtitle}}}% - }% - } - \GetExercisePropertyT{points} - {% - \marginpar - {% - \IfInsideSolutionF{\rule{1.2cm}{1pt}\slash}% - \PropertyValue - \GetExercisePropertyT{bonus-points} - {\nobreakspace(+\PropertyValue)}% - \nobreakspace\XSIMtranslate{point-abbr}% - }% - }% - } - {} - -% ---------------------------------------------------------------------------- - -\DeclareExerciseType{problem}{ - exercise-env = problem , - solution-env = answer , - exercise-name = Problem , - solution-name = Answer , - exercise-template = tcolorbox , - solution-template = tcolorbox -} - -\RequirePackage{hyperref,bookmark} - -% ---------------------------------------------------------------------------- - -\ExplSyntaxOn -\cs_set:Npn \__xsim_get_texsx_number:w texsx- #1 \q_stop: {#1} -\cs_set:Npn \__xsim_get_texwelt_number:w texwelt- #1 \q_stop: {#1} -\cs_set:Npn \__xsim_get_golatex_number:w golatex- #1 \q_stop: {#1} - -\cs_new_protected:Npn \xsim@example@links #1 { - \href { \xsim@example@texfile@path {#1} } { \color{white} [\TeX] } ~ - \href { \xsim@example@pdffile@path.#1.pdf } { \color{white} [PDF] } - \tl_if_in:nnT {#1} {texsx} - { - \tl_set:Nx \l_tmpa_tl { \__xsim_get_texsx_number:w #1 \q_stop: } - \space \href - { https \c_colon_str //tex.stackexchange.com/q/ \l_tmpa_tl / } - { \color {white} [forum] } - } - \tl_if_in:nnT {#1} {texwelt} - { - \tl_set:Nx \l_tmpa_tl { \__xsim_get_texwelt_number:w #1 \q_stop: } - \space \href - { http \c_colon_str //texwelt.de/wissen/fragen/ \l_tmpa_tl / } - { \color {white} [forum] } - } - \tl_if_in:nnT {#1} {golatex} - { - \tl_set:Nx \l_tmpa_tl { \__xsim_get_golatex_number:w #1 \q_stop: } - \space \href - { http \c_colon_str //golatex.de/viewtopic,p, \l_tmpa_tl .html } - { \color {white} [forum] } - } - \tl_if_in:nnT {#1} {issues} - { - \tl_set:Nn \l_tmpa_tl {#1} - \tl_replace_once:Nnn \l_tmpa_tl {-} {/} - \space \href - { https \c_colon_str //github.com/cgnieder/ \l_tmpa_tl } - { \color {white} [github] } - } -} -\ExplSyntaxOff - -\newcounter{examplefile} -\newcounter{examplefiles} -\newcommand*\xsim@add@example[2]{% - \listadd\xsim@examplefiles{#1}% - \csdef{xsim@example@texfile@desc@#1}{#2}% - \stepcounter{examplefiles}% -} -\newcommand*\listexamplefiles{% - \def\xsim@example@texfile@path##1{./examples/xsim.##1.tex}% - \def\xsim@example@pdffile@path{./examples/xsim}% - \def\xsim@example@desc##1{\csuse{xsim@example@texfile@desc@##1}}% - \def\xsim@example@title##1{% - Example~\theexamplefile: \xsim@example@desc{##1} - \\Links: \xsim@example@links{##1}\hfill File: \code{xsim.##1.tex}% - }% - \def\xsim@example@bookmark##1{Example~\theexamplefile\ (\xsim@example@desc{##1})}% - \def\do##1{% - \begin{cnltxcode}[ - step and label={examplefile}{example:##1} , - sidebyside align=top seam,sidebyside, - righthand width=.3\linewidth, - sidebyside gap=1em, - lower separated=false, - bottom=1mm, - title=\xsim@example@title{##1}% - ] - \bookmark[level=2,dest=examplefile.\arabic{examplefile}]{\xsim@example@bookmark{##1}}% - \lstinputlisting[ - style=cnltx,firstline=7,lastline=15,firstnumber=7]{\xsim@example@texfile@path{##1}}% - \tcblower - \fbox{% - \href - {\xsim@example@pdffile@path.##1.pdf} - {% - \includegraphics[ - type=pdf, - ext=.##1.pdf, - read=.##1.pdf, - pagebox=cropbox, - viewport=4.5cm 18.6cm 8.7cm 23cm, - clip]{\xsim@example@pdffile@path}% - }% - }% - \end{cnltxcode} - }% - \dolistloop\xsim@examplefiles -} - -% ---------------------------------------------------------------------------- - -\newcommand*\listlayouts{% - \def\do##1{% - \begin{cnltxcode}[{title=Layout \enquote{\texttt{##1}}\csuse{xsim@layout@description@##1}}] - \ifcsdef{xsim@layout@extra@##1} - {\csuse{xsim@layout@extra@##1}} - {}% - \xsimsetup{exercise/template={##1}} - \let\marginpar\marginnote - \printexercise{exercise}{showlayout}% - \end{cnltxcode} - }% - \dolistloop\xsim@layouts -} - -\NewDocumentCommand\xsim@add@layout{moo}{% - \listadd\xsim@layouts{#1}% - \IfNoValueF{#2}{\csdef{xsim@layout@extra@#1}{#2}}% - \IfNoValueTF{#3} - {\csdef{xsim@layout@description@#1}{}} - {\csdef{xsim@layout@description@#1}{ \footnotesize(#3)}}% -} - -% ---------------------------------------------------------------------------- -% examples: - -\xsim@add@example{blanks}{Create blank lines} -\xsim@add@example{boxed-headings}{Put headings in a box} -\xsim@add@example{code-and-output}{Create code examples} -\xsim@add@example{collections}{How to use collections} -\xsim@add@example{crossref}{Crossreferencing between problems and answers} -\xsim@add@example{description-list}{Exercises as a \code{description} list} -\xsim@add@example{different-point-types}{A custom point scheme} -\xsim@add@example{difficulties}{Difficulty levels} -\xsim@add@example{floating}{Floating exercises and a list of exercises} -\xsim@add@example{grade-distribution}{Using the grade distribution macros} -\xsim@add@example{hints}{Give hints} -\xsim@add@example{listings}{Use listings in exercises} -\xsim@add@example{listofexercises}{A custom list of exercises} -\xsim@add@example{multiplechoice}{Multiplechoice exercises} -\xsim@add@example{pointsums}{Sum of points} -\xsim@add@example{randomexercises}{Random exercises from a collection} -\xsim@add@example{various}{Various aspects of \xsim} -\xsim@add@example{texsx-13635}{Exercises like theorems} -\xsim@add@example{texsx-155630}{Random/custom order of exercises} -\xsim@add@example{texsx-199360}{Exercises and solutions in a \pkg*{tcolorbox}} -\xsim@add@example{texsx-299534}{Using \pkg*{pythontex}} -\xsim@add@example{texsx-305110}{Print solutions per chapter/section} -\xsim@add@example{texsx-308883}{Adapt how points are printed} -\xsim@add@example{texsx-338165}{Another \pkg*{tcolorbox} example} -\xsim@add@example{texsx-350028}{Fancy \pkg*{tcolorbox} and crossreferencing} -\xsim@add@example{texsx-369065}{Custom layout} -\xsim@add@example{texsx-369636}{An empty box for points} -\xsim@add@example{texsx-369803}{Layout adjustments} -\xsim@add@example{texsx-370642}{Minimalistic layout} -\xsim@add@example{texsx-391530}{Exercises and sub-exercises} -\xsim@add@example{texsx-395273}{Different aspects of exercises, highlighted solutions} -\xsim@add@example{texsx-498299}{Multiple choice questions with automated solutions} -\xsim@add@example{texwelt-6698}{Custom list of exercises} -\xsim@add@example{texwelt-15093}{Indicate difficulty level} -\xsim@add@example{texwelt-23968}{Long and short solutions} -\xsim@add@example{golatex-80640}{Different versions for students and teachers} -\xsim@add@example{golatex-91339}{Another custom layout with rules} -\xsim@add@example{issues-49}{Different ideas for exams} - -% ---------------------------------------------------------------------------- -% layouts: - -\xsim@add@layout{default} -\xsim@add@layout{runin}[\renewcommand*\theexercise{\arabic{exercise}.}] -\xsim@add@layout{margin}[\renewcommand*\theexercise{\arabic{exercise}.}] -\xsim@add@layout{inline}[\renewcommand*\theexercise{\arabic{exercise}.}] -\xsim@add@layout{minimal}[\renewcommand*\theexercise{\arabic{exercise}.}][Like -\enquote{\texttt{inline}} but as own paragraph.] -\xsim@add@layout{centered}[\renewcommand*\theexercise{\arabic{exercise}.}] - -% ---------------------------------------------------------------------------- -% versions: - -\xsim@add@version{0.0} {2017-02-09} -\xsim@add@version{0.1} {2017-03-19} -\xsim@add@version{0.2} {2017-03-21} -\xsim@add@version{0.4} {2017-03-24} -\xsim@add@version{0.5} {2017-03-30} -\xsim@add@version{0.5a} {2017-04-15} -\xsim@add@version{0.5b} {2017-04-16} -\xsim@add@version{0.6} {2017-04-27} -\xsim@add@version{0.6a} {2017-04-28} -\xsim@add@version{0.7} {2017-05-09} -\xsim@add@version{0.8} {2017-05-18} -\xsim@add@version{0.8a} {2017-05-19} -\xsim@add@version{0.8b} {2017-05-23} -\xsim@add@version{0.9} {2017-06-20} -\xsim@add@version{0.10} {2017-09-19} -\xsim@add@version{0.10a} {2017-10-04} -\xsim@add@version{0.11} {2018-02-12} -\xsim@add@version{0.12} {2019-09-26} -\xsim@add@version{0.13} {2019-10-06} -\xsim@add@version{0.14} {2019-10-13} -\xsim@add@version{0.14a} {2019-10-19} -\xsim@add@version{0.15} {2019-11-02} -\xsim@add@version{0.16} {2019-11-10} -\xsim@add@version{0.16a} {2020-01-16} -\xsim@add@version{0.17} {2020-02-21} -\xsim@add@version{0.18} {2020-02-23} -\xsim@add@version{0.19} {2020-03-16} -\xsim@add@version{0.19a} {2020-03-19} -\xsim@add@version{0.19b} {2020-04-04} - -% ---------------------------------------------------------------------------- -\newrobustcmd*\xsimauxfileinfo{% - \xsim\ writes a lot of stuff to an auxiliary file called - \cs*{jobname}\code{.xsim} (or the common \cs*{jobname}\code{.aux} if you use - option \option{use-aux}) for re-using information on subsequent - compilations. If you add exercises, change properties \etc\ it might happen - that wrong information is staying in the auxiliary file and is wrongly used - by \xsim. In such cases deleting the auxiliary file and doing a few fresh - compilations may resolve your problems. - - Sometimes the \emph{existence of exercise or solution files from earlier - compilations} may lead to wrong lists of exercises or solutions. In such - cases it can be useful to delete all those files and doing a fresh - compilation. It may be helpful to use a subfolder for those exernal files - which will make deleting them a little bit easier. (Don't forget to both - create the subfolder and set \option{path} accordingly then.) - - Using the \option{clear-aux} option might help to reduce erroneous exercises.% -} -\endinput diff --git a/macros/latex/contrib/xsim/doc/xsim.history b/macros/latex/contrib/xsim/doc/xsim.history deleted file mode 100644 index f1b0f860f7..0000000000 --- a/macros/latex/contrib/xsim/doc/xsim.history +++ /dev/null @@ -1,158 +0,0 @@ --------------------------------------------------------------------------- - -XSIM -- eXercise Sheets IMproved - --------------------------------------------------------------------------- -Clemens Niederberger -Web: https://github.com/cgnieder/xsim -E-Mail: contact@mychemistry.eu --------------------------------------------------------------------------- -Copyright 2017--2020 Clemens Niederberger - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 -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.3 or later is part of all distributions of LaTeX -version 2005/12/01 or later. - -This work has the LPPL maintenance status `maintained'. - -The Current Maintainer of this work is Clemens Niederberger. --------------------------------------------------------------------------- - -HISTORY: - - v0.0 2017/02/09 - start with coding the first ideas - v0.1 2017/03/19 - first draft which actually seems to do everything as - planned - v0.2 2017/03/21 - bugfix in the verbwrite module - - add `use!' and `print!' properties - - add the concepts of `noupdate' and `boolean' properties - v0.4 2017/03/24 - \IfExerciseBooleanPropertyTF - - \GetExercisePropertyTF, \PropertyValue - - \printallsolutions - - \UseExerciseTemplate - - bug fix in solution environments: now get printed again - when option `print=true' is used - - bug fix to the translations of the solution list headings: - exercise name instead of exercise type is now printed - - \AddtoExerciseTypeGoal, \AddtoExerciseGoal - \AddtoExerciseTypeGoalPrint, \AddtoExerciseGoalPrint, - \ExerciseGoalValuePrint - - \addpoints, \addbonus, \points, \printgoal - v0.5 2017/03/30 - add style file mechanism - - make solution print conditions `section' and `chapter' - combinable - v0.5a 2017/04/15 - fix wrong translation of the `default-heading' - v0.5b 2017/04/16 - add \SetExerciseProperty - v0.6 2017/04/27 - official interface for grade distributions - - refine hook management (environment module) - v0.6a 2017/04/28 - refine \blank command, add documentation for said command - v0.7 2017/05/09 - \xsim_list_length:n - - new boolean property `used' - - when an exercise is collected the counter isn't stepped - but only when the exercise is inserted for the first - time; when this happens the new property `used' is set to - `true' - - make setting boolean properties case insensitive - - add missing pieces to manual (eg `page' property...) - - \TotalExerciseGoals and \TotalExerciseTypeGoals - - \XSIMifchapterTF - - \xsim_if_goal_sum:nnnTF and friends, - \IfExerciseTypeGoalsSumTF and \IfExerciseGoalsSumTF - - some more hints in the manual regarding collections - v0.8 2017/05/18 - bug fix in \xsim_set_property:nnnn - - random exercise lists from collections - - \xsim_collection_count:n - - \GetExerciseIdForProperty and \GetExerciseTypeForProperty - for unique properties - - set property `print=false' during collection and only to - true when the corresponding exercises actually are - printed - - do not insert \par at the beginning and end of exercises - and solutions; this should be left to the templates! - - new option `print-collection/print' which allows to - choose between exercises, solutions, and both to be - printed - - new parameter `solution-counter' in order to avoid - possible conflicts with existing counters - v0.8a 2017/05/19 - \IfPrintSolutionTF - v0.8b 2017/05/23 - use \printgoal in default environment template - - \xsim_print_goal:nnn now expands input to a number - v0.9 2017/06/20 - \xsimstyle's behaviour now matches the description in - the manual - - add style file `layouts' which at the moment provides the - two exercise templates `runin' and `margin' - - \printforexercises , \xsim_print_type_code:nnnnn - - \IfExerciseParameterSetTF - - \GetExerciseParameterTF - - change syntax of \SetExerciseProperty - - \SetExpandedExerciseProperty - - \ExerciseSetProperty, \ExerciseSetExpandedProperty - - property `sectioning' - - \IfExistSolutionTF - v0.10 2017/09/19 - \xsim_input:nnn - - \GetExerciseBody - - option `blank/fill' - - bug fix in \xsim_start_collection:nn - - added further examples to package - - new option `file-extension' - v0.10a 2017/10/01 - bug fix: grading table options can now be set with - \xsimsetup (issue 15) - v0.11 2018/02/12 - change name requirement for style files in order to - prevent possible name clashes with module files - - fix bug in \SetExerciseProperty and - \SetExpandedExerciseProperty - - fix bug when xsimverb is used standalone (issue 21) - - add option `split-aux-lists' (issue 18) - - \IfExerciseTagSetTF and \IfExerciseTopicSetTF - - introduce a \xsim_if__value:nTF for each tag - kind - - \ProvideExerciseTagging - v0.12 2019/09/30 - add parameter versions for the plural forms of exercise - and solution names - - bug fixes (issues 37, 39, 43, 47) - v0.13 2019/10/06 - experimental package option `no-files' - v0.14 2019/10/13 - new exercise parameters `exercise-heading' and - `solution-heading' - - new options `exercise/heading' and `solution/heading' as - interface for setting the new parameters - - new command \GetExerciseHeadingF for using the new - parameters in environment templates - - change the environment template `default' to use the new - \GetExerciseHeadingF and output a \par at the end - - make argument of \xsimsetup long - - new template `minimal' - - new option `load-style' - - new example `texwelt-23968' (long and short solutions) - v0.14a 2019/10/19 - fix \xsim_if_exercise_exist:nnTF to obey the `no-files' - option - v0.15 2019/11/02 - use own auxiliary file per default and add option - `use-aux' - v0.16 2019/11/10 - fix issue due to usage of own auxiliary file - - \XSIMatbegindocument and \XSIMatenddocument - - \xprintexercise, \xprintsolution, \xsimprint, \xsimxprint - 2019/12/29 - bugfix in `xsimverb' - v0.16a 2020/01/16 - adapt to renaming of string case changing functions - v0.17 2020/02/21 - prefer lazy boolean evaluation if possible - - remove spurious \par at the beginning of typeset - exercises - - add `blank' option, implements issue #31 - - add `solution' property, implements issue #33 - - fix issue #27 - - implement issue #2 - - don't allow package options to be set with \xsimsetup - v0.18 2020/02/23 - fix issue #56 - - change \printexercise and \printsolution to accept a - clist of either ids or IDs (or mixed) - - new templates in the `layouts' style - v0.19 2020/03/16 - improve performance - - only set \ExerciseID and \ExerciseType locally to ensure - correct values when exercises (of different types) are - nested - - new load-time option `debug' - only for development - v0.19a 2020/03/19 - fix missing-variant-bug introduced with the last update - v0.19b 2020/04/04 - fix bug in new attribute mechanism which was a problem - when `no-files` has been used diff --git a/macros/latex/contrib/xsim/doc/xsim.ideas b/macros/latex/contrib/xsim/doc/xsim.ideas deleted file mode 100644 index b23ebec899..0000000000 --- a/macros/latex/contrib/xsim/doc/xsim.ideas +++ /dev/null @@ -1,29 +0,0 @@ --------------------------------------------------------------------------- - -XSIM -- eXercise Sheets IMproved - --------------------------------------------------------------------------- -Clemens Niederberger -Web: https://github.com/cgnieder/xsim -E-Mail: contact@mychemistry.eu --------------------------------------------------------------------------- -Copyright 2017--2020 Clemens Niederberger - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 -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.3 or later is part of all distributions of LaTeX -version 2005/12/01 or later. - -This work has the LPPL maintenance status `maintained'. - -The Current Maintainer of this work is Clemens Niederberger. --------------------------------------------------------------------------- - -IDEAS: - -- a document class `xsim-exam' for creating exams -- a mechanism for providing variants of an exam - diff --git a/macros/latex/contrib/xsim/doc/xsim_manual.pdf b/macros/latex/contrib/xsim/doc/xsim_manual.pdf deleted file mode 100644 index dad403c26a..0000000000 Binary files a/macros/latex/contrib/xsim/doc/xsim_manual.pdf and /dev/null differ diff --git a/macros/latex/contrib/xsim/doc/xsim_manual.tex b/macros/latex/contrib/xsim/doc/xsim_manual.tex deleted file mode 100644 index 7b1df9ed5d..0000000000 --- a/macros/latex/contrib/xsim/doc/xsim_manual.tex +++ /dev/null @@ -1,2421 +0,0 @@ -% !arara: pdflatex: { interaction: nonstopmode } -% !arara: biber -% arara: pdflatex: { interaction: nonstopmode } -% arara: pdflatex: { interaction: nonstopmode } -% arara: pdflatex: { interaction: nonstopmode } -% ---------------------------------------------------------------------------- -% the XSIM package -% -% eXercise Sheets IMproved -% -% ---------------------------------------------------------------------------- -% Clemens Niederberger -% Web: https://github.com/cgnieder/xsim -% E-Mail: contact@mychemistry.eu -% ---------------------------------------------------------------------------- -% Copyright 2017--2020 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% 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.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% ---------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% ---------------------------------------------------------------------------- -\documentclass{xsim-manual} - -\begin{filecontents*}[overwrite]{\jobname.bib} -@online{texsx:romannumeral, - author = {Bruno Le Floch} , - title = {Cunning (La)TeX tricks} , - urldate = {2017-03-02} , - url = {http://tex.stackexchange.com/a/19769/} -} -@online{texsx:tagged/exsheets, - title = {Questions tagged `exsheets'} , - author = {various} , - url = {http://tex.stackexchange.com/questions/tagged/exsheets} , - urldate = {2020-02-21} -} -\end{filecontents*} -\addbibresource{\jobname.bib} - -\begin{document} - -\section{Licence, Requirements and \texorpdfstring{\textsc{readme}}{README}} -\license - -\xsim\ loads the packages \pkg{expl3}~\cite{bnd:l3kernel}, -\pkg{xparse}~\cite{bnd:l3packages}, \pkg{etoolbox}~\cite{pkg:etoolbox}, -\pkg{array}~\cite{pkg:array} \pkg{booktabs}~\cite{pkg:booktabs} and -\pkg{translations}~\cite{pkg:translations}. All of these packages are present -on a modern and up to date \TeX\ distribution such as \TeX~Live or MiK\TeX\ so -no further action should be needed. When you are using \xsim\ you should be -using an up to date \TeX\ distribution, anyway. - -\begin{bewareofthedog} - Newer versions of \xsim\ may depend on newer versions of the support - packages. Remember: it is always dangerous to update single packages. - Always update your \TeX\ distribution if you want an up to date version of a - package. Be careful: if you're in the middle of an important project it - might be better to wait with the update until you've finished the project. - Every update might be breaking some things. - - Please also be aware that \xsim\ is actively developed and many things may - still change. However, I will try my best to keep the interface stable. -\end{bewareofthedog} - -I'm currently thinking to make the option \option{no-files} the default -behavior of \xsim. There is a poll and discussion regarding this question on -\xsim's github page if you like to give your opinion on this. - -\begin{bewareofthedog} - The whole collection mechanism is likely to change completely in the - not-so-far future (let's say sometime in the six months from April~2020 or - so). -\end{bewareofthedog} - -\section{Motivation, Background} - -It has been quite a while since I first published -\pkg{exsheets}~\cite{pkg:exsheets} in June 2012. Since then it has gained a -user base and a little bit of popularity as the number of questions on tex.sx -shows (143~at the time of writing)~\cite{texsx:tagged/exsheets}. User -questions, bug reports and feature requests improved it over the time. It -still has a version number starting with a zero, though, which in my -versioning system means I still consider it experimental. - -This is due to several facts. It lacks a few features which I consider -essential for a full version~1. For one thing it is not possible to have -several kinds of exercises numbered independently. Using verbatim material -such as listings inside exercises and solutions is not possible and the -current workaround isn't that ideal either. One request which dates back -quite a while now was to have different types of points to exercises\ldots - -All of those aren't easy to add due to the way \pkg{exsheets} is implemented -right now. As a consequence I wanted to re-implement \pkg{exsheets} for a long -time. This is what lead to \xsim. Internally the package works completely -different. - -\begin{bewareofthedog} - \xsim\ will be the official successor of \pkg{exsheets} which is now - considered obsolete but will stay alive and will still receive bugfix - releases. However, new features will not be added to \pkg{exsheets} any - more. -\end{bewareofthedog} - -\section{How to Read the Manual}\label{sec:how-read-manual} - -\subsection{Nomenclature} - -Throughout this manual certain terms are used. This section explains their -meaning in this manual. - -\acuseall -\printacronyms[heading=none] - -\subsection{Package Options}\label{sec:package-options} -\xsim\ has these package options: -\begin{options} - \opt{verbose} - Writes extensive information about what \xsim\ is doing into the log - file. - \opt{final} - If used the exercise and solution environments will not rewrite the - environment body files. - \opt{clear-aux} - If used every time the total number of exercise changes \xsim\ will write - \emph{less} information to the auxiliary file on the next run and only if - the number of exercises stays stable between compilations the needed - information will be written to the auxiliary file. \emph{This needs more - compilations until everything stabilizes but should reduce the - probability of possibly faulty exercises after changes to the document.} - The \option{final} option automatically disables this option. See also - sections~\vref{sec:how-exerc-envir} and~\vref{sec:resolve-getting}. - \opt{no-files} - \sinceversion{0.13}This option prevents \xsim\ from writing the exercises - and solutions to external files. This will keep your working folder - ``clean'' but will also prevent using verbatim material in exercises and - solutions and will possibly slow processing further down. \emph{This - option is considered experimental. Feedback is very welcome.} - \opt{use-aux} - \sinceversion{0.15}With this option enabled \xsim\ will use the regular - auxiliary file \cs*{jobname}\code{.aux} instead of its own auxiliary file - \cs*{jobname}\code{.xsim}. - \opt{blank} - \sinceversion{0.17}With this option enabled \xsim\ will not define the - default environments \env{exercise} and \env{solution}. -\end{options} - -Those options are load-time options and are used the usual way as package -options: -\begin{sourcecode} - \usepackage[verbose]{xsim} -\end{sourcecode} -\begin{bewareofthedog} - Although those options technically belong to the \module{package} module - (see also section~\vref{sec:setting-options}) it is \emph{not} possible to - set them via \cs{xsimsetup}. -\end{bewareofthedog} - -\subsection{Setting Options}\label{sec:setting-options} -Apart from the package options already described in -section~\vref{sec:package-options} \xsim\ has further options. All those -options are set using the following command: -\begin{commands} - \command{xsimsetup}[\marg{options}] - Set up \xsim's package options and all other options described at - other places in the manual. -\end{commands} -Options can be \enquote{toplevel} options or options belonging to a module: -\begin{options} - \keyval*{toplevel}{value} - A toplevel option. - \keyval*{sublevel}{value}\Module*{module} - A sublevel option belonging to the module \module*{module} -\end{options} -Both kinds of options are set with the setup command: -\begin{sourcecode} - \xsimsetup{ - toplevel = {value} , - module/sublevel = {value} - } -\end{sourcecode} - -\subsection{Command descriptions} - -Some commands do have a \expandablesymbol\ symbol printed next to their -names. This indicates that the command is expandable, \ie, it is usable in an -\cs*{edef} or \cs*{write} context and will expand according to its -description. All other commands are engine protected, \ie, in the sense of -\eTeX's \cs*{protected}. - -Some command name descriptions end with \code{\TF}. -\begin{commands} - \command*{SomeCommand\TF}[\meta{arguments}\marg{true}\marg{false}] - A command with maybe some arguments and ending with the two arguments - \meta{true} and \meta{false}. -\end{commands} -This means two things: the command is a conditional which tests something and -depending on the outcome of the test leaves either the \meta{true} argument -(\code{T}) or the \meta{false} argument (\code{F}) in the input stream. It -also means two additional commands exist: -\begin{commands} - \command*{SomeCommandT}[\meta{arguments}\marg{true}] - The same as \cs*{SomeCommandTF} but only with the \meta{true} argument and - no \meta{false} argument. - \command*{SomeCommandF}[\meta{arguments}\marg{false}] - The same as \cs*{SomeCommandTF} but only with the \meta{false} argument and - no \meta{true} argument. -\end{commands} - -\section{Exercises and Solutions} - -The two predefined environments for exercises and solutions are the following -ones\footnote{When you load \xsim\ with the \option{blank} those environments - will \emph{not} be defined!}: -\begin{environments} - \environment{exercise}[\oarg{\acsp*{prop}}] - Input and typeset an exercise. See section~\vref{sec:exercise-properties} - for details on exercise \acsp*{prop}. - \environment{solution}[\oarg{options}] - Input and typeset the solution to the exercise of the previous - \env{exercise} environment. See section~\vref{sec:printing-solutions} for - details on options of solutions. -\end{environments} - -\begin{example} - \begin{exercise} - A first example for an exercise. - \end{exercise} - \begin{solution} - A first example for a solution. - \end{solution} -\end{example} - -As can be seen in the example a solution is not printed with the default -setup. This can be changed using the following option. -\begin{options} - \keybool{print}\Module{solution}\Default{false} - Set if solutions are printed or not. -\end{options} - -The option (belonging to the module \module*{solution}) can either be set -locally as option to the \env{solution} environment -\begin{sourcecode} - \begin{solution}[print=true] - A first example for a solution. - \end{solution} -\end{sourcecode} -or with the setup command for all following solutions: -\begin{sourcecode} - \xsimsetup{ - solution/print = true - } -\end{sourcecode} - -There is an completely analoguous option for the \env{exercise} environment: -\begin{options} - \keybool{print}\Module{exercise}\Default{true} - Set if exercises are printed or not. -\end{options} -More details on those two environments can be found in -section~\vref{sec:using-printing}. - -\section{How the Exercise Environments Work}\label{sec:how-exerc-envir} -Both the exercise and the solution environments write the contents of their -bodies verbatim to external files following a certain naming structure: -\begin{itemize} - \item - \code{\meta{jobname}-\meta{type}-\meta{id}-exercise|solution-body.tex} -\end{itemize} -The name starts with the name of the job (which is the name of the document -itself) followed by type and id of the corresponding exercise and then -followed by the environment type. For example both environments from the first -example have been written to files named -\begin{itemize} - \item \verbcode+xsim_manual-exercise-1-exercise-body.tex+ and - \item \verbcode+xsim_manual-exercise-1-solution-body.tex+, respectively. -\end{itemize} -These external files are input when the respective exercise or solution is -printed. An advantage of using external files is that \emph{verbatim material - is allowed} inside the environments. Details on the \meta{type} of an -exercise will be given in section~\vref{sec:new-exercise-types}. \emph{The - \meta{id} of an exercise is a positive integer unique to each exercise - environment regardless if the exercise is being printed or used at all.} - -Each of those files contains some information about itself and where and why -it was generated\footnote{In this example the sourcecode line number is - misleading as the example where the file was generated itself was an - external file where the \env{exercise} environment indeed \emph{was} on - line~1.}: - -\inputsourcecode{exercises/xsim_manual-exercise-1-exercise-body.tex} - -Arguably one downside of the approach using external files for each exercise -and its solution is that your project folder will be cluttered with files. In -order to deal with this somehow \xsim\ offers the following option: -\begin{options} - \keyval{path}{path name}\Default - With this option a subfolder or path within the main project folder can be - given. Exercises will be written to and included from this path. - \emph{The path must exist on your system before you can use it!} This - document uses \keyis{path}{exercises}. - \keyval{file-extension}{string}\Default{\code{tex}} - \sinceversion{0.10}This option let's you choose the extension of the - external files. -\end{options} - -\begin{bewareofthedog} - Another thing to keep in mind: the environment in many ways works the same - way as the \env{filecontents} environment. \emph{This also means that you - \emph{cannot} have comments or \cs*{label}s or anything else on the first - line of the environments!} -\end{bewareofthedog} -\begin{sourcecode} - \begin{exercise}[points=2] % this comment will cause trouble - Lorem ipsum - \end{exercise} -\end{sourcecode} - -If\sinceversion{0.13} you don't like all the external files and the problems -which come with them \emph{and} if you don't need any verbatim or similar -material inside the exercises and solutions then you can use the following -package option: -\begin{options} - \opt{no-files} - This package option prevents \xsim\ from writing the exercises and - solutions to external files. This will keep your working folder ``clean'' - but will also prevent using verbatim material in exercises and solutions - and will possibly slow processing further down. \emph{This option is - considered experimental. Feedback is very welcome.} -\end{options} - -\begin{bewareofthedog} - \xsimauxfileinfo -\end{bewareofthedog} - -\begin{bewareofthedog} - A lot of the lines \xsim\ writes to the auxiliary file and reads in a - subsequent run look like this: -\begin{sourcecode} - \XSIM{points}{exercise-2=={4}||exercise-10=={2.5}||problem-11=={5}} -\end{sourcecode} - As you can see different entries of the various properties of exercises are - separated with \code{||}. This means that you cannot use this symbol - combination inside properties. For this reason \xsim\ provides an option to - change the marker. -\end{bewareofthedog} -\begin{options} - \keyval{split-aux-lists}{string}\Default{\code{||}} - Set\sinceversion{0.11} the string that is used to separate the property - entries in the auxiliary file. -\end{options} - -\section{New Exercise Types}\label{sec:new-exercise-types} - -It is easy to define new exercise environments together with a corresponding -solution environment using the following command: -\begin{commands} - \command{DeclareExerciseType}[\marg{type}\marg{parameters}] - Declare a new exercise type analoguous to the \env{exercise} and - \env{solution} environments. -\end{commands} -Declaring a new exercise type will also define a new command: -\begin{commands} - \command{numberof\meta{exercise-env}s} - These commands hold the absolut number of used exercises of type - \meta{type}. The meaning of \meta{exercise-env} will become clear below - when the exercise parameters are explained. It is always the same as the - exercise environment name. -\end{commands} -\begin{example} - There are \numberofexercises~exercises and \numberofproblems~problem in this - manual. -\end{example} -\xsim's pre-defined environment pair\changedversion{0.14} has been defined as -follows: -\begin{sourcecode} - \DeclareExerciseType{exercise}{ - exercise-env = exercise , - solution-env = solution , - exercise-name = \XSIMtranslate{exercise} , - exercises-name = \XSIMtranslate{exercises} , - solution-name = \XSIMtranslate{solution} , - solutions-name = \XSIMtranslate{solutions} , - exercise-template = default , - solution-template = default , - exercise-heading = \subsection* , - solution-heading = \subsection* - } -\end{sourcecode} - -The above already is an example for almost all parameters that can (and often -must) be set. Here is the complete list: -\begin{parameters} - \paraval{exercise-env}{exercise environment name} - The name for the environment used for the exercises of type \meta{type}. - \emph{This parameter is mandatory.} It can't be changed afterwards. - \paraval{solution-env}{solution environment name} - The name for the environment used for the solutions of type \meta{type}. - \emph{This parameter is mandatory.} It can't be changed afterwards. - \paraval{exercise-name}{exercise name} - The name of the exercises of type \meta{type} -- used for typesetting. - \emph{This parameter is mandatory.} - \paraval{exercises-name}{exercises name} - The\sinceversion{0.12} plural name of the exercises of type \meta{type} -- - used for typesetting. If this is not set explicitly an \code{s} is - appended to the singular name. - \paraval{solution-name}{solution name} - The name of the solutions of type \meta{type} -- used for typesetting. - \emph{This parameter is mandatory.} - \paraval{solutions-name}{solutions name} - The\sinceversion{0.12} plural name of the solutions of type \meta{type} -- - used for typesetting. If this is not set explicitly an \code{s} is - appended to the singular name. - \paraval{exercise-template}{exercise template} - The template used for typesetting the exercises of type \meta{type}. - \emph{This parameter is mandatory.} See - section~\vref{sec:styl-exerc-templ} for details on templates. - \paraval{solution-template}{solution template} - The template used for typesetting the exercises of type \meta{type}. - \emph{This parameter is mandatory.} See - section~\vref{sec:styl-exerc-templ} for details on templates. - \paraval{counter}{counter name} - The counter used for the exercises of type \meta{type}. If not explicitly - set the counter with the same name as \parameter{exercise-env} is used. - Otherwise the specified counter is used. This enables to have different - types of exercises sharing a common counter. \emph{This parameter can't - be changed afterwards.} If the explicit or implicit counter does not - exist, yet, it will be defined. - \paraval{solution-counter}{counter name} - The counter used for the solutions of type \meta{type}. If not explicitly - set the counter with the same name as \parameter{solution-env} is used. - Otherwise the specified counter is used. This enables to have different - types of solutions sharing a common counter although this doesn't actually - make much sense. But it can be useful to avoid using an already existing - counter. \emph{This parameter can't be changed afterwards.} If the - explicit or implicit counter does not exist, yet, it will be defined. The - sole purpose of this counter is to be able to label solutions so they can - be \cs*{pageref}ed. - \paraval{number}{integer} - An internal parameter that is used to keep track of the number of - exercises of a type. This parameter cannot be set or changed by the - user. - \paraval{exercise-heading}{exercise heading command} - The\sinceversion{0.14} command used for typesetting of the heading of - exercises of type \meta{type} -- used for typesetting with the command - \cs{GetExerciseHeadingF}. - \paraval{solution-heading}{solution heading command} - The\sinceversion{0.14} command used for typesetting of the heading of - solutions of type \meta{type} -- used for typesetting with the command - \cs{GetExerciseHeadingF}. -\end{parameters} - -It is possible to change some of the parameters after an exercise type has -been defined. Those include \parameter{exercise-name}, -\parameter{solution-name}, \parameter{exercise-template}, and -\parameter{solution-template}. It is also possible to define new parameters. -\begin{commands} - \command{DeclareExerciseParameter}[\sarg\marg{parameter}] - Declares the new parameter \meta{parameter}. The optional star declares a - fixed parameter which cannot be changed once it is set. \emph{You - probably will never need this command. Most tasks can be solved using - properties (see section~\vref{sec:exercise-properties}) instead.} - \command{SetExerciseParameter}[\marg{type}\marg{parameter}\marg{value}] - Usable to set a single parameter to a new value. - \command{SetExerciseParameters}[\marg{type}\marg{parameters}] - Set several parameters at once. \meta{parameters} is a csv list of - key/value pairs. -\end{commands} -If you try to set an already set but fixed parameter like -\parameter{exercise-env} a warning will be written to the log file. For all -parameters that can be changed also options exist wich can be set via -\cs{xsimsetup}. They are explained in -section~\vref{sec:environment-options-hooks}. - -\begin{bewareofthedog} - All exercises of a type use the parameters - (\eg, \parameter{exercise-template}) that are \emph{currently active}. If - you want exercises with a different look or different names in the same - document you should use different exercises types. -\end{bewareofthedog} - -\section{Exercise Properties}\label{sec:exercise-properties} - -\subsection{Predefined Properties} - -Exercise like the \env{exercise} environment and possibly others defined with -\cs{DeclareExerciseType} have a number of predefined \acsp*{prop}: -\begin{properties} - \propval{id}{integer} - Holds the internal id of an exercise. \emph{Cannot be set by the user}. - \propval{ID}{text} - Holds the user id of an exercise if defined. Otherwise it is equal to - \property{id}. - \propval{counter}{text} - Holds the counter value representation of an exercise (\ie, what you - usually know as \cs*{the\meta{counter}}). \emph{Cannot be set by the - user}. - \propval{counter-value}{integer} - Holds the counter value of an exercise (\ie, what you usually know as - \cs*{the}\cs*{value}\marg{counter}). \emph{Cannot be set by the user}. - \propval{subtitle}{text} - Holds the subtitle of an exercise. - \propval{points}{number} - Holds the reachable points of an exercise. - \propval{bonus-points}{number} - Holds the reachable bonus-points of an exercise. - \propbool{print} - Holds the print boolean of an exercise. - \propbool{print\bang} - Holds a special print boolean of an exercise, see - page~\pageref{property:print!}. - \propbool{use} - Holds the usage boolean of an exercise. - \propbool{use\bang} - Holds a special usage boolean of an exercise, see - page~\pageref{property:print!}. - \propbool{used} - True if an exercise has been used at least once. For an existing exercise - this is only false for exercises that have been collected - (\cf~section~\vref{sec:collecting-exercises}). - \propbool{solution} - \sinceversion{0.17}Holds the solution boolean of an exercise. If this is - true then a solution has the same text\slash environment body as the - corresponding exercise. (This might be useful for multiple choice - questions for example.) - \propval{tags}{csv list of tags} - Holds the list of tags the exercise should be associated with. - \propval{topics}{csv list of topics} - Holds the list of topics the exercise should be associated with. - \propval{page}{text} - Holds the page counter value representation of an exercise \\ - (\ie, what you usually know as \cs*{thepage}). - \propval{page-value}{integer} - Holds the page counter value of an exercise \\ - (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{page}). - \propval{section}{text} - Holds the section counter value representation of an exercise \\ - (\ie, what you usually know as \cs*{thesection}). - \propval{section-value}{integer} - Holds the section counter value of an exercise \\ - (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{section}). - \propval{chapter}{text} - Holds the chapter counter value representation of an exercise \\ - (\ie, what you usually know as \cs*{thechapter}). \\ - \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter} - exist.} - \propval{chapter-value}{integer} - Holds the chapter counter value of an exercise \\ - (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{chapter}). \\ - \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter} - exist.} - \propval{sectioning}{section numbers} - Holds five brace groups which in turn hold the section numbers (integers) - of the exercise in the order - \marg{chapter}\marg{section}\marg{subsection}\marg{subsubsection}\marg{paragraph}. - \propval{exercise-body}{\TeX code} - When\sinceversion{0.13} the package option \option{no-files} is set this - property is defined and holds the environment body of an exercise. - \propval{solution-body}{\TeX code} - When\sinceversion{0.13} the package option \option{no-files} is set this - property is defined and holds the environment body of the corresponding - solution. -\end{properties} - -Some of these \acsp*{prop} are fixed and cannot be set by the user. Those -include \property{id}, \property{counter}, and \property{counter-value}. The -others can be set using the optional argument of the exercise environment. - -\begin{example} - \begin{exercise}[subtitle={This is a subtitle},points=4,bonus-points=1] - An exercise where some properties have been set. - \end{exercise} -\end{example} - -\subsection{Declaring Own Properties} - -\xsim\ offers the possibility to declare additional exercise properties: -\begin{commands} - \command{DeclareExerciseProperty}[\barg\sarg\narg\marg{property}] - Declares the property \meta{property}. - - If used with the optional \barg\ a \textbf{unique property} is defined - which means that each exercise must have a property value distinct from - all other exercises (all means all -- \emph{independent from the exercise - type}). - - If used with the optional \sarg\ a \textbf{boolean property} is defined - which means that it only should get the values \code{true} or \code{false} - and if used without value it gets the value \code{true} instead of an - empty value. If any other value is used the property is set to - \code{false}. A boolean property obviously cannot be unique. The - optional \sarg\ takes precedence over the optional \barg, \ie, if both are - present the property is boolean \emph{but not} unique. - - If used with the optional \narg\ a property is defined which won't get - updated through subsequent compilation runs but is only set when the - exercise is used. - \command{DeclareExercisePropertyAlias}[\marg{property 1}\marg{property 2}] - Declares \meta{property 1} to be an alias of \meta{property 2}. This - means that each time \meta{property 2} is set \meta{property 1} will be - set to the same value \emph{unless} it has been set already. As an - example: property \property{ID} is an alias of property \property{id}. -\end{commands} - -This is better demonstrated with an example: -\begin{example} - \begin{exercise} - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} - \end{exercise} - \begin{exercise}[ID=foo-bar] - \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par - \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par - \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} - \end{exercise} -\end{example} - -The power of properties will get more clear when reading -section~\vref{sec:styl-exerc-templ} about templates. - -\subsection[Exercise Goals]{A Special Kind of Property: Exercise Goals}\label{sec:goals} - -Exercise goals are a generic concept in \xsim\ for exercise properties like -\property{points} or \property{bonus-points}. Those are properties which can -(only) get a decimal number as value the sum of which is calculated and -available (after a compilation) throughout the document. -\begin{commands} - \command{DeclareExerciseGoal}[\marg{goal}] - Declare a new exercise goal named \meta{goal} and also a property called - \meta{goal}. - \command{TotalExerciseTypeGoal}[\marg{type}\marg{goal}\marg{singular}\marg{plural}] - Get the sum of goal \meta{goal} for all exercises of type \meta{type}. - \meta{singular} and \meta{plural} are placed after the sum in the input - stream depending on whether the sum equals~$1$ or not. - \command{TotalExerciseTypeGoals}[\marg{type}\marg{list of - goals}\marg{singular}\marg{plural}] - Get the sum of goal all goals in \meta{list of goals} for all exercises of - type \meta{type}. The goal names in \meta{list of goals} must be - separated with \code{+}. \meta{singular} and \meta{plural} are placed - after the sum in the input stream depending on whether the sum equals~$1$ - or not. - \command{TotalExerciseGoal}[\marg{goal}\marg{singular}\marg{plural}] - Get the sum of goal \meta{goal} for all exercises. \meta{singular} and - \meta{plural} are placed after the sum in the input stream depending on - whether the sum equals~$1$ or not. - \command{TotalExerciseGoals}[\marg{list of - goals}\marg{singular}\marg{plural}] - Get the sum of goal all goals in \meta{list of goals} for all exercises. - The goal names in \meta{list of goals} must be separated with - \code{+}. \meta{singular} and \meta{plural} are placed after the sum in - the input stream depending on whether the sum equals~$1$ or not. - \command{AddtoExerciseTypeGoal}[\marg{type}\marg{goal}\marg{value}] - Adds \meta{value} to the goal \meta{goal} of exercise type \meta{type}. - \command{AddtoExerciseTypeGoalPrint}[\marg{type}\marg{goal}\marg{value}% - \marg{singular}\marg{plural}] - Adds \meta{value} to the goal \meta{goal} of exercise type \meta{type}. - The value and -- depending on wether the value equals $1$ or not -- - \meta{singular} or \meta{plural} are left in the input stream. - \command{AddtoExerciseGoal}[\marg{goal}\marg{value}] - Adds \meta{value} to the goal \meta{goal} of the current exercise - type. (To be used within exercises.) - \command{AddtoExerciseTypeGoalPrint}[\marg{goal}\marg{value}% - \marg{singular}\marg{plural}] - Adds \meta{value} to the goal \meta{goal} of the current exercise type. - The value and -- depending on wether the value equals $1$ or not -- - \meta{singular} or \meta{plural} are left in the input stream. (To be used - within exercises.) - \command{ExerciseGoalValuePrint}[\marg{value}\marg{singular}\marg{plural}] - Print \meta{value} and -- depending on wether the value equals $1$ or not -- - \meta{singular} or \meta{plural}. - \command{printgoal}[\marg{value}] - Print \meta{value} according to option \option{goal-print}. Defined in - terms of \cs{ExerciseGoalValuePrint}. - \command{printpoints}[\marg{type}] - Print the sum of points for all exercises of type \meta{type} followed by - an appropriate translation of the words \enquote{point} or - \enquote{points}, respectively\footnote{See section~\vref{sec:exerc-transl} - for details on the definition and usage of language dependent words.}. - Defined in terms of \cs{TotalExerciseTypeGoal}. - \command{printtotalpoints} - Print the sum of points for all exercises followed by an appropriate - translation of the words \enquote{point} or \enquote{points}, - respectively. Defined in terms of \cs{TotalExerciseGoal}. - \command{addpoints}[\sarg\marg{value}] - Adds \meta{value} to the points of the current exercise type. (To be used - within exercises.) Prints the value followed by an appropriate - translation of the words \enquote{point} or \enquote{points}, - respectively. The starred version prints nothing. Defined in terms of - \cs{AddtoExerciseGoal} and \cs{AddtoExerciseGoalPrint}. - \command{points}[\marg{value}] - Print \meta{value} followed by an appropriate translation of the words - \enquote{point} or \enquote{points}, respectively. Defined in terms of - \cs{ExerciseGoalValuePrint}. - \command{printbonus}[\marg{type}] - Print the sum of bonus points for all exercises of type \meta{type} - followed by an appropriate translation of the words \enquote{point} or - \enquote{points}, respectively. Defined in terms of - \cs{TotalExerciseTypeGoal}. - \command{printtotalbonus} - Print the sum of bonus points for all exercises followed by an appropriate - translation of the words \enquote{point} or \enquote{points}, - respectively. Defined in terms of \cs{TotalExerciseGoal}. - \command{addbonus}[\sarg\marg{value}] - Adds \meta{value} to the bonus points of the current exercise type. (To be - used within exercises.) Prints the value followed by an appropriate - translation of the words \enquote{point} or \enquote{points}, - respectively. The starred version prints nothing. Defined in terms of - \cs{AddtoExerciseGoal} and \cs{AddtoExerciseGoalPrint}. -\end{commands} - -The two existing goals are defined with -\begin{sourcecode} - \DeclareExerciseGoal{points} - \DeclareExerciseGoal{bonus-points} -\end{sourcecode} - -When goal values are printed the decimal number is fed to a function which can -be changed using the following option: -\begin{options} - \keyval{goal-print}{code}\Default{\#1} - How to format goal values. Use \code{\#1} to refer to the actual number. -\end{options} - -At last some examples for a custom command: let's say you want a command which -prints the complete sum for all exercises of all exercise types of both -\property{points} \emph{and} \property{bonus-points} added up: -\begin{sourcecode} - \NewDocumentCommand\printsumofpointsandbonus{}{% - \TotalExerciseGoals{points+bonus-points} - {\,\XSIMtranslate{point}} - {\,\XSIMtranslate{points}}% - } -\end{sourcecode} -Here is how you could mimick the command \cs*{totalpoints} from -\pkg{exsheets}: -\begin{sourcecode} - \NewDocumentCommand\pointsandbonus{}{% - \TotalExerciseGoal{points}{}{}% - \IfExerciseGoalsSumF{bonus-points}{=0} - {\,(+\,\TotalExerciseGoal{bonus-points}{}{})}% - \,\XSIMtranslate{points}% - } -\end{sourcecode} - - -\subsection[Exercise Tags]{A Special Kind of Property: Exercise Tags}\label{sec:tags} - -Exercise tags are a generic concept in \xsim\ for exercise properties like -\property{tags} or \property{topics}. Those are properties which can (only) -get a csv list of strings as value. Those strings can be used to selectively -use exercises. See section~\vref{sec:using-printing} for details on -\emph{usage} of exercises and the difference to \emph{printing} an exercise -and how to use exercise tags for selection. -\begin{commands} - \command{DeclareExerciseTagging}[\marg{tag}] - This defines an exercise tagging group named \meta{tag}. It also defines a - property named \meta{tag}. In addition two options are defined: an option - named \code{\meta{tag}} which can be used for selection and an boolean - option \code{\meta{tag}/ignore-untagged}. - \command{ProvideExerciseTagging}[\marg{tag}] - The\sinceversion{0.11} same as \cs{DeclareExerciseTagging} but does - nothing when \meta{tag} already exists. -\end{commands} -The two existing tagging groups have been defined and preset with the -following code: -\begin{sourcecode} - \DeclareExerciseTagging{tags} - \DeclareExerciseTagging{topics} - \xsimsetup{tags/ignore-untagged=false} -\end{sourcecode} -This means that these options are available: -\begin{options} - \keyval{tags}{csv list of tags} - Choose the set of tags whose associated exercises should be printed. - \keyval{topics}{csv list of topics} - Choose the set of topics whose associated exercises should be printed. - \keybool{ignore-untagged}\Module{tags}\Default{false} - If set to true exercises with no tags will be printed even if tags have - been chosen with the option \option{tags}. - \keybool{ignore-untagged}\Module{topics}\Default{true} - If set to true exercises with no topics will be printed even if topics - have been chosen with the option \option{topics}. -\end{options} - -It may happen that you choose certain tags for printing and want one or two -exercises to be printed or used even if they don't match the tagging -criteria. For this reason two additional properties exist which can be set to -an exercise:\label{property:print!} -\begin{properties} - \propbool{print\bang} - If set to true the exercise will be printed (and thus used) regardless of - other conditions. - \propbool{use\bang} - If set to true the exercise will be used regardless of other conditions. -\end{properties} - -\section{Using and Printing an Exercise}\label{sec:using-printing} -\subsection{What the Environments do} - -When an exercise is started with \environ{exercise} (or other environments -defined through \cs{DeclareExerciseType}) then different things happen -depending on different settings: -\begin{itemize} - \item If the \emph{insert mode} is active nothing happens, see - section~\vref{sec:collecting-exercises} for details on this. - \item Else the id integer is incremented. - \item If the exercise is \emph{used} the corresponding counter is stepped - and the exercise is added to the \enquote{use list}. The properties - \property{counter} and \property{use} are updated accordingly. - \item If an exercise is \emph{printed} then it is also \emph{used}. An - exercise that isn't used cannot be printed. Being printed means two - things: being added to the \enquote{print list} and being typeset at the - position where the exercise is placed in the source file. If an exercise - is \emph{not printed but used} it means that the counter will be stepped. - This can be useful for creating an exercise sheet only containing the - solutions for some exercises. - \item If an exercise is printed certain hooks and template code is inserted - around the environment body. -\end{itemize} - -\begin{example} - \begin{exercise}[print=false,ID=invisible] - This exercise will not be printed but the exercise counter will be - incremented nonetheless. Its solution will be printed in the list of - solutions. - \end{exercise} - \begin{solution} - The solution of the exercise that has not been printed. - \end{solution} -\end{example} - -The schematic structure of an exercise is shown in -figure~\vref{fig:schematic-structure}. - -\begin{figure} - \centering - \begin{tikzpicture} - \node[draw,minimum width=.7\linewidth] at (0,0) {pre hook}; - \node[draw,minimum width=.7\linewidth] at (0,-1) {begin template code}; - \node[draw,minimum width=.7\linewidth] at (0,-2) {begin hook}; - \node[draw,minimum width=.7\linewidth] at (0,-3) {environment body}; - \node[draw,minimum width=.7\linewidth] at (0,-4) {end hook}; - \node[draw,minimum width=.7\linewidth] at (0,-5) {end template code}; - \node[draw,minimum width=.7\linewidth] at (0,-6) {post hook}; - \end{tikzpicture} - \caption{Schematic structure of an exercise or solution.}\label{fig:schematic-structure} -\end{figure} - -\subsection{Environment Options \& Hooks}\label{sec:environment-options-hooks} - -For each exercise type there are the following options for both environments, -the environments' names are the module names for the options (here using the -\enquote{exercise} type): -\begin{options} - \keybool{print}\Module{exercise}\Default{true} - Determines if exercises of type \enquote{exercise} are printed. - \keybool{use}\Module{exercise}\Default{true} - Determines if exercises of type \enquote{exercise} are used. - \keyval{within}{counter}\Module{exercise}\Default - Adds the exercise counter to the reset list of the counter - \meta{counter}. \emph{Beware that if the counter is a shared counter - this will affect \emph{all objects} using this counter!} - \keyval{the-counter}{code}\Module{exercise} - An interface for redefining the counter representation command - \cs*{the\meta{counter}}. - \keyval{template}{template}\Module{exercise} - An interface for \cs{SetExerciseParameter}\Marg{exercise}% - \Marg{exercise-template}\marg{template}. - \keyval{template}{template}\Module{solution} - An interface for \cs{SetExerciseParameter}\Marg{exercise}% - \Marg{solution-template}\marg{template}. - \keyval{name}{name}\Module{exercise} - An interface for \cs{SetExerciseParameter}\Marg{exercise}% - \Marg{exercise-name}\marg{name}. - \keyval{name}{name}\Module{solution} - An interface for \cs{SetExerciseParameter}\Marg{exercise}% - \Marg{solution-name}\marg{name}. - \keyval{heading}{heading command}\Module{exercise} - An\sinceversion{0.14} interface for \cs{SetExerciseParameter}% - \Marg{exercise}\Marg{exercise-heading}\marg{heading command}. - \keyval{heading}{heading command}\Module{solution} - An\sinceversion{0.14} interface for \cs{SetExerciseParameter}% - \Marg{exercise}\Marg{solution-heading}\marg{heading command}. - \keyval{pre-hook}{code}\Module{exercise}\Default - The code for the \emph{pre exercise hook} for exercises of the type - \enquote{exercise}. - \keyval{begin-hook}{code}\Module{exercise}\Default - The code for the \emph{begin exercise hook} for exercises of the type - \enquote{exercise}. - \keyval{end-hook}{code}\Module{exercise}\Default - The code for the \emph{end exercise hook} for exercises of the type - \enquote{exercise}. - \keyval{post-hook}{code}\Module{exercise}\Default - The code for the \emph{post exercise hook} for exercises of the type - \enquote{exercise}. - \keybool{print}\Module{solution}\Default{false} - Determines if solutions of type \enquote{exercise} are printed. - \keyval{pre-hook}{code}\Module{solution}\Default - The code for the \emph{pre solution hook} for solutions of the type - \enquote{exercise}. - \keyval{begin-hook}{code}\Module{solution}\Default - The code for the \emph{begin solution hook} for solutions of the type - \enquote{exercise}. - \keyval{end-hook}{code}\Module{solution}\Default - The code for the \emph{end solution hook} for solutions of the type - \enquote{exercise}. - \keyval{post-hook}{code}\Module{solution}\Default - The code for the \emph{post solution hook} for solutions of the type - \enquote{exercise}. - % TODO -\end{options} - -\subsection{(Re-) Inserting a Certain Exercise} -If you know type and \property{id} of an exercise you can (re-)insert every -existing exercise, \ie, every exercise whose external file exists. -\begin{commands} - \command{printexercise}[\marg{type}\marg{csv of ids}] - \changedversion{0.17}Inserts the exercise or exercises of type - \meta{type} with the \property{id}s or \property{ID}s given in \meta{csv - of ids}. - \command{xprintexercise}[\marg{type}\marg{csv of ids}] - \sincechanged{0.16}{0.17}The same as \cs{printexercise} but expands - \meta{type} and the items of \meta{csv of ids} before it uses them. -\end{commands} -\begin{example} - \printexercise{exercise}{invisible} -\end{example} - -\section{Collecting Exercises}\label{sec:collecting-exercises} - -\begin{bewareofthedog} - The whole collection mechanism is likely to change completely in the - not-so-far future (let's say sometime in the six months from April~2020 or - so). -\end{bewareofthedog} - -\subsection{Background} -\xsim\ knows the concept of \enquote{exercise collections}. A collection of -exercises can be useful when you want to print a certain group of exercises -several times. Each collection must have a unique name with which you can -refer to the corresponding collection. A collection is realized by declaring -the collection and by surrounding the exercises belonging to the collection -with a certain pair of commands (this is explained in the next section). - -Let's say you have several files of math exercises where one only contains -geometry exercises and another only calculus exercises and so on. Surrounding -the \cs*{input} of each file with said pair of commands for a certain -collection all exercises of the corresponding file now are a collection which -then can be printed at once whereever you want the collection of exercises to -be printed. By choosing certain tags (see section~\vref{sec:tags}) inside -each collection you could even cherry-pick exercises from the external file. - -\subsection{Usage} -\emph{A collection must be declared in the preamble.} Using a pair of -commands explained below exercises between those commands are added to the -corresponding collection but not printed. After a collection is completed the -collection can be printed as often as needed. -\begin{commands} - \command{DeclareExerciseCollection}[\marg{collection name}] - Define a new collection \meta{collection name} in the document preamble. - \command{collectexercisestype}[\marg{collection name}\marg{exercise type}] - Opens the collection \meta{collection name} which now collects all - exercises of type \meta{exercise type} until the collection is closed with - \cs{collectexercisesstop}. Collections of other types are not - collected\footnote{This command starts a group with - \cs*{begingroup}!}. - \command{collectexercises}[\marg{collection name}] - Opens the collection \meta{collection name} which now collects all - exercises until the collection is closed with - \cs{collectexercisesstop}\footnote{This command starts a group with - \cs*{begingroup}!}. - \command{collectexercisesstop}[\marg{collection name}] - Closes the collection \meta{collection name}\footnote{This command ends - a group with \cs*{endgroup}!}. - \command{printcollection}[\oarg{options}\marg{collection name}] - Prints the collection \meta{collection name}, \ie, all exercises collected - earlier. This command cannot be used before the corresponding collection - has been closed correctly. -\end{commands} - -Valid options are the following: -\begin{options} - \keybool{headings}\Module{print-collection}\Default{false} - If true a heading for each exercise type is inserted. - \keyval{headings-template}{template}\Module{print-collection}\Default{collection} - The heading template used when \keyis{headings}{true}. - \keychoice{print}{exercises,solutions,both}\Module{print-collection}\Default{exercises} - Determines wether \cs{printcollection} prints the exercises or the - solutions of the collection. When you choose \code{both} exercises and - solutions are printed alternately. -\end{options} - -Those options can also be set via \cs{xsimsetup} using the module -\module{print-collection}. - -\begin{bewareofthedog} - Please be aware that exercises are not used or printed while they are - collected. Nonetheless the property \property{use} is set to \code{true} - (so that solutions can be printed even if the exercises are not) and the - property \property{print} is set to \code{false}. Also their counters are - \emph{not stepped} during the process. This only happens when they are - printed the first time, \cf~the \property{used} property. At that time - also the properties \property{page}, \property{section} and - \property{chapter} are set and the property \property{print} is set to - \code{true}. -\end{bewareofthedog} - -The usage should be clear: -\begin{example} - \collectexercises{foo} - \begin{exercise} - This exercise is added to the collection `foo'. - \end{exercise} - \begin{exercise} - This exercise is also added to the collection `foo'. - \end{exercise} - \begin{exercise} - So is this. - \end{exercise} - \begin{exercise} - As well as this one. - \end{exercise} - \collectexercisesstop{foo} -\end{example} -Once the collection is closed it can be printed: -\begin{example} - \printcollection{foo} -\end{example} - -You can open several collections at the same time: -\begin{sourcecode} - \collectexercises{foo} - ... - \collectexercisestype{bar}{exercises} - ... - \collectexercisesstop{bar} - ... - \collectexercisesstop{foo} -\end{sourcecode} -Exercises will be added to each open collection. - -There is one generic collection called \enquote{\code{all exercises}}. As the -name already suggests it will hold all exercises. So if you say -\begin{sourcecode} - \printcollection{all exercises} -\end{sourcecode} -all exercises will be printed. - -\begin{bewareofthedog} - If you use \cs*{label}s inside of exercises and you print exercises more - than once in your document (by reusing a collection for example) you will - get -\begin{sourcecode} - LaTeX Warning: There were multiply-defined labels. -\end{sourcecode} - Equally if you have environments like \environ{equation} which step a - counter inside an exercise or solution the counter will be stepped each time - the exercise is used. -\end{bewareofthedog} - -At last now an example using external files, collections and tags: -\begin{sourcecode} - % preamble: - % \DeclareExerciseCollection{foo-easy} - % \DeclareExerciseCollection{foo-medium} - % \DeclareExerciseTagging{difficulty} - - % document: - \collectexercises{foo-easy} - \xsimsetup{difficulty=easy} - \input{foo.tex} - \collectexercisesstop{foo-easy} - % collection `foo-easy' now contains all exercises of file `foo.tex' tagged - % with `difficulty=easy' - - \collectexercises{foo-medium} - \xsimsetup{difficulty=medium} - \input{foo.tex} - \collectexercisesstop{foo-medium} - % collection `foo-medium' now contains all exercises of file `foo.tex' - % tagged with `difficulty=medium' -\end{sourcecode} - -\begin{bewareofthedog} - The recommended usage is similar to the last example. Actually a collection - can be printed \emph{before} it is opened, too. (This needs \emph{at least} - two compilations, though.) However, it is safer printing a collection only - once and only \emph{after it has been collected}. No guaranties are given - that properties are set correctly if you use the collection before. You - usually also will make sure that the exercises in a collection are unique, - \ie, that an exercise is not part of several collections -- at least not if - both collections are printed in the same document. -\end{bewareofthedog} - -\section{Printing Random Exercises From a Collection} -\xsim\ provides the possibility of selecting random exercises from a -collection (\cf~section~\vref{sec:collecting-exercises}). -\begin{bewareofthedog} - Please be aware that this feature is \emph{not} available in \XeLaTeX! -\end{bewareofthedog} -\begin{commands} - \command{printrandomexercises}[\oarg{options}\marg{number}] - This command prints \meta{number} random exercises from the collection - chosen with option \option{collection}, see below. When this command is - used it generates a random list of integers which is written to the - \code{aux} file. On the subsequent compilations the according exercises - are printed. \emph{If you want to regenerate the random list you have to - delete the \code{aux} file before compiling.} -\end{commands} -Valid options for this command are: -\begin{options} - \keybool{sort}\Module{random}\Default{true} - Determines wether the random chosen exercises should be sorted according - to their order of definition in the collection or not. - \keyval{collection}{collection}\Module{random}\Default{all exercises} - The collection from which the exercises are to be chosen from. - \keyval{exclude}{csv list of ids}\Module{random} - A list of \property{id}s or \property{ID}s of exercises \emph{not} to be - chosen. - \keychoice{print}{exercises,solutions,both}\Module{random}\Default{exercises} - Determines wether \cs{printrandomexercises} prints the exercises or the - solutions. When you choose \code{both} exercises and solutions are - printed alternately. -\end{options} - -\begin{example} - \printrandomexercises[collection=foo]{2} -\end{example} - -The example above of course doesn't make much sense but if you have a -collection which collects exercises from an external file and the exercises -haven't been printed in the document before then you will get a list of -subsequently numbered exercises. - -\section{Printing Solutions}\label{sec:printing-solutions} - -There are different commands for printing the solutions to exercises: -\begin{commands} - \command{printsolutionstype}[\sarg\oarg{options}\marg{exercise type}] - Prints the solutions of all used exercises of type \meta{exercise type}. - The starred version only prints the solutions of all printed exercises of - type \meta{exercise type}. - \command{printsolutions}[\sarg\oarg{options}] - Prints the solutions of all used exercises of all types ordered by type. - The starred version only prints the solutions of all printed exercises of - all types. - \command{printallsolutions}[\sarg\oarg{options}] - Prints the solutions of all used exercises of all types ordered by - appearance in the document. The starred version only prints the solutions - of all printed exercises of all types. - \command{printsolution}[\oarg{options}\marg{type}\marg{id}] - Prints the solution of the exercise of type \meta{type} with the - \property{id} \meta{id}. - \command{xprintsolution}[\marg{type}\marg{id}] - \sinceversion{0.16}The same as \cs{printsolution} but expands \meta{type} - and \meta{id} before it uses them. -\end{commands} - -\begin{example} - \printsolutionstype{exercise} -\end{example} - -The options can be divided into two groups. The ones in the first group -modify the layout. -\begin{options} - \keybool{headings}\Module{print-solutions}\Default{true} - If true a heading for each exercise type is inserted. - \keyval{headings-template}{template}\Module{print-solutions}\Default{default} - The heading template used when \keyis{headings}{true}. -\end{options} - -The ones in the second group set conditions selecting which solutions are -printed. If you combine those conditions a solution is printed if it meets -either of the conditions. -\begin{options} - \keychoice{section}{\default{true},false,\meta{integer}}\Module{print-solutions}% - \Default{false} - If you set \keyis{section}{true} only solutions of exercises of the - current section are printed. If you set \keyis{section}{4} only solutions - of exercises in a section with number~$4$ are printed. - \keychoice{chapter}{\default{true},false,\meta{integer}}\Module{print-solutions}% - \Default{false} - If you set \keyis{chapter}{true} only solutions of exercises of the - current chapter are printed. If you set \keyis{chapter}{4} only solutions - of exercises in a chapter with number~$4$ are printed. - \keychoice{collection}{false,\meta{collection name}}\Module{print-solutions}% - \Default{false} - If used only solutions of exercises belonging to collection - \meta{collection name} are printed. -\end{options} - -The conditions can be combined. The following call will only print solutions -from exercises in section~3 of chapter~2: -\begin{sourcecode} - \printsolutions[chapter=2,section=3] -\end{sourcecode} - -\begin{bewareofthedog} - The selection per section or per chapter relies on the \emph{counter - numbers} of the sections or chapters, respectively. This means if section - numbers are reset (\eg\ by \cs*{chapter} or \cs*{appendix}) and you have - exercises from \emph{different} sections with \emph{the same section number} - the solutions of \emph{all those exercises} will be printed. This means you - only should use the \option{section} selection when section are the top - document level headings (apart from parts) and you have no exercises in the - appendix. Similar considerations are valid for the \option{chapter} - selection. -\end{bewareofthedog} - -All options can also be set via \cs{xsimsetup} using the module -\module{print-solutions}. - -\begin{example} - \printsolutions[section=4,headings-template=per-section] -\end{example} - -\begin{example} - \printsolution{exercise}{5} -\end{example} - -\section{Grading Tables}\label{sec:grading-tables} -When you create exercises it may not only be desirable to be able to add -points and bonus-points to a question (see section~\vref{sec:goals} about -exercise goals) but also to be able to output a grading table. \xsim\ has -built-in means for this. -\begin{commands} - \command{gradingtable}[\oarg{options}] - Print a grading table. -\end{commands} -Valid options for this command are -\begin{options} - \keyval{template}{template}\Default{default} - Choose the template used for the grading table. - \keyval{type}{exercise type}\Default - Choose the exercise type for which the table is printed. -\end{options} -Both option defaults can be changed with \cs{xsimsetup} setting the options -using \module{grading-table}: -\begin{sourcecode} - \xsimsetup{ - grading-table/template = default* - } -\end{sourcecode} - -An example: -\begin{example} - \gradingtable[type=exercise] -\end{example} - -Or using the \enquote{\code{default*}} template: -\begin{example} - \gradingtable[template=default*,type=exercise] -\end{example} - -Available templates and how to define new ones are explained in -sections~\vref{sec:grad-table-templ} and~\vref{sec:template-examples}. \xsim\ -per default provides two templates \enquote{\code{default}} and -\enquote{\code{default*}}, the first one has a vertical layout, the second a -horizontal layout. Both templates can be used per type like in the examples -above or for all types at once by leaving the specification \option{type} -away: -\begin{example} - \gradingtable -\end{example} - -\section{Styling the Exercises -- Templates}\label{sec:styl-exerc-templ} - -\subsection{Background} -Whenever \xsim\ outputs something to be typeset it uses so-called templates -for the task. \xsim\ knows of three different kinds of templates: -\begin{itemize} - \item environment templates (see section~\vref{sec:envir-templ}), - \item heading templates (see section~\vref{sec:heading-templates}) and - \item grading table templates (see section~\vref{sec:grad-table-templ}) -\end{itemize} - -The most important one for the styling of the exercises are the environment -templates. Those templates give you complete control over the look and -arrangement of an exercise. To be able to do this \xsim\ provides a large -number of commands which can be used only inside template -definitions\footnote{The last sentence is wrong: those commands can be used - anywhere but most of them only give useful results inside of templates.}. -Those commands are explained in the next section. Their usage will hopefully -become clear in the examples in section~\vref{sec:template-examples}. Having -full control over the layout comes at a price: you need to be able to program -yourself in order to achieve certain layouts\footnote{I plan to incorporate - the most common layouts -- and maybe some fancy ones, too -- in the examples - section~\vref{sec:template-examples} but at the time of writing this is still - up in the air.}. - -\subsection{Templates Provided by the Package} -\xsim\ comes with a few predefined layouts: -\begin{description} - \item[\code{default}] The template activated per default and the only one - available without further action. - \item[\code{runin}] A layout rather similar to the one by package - \pkg{exsheets}, see section~\vref{sec:runin-template}. Available through - the style file \code{layouts} (see section~\vref{sec:style-files} for more - information on style files\index{style file}). - \item[\code{margin}] A layout rather similar to the one by package - \pkg{exsheets}, see section~\ref{sec:margin-template}. Available through - the style file \code{layouts}. - \item[\code{minimal}] A\sinceversion{0.13} minimalistic layout, see - section~\ref{sec:minimal-template}. As the others inspired by an - \pkg{exsheets} layout. Available through the style file \code{layouts}. - \item[\code{inline}] A\sinceversion{0.18} minimalistic layout, the same as - \code{minimal} but doesn't add \cs*{par} at the beginning and end. - Available through the style file \code{layouts}. - \item[\code{centered}] A\sinceversion{0.18} layout with a centered heading. - Available through the style file \code{layouts}. -\end{description} - -\collectexercises{layouts} -\begin{exercise}[subtitle=The Subtitle,points=2.5,ID=showlayout] - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, - vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum - gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, - magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique - senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras - viverra metus rhoncus sem. -\end{exercise} -\collectexercisesstop{layouts} - -\listlayouts - -\subsection{Commands for Usage in Template Definitions} -\subsubsection{Goals} -\begin{commands} - \command{IfExerciseGoal\TF}[\marg{goal}\marg{relation and - value}\marg{true}\marg{false}] - Checks the sum of goal \meta{goal} against \meta{relation and value}. - \command{IfExerciseGoalSingular\TF}[\marg{goal}\marg{true}\marg{false}] - Checks if the value of the goal \meta{goal} of the current exercise - equals~$1$. This is the same as \\ - \cs{IfExerciseGoalTF}\marg{goal}\Marg{=1}\marg{true}\marg{false}. - \command{IfExerciseTypeGoalsSum\TF}[\marg{type}\marg{list of - goals}\marg{relation and value}\marg{true}\marg{false}] - Ckecks the sum of all goals in \meta{list of goals} for the exercises of - type \meta{type} against \meta{relation and value}. - \command{IfExerciseGoalsSum\TF}[\marg{type}\marg{list of - goals}\marg{relation and value}\marg{true}\marg{false}] - Ckecks the sum of all goals in \meta{list of goals} for all exercises of - all types against \meta{relation and value}. - \command{TotalExerciseTypeGoal}[\marg{goal}\marg{type}\marg{singular}\marg{plural}] - Print the sum of goal \meta{goal} for the exercises of type \meta{type} - and append \meta{singular} or \meta{plural} depending on wether the sum - equals~$1$ or not. - \command{TotalExerciseGoal}[\marg{goal}\marg{singular}\marg{plural}] - Print the sum of goal \meta{goal} for all exercises of all types - and append \meta{singular} or \meta{plural} depending on wether the sum - equals~$1$ or not. -\end{commands} - -\subsubsection{Properties} -\begin{commands} - \expandable\command{IfExercisePropertyExist\TF}[\marg{property}\marg{true}% - \marg{false}] - Tests wether an exercise property with the name \meta{property} is defined. - \command{IfExercisePropertySet\TF}[\marg{property}\marg{true}\marg{false}] - Tests wether the exercise property \meta{property} has been set for the - current exercise. - \expandable\command{GetExerciseProperty}[\marg{property}] - Retrieves the value of the property \meta{property} for the current - exercise. - \command{GetExerciseProperty\TF}[\marg{property}\marg{true}\marg{false}] - Tests wether the exercise property \meta{property} has been set for the - current exercise. Inside the \meta{true} branch you can refer to the - retrieved value either with \code{\#1} or with \cs{PropertyValue}. - \emph{This command expands its contents inside a group.} - \command{GetExerciseBody}[\Marg{exercise\textnormal{|}solution}] - \sinceversion{0.10}Retrieves the environment body of either the - \code{exercise} or the corresponding \code{solution} of the current - exercise. - \expandable\command{GetExerciseIdForProperty}[\marg{property}\marg{value}] - Retrieves the property \property{id} of the exercise where the property - \meta{property} has the value \meta{value}. \emph{This only works for - \emph{unique} properties!} - \command{GetExerciseTypeForProperty}[\marg{property}\marg{value}] - Retrieves the property \property{type} of the exercise where the - property \meta{property} has the value \meta{value}. \emph{This only - works for \emph{unique} properties!} - \command{SetExerciseProperty}[\marg{property}\marg{value}] - \changedversion{0.9}Set the property \meta{property} of the current - exercise to \meta{value}. - \command{SetExpandedExerciseProperty}[\marg{property}\marg{value}] - \sinceversion{0.9}Expand \meta{value} \cs*{edef}-like and set the property - \meta{property} of the current exercise to the result of the expansion. - \command{ExerciseSetProperty}[\marg{type}\marg{id}\marg{property}\marg{value}] - \sinceversion{0.9}Set the property \meta{property} of the exercise of type - \meta{type} and id \meta{id} to \meta{value}. - \command{ExerciseSetExpandedProperty}[\marg{type}\marg{id}\marg{property}\marg{value}] - \sinceversion{0.9}Expand \meta{value} \cs*{edef}-like and set the property - \meta{property} of the exercise of type \meta{type} and id \meta{id} to - the result of the expansion. - \expandable\command{IfExerciseBooleanProperty\TF}[\marg{property}% - \marg{true}\marg{false}] - Checks wether the boolean property \meta{property} has value \code{true} - or \meta{false} and leaves the corresponding argument in the input - stream. Gives an error if \meta{property} is not a boolean property. - \expandable\command{GetExerciseAliasProperty}[\marg{property}] - Retrieves the value of the property of which \meta{property} is an alias - of for the current exercise. - \command{SaveExerciseProperty}[\marg{property}\meta{macro}] - Saves the value of the property \meta{property} for the current - exercise in macro \meta{macro}. - \command{GlobalSaveExerciseProperty} - Globally saves the value of the property \meta{property} for the current - exercise in macro \meta{macro}. - \command{ExercisePropertyIfSet\TF}[\marg{type}\marg{id}\marg{property}% - \marg{true}\marg{false}] - Test if the property \meta{property} has been set for the exercise of type - \meta{type} with id \meta{id}. - \expandable\command{ExercisePropertyGet}[\marg{type}\marg{id}\marg{property}] - Retrieves the value of the property \meta{property} for the exercise of type - \meta{type} with id \meta{id}. - \expandable\command{ExercisePropertyGetAlias}[\marg{type}\marg{id}\marg{property}] - Retrieves the value of the property of which \meta{property} is an alias - of for the exercise of type \meta{type} with id \meta{id}. - \command{ExercisePropertySave}[\marg{type}\marg{id}\marg{property}\meta{macro}] - Saves the value of the property \meta{property} for the exercise of type - \meta{type} with id \meta{id} in macro \meta{macro}. - \command{ExercisePropertyGlobalSave}[\marg{type}\marg{id}\marg{property}\meta{macro}] - Globally saves the value of the property \meta{property} for the exercise - of type \meta{type} with id \meta{id} in macro \meta{macro}. -\end{commands} - -\subsubsection{Parameters} -\begin{commands} - \expandable\command{GetExerciseParameter}[\marg{parameter}] - Retrieves the value of the parameter \meta{paramater} for the current - exercise type. - \command{GetExerciseParameter\TF}[\marg{parameter}\marg{true}\marg{false}] - \sinceversion{0.9}Retrieves the value of the parameter \meta{paramater} - for the current exercise type. Inside the \meta{true} branch you can refer - to the retrieved value either with \code{\#1} or with \cs{ParameterValue}. - \emph{This command expands its contents inside a group.} - \expandable\command{GetExerciseName} - Retrieves the value of the parameter \parameter{exercise-name} for the - current exercise or of the parameter \parameter{solution-name} for the - current solution. - \expandable\command{GetExerciseHeadingF}[\marg{false}] - \sinceversion{0.14}Retrieves the value of the parameter - \parameter{exercise-heading} for the current exercise or of the parameter - \parameter{solution-heading} for the current solution. Inserts - \meta{false} if the corresponding parameter has not been set. - \expandable\command{ExerciseParameterGet}[\marg{type}\marg{parameter}] - Retrieves the value of the parameter \meta{parameter} for the exercise of type - \meta{type} with id \meta{id}. - \expandable\command{IfExerciseParameterSet\TF}[\marg{parameter}% - \marg{true}\marg{false}] - \sinceversion{0.9}Test if the parameter \meta{parameter} has been set for - the current exercise type. - \expandable\command{ExerciseParameterIfSet\TF}[\marg{type}\marg{parameter}% - \marg{true}\marg{false}] - \sinceversion{0.9}Test if the parameter \meta{parameter} has been set for - the exercise type \meta{type}. -\end{commands} - -\subsubsection{Tags} -\begin{commands} - \command{ForEachExerciseTag}[\marg{type}\marg{code}] - Loops over all tags of tag type \meta{type} for the current exercise - applying \meta{code} each time. Inside \meta{code} you can refer to the - corresponding tag with \code{\#1}. - \command{ListExerciseTags}[\marg{type}\marg{between}] - Lists all tags of tag type \meta{type} for the current exercise using - \meta{between} as a separator. - \command{UseExerciseTags}[\marg{type}\marg{between - two}\marg{between}\marg{between last two}] - Lists all tags of tag type \meta{type} for the current exercise using - \meta{between} as a separator and \meta{between last two} as separator - between the last two tags of the list. If the list only consists of two - tags \meta{between two} is used as separator. - \command{IfExerciseTagSet\TF}[\marg{value}\marg{true}\marg{false}] - In\sinceversion{0.11} order to insert text (also \emph{outside} of - exercises) depending on the chosen tags this command lets you check if - value \meta{value} has been set for \property{tags}. - \command{IfExerciseTopicSet\TF}[\marg{value}\marg{true}\marg{false}] - In\sinceversion{0.11} order to insert text (also \emph{outside} of - exercises) depending on the chosen tags this command lets you check if - value \meta{value} has been set for \property{topics}. -\end{commands} - -\subsubsection{Further Commands for Usage in Template Definitions} -\begin{commands} - \command{UseExerciseTemplate}[\marg{type}\marg{name}] - Retrieve template \meta{name} of type \meta{type}. This can be useful if - you want to define a template which just adds some code to an existing - template (an automated \cs*{label}, say). - \expandable\command{ExerciseType} - Can be used to refer to the current exercise type. - \expandable\command{ExerciseID} - Can be used to refer to the current exercise id. - \expandable\command{ExerciseText} - Can be used inside solutions to retrieve the text of the corresponding - solution. This is propably seldom useful as in most use cases the - exercise property \property{solution} is the easier alternative. - \expandable\command{ExerciseCollection} - Can be used in certain templates to refer to the collection that is - currently inserted. - \expandable\command{numberofusedexercises} - Holds the total number of used exercises. Useful in table template - definitions. - \expandable\command{ExerciseTableType}[\marg{code}] - In table template definitions this macro either expands to the given - exercise type or -- if no type has been given -- to \meta{code}. - \expandable\command{IfInsideSolution\TF}[\marg{true}\marg{false}] - Tests if the template is used inside a solution environment or not. - \expandable\command{IfSolutionPrint\TF}[\marg{true}\marg{false}] - Tests if the option \option{print} for the solutions of the current - \cs{ExerciseType} is set to \code{true} or \code{false}. - \command{IfExistSolution\TF}[\marg{true}\marg{false}] - \sinceversion{0.9}Tests if a solution for the current exercise exists. - \command{ForEachPrintedExerciseByType}[\marg{code}] - Loops over each \emph{printed} exercise ordered by the exercise types and - within each type by id. Inside \meta{code} you can refer to several - properties of the corresponding exercise: - \begin{itemize} - \item \code{\#1}: the type of the exercise - \item \code{\#2}: the id of the exercise - \item \code{\#3}: the \property{counter} property of the exercise - \item \code{\#4}: the \property{subtitle} property of the exercise - \item \code{\#5}: the \property{points} property of the exercise - \item \code{\#6}: the \property{bonus-points} property of the exercise - \end{itemize} - \command{ForEachUsedExerciseByType}[\marg{code}] - Loops over each \emph{used} exercise ordered by the exercise types and - within each type by id. Inside \meta{code} you can refer to several - properties of the corresponding exercise: - \begin{itemize} - \item \code{\#1}: the type of the exercise - \item \code{\#2}: the id of the exercise - \item \code{\#3}: the \property{counter} property of the exercise - \item \code{\#4}: the \property{subtitle} property of the exercise - \item \code{\#5}: the \property{points} property of the exercise - \item \code{\#6}: the \property{bonus-points} property of the exercise - \end{itemize} - \command{ForEachPrintedExerciseByID}[\marg{code}] - Loops over each \emph{printed} exercise order by the exercise id. Inside - \meta{code} you can refer to several properties of the corresponding - exercise: - \begin{itemize} - \item \code{\#1}: the type of the exercise - \item \code{\#2}: the id of the exercise - \item \code{\#3}: the \property{counter} property of the exercise - \item \code{\#4}: the \property{subtitle} property of the exercise - \item \code{\#5}: the \property{points} property of the exercise - \item \code{\#6}: the \property{bonus-points} property of the exercise - \end{itemize} - \command{ForEachUsedExerciseByID}[\marg{code}] - Loops over each \emph{used} exercise order by the exercise id. Inside - \meta{code} you can refer to several properties of the corresponding - exercise: - \begin{itemize} - \item \code{\#1}: the type of the exercise - \item \code{\#2}: the id of the exercise - \item \code{\#3}: the \property{counter} property of the exercise - \item \code{\#4}: the \property{subtitle} property of the exercise - \item \code{\#5}: the \property{points} property of the exercise - \item \code{\#6}: the \property{bonus-points} property of the exercise - \end{itemize} - \command{XSIMprint}[\Marg{exercise|solution}\marg{type}\marg{id}] - \sincechanged{0.16}{0.17}Inserts the either the exercise or the solution - of type \meta{type} with the \property{id} or \property{ID} \meta{id}. - \command{XSIMxprint}[\Marg{exercise|solution}\marg{type}\marg{id}] - The same as \cs{XSIMprint} but expands \meta{type} and \meta{id} before it - uses them.\sincechanged{0.16}{0.17} - \expandable\command{XSIMtranslate}[\marg{keyword}] - Delivers the translation of \meta{keyword} according to the current - document language (in the meaning of a \pkg{babel}~\cite{pkg:babel} or - \pkg{polyglossia}~\cite{pkg:polyglossia} language). Existing keywords and - keyword translations (and how to add new ones) are explained in - section~\vref{sec:exerc-transl}. - \command{XSIMexpandcode}[\marg{code}] - Expands \meta{code} like \cs*{edef} does and leaves the result in the - input stream. - \expandable\command{XSIMifchapter\TF}[\marg{true}\marg{false}] - Returns \meta{true} if both a macro \cs*{chapter} and a counter - \code{chapter} are defined and \meta{false} otherwise. - \command{XSIMmixedcase}[\marg{code}] - Converts the full expansion\footnote{This is a \cs*{romannumeral} - expansion~\cite{texsx:romannumeral}.\label{fn:romannumeral}} of - \meta{code} to mixed case: \\ - \verbcode+\XSIMmixedcase{this is some text}+ \XSIMmixedcase{this is some - text} \\ - \emph{This command expands \meta{code} before converting it}. - \command{XSIMputright}[\meta{macro}\marg{code}] - Extends the macro definition of \meta{macro} with \meta{code} putting it - to the right. This is more or less a local version of the LaTeX kernel - macro \cs*{g@addto@macro}. - \expandable\command{XSIMifeq\TF}[\marg{code 1}\marg{code - 2}\marg{true}\marg{false}] - Checks if the full expansion\footref{fn:romannumeral} of \meta{code 1} and - \meta{code 2} is the same tokenlist. - \expandable\command{XSIMifblank\TF}[\marg{code}\marg{true}\marg{false}] - Checks if the full expansion\footref{fn:romannumeral} of \meta{code} is - blank (\ie, if it is empty or only consists of spaces). - \command{XSIMatbegindocument}[\marg{code}] - \sinceversion{0.15a}Adds \meta{code} to \xsim's begin document hook. - Should be used inside style files instead of \cs*{AtBeginDocument}. - \command{XSIMatenddocument}[\marg{code}] - \sinceversion{0.15a}Adds \meta{code} to \xsim's end document hook. - Should be used inside style files instead of \cs*{AtEndDocument}. -\end{commands} - -\subsection{Declaring Templates} -\subsubsection{Environment Templates}\label{sec:envir-templ} -\begin{commands} - \command{DeclareExerciseEnvironmentTemplate}[\marg{name}\marg{begin - code}\marg{end code}] - Declare the environment template \meta{name}. -\end{commands} -Environment templates are used by the exercise and solution environments. -Those are the templates set with the parameters \parameter{exercise-template} -and \parameter{solution-template}. - -The predefined template is called \enquote{\code{default}}, see -section~\vref{sec:exercise-templ-default}. - -\subsubsection{Heading Templates}\label{sec:heading-templates} -\begin{commands} - \command{DeclareExerciseHeadingTemplate}[\marg{name}\marg{code}] - Declare the heading template \meta{name}. -\end{commands} -Heading templates are used by \cs{printsolutions}, \cs{printsolutionstype} and -\cs{printcollection}. Those are the templates set with the option -\option{headings-template} of the modules \module{print-solutions} and -\module{print-collection}. - -The predefined templates are \enquote{\code{default}}, -\enquote{\code{collection}}, \enquote{\code{per-section}} and -\enquote{\code{per-chapter}} see section~\vref{sec:headings-templates}. - -\subsubsection{Grading Table Templates}\label{sec:grad-table-templ} -\begin{commands} - \command{DeclareExerciseTableTemplate}[\marg{name}\marg{code}] - Declare the grading table template \meta{name}. -\end{commands} -Table templates are used by \cs{gradingtable}. Those are the templates set -with the option \option{template} of module \module{grading-table} - -The predefined templates are \enquote{\code{default}} and -\enquote{\code{default*}}, see sections~\vref{sec:table-templ-default} -and~\vref{sec:table-templ-default*}. - -\subsection{Create and Use \xsim\ Style Files}\label{sec:style-files} -\index{style file|(} - -\xsim\changedversion{0.11} offers you the possibility to create own -\emph{style files}. Let's say you want to have a style called -\code{math-exam}. Then you need to save all necessary definitions in a file -called: -\begin{center} - \code{xsim.style.math-exam.code.tex} -\end{center} -The first command in the file should be \cs{xsimstyle}\Marg{math-exam}. This -file can now be loaded into your document using -\cs{loadxsimstyle}\Marg{math-exam} or by using -\cs{xsimsetup}\Marg{load-style=math-exam}: -\begin{sourcecode} - \documentclass[DIV=18,parskip=half]{scrartcl} - \usepackage[T1]{fontenc} - \usepackage[utf8]{inputenc} - - \usepackage[clear-aux]{xsim} - \loadxsimstyle{math-exam} - - \title{Math Exam \#3} - \date{2017-03-28} -\end{sourcecode} - -In this style file stuff like template and property definitions should -happen. This is more or less a convenient way to -\begin{itemize} - \item keep the preamble \enquote{clean} and - \item define re-usable styles without the need of copying the document - preamble to another document. -\end{itemize} -A style file is like a package or class file, \ie, \code{@} has category -code~11 (letter). - -The formal description of the commands: -\begin{commands} - \command{xsimstyle}[\sarg\marg{style name}] - The\changedversion{0.11} first command in a \xsim\ style file called - \code{xsim.style.\meta{style name}.code.tex} which defines the \xsim\ - style \meta{style name}. The starred version activates expl3 - syntax\footnote{Those users who want this will know what it means. If you - don't know what it means you will not need it.}. - \command{loadxsimstyle}[\marg{csv list of style names}] - Load one or more styles into the document. -\end{commands} -\begin{options} - \keyval{load-style}{csv list of style names} - Another\sinceversion{0.14} interface for \cs{loadxsimstyle}\marg{csv list - of style names}. -\end{options} - -\begin{bewareofthedog} - At the moment this mechanism offers no advantages over creating a custom - package or simply \cs*{input}ing a file. Future versions might provide - additional features. -\end{bewareofthedog} - -\index{style file|)} - -\subsection{Examples}\label{sec:template-examples} - -The repository of this package\footnote{GitHub: - \url{https://github.com/cgnieder/xsim/}, CTAN: - \url{http://www.ctan.org/pkg/xsim/}} currently includes -\theexamplefiles~example documents demonstrating how different aspects of this -package work or how different kinds of problems can be solved or how different -kinds of layouts can be achieved as well as how solve concrete problems that -have come up in different \LaTeX\ forums, see -section~\vref{sec:example-files}. - -\subsubsection{The \code{default} Exercise Template}\label{sec:exercise-templ-default} - -Below the definition\changedversion{0.14} of the \code{default} exercise -template provided by \xsim\ is shown: - -\begin{sourcecode} - \DeclareExerciseEnvironmentTemplate{default}{% - \GetExerciseHeadingF{\subsection*}% - {% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfInsideSolutionF - {% - \GetExercisePropertyT{subtitle} - { {\normalfont\itshape\PropertyValue}}% - }% - } - \GetExercisePropertyT{points} - {% - \marginpar - {% - \IfInsideSolutionF{\rule{1.2cm}{1pt}\slash}% - \printgoal{\PropertyValue} - \GetExercisePropertyT{bonus-points}{~(+\printgoal{\PropertyValue})}% - ~\XSIMtranslate {point-abbr}% - }% - }% - } - {\par} -\end{sourcecode} - -\subsubsection{A New Exercise Type Using \pkg*{tcolorbox}} -Let's say we want exercises to be put in a \env*{tcolorbox}. We want a bold -title and. if given, an italic subtitle. Exercises should also have the -points after the subtitle in parentheses if given. Let's also say we want -those to be an additional exercise type in addition to the ones \xsim\ already -provides. This is shown with the following code which is also how the -problems in this manual have been defined: - -\begin{sourcecode} - \DeclareExerciseEnvironmentTemplate{tcolorbox} - {% - \tcolorbox[ - colback = red!5!white , - colframe = red!75!black , - colbacktitle = yellow!50!red , - coltitle = red!25!black , - breakable , - drop shadow , - beforeafter skip = .5\baselineskip , - title = - \textbf{\GetExerciseName~\GetExerciseProperty{counter}}% - \GetExercisePropertyT{subtitle}{ \textit{\PropertyValue}}% - \IfInsideSolutionF{% - \GetExercisePropertyT{points}{ % notice the space - (% - \printgoal{\PropertyValue} - \IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}}% - )% - }% - }% - ]% - } - {\endtcolorbox} - - \DeclareExerciseType{problem}{ - exercise-env = problem , - solution-env = answer , - exercise-name = Problem , - solution-name = Answer , - exercise-template = tcolorbox , - solution-template = tcolorbox - } -\end{sourcecode} - -See it in action: -\begin{example} - \begin{problem}[subtitle=My subtitle,points=5] - This is a problem using a subtitle and points. - \end{problem} - \begin{answer} - This is the answer to problem~\GetExerciseProperty{counter}. - \end{answer} -\end{example} - -\subsubsection{Mimicking \pkg*{exsheets}' \code{runin} Template} -\label{sec:runin-template} - -The following example shows how you could mimick \pkg*{exsheets}' \code{runin} -template. The outcome isn't exactly the same since \pkg{exsheets} doesn't use -\cs*{marginpar} but the result should look very similar. A safer definition -would use a real sectioning command for the title. - -\begin{sourcecode} - \usepackage{needspace} - \DeclareExerciseEnvironmentTemplate{runin} - {% - \par\vspace{\baselineskip} - \Needspace*{2\baselineskip} - \noindent - \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}% - \GetExercisePropertyT{subtitle}{ \textit{#1}} % <<< notice the space - \IfInsideSolutionF{% - \GetExercisePropertyT{points}{% - \marginpar{% - \printgoal{\PropertyValue}% - \GetExercisePropertyT{bonus-points}{+\printgoal{\PropertyValue}}% - \,\IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}}% - }% - }% - }% - } - {} -\end{sourcecode} - -\subsubsection{Mimicking \pkg*{exsheets}' \code{margin} Template} -\label{sec:margin-template} - -The following example shows how you could mimick \pkg*{exsheets}' -\code{margin} template. - -\begin{sourcecode} - \DeclareExerciseEnvironmentTemplate{margin} - {% - \trivlist - \item[\llap{% - \smash{% - \tabular[t]{@{}r@{}} - \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}} - \IfExercisePropertySetT{points}{% - \tabularnewline - (% - \printgoal{\GetExerciseProperty{points}}% - \GetExercisePropertyT{bonus-points}{+\printgoal{#1}}% - \,\XSIMtranslate{point-abbr}% - )% - }% - \endtabular - }% - }]\relax - } - {\endtrivlist} -\end{sourcecode} - -\subsubsection{A \code{minimal} Template} -\label{sec:minimal-template} - -This shows the implementation of the \code{minimal} template: -\begin{sourcecode} - \DeclareExerciseEnvironmentTemplate{minimal} - {% - \par - \textbf{\GetExerciseProperty{counter}}% - \IfInsideSolutionF{% - \GetExercisePropertyT{points}{% - \GetExercisePropertyT{bonus-points}{+\printgoal{\PropertyValue}}% - \,\IfExerciseGoalSingularTF{points} - {\XSIMtranslate{point}} - {\XSIMtranslate{points}}% - }% - }% - } - {\par} -\end{sourcecode} - -\subsubsection{The Headings Templates}\label{sec:headings-templates} -\xsim\ defines four heading templates which only differ by which text they -output: -\begin{sourcecode} - \DeclareExerciseHeadingTemplate{default} - {\section*{\XSIMtranslate{default-heading}}} - \DeclareExerciseHeadingTemplate{collection} - {\section*{\XSIMtranslate{collection-heading}}} - \DeclareExerciseHeadingTemplate{per-section} - {\section*{\XSIMtranslate{per-section-heading}}} - \DeclareExerciseHeadingTemplate{per-chapter} - {\section*{\XSIMtranslate{per-chapter-heading}}} -\end{sourcecode} -Section~\vref{sec:exerc-transl} shows how the translations are defined. - -\subsubsection{The \code{default} Table Template}\label{sec:table-templ-default} -This template is the one used for grading tables per default. It has a -vertical layout. - -\begin{sourcecode} - \DeclareExerciseTableTemplate{default}{% - \XSIMputright\ExerciseTableCode{% - \toprule - \XSIMifblankTF{\ExerciseType} - {} - {\XSIMmixedcase{\GetExerciseParameter{exercise-name}}} - & - \XSIMmixedcase{\XSIMtranslate{points}} & - \XSIMtranslate{reached} \\ - \midrule - }% - \ForEachUsedExerciseByType{% - \XSIMifeqTF{#1}{\ExerciseTableType{#1}} - {% - \XSIMifblankTF{\ExerciseType} - {% - \XSIMputright\ExerciseTableCode{% - \XSIMmixedcase{\ExerciseParameterGet{#1}{exercise-name} }% - }% - } - {}% - \XSIMputright\ExerciseTableCode - {#3 & \XSIMifblankTF{#5}{\printgoal{0}}{\printgoal{#5}} & \\ }% - } - {}% - } - \XSIMputright\ExerciseTableCode{% - \midrule - \XSIMtranslate{total} & - \XSIMifblankTF{\ExerciseType} - {\TotalExerciseGoal{points}{}{}} - {\TotalExerciseTypeGoal{\ExerciseType}{points}{}{}} & - \\ \bottomrule - }% - \XSIMexpandcode{% - \noexpand\begin{tabular}{\XSIMifblankTF{\ExerciseType}{l}{c}cc} - \noexpand\ExerciseTableCode - \noexpand\end{tabular}% - }% - } -\end{sourcecode} - -The part -\begin{sourcecode} - \XSIMifblankTF{\ExerciseType}{ ... }{ ... } -\end{sourcecode} -repeatedly checks if an exercise type has been given for the table. This -makes it possible to design the table differently if it is for one exercise -type only (the \code{true} case) or for all exercise types (the \code{false} -case). \cs*{ExerciseTableType}\marg{code} either expands to the given -exercise type or to \meta{code}. - -\subsubsection{The \code{default*} Table Template}\label{sec:table-templ-default*} -The second of the predefined grading table templates. It has a horizontal -layout. -\begin{bewareofthedog} - If you have a lot of exercises the width of a table with this layout may - exceed the text width of the document! -\end{bewareofthedog} - -\begin{sourcecode} - \DeclareExerciseTableTemplate{default*}{% - \XSIMputright\ExerciseTableCode{% - \toprule - \XSIMifblankTF{\ExerciseType} - {} - {\XSIMmixedcase{\GetExerciseParameter{exercise-name}}} - &% - }% - \ForEachUsedExerciseByType{% - \XSIMifeqTF {#1} { \ExerciseTableType {#1} } - { - \XSIMifblankTF{\ExerciseType} - {% - \XSIMputright\ExerciseTableCode{% - \XSIMmixedcase{\ExerciseParameterGet{#1}{exercise-name} }% - }% - } - {}% - \XSIMputright\ExerciseTableCode{#3 &} - } - {}% - }% - \XSIMputright\ExerciseTableCode{% - \XSIMtranslate{total} \\ - \midrule - \XSIMmixedcase{\XSIMtranslate{points}} & - }% - \ForEachUsedExerciseByType{% - \XSIMifeqTF{#1}{\ExerciseTableType{#1}} - {% - \XSIMputright\ExerciseTableCode{% - \XSIMifblankTF{#5}{\printgoal{0}}{\printgoal{#5}} &}% - } - {}% - }% - \XSIMputright\ExerciseTableCode{% - \XSIMifblankTF{\ExerciseType} - {\TotalExerciseGoal{points}{}{}} - {\TotalExerciseTypeGoal{\ExerciseType}{points}{}{}}% - \\ \midrule - \XSIMtranslate{reached} &% - }% - \ForEachUsedExerciseByType{% - \XSIMifeqTF{#1}{\ExerciseTableType{#1}} - {\XSIMputright\ExerciseTableCode{&}} - {}% - }% - \XSIMputright\ExerciseTableCode{ \\ \bottomrule }% - \def\numberofcolumns{% - \XSIMifblankTF{\ExerciseType} - {\numberofusedexercises} - {\csname numberof \ExerciseType s\endcsname}% - }% - \XSIMifeqF{\numberofcolumns}{0} - {% - \begin{tabular}{l*{\numberofcolumns}{c}c} - \ExerciseTableCode - \end {tabular}% - }% - } -\end{sourcecode} - -The part -\begin{sourcecode} - \XSIMifblankTF{\ExerciseType}{ ... }{ ... } -\end{sourcecode} -repeatedly checks if an exercise type has been given for the table. This -makes it possible to design the table differently if it is for one exercise -type only (the \code{true} case) or for all exercise types (the \code{false} -case). \cs*{ExerciseTableType}\marg{code} either expands to the given -exercise type or to \meta{code}. - -\section{Exercise Translations}\label{sec:exerc-transl} - -\begin{commands} - \command{DeclareExerciseTranslation}[\marg{language}\marg{keyword}\marg{translation}] - Declare the translation of \meta{keyword} for language \meta{language}. - \command{DeclareExerciseTranslations}[\marg{keyword}\marg{translations}] - Declare the translations of \meta{keyword} for several languages at once. - See an example of the usage below. - \expandable\command{XSIMtranslate}[\marg{keyword}] - Delivers the translation of \meta{keyword} according to the current - document language (in the meaning of a \pkg{babel}~\cite{pkg:babel} or - \pkg{polyglossia}~\cite{pkg:polyglossia} language). - \command{ForEachExerciseTranslation}[\marg{code}] - Loops over all translations of all keywords known to \xsim. Inside - \meta{code} you can refer to the keyword with \code{\#1}, to the language - with \code{\#2}, and to the translation with \code{\#3}. -\end{commands} - -As an example how to use \cs{DeclareExerciseTranslations} here is how the -translations for \code{exercise} have been defined: - -\begin{sourcecode} - \DeclareExerciseTranslations{exercise}{ - Fallback = exercise , - English = exercise , - French = exercice , - German = \"Ubung - } -\end{sourcecode} - -Table~\vref{tab:translation-keys} shows all existing keywords with all -predefined translations. - -\ForEachExerciseTranslation{ - \appto\translationtable{\texttt{#1} & #2 & \texttt{\detokenize{#3}} \\} -} - -\begin{longtable}{llp{.55\linewidth}} - \caption{Translation keywords predefined by \xsim.} - \label{tab:translation-keys} \\ - \toprule - \bfseries keyword & \bfseries language & \bfseries translation \\ - \midrule - \endfirsthead - \toprule - \bfseries keyword & \bfseries language & \bfseries translation \\ - \midrule - \endhead - \bottomrule - \endlastfoot - \midrule - & & \hfill\emph{continues} \\ - \endfoot - \translationtable -\end{longtable} - -\section{Cloze Tests and Blank Lines} - -Similar to \pkg{exsheets} \xsim\ provides a command \cs{blank}: -\begin{commands} - \command{blank}[\sarg\oarg{options}\marg{text to be filled in}] - Creates a blank in normal text or in an exercise but fills the text of its - argument if inside a solution. If used at the \emph{begin of a paragraph} - \cs{blank} will do two things: it will set the linespread according to an - option explained below and will insert \cs*{par} after the lines. The - starred version doesn't do these things. -\end{commands} - -Those are the options for customization: -\begin{options} - \keyval{blank-style}{code}\Module{blank}\Default{\cs*{underline}\Marg{\#1}} - Instructions for typesetting the blank cloze. Refer to the filled in - space with \code{\#1}. - \keyval{filled-style}{code}\Module{blank}\Default{\cs*{underline}\Marg{\#1}} - Instructions for typesetting the filled cloze. Refer to the filled in text - with \code{\#1} - \keyval{style}{code} - Shortcut for setting both \option{blank-style} and \option{filled-style} - at once. - \keyval{scale}{decimal number}\Module{blank}\Default{\code{1}} -\textsc{} Scales the blank to \meta{decimal number} times its natural width. - \keyval{width}{dim}\Module{blank}\Default - Sets the blank to a width of \meta{dim}. This takes precendence over - \option{scale}. - \keyval{linespread}{decimal number}\Module{blank}\Default{\code{1}} - Set the linespread for the blank lines. This only has an effect if - \cs{blank} is used at the begin of a paragraph. - \keyval{line-increment}{dim}\Module{blank}\Default{\code{0.001\cs*{linewidth}}} - The blank line is built in multiples of this value. If the value is too - large you may end up with uneven lines. If the value is too small you may - end up with a non-ending compilation. Experiment with values to find the - suiting one for your use case. - \keyval{line-minimum-length}{dim}\Module{blank}\Default{\code{2em}} - The minimal length a line must have before it is built step by step. -\end{options} - -\begin{example} - This is a \blank{blank} outside in normal text. - \begin{exercise} - Try to fill in \blank[width=4cm]{these} blanks. All of them - \blank{are created} by using the \cs{blank} \blank{command}. - \end{exercise} - \xsimsetup{blank/filled-style=\textcolor{red}{#1}} - \begin{solution}[print] - Try to fill in \blank[width=4cm]{these} blanks. All of them - \blank{are created} by using the \cs{blank} \blank{command}. - \end{solution} -\end{example} -A number of empty lines are easily created by setting the \option{width} -option: -\begin{example} - Write up the pros and cons of \xsim\ over \pkg{exsheets}: - - \blank[width=4.8\linewidth,linespread=1.5]{} -\end{example} - -\edef\lastsection{\arabic{section}} - -\appendix - -\section{Future Plans} - -\xsim\ is complete in so far as it is perfectly usable to create exams or -exercise and solution sections in books with the most freedom in layout -already. But still there are features which would be useful additions. Below -I list all ideas that I currently plan to add to \xsim: -\begin{itemize} - \item a document class \code{xsim-exam} for creating exams; this class - should itself feature the possibility of creating different versions of an - exam, maybe already provide multiple choice questions and so on; one could - also think about automatic creation of running headers and footers, \ie, - means for changing the layout of the exam; following the spirit of \xsim\ - this should probably be done using templates as well. -\end{itemize} -I am very open to suggestions regarding features, both in general and -specifically regarding the document class. - -\section{FAQ \& How to\dots} -This section serves as a kind of gallery showing solutions to common -problems. I expect this section to grow over the years. Some examples -especially regarding other layouts are also shown in example files added to -this package. - -\subsection{\dots Know if \xsim\ Needs Another Compilation?} -If \xsim\ wants you to recompile your document it writes the following to the -logfile: -\begin{sourcecode} - ************************************************* - * xsim warning: "rerun" - * - * Exercise properties may have changed. Rerun to get them synchronized. - ************************************************* -\end{sourcecode} -So just check the logfile regularly (which you should be doing anyway) and -keep your eyes open. - -\subsection{\dots Resolve Getting Repeatedly Wrong Exercise Properties or - Wrong Exercise Lists?}\label{sec:resolve-getting} -\xsimauxfileinfo - -\subsection{\dots Resolve Strange Errors After Updating?} -\xsim\ writes a lot of stuff to the auxiliary file. An update may well change -how this is done so deleting the auxiliary file and doing a few fresh -compilations may resolve your problems. - -\subsection{\code{! TeX capacity exceeded, sorry [text input levels=15].} - Why?} -Did you try to use an exercise or solution in a macro of some sort? This -generally will fail\footnote{The reasons are similar to the ones given here: - \url{https://tex.stackexchange.com/a/295422/}.}. But there should never be -the need to hide the environments inside of a macro, anyway. - -\subsection{\code{Runaway argument? !File ended while scanning use of \^{}\^{}M.} Why?} -Did you try to use an exercise or solution in a macro of some sort? This -generally will fail. But there should never be the need to hide the -environments inside of a macro, anyway. - -\subsection{\dots Put a Star (or Another Symbol) in Headings of Exercises That - Are Special?} - -The code below shows one possible modification of an exercise template which -allows to easily create bonus exercises: -\begin{sourcecode} - % preamble: - \usepackage{amsymb} - % declare boolean property: - \DeclareExerciseProperty*{bonus} - \DeclareExerciseEnvironmentTemplate{bonus} - {% - \subsection* - {% - % test for boolean property and insert star symbol if true: - \IfExerciseBooleanPropertyT{bonus}{\llap{$\bigstar$ }Bonus }% - \XSIMmixedcase{\GetExerciseName}\nobreakspace - \GetExerciseProperty{counter}% - \IfInsideSolutionF - {% - \IfExercisePropertySetT{subtitle} - { {\normalfont\itshape\GetExerciseProperty{subtitle}}}% - }% - } - \GetExercisePropertyT{points} - {% - \marginpar - {% - \IfInsideSolutionF{\rule{1.2cm}{1pt}\slash}% - \PropertyValue - \GetExercisePropertyT{bonus-points} - {\nobreakspace(+\PropertyValue)}% - \nobreakspace\XSIMtranslate{point-abbr}% - }% - }% - } - {} -\end{sourcecode} - -The usage is now as follows: -\begin{example} - \xsimsetup{exercise/template = bonus} - % set the boolean property to true - \begin{exercise}[bonus] - A bonus question. - \end{exercise} -\end{example} - -\subsection{\dots Print All Solutions Grouped by Section?} -Here is an idea how to get a list of all solutions grouped by the section the -corresponding exercises are appearing in. -\begin{sourcecode} - % preamble: - % \usepackage{etoolbox} - % \newcounter{sections} - - % document: - \setcounter{sections}{1} - \whileboolexpr - { test {\ifnumless{\value{sections}}{\value{section}+1}} } - { - \printsolutions[section=\value{sections},headings-template=per-section] - \stepcounter{sections} - } -\end{sourcecode} -For this manual we then get the following list\footnote{Taking care of the - fact that we're in the appendix now which means we can't use - \cs*{value}\Marg{section}. Therefore this manual does - \cs*{edef}\cs*{lastsection}\Marg{\cs*{arabic}\Marg{section}} right before - \cs*{appendix}}. - -\newcounter{sections} -\setcounter{sections}{1} -\whileboolexpr - { test {\ifnumless{\value{sections}}{\lastsection+1}} } - { - \printsolutions[section=\value{sections},headings-template=per-section] - \stepcounter{sections} - } - -\section{The \pkg*{xsimverb} package}\label{sec:xsimverb-package} -\xsim\ comes bundled with another package called -\pkg{xsimverb}\xsimverbversion. This package loads a very small subset of -\xsim\ which allows to create environments that write their contents verbatim -to external files. It provides the following commands (which of course are -also available in \xsim, too): - -\begin{commands} - \command{XSIMfilewritestart}[\sarg\marg{file name}] - Start writing to the file named \meta{file name}. This should be the - \emph{last} command in the \emph{begin} definition of an environment. If - is is used in an environment with arguments where the \emph{last} argument - is optional you should check if the optional argument is given and use - the starred version if the test is negative. This is demonstrated in an - example below using \pkg{xparse}'s \cs{NewDocumentEnvironment}. \emph{If - you want an environment with only an optional argument you \emph{should} - use \pkg{xparse}'s commands to define it. Due to the way how - \cs*{newenvironment} scans for optional arguments you'll otherwise may - end up with leading spaces gobbled from the first line in your - environment.} - \command{XSIMfilewritestop} - Stop writing to the file. This should be the \emph{first} command in the - \emph{end} definition of an environment. - \command{XSIMsetfilebegin}[\marg{code}] - This command can be used to write something to the external file - \emph{before} the environment contents. Must be set before - \cs{XSIMfilewritestart} in the \emph{begin} definition. - \command{XSIMsetfileend}[\marg{code}] - This command can be used to write something to the external file - \emph{after} the environment contents. Must be set before - \cs{XSIMfilewritestart} in the \emph{begin} definition. - \command{XSIMgobblechars}[\marg{integer}] - Determines how many characters are cut off of the beginning of each line - of the environment body before it is written to the file. The default - value is~$0$. -\end{commands} - -The following code shows an example of how to use those commands: -\begin{sourcecode} - \documentclass{article} - \usepackage{xsimverb,listings} - - \makeatletter - \NewDocumentEnvironment{example}{o} - {% - \XSIMsetfilebegin{\@percentchar\space file `\jobname.tmp'}% - \XSIMsetfileend{\@percentchar\space bye bye}% - \IfNoValueTF{#1} - {\XSIMfilewritestart*{\jobname.tmp}} - {\XSIMfilewritestart{\jobname.tmp}}% - } - {% - \XSIMfilewritestop - \lstinputlisting[language={[LaTeX]TeX}]{\jobname.tmp}% - \input{\jobname.tmp} - } - \makeatother - - \begin{document} - - \begin{example} - bla bla \LaTeX - \end{example} - - \end{document} -\end{sourcecode} - -The \code{tmp} file produced by the above example will contain the following -three lines (if the file itself was called \code{test.tex}): -\begin{sourcecode} - % file `test.tmp' - bla bla \LaTeX - % bye bye -\end{sourcecode} - -\section{All Exercise Examples} - -\begin{bewareofthedog} - You will notice that some exercises from - section~\vref{sec:template-examples} look differently in this section. That - is because all exercises of a type use the template that's \emph{currently - active}. If you want exercises with a different look you should use - different exercises types. -\end{bewareofthedog} - -The following list is created with this code: -\begin{sourcecode} - \xsimsetup{exercise/template = bonus} - \printcollection[headings]{all exercises} -\end{sourcecode} - -\xsimsetup{exercise/template = bonus} -\printcollection[headings]{all exercises} - -\section{All Solution Examples} -\printsolutions - -\section{Example Documents Coming With This Package}\label{sec:example-files} -The repository of this package\footnote{GitHub: - \url{https://github.com/cgnieder/xsim/}, CTAN: - \url{http://www.ctan.org/pkg/xsim/}} currently includes -\theexamplefiles~example documents demonstrating how different aspects of this -package work or how different kinds of problems can be solved or how different -kinds of layouts can be achieved as well as how to solve concrete problems -that have come up in different \LaTeX\ forums. - -Besides showing excerpts of the code and the resulting pdf the examples below -also link to both the \code{tex} source the resulting pdf. - -\listexamplefiles - -\printbibliography - -\end{document} -- cgit v1.2.3