我想避免在环境中分页。我可以使用和环境align
来实现这一点。但是,当我尝试创建一个与其中一个结合的新环境时,我会收到错误。以下说明;据我所知,我对命令的使用完全是标准的。但我的新环境和都抛出了同样的错误,即, 有人能解释一下我做错了什么吗?非常感谢,Leosamepage
minipage
align
newenvironment
SPalignOne
SPalignTwo
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
——从而注意到要执行的第一条指令是。因此出现错误消息:LaTeX 在当前所在的环境 ( ) 关闭之前\end{align}
遇到了环境的结束 ( SPalignX
) 。align
顺便说一句,默认情况下,环境中不应该出现分页符align
,除非提供了这样的指令\allowdisplaybreaks
。您可能想检查文档中的代码,以发现这样的命令是否潜伏在某处。从根本上解决问题应该比提供症状治疗更容易,对吧?