使用代码
\documentclass{article}
\usepackage{etoolbox}
\newenvironment{Toto}{%
}{%
}
\AfterEndEnvironment{Toto}{I forgot\dots}
\begin{document}
\begin{Toto}
\end{Toto}
\csundef{@afterend@Toto@hook}
\begin{Toto}
\end{Toto}
\end{document}
\csundef 不适用于 TL2020 + 2020/10/05 v2.5k e-TeX 工具(适用于 LaTeX (JAW))
但在 overleaf 中,它可与 TL2020 + etoolbox 2020/07/15 v2.5i e-TeX 工具(适用于 LaTeX(JAW))配合使用
答案1
我不认为这是从中删除某些内容的正确方法\AfterEndEnvironment
。
\documentclass{article}
\usepackage{etoolbox}
\newenvironment{Toto}{%
}{%
}
\newcommand{\iforgot}{I forgot\dots}
\AfterEndEnvironment{Toto}{\iforgot}
\begin{document}
\begin{Toto}
x
\end{Toto}
\renewcommand{\iforgot}{}
\begin{Toto}
x
\end{Toto}
\end{document}
从 2020-10-01 版本开始,LaTeX 内核中内置了新的钩子管理。
\documentclass{article}
\newenvironment{Toto}{}{}
\AddToHook{env/Toto/after}[forgot]{I forgot\ldots}
\begin{document}
\begin{Toto}
x
\end{Toto}
\RemoveFromHook{env/Toto/after}[forgot]
\begin{Toto}
x
\end{Toto}
\end{document}
方括号中的标签是任意字符串。您可以添加任意多段代码,并通过标签机制仅禁用其中一部分。请参阅文档
texdoc lthooks