如何才能将问题的难度排版在问题的标题中?

如何才能将问题的难度排版在问题的标题中?

在他的优秀exsheets软件包中,cgnieder 解释了如何定义自定义概念划分,例如问题难度。在difficulty成为新的划分概念之后,每个问题都可以被赋予一定的difficulty值,例如,,,,basic等。然后可以intermediate非常轻松地显示/隐藏给定的问题(如下面的代码所示)。advancedinsanely harddifficulty

我希望将问题的难度排版在问题的标题中。

这样,我可以告诉我的学生,他们应该对所有问题感到满意,并且只有他们喜欢真正的挑战时才basic应该尝试回答问题。insanely hard

据我所知,headings文档第 19.2 节中定义的实例均exsheets不允许将概念划分打印在问题标题的某个位置。有没有简单的方法可以做到这一点?

% adapted from subsection 12.3 in the exsheets manual
\documentclass{article}

\usepackage{exsheets}
\DeclareQuestionClass{difficulty}{difficulties}
\SetupExSheets{use-difficulties={easy,hard}}

\begin{document}

\begin{question}[difficulty=easy] % I'd like 'easy' to be printed in the heading
  An easy question.
\end{question}
\begin{question}[difficulty=medium] % I'd like 'medium' to be printed in the heading
  This one’s a bit harder.
\end{question}
\begin{question}[difficulty=hard] % I'd like 'hard' to be printed in the heading
  Now let’s see if you can solve this one.
\end{question}

\end{document}

在此处输入图片描述

答案1

\DeclareQuestionClass使用 v0.11 (2013/11/20),您可以使用命令\GetQuestionClass{<class>}和检索问题所定义的类的值\PrintQuestionClassTF{<class>}{<true>}{<false>}。虽然第一个命令只是扩展为值(如果值为空或不存在,则不扩展),但第二个命令会扩展为<true>或。分支<false>中的将被实际值替换。然后您可以执行类似以下操作<true>#1

\documentclass{article}

\usepackage{exsheets}
\DeclareQuestionClass{difficulty}{difficulties}

\DeclareInstance{exsheets-heading}{myblock}{default}{
  join = { title[r,B]number[l,B](.333em,0pt) } ,
  attach = {
    main[l,vc]title[l,vc](0pt,0pt) ;
    main[r,vc]points[l,vc](\marginparsep,0pt)
  } ,
  number-post-code = {%
    \PrintQuestionClassT{difficulty}{ (#1)}%
  }
}

\SetupExSheets{
  use-difficulties={easy,hard} ,
  headings = myblock
}

\begin{document}

\begin{question}[difficulty=easy]
  An easy question.
\end{question}
\begin{question}[difficulty=medium]
  This one’s a bit harder.
\end{question}
\begin{question}[difficulty=hard]
  Now let's see if you can solve this one.
\end{question}

\end{document}

在此处输入图片描述


在 v0.11 之前的版本中,可以使用下面的代码并提供与上面相同的输出。

新定义的类及其值将保存在每个问题的内部变量中\l__exsheets_questions_<class>_tl。它可以在自定义标题实例中使用:

\documentclass{article}

\usepackage{exsheets}
\DeclareQuestionClass{difficulty}{difficulties}

\ExplSyntaxOn
\DeclareInstance{exsheets-heading}{myblock}{default}{
  join = { title[r,B]number[l,B](.333em,0pt) } ,
  attach = {
    main[l,vc]title[l,vc](0pt,0pt) ;
    main[r,vc]points[l,vc](\marginparsep,0pt)
  } ,
  number-post-code = {
    \tl_if_blank:VF \l__exsheets_questions_difficulty_tl
      {
        \space
        ( \tl_use:N \l__exsheets_questions_difficulty_tl )
      }
  }
}
\ExplSyntaxOff

\SetupExSheets{
  use-difficulties={easy,hard} ,
  headings = myblock
}

\begin{document}

\begin{question}[difficulty=easy]
  An easy question.
\end{question}
\begin{question}[difficulty=medium]
  This one’s a bit harder.
\end{question}
\begin{question}[difficulty=hard]
  Now let's see if you can solve this one.
\end{question}

\end{document}

注意:由于变量是内部变量,因此在 的未来版本中可能不再可用exsheets。然后应该使用我在答案开头提出的代码。

相关内容