我正在使用 moodle.sty,在单个 .TEX 文件中包括几个测验环境。pdf 中显示所有测验,但在 .XML 中仅显示最后一个。有人能帮助我吗?
\begin{quiz}{Q1}
\begin{multi}[points=1,multiple]{Q01}
\item* a
\item b
\end{multi}
\begin{multi}[points=1,multiple]{Q02}
\item* a
\item b
\end{multi}
\end{quiz}
\begin{quiz}{Q2}
\begin{multi}[points=1,multiple]{QQ01}
\item* a
\item b
\end{multi}
\begin{multi}[points=1,multiple]{QQ02}
\item* a
\item b
\end{multi}
\end{quiz}
答案1
我找到了一个对其他人有用的部分解决方案。
我使用定义第一个类别的单一{quiz}
环境,然后,当我想开始一组新问题时,我会执行以下操作
- 添加
\end{enumerate}
关闭环境{enumerate}
打开{quiz}
- 添加
\setcategory{--my new category--}
- 添加
\subsection*{--my new category--}
新类别的标题和正确对齐方式 - 添加
\begin{enumerate}
以重新启动将被关闭的枚举环境\end{quiz}
。
每个类别都有其编号。
答案2
这种意外行为是因为(版本 0.5) 每次发现moodle
时都会重写同一个 XML 文件。\begin{quiz}...\end{quiz}
可以通过在加载后将此代码包含在序言中来修复此行为moodle
(仍然是版本 0.5)
\makeatletter
\def\openmoodleout{%
\immediate\openout\moodle@outfile=\outputfilename\relax
\writetomoodle{<?xml version="1.0" encoding="UTF-8"?>}%
\writetomoodle{<quiz>}%
\writetomoodle{ }%
}%
\renewenvironment{quiz}[2][]%
{
\setkeys{moodle}{#1}%
\@moodle@ifgeneratexml{\setcategory{#2}}{}%
\subsection*{#2}%
\begin{enumerate}%
}{
\end{enumerate}%
}
\AfterEndPreamble{
\@moodle@ifgeneratexml{\openmoodleout}{}%
}
\AtEndDocument{
\@moodle@ifgeneratexml{\closemoodleout}{}%
}
\makeatother
该错误已在软件包版本中得到0.8
解决moodle
。