我在用锻炼列出练习/问题的包。我定义练习列表如下:
\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}
该命令\theQuestion
用于设置计数器值\ref
。因此,更新它的行将处理 Peutsch 在评论中描述的情况。