mcexam:从文件中输入问题时出错

mcexam:从文件中输入问题时出错

麦克萨姆似乎不允许在 mcquestions 环境中使用 \input 命令。此 MWE 使用 mcexam 包创建包含三个 mc 问题的考试。\input 行从文件 q1.tex 读取问题的内容,但 LaTeX 表示该文件的顶行(即 \question ...)是未定义的控制序列。然后它将第一个和第二个问题的答案列表合并起来。

您可以注释掉 \input 行以确认 MWE 在没有外部输入的情况下也能工作。您可以将 q1.tex 的内容复制到 test.tex 以替换输入行并确认 q1 的内容正确。

% test.tex
\documentclass{article}
\usepackage[output=exam,numberofversions=1,version=1,seed=1,randomizeanswers=false,randomizequestions=false]{mcexam}
                   
\begin{document}

\begin{mcquestions}

\question The sky is
\begin{mcanswerslist}
  \answer green.
  \answer yellow.
  \answer[correct] blue.
\end{mcanswerslist}

\input{q1.tex}

\question $1+1$ equals
\begin{mcanswerslist}
  \answer 1.
  \answer[correct] 2.
  \answer 3.
\end{mcanswerslist}

\end{mcquestions}

\end{document}

这是外部文件。

% q1.tex
\question Who was in the Beatles?
\begin{mcanswerslist}
  \answer[correct] John Lennon
  \answer Elton John
  \answer Buddy Holly
\end{mcanswerslist}

这是编译后的文档的屏幕截图。

mcexam_error

为什么我要从外部文件中读取问题,每个问题占一行输入?我正在为教科书开发一个包含 1300 个问题的测试库。我希望有一个简单的解决方案,因为当我们将其推广给教师时,复杂的解决方案是行不通的。

答案1

该包会扫描\question并保存它们,可能是为了支持随机化顺序,即使在禁用随机化的情况下。

最简单的方法就是搬到\question外面:

\documentclass{article}
\usepackage[output=exam,numberofversions=1,version=1,seed=1,randomizeanswers=false,randomizequestions=false]{mcexam}
                   
\begin{document}

\begin{mcquestions}

\question The sky is
\begin{mcanswerslist}
  \answer green.
  \answer yellow.
  \answer[correct] blue.
\end{mcanswerslist}

\question \input{q1.tex}

\question $1+1$ equals
\begin{mcanswerslist}
  \answer 1.
  \answer[correct] 2.
  \answer 3.
\end{mcanswerslist}

\end{mcquestions}

\end{document}

q1.tex

Who was in the Beatles?
\begin{mcanswerslist}
  \answer[correct] John Lennon
  \answer Elton John
  \answer Buddy Holly
\end{mcanswerslist}

相关内容