在他的优秀exsheets
软件包中,cgnieder 解释了如何定义自定义概念划分,例如问题难度。在difficulty
成为新的划分概念之后,每个问题都可以被赋予一定的difficulty
值,例如,,,,basic
等。然后可以intermediate
非常轻松地显示/隐藏给定的问题(如下面的代码所示)。advanced
insanely hard
difficulty
我希望将问题的难度排版在问题的标题中。
这样,我可以告诉我的学生,他们应该对所有问题感到满意,并且只有他们喜欢真正的挑战时才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
。然后应该使用我在答案开头提出的代码。