誰か、例を挙げてxparse
-expl3
コマンドがどのように機能するかを説明していただけますか? ここで と は重要ですか?\str_case:nnF
str
case
長い(テキストの)回答は避けてください。基本を説明していただければ、どこでも使えると思います。
答え1
できるだけ短く:
\str_case:nnF { <string> }
{
{ <case 1> } { <code 1> }
{ <case 2> } { <code 2> }
...
{ <case n> } { <code n> }
}
{ <false code> }
コマンドは<string>
各<case n>
文字列を順番に比較し、一致するものが見つかった場合は対応するもの<code n>
が実行されます。一致するものが見つからない場合は、<false code>
が実行されます。
例: ユーザーが、、またはなどのオプションを渡すマクロがありabove
、center
そのbelow
マクロが選択されたオプションに応じてコードを実行し、意味のない内容が入力されるとエラーを発生させるとします。
\cs_new_protected:Npn \cfg_test:n #1
{
\str_case:nnF {#1}
{
{ above } { <'above' code> }
{ center } { <'center' code> }
{ below } { <'below' code> }
}
{ \msg_error:nn { cfg } { invalid-option } {#1} }
}
が\cfg_test:n {center}
実行され<'center' code>
、\cfg_test: {wrong}
エラーが発生します (ただし、これがユーザー インターフェイス用である場合は、l3keys
代わりに使用できます)。
アンexpl3
指示(変数は異なります) 形式の名前は次のようになります。
\<module>_<name>:<signature>
は<module>
、そのコマンドがどこから来たのかを示します。は の文字列モジュールstr
なので、 が文字列に対して動作することがわかります。expl3
\str_case:nnF
は<name>
コマンドが何をするかを示します。は、他のプログラミング言語の 構造 として動作する関数にcase
使用されます。の関数expl3
switch case
expl3
\<whatever>_case:nn(TF)
いつもは上記と同じ一般的な構文を持ちます。実行する比較の種類のみが変わります。 \int_case:nnF
たとえば、は同じことを行いますが、整数を比較します。
<signature>
は、コマンドが取る引数の数と種類を示します。はn
通常の{...}
- で区切られた引数であり、F
と同じですn
が、コマンドが と評価された場合に実行されますfalse
(何を意味するか推測してくださいT
)。 を見てください。expl3.pdf
: 可能なすべての署名とカーネルの説明があります<modules>
。次に、interface3.pdf
では、各コマンドの機能についての説明がありますexpl3
。