使 etoolbox 与 Exam 文档类一起工作

使 etoolbox 与 Exam 文档类一起工作

我正在尝试将 etoolbox 与文档类一起使用exam。我成功地将 etoolbox 与该类一起使用article,但我无法让它在环境中工作question。这是一个最小的例子:

\documentclass[12pt]{exam}
\usepackage{etoolbox}

\def\QuizKey{\newpage }

\newcommand{\answer}[2][0 pt]{
\eappto{\QuizKey}{\noexpand\par\arabic{question}.\ \unexpanded{#2}}
\vspace{#1}
}

\begin{document} 
\appto{\QuizKey}{Opening Code}

\begin{questions}
\question When did the Internet first begin?\answer{1985}

\appto{\QuizKey}{Something else to test} 
\end{questions}

\appto{\QuizKey}{Ending Code}

\QuizKey

\end{document}

我的最终结果是,\QuizKey打印输出执行了文档中要求的所有操作,除了问题环境中的部分。我猜想\eappto\appto命令无法到达钩子,或者它们可能不允许在环境内使用,但它似乎也没有导致任何错误。有什么办法可以解决这个问题吗?

答案1

\QuizKey环境构成一个组,因此一旦环境结束,对 的更改就会丢失,除非更改是全局的。使用\xappto\gappto

\documentclass[12pt]{exam}
\usepackage{etoolbox}

\newcommand\QuizKey{\newpage}

\newcommand{\answer}[2][0pt]{% <-- don't forget
  \xappto{\QuizKey}{\arabic{question}.\ \unexpanded{#2\par}}% <-- don't forget
  \vspace{#1}%
}

\begin{document} 
\gappto{\QuizKey}{Opening Code\par}

\begin{questions}
\question When did the Internet first begin?\answer{1985}

\gappto{\QuizKey}{Something else to test\par} 
\end{questions}

\gappto{\QuizKey}{\par Ending Code}

\QuizKey

\end{document}

在此处输入图片描述

相关内容