創造一個將samepage與align結合的新環境

創造一個將samepage與align結合的新環境

我想避免align環境中的分頁。我可以透過samepageminipage環境來實現這一點。然而,當我嘗試創建一個align與任一環境結合的新環境時,我會遇到錯誤。下圖說明;據我所知,我對該newenvironment命令的使用是完全標準的。然而,我的新環境SPalignOneSPalignTwo拋出相同的錯誤,即, 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}.因此會出現錯誤訊息:在關閉SPalignX目前所在的環境 ( ) 之前,LaTeX 已遇到環境結束 ( )。align

順便說一句,預設情況下,環境內不應發生分頁符align除非所提供的指示\allowdisplaybreaks。您可能需要檢查文件中的程式碼以發現此類命令是否潛伏在某處。從根本解決問題應該比治療症狀更容易,對嗎?

相關內容