diff --git a/environments/KULeuven/problemEnvironments.tex b/environments/KULeuven/problemEnvironments.tex
new file mode 120000
index 0000000..e386aa6
--- /dev/null
+++ b/environments/KULeuven/problemEnvironments.tex
@@ -0,0 +1 @@
+../problemEnvironments.tex
\ No newline at end of file
diff --git a/environments/KULeuven/problemEnvironments_KULeuven.tex b/environments/KULeuven/problemEnvironments_KULeuven.tex
new file mode 120000
index 0000000..e386aa6
--- /dev/null
+++ b/environments/KULeuven/problemEnvironments_KULeuven.tex
@@ -0,0 +1 @@
+../problemEnvironments.tex
\ No newline at end of file
diff --git a/environments/KULeuven/xmPreamble.tex b/environments/KULeuven/xmPreamble.tex
new file mode 100644
index 0000000..ed26764
--- /dev/null
+++ b/environments/KULeuven/xmPreamble.tex
@@ -0,0 +1,1208 @@
+%%% Begin Laad packages
+
+\makeatletter
+\@ifclassloaded{xourse}{%
+ \typeout{Start loading preamble.tex (in a XOURSE)}%
+ \def\isXourse{true} % automatically defined; pre 112022 it had to be set 'manually' in a xourse
+}{%
+ \typeout{Start loading preamble.tex (NOT in a XOURSE)}%
+}
+\makeatother
+
+\def\isEn\true
+
+\pgfplotsset{compat=1.16}
+
+\usepackage{currfile}
+
+% 201908/202301: PAS OP: babel en doclicense lijken problemen te veroorzaken in .jax bestand
+% (wegens syntax error met toegevoegde \newcommands ...)
+\pdfOnly{
+ %\usepackage[type={CC},modifier={by-nc-sa},version={4.0}]{doclicense}
+ \usepackage[hyperxmp=false,type={CC},modifier={by-nc-sa},version={4.0}]{doclicense}
+ \usepackage[dutch]{babel}
+}
+
+
+\usepackage[utf8]{inputenc}
+\usepackage{morewrites} % nav zomercursus (answer...?)
+\usepackage{multirow}
+\usepackage{multicol}
+\usepackage{tikzsymbols}
+\usepackage{ifthen}
+%\usepackage{animate} BREAKS HTML STRUCTURE USED BY XIMERA
+\usepackage{relsize}
+
+\usepackage{eurosym} % \euro (€ werkt niet in xake ...?)
+\usepackage{fontawesome} % smileys etc
+
+% Nuttig als ook interactieve beamer slides worden voorzien:
+\providecommand{\p}{} % default nothing ; potentially usefull for slides: redefine as \pause
+%providecommand{\p}{\pause}
+
+ % Layout-parameters voor het onderschrift bij figuren
+\usepackage[margin=10pt,font=small,labelfont=bf, labelsep=endash,format=hang]{caption}
+%\usepackage{caption} % captionof
+%\usepackage{pdflscape} % landscape environment
+
+% Met "\newcommand\showtodonotes{}" kan je todonotes tonen (in pdf/online)
+% 201908: online werkt het niet (goed)
+\providecommand\showtodonotes{disable}
+%\providecommand\todo[1]{\typeout{TODO #1}}
+
+
+\providecommand{\note}[1]{NOTE: {\color{blue}#1}}
+\providecommand{\todo}[1]{TODO: {\color{red}#1}}
+
+\newtoggle{showreviewnotes}
+\toggletrue{showreviewnotes}
+
+% to get it in the HTML ...
+\renewcommand{\todo}[1]
+{
+ \typeout{TODO: #1}
+ \iftoggle{showreviewnotes}{
+ TODO: \color{red}#1
+ }{}
+}
+\renewcommand{\note}[1]
+{
+ \typeout{NOTE: #1}
+ \iftoggle{showreviewnotes}{
+ NOTE: \color{blue}#1
+ }{}
+}
+
+%\usepackage[\showtodonotes]{todonotes}
+%\usepackage{todonotes}
+
+%
+% Poging tot aanpassen layout
+%
+\usepackage{tcolorbox}
+\tcbuselibrary{theorems}
+
+%%% Einde laad packages
+
+%%% Begin Ximera specifieke zaken
+
+% \graphicspath{
+% {../../}
+% {../}
+% {./}
+% {../../pictures/}
+% {../pictures/}
+% {./pictures/}
+% {./explog/} % M05 in groeimodellen
+% }
+
+%%% Einde Ximera specifieke zaken
+
+%
+% define softer blue/red/green, use KU Leuven base colors for blue (and dark orange for red ?)
+%
+% todo: rather redefine blue/red/green ...?
+%\definecolor{xmblue}{rgb}{0.01, 0.31, 0.59}
+%\definecolor{xmred}{rgb}{0.89, 0.02, 0.17}
+\definecolor{xmdarkblue}{rgb}{0.122, 0.671, 0.835} % KU Leuven Blauw
+\definecolor{xmblue}{rgb}{0.114, 0.553, 0.69} % KU Leuven Blauw
+\definecolor{xmgreen}{rgb}{0.13, 0.55, 0.13} % No KULeuven variant for green found ...
+
+\definecolor{xmaccent}{rgb}{0.867, 0.541, 0.18} % KU Leuven Accent (orange ...)
+\definecolor{kuaccent}{rgb}{0.867, 0.541, 0.18} % KU Leuven Accent (orange ...)
+
+\colorlet{xmred}{xmaccent!50!black} % Darker version of KU Leuven Accent
+
+\providecommand{\blue}[1]{{\color{blue}#1}}
+\providecommand{\red}[1]{{\color{red}#1}}
+
+\renewcommand\CancelColor{\color{xmaccent!50!black}}
+
+% werkt in math en text mode om MATH met oranje (of grijze...) achtergond te tonen (ook \important{\text{blabla}} lijkt te werken)
+%\newcommand{\important}[1]{\ensuremath{\colorbox{xmaccent!50!white}{$#1$}}} % werkt niet in Mathjax
+%\newcommand{\important}[1]{\ensuremath{\colorbox{lightgray}{$#1$}}}
+\newcommand{\important}[1]{\ensuremath{\colorbox{orange}{$#1$}}} % TODO: kleur aanpassen voor mathjax; wordt overschreven infra!
+
+
+% Uitzonderlijk kan met \pdfnl in de PDF een newline worden geforceerd, die online niet nodig/nuttig is omdat daar de regellengte hoe dan ook niet gekend is.
+\ifdefined\HCode%
+\providecommand{\pdfnl}{}%
+\else%
+\providecommand{\pdfnl}{%
+ \\%
+}%
+\fi
+
+% Uitzonderlijk kan met \handoutnl in de handout-PDF een newline worden geforceerd, die noch online noch in de PDF-met-antwoorden nuttig is.
+\ifdefined\HCode
+\providecommand{\handoutnl}{}
+\else
+\providecommand{\handoutnl}{%
+\ifhandout%
+ \nl%
+\fi%
+}
+\fi
+
+
+
+% \cellcolor IGNORED by tex4ht ?
+% \begin{center} seems not to wordk
+ % (missing margin-left: auto; on tabular-inside-center ???)
+%\newcommand{\importantcell}[1]{\ensuremath{\cellcolor{lightgray}#1}} % in tabular; usablility to be checked
+\providecommand{\importantcell}[1]{\ensuremath{#1}} % no mathjax2 support for colloring array cells
+
+\pdfOnly{
+ \renewcommand{\important}[1]{\ensuremath{\colorbox{kuaccent!50!white}{$#1$}}}
+ \renewcommand{\importantcell}[1]{\ensuremath{\cellcolor{kuaccent!40!white}#1}}
+}
+
+%%% Tikz styles
+
+
+\pgfplotsset{compat=1.16}
+
+\usetikzlibrary{trees,positioning,arrows,fit,shapes,math,calc,decorations.markings,through,intersections,patterns,matrix}
+
+\usetikzlibrary{decorations.pathreplacing,backgrounds} % 5/2023: from experimental
+
+
+\usetikzlibrary{angles,quotes}
+
+\usepgfplotslibrary{fillbetween} % bepaalde_integraal
+\usepgfplotslibrary{polar} % oa voor poolcoordinaten.tex
+
+\pgfplotsset{ownstyle/.style={axis lines = center, axis equal image, xlabel = $x$, ylabel = $y$, enlargelimits}}
+
+\pgfplotsset{
+ plot/.style={no marks,samples=50}
+}
+
+\newcommand{\xmPlotsColor}{
+ \pgfplotsset{
+ plot1/.style={darkgray,no marks,samples=100},
+ plot2/.style={lightgray,no marks,samples=100},
+ plotresult/.style={blue,no marks,samples=100},
+ plotblue/.style={blue,no marks,samples=100},
+ plotred/.style={red,no marks,samples=100},
+ plotgreen/.style={green,no marks,samples=100},
+ plotpurple/.style={purple,no marks,samples=100}
+ }
+}
+\newcommand{\xmPlotsBlackWhite}{
+ \pgfplotsset{
+ plot1/.style={black,loosely dashed,no marks,samples=100},
+ plot2/.style={black,loosely dotted,no marks,samples=100},
+ plotresult/.style={black,no marks,samples=100},
+ plotblue/.style={black,no marks,samples=100},
+ plotred/.style={black,dotted,no marks,samples=100},
+ plotgreen/.style={black,dashed,no marks,samples=100},
+ plotpurple/.style={black,dashdotted,no marks,samples=100}
+ }
+}
+
+
+\newcommand{\xmPlotsColorAndStyle}{
+ \pgfplotsset{
+ plot1/.style={darkgray,no marks,samples=100},
+ plot2/.style={lightgray,no marks,samples=100},
+ plotresult/.style={blue,no marks,samples=100},
+ plotblue/.style={xmblue,no marks,samples=100},
+ plotred/.style={xmred,dashed,thick,no marks,samples=100},
+ plotgreen/.style={xmgreen,dotted,very thick,no marks,samples=100},
+ plotpurple/.style={purple,no marks,samples=100}
+ }
+}
+
+
+%\iftikzexport
+\xmPlotsColorAndStyle
+%\else
+%\xmPlotsBlackWhite
+%\fi
+%%%
+
+
+%
+% Om venndiagrammen te arceren ...
+%
+\makeatletter
+\pgfdeclarepatternformonly[\hatchdistance,\hatchthickness]{north east hatch}% name
+{\pgfqpoint{-1pt}{-1pt}}% below left
+{\pgfqpoint{\hatchdistance}{\hatchdistance}}% above right
+{\pgfpoint{\hatchdistance-1pt}{\hatchdistance-1pt}}%
+{
+ \pgfsetcolor{\tikz@pattern@color}
+ \pgfsetlinewidth{\hatchthickness}
+ \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfqpoint{\hatchdistance}{\hatchdistance}}
+ \pgfusepath{stroke}
+}
+\pgfdeclarepatternformonly[\hatchdistance,\hatchthickness]{north west hatch}% name
+{\pgfqpoint{-\hatchthickness}{-\hatchthickness}}% below left
+{\pgfqpoint{\hatchdistance+\hatchthickness}{\hatchdistance+\hatchthickness}}% above right
+{\pgfpoint{\hatchdistance}{\hatchdistance}}%
+{
+ \pgfsetcolor{\tikz@pattern@color}
+ \pgfsetlinewidth{\hatchthickness}
+ \pgfpathmoveto{\pgfqpoint{\hatchdistance+\hatchthickness}{-\hatchthickness}}
+ \pgfpathlineto{\pgfqpoint{-\hatchthickness}{\hatchdistance+\hatchthickness}}
+ \pgfusepath{stroke}
+}
+%\makeatother
+
+\tikzset{
+ hatch distance/.store in=\hatchdistance,
+ hatch distance=10pt,
+ hatch thickness/.store in=\hatchthickness,
+ hatch thickness=2pt
+}
+
+\colorlet{circle edge}{black}
+\colorlet{circle area}{blue!20}
+
+
+\tikzset{
+ filled/.style={fill=green!30, draw=circle edge, thick},
+ arceerl/.style={pattern=north east hatch, pattern color=blue!50, draw=circle edge},
+ arceerr/.style={pattern=north west hatch, pattern color=yellow!50, draw=circle edge},
+ outline/.style={draw=circle edge, thick}
+}
+
+
+
+
+%%% Updaten commando's
+\def\hoofding #1#2#3{\maketitle} % OBSOLETE ??
+
+% we willen (bijna) altijd \geqslant ipv \geq ...!
+\newcommand{\geqnoslant}{\geq}
+\renewcommand{\geq}{\geqslant}
+\newcommand{\leqnoslant}{\leq}
+\renewcommand{\leq}{\leqslant}
+
+% Todo: (201908) waarom komt er (soms) underlined voor emph ...?
+\renewcommand{\emph}[1]{\textit{#1}}
+
+% API commando's
+
+\newcommand{\ds}{\displaystyle}
+\newcommand{\ts}{\textstyle} % tegenhanger van \ds (Ximera zet PER DEFAULT \ds!)
+
+% uit Zomercursus-macro's:
+\newcommand{\bron}[1]{\begin{scriptsize} \emph{#1} \end{scriptsize}} % deprecated ...?
+
+
+%definities nieuwe commando's - afkortingen veel gebruikte symbolen
+\newcommand{\R}{\ensuremath{\mathbb{R}}}
+\newcommand{\Rnul}{\ensuremath{\mathbb{R}_0}}
+\newcommand{\Reen}{\ensuremath{\mathbb{R}\setminus\{1\}}}
+\newcommand{\Rnuleen}{\ensuremath{\mathbb{R}\setminus\{0,1\}}}
+\newcommand{\Rplus}{\ensuremath{\mathbb{R}^+}}
+\newcommand{\Rmin}{\ensuremath{\mathbb{R}^-}}
+\newcommand{\Rnulplus}{\ensuremath{\mathbb{R}_0^+}}
+\newcommand{\Rnulmin}{\ensuremath{\mathbb{R}_0^-}}
+\newcommand{\Rnuleenplus}{\ensuremath{\mathbb{R}^+\setminus\{0,1\}}}
+\newcommand{\N}{\ensuremath{\mathbb{N}}}
+\newcommand{\Nnul}{\ensuremath{\mathbb{N}_0}}
+\newcommand{\Z}{\ensuremath{\mathbb{Z}}}
+\newcommand{\Znul}{\ensuremath{\mathbb{Z}_0}}
+\newcommand{\Zplus}{\ensuremath{\mathbb{Z}^+}}
+\newcommand{\Zmin}{\ensuremath{\mathbb{Z}^-}}
+\newcommand{\Znulplus}{\ensuremath{\mathbb{Z}_0^+}}
+\newcommand{\Znulmin}{\ensuremath{\mathbb{Z}_0^-}}
+\newcommand{\C}{\ensuremath{\mathbb{C}}}
+\newcommand{\Cnul}{\ensuremath{\mathbb{C}_0}}
+\newcommand{\Cplus}{\ensuremath{\mathbb{C}^+}}
+\newcommand{\Cmin}{\ensuremath{\mathbb{C}^-}}
+\newcommand{\Cnulplus}{\ensuremath{\mathbb{C}_0^+}}
+\newcommand{\Cnulmin}{\ensuremath{\mathbb{C}_0^-}}
+\newcommand{\Q}{\ensuremath{\mathbb{Q}}}
+\newcommand{\Qnul}{\ensuremath{\mathbb{Q}_0}}
+\newcommand{\Qplus}{\ensuremath{\mathbb{Q}^+}}
+\newcommand{\Qmin}{\ensuremath{\mathbb{Q}^-}}
+\newcommand{\Qnulplus}{\ensuremath{\mathbb{Q}_0^+}}
+\newcommand{\Qnulmin}{\ensuremath{\mathbb{Q}_0^-}}
+
+\newcommand{\perdef}{\overset{\mathrm{def}}{=}}
+\newcommand{\pernot}{\overset{\mathrm{notatie}}{=}}
+\newcommand\perinderdaad{\overset{!}{=}} % voorlopig gebruikt in limietenrekenregels
+\newcommand\perhaps{\overset{?}{=}} % voorlopig gebruikt in limietenrekenregels
+
+\newcommand{\degree}{^\circ}
+
+
+\DeclareMathOperator{\dom}{dom} % domein
+\DeclareMathOperator{\codom}{codom} % codomein
+\DeclareMathOperator{\bld}{bld} % beeld
+\DeclareMathOperator{\graf}{graf} % grafiek
+\DeclareMathOperator{\rico}{rico} % richtingcoëfficient
+\DeclareMathOperator{\co}{co} % coordinaat
+\DeclareMathOperator{\gr}{gr} % graad
+
+\newcommand{\func}[5]{\ensuremath{#1: #2 \rightarrow #3: #4 \mapsto #5}} % Easy to write a function
+
+
+% Operators
+\DeclareMathOperator{\bgsin}{bgsin}
+\DeclareMathOperator{\bgcos}{bgcos}
+\DeclareMathOperator{\bgtan}{bgtan}
+\DeclareMathOperator{\bgcot}{bgcot}
+\DeclareMathOperator{\bgsinh}{bgsinh}
+\DeclareMathOperator{\bgcosh}{bgcosh}
+\DeclareMathOperator{\bgtanh}{bgtanh}
+\DeclareMathOperator{\bgcoth}{bgcoth}
+
+% Oude \Bgsin etc deprecated: gebruik \bgsin, en herdefinieer dat als je Bgsin wil!
+%\DeclareMathOperator{\cosec}{cosec} % not used? gebruik \csc en herdefinieer
+
+% operatoren voor differentialen: to be verified; 1/2020: inconsequent gebruik bij afgeleiden/integralen
+\renewcommand{\d}{\mathrm{d}}
+\newcommand{\dx}{\d x}
+\newcommand{\dd}[1]{\frac{\mathrm{d}}{\mathrm{d}#1}}
+\newcommand{\ddx}{\dd{x}}
+
+% om in voorbeelden/oefeningen de notatie voor afgeleiden te kunnen kiezen
+% Usage: \afg{(2\sin(x))} (en wordt d/dx, of accent, of D )
+%\newcommand{\afg}[1]{{#1}'}
+\newcommand{\afg}[1]{\left(#1\right)'}
+%\renewcommand{\afg}[1]{\frac{\mathrm{d}#1}{\mathrm{d}x}} % include in relevant exercises ...
+%\renewcommand{\afg}[1]{D{#1}}
+
+%
+% \xmxxx commands: Extra KU Leuven functionaliteit van, boven of naast Ximera
+% ( Conventie 8/2019: xm+nederlandse omschrijving, maar is niet consequent gevolgd, en misschien ook niet erg handig !)
+%
+% (Met een minimale ximera.cls en preamble.tex zou een bruikbare .pdf moeten kunnen worden gemaakt van eender welke ximera)
+%
+% Usage: \xmtitle[Mijn korte abstract]{Mijn titel}{Mijn abstract}
+% Eerste command na \begin{document}:
+% -> definieert de \title
+% -> definieert de abstract
+% -> doet \maketitle ( dus: print de hoofding als 'chapter' of 'sectie')
+% Optionele parameter geeft eenn kort abstract (die met de globale setting \xmshortabstract{} al dan niet kan worden geprint.
+% De optionele korte abstract kan worden gebruikt voor pseudo-grappige abtsarts, dus dus globaal al dan niet kunnen worden gebuikt...
+% Globale settings:
+% de (optionele) 'korte abstract' wordt enkele getoond als \xmshortabstract is gezet
+\providecommand\xmshortabstract{} % default: print (only!) short abstract if present
+\newcommand{\xmtitle}[3][]{
+ \title{#2}
+ \begin{abstract}
+ \ifdefined\xmshortabstract
+ \ifstrempty{#1}{%
+ #3
+ }{%
+ #1
+ }%
+ \else
+ #3
+ \fi
+ \end{abstract}
+ \maketitle
+}
+
+%
+% Kleine grapjes: moeten zonder verder gevolg kunnen worden verwijderd
+%
+%\newcommand{\xmopje}[1]{{\small#1{\reversemarginpar\marginpar{\Smiley}}}} % probleem in floats!!
+\newtoggle{showxmopje}
+\toggletrue{showxmopje}
+
+\newcommand{\xmopje}[1]{%
+ \iftoggle{showxmopje}{#1}{}%
+}
+
+
+% -> geef een abstracte-formule-met-rechts-een-concreet-voorbeeld
+% VB: \formulevb{a^2+b^2=c^2}{3^2+4^2=5^2}
+%
+\ifdefined\HCode
+\NewEnviron{xmdiv}[1]{\HCode{\Hnewline
\Hnewline}\BODY{\HCode{\Hnewline
\Hnewline}}}
+\else
+\NewEnviron{xmdiv}[1]{\BODY}
+\fi
+
+\providecommand{\formulevb}[2]{
+ {\centering
+
+ \begin{xmdiv}{xmformulevb} % zie css voor online layout !!!
+ \begin{tabular}{lcl}
+ \important{#1}
+ & &
+ $#2$
+ \end{tabular}
+ \end{xmdiv}
+
+ }
+}
+
+\ifdefined\HCode
+\providecommand{\vb}[1]{%
+ \HCode{\Hnewline}#1\HCode{\Hnewline}%
+}
+\else
+\providecommand{\vb}[1]{
+ \colorbox{blue!10}{#1}
+}
+\fi
+
+\ifdefined\HCode
+\providecommand{\xmcolorbox}[2]{
+ \HCode{\Hnewline\Hnewline}#2\HCode{\Hnewline
\Hnewline}
+}
+\else
+\providecommand{\xmcolorbox}[2]{
+ \cellcolor{#1}#2
+}
+\fi
+
+
+\ifdefined\HCode
+\providecommand{\xmopmerking}[1]{
+ \HCode{\Hnewline\Hnewline}#1\HCode{\Hnewline
\Hnewline}
+}
+\else
+\providecommand{\xmopmerking}[1]{
+ {\footnotesize #1}
+}
+\fi
+% \providecommand{\voorbeeld}[1]{
+% \colorbox{blue!10}{$#1$}
+% }
+
+
+
+% Hernoem Proof naar Bewijs, nodig voor HTML versie
+\renewcommand*{\proofname}{\nlen{Bewijs}{Proof}}
+
+% Om opgave van oefening (wordt niet geprint bij oplossingenblad)
+% (to be tested test)
+\NewEnviron{statement}{\BODY}
+
+% Environment 'oplossing' en 'uitkomst'
+% voor resp. volledige 'uitwerking' dan wel 'enkel eindresultaat'
+% geimplementeerd via feedback, omdat er in de ximera-server adhoc feedback-code is toegevoegd
+%% Niet tonen indien handout
+%% Te gebruiken om volledige oplossingen/uitwerkingen van oefeningen te tonen
+%% \begin{oplossing} De optelling is commutatief \end{oplossing} : verschijnt online enkel 'op vraag'
+%% \begin{oplossing}[toon] De optelling is commutatief \end{oplossing} : verschijnt steeds onmiddellijk online (bv te gebruiken bij voorbeelden)
+
+\ifhandout%
+ \NewEnviron{oplossing}[1][onzichtbaar]%
+ {%
+ \ifthenelse{\equal{\detokenize{#1}}{\detokenize{toon}}}
+ {
+ \def\PH@Command{#1}% Use PH@Command to hold the content and be a target for "\expandafter" to expand once.
+
+ \begin{trivlist}% Begin the trivlist to use formating of the "Feedback" label.
+ \item[\hskip \labelsep\small\slshape\bfseries Oplossing% Format the "Feedback" label. Don't forget the space.
+ %(\texttt{\detokenize\expandafter{\PH@Command}}):% Format (and detokenize) the condition for feedback to trigger
+ \hspace{2ex}]\small%\slshape% Insert some space before the actual feedback given.
+ \BODY
+ \end{trivlist}
+ }
+ { % \begin{feedback}[solution] \BODY \end{feedback} }
+ }
+ }
+\else
+% ONLY for HTML; xmoplossing is styled with css, and is not, and need not be a LaTeX environment
+% THUS: it does NOT use feedback anymore ...
+% \NewEnviron{oplossing}{\begin{expandable}{xmoplossing}{\nlen{Toon uitwerking}{Show solution}}{\BODY}\end{expandable}}
+ \newenvironment{oplossing}[1][onzichtbaar]
+ {%
+ \begin{expandable}{xmoplossing}{}
+ }
+ {%
+ \end{expandable}
+ }
+% \newenvironment{oplossing}[1][onzichtbaar]
+% {%
+% \begin{feedback}[solution]
+% }
+% {%
+% \end{feedback}
+% }
+\fi
+
+\ifhandout%
+ \NewEnviron{uitkomst}[1][onzichtbaar]%
+ {%
+ \ifthenelse{\equal{\detokenize{#1}}{\detokenize{toon}}}
+ {
+ \def\PH@Command{#1}% Use PH@Command to hold the content and be a target for "\expandafter" to expand once.
+
+ \begin{trivlist}% Begin the trivlist to use formating of the "Feedback" label.
+ \item[\hskip \labelsep\small\slshape\bfseries Uitkomst:% Format the "Feedback" label. Don't forget the space.
+ %(\texttt{\detokenize\expandafter{\PH@Command}}):% Format (and detokenize) the condition for feedback to trigger
+ \hspace{2ex}]\small%\slshape% Insert some space before the actual feedback given.
+ \BODY
+ \end{trivlist}
+ }
+ { % \begin{feedback}[solution] \BODY \end{feedback} }
+ }
+ }
+\else
+\ifdefined\HCode
+ \newenvironment{uitkomst}[1][onzichtbaar]
+ {%
+ \begin{expandable}{xmuitkomst}{}%
+ }
+ {%
+ \end{expandable}%
+ }
+\else
+ % Do NOT print 'uitkomst' in non-handout
+ % (presumably, there is also an 'oplossing' ??)
+ \newenvironment{uitkomst}[1][onzichtbaar]{}{}
+\fi
+\fi
+
+%
+% Uitweidingen zijn extra's die niet redelijkerwijze tot de leerstof behoren
+% Uitbreidingen zijn extra's die wel redelijkerwijze tot de leerstof van bv meer geavanceerde versies kunnen behoren (B-programma/Wiskundestudenten/...?)
+% Nog niet voorzien: design voor verschillende versies (A/B programma, BIO, voorkennis/ ...)
+% Voor 'uitweidingen' is er een environment die online per default is ingeklapt, en in pdf al dan niet kan worden geincluded (via \xmnouitweiding)
+%
+% in een xourse, per default GEEN uitweidingen, tenzij \xmuitweiding expliciet ergens is gezet ...
+\ifdefined\isXourse
+ \ifdefined\xmuitweiding
+ \else
+ \def\xmnouitweiding{true}
+ \fi
+\fi
+
+\ifdefined\xmnouitweiding
+\newcounter{xmuitweiding} % anders error undefined ...
+\excludecomment{xmuitweiding}
+\else
+\newtheoremstyle{dotless}{}{}{}{}{}{}{ }{}
+\theoremstyle{dotless}
+\newtheorem*{xmuitweidingnofrills}{} % nofrills = no accordion; gebruikt dus de dotless theoremstyle!
+
+\newcounter{xmuitweiding}
+\newenvironment{xmuitweiding}[1][ ]%
+{%
+ \refstepcounter{xmuitweiding}%
+ \begin{expandable}{xmuitweiding}{\nlentext{Uitweiding \arabic{xmuitweiding}: #1}{Digression \arabic{xmuitweiding}: #1}}%
+ \begin{xmuitweidingnofrills}%
+}
+{%
+ \end{xmuitweidingnofrills}%
+ \end{expandable}%
+}
+% \newenvironment{xmuitweiding}[1][ ]%
+% {%
+% \refstepcounter{xmuitweiding}
+% \begin{accordion}\begin{accordion-item}[Uitweiding \arabic{xmuitweiding}: #1]%
+% \begin{xmuitweidingnofrills}%
+% }
+% {\end{xmuitweidingnofrills}\end{accordion-item}\end{accordion}}
+\fi
+
+
+\newenvironment{xmexpandable}[1][]{
+ \begin{accordion}\begin{accordion-item}[#1]%
+ }{\end{accordion-item}\end{accordion}}
+
+
+% Command that gives a selection box online, but just prints the right answer in pdf
+\newcommand{\xmonlineChoice}[1]{\pdfOnly{\wordchoicegiventrue}\wordChoice{#1}\pdfOnly{\wordchoicegivenfalse}} % deprecated, gebruik onlineChoice ...
+\newcommand{\onlineChoice}[1]{\pdfOnly{\wordchoicegiventrue}\wordChoice{#1}\pdfOnly{\wordchoicegivenfalse}}
+
+\newcommand{\TJa}{\nlentext{ Ja }{ Yes }}
+\newcommand{\TNee}{\nlentext{ Nee }{ No }}
+\newcommand{\TJuist}{\nlentext{ Juist }{ True }}
+\newcommand{\TFout}{\nlentext{ Fout }{ False }}
+
+\newcommand{\choiceTrue }{{\renewcommand{\choiceminimumhorizontalsize}{4em}\wordChoice{\choice[correct]{\TJuist}\choice{\TFout}}}}
+\newcommand{\choiceFalse}{{\renewcommand{\choiceminimumhorizontalsize}{4em}\wordChoice{\choice{\TJuist}\choice[correct]{\TFout}}}}
+
+\newcommand{\choiceYes}{{\renewcommand{\choiceminimumhorizontalsize}{3em}\wordChoice{\choice[correct]{\TJa}\choice{\TNee}}}}
+\newcommand{\choiceNo }{{\renewcommand{\choiceminimumhorizontalsize}{3em}\wordChoice{\choice{\TJa}\choice[correct]{\TNee}}}}
+
+% Optional nicer formatting for wordChoice in PDF
+
+\let\inlinechoiceorig\inlinechoice
+
+%\makeatletter
+%\providecommand{\choiceminimumverticalsize}{\vphantom{$\frac{\sqrt{2}}{2}$}} % minimum height of boxes (cfr infra)
+\providecommand{\choiceminimumverticalsize}{\vphantom{$\tfrac{2}{2}$}} % minimum height of boxes (cfr infra)
+\providecommand{\choiceminimumhorizontalsize}{1em} % minimum width of boxes (cfr infra)
+
+\newcommand{\inlinechoicesquares}[2][]{%
+ \setkeys{choice}{#1}%
+ \ifthenelse{\boolean{\choice@correct}}%
+ {%
+ \ifhandout%
+ \fbox{\choiceminimumverticalsize #2}\allowbreak\ignorespaces%
+ \else%
+ \fcolorbox{blue}{blue!20}{\choiceminimumverticalsize #2}\allowbreak\ignorespaces\setkeys{choice}{correct=false}\ignorespaces%
+ \fi%
+ }%
+ {% else
+ \fbox{\choiceminimumverticalsize #2}\allowbreak\ignorespaces% HACK: wat kleiner, zodat fits on line ...
+ }%
+}
+
+\newcommand{\inlinechoicesquareX}[2][]{%
+ \setkeys{choice}{#1}%
+ \ifthenelse{\boolean{\choice@correct}}%
+ {%
+ \ifhandout%
+ \framebox[\ifdim\choiceminimumhorizontalsize<\width\width\else\choiceminimumhorizontalsize\fi]{\choiceminimumverticalsize\ #2\ }\allowbreak\ignorespaces\setkeys{choice}{correct=false}\ignorespaces%
+ \else%
+ \fcolorbox{blue}{blue!20}{\makebox[\ifdim\choiceminimumhorizontalsize<\width\width\else\choiceminimumhorizontalsize\fi]{\choiceminimumverticalsize #2}}\allowbreak\ignorespaces\setkeys{choice}{correct=false}\ignorespaces%
+ \fi%
+ }%
+ {% else
+ \ifhandout%
+ \framebox[\ifdim\choiceminimumhorizontalsize<\width\width\else\choiceminimumhorizontalsize\fi]{\choiceminimumverticalsize\ #2\ }\allowbreak\ignorespaces% HACK: wat kleiner, zodat fits on line ...
+ \fi
+ }%
+}
+
+
+\newcommand{\inlinechoicepuntjes}[2][]{%
+ \setkeys{choice}{#1}%
+ \ifthenelse{\boolean{\choice@correct}}%
+ {%
+ \ifhandout%
+ \dots\ldots\ignorespaces\setkeys{choice}{correct=false}\ignorespaces
+ \else%
+ \fcolorbox{blue}{blue!20}{\choiceminimumverticalsize #2}\allowbreak\ignorespaces\setkeys{choice}{correct=false}\ignorespaces%
+ \fi%
+ }%
+ {% else
+ %\fbox{\choiceminimumverticalsize #2}\allowbreak\ignorespaces% HACK: wat kleiner, zodat fits on line ...
+ }%
+}
+
+% print niets, maar definieer globale variable \myanswer
+% (gebruikt om oplossingsbladen te printen)
+\newcommand{\inlinechoicedefanswer}[2][]{%
+ \setkeys{choice}{#1}%
+ \ifthenelse{\boolean{\choice@correct}}%
+ {%
+ \gdef\myanswer{#2}\setkeys{choice}{correct=false}
+
+ }%
+ {% else
+ %\fbox{\choiceminimumverticalsize #2}\allowbreak\ignorespaces% HACK: wat kleiner, zodat fits on line ...
+ }%
+}
+
+
+
+%\makeatother
+
+\newcommand{\setchoicedefanswer}{
+\ifdefined\HCode
+\else
+% \renewenvironment{multipleChoice@}[1][]{}{} % remove trailing ')'
+ \let\inlinechoice\inlinechoicedefanswer
+\fi
+}
+
+\newcommand{\setchoicepuntjes}{
+\ifdefined\HCode
+\else
+ \renewenvironment{multipleChoice@}[1][]{}{} % remove trailing ')'
+ \let\inlinechoice\inlinechoicepuntjes
+\fi
+}
+\newcommand{\setchoicesquares}{
+\ifdefined\HCode
+\else
+ \renewenvironment{multipleChoice@}[1][]{}{} % remove trailing ')'
+ \let\inlinechoice\inlinechoicesquares
+\fi
+}
+%
+\newcommand{\setchoicesquareX}{
+\ifdefined\HCode
+\else
+ \renewenvironment{multipleChoice@}[1][]{}{} % remove trailing ')'
+ \let\inlinechoice\inlinechoicesquareX
+\fi
+}
+%
+\newcommand{\setchoicelist}{
+\ifdefined\HCode
+\else
+ \renewenvironment{multipleChoice@}[1][]{}{)}% re-add trailing ')'
+ \let\inlinechoice\inlinechoiceorig
+\fi
+}
+
+\setchoicesquareX % by default list-of-squares with onlineChoice in PDF
+
+% Omdat multicols niet werkt in html: enkel in pdf (in html zijn langere pagina's misschien ook minder storend)
+\newenvironment{xmmulticols}[1][2]{
+ \pdfOnly{\begin{multicols}{#1}}%
+}{ \pdfOnly{\end{multicols}}}
+
+%
+% Te gebruiken in plaats van \section\subsection
+% (in een printstyle kan dan het level worden aangepast
+% naargelang \chapter vs \section style )
+% 3/2021: DO NOT USE \xmsubsection !
+\newcommand\xmsection\subsection
+\newcommand\xmsubsection\subsubsection
+
+% Aanpassen printversie
+% (hier gedefinieerd, zodat ze in xourse kunnen worden gezet/overschreven)
+\providebool{parttoc}
+\providebool{printpartfrontpage}
+\providebool{printactivitytitle}
+\providebool{printactivityqrcode}
+\providebool{printactivityurl}
+\providebool{printcontinuouspagenumbers}
+\providebool{numberactivitiesbysubpart}
+\providebool{addtitlenumber}
+\providebool{addsectiontitlenumber}
+\addtitlenumbertrue
+\addsectiontitlenumbertrue
+
+% The following three commands are hardcoded in xake, you can't create other commands like these, without adding them to xake as well
+% ( gebruikt in xourses om juiste soort titelpagina te krijgen voor verschillende ximera's )
+\newcommand{\activitychapter}[2][]{
+ {
+ \ifstrequal{#1}{notnumbered}{
+ \addtitlenumberfalse
+ }{}
+ \typeout{ACTIVITYCHAPTER #2} % logging
+ \chapterstyle
+ \activity{#2}
+ }
+}
+\newcommand{\activitysection}[2][]{
+ {
+ \ifstrequal{#1}{notnumbered}{
+ \addsectiontitlenumberfalse
+ }{}
+ \typeout{ACTIVITYSECTION #2} % logging
+ \sectionstyle
+ \activity{#2}
+ }
+}
+% Practices worden als activity getoond om de grote blokken te krijgen online
+\newcommand{\practicesection}[2][]{
+ {
+ \ifstrequal{#1}{notnumbered}{
+ \addsectiontitlenumberfalse
+ }{}
+ \typeout{PRACTICESECTION #2} % logging
+ \sectionstyle
+ \activity{#2}
+ }
+}
+\newcommand{\activitychapterlink}[3][]{
+ {
+ \ifstrequal{#1}{notnumbered}{
+ \addtitlenumberfalse
+ }{}
+ \typeout{ACTIVITYCHAPTERLINK #3} % logging
+ \chapterstyle
+ \activitylink[#1]{#2}{#3}
+ }
+}
+
+\newcommand{\activitysectionlink}[3][]{
+ {
+ \ifstrequal{#1}{notnumbered}{
+ \addsectiontitlenumberfalse
+ }{}
+ \typeout{ACTIVITYSECTIONLINK #3} % logging
+ \sectionstyle
+ \activitylink[#1]{#2}{#3}
+ }
+}
+
+
+% Commando om de printstyle toe te voegen in ximera's. Zorgt ervoor dat er geen problemen zijn als je de xourses compileert
+% hack om onhandige relative paden in TeX te omzeilen
+% should work both in xourse and ximera (pre-112022 only in ximera; thus obsoletes adhoc setup in xourses)
+% loads global.sty if present (cfr global.css for online settings!)
+% use global.sty to overwrite settings in printstyle.sty ...
+\newcommand{\addPrintStyle}[1]{
+\iftikzexport\else % only in PDF
+ \makeatletter
+ \ifx\@onlypreamble\@notprerr\else % ONLY if in tex-preamble (and e.g. not when included from xourse)
+ \typeout{Loading printstyle} % logging
+ \usepackage{#1/printstyle} % mag enkel geinclude worden als je die apart compileert
+ \IfFileExists{#1/global.sty}{
+ \typeout{Loading printstyle-folder #1/global.sty} % logging
+ \usepackage{#1/global}
+ }{
+ \typeout{Info: No extra #1/global.sty} % logging
+ } % load global.sty if present
+ \IfFileExists{global.sty}{
+ \typeout{Loading local-folder global.sty (or TEXINPUTPATH..)} % logging
+ \usepackage{global}
+ }{
+ \typeout{Info: No folder/global.sty} % logging
+ } % load global.sty if present
+ \IfFileExists{\currfilebase.sty}
+ {
+ \typeout{Loading \currfilebase.sty}
+ \input{\currfilebase.sty}
+ }{
+ \typeout{Info: No local \currfilebase.sty}
+ }
+ \fi
+ \makeatother
+\fi
+}
+
+%
+%
+% references: Ximera heeft adhoc logica om online labels te doen werken over verschillende files heen
+% met \hyperref kan de getoonde tekst toch worden opgegeven, in plaats van af te hangen van de label-text
+\ifdefined\HCode
+% Link to standard \labels, but give your own description
+% Usage: Volg \hyperref[my_very_verbose_label]{deze link} voor wat tijdverlies
+% (01/2020: Ximera-server aangepast om bij class reference-keeptext de link-text NIET te vervangen door de label-text !!!)
+\renewcommand{\hyperref}[2][]{\HCode{}#2\HCode{}}
+%
+% Link to specific targets (not tested ?)
+\renewcommand{\hypertarget}[1]{\HCode{}}
+\renewcommand{\hyperlink}[2]{\HCode{}#2\HCode{}}
+\fi
+
+% Mmm, quid English ... (for keyword #1 !) ?
+\newcommand{\wikilink}[2]{
+ \hyperlink{https://nl.wikipedia.org/wiki/#1}{#2}
+ \pdfOnly{\footnote{See \url{https://nl.wikipedia.org/wiki/#1}}
+ }
+}
+
+\renewcommand{\figurename}{Figuur}
+\renewcommand{\tablename}{Tabel}
+
+%
+% Gedoe om verschillende versies van xourse/ximera te maken afhankelijk van settings
+%
+% default: versie met antwoorden
+% handout: versie voor de studenten, zonder antwoorden/oplossingen
+% full: met alles erop en eraan, dus geschikt voor auteurs en/of lesgevers (bevat in de pdf ook de 'online-only' stukken!)
+%
+%
+% verder kunnen ook opties/variabele worden gezet voor hints/auteurs/uitweidingen/ etc
+%
+% 'Full' versie
+\newtoggle{showonline}
+\ifdefined\HCode % zet default showOnline
+ \toggletrue{showonline}
+\else
+ \togglefalse{showonline}
+\fi
+
+% Full versie % deprecated: see infra
+\newcommand{\printFull}{
+ \hintstrue
+ \handoutfalse
+ \toggletrue{showonline}
+}
+
+\ifdefined\shouldPrintFull % deprecated: see infra
+ \printFull
+\fi
+
+
+
+% Overschrijf onlineOnly (zoals gedefinieerd in ximera.cls)
+\ifhandout % in handout: gebruik de oorspronkelijke ximera.cls implementatie (is dit wel nodig/nuttig?)
+\else
+ \iftoggle{showonline}{%
+ \ifdefined\HCode
+ \RenewEnviron{onlineOnly}{\bgroup\BODY\egroup} % showOnline, en we zijn online, dus toon de tekst
+ \else
+ \RenewEnviron{onlineOnly}{\bgroup\color{red!50!black}\BODY\egroup} % showOnline, maar we zijn toch niet online: kleur de tekst rood
+ \fi
+ }{%
+ \RenewEnviron{onlineOnly}{} % geen showOnline
+ }
+\fi
+
+% hack om na hoofding van definition/proposition/... als dan niet op een nieuwe lijn te starten
+% soms is dat goed en mooi, en soms niet; en in HTML is het nu (2/2020) anders dan in pdf
+% vandaar suggestie om
+% \begin{definition}[Nieuw concept] \nl
+% te gebruiken als je zeker een newline wil na de hoofdig en titel
+% (in het bijzonder itemize zonder \nl is 'lelijk' ...)
+\ifdefined\HCode
+\newcommand{\nl}{}
+\else
+\newcommand{\nl}{\ \par} % newline (achter heading van definition etc.)
+\fi
+
+
+% \nl enkel in handoutmode (ihb voor \wordChoice, die dan typisch veeeel langer wordt)
+\ifdefined\HCode
+\providecommand{\handoutnl}{}
+\else
+\providecommand{\handoutnl}{%
+\ifhandout%
+ \nl%
+\fi%
+}
+\fi
+
+% Could potentially replace \pdfOnline/\begin{onlineOnly} :
+% Usage= \ifonline{Hallo surfer}{Hallo PDFlezer}
+\providecommand{\ifonline}[2]%
+{
+\begin{onlineOnly}#1\end{onlineOnly}%
+\pdfOnly{#2}
+}%
+
+
+%
+% Maak optionele 'basic' en 'extended' versies van een activity
+% met environment basicOnly, basicSkip en extendedOnly
+%
+% (
+% Dit werkt ENKEL in de PDF; de online versies tonen (minstens voorklopig) steeds
+% het default geval met printbasicversion en printextendversion beide FALSE
+% )
+%
+\providebool{printbasicversion}
+\providebool{printextendedversion} % not properly implemented
+\providebool{printfullversion} % presumably print everything (debug/auteur)
+%
+% only set these in xourses, and BEFORE loading this preamble
+%
+%\newif\ifshowbasic \showbasictrue % use this line in xourse to show 'basic' sections
+%\newif\ifshowextended \showextendedtrue % use this line in xourse to show 'extended' sections
+%
+%
+%\ifbool{showbasic}
+% { \NewEnviron{basicOnly}{\BODY} } % if yes: just print contents
+% { \NewEnviron{basicOnly}{} } % if no: completely ignore contents
+%
+%\ifbool{showbasic}
+% { \NewEnviron{basicSkip}{} }
+% { \NewEnviron{basicSkip}{\BODY} }
+%
+
+\ifbool{printextendedversion}
+ { \NewEnviron{extendedOnly}{\BODY} }
+ { \NewEnviron{extendedOnly}{} }
+
+
+
+\ifdefined\HCode % in html: always print
+ \newenvironment*{basicOnly}{}{} % if yes: just print contents
+ \newenvironment*{basicSkip}{}{} % if yes: just print contents
+\else
+
+\ifbool{printbasicversion}
+ {\newenvironment*{basicOnly}{}{}} % if yes: just print contents
+ {\NewEnviron{basicOnly}{} } % if no: completely ignore contents
+
+\ifbool{printbasicversion}
+ {\NewEnviron{basicSkip}{} }
+ {\newenvironment*{basicSkip}{}{}}
+
+\fi
+
+\usepackage{float}
+\usepackage[rightbars,color]{changebar}
+
+% Full versie
+\ifbool{printfullversion}{
+ \hintstrue
+ \handoutfalse
+ \toggletrue{showonline}
+ \printbasicversionfalse
+ \cbcolor{red}
+ \renewenvironment*{basicOnly}{\cbstart}{\cbend}
+ \renewenvironment*{basicSkip}{\cbstart}{\cbend}
+ \def\xmtoonprintopties{FULL} % will be printed in footer
+}
+{}
+
+%
+% Evalueer \ifhints IN de environment
+%
+%
+%\RenewEnviron{hint}
+%{
+%\ifhandout
+%\ifhints\else\setbox0\vbox\fi%everything in een emty box
+%\bgroup
+%\stepcounter{hintLevel}
+%\BODY
+%\egroup\ignorespacesafterend
+%\addtocounter{hintLevel}{-1}
+%\else
+%\ifhints
+%\begin{trivlist}\item[\hskip \labelsep\small\slshape\bfseries Hint:\hspace{2ex}]
+%\small\slshape
+%\stepcounter{hintLevel}
+%\BODY
+%\end{trivlist}
+%\addtocounter{hintLevel}{-1}
+%\fi
+%\fi
+%}
+
+% Onafhankelijk van \ifhandout ...? TO BE VERIFIED
+\RenewEnviron{hint}
+{
+\ifhints
+\begin{trivlist}\item[\hskip \labelsep\small\bfseries Hint:\hspace{2ex}]
+\small%\slshape
+\stepcounter{hintLevel}
+\BODY
+\end{trivlist}
+\addtocounter{hintLevel}{-1}
+\else
+\iftikzexport % anders worden de tikz tekeningen in hints niet gegenereerd ?
+\setbox0\vbox\bgroup
+\stepcounter{hintLevel}
+\BODY
+\egroup\ignorespacesafterend
+\addtocounter{hintLevel}{-1}
+\fi % ifhandout
+\fi %ifhints
+}
+
+%
+% \tab sets typewriter-tabs (e.g. to format questions)
+% (Has no effect in HTML :-( ))
+%
+\usepackage{tabto}
+\ifdefined\HCode
+ \renewcommand{\tab}{\quad} % otherwise dummy .png's are generated ...?
+\fi
+
+
+% Also redefined in preamble to get correct styling
+% for tikz images for (\tikzexport)
+%
+
+\theoremstyle{definition} % Bold titels
+\makeatletter
+\let\proposition\relax
+\let\c@proposition\relax
+\let\endproposition\relax
+\makeatother
+\newtheorem{proposition}{Eigenschap}
+
+
+%\instructornotesfalse
+
+% logic with \ifhandoutin ximera.cls unclear;so overwrite ...
+\makeatletter
+\@ifundefined{ifinstructornotes}{%
+ \newif\ifinstructornotes
+ \instructornotesfalse
+ \newenvironment{instructorNotes}{}{}
+}{}
+\makeatother
+\ifinstructornotes
+\else
+\renewenvironment{instructorNotes}%
+{%
+ \setbox0\vbox\bgroup
+}
+{%
+ \egroup
+}
+\fi
+
+% \RedeclareMathOperator
+% from https://tex.stackexchange.com/questions/175251/how-to-redefine-a-command-using-declaremathoperator
+\makeatletter
+\newcommand\RedeclareMathOperator{%
+ \@ifstar{\def\rmo@s{m}\rmo@redeclare}{\def\rmo@s{o}\rmo@redeclare}%
+}
+% this is taken from \renew@command
+\newcommand\rmo@redeclare[2]{%
+ \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
+ \expandafter\@ifundefined\@gtempa
+ {\@latex@error{\noexpand#1undefined}\@ehc}%
+ \relax
+ \expandafter\rmo@declmathop\rmo@s{#1}{#2}}
+% This is just \@declmathop without \@ifdefinable
+\newcommand\rmo@declmathop[3]{%
+ \DeclareRobustCommand{#2}{\qopname\newmcodes@#1{#3}}%
+}
+\@onlypreamble\RedeclareMathOperator
+\makeatother
+
+
+%
+% Engelse vertaling, vooral in mathmode
+%
+% 1. Algemene procedure
+%
+\ifdefined\isEn
+ \newcommand{\nlen}[2]{#2}
+ \newcommand{\nlentext}[2]{\text{#2}}
+ \newcommand{\nlentextbf}[2]{\textbf{#2}}
+\else
+ \newcommand{\nlen}[2]{#1}
+ \newcommand{\nlentext}[2]{\text{#1}}
+ \newcommand{\nlentextbf}[2]{\textbf{#1}}
+\fi
+
+%
+% 2. Lijst van erg veel gebruikte uitdrukkingen
+%
+
+% Ja/Nee/Fout/Juits etc
+%\newcommand{\TJa}{\nlentext{ Ja }{ and }}
+%\newcommand{\TNee}{\nlentext{ Nee }{ No }}
+%\newcommand{\TJuist}{\nlentext{ Juist }{ Correct }
+%\newcommand{\TFout}{\nlentext{ Fout }{ Wrong }
+\newcommand{\TWaar}{\nlentext{ Waar }{ True }}
+\newcommand{\TOnwaar}{\nlentext{ Vals }{ False }}
+% Korte bindwoorden en, of, dus, ...
+\newcommand{\Ten}{\nlentext{ en }{ and }}
+\newcommand{\Tof}{\nlentext{ of }{ or }}
+\newcommand{\Tdus}{\nlentext{ dus }{ so }}
+\newcommand{\Tendus}{\nlentext{ en dus }{ and thus }}
+\newcommand{\Tvooralle}{\nlentext{ voor alle }{ for all }}
+\newcommand{\Took}{\nlentext{ ook }{ also }}
+\newcommand{\Tals}{\nlentext{ als }{ when }} %of if?
+\newcommand{\Twant}{\nlentext{ want }{ as }}
+\newcommand{\Tmaal}{\nlentext{ maal }{ times }}
+\newcommand{\Toptellen}{\nlentext{ optellen }{ add }}
+\newcommand{\Tde}{\nlentext{ de }{ the }}
+\newcommand{\Thet}{\nlentext{ het }{ the }}
+\newcommand{\Tis}{\nlentext{ is }{ is }} %zodat is in text staat in mathmode (geen italics)
+\newcommand{\Tmet}{\nlentext{ met }{ where }} % in situaties e.g met p < n --> where p < n
+\newcommand{\Tnooit}{\nlentext{ nooit }{ never }}
+\newcommand{\Tmaar}{\nlentext{ maar }{ but }}
+\newcommand{\Tniet}{\nlentext{ niet }{ not }}
+\newcommand{\Tuit}{\nlentext{ uit }{ from }}
+\newcommand{\Ttov}{\nlentext{ t.o.v. }{ w.r.t. }}
+\newcommand{\Tzodat}{\nlentext{ zodat }{ such that }}
+\newcommand{\Tdeth}{\nlentext{de }{th }}
+\newcommand{\Tomdat}{\nlentext{omdat }{because }}
+
+
+%
+% Overschrijf addhoc commando's
+%
+\ifdefined\isEn
+\renewcommand{\pernot}{\overset{\mathrm{notation}}{=}}
+\RedeclareMathOperator{\bld}{im} % beeld
+\RedeclareMathOperator{\graf}{graph} % grafiek
+\RedeclareMathOperator{\rico}{slope} % richtingcoëfficient
+\RedeclareMathOperator{\co}{co} % coordinaat
+\RedeclareMathOperator{\gr}{deg} % graad
+
+% Operators
+\RedeclareMathOperator{\bgsin}{arcsin}
+\RedeclareMathOperator{\bgcos}{arccos}
+\RedeclareMathOperator{\bgtan}{arctan}
+\RedeclareMathOperator{\bgcot}{arccot}
+\RedeclareMathOperator{\bgsinh}{arcsinh}
+\RedeclareMathOperator{\bgcosh}{arccosh}
+\RedeclareMathOperator{\bgtanh}{arctanh}
+\RedeclareMathOperator{\bgcoth}{arccoth}
+
+\fi
diff --git a/environments/KULeuven/xmPrintstyle.sty b/environments/KULeuven/xmPrintstyle.sty
new file mode 100644
index 0000000..4f5b70a
--- /dev/null
+++ b/environments/KULeuven/xmPrintstyle.sty
@@ -0,0 +1,1230 @@
+%
+% Layout / Formattering voor de PDF versie van de
+% Zomercursus Wiskunde KU Leuven
+%
+% Gebaseerd op stijl lulu1 (mooculus/calulus1)
+% en macro's uit de bestaande Zomercursus
+%
+% 3/2021: voorpagina/header opgekuist
+% 3/2021: nummering question per exercise/example (ipv per activity)
+% 3/2021: redefine section/subsection uitgecommentarieerd( to be verified?)
+% 1/2023: layout gemoderniseerd (op basis van het Overleaf Template voor Bachelorpapers Wetenschappen)
+%
+
+\usepackage{silence}
+%Disable all warnings issued by latex starting with "You have..."
+\WarningFilter{latex}{You have requested package} % because we typically request ../printstyle (or ./printstyle)
+
+\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
+[1994/12/01]% LaTeX date must be December 1994 or later
+\ProvidesPackage{printstyle}[2023/01/12 v0.7]
+\ProcessOptions\relax
+
+\usepackage{stix}
+\renewcommand{\familydefault}{\sfdefault} % sans-serif by default
+% BUT CAUSES WARNINGS
+% Font shape `T1/cmss/m/sc' in size <9> not available
+% (Font) Font shape `T1/cmr/m/sc' tried instead.
+
+
+% Alternative font: a version of Bitstream Vera% Sans.
+%\let\warning\relax
+%\usepackage{arev}
+%\usepackage[fontsize=9]{scrextend}
+
+%\usepackage[notmath]{sansmathfonts}
+% \usepackage{lmodern} % To switch to Latin Modern
+\usepackage[T1]{fontenc} %%Clobbers \d!!!
+\renewcommand{\d}{\mathop{}\!d} %% unclobbers \d
+%\usepackage{gillius}
+\usepackage{ccicons}
+%\usepackage{microtype}
+%\usepackage{bold-extra}
+%\usepackage{anyfontsize}
+
+
+\usepackage[yyyymmdd]{datetime} % for \currenttime
+%\usepackage{totpage} % for LastPage (ie Page n of M)
+
+\usepackage{textpos} % voorpagina
+\usepackage{pdflscape} % include posters
+
+%\usepackage{rotating}
+
+% Should not be in printstyle!!!
+\providecommand{\dfn}[1]{\textbf{#1}\index{#1}}
+
+%% Size of the page
+\usepackage[margin=.5in, includehead, includefoot, hmargin={.8in,.5in}, a4paper]{geometry}
+
+%
+% bladschikking (from old Zomercursus macro's)
+% zie https://en.wikibooks.org/wiki/LaTeX/Page_Layout
+\voffset=-1in
+\hoffset=-1in
+
+\topmargin=1 cm
+\headheight=2.5cm
+\headsep=0.5cm
+\textheight=23cm
+\footskip=1.2cm
+\oddsidemargin=2.5cm
+\evensidemargin=2.5cm
+\textwidth=15.5cm
+\marginparsep=0.5cm
+%\marginparwidth=0cm
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{5 pt}
+
+\providebool{parttoc} % needs minitoc; NOT implemented
+\providebool{printpartfrontpage}
+\providebool{printactivitytitle}
+\providebool{printactivityqrcode}
+\providebool{printactivityurl}
+\providebool{printcontinuouspagenumbers}
+
+% for PDF by activity, it makes sense not to include the title, as it is in the header already
+\printactivitytitletrue % overwrite AFTER loading printstyle ...
+
+
+% Store original \title and \maketitle
+%\let\othertitle\title
+\let\othermaketitle\maketitle
+
+% % Redefine maketitle to give course packet title page and toc.
+
+%
+% provide defaults for frontpage/headers/footers
+% ( Overwrite in global.sty !)
+%
+\providecommand{\xmmodulenaam}{Module}
+\providecommand{\xmcursusnaam}{Basiskennis Wiskunde}
+\providecommand{\xmlogo}{
+% \begin{minipage}[c]{2cm}\includegraphics[width=2cm]{./x_zomercursus/sedes.jpg}\end{minipage}
+}
+\providecommand{\xmorganisatienaam}{{\textsc{KU Leuven}}}
+\providecommand{\xmafdelingsnaam}{{\textsc{IDL Project Basiswiskunde}}}
+\providecommand{\xmcursusversie}{\scriptsize{\yyyymmdddate\today\xmtoonprintopties.\the\currentminute}}
+
+\providecommand{\xmtoonprintopties}{%
+ \ifhandout H\fi%
+ \ifprintbasicversion B\fi%
+}
+
+\providecommand{\xmmodulenummer}{} % print bv "Module xxx" op titelbladen
+\providecommand{\xmcopyright}{%
+ \doclicenseImage[imagewidth=2em]\doclicenseNameRef%
+ %\begin{minipage}[c]{1.1cm}\includegraphics[height=1.8cm]{./x_zomercursus/sedes.jpg}\end{minipage}
+ \\
+ \xmorganisatienaam\ (\xmcursusversie)
+}
+
+% kleuren voor voorpagina/header/footer
+%\definecolor{green}{RGB}{172,196,0}
+\definecolor{bluetitle}{RGB}{29,141,176}
+\definecolor{blueaff}{RGB}{0,0,128}
+%\definecolor{blueline}{RGB}{82,189,236}
+\definecolor{blueKUL}{rgb}{0.114, 0.553, 0.69} % KU Leuven Blauw
+\colorlet{blueline}{blueKUL!20}
+
+% print een titelblad, globaal of per module (gebaseerd op bovenstaande parameters \xmXXX)
+\newcommand{\xmPrintFrontPage}[1]{
+{
+ % BRON: https://www.overleaf.com/project/63bd40db464ab50421f12f2b
+ % ( KUL Bachelorproef template, Arthur Depicker, Niels Souverijns)
+ % pagina-instellingen
+
+% define units for the text blocks
+\setlength{\TPHorizModule}{1mm}
+\setlength{\TPVertModule}{1mm}
+
+\thispagestyle{empty}
+%% \newcommand{\form}[1]{\scalebox{1.087}{\boldmath{#1}}} % not used anymore
+\sffamily
+%
+\begin{textblock}{191}(-24,-11)
+%\colorbox{bluetitle}{\hspace{123mm}\ \parbox[c][18truemm]{90mm}{\fontsize{20}{22}\selectfont\textcolor{white}{\textsc\xmafdelingsnaam}}}
+\colorbox{bluetitle}{\parbox[c][18truemm]{\paperwidth}{\hfill\fontsize{14}{16}\selectfont\bfseries\textcolor{white}{\textsc\xmafdelingsnaam\quad}}}
+\end{textblock}
+%
+%\textblockorigin{-24⟩}{-11}
+\begin{textblock}{70}(-18,-19)
+\textblockcolour{}
+%\includegraphics*[height=19.8truemm]{kuleuven_logo.png}
+\end{textblock}
+%
+\begin{textblock}{160}(-6,63)
+ \textblockcolour{}
+ \vspace{-\parskip}
+ \flushleft
+\fontsize{20}{22}\selectfont\xmcursusnaam\\[2cm]
+\fontsize{40}{42}\selectfont \textcolor{bluetitle}{
+ %\fontsize{20}{22}\selectfont YY #1 YY \form{$S=\pi r^2$\textsl{(facultatief)}}
+ \xmmodulenummer
+ \bigskip
+ \textsc{#1}
+ }
+
+\end{textblock}
+
+\begin{textblock}{191}(-24,220)
+ {\color{blueline}\rule{580pt}{5.5pt}}
+
+ \flushright(Versie \xmcursusversie)
+\end{textblock}
+%
+\vfill
+
+\afterpage{\thispagestyle{empty}}
+
+}
+}
+
+\usepackage{afterpage}
+\usepackage{fancyhdr} % Nodig voor de 'fancy' hoofdingen
+\usepackage{extramarks}
+
+\renewcommand{\headrulewidth}{3pt}
+
+\def\mymoduletitle{} % will be set by \part
+
+\fancypagestyle{otherpage}{% op de eerste pagina BOLD titel in BLAUW
+ \renewcommand{\headrulewidth}{0.4pt}
+% \rightmark = activity-titel
+\makeatletter
+\fancyhead{}
+\if@twoside
+ \fancyhead[RO]{\small{p.\textsc{\thepage}\rblob\\\ \\\ }}
+ \fancyhead[LE]{\small{p.\textsc{\thepage}\lblob\\\ \\\ }}
+ % \fancyhead[C]{\textsc{\firstleftmark}}
+ \fancyhead[C]{\ \\\ \\
+ {\makebox[\textwidth][c]{\selectfont\bfseries\color{black}\textsc{\firstleftmark}}}}
+
+ % Maak onderscheid tussen (volledige) xourses of (aparte) activities
+ \ifdefined\isXourse
+ \fancyhead[LO,RE]{\small{\textsc{\xmmodulenaam\ \arabic{part}: \mymoduletitle}}\\
+ \ \\
+ \ }
+ \fi
+
+ %\fancyfoot[RO,LE]{\textsc{\small \xmcursusnaam\ \xmcursusversie\\\xmafdelingsnaam}}
+ \fancyfoot[RO,LE]{\textsc{\small \xmcursusnaam\\\xmafdelingsnaam}} % versie enkel op eerste pagina
+ \fancyfoot[C]{}
+ \fancyfoot[LO,RE]{\xmcopyright}
+\else% oneside
+ \fancyhead[R]{\small{p. \textsc{\thepage}\lblob\\\ \\\ }}
+ %\fancyhead[C]{\textsc{\firstleftmark}}
+ \fancyhead[C]{\ \\\ \\
+ {\makebox[\textwidth][c]{\selectfont\bfseries\color{black}\textsc{\firstleftmark}}}}
+
+ % Maak onderscheid tussen (volledige) xourses of (aparte) activities
+ \ifdefined\isXourse
+ \fancyhead[L]{\small{\textsc{\xmmodulenaam\ \arabic{part}: \mymoduletitle}}\\
+ \ \\
+ \ }
+ \fi
+
+ \fancyfoot[R]{\textsc{\small \xmcursusnaam\ \\\xmafdelingsnaam}}
+ \fancyfoot[C]{}
+ \fancyfoot[L]{\xmcopyright}
+\fi
+\makeatother
+ %\fancyhead[RO]{\textsc{\thepage/\pageref{LastPage}}}
+ %\fancyhead[C]{\small{\textsc{\mytitle}}}
+}
+
+\fancypagestyle{firstpage}{% op de eerste pagina BOLD titel in BLAUW
+ \renewcommand{\headrulewidth}{0pt}
+\makeatletter
+\if@twoside
+ \fancyhead[RO]{\small{p.\textsc{\thepage}\\\ \\\rbigblob}} % Rechts bij oneven pagina's
+ \fancyhead[LE]{\small{p.\textsc{\thepage}\\\ \\\lbigblob}} % Links bij even pagina's
+ \ifdefined\isXourse
+ % NOT NEEDED: standrad LO/RE work better (this overwrite pagenumbers on EVEN pages ???)
+ %\fancyhead[LO]{\colorbox{white}{\makebox[\textwidth][l]{\small{\textsc{\xmmodulenaam\ \arabic{part}: \mymoduletitle}}}}\\ \ }
+ %\fancyhead[RE]{\colorbox{white}{\makebox[\textwidth][r]{\small{\textsc{\xmmodulenaam\ \arabic{part}: \mymoduletitle}}}}\\ \ }
+ \else
+ \fancyhead[LO]{\colorbox{blueline}{\parbox{\textwidth}{\makebox[\textwidth][l]{\small{\textsc{\phantom{M}}}\\ \ \\ \ }}}}
+ \fancyhead[RE]{\colorbox{blueline}{\parbox{\textwidth}{\makebox[\textwidth][r]{\small{\textsc{\phantom{M}}}\\ \ \\ \ }}}}
+ \fi
+% \fancyhead[C]{\ \\
+% \colorbox{blueline}{\makebox[\textwidth][c]{\selectfont\bfseries\color{blue}\rightmark}}}
+ \fancyhead[C]{\ \\\ \\
+ \colorbox{blueline}{\makebox[\textwidth][c]{\selectfont\bfseries\color{black}\textsc{\firstleftmark}}}}
+
+ \fancyfoot[RO,LE]{\textsc{\small \xmcursusnaam\\\xmafdelingsnaam}}
+ \fancyfoot[C]{}
+ \fancyfoot[LO,RE]{\xmcopyright}
+\else%oneside
+ \fancyhead[R]{\small{p. \textsc{\thepage}\\\ \\\rbigblob}} % Rechts bij oneven pagina's
+ \ifdefined\isXourse
+ \fancyhead[L]{\colorbox{white}{\makebox[\textwidth][l]{\small{\textsc{\xmmodulenaam\ \arabic{part}: \mymoduletitle}}}}\\ \ \\\ }
+ \else
+ \fancyhead[L]{\colorbox{blueline}{\parbox{\textwidth}{\makebox[\textwidth][l]{\small{\textsc{\phantom{M}}}
+ \\ \ \\ \ }}}
+ }
+ \fi
+ \fancyhead[C]{\ \\
+ \colorbox{blueline}{\makebox[\textwidth][c]{\selectfont\bfseries\color{black}\textsc{\firstleftmark}}}}
+
+ \fancyfoot[R]{\textsc{\small \xmcursusnaam\\\xmafdelingsnaam}}
+ \fancyfoot[C]{}
+ \fancyfoot[L]{\xmcopyright}
+\fi
+\makeatother
+
+
+}
+
+\pagestyle{otherpage}
+
+% Print een zwarte BLOB rechts op de pagina bij elke nieuwe activity
+% ( handig bij het bladeren door de PDF ... ?)
+\ifdefined\xmprintblob % deprecated; does not work anymore ...? (2/2023)
+\setlength{\unitlength}{18mm}
+%\newcommand{\blob}{\rule[-.2\unitlength]{1\unitlength}{.25\unitlength}}
+\newcommand{\blob}{{\color{gray}\rule{.5\unitlength}{.2\unitlength}}}
+\newcommand\rblob{
+ \begin{picture}(0,0)
+% \put(1,-\value{titlenumber}){\begin{sideways}\@title \thetitlenumber\end{sideways} \blob}
+ \put(1,-\value{titlenumber}){\thetitlenumber\;\blob}
+
+ \end{picture}
+}
+
+\newcommand\lblob{
+ \begin{picture}(0,0)
+ \put(-3,-\value{titlenumber}){\blob\;\thetitlenumber}
+ \end{picture}
+}
+
+\newcommand\rbigblob{
+ \begin{picture}(0,0)
+ \put(0,-0.2)
+ { % \framebox{\selectfont\bfseries\color{blue}\thetitlenumber}
+ \colorbox{blueline}{\makebox(1,0.56){\selectfont\bfseries\color{white}\thetitlenumber}} % Mmm, WRONG for sections
+ }
+ \end{picture}
+}
+\newcommand\lbigblob{
+ \begin{picture}(0,0)
+ \put(-1.15,-0.2)
+ { % \framebox{\selectfont\bfseries\color{blue}\thetitlenumber}
+ \colorbox{blueline}{\makebox(1,0.56){\selectfont\bfseries\color{white}\thetitlenumber}}
+ }
+ \end{picture}
+}
+\else
+\newcommand\blob{}
+\newcommand\rblob{}
+\newcommand\lblob{}
+\newcommand\lbigblob{}
+\newcommand\rbigblob{}
+\fi
+
+\makeatletter
+%
+% Voorbereiding MAIN FRONTPAGE (Algemene titlepagina, en tableofcontents)
+%
+% ** overschrijf maketitle voor de \xmtitle van de xourse (of activity) **
+\renewcommand{\maketitle}{
+ % Maak onderscheid tussen (volledige) xourses of (aparte) activities
+ \ifdefined\isXourse
+ \xmPrintFrontPage{\@title}
+
+ % Toon INHOUDSOPGAVE
+ \thispagestyle{empty}
+ \cleardoublepage
+ \thispagestyle{empty}
+ \afterpage{\thispagestyle{empty}}
+ \tableofcontents
+ \thispagestyle{empty}
+ \cleardoublepage
+ \fi
+
+ \let\maketitle\othermaketitle % reset maketitle to usual definition.
+
+ \ifdefined\isXourse
+ \else
+ \markboth{\@title}{\@title} % only needed in non-xourses ...
+ \fi
+% \markright{ \@title } % fix wrong section on first page of activity
+
+ \thispagestyle{firstpage}
+ \afterpage{\thispagestyle{otherpage}}
+} % end \renewcommand maketitle (voor MAIN FRONTPAGE)
+
+
+%
+% Counting stuff:
+% complex, because online, Ximera counts chapters/sections itself
+% This clashes with potential of \sections inside activities ...
+%
+\setcounter{secnumdepth}{6} % by default print detailed (sub-)section numbers
+%
+% Defaults
+% use 2.5 for Chapter 5 in Part (Module) 2
+% use 2.5.A for first \practisesection in that chapter
+% ( other \xmsections get numbers 2.5.1 etc)
+%
+\renewcommand{\thepart}{\arabic{part}}
+\renewcommand{\thetitlenumber}{\thepart.\arabic{titlenumber}}
+\renewcommand{\thesectiontitlenumber}{\thetitlenumber.\Alph{sectiontitlenumber}}
+
+%
+% defaults: will be overwitten infra
+%
+\usepackage{titlesec}
+
+%\counterwithin{subsubsection}{sectiontitlenumber}
+
+% met kleurtjes (om te testen)
+%\titleformat{\subsection}[hang]{\color{blue}\normalfont\Large\bfseries}{\thesubsection}{1em}{}
+%\titleformat{\subsubsection}[hang]{\color{green}\normalfont\large\bfseries}{\thesubsubsection}{1em}{}
+%\titleformat{\paragraph}[hang]{\color{brown}\normalfont\bfseries}{\theparagraph}{1em}{}
+
+\titleformat{\subsection}[hang]{\normalfont\bfseries}{\thesubsection}{1em}{}
+\titleformat{\subsubsection}[hang]{\normalfont\bfseries}{\thesubsubsection}{1em}{}
+\titleformat{\paragraph}[hang]{\normalfont\bfseries}{\theparagraph}{1em}{}
+
+
+%\titleformat*{\subsubsection}{\normalfont\large\sffamily\bfseries}
+\titlespacing*{\subsection}{0pt}{1.25ex plus 1ex minus .2ex}{0.2em}
+
+%\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
+\usepackage{qrcode}
+\usepackage{currfile}
+\usepackage{marginnote}
+
+% Update het maketitle commando in chapterstyle: toevoegen in inhoudsopgave en counters resetten
+% Deze counters worden gebruikt om de juiste nummering te tonen bij de definities etc
+% Deze worden handmatig verhoogt, gereset (= beheert) om compatibel te zijn met de handmatige telling online
+\providecommand\xmbaseurl{https://set.kuleuven.be/ximera-wis/demo/}
+
+\renewcommand\chapterstyle{%
+ \def\maketitle{%
+ \addtocounter{titlenumber}{1}% Verhoog counter voor 'titlenumber' = 2e niveau
+
+ \ifprintactivitytitle % if not, it's in the header ....
+ {\normalfont\Large\bfseries \thetitlenumber\hspace{1em} \@title}
+ \fi
+ \ifprintactivityqrcode
+ \marginnote{\qrcode[hyperlink,height=1.5cm]{\xmbaseurl\currfiledir\currfilebase}}%[-2cm] % left
+ \fi
+ \ifprintactivityurl
+ \url{\xmbaseurl\currfiledir\currfilebase}
+ \fi
+ \phantomsection
+ \addcontentsline{toc}{section}{\textbf{\thetitlenumber\hspace{1em}\@title}}% Voeg toe aan inhoudsopgave
+
+ % Inside \chapterstyle, sections map to subsections
+ \renewcommand\xmsection\subsection
+ \renewcommand\xmsubsection\subsubsection
+ \renewcommand{\thesubsection}{\thetitlenumber.\arabic{subsection}}
+ \renewcommand{\thesubsubsection}{\thesubsection.\arabic{subsubsection}}
+
+
+ {% Reset de per-chapter counters
+ \setcounter{sectiontitlenumber}{0}
+ \setcounter{proposition}{0}
+ \setcounter{problem}{0}
+ \setcounter{definition}{0}
+ \setcounter{example}{0}
+ \setcounter{explanation}{0}
+ \setcounter{remark}{0}
+ \setcounter{notation}{0}
+ \setcounter{observation}{0}
+ \setcounter{theorem}{0}
+ \setcounter{warning}{0}
+ \setcounter{xmuitweiding}{0}
+ \setcounter{exercise}{0}
+ \setcounter{question}{0}
+ \setcounter{subsection}{0}
+ \setcounter{subsubsection}{0}
+ \setcounter{hint}{0}
+ }
+
+ \markboth{\thetitlenumber\hspace{1em} \@title}{\thetitlenumber\hspace{1em} \@title} % fix wrong section on last page of activity
+ \thispagestyle{firstpage}
+ \afterpage{\thispagestyle{otherpage}}
+ }% end maketitle
+}
+
+% Update het maketitle commando in sectionstyle = toevoegen in inhoudsopgave en counters resetten
+\renewcommand\sectionstyle{%
+ \def\maketitle{%
+ \addtocounter{sectiontitlenumber}{1}% Verhoog counter voor 'sectiontitlenumber' = 3e niveau
+
+ \ifprintactivitytitle % if not, it's in the header ....
+ {\normalfont\large\bfseries \thesectiontitlenumber\hspace{1em} \@title}
+ \fi
+ \ifprintactivityqrcode
+ \marginnote{\qrcode[hyperlink,height=1.5cm]{\xmbaseurl\currfiledir\currfilebase}}%[-2cm]
+ \fi
+ \ifprintactivityurl
+ \url{\xmbaseurl\currfiledir\currfilebase}
+ \fi
+ % Manually add anchor and contentsline
+ \phantomsection
+ \addcontentsline{toc}{subsection}{\textbf{\thesectiontitlenumber\hspace{1em}\@title}}% Voeg toe aan inhoudsopgave
+% \addcontentsline{toc}{subsection}{\numberline{\thesectiontitlenumber}\@title}% Voeg toe aan inhoudsopgave
+
+ % Inside \sectionstyle, sections map to subsubsections
+ \renewcommand\xmsection\subsubsection
+ \renewcommand\xmsubsection\paragraph
+ \renewcommand{\thesubsubsection}{\thesectiontitlenumber.\arabic{subsubsection}}
+
+% \counterwithin*{subsubsection}{subsection} % doesn't work ... ?
+% \setcounter{subsubsection}{0} %% !!! deze lijn helpt de bookmarks in PDF omzeep !!!!
+
+ \markboth{\thesectiontitlenumber\hspace{1em} \@title}{\thesectiontitlenumber\hspace{1em} \@title} % fix wrong section on last page of activity
+
+ \thispagestyle{firstpage}
+ \afterpage{\thispagestyle{otherpage}}
+ }
+}
+
+%% herdefinieer part
+\renewcommand\part{%
+ \thispagestyle{empty}
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+% \thispagestyle{plain}%
+% \null\vfil % causes whitespace at top of first page of new \part
+ \secdef\@part\@spart
+}
+
+% In a xourse, count pages by \part
+% todo: c/should be made optional? Especially to allow not using parts at all ?
+\ifdefined\isXourse
+ \ifprintcontinuouspagenumbers
+ \renewcommand{\thepage}{\arabic{page}} %
+ \else
+ \counterwithin{page}{part}
+ % \renewcommand{\thepage}{\thepart - \arabic{page}} %
+ \renewcommand{\thepage}{\thepart.\arabic{page}} %
+\fi
+\fi
+
+\makeatletter
+
+\def\@part[#1]#2{%
+ \def\mymoduletitle{#1} % set module title for use in header
+ \setcounter{titlenumber}{0} % teller voor 'chapters' per part (defined in ximera.cls)
+
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% Voeg toe aan inhoudsopgave (met nummer)
+ \else
+ \addcontentsline{toc}{part}{#1}% Voeg toe aan inhoudsopgave
+ \fi
+% \markboth{#1}{#1}%
+% \markboth{}{}%
+% \markright{#1} % fix wrong section on first page of activity
+
+ \refstepcounter{page} % Paginanummers vanaf 1 binnen de modules (default: vanaf 0)
+
+ \ifprintpartfrontpage
+ % Toon titelpagina voor nieuw \part
+ \renewcommand{\xmmodulenummer}{\textsc{\xmmodulenaam\ \arabic{part}}\\}
+ \xmPrintFrontPage{#1}
+ \ifparttoc % TODO: does not work ?
+ % Toon INHOUDSOPGAVE
+ \thispagestyle{empty}
+ \afterpage{\thispagestyle{empty}}
+ \doparttoc % requiren minitoc ...!!!!
+ \tableofcontents
+ \cleardoublepage
+ \fi
+ \fi
+ \thispagestyle{empty}
+ \cleardoublepage
+ \newpage
+
+% needed ???
+% \thispagestyle{firstpage}
+% \afterpage{\thispagestyle{otherpage}}
+
+ \@endpart % ????
+}
+\def\@spart#1{% with \part* print \Huge title; not used/usable ?
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries #1\par}%
+ \@endpart}
+%\def\@endpart{\vfil\newpage
+% \if@twoside
+% \if@openright
+% \null
+% \thispagestyle{empty}%
+% \newpage
+% \fi
+% \fi}
+\def\@endpart{}
+%
+%\patchcmd{\@part}%
+% {\protected@edef}%
+% {\def\arg{#1}\def\arg@{part}%
+% \ifx\arg\arg@\stepcounter{page}\fi%
+% \protected@edef}%
+% {}{}%
+
+\makeatother
+
+%% image environment: resize en center
+\let\image\relax
+\let\endimage\relax
+\NewEnviron{image}[1][3in]{%
+ \begin{center}\resizebox{#1}{!}{\BODY}\end{center}% resize and center
+}
+
+% Nederlandse titel van 'Contents'
+\renewcommand{\contentsname}{Inhoudsopgave}
+% Overschrijf de nummering, zorg dat et part.titlenumber.sectiontitlenumber is
+%\renewcommand{\thepart}{\arabic{part}}
+%\renewcommand{\thetitlenumber}{\thepart.\arabic{titlenumber}}
+%\renewcommand{\thesectiontitlenumber}{\thetitlenumber.\arabic{sectiontitlenumber}}
+% Commando om de nummering bij de titels van theorems juist in te stellen, wordt hieronder gebruikt
+\newcommand{\theoremtitle}[1]{%
+ \ifdefined\isXourse\thetitlenumber.\arabic{#1}\else\arabic{#1}\fi%
+}
+
+\usepackage{tcolorbox}
+\tcbuselibrary{breakable,skins}
+% Herdefinieer enkele omgevingen (PAS OP: enkel voor PDF, voor html: zie css..!!!)
+% Moet in printStyles, want in preamble zorgt dit voor problemen
+% remove italics def
+\newcommand{\colordefinition}{green}
+\newcommand{\colorexample}{blue}
+\newcommand{\colorremark}{yellow}
+
+\tcbset{every box/.style={
+ % before upper={\vspace*{-0.45cm}}, %% HACK: remove whitespace on top !!!
+ parbox=false, %% Get paragraph-spacing ... %% !!GLOBAL CHANGES ON ALMOST EVERY PAGE !!%%
+ }
+}
+
+\theoremstyle{definition} % Bold titels
+
+\makeatletter
+\let\definition\relax
+\let\c@definition\relax
+\let\enddefinition\relax
+\makeatother
+\newtheorem{definition}{\nlen{Definitie}{Definition}}
+\renewcommand{\thedefinition}{\theoremtitle{definition}} % titel instellen
+\tcolorboxenvironment{definition}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!5!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!45!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\notation\relax
+\let\c@notation\relax
+\let\endnotation\relax
+\makeatother
+\newtheorem{notation}{\nlen{Notatie}{Notation}}
+\renewcommand{\thenotation}{\theoremtitle{notation}} % titel instellen
+\tcolorboxenvironment{notation}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!5!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!45!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\axiom\relax
+\let\c@axiom\relax
+\let\endaxiom\relax
+\makeatother
+\newtheorem{axiom}{Axioma}
+\renewcommand{\theaxiom}{\theoremtitle{axiom}} % titel instellen
+\tcolorboxenvironment{axiom}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!5!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!45!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\proposition\relax
+\let\c@proposition\relax
+\let\endproposition\relax
+\makeatother
+\newtheorem{proposition}{\nlen{Eigenschap}{Proposition}}
+\renewcommand{\theproposition}{\theoremtitle{proposition}} % titel instellen
+\tcolorboxenvironment{proposition}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\theorem\relax
+\let\c@theorem\relax
+\let\endtheorem\relax
+\makeatother
+\newtheorem{theorem}{\nlen{Stelling}{Theorem}}
+\renewcommand{\thetheorem}{\theoremtitle{theorem}} % titel instellen
+\tcolorboxenvironment{theorem}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+
+\makeatletter
+\let\corollary\relax
+\let\c@corollary\relax
+\let\endcorollary\relax
+\makeatother
+\newtheorem{corollary}{\nlen{Gevolg}{Corollary}}
+\newtheorem*{corollary*}{\nlen{Gevolg}{Corollary}}
+\renewcommand{\thecorollary}{\theoremtitle{corollary}} % titel instellen
+\tcolorboxenvironment{corollary}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+\tcolorboxenvironment{corollary*}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\algorithm\relax
+\let\c@algorithm\relax
+\let\endalgorithm\relax
+\makeatother
+\newtheorem{algorithm}{\nlen{Algoritme}{Algorithm}}
+\renewcommand{\thealgorithm}{\theoremtitle{algorithm}} % titel instellen
+\tcolorboxenvironment{algorithm}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+%\newcounter{proof}
+%\makeatletter
+%\let\proof\relax
+%\let\c@proof\relax
+%\let\endproof\relax
+%\makeatother
+%\newtheorem{proof}{Bewijs}
+%\newtheorem*{proof}{Bewijs}
+%\renewcommand{\theproof}{\theoremtitle{proof}} % titel instellen
+%\tcolorboxenvironment{proof}{
+% boxrule=0pt,
+% boxsep=0pt,
+% colback={\colordefinition!0!white},
+% enhanced jigsaw,
+% borderline west={2pt}{0pt}{\colordefinition!20!black},
+% sharp corners,
+% before skip=10pt,
+% after skip=10pt,
+% breakable,
+%before upper={\vspace*{-0.45cm}},
+%}
+
+\makeatletter
+\let\explanation\relax
+\let\c@explanation\relax
+\let\endexplanation\relax
+\makeatother
+\newtheorem{explanation}{Uitleg}
+\renewcommand{\theexplanation}{\theoremtitle{explanation}} % titel instellen
+\tcolorboxenvironment{explanation}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colordefinition!1!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colordefinition!75!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\example\relax
+\let\c@example\relax
+\let\endexample\relax
+\makeatother
+\newtheorem{example}{\nlen{Voorbeeld}{Example}}
+\renewcommand{\theexample}{\theoremtitle{example}} % titel instellen
+\tcolorboxenvironment{example}{
+ boxrule=0pt,
+ boxsep=0pt,
+ %colback={white},
+ colback={\colorexample!3!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colorexample!75!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+% remove italics def
+\makeatletter
+\let\problem\relax
+\let\c@problem\relax
+\let\endproblem\relax
+\makeatother
+% problem environment is een standaard theorem
+\newtheorem{problem}{\nlen{Probleem}{Problem}}
+\renewcommand{\theproblem}{\theoremtitle{problem}} % titel instellen
+
+% exercise environment instellen
+\newcounter{exercise} % Counter bestaat niet, dus zelf maken
+\makeatletter
+\let\exercise\relax
+\let\c@exercise\relax
+\let\endexercise\relax
+\makeatother
+\newtheorem{exercise}{{\hyperlink{xm:ex:\theexercise}{\nlen{Oefening}{Exercise}}\hypertarget{xm:sol:\theexercise}{}}}
+%\renewcommand{\theexercise}{\arabic{exercise}} % titel instellen
+\renewcommand{\theexercise}{\theoremtitle{exercise}} % titel instellen
+\tcolorboxenvironment{exercise}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colorexample!0!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colorexample!50!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\remark\relax
+\let\c@remark\relax
+\let\endremark\relax
+\makeatother
+\newtheorem{remark}{\nlen{Opmerking}{Remark}}
+\renewcommand{\theremark}{\theoremtitle{remark}} % titel instellen
+\tcolorboxenvironment{remark}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colorremark!5!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colorremark!75!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+\makeatletter
+\let\warning\relax
+\let\c@warning\relax
+\let\endwarning\relax
+\makeatother
+\newtheorem{warning}{Waarschuwing}
+\renewcommand{\thewarning}{\theoremtitle{warning}} % titel instellen
+\tcolorboxenvironment{warning}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colorremark!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{\colorremark!65!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+
+
+% remove italics def
+\makeatletter
+\let\question\relax
+\let\c@question\relax
+\let\endquestion\relax
+\makeatother
+
+% Gebruik question ENKEL binnen exercise/example: het heeft zelf geen hoofding 'Vraag 1:'
+\newtheorem{question}{} % question heeft lege titel
+
+\renewcommand{\theHquestion}{\thetitlenumber.\theexercise.\theexample.\thequestion} % for hyperref ...
+
+% Onderscheid voorbeeld/oefening:
+% bij een voorbeeld wordt ook in handout-mode het antwoord geprint
+% bij een oefening (natuurlijk) niet
+% todo: idem voor wordChoice ?
+% todo: keuze om ook oplossing al dan niet te printen
+\AtBeginEnvironment{warning}{\setcounter{question}{0}\setcounter{hint}{0}}
+\AtBeginEnvironment{exercise}{\setcounter{question}{0}\setcounter{hint}{0}}
+\AtBeginEnvironment{example}{\setcounter{question}{0}\setcounter{hint}{0}\handoutfalse} % print oplossingen in voorbeelden
+
+\ifdefined\isXourse
+ \ifdefined\xmuitweiding
+ \else
+ \def\xmnouitweiding{true}
+ \fi
+\fi
+
+\ifdefined\xmnouitweiding
+\excludecomment{xmuitweiding}
+\else
+\makeatletter
+\let\xmuitweiding\relax
+\let\c@\xmuitweiding\relax
+\let\endxmuitweiding\relax
+\let\c@xmuitweiding\@undefined % nodig want anders klaagt hij dat \c@xmuitweiding al gedefinieerd is, \@undefined is gewoon een macro die niet gedefinieerd is, je kan eender welke macro gebruiken die niet gedefinieerd is
+\makeatother
+\newtheorem{xmuitweiding}{\nlen{Uitweiding}{Excursus}}
+\renewcommand{\thexmuitweiding}{\theoremtitle{xmuitweiding}} % titel instellen
+\tcolorboxenvironment{xmuitweiding}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={gray!2!white},
+ enhanced jigsaw,
+ borderline west={2pt}{0pt}{red!55!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ % before upper={\vspace*{-0.45cm}},
+}
+\fi
+
+\makeatletter
+{
+\let\xmexpandable\relax
+\let\c@\xmexpandable\relax
+\let\endxmexpandable\relax
+\let\c@xmexpandable\@undefined % nodig want anders klaagt hij dat \c@xmuitweiding al gedefinieerd is, \@undefined is gewoon een macro die niet gedefinieerd is, je kan eender welke macro gebruiken die niet gedefinieerd is
+\makeatother
+\newtheoremstyle{expnd}% % Name
+{}% % Space above
+{}% % Space below
+{}% % Body font
+{}% % Indent amount
+{\bfseries}% % Theorem head font
+{.}% % Punctuation after theorem head
+{ }% % Space after theorem head, ' ', or \newline
+{\thmname{#1}\thmnumber{ #2}\thmnote{ \textbf{#3}}}%
+
+
+\theoremstyle{expnd}
+\newtheorem*{xmexpandable}{}
+%\renewcommand{\thexmuitweiding}{\theoremtitle{xmuitweiding}} % titel instellen
+\tcolorboxenvironment{xmexpandable}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={gray!2!white},
+ enhanced jigsaw,
+ borderline west={1pt}{0pt}{gray!55!black},
+ sharp corners,
+ before skip=10pt,
+ after skip=10pt,
+ breakable,
+ left=2pt, right=0pt, % NIET inspringen ... !
+}
+}
+
+% Feedback
+% Renew feedback
+\ifhandout%
+\renewenvironment{feedback}
+ {%
+ \setbox0\vbox\bgroup
+ }
+ {%
+ \egroup
+ }
+\else
+\renewenvironment{feedback}[1][attempt]{ % anders,ingespringt tonen
+ \makeatletter
+ \def\PH@Command{#1}% Use PH@Command to hold the content and be a target for "\expandafter" to expand once.
+
+ \begin{trivlist}% Begin the trivlist to use formating of the "Feedback" label.
+ \item[\hskip \labelsep\small\slshape\bfseries\ifthenelse{\equal{\detokenize{#1}}{\detokenize{solution}}}
+ {\nlen{Uitwerking}{Elaboration}}
+ {Feedback}:% Format the "Feedback" label. Don't forget the space.
+ % (\texttt{\detokenize\expandafter{\PH@Command}}):% Format (and detokenize) the condition for feedback to trigger
+ \hspace{2ex}]\small%\slshape% Insert some space before the actual feedback given.
+ }{
+ \end{trivlist}
+ \makeatother
+}
+\fi
+
+% Expandable printed a bit smaller (TBI)
+\let\expandable\relax
+\let\endexpandable\relax
+\NewEnviron{expandable}[2]{\begin{#1}[#2]\nl\smaller\BODY\end{#1}}
+
+%% Compress dialogue
+\renewenvironment{dialogue}{%
+ \renewcommand\descriptionlabel[1]{\hspace{\labelsep}\textbf{##1:}}
+ \small\begin{description}[noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt]%
+}{%
+ \end{description}\normalsize%
+}
+%
+%
+
+\renewcommand{\theHexercise}{\thetitlenumber.\theexercise} % for hyperref ...
+\renewcommand{\theHdefinition}{\thetitlenumber.\thedefinition} % for hyperref ...
+\renewcommand{\theHproposition}{\thetitlenumber.\theproposition} % for hyperref ...
+\renewcommand{\theHexample}{\thetitlenumber.\theexample} % for hyperref ...
+\renewcommand{\theHremark}{\thetitlenumber.\theremark} % for hyperref ...
+\renewcommand{\theHsubsection}{\thetitlenumber.\thesubsection} % for hyperref ...
+
+
+
+\let\oldhypertarget\hypertarget
+\let\oldhyperlink\hyperlink
+\renewcommand{\hypertarget}[2]{%
+ \label{ht@#1}\oldhypertarget{#1}{#2}%
+}
+\renewcommand{\hyperlink}[2]{%
+ \ifcsname r@ht@#1\endcsname\oldhyperlink{#1}{#2}\else#2\fi
+}
+
+% Gecopieerd van ximera.cls, o.a. om te vernederlandsen
+\providecommand{\multipleChoiceLabel}{\hskip \labelsep\small\bfseries \nlen{Meerkeuze:}{Multiple Choice:}}
+\providecommand{\multipleChoiceNColumns}{1}
+\makeatletter
+\renewenvironment{multipleChoice}[1][]
+{% Environment Start Code
+\setkeys{multipleChoice}{#1}%
+\recordvariable{\mc@id}%
+\begin{trivlist}
+\item[\multipleChoiceLabel]\hfil
+\begin{xmmulticols}[\multipleChoiceNColumns]
+\begin{enumerate}
+}% Note this means that \item has to be the first line after \begin{multipleChoice}.
+{% Environment End Code
+\end{enumerate}
+\end{xmmulticols}
+\end{trivlist}
+}
+
+%\renewenvironment{multipleChoice@}[1][]{}{)} % not needed: is in ximera.cls
+
+
+\renewcommand{\wordChoice}[1]{%
+\let\choicetemp\choice% Assign a "choicetemp" command to duplicate choice.
+\ifwordchoicegiven% If wordchoice option is on, we need to juggle around some definitions.
+\let\choice\otherchoice%
+#1%
+\else% If it isn't the regular "choice" command should work.
+\let\choice\inlinechoice%
+\begin{multipleChoice@}%
+#1%
+\end{multipleChoice@}%
+\fi%
+\let\choice\choicetemp% Now that choicetmp has been manipulated to what we want, replace choice with it.
+\ % extra blanc after \Wordchoice
+}%
+
+
+\renewenvironment{selectAll}[1][]
+{\begin{trivlist}\item[\hskip \labelsep\small\bfseries \nlen{Meerkeuze (selecteer alle correcte antwoorden):}{Multiple Choice (select all correct answers);}]\hfil\begin{enumerate}}
+ {\end{enumerate}\end{trivlist}}
+
+\makeatother
+
+% Plots in kleur (set in preamble ...?)
+%\xmPlotsColor
+
+\hypersetup{
+ colorlinks=true,
+ urlcolor=xmblue,
+}
+
+%
+% Evalueer \ifhandout PER INSTANCE van de environment
+%
+\RenewEnviron{oplossing}[1][onzichtbaar]%
+{%
+\ifhandout%
+ \ifthenelse{\equal{\detokenize{#1}}{\detokenize{toon}}}
+ {
+ \def\PH@Command{#1}% Use PH@Command to hold the content and be a target for "\expandafter" to expand once.
+
+ \begin{trivlist}% Begin the trivlist to use formating of the label.
+ \item[\hskip \labelsep\small\bfseries \nlen{Uitwerking}{Solution}: \hspace{2ex}]\small
+ \BODY
+ \end{trivlist}
+ }
+ { % \begin{feedback}[solution] \BODY \end{feedback} }
+ }
+\else
+ {
+ \def\PH@Command{#1}% Use PH@Command to hold the content and be a target for "\expandafter" to expand once.
+
+ \begin{trivlist}% Begin the trivlist to use formating of the "Feedback" label.
+ \item[\hskip \labelsep\small\bfseries \nlen{Uitwerking}{Solution}: \hspace{2ex}]\small
+ \BODY
+ \end{trivlist}
+ }
+\fi
+}
+
+
+%
+% localize newpages-between-activities based on \ifnonewpage
+%
+%
+% make ifnonewpage local
+% (resumes and overwrites what's in xourse.cls)
+%
+\makeatletter
+\@ifclassloaded{xourse} % only in xourses !! (this could replace \isXourse )
+{
+\let\otherinput\input
+\renewcommand{\activity}[2][]{%
+ \setkeys{activity}{#1}%
+ \renewcommand{\input}[1]{}%
+ \ifnonewpage%
+ \begingroup\skip@preamble\otherinput{#2}\endgroup\par\vspace{\topsep}%
+ \else%
+ \begingroup\skip@preamble\otherinput{#2}\endgroup\clearpage%
+ \fi%
+ \let\input\otherinput%
+}%
+\ifxake%
+\renewcommand\activity[2][]{}%
+\fi%
+}
+{} % not in xourse
+\makeatother
+
+
+% right align columns in matrices
+% from https://tex.stackexchange.com/questions/119511/align-values-in-bmatrix
+\makeatletter
+\renewcommand*\env@matrix[1][r]{\hskip -\arraycolsep
+ \let\@ifnextchar\new@ifnextchar
+ \array{*\c@MaxMatrixCols #1}}
+\makeatother
+
+\makeatletter
+\newtheoremstyle{indented}
+{3pt}% space before
+{3pt}% space after
+{\addtolength{\@totalleftmargin}{3.5em}
+ \addtolength{\linewidth}{-3.5em}
+ \parshape 1 3.5em \linewidth}% body font
+{-3.5em}% indent
+{\bfseries}% header font
+{.}% punctuation
+{.5em}% after theorem header
+{}% header specification (empty for default)
+\makeatother
+
+\theoremstyle{indented}
+
+\ifhints{
+ \makeatletter
+ \let\hint\relax
+ \let\c@hintrelax
+ \let\endhint\relax
+ \makeatother
+ \newtheorem{hint}{\nlen{Hint}{Hint}}
+ \renewcommand{\thedefinition}{\theoremtitle{hint}}% titel instellen
+ \tcolorboxenvironment{hint}{
+ boxrule=0pt,
+ boxsep=0pt,
+ colback={\colorexample!4!white},
+ enhanced jigsaw,
+ % borderline west={2pt}{0pt}{\colordefinition!45!black},
+ sharp corners,
+ before skip=1pt,
+ after skip=2pt,
+ breakable,
+ }%
+ % \begin{trivlist}\item[\hskip \labelsep\small\bfseries Hint:\hspace{2ex}]
+ % \small%\slshape
+ % \stepcounter{hintLevel}
+ % \BODY
+ % \end{trivlist}
+ % \addtocounter{hintLevel}{-1}
+}\else
+\newcounter{hint} % counter needed because it is reset .... !
+\iftikzexport % anders worden de tikz tekeningen in hints niet gegenereerd ?
+\setbox0\vbox\bgroup
+\stepcounter{hintLevel}
+\BODY
+\egroup\ignorespacesafterend
+\addtocounter{hintLevel}{-1}
+\fi % ifhandout
+\fi %ifhints
+
+\renewcommand{\important}[1]{\ensuremath{\fcolorbox{kuaccent}{kuaccent!50!white}{$#1$}}}
+
+\renewcommand{\formulevb}[2]{
+
+ \begin{minipage}[c]{0.5\textwidth}\makebox[\textwidth][l]{\important{#1}} \end{minipage}
+ \begin{minipage}{\dimexpr(\textwidth-0.5\textwidth)\relax}\colorbox{blue!10}{$#2$} \end{minipage}
+
+}
diff --git a/environments/problemEnvironments.tex b/environments/problemEnvironments.tex
index 246f0ce..9c9c4a8 100644
--- a/environments/problemEnvironments.tex
+++ b/environments/problemEnvironments.tex
@@ -1,8 +1,6 @@
\documentclass{ximera}
-\input{../preamble}
-
-\title{Problem environments}
+\title{Problem environments \CurrentFile}
\begin{document}
\begin{abstract}
@@ -12,59 +10,66 @@
The problem environments are \verb|problem|, \verb|exercise|, \verb|question|, and \verb|exploration|.
-Online these act much like theorem-like environments.
-
-However in the PDF, the documentclass option \verb|newpage| will start
-a new page at the end of each of these. Moreoever, nested problem
-envionments will number as sub problems in the PDF.
\begin{exercise}
Type $2$: $\answer{2}$.
\end{exercise}
-\begin{exercise}
- Type $2$: $\answer{2}$.
- \begin{exercise}
- Type $2$: $\answer{2}$.
- \end{exercise}
-\end{exercise}
-
-
\begin{problem}
Type $2$: $\answer{2}$.
\end{problem}
-\begin{problem}
- Type $2$: $\answer{2}$.
- \begin{problem}
- Type $2$: $\answer{2}$.
- \end{problem}
-\end{problem}
-
-
\begin{question}
Type $2$: $\answer{2}$.
\end{question}
-\begin{question}
- Type $2$: $\answer{2}$.
- \begin{question}
+\begin{exploration}
Type $2$: $\answer{2}$.
- \end{question}
-\end{question}
+\end{exploration}
+
+Online these act much like theorem-like environments.
+
+However in the PDF, the documentclass option \verb|newpage| will start
+a new page at the end of each of these. Moreoever, nested problem
+environments will number as sub problems in the PDF.
+An example of an exercise with two nested exercises is:
+\begin{exercise}
+ Type $1$: $\answer{1}$.
+ \begin{exercise}
+ Type $2$: $\answer{2}$.
+ \begin{exercise}
+ Type $3$: $\answer{3}$.
+ \end{exercise}
+ \end{exercise}
+ \begin{exercise}
+ Type $2$: $\answer{2}$.
+ \end{exercise}
+\end{exercise}
-\begin{exploration}
- Type $2$: $\answer{2}$.
-\end{exploration}
+An example of an exercise with one \verb|answer| and two questions:
-\begin{exploration}
- Type $2$: $\answer{2}$.
- \begin{exploration}
- Type $2$: $\answer{2}$.
- \end{exploration}
-\end{exploration}
+\begin{exercise}
+ Type $1$: $\answer{1}$.
+ \begin{question}
+ Type $2$: $\answer{2}$.
+ \end{question}
+ \begin{question}
+ Type $2$: $\answer{2}$.
+ \end{question}
+\end{exercise}
+
+An example of an exercise with just two questions:
+
+\begin{exercise}
+ \begin{question}
+ Type $2$: $\answer{2}$.
+ \end{question}
+ \begin{question}
+ Type $2$: $\answer{2}$.
+ \end{question}
+\end{exercise}
\end{document}
diff --git a/testXourses.TODO/problemTest.tex b/testXourses.TODO/problemTest.tex
deleted file mode 100644
index ef3d744..0000000
--- a/testXourses.TODO/problemTest.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-%\documentclass{xourse}
-
-\title{Master Problem Test Xourse}
-
-
-\begin{document}
-\maketitle
-
-\activity{testFiles/placeHolder}
-
-
-\end{document}
\ No newline at end of file
diff --git a/testXourses/problemTest.tex b/testXourses/problemTest.tex
new file mode 100644
index 0000000..9690948
--- /dev/null
+++ b/testXourses/problemTest.tex
@@ -0,0 +1,14 @@
+\documentclass{xourse}
+
+\title{Tests: problem environments}
+
+
+\begin{document}
+\maketitle
+
+\activity{../environments/problemEnvironments}
+
+\activity{../environments/KULeuven/problemEnvironments_KULeuven}
+
+
+\end{document}
\ No newline at end of file
diff --git a/testXourses/problemTest_KULeuven.tex b/testXourses/problemTest_KULeuven.tex
new file mode 100644
index 0000000..9162b16
--- /dev/null
+++ b/testXourses/problemTest_KULeuven.tex
@@ -0,0 +1,19 @@
+\documentclass{xourse}
+
+\input{../environments/KULeuven/xmPreamble}
+\pdfOnly{
+ \input{../environments/KULeuven/xmPrintstyle.sty}
+}
+
+\title{Tests: problem environments (xourse with KULeuven style)}
+
+
+\begin{document}
+\maketitle
+
+\activity{../environments/problemEnvironments}
+
+\activity{../environments/KULeuven/problemEnvironments_KULeuven}
+
+
+\end{document}
\ No newline at end of file