如何使用 latex moodle 包获取百分号

如何使用 latex moodle 包获取百分号

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

  1. 该宏\%未声明转换为 HTML。
  2. 问题的答案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.8moodleMoodle 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}

问题 1. 最近解决了在开发版本的软件包中。我打开了一个问题对于问题2。它应该很快就会得到解决。

相关内容