Suministro de valores de coma flotante pequeños y grandes al paquete Moodle

Suministro de valores de coma flotante pequeños y grandes al paquete Moodle

Estoy usando el paquete "moodle" para crear cuestionarios XML de Moodle a través de Latex. En general funciona bastante bien pero tengo problemas. Si no está familiarizado con el paquete, puedo usar el entorno numérico para crear una respuesta numérica como esta:

\begin{numerical}
What is 2+2?
\item[tolerance=0.5] 4
\end{numerical}

Todo esto funciona muy bien, el paquete genera un archivo PDF y también un archivo XML que se puede cargar en mi sitio Moodle. Pero tengo un problema si estoy usando valores con notación científica, por ejemplo

\begin{numerical}
What is the charge on an electron?
\item[tolerance=1e-20] 1.602e-19
\end{numerical}

En este caso se queja de que la "e" es una unidad de medida ilegal y utilizó "pt" en su lugar. No he podido tener mucha suerte en la búsqueda, no creo que este sea un paquete muy utilizado o que esté en desarrollo activo. ¿Es probable que esto sea un problema de paquete o existe un formato particular para ingresar números de notación científica para parámetros de látex como este? ¿Es eso posible? He probado con 'e' mayúscula y minúscula.

Respuesta1

El moodlepaquete intenta determinar si la tolerancia está establecida en 0 para mostrar a $\pm$ (tolerance)en el PDF. Para esto, el paquete porque internamente se basa en las dimensiones de TeX.

Puede resolver el problema eliminando esta prueba. En el preámbulo, después de cargar el moodlepaquete, agregue el siguiente código:

\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

Tanto la compilación como la importación de Moodle serán exitosas.

información relacionada