我使用的是 scrreprt 文档类,它提供部分和章节。虽然我找到了枚举定理的解决方案,例如定理 chapter.section.number,但我无法获得定理 part.chapter.number。我要么得到 chapter.number 的 part.number。这是一个最小示例:
\documentclass{scrreprt}
\usepackage{amsmath,amsthm,thmtools} %thmtools is used to share counters
\declaretheorem[numberwithin=chapter, name=Theorem]{Thm} %print Theorem 1.1
%\newtheorem{Thm}{Theorem}[part] %prints Theorem I.1
%\numberwithin{Thm}{part} %back to Theorem 1.1
\begin{document}
\part{First part}
\chapter{A chapter}
\begin{Thm}
A theorem.
\end{Thm}
\end{document}
答案1
您在寻找以下内容吗?
\documentclass{scrreprt}
\usepackage{amsmath,amsthm,thmtools} %thmtools is used to share counters
\declaretheorem[numberwithin=chapter, name=Theorem]{Thm} %print Theorem 1.1
\renewcommand\theThm{\thepart.\thechapter.\arabic{Thm}} % <--- added part number
\begin{document}
\part{First part}
\chapter{first chapter}
\begin{Thm}
A theorem. \theThm
\end{Thm}
\begin{Thm}
A theorem. \theThm
\end{Thm}
\chapter{second chapter}
\begin{Thm}
A theorem.
\end{Thm}
\begin{Thm}
A theorem.
\end{Thm}
\end{document}
答案2
我不明白这有什么意义。当你开始一个新的时\part
,章节号不会重置。所以如果你有这个骨架
\part{First part}
\chapter{A}
\begin{Thm} text \end{Thm}
\chapter{B}
\begin{Thm} text \end{Thm}
\part{Second part}
\chapter{C}
\begin{Thm} text \end{Thm}
你会得到定理编号
一.1.1
一.2.1
二.3.1
并且知道该定理出现在哪个部分是多余的。
除非您还需要重置每个章节编号\part
,这也会造成混淆,因为您将冗余移动到了其他地方。
无论如何,你该怎么做呢?用一个非常简单的指令,即
\counterwithin{chapter}{part}
完整示例,其中geometry
线条仅用于制作较小的图片。
\documentclass{scrreprt}
\usepackage[a6paper]{geometry}% just to make smaller pictures
\usepackage{amsmath,amsthm,thmtools}
\counterwithin{chapter}{part}
\declaretheorem[
numberwithin=chapter,
name=Theorem
]{Thm}
\begin{document}
\part{First part}
\chapter{A chapter}
\begin{Thm}
A theorem.
\end{Thm}
\chapter{Another chapter}
\begin{Thm}
Another theorem.
\end{Thm}
\part{Second part}
\chapter{Further chapter}
\begin{Thm}
Further theorem
\end{Thm}
\end{document}
如果您希望章节号前面是零件号(这样会增加新的混乱),您可以这样做。
\documentclass{scrreprt}
\usepackage[a6paper]{geometry}% just to make smaller pictures
\usepackage{amsmath,amsthm,thmtools}
\counterwithin*{chapter}{part}
\declaretheorem[
numberwithin=chapter,
name=Theorem
]{Thm}
\renewcommand{\theThm}{\thepart.\thechapter.\arabic{Thm}}
\begin{document}
\part{First part}
\chapter{A chapter}
\begin{Thm}
A theorem.
\end{Thm}
\chapter{Another chapter}
\begin{Thm}
Another theorem.
\end{Thm}
\part{Second part}
\chapter{Further chapter}
\begin{Thm}
Further theorem
\end{Thm}
\end{document}
当然,你的读者无法找到章节的交叉引用,除非你总是在页眉中打印与该部分相关的内容,而且你无论如何都需要说“第三部分第三章”。好的,这本书是你的了。
\documentclass{scrreprt}
\usepackage[a6paper]{geometry}% just to make smaller pictures
\usepackage{amsmath,amsthm,thmtools}
\counterwithin*{chapter}{part}
\declaretheorem[
numberwithin=chapter,
name=Theorem
]{Thm}
\renewcommand{\theThm}{\thepart.\thechapter.\arabic{Thm}}
\begin{document}
\part{First part}
\chapter{A chapter}
\begin{Thm}
A theorem.
\end{Thm}
\chapter{Another chapter}
\begin{Thm}
Another theorem.
\end{Thm}
\part{Second part}
\chapter{Further chapter}
\begin{Thm}
Further theorem
\end{Thm}
\end{document}
这也许是一本著名教科书的版式。但我知道一本更著名的教科书,就是欧几里得的《几何原本》。我们需要遵循欧几里得的风格吗?当然不需要。
答案3
下面的方法可以达到这个效果:
\renewcommand\theThm{\thepart.\thechapter.\arabic{Thm}}
\makeatletter
\@addtoreset{Thm}{chapter}
\@addtoreset{chapter}{part}
\makeatother
不确定这是否是首选方式。