zref-perpage는 정리와 유사한 환경에서 작동하지 않습니다.

zref-perpage는 정리와 유사한 환경에서 작동하지 않습니다.

zref-perpage정리와 유사한 환경과 방정식을 페이지별로 번호를 매기기 위해 패키지를 사용하려고 합니다 . 불행히도 잘 작동하지 않습니다. 이 첫 번째 예에서는 두 번째 페이지가 thm두 번째 페이지에 나타나는 것을 볼 수 있지만 해당 카운터는 2.1이 아닌 1.2입니다. 방정식 번호가 정상적으로 나옵니다.

\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}

두 번째 예에서 내가 변경한 유일한 변경 사항은 1인치에서 1.5인치로 늘리는 것입니다 textheight. 이렇게 하면 두 번째가 thm첫 번째 페이지에서 시작되지만 두 번째 페이지에서 끝나게 됩니다. 보시다시피 이번에는 방정식 카운터가 엉망이 되었습니다. 두 번째 방정식은 두 번째 페이지에 있지만 레이블 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카운터에는 2.1 대신 1.2가 표시됩니다.

\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

equationpackage 로 재정의된 Environment 는 amsmath방정식 카운터를 증가시킵니다.~ 전에수학이 시작되었습니다. 따라서 카운터 설정과 표시된 수학 방정식 사이에 페이지 나누기가 발생합니다. 전자는 페이지 번호를 가져오도록 레이블을 설정하는 곳입니다.

해결 방법:

  • minipage페이지 나누기를 방지하기 위해 주위에 배치 :

    \noindent
    \begin{minipage}{\linewidth}
      \begin{equation}...\end{equation}
    \end{minipage}
    
  • 를 호출하는 \equationmove 를 나중에 다른 위치로 재정의합니다 .\incr@eqnum\refstepcounter{equation}

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

관련 정보