Pregunta

De acuerdo con esta pregunta:

Redefiniendo comandos en un nuevo entorno

¿Cómo se redefine (o define usando \def) una macro que usa parámetros? Sigo recibiendo un error illegal parameter definition in \foo. Como necesito delimitadores personalizados, no puedo usar \newcommand o \renewcommand.

Una forma general de mi código se ve así:

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

Esto debe ser posible. En este momento estoy usando definiciones de TeX simple (como mencioné en la pregunta anterior) pero realmente me gustaría ser coherente con el sistema LaTeX.

¿Fue útil?

Solución

Debe duplicar los # caracteres para cada definición anidada. Internamente, un \ newcommand o un \ newenvironment está llamando a \ def.

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

Además de eso, esta es la forma de hacer lo que estás tratando de hacer; no existe un método pure-LaTeX para definir una macro con argumentos delimitados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top