Erstellen einer neuen Umgebung, die Samepage mit Align kombiniert

Erstellen einer neuen Umgebung, die Samepage mit Align kombiniert

Ich möchte Seitenumbrüche innerhalb einer alignUmgebung vermeiden. Dies kann ich sowohl mit den samepageals auch mit den minipageUmgebungen erreichen. Wenn ich jedoch versuche, eine neue Umgebung zu erstellen, die alignmit einer der beiden kombiniert wird, erhalte ich Fehler. Das Folgende veranschaulicht dies; soweit ich sehen kann, newenvironmentist meine Verwendung des Befehls völlig standardmäßig. Dennoch werfen sowohl meine neuen Umgebungen SPalignOneals auch SPalignTwoden gleichen Fehler aus, d. h. LaTeX Error: \begin{align} on input line 26 ended by \end{SPalignTwo} Kann mir bitte jemand erklären, was ich falsch mache? Vielen Dank, 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}

Antwort1

Der Fehler tritt aufgrund der Art und Weise auf, wie die alignUmgebung das Material in ihrem Bereich verarbeitet: LaTeX ist so eingestellt, dass es voraus nach der fest codierten Zeichenfolge sucht. \end{align}An diesem Punkt beginnt die Verarbeitung des Materials in der alignUmgebung ernsthaft.

Mit Ihren Definitionen der SPalignXUmgebungen \begin{align}wird LaTeX irgendwann auf stoßen \end{SPalignX}; es ist jedoch nicht so eingestellt, dass es sofort auswertet, was am Ende einer SPalignXUmgebung passiert – und dadurch bemerkt, dass die erste auszuführende Anweisung wäre \end{align}. Daher die Fehlermeldung: LaTeX hat das Ende einer Umgebung erreicht ( SPalignX), bevor die Umgebung, in der es sich gerade befindet ( align), geschlossen wird.

Im Übrigen sollten standardmäßig keine Seitenumbrüche innerhalb einer alignUmgebung erfolgen,es sei denneine Anweisung wie die \allowdisplaybreakshier angegebene. Sie sollten den Code in Ihrem Dokument überprüfen, um herauszufinden, ob sich ein solcher Befehl irgendwo versteckt. Es sollte doch einfacher sein, das Problem an der Wurzel zu packen, als die Symptome zu behandeln, oder?

verwandte Informationen