xsim
我正在尝试使用练习未按顺序显示的集合来创建考卷id
。
练习按照counter
考试本身中指定的顺序(= 顺序)打印,但按照id
评分表中的顺序打印,这可能会造成混淆。
以下是 MWE:
\documentclass{article}
\usepackage{xsim}
\DeclareExerciseCollection{test}
\xsimsetup{
print-solutions/headings=false ,
collect
}
\begin{document}
\gradingtable
\begin{exercise}[ID=one,points=3]
Exercise one.
\end{exercise}
\begin{solution}
Answer one.
\end{solution}
\begin{exercise}[ID=two,points=7]
Exercise two.
\end{exercise}
\begin{solution}
Answer two.
\end{solution}
\begin{exercise}[ID=three,points=1]
Exercise three.
\end{exercise}
\begin{solution}
Answer three.
\end{solution}
\printexercise{exercise}{one,three, two}
\end{document}
以下是我得到的结果:
以下是我想要的结果(在评分表中,练习 2 和 3 互换位置):
据了解,从该软件包的手册来看,xsim 仅包含内置函数,用于按类型然后按 ID 或按 ID 对练习进行排序。我曾尝试深入研究该软件包的源代码,以构建一个按计数器对练习进行排序的函数,但这超出了我目前的能力。
有没有我忽略的内置(或简单)方法?否则,您知道如何获得它吗?
答案1
这样做的原因是,即使练习没有立即打印出来,它们也是按照出现的顺序设置或定义的。这定义了诸如id
或exercise-body
之类的属性。
一些属性是在实际打印练习时首先设置的,例如练习编号。
评分表的默认模板用于\ForEachUsedExerciseByType{}
循环练习,使用已定义的练习顺序。
目前,还没有简单的方法可以按照打印顺序循环显示练习。恕我直言,这值得提出一个功能请求。我再次在 github 上打开了您的问题。