Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 5

04 Sep '22, 15:50

cpierquet's gravatar image

cpierquet
33614

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
cliquez ici pour masquer/afficher la révision 4
explications supplémentaires

04 Sep '22, 15:49

cpierquet's gravatar image

cpierquet
33614

Création de listes réutilisables par listofitems

<p>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 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 (diagramme 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 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 déjà vu des trucs en `LaTeX3` (mais échec lors de la récupération (ç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> 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
cliquez ici pour masquer/afficher la révision 3
mineure

04 Sep '22, 15:40

denis's gravatar image

denis
7.3k2510

cliquez ici pour masquer/afficher la révision 2
mineure

04 Sep '22, 15:14

denis's gravatar image

denis
7.3k2510

cliquez ici pour masquer/afficher la révision 1

04 Sep '22, 14:51

cpierquet's gravatar image

cpierquet
33614

C'est votre première visite ici ? Consultez la FAQ !

×