Création de listes réutilisables par listofitems
<p>J'ai J'ai un petit souci qui me chagrine car je pense que je ne suis pas très loin, mais je coince (peut-être des problèmes de résultats développables mais je ne m'y connais pas assez...)</p>
<p>Donc assez...)
Donc je m'explique, je voudrais pouvoir créer une commande pour générer des nombres aléatoires, les ranger dans l'ordre croissant, et pouvoir les déclarer comme liste compréhensible par <code>listofitems</code>... pour après la traiter comme paramètres d'une série statistique en accédant aux éléments par leur index (l'idée serait de générer une liste de 5 nombres := min/Q1/med/Q3/max ordonnés du coup, et tracer un diagramme en boîte à moustaches...)</p>
<p>Pour moustaches...)
Pour le moment :</p>
:
<ul>
<li>je peux générer une liste d'entiers, en lua, avec <code>\makeSimpleRandomNumberList</code> ;</li>
<li>je peux traiter cette liste avec <code>listofitems</code> ;</li>
<li>je peux ranger cette liste dans l'ordre croissant, avec <code>datatool</code> ;</li>
<li>je ne peux pas exploiter l'ordre croissant avec <code>listofitems</code>...</li>
</ul>
<p>J'ai J'ai déjà vu des trucs en `LaTeX3` (ça génére très bien les nombres, mais je ne peux pas récupéer le résultat par `listofitems`), des trucs avec `etoolbox`... bref je tourne en rond, et ça m'agace un peu...</p>
peu...
Si des solutions alternatives existent, je suis preneur !
<pre><code>% !TeX TS-program = lualatex
\documentclass[a4paper,11pt]{article}
\usepackage[margin=1.5cm]{geometry}
\usepackage{xinttools}
\usepackage{multido}
\usepackage{listofitems}
\usepackage{xfp}
\usepackage{luarandom}
\usepackage{etoolbox}
\usepackage{datatool}
\setlength{\parindent}{0pt}
\usepackage{siunitx}
\begin{document}
\part{Test}
\newcommand\CreationListe[4][/]{
\makeSimpleRandomNumberList{#2}{#3}{#4}%
\def\ListeEntiersAleatoires{\getNumberFromList{1}}
\xintFor* ##1 in {\xintSeq{1}{\inteval{#4-1}}}\do{%
\appto\ListeEntiersAleatoires{#1\getNumberFromList{##1}}}
}
\newcommand\CreationListeNonRepet[4][/]{
\makeRandomNumberList{#2}{#3}{#4}%
\def\ListeEntiersAleatoires{\getNumberFromList{1}}
\xintFor* ##1 in {\xintSeq{1}{\inteval{#4-1}}}\do{%
\appto\ListeEntiersAleatoires{#1\getNumberFromList{##1}}}
}
\dtlexpandnewvalue%
\DTLgnewdb{teqstordrecroissant}%
\DTLcleardb{teqstordrecroissant}
%on lance la génération
\CreationListe[/]{0}{50}{10}
%on stocke le résultat
\edef\foo{\ListeEntiersAleatoires}
Affichage de la liste générée : \foo
\medskip
%gestion par listofitems
\setsepchar[.]{/}
\readlist*\FOO\foo
Affichage de la liste traitée par listofitems : \showitems{\FOO}
\medskip
\foreachitem\x\in\FOO{%
\DTLnewrow{teqstordrecroissant}%
\xdef\toto{\FOO[\xcnt]}%
\DTLnewdbentry{teqstordrecroissant}{numeric}{\toto}
}
\dtlsort{numeric}{teqstordrecroissant}{\dtlicompare}
\def\ListeEntiersAleatoiresCroissant{%
\DTLforeach{teqstordrecroissant}{\numeroDonnee=numeric}%
{\num{\numeroDonnee}\DTLiflastrow{}{/}}
}%
Affichage de la liste générée et triée : \ListeEntiersAleatoiresCroissant
\medskip
\setsepchar[.]{/}
\readlist*\FOOC\ListeEntiersAleatoiresCroissant
Affichage de la liste triée et traitée par listofitems : \showitems{\FOOC} ?
\medskip
\end{document}
</code></pre>
![alt text][1]
[1]: https://img.cpierquet.fr/datatool_listofitems.png