
환경 내에서 페이지 나누기를 피하고 싶습니다 align
. 나는 이 작업을 환경 samepage
과 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
. 따라서 실행될 첫 번째 명령은 입니다 \end{align}
. 따라서 오류 메시지: LaTeX는 SPalignX
현재 환경( align
)이 닫히기 전에 환경( )의 끝을 발견했습니다.
덧붙여서, 기본적으로 align
환경 내에서는 페이지 나누기가 발생해서는 안 됩니다.~하지 않는 한와 같은 지시가 \allowdisplaybreaks
내려졌습니다. 그러한 명령이 어딘가에 숨어 있는지 알아보기 위해 문서의 코드를 확인하고 싶을 수도 있습니다. 증상을 치료하는 것보다 문제를 근본적으로 치료하는 것이 더 쉬울 것입니다.