我希望定义、引理和定理的编号具有以下形式坐标,在哪里X是章节和是表示自然顺序 1,2,3...我用计数器来表示是这是我的代码,但发生了一些意想不到的事情。计数器在每个章节自动从 0 开始,但我希望它从 1 开始。我应该怎么做才能解决这个问题?谢谢!
\documentclass{book}
\newcounter{moon}[chapter]
\newtheorem{mydef}{Definition}
\renewcommand{\themydef}{\thechapter.\arabic{moon}}
\def\endmydef{\stepcounter{moon}}
\newtheorem{mylem}{Lemma}
\renewcommand{\themylem}{\thechapter.\arabic{moon}}
\def\endmylem{\stepcounter{moon}}
\newtheorem{mythm}{Theorem}
\renewcommand{\themythm}{\thechapter.\arabic{moon}}
\def\endmythm{\stepcounter{moon}}
\begin{document}
\chapter{AlaAla...}
\begin{mydef}
something
\end{mydef}
\begin{mylem}
something
\end{mylem}
\begin{mythm}
something
\end{mythm}
\chapter{BlaBla...}
\begin{mydef}
something
\end{mydef}
\begin{mylem}
something
\end{mylem}
\begin{mythm}
something
\end{mythm}
\end{document}
答案1
一般答案
这(不容易)实现。更好的方法是在使用计数器之前移动计数器的步进。在 TeX 中,这种情况就是这么做的。因为如果您使用\refstepcounter
而不是\stepcounter
让这些计数器与\ref
此一起工作,这是唯一的方法,让 TeX 知道计数器从哪里“活动”为标签。
然而你的情况解决方法是让这三个计数器互为“别名”,并使用可选参数来\newtheorem
让根据柜台内的柜台chapter
。
将您的定义更改为:
\newtheorem{mydef}{Definition}[chapter] % < counter within chapter counter
\newtheorem{mylem}{Lemma}
\newtheorem{mythm}{Theorem}
\makeatletter
\let\c@mylem\c@mydef % make lem counter an alias for def counter
\let\themylem\themydef % copy format of def counter in lem counter
\let\c@mythm\c@mydef % make thm counter an alias for def counter
\let\themythm\themydef % copy format of def counter in lem counter
\makeatother
顺便说一句:这不是一个好主意,\def\endmydef{\stepcounter{moon}}
因为这将覆盖该部分中的所有其他内容\end
……
答案2
只是阐明了我的评论。我所做的就是使用这个答案。当你编译它时,你会看到第二章中的引理和定理虽然没有定义,但已经按应有的方式编号了。
\documentclass{book}
\usepackage{amsthm}
\newtheorem{mydef}{Definition}[chapter]
\newtheorem{mylem}[mydef]{Lemma}
\newtheorem{mythm}[mydef]{Theorem}
\begin{document}
\chapter{AlaAla...}
\begin{mydef}
something
\end{mydef}
\begin{mylem}
something
\end{mylem}
\begin{mythm}
something
\end{mythm}
\begin{mydef}
something
\end{mydef}
\chapter{BlaBla...}
\begin{mylem}
something
\end{mylem}
\begin{mythm}
something
\end{mythm}
\end{document}