\newcommand{\prac}{{\color{red}[Practicals]} }
\newcommand{\lect}{{\color{blue}[Lecture]} }
\newcommand{\self}{{\color{teal}[Self-Assessment]} }
\newcommand{\points}[1]{{\color{red}[#1 Points]}}
\newcommand{\point}[1]{{\color{red}[#1 Point]}}

\newcommand{\setsectionnum}[1]{%
  \unless\iftitle%
    \setcounter{section}{#1}%
  \fi%
}

\newcommand\solution[2]{%
  \def\FILENAME{#1}%
  \def\SPACING{#2}%
  \input{solution_boilerplate}%
}

\newcommand\question[3]{%
  \def\FILENAME{#1}%
  \input{\FILENAME}%
  \solution{#2}{#3}%
}

\newcommand\mcquestion[2]{%
  \def\QUESTION{#1}%
  \def\SOLUTION{#2}%
  \ifsolution
    \input{\SOLUTION}
  \else
    \input{\QUESTION}
  \fi
}

\newcommand\dpllquestion[2]{%
  \def\QUESTION{#1}%
  \def\SOLUTION{#2}%
  \ifsolution
    \input{\SOLUTION}
  \else
    \input{\QUESTION}
  \fi
}

\newcommand*\widefbox[1]{%
  \def\TOPBOTMARGIN{.5}
  \def\LEFTMARGIN{0.5ex}
  \def\SOLUTIONTEXT{#1}
  \fbox{\parbox{%
    \dimexpr\textwidth-11\fboxsep-4\fboxrule\relax}{
    \vspace{\TOPBOTMARGIN\baselineskip}\hspace{\LEFTMARGIN}\SOLUTIONTEXT\vspace{\TOPBOTMARGIN\baselineskip}}
  }
}


\newenvironment{pythonSourceCode}
  {\VerbatimEnvironment\begin{minted}[mathescape, linenos, numbersep=5pt, gobble=2, frame=lines, framesep=2mm]{python}}
  {\end{minted}}
