
Quero evitar quebras de página em um align
ambiente. Posso fazer isso com samepage
os minipage
ambientes. No entanto, quando tento criar um novo ambiente que combine align
com qualquer um deles, recebo erros. O seguinte ilustra; até onde posso ver, meu uso do newenvironment
comando é completamente padrão. No entanto, ambos os meus novos ambientes SPalignOne
geram SPalignTwo
o mesmo erro, ou seja,
LaTeX Error: \begin{align} on input line 26 ended by \end{SPalignTwo}
alguém poderia explicar o que estou fazendo de errado? Muito obrigado, Léo
\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}
Responder1
O erro ocorre devido à maneira como o align
ambiente processa o material em seu escopo: o LaTeX está configurado para procurar a string codificada \end{align}
, ponto em que o processamento do material no align
ambiente começa para valer.
Com suas definições dos SPalignX
ambientes, depois que \begin{align}
o LaTeX eventualmente aparecer \end{SPalignX}
; entretanto, ele não está configurado para avaliar imediatamente o que acontece no final de um SPalignX
ambiente - e assim perceber que a primeira instrução a ser executada seria \end{align}
. Daí a mensagem de erro: LaTeX encontrou o fim de um ambiente ( SPalignX
) antes que aquele em que está atualmente ( align
) seja fechado.
Aliás, por padrão, nenhuma quebra de página deve ocorrer dentro de um align
ambiente,a menos queuma instrução como a que \allowdisplaybreaks
foi fornecida. Você pode querer verificar o código em seu documento para descobrir se tal comando está escondido em algum lugar. Deveria ser mais fácil curar o problema pela raiz do que tratar os sintomas, certo?