我想按 来编号定理(page number).(sequential in the page)
。因此,在第 6 页中,我会
Thm 6.1 AAAAAAABBBVVV
Thm 6.2 BBBGGSDFASFASF
Thm 6.3 AXASDFASDF
然后在第 7 页
Thm 7.1 AAAAAAABBBVVV
Thm 7.2 BBBGGSDFASFASF
Thm 7.3 AXASDFASDF
我尝试使用\newtheorem{thm}{Thm}[page]
。但是,如果 Thm 7.1 位于第 7 页的顶部,有时它会被编号为 Thm 6.4。我假设这种情况发生是因为\thepage
在实际设置新页面之前调用了 。有没有简单的解决方法?
答案1
您需要一个\label
机制\pageref
来在稍后的运行中修复页面引用。
\documentclass{article}
\setlength\textheight{4cm}
\newcounter{thminternal}
\newtheorem{thm}{Thm}
\let\zzthm\thm
\makeatletter
\def\@begintheorem#1#2{\trivlist
\item[%
\protected@edef\zz{\pageref{thm-\thethminternal}}%
\stepcounter{thminternal}%
\protected@edef\zzz{\pageref{thm-\thethminternal}}%
\ifx\zz\zzz\else\setcounter{thm}{0}\refstepcounter{thm}\fi
\label{thm-\thethminternal}%
\hskip \labelsep{\bfseries #1\ \pageref{thm-\thethminternal}.#2}]\itshape}
\begin{document}
\begin{thm}aaaa\end{thm} zzz
\begin{thm}bbb\end{thm} \begin{thm}ccc\end{thm}
zzz
\begin{thm}aaaa\end{thm} zzz
\begin{thm}bbb\end{thm} \begin{thm}ccc\end{thm}
\begin{thm}bbb\end{thm} \begin{thm}ccc\end{thm}
zzz
\begin{thm}bbb\end{thm} \begin{thm}ccc\end{thm}
\begin{thm}bbb\end{thm} \begin{thm}ccc\end{thm}
zzz
\end{document}