制作包含乱序版多项选择题的考试

制作包含乱序版多项选择题的考试

(这个论坛上有许多用于制作考试的软件包,以及解决相关问题的各种问题。但是,我还没有找到一个可以满足我制作考试的所有需求的解决方案。我所寻找的这些功能通常可以从商业考试软件包中获得;然而,这些程序通常缺乏像 LaTeX 那样排版数学内容的便利性以及控制格式的简易性和精确性。)

我想制作一个主要由多项选择题组成的考试,偶尔包含填空题或简答题。具体来说,我想

  1. 可以选择生成多个乱序版本的考试,每个版本的答案选项(A、B、C、D)或问题本身(或两者)都是独立随机的。我还想为每个乱序版本生成一个单独的答案键(供我评分时使用)。
  2. 可以选择在乱序过程中保持某些答案选项的位置不变。例如,答案选项“以上全部”只适合放在四个选项中的 D 选项中。

以上是比较必要的请求。以下是一些可选的请求,它们也可能有帮助:

  1. 在答案页上,可以选择仅打印答案(即仅字母 A、B、C、D)或打印答案的简短说明以及正确答案。
  2. 仅在每种题型(多项选择题、填空题、简答题等)内设置乱序题。
  3. 能够标记每个问题,并可以选择在打印时包含问题标签(可能对考试没用,但对我自己的文档保存有帮助)。
  4. 生成乱码版本时,生成单独的表格,列出每个乱码版本中的问题标签及其对应的编号。
  5. 能够保持某些题目的位置不变,其余题目则打乱。

答案1

你可以看一下这个esami包:你可以打乱问题;你可以打乱多项选择题的答案,你可以修复最后的答案;你可以修复答案的位置或问题的顺序。

您的第三个请求是可行的,但尚未完全测试。

如果您按类型划分练习,您的第 4 项请求是可能的。

您的第5和第6项请求已部分实现,但无法在考试中打印标签,只能在外部文件上打印。

如果您将想要解决的问题与想要打乱的问题分开,您的第 7 号请求是可能的。

答案2

你可以看看自动多项选择,可回答您的需求 1、2、3(仅适用于开放式问题)、4、5、7。您还可以从扫描件中自动标记已完成的答题纸(在 linux 或 macosx 上)。

答案3

这是我目前正在研究的问题。我将问题和可能的答案写在单独的文件中,并使用简短的 MATLAB/八度脚本以随机顺序将它们连接起来。

例如,如果我有 10 个问题文件Q.1,...,Q.10每个问题文件有 4 个可能的答案,,A.1.1...,,A.1.4...,,A.10.1...,A.10.4(不言自明的文件名),我使用类似

nl=fopen('newline','w');    %create a file with only a new line character, because it is useful
fprintf('nl','/n');
fclose(nl);

bq=fopen('beginq','w');    %file with '\begin{question}'
fprintf(bq,'\\begin{question}\n')
fclose(bq)

eq=fopen('endq','w');    %file with '\end{question}'
fprintf(eq,'\\end{question}\n')
fclose(eq)

ba=fopen('begina','w');    %file with '\begin{answer}' (could be a '\begin{itemize}[label=(\alph*)] , for example, if using the `enumerate` package)
fprintf(ba,'\\begin{answer}\n')
fclose(ba)

ea=fopen('enda','w');    %file with '\end{answer}'
fprintf(ea,'\\end{answer}\n')
fclose(ea)
Q = rand(10);    %randomize order of questions

for i=1:10
    qnum=Q(i);
    R = rand(4);    %randomize order of answers

    %the next line uses a batch script to concatenate and create a file 'question<i>' with the i-th question
    system(sprintf('copy beginq+Q.%d+begina+A.%d.%d+A.%d.%d+A.%d.%d+A.%d.%d+enda+endq question%d',Q(i),Q(i),R(1),Q(i),R(2),Q(i),R(3),Q(i),R(4),i));
end

%now concatenate all questions into a file 'exam.tex'
system('copy question1+question2+question3+question4+question5+question6+question7+question8+question9+question10 exam.tex');

(我的代码有点不同,但上面的代码应该可以工作)。您可以添加更多内容,例如拥有一个记住正确答案的向量(一种简单的方法是始终使第一个答案A.i.1正确;只需检查向量的哪个条目R有 1)。

相关内容