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}