需要创建一个使用不同环境的环境。例如,我可以像这样实现它:
\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 内核想要避免的完全相同的问题。