我如何将命令定义为环境的内部?

我如何将命令定义为环境的内部?

我怎样才能将环境的内部放入命令中?

例如我使用

\begin{tmpenv}
\a

\b

\c

\end{tmpenv}

我希望得到类似的结果

\long\def\tmpenv{%
\a

\b

\c
}

能够多次使用 \tmpenv 并对 \a、\b、\c 进行各种定义:

\def\a{aaa}
\def\b{bbb}
\def\c{ccc}

\tmpenv

\def\a{AAA}
\def\b{BBB}
\def\c{CCC}

\tmpenv

会给

aaabbbccc

AAABBBCCC

答案1

在此处输入图片描述

参数b类型将 body 作为参数,然后#1您可以将其另存为\foo。(+允许\par/空行)

\documentclass{article}

\NewDocumentEnvironment{tmpenv}{+b}
{\long\gdef\foo{#1}}
{}

\begin{document}

\begin{tmpenv}
\a

\b

\c

\end{tmpenv}

\def\a{aaa}
\def\b{bbb}
\def\c{ccc}

\foo

\def\a{AAA}
\def\b{BBB}
\def\c{CCC}

\foo

\end{document}

答案2

使用该包的经典 LaTeX2e 解决方案environ可能如下所示:

\documentclass{article}

\usepackage{environ}

\newtoks\tmpenvtoks
\newcommand*\tmpenvstore{\the\tmpenvtoks}

\NewEnviron{tmpenv}{%
  \global\tmpenvtoks\expandafter{\BODY}
}

\begin{document}
\begin{tmpenv}
\a

\b

\c

\end{tmpenv}

\def\a{aaa}
\def\b{bbb}
\def\c{ccc}

\tmpenvstore

\def\a{AAA}
\def\b{BBB}
\def\c{CCC}

\tmpenvstore
\end{document}

输出

相关内容