![このマクロ定義 `\newcommand{\funk}[2]{#1}{-#2}` の何が問題なのでしょうか?](https://rvso.com/image/370770/%E3%81%93%E3%81%AE%E3%83%9E%E3%82%AF%E3%83%AD%E5%AE%9A%E7%BE%A9%20%60%5Cnewcommand%7B%5Cfunk%7D%5B2%5D%7B%231%7D%7B-%232%7D%60%20%E3%81%AE%E4%BD%95%E3%81%8C%E5%95%8F%E9%A1%8C%E3%81%AA%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.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>
、は指定されていない場合( > 0 の場合)<default>
のオプション引数のデフォルト値、 は引数を初期化した後の の展開(または置換テキスト)です。 各引数(最大 9 個)は、番目の引数に対してに置き換えられます(最初の引数に対して 、2 番目の引数に対して など)。<args>
<stuff>
<cmd>
#<num>
<num>
#1
#2
あなたの設定で
\newcommand{\funk}[2]{#1}{-#2}
\funk
引数は2
必須であり、置換テキストは最初の引数のみです#1
(実質的に 2 番目の引数を飲み込みます)。
{-#2}
制御シーケンス作成の一部を形成しないため、そのまま展開され、-#2
入力ストリーム (プリアンブル内) に残ります。これは#
特別な意味を持つため許可されません。マクロ パラメーター文字です。
おそらくあなたは興味があるでしょう
\newcommand{\funk}[2]{#1-#2}