在 Latex 中使用 TexShop 的 moodle 包时出现问题。生成的 XML 文件不被 MoodleCloud 接受

在 Latex 中使用 TexShop 的 moodle 包时出现问题。生成的 XML 文件不被 MoodleCloud 接受

我不知道问题出在哪里:

文件

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
   \usepackage{moodle}
   \begin{document}
   \begin{quiz}{My first quiz}
    % \begin{numerical}[points=2]{Basic addition}
       %What is $8+3$?
       %\item 11
     %\end{numerical}
     \begin{shortanswer}[case sensitive=true]{Newton’s name}
       What was Newton’s first name?
       \item Isaac
       \item[fraction=0, feedback={No, silly!}] Fig
       \item{fraction=0} Sir
     \end{shortanswer}
     \begin{multi}[points=3]{A first derivative}
       What is the first derivative of $x^3$?
       \item  $\frac{1}{4} x^4+C$
       \item* $3x^2$
       \item  $51$
     \end{multi}
   \end{quiz}
   \end{document}

moodle.sty 是从 CTAN 下载的。

以下是moodlecloud错误截图:在此处输入图片描述

答案1

这里存在以下问题:

  1. moodle.sty不适用于任何软件包。我amsmath在这里保留了这些软件包,以便提供 PDF,但请注意,Moodle 中数学公式的渲染是由MathJax,而不是 LaTeX 本身;对于简单的公式没有问题,但你需要检查它们。

  2. “牛顿的名字”中的撇号不是 ASCII 撇号,但是Unicode 字符‘右单引号’ (U+2019).moodle.sty无法处理这个问题pdflatex;尤其是在测验的名称中,生成的 XML 混淆了(坦白说很穷) Moodle 解析器。

此文件(仍然带有你喜欢的撇号):

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{moodle}
\begin{document}
\begin{quiz}{My first quiz}
   \begin{shortanswer}[case sensitive=true]{Newton’s name}
       What was Newton’s first name?
   \item Isaac
   \item[fraction=0, feedback={No, silly!}] Fig
   \item{fraction=0} Sir
   \end{shortanswer}
   \begin{multi}[points=3]{A first derivative}
       What is the first derivative of $x^3$?
   \item  $\frac{1}{4} x^4+C$
   \item* $3x^2$
   \item  $51$
\end{multi}
\end{quiz}
\end{document}

如果用lualatex(可能xelatex也用,没有检查)进行编译,则会给出正确的 XML:

在此处输入图片描述

答案2

我注意到这个包与 UTF-8 源文件不兼容。即使您使用 latin1 inputenc 环境,生成的 XML 也会将 UTF-8 声明为其编码。您可以手动将其更改为 ISO-8859-1 或使用我编写的一些脚本:

#! /bin/bash

for i in *.xml; do
    sed -i  's/UTF-8/ISO-8859-1/g' $i;
done

exit 0;

请注意,它将作用于该文件夹中的任何 XML 文件。转换 XML 文件后,它在这里工作正常。

希望能帮助到你。

相关内容