expl3コマンド\str_case:nnFの使い方

expl3コマンド\str_case:nnFの使い方

誰か、例を挙げてxparse-expl3コマンドがどのように機能するかを説明していただけますか? ここで と は重要ですか?\str_case:nnFstrcase

長い(テキストの)回答は避けてください。基本を説明していただければ、どこでも使えると思います。

答え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>が実行されます。


例: ユーザーが、、またはなどのオプションを渡すマクロがありabovecenterその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使用されます。の関数expl3switch caseexpl3\<whatever>_case:nn(TF)いつもは上記と同じ一般的な構文を持ちます。実行する比較の種類のみが変わります。 \int_case:nnFたとえば、は同じことを行いますが、整数を比較します。

<signature>は、コマンドが取る引数の数と種類を示します。はn通常の{...}- で区切られた引数であり、Fと同じですnが、コマンドが と評価された場合に実行されますfalse(何を意味するか推測してくださいT)。 を見てください。expl3.pdf: 可能なすべての署名とカーネルの説明があります<modules>。次に、interface3.pdfでは、各コマンドの機能についての説明がありますexpl3

関連情報