我尝试使用exam
文档类为书籍创建问题/答案表。在编写第一章时,一切都很顺利。当我编写第二章时,我意识到问题编号会遇到问题,因为有些问题的编号相同。我收到的具体警告是:
LaTeX Warning: Label `question@1' multiply defined.
我的文档正文的基本布局如下:
\section*{Chapter 1}
\setcounter{section}{1}
\begin{questions}
\numberwithin{question}{section}
\setcounter{question}{0}
\question
\begin{solution}
\end{solution}
\end{questions}
\section*{Chapter 2}
\setcounter{section}{2}
\begin{questions}
\numberwithin{question}{section}
\setcounter{question}{0}
\question
\begin{solution}
\end{solution}
\end{questions}
编译仍然有效,但我的编辑器给了我一页警告。一定有比我现在做的更好更正确的方法。你能推荐我一种制作此类文档的其他方法吗?
答案1
查看源考试类别需要进行大量更改才能使用重复数字,因为它在多个地方内部使用数字计数器。但是,为了帮助其他回答者并解决已发布文档中的其他问题,这里是解决方案的开始。
您不应该对编号部分使用星号形式,并且\numberwith
只能使用一次。它没有产生效果并且您必须手动重置问题计数器的事实与您使用 * 形式有关。当父计数器增加时,嵌套计数器会重置,而通过设置部分计数器不会这样做(并且还意味着您不能使用和\stepcounter
来引用该部分)。\refstepcounter
\setcounter
\label
\ref
更新 在不破坏其余功能的情况下重新开始方程式编号的最简单方法可能是使用唯一数字维护计数器,例如在第一部分中为 101、1002,在第二部分中为 201、202,然后只需安排在标题中将其打印为 1.1,1.2,2.1,2.1:
\documentclass{exam}
\usepackage{amsmath}
\makeatletter
\def\@seccntformat#1{%
\expandafter\ifx\csname the#1\endcsname\thesection Chapter~\fi
\csname the#1\endcsname
\setcounter{question}{\thesection00}%
\quad}
\renewcommand\thequestion{%
\the\numexpr(\value{question}-49)/100\relax.%
\the\numexpr\value{question}-(100*((\value{question}-49)/100))\relax}
\makeatother
\begin{document}
\begin{questions}
\fullwidth{\section{}}
\question aaa
\begin{solution}
xxx
\end{solution}
\fullwidth{\section{}}
\question bbb
\begin{solution}
yyy
\end{solution}
\end{questions}
\end{document}
答案2
我知道这是一个老问题,但我遇到过类似的问题,这里的答案并没有为我解决。
我所做的是更改exam.cls
文件中的两行,我没有处理章节,但对于这种情况,您可以这样做:
2566行
\edef\@queslabel{question@\arabic{question}}%
到
\edef\@queslabel{question@\arabic{chapter}@\arabic{section}@\arabic{subsection}@\arabic{question}}%
和
第2893行
\edef\@partlabel{part@\arabic{question}@\arabic{partno}}%
到
\edef\@partlabel{part@\arabic{chapter}@\arabic{section}@\arabic{subsection}@\arabic{question}@\arabic{partno}}%
我只更改了这两个,因为它们向我发出了警告,而且我不使用子部分或子子部分。我想如果需要的话,那些也应该更改。
答案3
- 改变
\LoadClass{article}
到
\LoadClass{book}
关注piptin,修改
2.1
\edef\@queslabel{question@\arabic{question}}%
到
\edef\@queslabel{question@\arabic{chapter}@\arabic{section}@\arabic{subsection}@\arabic{question}}%
2.2
\edef\@partlabel{part@\arabic{question}@\arabic{partno}}%
到
\edef\@partlabel{part@\arabic{chapter}@\arabic{section}@\arabic{subsection}@\arabic{question}@\arabic{partno}}%
然后它就起作用了!!!!!!!!!!!!!!!!!!!!!!!!!!!