¿Aliasing, con o sin argumento?

¿Aliasing, con o sin argumento?

¿Cuál es la forma correcta de asignar un alias a otro comando?

\newcommand*{\keyword}{\emph}

o:

\newcommand*{\keyword}[1]{\emph{#1}}

Aparte de que el segundo es más explícito, ¿existen diferencias reales?

Respuesta1

La diferencia surgirá cuando elaliasEl comando toma un argumento opcional.

\newcommand*\keyword{\othercommand}

podrá manejar cualquier posible argumento opcional. Pero

\newcommand*\keyword[1]{\othercommand{#1}}

solo podrá manejar la situación en la que \othercommandse llame sin un argumento opcional.

En el caso de \emph, esto no es un problema ya que no hay ningún argumento opcional que pueda adoptarse allí. Entonces, cualquier enfoque debería funcionar bien.

Cuando eres estrictamentealias, mi opinión personal sería utilizar la primera

\newcommand*\keyword{\othercommand}

En una situación en la que estoy haciendo algo más que simplemente crear un alias, usaría

\newcommand*\keyword[1]{\othercommand{#1}}

Sólo por dar un ejemplo,

\newcommand*\keyword[1]{`\emph{#1}'}

(aunque lo más probable es que otros objeten que las comillas son innecesarias, \emph solo lo digo como una ilustración de lo que podría significar "más que simplemente un alias").

dejando

Dado que esto surgió en los comentarios, mencionaré algunas cosas sobre \letcómo ejecutar un comando.

A veces desea cambiar el comportamiento predeterminado de una macro LaTeX. Por ejemplo, supongamos que hay una macro definida como

\newcommand*\somecommand[1]{\emph{#1}}

pero le gustaría que se comportara de manera diferente. Entonces podrías simplemente reescribirlo de la siguiente manera:

\renewcommand*\somecommand[1]{\textbf{#1}}

Pero entonces podría encontrarse con una situación en la que realmente le gustaría tener la definición original. En ese caso, antesrenovandoel comando, podrías hacer algo como

\let\oldsomecommand\somecommand
\renewcommand*\somecommand[1]{\textbf{#1}}

Ahora \somecommandse comportará como desee, pero también tiene \oldsomecommandun comando disponible para darle el comportamiento anterior.

En pocas palabras, al escribir \newcommand\keyword{\emph}, \keywordse expandirá a \emph. Al escribir \let\keyword\emph, \keywordse ampliará, no a \emph, sino a la definición de \emph.

Sin embargo, \letno siempre es capaz de capturar todo el poder de un comando que ha sidobendito/malditocon argumentos opcionales. Hay muchas publicaciones en este sitio sobre cómo manejar este tipo de situaciones, así que le señalaré solo algunas aquí:

información relacionada