请参阅以下 MWE。
\documentclass{exam}
\usepackage{etoolbox}
% The following does not have any effect on the output
\AtBeginEnvironment{questions}{\setcounter{question}{4}}
\begin{document}
\begin{questions}
% The following works fine
% \setcounter{question}{4}
\question What is the answer?
\end{questions}
\end{document}
当仅\AtBeginEnvironment
保留命令时,输出中的问题编号不会改变。
\setcounter{question}{4}
然而,当在环境内明确使用时,它可以正常工作。
按照手册etoolbox
,第一种方法应该是可行的。
\AtBeginEnvironment{<environment>}{<code>}
将任意内容附加<code>
到由 执行的钩子中,该钩子\begin
位于 给定命令的开头<environment>
,紧接着该命令之前\<environment>
,在 由 打开的组内\begin
。
答案1
只需添加命令
\renewcommand{\questionshook}{\setcounter{question}{4}}
而不是试图使用\AtBeginEnvironment