マクロは括弧で囲まずに引数を受け取りますか?

マクロは括弧で囲まずに引数を受け取りますか?

f引数を受け入れるのに中括弧を必要としないマクロを作りたいです。例を考えてみましょう。オプションの引数と引数を受け入れるマクロが欲しいとしますx

\dd[f]{x}

これは次のように書くことと同等です:

\frac{\mathrm{d} f }{\mathrm{d} x }

質問は、括弧を書かなくても引数を受け入れるマクロを作成できるかどうかです。

括弧を使わずに済むと非常に便利です。次のようなものがあれば最高です:

\dd f,x

括弧を書かずに済む方法はありますか?

答え1

この種のマクロはプレーンな TEX 構造であり、「区切りマクロ」と呼ばれます。これは、間違いを起こしやすいという理由から、LaTEX では推奨されていません。

ここにあなたが求めていることを実行する例があります:

\documentclass{article}
\def\dd #1,#2 {\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\thispagestyle{empty}
$\dd f,x $
\end{document}

サンプルコードの出力

入力の2番目の引数の後のスペースを省略すると、

$\dd f,x$

エラーが発生します:

! Missing } inserted.
<inserted text> 
                }
l.5 $\dd f,x$

ただし、明確な「クローザー」がない場合は、引数の認識が単一の入力トークンに制限されます。この例ではそうではありませんが、これは非常に制限的になる可能性があります。

編集: 引数をオプションにできる同様の区切りマクロのリクエストに応えて、その目的に合わせて変更した同じマクロを以下に示します。この特定のケースでは、すべての引数が明確に区切られていることだけが必要です。

\documentclass{article}
\def\dd #1,#2;{\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\[\dd f,x; \quad \dd ,x; \quad \dd ,; \]
\end{document}

サンプルコードの出力

この場合、各引数は 1 つの文字または制御シーケンス (例\phi) のみになる可能性が高いため、引数を省略すると、出力からその引数が省略されるだけです。(例を設定するときに行ったように、コンマの代わりにピリオドを入力しないでください。)

より複雑な状況、つまり複数文字列が引数となるような状況では、引数に句読点が存在する可能性があるため、区切り文字の選択にはより細心の注意を払う必要があります。そのような場合には、@SeanAllred のコメントで提案されているように、影響を受ける引数を中括弧で囲んで、(la)tex への単一の tokan として表示することもできます。

そして、このマクロを数式ではなくテキスト内で使用する場合は、とても拡張時のスペースに注意してください。

関連情報