Предоставление малых и больших значений с плавающей точкой в ​​moodlepackage

Предоставление малых и больших значений с плавающей точкой в ​​moodlepackage

Я использую пакет "moodle" для создания тестов Moodle XML через Latex. Обычно он работает довольно хорошо, но у меня возникают проблемы. Если вы не знакомы с пакетом, я могу использовать environment numeric для создания числового ответа, например:

\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". Мне не удалось добиться большого успеха в поиске, я не думаю, что это широко используемый пакет или что он находится в активной разработке. Вероятно ли, что это проблема пакета или есть особый формат для ввода чисел в научной нотации для параметров латекса, таких как этот? Это вообще возможно!? Я пробовал и заглавные, и строчные буквы "e"

решение1

Пакет moodleпытается определить, установлен ли допуск на 0, чтобы отобразить a $\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 будут выполнены успешно.

Связанный контент