
Я использую пакет "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 будут выполнены успешно.