
Ich verwende das Paket „moodle“, um Moodle-XML-Tests über Latex zu erstellen. Im Allgemeinen funktioniert es ziemlich gut, aber ich habe Probleme. Wenn Sie mit dem Paket nicht vertraut sind, kann ich die Umgebung „numerical“ verwenden, um numerische Antworten wie folgt zu erstellen:
\begin{numerical}
What is 2+2?
\item[tolerance=0.5] 4
\end{numerical}
Das funktioniert alles gut, das Paket generiert eine PDF- und auch eine XML-Datei, die auf meine Moodle-Site hochgeladen werden kann. Aber ich habe ein Problem, wenn ich Werte mit wissenschaftlicher Notation verwende, z. B.
\begin{numerical}
What is the charge on an electron?
\item[tolerance=1e-20] 1.602e-19
\end{numerical}
In diesem Fall wird bemängelt, dass das „e“ eine ungültige Maßeinheit ist und stattdessen „pt“ verwendet wurde. Ich hatte bei der Suche nicht viel Glück, ich glaube nicht, dass dies ein weit verbreitetes Paket ist oder dass es aktiv weiterentwickelt wird. Ist dies wahrscheinlich ein Paketproblem oder gibt es ein bestimmtes Format zum Eingeben von Zahlen in wissenschaftlicher Notation für Latex-Parameter wie diese? Ist das überhaupt möglich? Ich habe sowohl Groß- als auch Kleinbuchstaben von „e“ ausprobiert.
Antwort1
Das moodle
Paket versucht zu ermitteln, ob die Toleranz auf 0 gesetzt ist, um ein $\pm$ (tolerance)
im PDF anzuzeigen. Dafür verwendet das Paket intern die Dimensionen von TeX.
Sie können das Problem lösen, indem Sie diesen Test entfernen. Fügen Sie in der Präambel nach dem Laden des moodle
Pakets den folgenden Code hinzu:
\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
Sowohl die Kompilierung als auch der Moodle-Import werden erfolgreich sein.