這是一個 MnWE:
\documentclass{minimal}
\usepackage{amsmath}
\newcommand{\funk}[2]{#1}{-#2}
\begin{document}
$\funk{x}{2}$
\end{document}
它無法編譯,給我錯誤訊息:
在水平模式下不能使用「巨集參數字元#」。 \newcommand{\funk}[2]{#1}{-#
命令有什麼問題?
答案1
\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}