¿Qué hay de malo en esta definición de macro `\newcommand{\funk}[2]{#1}{-#2}`?

¿Qué hay de malo en esta definición de macro `\newcommand{\funk}[2]{#1}{-#2}`?

Aquí hay un MnWE:

\documentclass{minimal}
\usepackage{amsmath}

\newcommand{\funk}[2]{#1}{-#2}

\begin{document}
    $\funk{x}{2}$
\end{document}

No compila, dándome el mensaje de error:

No puede utilizar el `carácter de parámetro de macro #' en modo horizontal. \newcommand{\funk}[2]{#1}{-#

¿Qué pasa con el comando?

Respuesta1

Elespecificación formal para\newcommandes

\newcommand*{<cmd>}[<args>][<default>]{<stuff>}

donde *es opcional (implica si la \definición resultante será \longo no), <cmd>es una secuencia de control inexistente, <args>(también opcional) denota el número de argumentos pasados ​​engullidos por <cmd>, <default>es el valor predeterminado de un argumento opcional si no se especifica ( cuando <args>> 0) y <stuff>es la expansión (o texto de reemplazo) de <cmd>después de engullir los argumentos. Cada argumento (hasta 9) se reemplaza por #<num>el <num>ésimo argumento ( #1para el primero, #2para el segundo, etc.).

en tu configuración

\newcommand{\funk}[2]{#1}{-#2}

\funktoma 2argumentos, ambos obligatorios y el texto de reemplazo es solo el primer argumento #1(efectivamente engulle el segundo).

{-#2}no forma parte de la creación de la secuencia de control y, por lo tanto, se expande tal cual, dejándose -#2en el flujo de entrada (en el preámbulo), que no está permitido porque #tiene un significado especial: es un carácter de parámetro macro.

Probablemente estés interesado en

\newcommand{\funk}[2]{#1-#2}

información relacionada