summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xsim/xsim-manual.cls
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/xsim/xsim-manual.cls')
-rw-r--r--Master/texmf-dist/tex/latex/xsim/xsim-manual.cls755
1 files changed, 755 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/xsim/xsim-manual.cls b/Master/texmf-dist/tex/latex/xsim/xsim-manual.cls
new file mode 100644
index 00000000000..56121054dd8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xsim/xsim-manual.cls
@@ -0,0 +1,755 @@
+% ----------------------------------------------------------------------------
+% the XSIM package
+%
+% eXercise Sheets IMproved
+%
+% ----------------------------------------------------------------------------
+% Clemens Niederberger
+% Web: https://github.com/cgnieder/xsim
+% E-Mail: contact@mychemistry.eu
+% ----------------------------------------------------------------------------
+% Copyright 2017 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}[2017/04/14]
+
+\LoadClass[load-preamble,add-index]{cnltx-doc}
+\RequirePackage{imakeidx}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage{xsim}
+
+\RequirePackage{geometry}
+\geometry{
+ left = 3.8cm ,
+ right = 2.8cm
+}
+
+\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 ,
+ ExercisePropertyGet ,
+ ExercisePropertyGetAlias ,
+ ExercisePropertyGlobalSave ,
+ ExercisePropertyIfSetF ,
+ ExercisePropertyIfSetT ,
+ ExercisePropertyIfSetTF ,
+ ExercisePropertySave ,
+ ExerciseTableType ,
+ ExerciseTableCode ,
+ ExerciseType ,
+ ForeachExerciseTag ,
+ ForEachExerciseTranslation ,
+ ForEachPrintedExerciseByType ,
+ ForEachPrintedExerciseByID ,
+ ForEachUsedExerciseByType ,
+ ForEachUsedExerciseByID ,
+ GetExerciseAliasProperty ,
+ 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 ,
+ IfInsideSolutionF ,
+ IfInsideSolutionT ,
+ IfInsideSolutionTF ,
+ loadxsimstyle ,
+ numberofexercises ,
+ numberofusedexercises ,
+ points ,
+ printallsolutions ,
+ printcollection ,
+ printexercise ,
+ printgoal ,
+ printpoints ,
+ printrandomexercises ,
+ printsolution ,
+ printsolutions ,
+ printsolutionstype ,
+ PropertyValue ,
+ SaveExerciseProperty ,
+ SetExerciseParameter ,
+ SetExerciseParameters ,
+ theexercise ,
+ TotalExerciseGoal ,
+ TotalExerciseGoals ,
+ TotalExerciseTypeGoal ,
+ TotalExerciseTypeGoals ,
+ UseExerciseTags ,
+ UseExerciseTagsX ,
+ UseExerciseTemplate ,
+ XSIMexpandcode ,
+ XSIMsetfilebegin ,
+ XSIMfilewritestart ,
+ XSIMfilewritestop ,
+ XSIMgobblechars ,
+ XSIMsetfileend ,
+ XSIMifblankT ,
+ XSIMifblankF ,
+ XSIMifblankTF ,
+ XSIMifchapterF ,
+ XSIMifchapterT ,
+ XSIMifchapterTF ,
+ XSIMifeqF ,
+ XSIMifeqT ,
+ XSIMifeqTF ,
+ XSIMmixedcase ,
+ XSIMputright ,
+ xsimsetup ,
+ xsimstyle ,
+ XSIMtranslate
+ } ,
+ add-envs = { exercise , solution } ,
+ add-silent-cmds = {
+ @percentchar ,
+ bottomrule ,
+ breite ,
+ choice ,
+ cs ,
+ DeclareFloatingEnvironment ,
+ enddescription ,
+ endtcolorbox ,
+ hoehe ,
+ iflist ,
+ IfNoValueTF ,
+ ifnumless ,
+ lipsum ,
+ lstdefinestyle ,
+ lstset ,
+ midrule ,
+ Needspace ,
+ NewDocumentCommand ,
+ NewDocumentEnvironment ,
+ newlist ,
+ numberofcolumns ,
+ numberofproblems ,
+ pkg ,
+ pointsandbonus ,
+ printA, printC, printE ,
+ printcompletepoints ,
+ printsumofpointsandbonus ,
+ setlist ,
+ settasks ,
+ tcbuselibrary ,
+ tcolorbox ,
+ 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*\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[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}
+\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.}
+}
+
+\ExplSyntaxOn
+\NewAcroCommand \Acs
+ {
+ \acro_first_upper:
+ \acro_short:n {#1}
+ }
+\NewAcroCommand \Acsp
+ {
+ \acro_first_upper:
+ \acro_plural:
+ \acro_short:n {#1}
+ }
+\ExplSyntaxOff
+
+\newcommand*\environ{\@ifstar\environ@star\environ@nostar}
+\newcommand*\environ@star[1]{\beginenv*\Marg{\env*{#1}}}
+\newcommand*\environ@nostar[1]{\beginenv*\Marg{\env{#1}}}
+
+\RequirePackage{tcolorbox}
+\tcbuselibrary{skins,breakable}
+\tcbset{enhanced,enhanced jigsaw}
+
+\newtcolorbox{bewareofthedog}{
+ colback = white ,
+ 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%
+}
+
+\RenewDocumentEnvironment{sourcecode}{O{}}
+ {%
+ \pgfqkeys{/cnltx}{#1}%
+ \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}%
+ \XSIMifblankTF{#1}
+ {\XSIMfilewritestart*{\jobname.tmp}}
+ {\XSIMfilewritestart{\jobname.tmp}}%
+ }
+ {%
+ \XSIMfilewritestop
+ \cnltxcode[breakable]%
+ \lstinputlisting[style=cnltx]{\jobname.tmp}%
+ \endcnltxcode
+ }
+
+\RenewDocumentEnvironment{example} {O{}}
+ {%
+ \pgfqkeys{/cnltx}{#1}%
+ \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}%
+ \XSIMifblankTF{#1}
+ {\XSIMfilewritestart*{\jobname.tmp}}
+ {\XSIMfilewritestart{\jobname.tmp}}%
+ }
+ {%
+ \XSIMfilewritestop
+ \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}
+
+\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}
+
+\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
+ (\PropertyValue
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}})%
+ }%
+ }%
+ ]%
+ }
+ {\endtcolorbox}
+
+\RequirePackage{needspace}
+
+\DeclareExerciseEnvironmentTemplate{runin}
+ {%
+ \par\vspace{\baselineskip}
+ \Needspace*{2\baselineskip}
+ \noindent
+ \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}%
+ \GetExercisePropertyT{subtitle}{ \textit{#1}} %
+ \GetExercisePropertyT{points}{%
+ \marginpar{%
+ \PropertyValue
+ \GetExercisePropertyT{bonus-points}{+\PropertyValue}%
+ \,\IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }
+ {}
+
+\DeclareExerciseEnvironmentTemplate{margin}
+ {%
+ \par\vspace{\baselineskip}
+ \Needspace*{2\baselineskip}
+ \noindent
+ \llap{%
+ \smash{%
+ \tabular[t]{@{}r@{}}
+ \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}
+ \IfExercisePropertySetT{points}{%
+ \tabularnewline
+ (%
+ \GetExerciseProperty{points}%
+ \GetExercisePropertyT{bonus-points}{+#1}%
+ \,\XSIMtranslate{point-abbr}%
+ )%
+ }%
+ \endtabular
+ } % notice the space
+ }%
+ }
+ {}
+
+\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}
+
+\newcounter{examplefile}
+\newcounter{examplefiles}
+\newcommand*\xsim@add@example[1]{%
+ \listadd\xsim@examplefiles{#1}%
+ \stepcounter{examplefiles}%
+}
+\newcommand*\listexamplefiles{%
+ \def\do##1{%
+ \stepcounter{examplefile}%
+ \begin{cnltxcode}[
+ sidebyside align=top seam,sidebyside,
+ righthand width=\linewidth/4,
+ sidebyside gap=0pt,
+ lower separated=false,
+ title=Example~\theexamplefile\ \enquote{##1}
+ \href{../examples/xsim.##1.tex}{\color{white}[\TeX]}
+ \href{../examples/xsim.##1.pdf}{\color{white}[PDF]}%
+ ]
+ \lstinputlisting[style=cnltx,lastline=10]{../examples/xsim.##1.tex}
+ \tcblower
+ \fbox{%
+ \href{../examples/xsim.##1.pdf}{%
+ \includegraphics[width=.8\linewidth]{../examples/{xsim.##1}.pdf}}}%
+ \end{cnltxcode}
+ }%
+ \dolistloop\xsim@examplefiles
+}
+
+\xsim@add@example{blanks}
+\xsim@add@example{boxed-headings}
+\xsim@add@example{code-and-output}
+\xsim@add@example{collections}
+\xsim@add@example{crossref}
+\xsim@add@example{description-list}
+\xsim@add@example{different-point-types}
+\xsim@add@example{difficulties}
+\xsim@add@example{floating}
+\xsim@add@example{grade-distribution}
+\xsim@add@example{listings}
+\xsim@add@example{multiplechoice}
+\xsim@add@example{pointsums}
+\xsim@add@example{randomexercises}
+\xsim@add@example{various}
+\xsim@add@example{texsx-199360}
+\xsim@add@example{texsx-299534}
+\xsim@add@example{texsx-305110}
+\xsim@add@example{texsx-338165}
+\xsim@add@example{texsx-350028}
+\xsim@add@example{texsx-369065}
+\xsim@add@example{texsx-369636}
+\xsim@add@example{texsx-369803}
+\xsim@add@example{texwelt-6698}
+\xsim@add@example{texwelt-15093}
+\xsim@add@example{golatex-16824}
+\xsim@add@example{golatex-18844}
+
+\endinput