Fornecendo valores de ponto flutuante pequenos e grandes para o moodlepackage

Fornecendo valores de ponto flutuante pequenos e grandes para o moodlepackage

Estou usando o pacote "moodle" para criar questionários XML do Moodle via Latex. Geralmente funciona muito bem, mas estou tendo problemas. Se você não estiver familiarizado com o pacote, posso usar o ambiente numérico para criar respostas numéricas como esta:

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

Tudo isso funciona muito bem, o pacote gera um PDF e também um arquivo XML que pode ser carregado no meu site Moodle. Mas tenho um problema se estiver usando valores com notação científica, por exemplo

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

Neste caso, queixa-se de que o "e" é uma unidade de medida ilegal e em vez disso utilizou 'pt'. Não tive muita sorte na pesquisa, não creio que este seja um pacote amplamente utilizado ou que esteja em desenvolvimento ativo. É provável que seja um problema de pacote ou existe um formato específico para inserir números de notação científica para parâmetros de látex como este? É mesmo possível!? Eu tentei 'e' maiúsculo e minúsculo

Responder1

O moodlepacote tenta determinar se a tolerância está definida como 0 para exibir a $\pm$ (tolerance)no PDF. Para isso, o pacote porque depende internamente das dimensões do TeX

Você pode resolver o problema removendo este teste. No preâmbulo, após carregar o moodlepacote, adicione o seguinte 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 a compilação quanto a importação do Moodle serão bem-sucedidas.

informação relacionada