Je cherche un équivalent en LaTeX3 à quelque chose que je vois régulièrement (et qui ne me semble pas très élégant) :

\newcommand\<name>[1]{\def\@<name>{#1}}
\<name>{}

Je voudrais aussi pouvoir « facilement » tester si la commande a été utilisée. On peut penser par exemple à une commande \mail qui permettrait de définir un mail dans un document.

Posée 25 Avr '22, 22:23

Maxime's gravatar image

Maxime ♦
1.3k31638
Taux d'acceptation : 58%

Modifiée 26 Avr '22, 09:43

Pathe's gravatar image

Pathe ♦♦
7.4k29197245


J’ai réussi à faire ça :

\documentclass{standalone}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\tl_new:N \l_mavariable_tl
\NewDocumentCommand{\macro}{m}{
   \tl_set:Nn  \l_mavariable_tl {#1}
}
\NewDocumentCommand{\test}{}{
   %\IfValueT { \l_mavariable_tl} {
   \tl_use:N \l_mavariable_tl %}
 }
\ExplSyntaxOff

\begin{document}
\test
\macro{Coucou}
\test
\macro{}
\test{}
\macro{Coucou2}
\test{}
\end{document}
Lien permanent

Publiée 26 Avr '22, 12:25

Maxime's gravatar image

Maxime ♦
1.3k31638
Taux d'acceptation : 58%

Modifiée 09 Mai '22, 09:21

\tl_set:Nx est dangereux. Pourquoi pas \tl_set:Nn? Et je ne comprend pas le test IfValueT.

(26 Avr '22, 15:12) Ulrike Fischer Ulrike%20Fischer's gravatar image

En effet, le Nx est là car cela provient d’un code plus complexe. Le test est là car dans mon code non ECM, j’ai besoin de tester dans la fonction si la variable est définie (cf. question posée).

(26 Avr '22, 15:17) Maxime ♦ Maxime's gravatar image

IfValueT ne fait rien du tout dans to code. Tu peux mettre \IfValueT { \l_blablub_tl} et ton code fait la meme chose.

(26 Avr '22, 16:43) Ulrike Fischer Ulrike%20Fischer's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.