Переопределение команд с параметрами с помощью \ newenvironment - PullRequest
2 голосов
/ 30 января 2009

В соответствии с этим вопросом:

Переопределение команд в новой среде

Как переопределить (или определить, используя \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 Ответ

1 голос
/ 30 января 2009

Вам нужно удваивать символы # для каждого вложенного определения. Внутренне, \ newcommand или \ newenvironment вызывает \ def.

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

Кроме того, это способ делать то, что вы пытаетесь сделать; нет метода чистого LaTeX для определения макроса с аргументами с разделителями.

...