Вот 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}