如何初始化考试类中第一次运行的 \numquestions 值

如何初始化考试类中第一次运行的 \numquestions 值

我尝试\TheNumQuestions在这个简单的程序中使用考试类中的问题计数器来放置以下新命令:

\documentclass[12pt]{exam}

\newcommand\TheNumQuestions{\ifthenelse{\numquestions=1}{1 question}{\numquestions\ questions}}

\begin{document}
This exam contains \TheNumQuestions
\begin{questions}
\question A first question
\question A second question
\end{questions}
\end{document}

但第一次运行时出现以下错误消息:

! Missing number, treated as zero.
<to be read again>
\unhbox
l.6 ^^IThis exam contains \TheNumQuestions  

之后,进行第二次编译,一切仍然很好,并且编译得很好。

当我查看辅助文件时,我发现以下信息\gdef\exam@numquestions{2},它为第二次编译提供了合适的结果。如何在辅助文件中插入类似的命令以用于第一次编译,并避免出现此错误消息?

答案1

出现此错误的原因是,在第一次运行期间,\numquestions扩展为\mbox{\normalfont \bf ??},它不是一个数字,并且您正在对其进行数字测试。

除了与数字进行比较之外,您还可以测试是否\numequations使用扩展为(也可以从 ifthen 包中获取)。1\numquestions1\equal

结果如下:

\documentclass[12pt]{exam}

\newcommand\TheNumQuestions{\ifthenelse{\equal{\numquestions}{1}}{1 question}{\numquestions\ questions}}

\begin{document}
This exam contains \TheNumQuestions
\begin{questions}
\question A first question
\question A second question
\end{questions}
\end{document}

在此处输入图片描述

相关内容