4

根据这个问题:

在新环境中重新定义命令

如何重新定义(或使用定义\def)使用参数的宏?我不断收到illegal parameter definition in \foo错误消息。因为我需要自定义分隔符,所以我不能使用\newcommandor \renewcommand

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

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

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

4

1 回答 1

3

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

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

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

于 2009-01-30T04:58:04.410 回答