zref-perpage não funciona com ambientes semelhantes a teoremas

zref-perpage não funciona com ambientes semelhantes a teoremas

Estou tentando usar o zref-perpagepacote para numerar ambientes e equações semelhantes a teoremas por página. Infelizmente, não funciona bem. Neste primeiro exemplo, vemos que o segundo thmaparece na 2ª página, mas seu contador é 1,2 em vez de 2,1. Os números das equações saem OK.

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

No segundo exemplo, a única alteração que faço é aumentar textheightde 1 pol para 1,5 pol. Isso faz com que o segundo thmcomece na primeira página, mas termine na segunda página. Como você pode ver, desta vez o contador de equações fica bagunçado: a segunda equação está na 2ª página, mas recebe o rótulo 1.3, como se estivesse na 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 sugestão do @christian, no exemplo a seguir utilizo apenas articlee, com textheight=.9in, o segundo thmfica na 2ª página, mas o thmcontador mostra 1,2 em vez 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 exemplo mostra que o perpagepacote também não 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}

Responder1

Ambiente equation, redefinido pelo pacote amsmath, incrementa o contador de equaçõesantesa matemática é iniciada. Assim, acontece que há uma quebra de página entre a configuração do contador e a equação matemática exibida. O primeiro é o local onde a etiqueta é definida para obter o número da página.

Soluções alternativas:

  • Colocando um minipageao redor para evitar a quebra de página:

    \noindent
    \begin{minipage}{\linewidth}
      \begin{equation}...\end{equation}
    \end{minipage}
    
  • Redefinição de \equationto move \incr@eqnum, que chama \refstepcounter{equation}, para um local posterior:

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

informação relacionada