Cómo utilizar las posibilidades de programación de LaTeX

Cómo utilizar las posibilidades de programación de LaTeX

¿ Cómo funcionan \newcommand, \newcommand*, \renewcommand, \renewcommand*, \newenvironment, \newenvironment*, y cuál es la diferencia entre ellos?\renewenvironment\newenvironment*

Respuesta1

Para responder a esto para satisfacer el OP...

Todo el conjunto de comandos de definición de macros está bastante conectado:

  • \newcommand{\foo}[num_of_args][opt first arg value]{% definition} define\foo
  • \newcommand*{\foo}[num_of_args][opt first arg value]{% definition} define \foopero no permite pausas en los argumentos.
  • \renewcommand{\foo}redefine un comando ya existente\foo

  • \renewcommand*{\foo}redefine \foo, con la no-parbreaklimitación.

  • \DeclareRobustCommandcon la misma sintaxis que \newcommandetc., lo que hace que el comando sea robusto (es decir, protegido/no ampliable).

Además (oculto) \newcommandy sus parientes se definen automáticamente \endfoo, por lo que no es posible decirlo \newcommand{\endfoo}por sí mismo. Para obtener más información sobre esto, consulte mi pregunta.¿Están reservados los nombres de macro \end.... en LaTeX2e?

Los comandos del entorno: - \newenvironment{fooenv}[num_of_args]{first opt arg]{% startcode}{endcode}define un entorno denominado fooenv, es decir, se puede utilizar con \begin{fooenv}...\end{fooenv}. El contenido entre este par está agrupado, es decir, \(re)newcommandetc., los cambios de longitud se aplican solo dentro de este par y no son visibles en el exterior, es decir, son seguros (a menos que \globalno se utilicen ( \renewenvironmentredefine un entorno existente) \newenvironment*y \renewenvironment*se apliquen con el no-parbreaklímite.

Además, existe \providecommand(la misma sintaxis que \newcommand) que se puede utilizar para asegurarse de que algún comando esté realmente definido. Si ya está definido, entonces \providecommandno hace nada.

La máquina detrás de todo es el \defcomando TeX básico.
Además, verDiferencia entre \newcommand y \newcommand*

Alternativas de etoolboxyxparse

  • El etoolboxpaquete establece las herramientas \(re)newrobustcmd*para realizar comandos robustos.

  • xparsepaquete: \NewDocumentCommand, \RenewDocumentCommand, \ProvideDocumentCommand, \NewDocumentEnvironmenty \ProvideDocumentEnvironmenty \DeclareDocumentEnvironmentson versiones robustas con un mejor manejo de argumentos que \newcommandetc. También hay un expandible \DeclareExpandableDocumentCommand, que debe usarse con cuidado (como se indica en el xparsemanual).

información relacionada