“\end\end”导致“超出TeX容量”

“\end\end”导致“超出TeX容量”

我知道这是无效的 LaTeX 代码,但是该代码\end\end导致以下错误:

! TeX capacity exceeded, sorry [input stack size=5000].
\end #1->\csname end#1
                      \endcsname \@checkend {#1}\expandafter \endgroup \if@e...
l.1 \end\end

这只是无效的语法,为什么会导致“TeX 容量超出”?

答案1

这不仅仅是无效的语法,而是一个无限循环。

\end\end

\end{\end}

因此它是最终环境调用,并且它扩展了它的参数

\end或多或少是\csname end#1\endcsname 这样的,\end{table}执行\endtable

所以

\csname end\end\endcsname

所以我们必须扩大\end并得到

\csname end\csname end\endcsname\endcsname

\csname end\end\endcsname

我们循环 500 次,直到填满输入堆栈,每次都\endcsname将其作为参数\end并重新插入。

相关内容