新环境内部的环境

新环境内部的环境

需要创建一个使用不同环境的环境。例如,我可以像这样实现它:

\newenvironment{new}{ \begin{old} }{ \end{old} }

一切正常,直到old变为document。在这种情况下,代码停止工作:

! LaTeX Error: \begin{Document} on input line 2 ended by \end{document}

为什么上述代码在非的情况下可以正常工作document,但在的情况下却不行document

PS 我也会给出一个在这个广阔的地点

\newenvironment{Document}{}{}
\AddToHook{env/Document/before}{ \begin{document} }
\AddToHook{env/Document/after}{ \end{document} }

答案1

有充分的理由表明这种方法不起作用。

每个环境都会创建一个组,只有一个例外,即document。为什么?因为在一个组内排版整个文档很容易导致内存溢出,因为 TeX 需要保留每个分配,以便在组结束时恢复它(但这毫无意义,因为文档已经结束)。

除了该方法不可行之外,我看不出隐藏document在另一个环境中的任何好理由,因为这会导致与 LaTeX 内核想要避免的完全相同的问题。

相关内容