我正在尝试使用该zref-perpage
包按页对定理类环境和方程进行编号。不幸的是,效果并不好。在第一个示例中,我们看到第二个thm
出现在第二页,但其计数器是 1.2,而不是 2.1。方程编号显示正常。
\documentclass{amsart}
\usepackage[textheight=1in]{geometry}
\usepackage{zref-perpage}
\newtheorem{thm}{Theorem}
\zmakeperpage{thm}
\renewcommand{\thethm}{\thezpage.\arabic{thm}}
\zmakeperpage{equation}
\renewcommand{\theequation}{\thezpage.\arabic{equation}}
\begin{document}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\end{document}
在第二个示例中,我所做的唯一更改是将textheight
1 英寸增加到 1.5 英寸。这使得第二个公式thm
从第一页开始,但在第二页结束。如您所见,这次公式计数器变得混乱:第二个公式位于第二页,但它的标签为 1.3,因此就像它位于第一页一样。
\documentclass{amsart}
\usepackage[textheight=1.5in]{geometry}
\usepackage{zref-perpage}
\newtheorem{thm}{Theorem}
\zmakeperpage{thm}
\renewcommand{\thethm}{\thezpage.\arabic{thm}}
\zmakeperpage{equation}
\renewcommand{\theequation}{\thezpage.\arabic{equation}}
\begin{document}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\end{document}
根据@christian的建议,在下面的例子中我仅使用了article
and,textheight=.9in
第二个thm
在第2页,但thm
计数器显示1.2而不是2.1。
\documentclass[letterpaper]{article}
%\usepackage{mdframed}
\usepackage[textheight=.9in]{geometry}
\usepackage{zref-perpage}
\newtheorem{thm}{Theorem}
\zmakeperpage{thm}
\renewcommand{\thethm}{\thezpage.\arabic{thm}}
\zmakeperpage{equation}
\renewcommand{\theequation}{\thezpage.\arabic{equation}}
\begin{document}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\end{document}
此示例表明该perpage
包也不起作用。
\documentclass[letterpaper]{article}
\usepackage[textheight=.9in]{geometry}
\usepackage{perpage}
\newtheorem{thm}{Theorem}
\let\origthethm\thethm
\MakePerPage{thm}
\renewcommand{\thethm}{\theperpage.\origthethm}
\let\origtheequation\theequation
\MakePerPage{equation}
\renewcommand{\theequation}{\theperpage.\origtheequation}
\begin{document}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\begin{thm}
We have
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\begin{equation}
\int_1^e\frac1x = 1
\end{equation}
\end{thm}
\end{document}
答案1
equation
由包重新定义的环境amsmath
会增加方程计数器前开始计算。因此,计数器设置和显示的数学公式之间会出现分页符。前者是设置标签以获取页码的地方。
解决方法:
放置一个
minipage
以防止分页符:\noindent \begin{minipage}{\linewidth} \begin{equation}...\end{equation} \end{minipage}
重新定义 以将(调用 )
\equation
移动到稍后的位置:\incr@eqnum
\refstepcounter{equation}
\makeatletter \renewcommand*{\equation}{% amsmath version \nobreak \mathdisplay@push \st@rredfalse \global\@eqnswtrue \mathdisplay{equation}% \incr@eqnum } \makeatother