手动练习题编号

手动练习题编号

我在用锻炼列出练习/问题的包。我定义练习列表如下:

\begin{ExerciseList}
  \Exercise{Exercise title}

  \ExeText
  Some exercise introduction
  \Question{First question}
  \Question{Second question}
  \Question{Third question}
\end{ExerciseList}

在输出中,问题编号如下:

1. First question

然而我的愿望是得到以下输出:

(a) First question

实际上,如果我可以手动定义问题的列表字母,那就最好了,因为我预计以后编号会出现一些空白。例如\Question{e}{Some question}。从包源中我看到问题被翻译成列表项:

\def\@QuestionHeader{\item[{\makebox[0cm][r]{\begingroup\@getQuestionInfo%
\QuestionHeaderDifficulty\QuestionNB\endgroup}}]%
\begingroup\@getQuestionInfo\QuestionHeaderTitle\endgroup\ignorespaces}

但是我不确定如何重新定义宏以实现我的目标。有什么想法或提示吗?

答案1

很高兴您查看源代码。很高兴软件包作者使用了描述意图的良好宏名称。我从您发布的代码片段中猜出这\QuestionNB可能是排版问题编号的宏。在源文件中搜索该字符串,我发现:

% Presentation of Questions
%    \begin{macrocode}
\newcommand{\QuestionNB}{\arabic{Question}.\ }

太棒了!我们知道\QuestionNB用阿拉伯语表示Question计数器的值,包括句点和空格。所以你要做的就是插入

\renewcommand{\QuestionNB}{(\alph{Question})\ }

进入之后的序言\usepackage{exercise},你就会得到你想要的。

\documentclass{article}
\usepackage{exercise}
\renewcommand{\QuestionNB}{(\alph{Question})\ }
\renewcommand{\theQuestion}{(\alph{Question})}
\begin{document}
\begin{ExerciseList}
  \Exercise{Exercise title}

  \ExeText
  Some exercise introduction
  \Question{First question}
  \Question{Second question}\label{q2}
  \Question{Third question (\textit{Hint}: use your answer to question~\ref{q2})}
\end{ExerciseList}
\end{document}

在 CoCalc 中查看

示例代码输出

该命令\theQuestion用于设置计数器值\ref。因此,更新它的行将处理 Peutsch 在评论中描述的情况。

相关内容