summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-10-23 22:04:26 +0000
committerKarl Berry <karl@freefriends.org>2016-10-23 22:04:26 +0000
commit13f9bddf8ef85b40cf1a764004263014132512e8 (patch)
tree01f94aa4cab6a02a9dafa0029cdf0f4aa051c609
parent2f255cfc7d1d821ec94ff7a0c1de5f78f381d01c (diff)
listofitems (23oct16)
git-svn-id: svn://tug.org/texlive/trunk@42335 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/README4
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-en.pdfbin368032 -> 368542 bytes
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-en.tex4
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-fr.pdfbin331528 -> 332234 bytes
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-fr.tex4
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.pdfbin84273 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.tex129
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.pdfbin66594 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.tex143
-rw-r--r--Master/texmf-dist/tex/generic/listofitems/listofitems.tex68
10 files changed, 52 insertions, 300 deletions
diff --git a/Master/texmf-dist/doc/generic/listofitems/README b/Master/texmf-dist/doc/generic/listofitems/README
index b8e7890fd82..fd70040e2ed 100644
--- a/Master/texmf-dist/doc/generic/listofitems/README
+++ b/Master/texmf-dist/doc/generic/listofitems/README
@@ -4,9 +4,9 @@ ___________________________________
listofitems
package
- v1.1
+ v1.2
- 01/09/2016
+ 22/10/2016
___________________________________
Authors : Christian Tellechea, Steven B. Segletes
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-en.pdf b/Master/texmf-dist/doc/generic/listofitems/listofitems-en.pdf
index 7e9bd771b39..9585e81b2a8 100644
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-en.pdf
+++ b/Master/texmf-dist/doc/generic/listofitems/listofitems-en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-en.tex b/Master/texmf-dist/doc/generic/listofitems/listofitems-en.tex
index 765cd29b9a0..2f4b2d5449b 100644
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-en.tex
+++ b/Master/texmf-dist/doc/generic/listofitems/listofitems-en.tex
@@ -198,6 +198,8 @@ as in
\def\List{12,abc, x y ,{\bfseries z}, ,\TeX,,!}
\readlist\foo\List|
+The macro \verb|\greadlist| makes \emph{global} assignments and therefore, enables the use of \verb|<macro-list>| outside of the group where \verb|\greadlist| has been executed.
+
\paragraph{Access an item}
The macro \verb|\foo| \emph{requires} a numeric argument in square brackets,
which we symbolically denote as $i$, indicating the rank of the item
@@ -482,4 +484,6 @@ And returned on the previous night.}
\itemtomacro\poem[2,-4]\word
A word = \word|
+
+The macro \verb|\gitemtomacro| makes a global assignment.
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.pdf b/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.pdf
index af268df94f7..2ba691b6eaa 100644
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.pdf
+++ b/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.tex b/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.tex
index 375327991f8..75e825ea7b6 100644
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.tex
+++ b/Master/texmf-dist/doc/generic/listofitems/listofitems-fr.tex
@@ -146,6 +146,8 @@ Si la \verb|<liste>| est contenue dans une macro, alors cette macro est dévelop
\def\liste{12,abc, x y ,{\bfseries z}, ,\TeX,,!}
\readlist\foo\liste|
+La macro \verb|\greadlist| agit comme \verb|\readlist| mais effectue des assignations \emph{globales} et par conséquent, la \verb|<macroliste>| est utilisable hors du groupe où a été exécutée \verb|\greadlist|.
+
\paragraph{Accéder à un élément}
La macro \verb|\foo| attend un argument numérique \emph{obligatoire} entre crochets, que nous notons $i$ et qui désigne le rang de l'élément auquel on souhaite accéder. Ainsi, \verb|\foo[1]| est\footnote{Il faut 2 développements à \texttt{\textbackslash foo[}$i$\texttt] pour obtenir l'élément \no$i$.} \og\verb|12|\fg. De la même façon, \verb|\foo[4]| est \og\verb|{\bfseries z}|\fg.
@@ -349,4 +351,6 @@ Rêve des chers instants qui la délasseront.}% 2e strophe de << Green >>, Paul
\itemtomacro\poeme[2,-4]\mot
Un mot = \mot|
+
+La macro \verb|\gitemtomacro| fait une assignation globale.
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.pdf b/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.pdf
deleted file mode 100644
index c31b34b935e..00000000000
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.tex b/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.tex
deleted file mode 100644
index 4b3580e7dd5..00000000000
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-latex.tex
+++ /dev/null
@@ -1,129 +0,0 @@
-% Ceci est le fichier de test (pdf)(Xe)(lua)latex de l'entension listofitems
-%
-% Encodage utf8
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% 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 ou dvi DOIT être correctement généré. %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Fichier compilé avec pdflatex
-%
-\documentclass[frenchb]{article}
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[margin=2cm]{geometry}
-\usepackage{listofitems}
-\usepackage{babel}
-\begin{document}
-\parindent=0pt
-{\hfill\huge\bfseries Fichier de test\hfill\null\par}
-\section{Séparateur vide}
-Séparateur 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\ieme{} é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\ieme{} élément = \maliste[2]\par
--1\ieme{} élément = \maliste[-1]\par
--2\ieme{} élément = \maliste[-2]\par
--7\ieme{} élément = \maliste[-7]\par% ERREUR, doit afficher la liste entière
-7\ieme{} é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\ieme{} élément = \foo[2]\par
--1\ieme{} élément = \foo[-1]\par
--5\ieme{} é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\ieme{} élément = \nombres[2]\par
--1\ieme{} élément = \nombres[-1]\par
--5\ieme{} é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 (\char`\;{} et \char`\:{} sont actives)}
-\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
-\renewcommand\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 1\ier{} vers = \showitems\poeme[1]
-Mots du dernier vers = \showitems\poeme[-1]
-4\ieme{} mot du premier vers = "\poeme[1,4]"
-5\ieme{} mot du 3\ieme{} vers = "\poeme[3,5]"
-\medbreak
-
-\textbf{Rimes} :
-\foreachitem\vers\in\poeme{vers \no\verscnt{} : \poeme[\verscnt,-1]\par}
-\endgroup
-\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.pdf b/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.pdf
deleted file mode 100644
index 3019b9c2ad2..00000000000
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.tex b/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.tex
deleted file mode 100644
index 77577c749f2..00000000000
--- a/Master/texmf-dist/doc/generic/listofitems/listofitems-test-tex.tex
+++ /dev/null
@@ -1,143 +0,0 @@
-% Ceci est le fichier de test (pdf)(Xe)(lua)tex de l'entension listofitems
-%
-% Encodage ISO-8859-1
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% 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 ou dvi DOIT être correctement généré. %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Fichier compilé avec pdftex
-%
-\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}\smallbreak}
-\def\expo#1{\penalty10000 \raise0.66667ex \hbox{\loiexpofont#1}}
-\font\loititlefont=ecbx2000 % titre
-\font\loisectionfont=ecbx1400 % 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 (pdftex et etex)}
-\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 (\char`\;{} et \char`\:{} sont actives)}
-\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
diff --git a/Master/texmf-dist/tex/generic/listofitems/listofitems.tex b/Master/texmf-dist/tex/generic/listofitems/listofitems.tex
index c0c5d1eaa5b..558556286eb 100644
--- a/Master/texmf-dist/tex/generic/listofitems/listofitems.tex
+++ b/Master/texmf-dist/tex/generic/listofitems/listofitems.tex
@@ -3,9 +3,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\loiname {listofitems} %
-\def\loiver {1.1} %
+\def\loiver {1.2} %
% %
-\def\loidate {2016/9/01} %
+\def\loidate {2016/10/22} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -27,12 +27,10 @@
% Commentaires, suggestions et signalement de bugs bienvenus !
% Comments, bug reports and suggestions are welcome.
% --------------------------------------------------------------------
-% L'extension listofitems est compos\'ee des 11 fichiers suivants :
+% L'extension listofitems est compos\'ee des 7 fichiers suivants :
% - code : listofitems (.tex et .sty)
% - manuel en francais : listofitems-fr (.tex et .pdf)
% - manuel en anglais : listofitems-en (.tex et .pdf)
-% - test (tex) : listofitems-test-tex (.tex et .pdf)
-% - test (latex) : listofitems-test-latex (.tex et .pdf)
% - fichier lisezmoi : README
% --------------------------------------------------------------------
\expandafter\edef\csname loi_restorecatcode\endcsname{\catcode\number`\_=\number\catcode`\_\relax}
@@ -52,8 +50,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begingroup
\edef\__tempa{\meaning\eTeXversion}\edef\__tempb{\string\eTeXversion}%
-\ifx\__tempa\__tempb\endgroup
-\else\endgroup
+\ifx\__tempa\__tempb
+ \endgroup
+\else
+ \endgroup
\loi_error{You are not using an eTeX engine, listofitems cannot work.}%
\expandafter\loi_restorecatcode\expandafter\endinput
\fi
@@ -89,8 +89,10 @@
\loi_second% si espace en 1er, faux
{\loi_exparg\loi_ifempty{\loi_gobarg#1}% 1 seul token ?
{\begingroup \escapechar`\_
- \if\expandafter\loi_firsttonil\string#1\_nil\expandafter\loi_firsttonil\string\relax\_nil\endgroup\expandafter\loi_first
- \else\endgroup\expandafter\loi_second
+ \if\expandafter\loi_firsttonil\string#1\_nil\expandafter\loi_firsttonil\string\relax\_nil
+ \endgroup\expandafter\loi_first
+ \else
+ \endgroup\expandafter\loi_second
\fi
}
\loi_second% si plusieurs tokens, faux
@@ -110,7 +112,7 @@
%--- macros retirant les espaces extr\^emes
% Voir codes 320 \`a 324 ici --> http://progtex.fr/wp-content/uploads/2014/09/code.txt
-% et pages 339 \`a 343 de "Appredre \`a programmer en TeX"
+% et pages 339 \`a 343 de "Apprendre \`a programmer en TeX"
\long\def\loi_ifspacefirst#1{\expandafter\loi_ifspacefirst_i\detokenize{#10} \_nil}
\long\def\loi_ifspacefirst_i#1 #2\_nil{\loi_ifempty{#1}}
\expandafter\def\expandafter\loi_gobspace\space{}
@@ -143,6 +145,7 @@
\def\nestdepth{1}%
\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
\def\loi_listname{loi_listofsep}%
+ \let\loi_def\def \let\loi_edef\edef \let\loi_let\let
\loi_ifempty{#2}
{\loi_error{Empty list of separators not allowed, "," used}%
\readlist_iv1{,}%
@@ -182,8 +185,14 @@
%%%%%%%%%%%%%%%%%%%%%% macro publique \readlist %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcount\loi_nestcnt
-
+\def\greadlist{%
+ \let\loi_def\gdef \let\loi_edef\xdef \def\loi_let{\global\let}%
+ \loi_nestcnt1 % niveau initial = 1
+ \loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
+ \loi_ifstar{\_removeextremespacestrue\readlist_i}{\_removeextremespacesfalse\readlist_i}%
+}
\def\readlist{%
+ \let\loi_def\def \let\loi_edef\edef \let\loi_let\let
\loi_nestcnt1 % niveau initial = 1
\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
\loi_ifstar{\_removeextremespacestrue\readlist_i}{\_removeextremespacesfalse\readlist_i}%
@@ -196,14 +205,14 @@
\loi_argcsname\def{\loi_listname[]}{#2}% la liste enti\`ere
\loi_argcsname\def{\loi_listname sep[]}{}% s\'eparateur vide
\loi_ifempty{#2}
- {\def#1[##1]{}%
- \loi_argcsname\def{\loi_listname len}{0}\loi_argcsname\def{\loi_listname len[0]}{0}%
+ {\loi_def#1[##1]{}%
+ \loi_argcsname\def{\loi_listname len}{0}\loi_argcsname\loi_def{\loi_listname len[0]}{0}%
\loi_error{Empty list ignored, nothing to do}%
}
- {\edef#1[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolistitem\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname}}%
- \loi_argcsname\edef{\loi_listname sep}[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolistitem\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname sep}}%
+ {\loi_edef#1[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolistitem\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname}}%
+ \loi_argcsname\loi_edef{\loi_listname sep}[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolistitem\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname sep}}%
\readlist_ii{#2}%
- \loi_argcsname\loi_argcsname\let{\loi_listname len}{\loi_listname len[0]}% longueur du niveau 0
+ \loi_argcsname\loi_argcsname\loi_let{\loi_listname len}{\loi_listname len[0]}% longueur du niveau 0
}%
}%
}
@@ -218,9 +227,9 @@
\long\def\readlist_iii#1||#2\_nil#3{\readlist_iv1{#3#1}}% #1=<sep courant simple> #3=liste -> rajoute un \'el\'ement vide pour le test ifempty ci dessous
\long\def\readlist_iv#1#2{% #1=compteur d'index #2=liste d'\'el\'ements \`a examiner
\loi_ifempty{#2}
- {\loi_argcsname\edef{\loi_listname len[\csname loi_previndex[\number\loi_nestcnt]\endcsname0]}{\number\numexpr#1-1\relax}%
+ {\loi_argcsname\loi_edef{\loi_listname len[\csname loi_previndex[\number\loi_nestcnt]\endcsname0]}{\number\numexpr#1-1\relax}%
\advance\loi_nestcnt-1
- \loi_argcsname\let\loi_currentsep{loi_listofsep[\number\loi_nestcnt]}%
+ \loi_argcsname\loi_let\loi_currentsep{loi_listofsep[\number\loi_nestcnt]}%
}
{\loi_expafternil\readlist_vi{#2}{}\_nil\loi_currentsep||\loi_quark||#2\_nil{#1}}% aller isoler le 1er item
}
@@ -250,8 +259,8 @@
\long\def\readlist_x#1#2#3#4{% #1=compteur d'index #2=liste restante #3=\'el\'ement courant #4=sep utilis\'e
\loi_ifnum{0\if_ignoreemptyitems1\fi\loi_ifempty{#3}1{}=11 }
{\readlist_iv{#1}{#2}}% si l'on n'ignore pas les \'el\'ements vides :
- {\loi_argcsname\def{\loi_listname[\csname loi_previndex[\number\loi_nestcnt]\endcsname#1]}{#3}% assignation de l'item ctuel \`a la macro
- \loi_argcsname\def{\loi_listname sep[\csname loi_previndex[\number\loi_nestcnt]\endcsname#1]}{#4}% assignation du <sep> actuel \`a la macro \<macrolist>sep
+ {\loi_argcsname\loi_def{\loi_listname[\csname loi_previndex[\number\loi_nestcnt]\endcsname#1]}{#3}% assignation de l'item ctuel \`a la macro
+ \loi_argcsname\loi_def{\loi_listname sep[\csname loi_previndex[\number\loi_nestcnt]\endcsname#1]}{#4}% assignation du <sep> actuel \`a la macro \<macrolist>sep
\loi_ifnum{\loi_nestcnt<\nestdepth\relax}% si imbrication max non atteinte
{\advance\loi_nestcnt1
\loi_argcsname\edef{loi_previndex[\number\loi_nestcnt]}{\csname loi_previndex[\number\numexpr\loi_nestcnt-1]\endcsname#1,}%
@@ -327,11 +336,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\itemtomacro#1[#2]{% #1[#2]=item non encore lu: #3=macro
\edef\loi_listname{\loi_macroname#1}%
- \loi_exparg{\expandafter\itemtomacro_i\romannumeral\expandafter\loi_normalizeindex\expandafter{\loi_listname}{#2}}{\csname\loi_listname nest\endcsname}%
+ \loi_exparg{\expandafter\itemtomacro_i\romannumeral\expandafter\loi_normalizeindex\expandafter{\loi_listname}{#2}}{\csname\loi_listname nest\endcsname}\let
}
-\def\itemtomacro_i#1#2#3{%
+\def\gitemtomacro#1[#2]{% #1[#2]=item
+ \xdef\loi_listname{\loi_macroname#1}%
+ \loi_exparg{\expandafter\itemtomacro_i\romannumeral\expandafter\loi_normalizeindex\expandafter{\loi_listname}{#2}}{\csname\loi_listname nest\endcsname}{\global\let}%
+}
+\def\itemtomacro_i#1#2#3#4{%
\loi_ifempty{#1}{}{\loi_error{#1}}%
- \loi_argcsname\let#3{\loi_listname[#2]}%
+ \loi_argcsname#3#4{\loi_listname[#2]}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -352,8 +365,11 @@
######################################################################
v1.0 19/8/2016
- - Premi\`ere version publique
+ - Premi\`ere version publique
v1.1 01/09/2016
- - Stockage des s\'eparateurs dans <macrolist>sep
- - bug corrig\'e dans \loi_restorecatcode \ No newline at end of file
+ - Stockage des s\'eparateurs dans <macrolist>sep
+ - bug corrig\'e dans \loi_restorecatcode
+
+v1.2 22/10/2016
+ - macros \greadlist et \gitemtomacro pour la globalit\'e \ No newline at end of file