Redefining Comandos com parâmetros usando \ newenvironment
Pergunta
De acordo com esta pergunta:
Redefining Comandos em um novo ambiente
Como se redefinir (ou definir usando \def
) um macro que os parâmetros de usos? Eu continuo recebendo um erro illegal parameter definition in \foo
. Desde que requerem delimitadores personalizados, eu não posso usar \newcommand
ou \renewcommand
.
A forma geral dos meus Looks código como este:
\newenvironment{foo}{%
...spacing stuff and counter defs...
\def\fooitem#1. #2\endfooitem{%
...stuff...
}
\def\endfooitem{endfoo}
}
{...after material (spacing)...}
Esta deve ser possível. Agora eu estou usando definições plain-tex (como já referi na pergunta acima), mas eu realmente gostaria de ser consistente com o sistema LaTeX.
Solução
Você precisa dobrar os caracteres # para cada definição aninhada. Internamente, a \ newcommand ou a \ newenvironment está chamando \ def.
\newenvironment{foo}{%
...
\def\fooitem##1. ##2\endfooitem{%
...
Além disso, esta é a maneira de fazer o que você está tentando fazer; não existe um método puro-LaTeX para definir uma macro com argumentos delimitados.