這個巨集定義`\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

正式規範\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}

相關內容