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正如您所看到的,這次方程式計數器變得混亂:第二個方程式位於第 2 頁,但它的標籤為 1.3,就好像它位於第 1 頁一樣。

\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位於第二頁,但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}
    
  • 重新定義\equationto move \incr@eqnum,它呼叫\refstepcounter{equation}, 到稍後的位置:

    \makeatletter
    \renewcommand*{\equation}{% amsmath version
      \nobreak
      \mathdisplay@push
      \st@rredfalse
      \global\@eqnswtrue
      \mathdisplay{equation}%
      \incr@eqnum
    } 
    \makeatother
    

相關內容