如何重用环境的输出

如何重用环境的输出

我创建了一个\NewEnviron处理一些输入的环境。为了便于讨论,它类似于

\NewEnviron{myworkingenvironment}[1]
{   
    \BODY % BODY is expected to define \A, \B and \C
    
    \numericResult{\A + \B + \C}
    \textResult{\A + \B + \C}
}

这些函数排版了我想要的输出,并且我广泛使用了环境(参数#1,迄今为止未使用,应该作为ID)。

现在我想在另一个环境中使用这个环境的变量,例如:

\NewEnviron{mynewenvironment}[1]
{   

    \BODY 
     
    The input was \get{#1:A}, \get{#1:B} and \get{#1:C}
    The result was \get{id:numericResult}.
}

我该如何实现这个get宏?到目前为止我发现的选项(例如,\@currentlabelname之后更改并定义标签)似乎不起作用(我总是得到引用所在部分的名称,而不是我期望的值)。

答案1

思考这满足您的要求。

\documentclass{article}
\usepackage{environ}
\NewEnviron{myworkingenvironment}[1]{\BODY%
\global\expandafter\let\csname#1A\endcsname\A
\global\expandafter\let\csname#1B\endcsname\B}

\NewEnviron{mynewenvironment}[1]{\BODY%
\def\getrelay##1:##2{\csname##1##2\endcsname}
\def\get##1{\getrelay##1}
\get{#1:A} is a friendly clown.
\get{ABC:B} is a dangerous doll.
}

\begin{document}
%
\begin{myworkingenvironment}{ABC}
\newcommand\A{Pennywise}
\newcommand\B{Chucky}
\end{myworkingenvironment}

\begin{mynewenvironment}{ABC}
\end{mynewenvironment}

\end{document}

这个想法是,当您创建一个myworkingenvironment名为 的宏时,会自动生成名为和ABC的全局宏。此处实现的命令只允许您说出类似(where is ) 的内容,而不是直接输入。如果这对您有用,请告诉我,我会添加更详细的解释。\ABCA\ABCB\get\get{#1:A}#1ABC\ABCA

相关内容