C’est un classique mais je ne trouve pas. J’ai une commande qui génère une liste de points de R2 et je voudrais exécuter une commande \buildMeshBW du package luamesh sur cette liste.

\documentclass{article}
\usepackage{expl3}
\usepackage{xfp}
\usepackage{luamesh}

\begin{document}
\ExplSyntaxOn
\NewDocumentCommand\testpoints{}{
   \int_set:Nn \l_tmpa_int { 1 }
   \int_do_while:nNnn { \l_tmpa_int} < {6}
   {
      (\fpeval{rand()},\fpeval{rand()});
      \int_incr:N \l_tmpa_int
   }
   (\fpeval{10*rand()},\fpeval{5*rand()})
 }
 \ExplSyntaxOff
 \testpoints
 %\buildMeshBW{\testpoints}
 \end{document}

Une idée ?

Posée 08 Mai '22, 22:54

Maxime's gravatar image

Maxime ♦
1.3k31638
Taux d'acceptation : 58%

mots-clés modifiés 09 Mai '22, 10:58

Le%20TeXnicien%20de%20surface's gravatar image

Le TeXnicien de surface
2.0k814


Voici une idée.

\documentclass{article}
\usepackage{expl3}
\usepackage{xfp}
\usepackage{luamesh}

\begin{document}
\ExplSyntaxOn
\tl_new:N \l_maxime_tl
\NewDocumentCommand\testpoints{}{
    \tl_clear:N \l_maxime_tl
   \int_set:Nn \l_tmpa_int { 1 }
   \int_do_while:nNnn { \l_tmpa_int} < {6}
   {
      \tl_put_right:Nn \l_maxime_tl {(\fpeval{rand()},\fpeval{rand()});}
      \int_incr:N \l_tmpa_int
   }
   \tl_put_right:Nn \l_maxime_tl {(\fpeval{10*rand()},\fpeval{5*rand()})}
   \tl_gset_eq:NN \maximlist \l_maxime_tl
 }
 \ExplSyntaxOff
 \testpoints
 \buildMeshBW{\maximlist}
 \end{document}
Lien permanent

Publiée 09 Mai '22, 10:31

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Merci, l’idée de construire une liste «globale» me convient bien.

(09 Mai '22, 11:06) Maxime ♦ Maxime's gravatar image

ce n'est pas une réponse complète mais un début de piste : utiliser \NewDocumentCommand crée une commande robuste ce qui n'est peut-être pas ce qu'il faudrait ici. Dans le manuel de xparse, on signale une autre commande \NewExpandableDocumentCommand qui ferait peut-être mieux l'affaire. Maintenant si la commande \testpoints n'est pas une commande destinée à être utilisée directement dans le document (et même si d'ailleurs) on peut se tourner vers une des variantes de \cs_new....

Sinon dans le corps, on peut essayer

\expandafter\buildMeshBW\expandafter{\testpoints}

tout cela SGDG ni même de moi d'ailleurs.

Lien permanent

Publiée 09 Mai '22, 09:29

Le%20TeXnicien%20de%20surface's gravatar image

Le TeXnicien de surface
2.0k814
Taux d'acceptation : 28%

1

Merci, j’ai essayé les pistes : je n’ai pas compris s’il fallait cumuler \NewExpandableDocumentCommand et les \expandafter, mais j’ai essayé les différentes combinaisons sans succès.

(09 Mai '22, 10:01) Maxime ♦ Maxime'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.