
Я хочу избежать разрывов страниц в align
среде. Я могу сделать это с помощью как среды , так samepage
и minipage
среды . Однако, когда я пытаюсь создать новую среду, которая сочетается align
с любой из них, я получаю ошибки. Ниже приведена иллюстрация; насколько я могу судить, мое использование команды newenvironment
полностью стандартно. Однако обе мои новые среды SPalignOne
и SPalignTwo
выдают ошибку ame, т. е.
LaTeX Error: \begin{align} on input line 26 ended by \end{SPalignTwo}
Может ли кто-нибудь объяснить, что я делаю неправильно? Большое спасибо, Лео
\documentclass{minimal}
\usepackage{amsmath}
\newenvironment{SPalignOne}
{\begin{samepage}\begin{align}}
{\end{align}\end{samepage}}
\newenvironment{SPalignTwo}
{\begin{minipage}{\textwidth}\begin{align}}
{\end{align} \end{minipage} }
\begin{document}
\begin{samepage}
\begin{align}
x
\end{align}
\end{samepage}
\begin{minipage}{\textwidth}
\begin{align}
x
\end{align}
\end{minipage}
\begin{SPalignOne}
x
\end{SPalignOne}
\begin{SPalignTwo}
x
\end{SPalignTwo}
\end{document}
решение1
Ошибка возникает из-за способа, которым align
среда обрабатывает материал в своей области действия: LaTeX настроен на опережение для жестко закодированной строки , после чего начинается серьезная \end{align}
обработка материала в среде.align
С вашими определениями сред SPalignX
после \begin{align}
LaTeX в конечном итоге встретится \end{SPalignX}
; однако, он не настроен на немедленную оценку того, что происходит в конце среды SPalignX
, — и, таким образом, обратите внимание, что первой выполняемой инструкцией будет \end{align}
. Отсюда и сообщение об ошибке: LaTeX обнаружил конец среды ( SPalignX
) до того, как та, в которой он находится в данный момент ( align
), будет закрыта.
Кстати, по умолчанию внутри align
среды не должно быть разрывов страниц,пока неинструкция, такая как \allowdisplaybreaks
была предоставлена. Вы можете проверить код в вашем документе, чтобы обнаружить, не скрывается ли где-то такая команда. Должно быть проще вылечить проблему в корне, чем предоставлять лечение симптомов, верно?