多功能问答包

多功能问答包

我需要制作练习表,正在寻找提供练习/答案环境的软件包。我尝试了 nowexerciseexsheets软件包,几乎可以做我想做的事情,但总是有限制。

我想制作一份练习清单,例如:

  • 一项练习可能只有一行“练习 1.Blah blah blah?”
  • 练习可能会更长,包含多个问题。在这种情况下,第一行只是“练习 X。标题”,然后每个问题一行,并带有适当的编号。
  • 我应该能够给出每个练习或问题的解决方案,并选择是否显示解决方案。
  • 当有多个问题时,我应该能够为每个问题提供答案(而不仅仅是整个练习)。答案应该出现在每个问题之后。
  • 练习和答案直接写在同一个源文件中。
  • 可以自定义答案的书写方式(例如添加 fbox 或颜色)
  • 理想情况下,还可以添加一些符号来指定难度,但这不是必需的。

您认为,实现这一目标的最佳方案是什么,或者需要尽可能少技巧的方案是什么?

答案1

所有提到的要点都应该可以使用该xsim软件包(它是的后继者exsheets)来实现。我对其他软件包的了解不够exercise,无法判断它们是否允许类似的事情……

xsim以下是关于如何使用来实现目标的建议。希望代码是不言自明的。

\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}

这给出

在此处输入图片描述

或者

在此处输入图片描述

取决于是否solution/print=true已设置。

相关内容