
Quiero evitar saltos de página dentro de un align
entorno. Puedo lograr esto tanto con el samepage
como con los minipage
entornos. Sin embargo, cuando intento crear un nuevo entorno que combine align
con cualquiera de los dos, obtengo errores. Lo siguiente ilustra; Por lo que puedo ver, mi uso del newenvironment
comando es completamente estándar. Sin embargo, mis nuevos entornos SPalignOne
arrojan SPalignTwo
el mismo error, es decir,
LaTeX Error: \begin{align} on input line 26 ended by \end{SPalignTwo}
¿podría alguien explicar qué estoy haciendo mal? Muchas gracias leo
\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}
Respuesta1
El error se produce debido a la forma en que el align
entorno procesa el material en su alcance: LaTeX está configurado para buscar la cadena codificada \end{align}
, momento en el que el procesamiento del material en el align
entorno comienza en serio.
Con sus definiciones de los SPalignX
entornos, después de que \begin{align}
LaTeX eventualmente se encuentre \end{SPalignX}
; sin embargo, no está configurado para evaluar inmediatamente lo que sucede al final de un SPalignX
entorno y, por lo tanto, observar que la primera instrucción a ejecutar sería \end{align}
. De ahí el mensaje de error: LaTeX ha encontrado el final de un entorno ( SPalignX
) antes de que se cierre el que se encuentra actualmente ( align
).
Por cierto, de forma predeterminada no deberían producirse saltos de página dentro de un align
entorno,a menos queuna instrucción como la que \allowdisplaybreaks
se le proporcionó. Es posible que desees comprobar el código de tu documento para descubrir si dicho comando se esconde en alguna parte. Debería ser más fácil curar el problema desde su raíz que proporcionar un tratamiento a los síntomas, ¿verdad?