扩展延迟的环境

扩展延迟的环境

我正在尝试定义一个将test其内容未扩展地存储在宏中的环境\testcontents

例如,代码

\newcommand{\cmd}{bad}

\begin{test}
\cmd
\end{test}

\renewcommand{\cmd}{okay}

\testcontents

应该打印出“okay”。

我该如何定义这样的环境?我知道 environ 包可用于存储扩展后的内容,但我需要未扩展的内容。

答案1

environ按照您的要求工作,它收集了没有扩展的主体,以下排版okay

\documentclass{article}

\usepackage{environ}


\NewEnviron{test}
{\global\let\testcontents\BODY}

\begin{document}


\newcommand{\cmd}{bad}

\begin{test}
\cmd
\end{test}

\renewcommand{\cmd}{okay}

\testcontents

\end{document}

相关内容