![這個巨集定義`\newcommand{\funk}[2]{#1}{-#2}`有什麼問題?](https://rvso.com/image/370770/%E9%80%99%E5%80%8B%E5%B7%A8%E9%9B%86%E5%AE%9A%E7%BE%A9%60%5Cnewcommand%7B%5Cfunk%7D%5B2%5D%7B%231%7D%7B-%232%7D%60%E6%9C%89%E4%BB%80%E9%BA%BC%E5%95%8F%E9%A1%8C%EF%BC%9F.png)
這是一個 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}