
LaTeX では、 のような式を書くことができます\frac12
。これは、 のような式と同等です\frac{1}{2}
。最初の表記法の正式な用語はありますか?
答え1
いいえ。
これは、TeXが区切りのないマクロ引数を吸収する通常の方法の一部です。
\def\foo#1{Something using #1 (or not).}
または同等
\newcommand\foo[1]{Something using #1 (or not).}
が展開されると、入力ストリーム内の次のトークンまたはバランスの取れたグループが引数として吸収されます(定義で\foo
利用可能なもの)。通常のカテゴリコードを想定すると#1
- トークンは、単一の文字(
\
、、、またはスペースや改行(これらは無視されるため)を除く)またはコマンドシーケンス(で始まるもの)です{
。}
%
\
- バランスの取れたグループは、別のグループ (後で開始したグループ) に属さない
{
最初のグループで始まり、最初のグループで終わります。吸収時に中括弧はグループから削除されます (つまり、中括弧は含まれません)。}
#1
\foo x
これが、および\foo{x}
、\newcommand{\foo}
または、、およびが同等\newcommand\foo
である理由です。\frac 12
\frac{1}{2}
\frac{1}2
\frac1 2
最も明確なバージョンを選択するのがよい方法です。通常はグループを使用することを意味します。個人的には、次のような場合にはグループを明示的に省略します。しなければならないのような単一のトークンを入力します\newcommand\foo
。
答え2
LaTeX3/ では、単一トークンの引数と中括弧内の引数の区別がより明確になっていることも付け加えておく価値があるかもしれませんexpl3
。慣例により、すべてのexpl3
マクロ名は で終わり、:
その後に引数指定子と呼ばれる一連の文字が続き、各文字は対応する引数の型を反映します。
他にもたくさんあります
n
括弧付きグループまたは単一トークン引数の場合、およびN
単一トークン引数のみ、通常はマクロ/関数名または変数名。
これらの指定子は、(La)TeX が個々の引数を処理する方法を変更するものではありませんが、マクロ内で引数がどのように使用されるかについてのヒントをユーザーに提供します。
たとえば、パッケージにはと のl3tl
2 つの関数が用意されています。どちらの関数もトークン リストが空かどうかをチェックし、条件付きでコードを実行しますが、前者は中括弧で囲まれたトークンのグループで呼び出されることが想定されており、後者はトークン リスト変数が最初に展開されてからその内容のテストが実行されることが想定されています。\tl_if_empty:nTF
\tl_if_empty:NTF