![¿Qué hay de malo en esta definición de macro `\newcommand{\funk}[2]{#1}{-#2}`?](https://rvso.com/image/370770/%C2%BFQu%C3%A9%20hay%20de%20malo%20en%20esta%20definici%C3%B3n%20de%20macro%20%60%5Cnewcommand%7B%5Cfunk%7D%5B2%5D%7B%231%7D%7B-%232%7D%60%3F.png)
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\newcommand
es
\newcommand*{<cmd>}[<args>][<default>]{<stuff>}
donde *
es opcional (implica si la \def
inición resultante será \long
o 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 ( #1
para el primero, #2
para el segundo, etc.).
en tu configuración
\newcommand{\funk}[2]{#1}{-#2}
\funk
toma 2
argumentos, 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 -#2
en 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}