Что не так с этим макроопределением `\newcommand{\funk}[2]{#1}{-#2}`?

Что не так с этим макроопределением `\newcommand{\funk}[2]{#1}{-#2}`?

Вот MnWE:

\documentclass{minimal}
\usepackage{amsmath}

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

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

Он не компилируется, выдавая сообщение об ошибке:

В горизонтальном режиме нельзя использовать `символ параметра макроса #'. \newcommand{\funk}[2]{#1}{-#

Что не так с командой?

решение1

Theформальная спецификация для\newcommandявляется

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

где *необязательно (подразумевает, \defбудет ли результирующая инициация \longили нет), <cmd>— несуществующая управляющая последовательность, <args>(также необязательно) обозначает количество переданных аргументов, поглощенных <cmd>, <default>— значение по умолчанию необязательного аргумента, если он не указан (когда <args>> 0), и <stuff>— расширение (или текст замены) <cmd>после поглощения аргументов. Каждый аргумент (до 9) заменяется на #<num>для <num>го аргумента ( #1для первого, #2для второго и т. д.).

В вашей настройке

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

\funkпринимает 2аргументы, оба обязательные, а заменяющий текст — это только первый аргумент #1(фактически поглощая второй).

{-#2}не является частью создания управляющей последовательности, а потому расширяется как есть, оставляя -#2во входном потоке (в преамбуле), что не допускается, так как #имеет особое значение — это символ макропараметра.

Вас, вероятно, интересует

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

Связанный контент