summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/xsim/examples/xsim.texsx-395273.tex
blob: fe6152ed961cc4ff3d6e2c10d3026a9b7e7079f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
\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}