![O que há de errado com esta definição de macro `\newcommand{\funk}[2]{#1}{-#2}`?](https://rvso.com/image/370770/O%20que%20h%C3%A1%20de%20errado%20com%20esta%20defini%C3%A7%C3%A3o%20de%20macro%20%60%5Cnewcommand%7B%5Cfunk%7D%5B2%5D%7B%231%7D%7B-%232%7D%60%3F.png)
Aqui está um MnWE:
\documentclass{minimal}
\usepackage{amsmath}
\newcommand{\funk}[2]{#1}{-#2}
\begin{document}
$\funk{x}{2}$
\end{document}
Ele não compila, me dando a mensagem de erro:
Você não pode usar `caractere de parâmetro de macro #' no modo horizontal. \newcommand{\funk}[2]{#1}{-#
O que há de errado com o comando?
Responder1
Oespecificação formal para\newcommand
é
\newcommand*{<cmd>}[<args>][<default>]{<stuff>}
onde *
é opcional (implica se a \def
inicialização resultante será \long
ou não), <cmd>
é uma sequência de controle inexistente, <args>
(também opcional) denota o número de argumentos passados devorados por <cmd>
, <default>
é o valor padrão de um argumento opcional se não for especificado ( quando <args>
> 0) e <stuff>
é a expansão (ou texto de substituição) de <cmd>
depois de engolir os argumentos. Cada argumento (até 9) é substituído por #<num>
para o <num>
décimo argumento ( #1
para o primeiro, #2
para o segundo e assim por diante).
Na sua configuração
\newcommand{\funk}[2]{#1}{-#2}
\funk
recebe 2
argumentos, ambos obrigatórios e o texto de substituição é apenas o primeiro argumento #1
(efetivamente engolindo o segundo).
{-#2}
não faz parte da criação da sequência de controle e, portanto, é expandido como está, deixando -#2
no fluxo de entrada (no preâmbulo), o que não é permitido porque #
tem um significado especial - é um caractere de parâmetro de macro.
Você provavelmente está interessado em
\newcommand{\funk}[2]{#1-#2}