Comment utiliser la commande expl3 \ str_case: nnF
Quelqu'un pourrait-il expliquer comment xparse- la expl3commande \str_case:nnFfonctionne par un exemple? Sont stret caseimportants ici?
Veuillez éviter les réponses longues (textuelles). Je pense que si vous expliquez les bases, je peux l'utiliser où je veux.
Réponses
Aussi bref que possible:
\str_case:nnF { <string> }
{
{ <case 1> } { <code 1> }
{ <case 2> } { <code 2> }
...
{ <case n> } { <code n> }
}
{ <false code> }
La commande comparera <string>avec chaque <case n>chaîne, dans l'ordre, et si elle trouve une correspondance, la correspondante <code n>est exécutée. Si aucune correspondance n'est trouvée, <false code>est exécuté.
Exemple: supposons que vous avez une macro à laquelle l'utilisateur passe certaines options, par exemple, above, centerou below, et il exécute un code en fonction de l'option choisie, et déclenche une erreur si un non - sens quelque chose est tapé:
\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} }
}
puis \cfg_test:n {center}s'exécuterait <'center' code>et \cfg_test: {wrong}générerait une erreur (bien que si c'était pour une interface utilisateur, cela l3keyspourrait être utilisé à la place).
Une expl3 commande (les variables sont différentes) a un nom de la forme:
\<module>_<name>:<signature>
Le <module>dit d'où vient cette commande: strest expl3le module de chaîne de caractères, vous savez donc qu'il \str_case:nnFfonctionne sur des chaînes.
Le <name>dit ce que fait la commande: caseest utilisé expl3pour les fonctions qui se comportent comme des switch caseconstructions dans d'autres langages de programmation. expl3Les \<whatever>_case:nn(TF)fonctions de ont toujours la même syntaxe générale que ci-dessus: cela ne change que le type de comparaison qu'elles effectuent. \int_case:nnF, par exemple, fait de même mais compare des entiers.
Le <signature>vous indique combien et quel type d'arguments la commande prend. nest un {...}argument délimité normal , et Fest identique à n, mais il est exécuté si la commande est évaluée false(devinez maintenant ce que Tsignifie). Jetez un œil à expl3.pdf: vous trouverez une description de toutes les signatures possibles et du noyau <modules>. Ensuite, jetez un œil à interface3.pdf, où vous trouverez une description de ce que fait chaque expl3commande.