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}. 따라서 오류 메시지: LaTeX는 SPalignX현재 환경( align)이 닫히기 전에 환경( )의 끝을 발견했습니다.

덧붙여서, 기본적으로 align환경 내에서는 페이지 나누기가 발생해서는 안 됩니다.~하지 않는 한와 같은 지시가 \allowdisplaybreaks내려졌습니다. 그러한 명령이 어딘가에 숨어 있는지 알아보기 위해 문서의 코드를 확인하고 싶을 수도 있습니다. 증상을 치료하는 것보다 문제를 근본적으로 치료하는 것이 더 쉬울 것입니다.

관련 정보