You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:54:03