使用\ newenvironment重新定义带有参数的命令

时间:2009-01-30 03:55:39

标签: latex tex

根据这个问题:

Redefining Commands in a New Environment

如何重新定义(或使用\def定义)使用参数的宏?我一直收到illegal parameter definition in \foo错误。由于我需要自定义分隔符,因此无法使用\newcommand\renewcommand

我的代码的一般形式如下所示:

\newenvironment{foo}{% 
    ...spacing stuff and counter defs...
    \def\fooitem#1. #2\endfooitem{%
        ...stuff...
    }
    \def\endfooitem{endfoo}
}
{...after material (spacing)...}

这一定是可能的。现在我正在使用plain-TeX定义(正如我在上面的问题中提到的那样),但我真的希望与LaTeX系统保持一致。

1 个答案:

答案 0 :(得分:1)

您需要为每个嵌套定义加倍#字符。在内部,\ newcommand或\ newenvironment正在调用\ def。

\newenvironment{foo}{% 
  ...
  \def\fooitem##1. ##2\endfooitem{%
    ...

除此之外,这是做你想做的事情的方法;没有纯LaTeX方法来定义带有分隔参数的宏。