zref-perpage no funciona con entornos tipo teorema

zref-perpage no funciona con entornos tipo teorema

Estoy intentando utilizar el zref-perpagepaquete para numerar entornos y ecuaciones similares a teoremas por página. Desafortunadamente, no funciona bien. En este primer ejemplo vemos que el segundo thmaparece en la 2ª página, pero su contador es 1,2 en lugar de 2,1. Los números de las ecuaciones salen bien.

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

En el segundo ejemplo, el único cambio que hago es aumentar textheightde 1 pulgada a 1,5 pulgadas. Esto hace que el segundo thmcomience en la primera página pero termine en la segunda. Como puedes ver, esta vez el contador de ecuaciones se estropea: la segunda ecuación está en la segunda página, pero recibe la etiqueta 1.3, como si estuviera en la página 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}

Por sugerencia de @christian, en el siguiente ejemplo solo uso articley, con textheight=.9in, el segundo thmestá en la segunda página, pero el thmcontador muestra 1,2 en lugar de 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}

Este ejemplo muestra que el perpagepaquete tampoco funciona.

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

Respuesta1

El entorno equation, redefinido por paquete amsmath, incrementa el contador de ecuacionesantesSe inician las matemáticas. Por lo tanto, sucede que hay un salto de página entre la configuración del contador y la ecuación matemática mostrada. El primero es el lugar donde se establece la etiqueta para obtener el número de página.

Soluciones alternativas:

  • Poniendo un minipagecírculo para evitar el salto de página:

    \noindent
    \begin{minipage}{\linewidth}
      \begin{equation}...\end{equation}
    \end{minipage}
    
  • Redefinición de \equationmover \incr@eqnum, que llama \refstepcounter{equation}, a un lugar posterior:

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

información relacionada