如何在cloze填空题中正确使用\exshuffle{}并解决Moodle导入报错
cloze题型
\exshuffle{}参数使用错误修正方案 报错核心原因
- R/exams中
\exshuffle{}对cloze题型的传参规则和单一选择题不同:不能直接传入单个数字,需要传入和\exclozetype长度、顺序一一对应的数值向量,每个位置的数值代表对应子题要随机打乱的选项数量,不需要打乱的子题位置填FALSE即可。 - 你当前直接全局设置
\exshuffle{5},会破坏cloze多子题的答案权重编码逻辑,导致Moodle无法识别每个单选子题中100%分值的正确选项,就会抛出你遇到的报错:
导入试题错误:无效的嵌入式答案(Cloze)试题(至少应有一个答案设置100%分值,以确保该题可以获得满分。)
具体修改步骤
步骤1:修正answerlist调用逻辑
你原有代码中unlist(questions)会把两个子题的所有选项合并为一个列表,导致系统无法区分选项归属,修改question环境内的代码块:
<<echo=FALSE, results=tex>>= # 去掉unlist,传入原始questions列表,separate=TRUE表示每个子题选项独立分组 answerlist(questions, separate = TRUE) @
步骤2:修正\exshuffle{}参数
你当前有2个单选子题,每个都需要打乱5个选项,直接把元信息中的\exshuffle{5}改为\exshuffle{5,5}即可,改后完整元信息如下:
%% META-INFORMATION %% \extype{cloze} %% \exsolution{\Sexpr{paste(solutions, collapse = "|")}} %% \exclozetype{\Sexpr{paste(type, collapse = "|")}} %% \exname{question} %% \exshuffle{5,5}
如果后续你新增不需要打乱的子题(比如数字填空题),按位置匹配参数即可,示例:\exshuffle{5,5,FALSE}代表前两个子题各打乱5个选项,第三个子题不做随机处理。
修改完成后重新导出为Moodle格式,导入时就不会再出现权重报错,每个子题的选项也会独立随机排序。
内容的提问来源于stack exchange,提问作者user12703198
相关产品推荐
相关产品推荐

