zref-perpage 不适用于类似定理的环境

zref-perpage 不适用于类似定理的环境

我正在尝试使用该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}

在第二个示例中,我所做的唯一更改是将textheight1 英寸增加到 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的建议,在下面的例子中我仅使用了articleand,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
    

相关内容