\documentclass{article} \usepackage{xsim,tcolorbox,needspace} % declare a boolean property: \DeclareExerciseProperty*{short} % declare a tag like property: \DeclareExerciseTagging{level} % declare a template which typesets exercises differently according to given % properties: \DeclareExerciseEnvironmentTemplate{exercise} {% \renewcommand*\theenumi{\theexercise.\arabic{enumi}}% \par\addvspace{\baselineskip} \Needspace*{2\baselineskip} \noindent \GetExercisePropertyT{level}{\marginpar{\sffamily Level: #1}}% \textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}.} % \GetExercisePropertyT{subtitle}{\textit{#1}}% \IfExerciseBooleanPropertyF{short}{\par\noindent}% } {} % declare a tcolorbox template for the solutions: \DeclareExerciseEnvironmentTemplate{solution} {\tcolorbox[colback=yellow,colframe=red]} {\endtcolorbox} % declare a user command for short answers: \NewDocumentCommand\answer{m}{% \IfSolutionPrintT{% \UseExerciseTemplate{begin}{solution}% #1% \UseExerciseTemplate{end}{solution}% }{}% } % setup exercises and solutions: \SetExerciseParameters{exercise}{ exercise-template = exercise , solution-template = solution } % remove this option to hide the answers: \xsimsetup{solution/print=true} \usepackage{lipsum} \begin{document} \begin{exercise}[level=hard,short] Just a short exercise \end{exercise} \begin{solution} The somewhat longer solution to the short exercise. \lipsum[1] \end{solution} \begin{exercise}[subtitle=This one has a title,level=easy] Answer the following questions. \begin{enumerate} \item question \answer{answer} \item question \answer{answer} \end{enumerate} \end{exercise} \begin{exercise} A long exercise. \lipsum[4]\answer{The answer} \end{exercise} \begin{exercise}[level=medium,short] Another short exercise.\answer{The answer} \end{exercise} \end{document}