以“部分”作为重置计数器的 newtheorem 报告类

以“部分”作为重置计数器的 newtheorem 报告类

抱歉,我对这个问题没有 MWE。

我有一个.dtx班级,查看了diff以前的“好”版本和现在的版本,完全想不起到底哪里出了问题,但问题就在这里。所以我想询问有关 的更多详细信息part

好的,因此班级发出一个\renewtheorem{test}[part]{Name},用户创建环境,例如:

\begin{test}\label{abc}
  Ok.
\end{test}

但是当排版为“ as in test (\ref{abc})”而不是

与测试(1)类似

(之前)文件显示

如测试(.1)所示。

不知道在哪里,但是为什么那个点是不是在那儿冒出来的?

在简单的 MWE 中,部件未显示其相对于点的存在\ref。什么可能导致那里出现点?如果我设置\renewcommand\thepart{100}则为\ref{abc}100.1仍然是点!

谢谢。

答案1

当你声明\newtheorem{thm}[part]{Theorem}你告诉 LaTeXthm环境应该使用part计数器,而不是仅为环境定义一个新的计数器时。因此,假设这是第一个定理,并且没有\part发出任何命令,代码

\begin{thm}\label{abc}
Text
\end{thm}

This is the reference~(\ref{abc}).

将打印

定理一 文本

此为參考文(I)。

你可能已经

\newtheorem{thm}{Theorem}[part]

这是完全不同的。在这种情况下,thm会创建一个计数器,并且每当part步进时,计数器都会重置。此外,\thethm定义为

\newcommand\thethm{\thepart.\arabic{thm}}

这解释了你的输出。实际上,report类定义了

\newcommand\thepart{\Roman{part}}

并且当您不发出任何\part命令时,计数器的值为 0,因此\thepart不会打印任何内容。这就是为什么您会.1同时获得定理编号和对它的引用。重新定义\renewcommand{\thepart}{100}不会改变 的定义\thethm,这将得到100.1

答案2

有计数器.dtx列表和环境/计数器列表;只能用作共享计数器或重置计数器;仅part,chapter,section,subsection,subsubsection\LaTexntheorema,b,c,d,e,...ba\LaTeXda,b,c,等等。在“没有共享计数器“其中a,b,c,...part计数器用作哨兵,当\renewtheorem{}{}必须发出而未指定共享或重置计数器时。列表中的搜索\LaTeX没有单独列出这种情况,以便part与其他chapter,section,subsubsection情况区分开来。

按照建议删除该[part]部分,与开始时(混淆)的错误“[part]最后”区分开来,并指示我检测缺失的代码行\ifthenelse

注意:part不参与report文档的排版。

相关内容