moodle
我正在使用该包(+ LuaLaTeX)为 moodle 准备一个测验。
当我以通常的方式(即)输入百分比时40\,\%
,LaTeX 渲染正常,但反斜杠会传递给 moodle 并出现在文本中:
作为一种解决方法,我重新定义\%
为,\char"0025
但这不起作用,因为 moodle 包并不关心。
我在手册中没有找到任何相关条目。
有什么建议吗?
梅威瑟:
\documentclass{article}
\usepackage{moodle}
\begin{document}
\begin{quiz}{Révisions}
\begin{numerical}
Calculer 40\,\% de 120.
\item 48
\end{numerical}
\end{quiz}
\end{document}
编辑
添加后
\makeatletter%
\html@action@def\%\g@addto@macro\htmlize@output{\otherpercent}}%
\makeatother
按照@mgk 在评论中所建议的序言,百分号现在可以在问题文本中正确呈现,但反斜杠在任何答案文本中仍然存在。
\documentclass{article}
\usepackage{moodle}
\makeatletter\html@action@def\%{\g@addto@macro\htmlize@output{\otherpercent}}\makeatother
\begin{document}
\begin{quiz}{Révisions}
\begin{shortanswer}{Q1}
Enter the string \texttt{"40\%"}.
\item 40\%
\end{shortanswer}
\end{quiz}
\end{document}
答案1
您遇到了与包版本相关0.8
的两个问题moodle
。
- 该宏
\%
未声明转换为 HTML。 - 问题的答案
shortanswer
按原样传递给 XML,而无需转换为 HTML。
您可以在加载后将此代码添加到序言中来解决这两个问题moodle
。
\makeatletter
\html@action@def\%{\g@addto@macro\htmlize@output{\otherpercent}}
\def\saveshortansweranswer@int@int#1\moodle@answer@rdelim{%
\def\moodle@answertext{#1}%
\trim@spaces@in\moodle@answertext
\moodle@checkfraction
\addto@xml[2]{\moodle@answers@xml}{<answer fraction="\moodle@fraction"
format="plain_text">}%
\xa\converttohtmlmacro\xa\moodle@answertext@html\xa{\moodle@answertext}%
\addto@xml[4]{\moodle@answers@xml}{
<text>\moodle@answertext@html</text>}%
\ifx\moodle@feedback\@empty\relax\else
\trim@spaces@in\moodle@feedback
\xa\converttohtmlmacro\xa\moodle@feedback@html\xa{\moodle@feedback}%
\addto@xml[4]{\moodle@answers@xml}{ <feedback
format="html"><text><![CDATA[<p>\moodle@feedback@html</p>]]></text></feedback>}%
\fi
\addto@xml[2]{\moodle@answers@xml}{</answer>}%
}%
\makeatother
使用此补丁后,以下示例问题得到了令人满意的结果(使用 版本进行编译0.8
、moodle
Moodle LMS 导入以及在 Moodle 上进行问题测试):
\begin{shortanswer}{Q1}
Enter the string \texttt{"40\%"}.
\item[fraction=100,feedback={correct}] 40\%
\item[fraction=50,feedback={incomplete}] 40
\item[fraction=50,feedback={incomplete}] \%
\end{shortanswer}
\begin{cloze}{Q2}
\begin{shortanswer}
Enter the string \texttt{"40\%"}.
\item[fraction=100,feedback={correct}] 40\%
\item[fraction=50,feedback={incomplete}] 40
\item[fraction=50,feedback={incomplete}] \%
\end{shortanswer}
\end{cloze}