zref-perpage не работает с теоремоподобными средами

zref-perpage не работает с теоремоподобными средами

Я пытаюсь использовать zref-perpageпакет для нумерации теоремоподобных сред и уравнений по страницам. К сожалению, это не работает должным образом. В этом первом примере мы видим, что вторая thmпоявляется на 2-й странице, но ее счетчик равен 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}

Во втором примере единственное изменение, которое я делаю, это увеличиваю textheightс 1 дюйма до 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находится на 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
    

Связанный контент