我知道这是无效的 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
并重新插入。