summaryrefslogtreecommitdiff
path: root/macros/generic/listofitems/test/listofitems-test-tex.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/listofitems/test/listofitems-test-tex.tex')
-rw-r--r--macros/generic/listofitems/test/listofitems-test-tex.tex140
1 files changed, 140 insertions, 0 deletions
diff --git a/macros/generic/listofitems/test/listofitems-test-tex.tex b/macros/generic/listofitems/test/listofitems-test-tex.tex
new file mode 100644
index 0000000000..f2cfb0ac6e
--- /dev/null
+++ b/macros/generic/listofitems/test/listofitems-test-tex.tex
@@ -0,0 +1,140 @@
+% !TeX TS-program = luatex
+% Ceci est le fichier de test (pdf)(Xe)(lua)tex de l'entension listofitems
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Mise en garde : lorsqu'il est compilé, ce fichier DOIT générer des erreurs aux %
+% endroits où figure "ERREUR" dans le code source. %
+% Ces erreurs sont émises par l'extension listofitems lorsqu'un %
+% argument ou un index est erroné et qu'une solution est %
+% prévue. %
+% Le fichier pdf DOIT être généré. %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\hsize = \dimexpr 21cm - 2in \relax
+\vsize = \dimexpr 29.7cm - 2in \relax
+
+\input listofitems.tex
+
+\newcount\sectioncnt
+\def\section#1{\advance \sectioncnt1 \bigbreak{\loisectionfont \the\sectioncnt\quad #1\par}\smallbreak}
+\def\expo#1{\penalty10000 \raise0.66667ex \hbox{\loiexpofont#1}}
+\font\loititlefont=ecbx2000 % titre
+\font\loisectionfont=ecbx1200 % section
+\font\loiexpofont=ecrm1000 at 8pt % exposant
+\font\loitextfont=ecrm1000 % texte
+\font\loitextfontbf=ecbx1000 % gras
+
+\catcode`\;=13 \def;{\unskip\penalty10000 \ \string;}% caractères actifs de ponctuation française
+\catcode`\:=13 \def:{\unskip\penalty10000 \ \string:}
+
+%%%%% DÉBUT DU DOCUMENT
+\loitextfont
+\parindent=0pt
+\centerline{\loititlefont Fichier de test (luatex)}
+\par\vskip1.5cm
+
+\section{Séparateur vide}
+Separateur vide :\setsepchar{}% ERREUR : le séparateur "," est pris par défaut
+\readlist\castordu{a aa, b , c cc }
+\showitems\castordu
+
+\section{Liste vide}
+Liste vide :\setsepchar{*}
+\readlist\listevide{}% ERREUR
+Showitems = \showitems\listevide\par% ne donne rien, pas d'erreur
+3\expo{e} élément = \listevide[3]\par% ne donne rien, pas d'erreur
+Longueur = \listevidelen% affiche 0
+
+\section{Cas standard}
+\setsepchar{+}
+Lecture par défaut,\readlist\maliste{123+ 456 + ++\par+{+}+* *}
+showitems = \showitems*\maliste
+
+Lecture sans élément vide,\ignoreemptyitems
+\readlist\maliste{123+ 456 + ++\par+{+}+* *}
+showitems = \showitems*\maliste
+
+Lecture sans élément vide ni espace extrêmes,\ignoreemptyitems
+\readlist*\maliste{123+ 456 + ++\par+{+}+* *}
+showitems = \showitems*\maliste
+
+Longueur = \malistelen\par
+liste entière = \maliste[]\par
+2\expo{e} élément = \maliste[2]\par
+-1\expo{e} élément = \maliste[-1]\par
+-2\expo{e} élément = \maliste[-2]\par
+-7\expo{e} élément = \maliste[-7]\par% ERREUR, doit afficher la liste entière
+7\expo{e} élément = \maliste[7]% ERREUR, doit afficher la liste entière
+
+\section{Séparateur = \char`\\par}
+\def\laliste{a b c \par def\par\par xyz}
+\reademptyitems
+\setsepchar{\par}
+Lecture par défaut, \readlist\maliste\laliste
+showitems = \showitems\maliste
+
+Lecture sans élément vide, \ignoreemptyitems
+\readlist\maliste\laliste
+showitems = \showitems\maliste
+
+\section{Séparateur = caractère actif}
+\begingroup
+\catcode`\!=13 \def!{|}
+\setsepchar{!}
+\readlist\foo{!1 ! 2 !! 3!}
+Showitems = \showitems\foo\par
+liste entière = \foo[]\par
+2\expo{e} élément = \foo[2]\par
+-1\expo{er} élément = \foo[-1]\par
+-5\expo{e} élément = \foo[-5]\par% ERREUR, doit afficher la liste entière
+\endgroup
+
+\section{Séparateurs = +\quad -\quad *\quad /}
+\setsepchar[.]{+||-||*||/}
+\def\expression{3 + 2*7 - 4*9/5 - 1}
+\readlist*\nombres\expression
+Showitems = \showitems\nombres\par
+liste entière = \nombres[]\par
+Longueur = \nombreslen\par
+2\expo{e} élément = \nombres[2]\par
+-1\expo{e} élément = \nombres[-1]\par
+-5\expo{e} élément = \nombres[-5]
+
+\section{Séparateurs = \char`\&{} et \char`\\\char `\\}
+\setsepchar{\\/&}
+\readlist\foo{1 & 2 & 3\\ a & b& \\ x & & z}
+Showitems[] = \showitems*\foo\par
+Showitems[2] = \showitems*\foo[2]\par
+Showitems[2,1] = \showitems*\foo[2,1]\par% ERREUR : trop grande profondeur
+Foreachitem = \foreachitem\myitem\in\foo[3]{\myitemcnt = "\myitem"\qquad}\par
+élément [-2,-3] = "\foo[-2,-3]"\par
+
+\section{Séparateurs = \char`\^\char`\^M actif et ponctuations}
+\begingroup
+\obeylines
+\ignoreemptyitems
+\setsepchar{^^M/ ||,||'||-||:||;||.}%
+\readlist\poeme{C'est un trou de verdure où chante une rivière,
+Accrochant follement aux herbes des haillons
+D'argent ; où le soleil, de la montagne fière,
+Luit : c'est un petit val qui mousse de rayons.}% « Le dormeur du val », Arthur Rimbaud
+\begingroup% dans ce groupe
+\def\showitemsmacro#1{% aller à la ligne (\par) après chaque élément
+ \begingroup\fboxsep=0.25pt \fboxrule=0.5pt \fbox{\strut#1}\endgroup\par
+}
+Showitems[] =
+\showitems\poeme
+\endgroup% revenir à la macro \showitemsmacro par défaut
+\medbreak
+
+Nombre de vers = \poemelen{} ou \listlen\poeme[]
+Mots du 1er vers = \showitems\poeme[1]
+Mots du dernier vers = \showitems\poeme[-1]
+4\expo{e} mot du premier vers = "\poeme[1,4]"
+5\expo{e} mot du 3e vers = "\poeme[3,5]"
+\medbreak
+
+{\loitextfontbf Rimes} :
+\foreachitem\vers\in\poeme{vers n\expo{\unkern o}\verscnt{} : \poeme[\verscnt,-1]\par}
+\endgroup
+\bye \ No newline at end of file