我正在使用“moodle”包通过 Latex 创建 Moodle XML 测验。通常情况下,它工作得很好,但我遇到了问题。如果您不熟悉该包,我可以使用环境数值来创建数字答案,如下所示:
\begin{numerical}
What is 2+2?
\item[tolerance=0.5] 4
\end{numerical}
这一切都运行良好,该包生成一个 PDF 和一个 XML 文件,可以上传到我的 Moodle 网站。但如果我使用带有科学记数法的值,就会出现问题,例如
\begin{numerical}
What is the charge on an electron?
\item[tolerance=1e-20] 1.602e-19
\end{numerical}
在这种情况下,它会抱怨“e”是一个非法的测量单位,而它使用的是“pt”。我搜索得不太顺利,我不认为这是一个广泛使用的包,也不认为它正在积极开发中。这可能是包问题吗,还是有特定的格式用于为这样的 latex 参数输入科学计数法数字?这可能吗!?我试过大写和小写的“e”
答案1
该moodle
包尝试确定容差是否设置为 0,以便$\pm$ (tolerance)
在 PDF 中显示。为此,该包内部依赖于 TeX 的尺寸
删除这个测试即可解决问题。在序言中,加载moodle
包后,添加以下代码:
\makeatletter
\def\moodle@print@numerical@answer@int@int#1\@rdelim{%
\edef\moodle@numericalprint@tolerance{\noexpand\pm\moodle@tolerance}%
\ifx\moodle@fraction\@hundred
\item $#1\moodle@numericalprint@tolerance\quad\checkmark$%
\else
\item $#1\moodle@numericalprint@tolerance$\quad (\moodle@fraction\%)%
\fi
}%
\def\moodle@print@clozenumerical@answer@int@int#1\@rdelim{%
\ifx\moodle@fraction\@hundred
\def\moodle@clozenumericalprint@fraction{$\checkmark$}%
\else
\edef\moodle@clozenumericalprint@fraction{(\moodle@fraction\%)}%
\fi
\edef\moodle@clozenumericalprint@tolerance{\noexpand\pm\moodle@tolerance}%
\xdef\moodle@clozenumericalprint@line{$#1\moodle@clozenumericalprint@tolerance$
& \moodle@clozenumericalprint@fraction}%
\xa\g@addto@macro\xa\cloze@numerical@table@text\xa{\moodle@clozenumericalprint@line
\\}%
}%
\makeatother
编译和 Moodle 导入都将成功。