Je cherche à utiliser le système de clés/valeurs d'Expl3 et je veux avoir une valeur par défaut. Je veux aussi affecter une variable globale qui stocke la valeur de ma clé. Ma tentative ne fonctionne pas. Ouvrir dans l'éditeur Overleaf
\documentclass{article} \usepackage{expl3} \usepackage{xparse} \begin{document} \ExplSyntaxOn \tl_new:N \g__matl_tl \keys_define:nn{keylib}{% macle .tl_gset:N = \g__matl_tl, macle .default:n = defaut } \NewDocumentCommand\macommande { o m } { \IfNoValueF {#1} { \keys_set:nn { keylib } { #1 } } Ma~commande~{#2}~et~la~valeur~de~macle~\tl_use:N \g__matl_tl. \tl_clear:N \g__matl_tl } \ExplSyntaxOff \macommande{Test} \end{document} Posée 07 Déc '20, 13:17 Maxime ♦ |
Tu peux faire ce qui suit qui remet la clé Ouvrir dans l'éditeur Overleaf
\NewDocumentCommand\macommande { o m } { \keys_set:nn { keylib } {macle} \IfNoValueF {#1} { \keys_set:nn { keylib } { #1 } } Ma~commande~{#2}~et~la~valeur~de~macle~\tl_use:N \g__matl_tl. \tl_clear:N \g__matl_tl } Dans ce cas, ma solution précédente n'est plus utile. À chaque appel de Essayer Publiée 09 Déc '20, 16:43 Le TeXnicien de surface Plutôt qu'ajouter une réponse supplémentaire pour répondre au commentaire d'une réponse précédente, il est préférable de modifier cette dernière.
(10 Déc '20, 08:22)
denis ♦♦
|
Il faut initialiser la clé quelque part. Avec Ouvrir dans l'éditeur Overleaf
\keys_set:nn { keylib } {macle} placé après la définition, on obtient bien ce que l'on cherche. Publiée 07 Déc '20, 18:53 Le TeXnicien de surface Super merci, mais du coup, il faut que je remette la valeur
(07 Déc '20, 22:52)
Maxime ♦
|
Peut-être confondez-vous valeur par défaut et valeur initiale. La valeur par défaut est la valeur qui est utilisée si la clé est utilisée sans valeur, c'est-à-dire sans mettre de signe d'égalité, c'est-à-dire si on utilise La valeur initiale est la valeur qui est fournie à la variable si la clé n'est pas utilisée par l'utilisateur. Plus précisément, si la clé Je pense qu'ici il faut utiliser la valeur initiale et non la valeur par défaut. Ouvrir dans l'éditeur Overleaf
\documentclass{article} \usepackage{expl3} \usepackage{xparse} \begin{document} \ExplSyntaxOn \tl_new:N \g__matl_tl \keys_define:nn{keylib}{% macle .tl_gset:N = \g__matl_tl, macle .initial:n = defaut } \NewDocumentCommand\macommande { o m } { \IfNoValueF {#1} { \keys_set:nn { keylib } { #1 } } Ma~commande~{#2}~et~la~valeur~de~macle~\tl_use:N \g__matl_tl. \tl_clear:N \g__matl_tl } \ExplSyntaxOff \macommande{Test} \end{document} Publiée 13 Déc '20, 13:20 fpantigny C'est tout à fait ça !! Merci
(14 Déc '20, 17:03)
Maxime ♦
|
Je ne comprends pas le
#1
dans l'argument de la commande\keys_set:nn
.C'est dans l'idée d'avoir plusieurs clés, et donc toutes les traiter.