练习包:无法更改第一个问题编号

练习包:无法更改第一个问题编号

我知道我可以使用以下方法更改问题编号\setcounter{Question}

\begin{Exercise}[title={Title}, label=opg]
    \Question
    Exercise 1
    \setcounter{Question}{10}
    \Question
    Exercise 11
    \subQuestion
    subQuestion a
    \setcounter{subQuestion}{3}
    \subQuestion
    subQuestion d
\end{Exercise}

在此处输入图片描述

但我无法用同样的方式改变第一个问题的编号:

\begin{Exercise}[title={Title}, label=opg]
    \setcounter{Question}{10}
    \setcounter{subQuestion}{3}
    \Question
    Not Exercise 11 ???
    \subQuestion
    Not subQuestion d ???
\end{Exercise}

在此处输入图片描述

我如何更改第一个问题的编号?如能得到任何帮助我将不胜感激。

答案1

当初始化一个新的练习时,计数器被设置为 0,显然第一个\Question命令触发了这个初始化。

作为一种解决方法,您可以更改命令的定义\QuestionNB(该命令通常会打印计数器的值)Question,以执行三件事:

  1. 打印您想要的值
  2. 将计数器设置为该值
  3. 将定义改回原来打印计数器的值

在代码中:

\gdef\QuestionNB{%
#1.\ %                                    print the desired value
\setcounter{Question}{#1}%                set the counter
\gdef\QuestionNB{\arabic{Question}.\ }%   change the definition back to the original
}

请注意,您可以从命令本身内部修改命令的定义,这在 LaTeX 中是允许的,并且可以用于您希望第一次调用命令执行与第二次和后续调用不同的操作的情况。

相同的解决方法可用于subQuestion,请注意,您需要\@alph打印第一个字母,因为常规\alph需要一个真正的计数器。如果您提供要打印的实际值(d而不是4),则可以简化此过程,然后您只需打印 即可#1

两种情况都包装在以所需值作为参数的命令中。

完整代码:

\documentclass{article}
\usepackage{exercise}
\newcommand{\setquestionnr}[1]{%
\gdef\QuestionNB{#1.\ %
\setcounter{Question}{#1}%
\gdef\QuestionNB{\arabic{Question}.\ }%
}%
}
\makeatletter
\newcommand{\setsubquestionnr}[1]{%
\gdef\subQuestionNB{\@alph{#1})\ %
\setcounter{subQuestion}{#1}%
\gdef\subQuestionNB{\alph{subQuestion})\ }%
}%
}
\makeatother

\begin{document}

\begin{Exercise}[title={Title}, label=opg]
    \setquestionnr{11}
    \setsubquestionnr{4}
    \Question
    Not Exercise 11 ???
    \subQuestion
    Not subQuestion d ???
    \subQuestion
    Second subquestion
    \Question
    Next question
    \subQuestion
    Next subquestion
\end{Exercise}
\end{document}

结果:

在此处输入图片描述

相关内容