texlive[41921] Master: listofitems.tex in runtime

commits+karl at tug.org commits+karl at tug.org
Thu Aug 25 00:51:18 CEST 2016


Revision: 41921
          http://tug.org/svn/texlive?view=revision&revision=41921
Author:   karl
Date:     2016-08-25 00:51:18 +0200 (Thu, 25 Aug 2016)
Log Message:
-----------
listofitems.tex in runtime

Modified Paths:
--------------
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/generic/listofitems/listofitems.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/generic/listofitems/listofitems.tex

Deleted: trunk/Master/texmf-dist/doc/generic/listofitems/listofitems.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/listofitems/listofitems.tex	2016-08-24 22:48:07 UTC (rev 41920)
+++ trunk/Master/texmf-dist/doc/generic/listofitems/listofitems.tex	2016-08-24 22:51:18 UTC (rev 41921)
@@ -1,352 +0,0 @@
-% Ce fichier contient le code de l'extension "listofitems"
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                    %
-\def\loiname                 {listofitems}                           %
-\def\loiver                      {1.0}                               %
-%                                                                    %
-\def\loidate                  {2016/8/20}                            %
-%                                                                    %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% --------------------------------------------------------------------
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-%
-% %     http://www.latex-project.org/lppl.txt
-%
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% --------------------------------------------------------------------
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Christian Tellechea
-% email: unbonpetit at openmailbox.org
-%        Commentaires, suggestions et signalement de bugs bienvenus !
-%        Comments, bug reports and suggestions are welcome.
-% --------------------------------------------------------------------
-% L'extension listofitems est compos\'ee des 11 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\string_restorecatcode\endcsname{\catcode\number`\_=\number\catcode`\_\relax}
-\catcode`\_11
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%% gestion des erreurs %%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ifdefined\PackageError
-	\def\loi_error#1{\PackageError\loiname{#1}{Read the manual}}% pour LaTeX
-\else
-	\def\loi_error#1{\errmessage{Package \loiname\space Error: #1^^J}}% pour TeX
-\fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%% v\'erification de la pr`'esence de etex %%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begingroup
-\edef\__tempa{\meaning\eTeXversion}\edef\__tempb{\string\eTeXversion}%
-\ifx\__tempa\__tempb\endgroup
-\else\endgroup
-	\loi_error{You are not using an eTeX engine, listofitems cannot work.}%
-	\expandafter\loi_restorecatcode\expandafter\endinput
-\fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%% macros auxiliaires %%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%---- macros de d\'eveloppement et de manipulation d'arguments
-\chardef\loi_stop=0
-\def\loi_quark{\loi_quark}
-\long\def\loi_identity#1{#1}
-\def\loi_gobarg#1{}
-\long\def\loi_first#1#2{#1}
-\long\def\loi_second#1#2{#2}
-\long\def\loi_firsttonil#1#2\_nil{#1}
-\long\def\loi_antefi#1#2\fi{#2\fi#1}
-\long\def\loi_swaparg#1#2{#2{#1}}
-\long\def\loi_exparg#1#2{\expandafter\loi_swaparg\expandafter{#2}{#1}}
-\long\def\loi_expafternil#1\_nil{\begingroup\def\loi_temp{\endgroup#1}\expandafter\loi_temp}
-\def\loi_macroname{\loi_ifinrange\escapechar[[0:255]]{\expandafter\loi_gobarg}{}\string}
-\def\loi_argcsname#1#{\begingroup\def\loi_temp{\endgroup#1}\loi_argcsname_i}
-\def\loi_argcsname_i#1{\expandafter\loi_temp\csname#1\endcsname}
-
-%--- macros de test
-\long\def\loi_ifnum#1{\ifnum#1\expandafter\loi_first\else\expandafter\loi_second\fi}
-\long\def\loi_ifx#1{\ifx#1\expandafter\loi_first\else\expandafter\loi_second\fi}
-\long\def\loi_ifempty#1{\loi_exparg\loi_ifx{\expandafter\relax\detokenize{#1}\relax}}
-\def\loi_ifstar#1#2{\def\loi_ifstar_i{\loi_ifx{*\loi_nxttok}{\loi_first{#1}}{#2}}\futurelet\loi_nxttok\loi_ifstar_i}
-\long\def\loi_ifcs#1{% #1 est-il une sc ?
-	\loi_ifempty{#1}
-		\loi_second% si #1 est vide, faux
-		{\loi_ifspacefirst{#1}
-			\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
-					\fi
-				}
-				\loi_second% si plusieurs tokens, faux
-			}%
-		}%
-}
-\def\loi_ifinrange#1[[#2:#3]]{\loi_ifnum{\numexpr(#1-#2)*(#1-#3)>0 }\loi_second\loi_first}
-
-%--- macro de type for
-%      Voir codes 150 \`a 155 ici --> http://progtex.fr/wp-content/uploads/2014/09/code.txt
-%      et pages 175 \`a 184 du livre "Apprendre \`a programmer en TeX"
-\def\loi_fornum#1=#2to#3\do{%
-	\edef#1{\number\numexpr#2}\edef\loi_sgncmp{\ifnum#1<\numexpr#3\relax>+\else<-\fi}%
-	\loi_argcsname\loi_fornum_i{loi_fornum_\string#1\expandafter}\expandafter{\number\numexpr#3\expandafter}\loi_sgncmp#1%
-}
-\long\def\loi_fornum_i#1#2#3#4#5#6{\def#1{\unless\ifnum#5#3#2\relax\loi_antefi{#6\edef#5{\number\numexpr#5#41\relax}#1}\fi}#1}
-
-%--- 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"
-\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{}
-\def\loi_removefirstspaces{\romannumeral\loi_removefirstspaces_i}
-\long\def\loi_removefirstspaces_i#1{\loi_ifspacefirst{#1}{\expandafter\loi_removefirstspaces_i\expandafter{\loi_gobspace#1}}{\loi_stop#1}}
-\edef\loi_restorezerocatcode{\catcode0=\number\catcode0 \relax}
-\catcode0 12
-\long\def\loi_removelastspaces#1{\romannumeral\loi_removelastspaces_i#1^^00 ^^00\_nil}
-\long\def\loi_removelastspaces_i#1 ^^00{\loi_removelastspaces_ii#1^^00}
-\long\def\loi_removelastspaces_ii#1^^00#2\_nil{\loi_ifspacefirst{#2}{\loi_removelastspaces_i#1^^00 ^^00\_nil}{\loi_stop#1}}
-\loi_restorezerocatcode
-\long\def\loi_removeextremespaces#1{% #1=texte o\`u les espaces extr\^emes sont retir\'es
-	\romannumeral\expandafter\expandafter\expandafter\loi_removelastspaces\expandafter\expandafter\expandafter
-	{\expandafter\expandafter\expandafter\loi_stop\loi_removefirstspaces{#1}}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%% macro publique \setsepchar %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\setsepchar{\futurelet\loi_nxttok\setsepchar_i}
-\def\setsepchar_i{\loi_ifx{[\loi_nxttok}\setsepchar_ii{\setsepchar_ii[/]}}
-\long\def\setsepchar_ii[#1]#2{% #1=sepcar de <liste des sepcar>  #2=<liste des sepcar>
-	\loi_ifempty{#1}
-		{\loi_error{Empty separator not allowed, separator "/" used}%
-		\setsepchar_ii[/]{#2}%
-		}
-		{\def\loi_currentsep{#1}%
-		\_removeextremespacesfalse
-		\loi_nestcnt1 % r\'einitaliser niveau initial \`a 1
-		\def\nestdepth{1}%
-		\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
-		\def\loi_listname{loi_listofsep}%
-		\loi_ifempty{#2}
-			{\loi_error{Empty list of separators not allowed, "," used}%
-			\readlist_iv1{,}%
-			}
-			{\readlist_iv1{#2}}%
-		\loi_argcsname\let\nestdepth{loi_listofseplen[0]}%
-		\loi_argcsname\let\loi_currentsep{loi_listofsep[1]}% 1er car de s\'eparation
-		}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%% macro normalisant l'index %%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\loi_normalizeindex#1#2#3{% #1=macroname  #2=liste d'index  #3=profondeur max --> renvoie {err}{indx norm}
-	\loi_ifempty{#2}
-		{\loi_stop{}{}}
-		{\loi_normalizeindex_i1{}{#3}{#1}#2,\loi_quark,}%
-}%
-\def\loi_normalizeindex_i#1#2#3#4#5,{% #1=compteur de profondeur #2=index pr\'ec\'edents  #3=profondeur max #4=macroname  #5=index courant
-	\loi_ifx{\loi_quark#5}
-		{\loi_normalizeindex_iii#2\loi_quark}% supprimer la derni\`ere virgule
-		{\loi_ifnum{#1>#3 }
-			{\loi_invalidindex{Too deeply nested index, index [.] retained}{#2}}% si profondeur trop grande
-			{\loi_ifinrange\ifnum\numexpr#5<0 -1*\fi(#5)[[1:\csname #4len[#20]\endcsname]]% si abs(#5) hors de [1,len]
-				{\loi_exparg\loi_normalizeindex_ii{\number\numexpr#5\ifnum\numexpr#5<0 +\csname #4len[#20]\endcsname+1\fi}{#1}{#2}{#3}{#4}}
-				{\loi_invalidindex{#5 is an invalid index, index [.] retained}{#2}}%
-			}%
-		}%
-}
-\def\loi_normalizeindex_ii#1#2#3{\loi_exparg\loi_normalizeindex_i{\number\numexpr#2+1}{#3#1,}}% #1=index \`a rajouter  #2=compteur de profondeur #3=index pr\'ec\'edents
-\def\loi_normalizeindex_iii#1,\loi_quark{\loi_stop{}{#1}}
-\def\loi_invalidindex#1#2{\loi_ifempty{#2}{\loi_invalidindex_i{#1},}\loi_invalidindex_i{#1}{#2}}
-\def\loi_invalidindex_i#1#2{\loi_invalidindex_ii#1\loi_quark#2\loi_quark}
-\def\loi_invalidindex_ii#1[.]#2\loi_quark#3,\loi_quark#4\loi_quark,{\loi_stop{#1[#3]#2}{#3}}% #4= index ignor\'es
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%% macro publique \readlist %%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcount\loi_nestcnt
-
-\def\readlist{%
-	\loi_nestcnt1 % niveau initial = 1
-	\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
-	\loi_ifstar{\_removeextremespacestrue\readlist_i}{\_removeextremespacesfalse\readlist_i}%
-}
-\long\def\readlist_i#1#2{% #1=macro stockant les \'el\'ements  #2=liste des \'el\'ements
-	\loi_ifcs{#2}
-		{\loi_exparg{\readlist_i#1}{#2}}
-		{\edef\loi_listname{\loi_macroname#1}%
-		\loi_argcsname\let{\loi_listname nest}\nestdepth
-		\loi_argcsname\def{\loi_listname[]}{#2}% la liste enti\`ere
-		\loi_ifempty{#2}
-			{\def#1[##1]{}%
-			\loi_argcsname\def{\loi_listname len}{0}\loi_argcsname\def{\loi_listname len[0]}{0}%
-			\loi_error{Empty list ignored, nothing to do}%
-			}
-			{\edef#1[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolist\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname}}%
-			\readlist_ii{#2}%
-			\loi_argcsname\loi_argcsname\let{\loi_listname len}{\loi_listname len[0]}% longueur du niveau 0
-			}%
-		}%
-}
-\def\loi_auxmacrolist#1#2#3{%
-	\expandafter\expandafter\expandafter\loi_stop\csname#3[#2]\expandafter\endcsname
-	\romannumeral\loi_ifempty{#1}{\loi_stop}{\loi_stop\loi_error{#1}}%
-}
-\def\readlist_ii{%
-	\loi_argcsname\let\loi_currentsep{loi_listofsep[\number\loi_nestcnt]}%
-	\expandafter\readlist_iii\loi_currentsep||\_nil
-}
-\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}%
-		\advance\loi_nestcnt-1
-		\loi_argcsname\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
-}
-\long\def\readlist_v#1#2{\readlist_vi{#2}{}#1||\loi_quark||#2\_nil}% #1=liste s\'eparateurs (s\'ep=||)  #2=chaine de tokens
-\long\def\readlist_vi#1#2#3||{% #1=liste restante   #2=dernier <sep utile>  #3=<sep courant>
-	\loi_ifx{\loi_quark#3}
-		{\loi_ifempty{#2}% si #1 vide, aucun <sep utile> n'a \'et\'e trouv\'e, il reste \`a lire "<liste compl\`ete>\_nil"
-			{\long\def\readlist_vii##1\_nil##2{\loi_exparg{\readlist_ix{##2}{}}{\loi_gobarg##1}}}% ##2=compteur d'index
-			{\long\def\readlist_vii##1#2{\loi_exparg\readlist_viii{\loi_gobarg##1}\relax}%
-			\long\def\readlist_viii##1##2\_nil##3{\loi_exparg{\readlist_ix{##3}}{\loi_gobarg##2}{##1}}% ##3=compteur d'index
-			}%
-		\readlist_vii\relax% le \relax meuble l'argument d\'elimit\'e
-		}
-		{\long\def\readlist_vii##1#3##2\_nil{%
-			\loi_ifempty{##2}% si <liste restante> ne contient pas le <sep courant>
-				{\readlist_vi{#1}{#2}}% recommencer avec le m\^eme <sep utile>
-				{\readlist_vi{##1#3}{#3}}% sinon raccourcir <liste restante> et <sep courant>:=<sep utile>
-			}%
-		\readlist_vii#1#3\_nil
-		}%
-}
-\long\def\readlist_ix#1#2#3{% #1=compteur d'index  #2=liste restante  #3=\'el\'ement courant
-	\loi_ifnum{0\loi_exparg\loi_ifspacefirst{\loi_currentsep}{}1\if_removeextremespaces1\fi=11 }% s'il faur retirer les espaces extr\^emes
-		{\loi_exparg{\loi_exparg{\readlist_x{#1}{#2}}}{\loi_removeextremespaces{#3}}}% red\'efinir l'\'el\'ement courant
-		{\readlist_x{#1}{#2}{#3}}%
-}
-\long\def\readlist_x#1#2#3{% #1=compteur d'index  #2=liste restante  #3=\'el\'ement courant
-	\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_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,}%
-			\readlist_ii{#3}% recommencer avec l'\'el\'ement courant
-			}
-			{}%
-		\loi_exparg\readlist_iv{\number\numexpr#1+1}{#2}% puis chercher l'\'el\'ement suivant dans la liste restante
-		}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%% macro \listlen %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\listlen#1[#2]{%
-	\romannumeral\loi_ifempty{#2}
-		{\expandafter\expandafter\expandafter\loi_stop\csname\loi_macroname#1len[0]\endcsname}
-		{\loi_exparg\listlen_i{\romannumeral-`\.\loi_macroname#1}{#2}}%
-}
-\def\listlen_i#1#2{% #1=macro name   #2=index non normalis\'e    prendre <profondeur max-1>
-	\loi_exparg{\expandafter\listlen_ii\romannumeral\loi_normalizeindex{#1}{#2}}{\number\numexpr\csname#1nest\endcsname-1}{#1}%
-}
-\def\listlen_ii#1#2#3{% #1=err   #2=index normalis\'e  #3=macroname
-	\expandafter\expandafter\expandafter\loi_stop\csname#3len[#2,0]\expandafter\endcsname
-	\romannumeral\loi_ifempty{#1}{\loi_stop}{\loi_stop\loi_error{#1}}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%% macro \foreachitem %%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\foreachitem#1\in#2{%
-	\edef\foreachitem_i{\noexpand\foreachitem_iii\noexpand#1{\expandafter\noexpand\csname\loi_macroname#1cnt\endcsname}{\loi_macroname#2}}%
-	\futurelet\loi_nxttok\foreachitem_ii
-}
-\def\foreachitem_ii{\loi_ifx{\loi_nxttok[}\foreachitem_i{\foreachitem_i[]}}
-\def\foreachitem_iii#1#2#3[#4]{% prendre <profondeur max-1>
-	\loi_exparg{\expandafter\foreachitem_iv\romannumeral\loi_normalizeindex{#3}{#4}}{\number\numexpr\csname#3nest\endcsname-1}#1{#2}{#3}%
-}
-\def\foreachitem_iv#1#2{\loi_ifempty{#2}{\foreachitem_v{#1}{}}{\foreachitem_v{#1}{#2,}}}% #1=err  #2=index norm
-\long\def\foreachitem_v#1#2#3#4#5#6{% #1=err  #2=index norm  #3=macroiter  #4=compteur associ\'e  #5=nom de macrolist  #6=code
-	\loi_ifnum{\csname#5len[#20]\endcsname>0 }
-		{\loi_ifempty{#1}{}{\loi_error{#1}}%
-		\loi_fornum#4=1to\csname#5len[#20]\endcsname\do{\loi_argcsname\let#3{#5[#2#4]}#6}%
-		}
-		{}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%% macro \showitem %%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\showitems{\loi_ifstar{\let\showitems_cmd\detokenize\showitems_i}{\let\showitems_cmd\loi_identity\showitems_i}}
-\def\showitems_i#1{\def\showitems_ii{\showitems_iv#1}\futurelet\loi_nxttok\showitems_iii}
-\def\showitems_iii{\loi_ifx{\loi_nxttok[}\showitems_ii{\showitems_ii[]}}
-\def\showitems_iv#1[#2]{\foreachitem\showitems_iter\in#1[#2]{\showitemsmacro{\expandafter\showitems_cmd\expandafter{\showitems_iter}}}}
-\unless\ifdefined\fbox
-	\newdimen\fboxrule \newdimen\fboxsep \fboxrule=.4pt \fboxsep=3pt % r\'eglages identiques \`a LaTeX
-	\def\fbox#1{% imitation de la macro \fbox de LaTeX, voir codes 251 \`a 254 ici --> http://progtex.fr/wp-content/uploads/2014/09/code.txt
-		\hbox{% et pages 271 \`a 274 de "Apprendre \`a programmer en TeX"
-			\vrule width\fboxrule
-			\vtop{%
-				\vbox{\hrule height\fboxrule \kern\fboxsep \hbox{\kern\fboxsep#1\kern\fboxsep}}%
-				\kern\fboxsep \hrule height\fboxrule
-			}\vrule width\fboxrule
-		}%
-	}
-\fi
-\def\showitemsmacro#1{% encadrement par d\'efaut
-	\begingroup\fboxsep=0.25pt \fboxrule=0.5pt \fbox{\strut#1}\endgroup
-	\hskip0.25em\relax
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%% macro \itemtomacro %%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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}%
-}
-\def\itemtomacro_i#1#2#3{%
-	\loi_ifempty{#1}{}{\loi_error{#1}}%
-	\loi_argcsname\let#3{\loi_listname[#2]}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%% r\'eglages par d\'efaut %%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\if_removeextremespaces
-\newif\if_ignoreemptyitems
-\let\ignoreemptyitems\_ignoreemptyitemstrue
-\let\reademptyitems\_ignoreemptyitemsfalse
-\setsepchar{,}
-\reademptyitems
-
-\loi_restorecatcode
-\endinput
-
-######################################################################
-#                             Historique                             #
-######################################################################
-
-v1.0  19/8/2016
-    - Premi\`ere version publique
\ No newline at end of file

Added: trunk/Master/texmf-dist/tex/generic/listofitems/listofitems.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/listofitems/listofitems.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/listofitems/listofitems.tex	2016-08-24 22:51:18 UTC (rev 41921)
@@ -0,0 +1,352 @@
+% Ce fichier contient le code de l'extension "listofitems"
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                    %
+\def\loiname                 {listofitems}                           %
+\def\loiver                      {1.0}                               %
+%                                                                    %
+\def\loidate                  {2016/8/20}                            %
+%                                                                    %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% --------------------------------------------------------------------
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%
+% %     http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% --------------------------------------------------------------------
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Christian Tellechea
+% email: unbonpetit at openmailbox.org
+%        Commentaires, suggestions et signalement de bugs bienvenus !
+%        Comments, bug reports and suggestions are welcome.
+% --------------------------------------------------------------------
+% L'extension listofitems est compos\'ee des 11 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\string_restorecatcode\endcsname{\catcode\number`\_=\number\catcode`\_\relax}
+\catcode`\_11
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%% gestion des erreurs %%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifdefined\PackageError
+	\def\loi_error#1{\PackageError\loiname{#1}{Read the manual}}% pour LaTeX
+\else
+	\def\loi_error#1{\errmessage{Package \loiname\space Error: #1^^J}}% pour TeX
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%% v\'erification de la pr`'esence de etex %%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begingroup
+\edef\__tempa{\meaning\eTeXversion}\edef\__tempb{\string\eTeXversion}%
+\ifx\__tempa\__tempb\endgroup
+\else\endgroup
+	\loi_error{You are not using an eTeX engine, listofitems cannot work.}%
+	\expandafter\loi_restorecatcode\expandafter\endinput
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%% macros auxiliaires %%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%---- macros de d\'eveloppement et de manipulation d'arguments
+\chardef\loi_stop=0
+\def\loi_quark{\loi_quark}
+\long\def\loi_identity#1{#1}
+\def\loi_gobarg#1{}
+\long\def\loi_first#1#2{#1}
+\long\def\loi_second#1#2{#2}
+\long\def\loi_firsttonil#1#2\_nil{#1}
+\long\def\loi_antefi#1#2\fi{#2\fi#1}
+\long\def\loi_swaparg#1#2{#2{#1}}
+\long\def\loi_exparg#1#2{\expandafter\loi_swaparg\expandafter{#2}{#1}}
+\long\def\loi_expafternil#1\_nil{\begingroup\def\loi_temp{\endgroup#1}\expandafter\loi_temp}
+\def\loi_macroname{\loi_ifinrange\escapechar[[0:255]]{\expandafter\loi_gobarg}{}\string}
+\def\loi_argcsname#1#{\begingroup\def\loi_temp{\endgroup#1}\loi_argcsname_i}
+\def\loi_argcsname_i#1{\expandafter\loi_temp\csname#1\endcsname}
+
+%--- macros de test
+\long\def\loi_ifnum#1{\ifnum#1\expandafter\loi_first\else\expandafter\loi_second\fi}
+\long\def\loi_ifx#1{\ifx#1\expandafter\loi_first\else\expandafter\loi_second\fi}
+\long\def\loi_ifempty#1{\loi_exparg\loi_ifx{\expandafter\relax\detokenize{#1}\relax}}
+\def\loi_ifstar#1#2{\def\loi_ifstar_i{\loi_ifx{*\loi_nxttok}{\loi_first{#1}}{#2}}\futurelet\loi_nxttok\loi_ifstar_i}
+\long\def\loi_ifcs#1{% #1 est-il une sc ?
+	\loi_ifempty{#1}
+		\loi_second% si #1 est vide, faux
+		{\loi_ifspacefirst{#1}
+			\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
+					\fi
+				}
+				\loi_second% si plusieurs tokens, faux
+			}%
+		}%
+}
+\def\loi_ifinrange#1[[#2:#3]]{\loi_ifnum{\numexpr(#1-#2)*(#1-#3)>0 }\loi_second\loi_first}
+
+%--- macro de type for
+%      Voir codes 150 \`a 155 ici --> http://progtex.fr/wp-content/uploads/2014/09/code.txt
+%      et pages 175 \`a 184 du livre "Apprendre \`a programmer en TeX"
+\def\loi_fornum#1=#2to#3\do{%
+	\edef#1{\number\numexpr#2}\edef\loi_sgncmp{\ifnum#1<\numexpr#3\relax>+\else<-\fi}%
+	\loi_argcsname\loi_fornum_i{loi_fornum_\string#1\expandafter}\expandafter{\number\numexpr#3\expandafter}\loi_sgncmp#1%
+}
+\long\def\loi_fornum_i#1#2#3#4#5#6{\def#1{\unless\ifnum#5#3#2\relax\loi_antefi{#6\edef#5{\number\numexpr#5#41\relax}#1}\fi}#1}
+
+%--- 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"
+\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{}
+\def\loi_removefirstspaces{\romannumeral\loi_removefirstspaces_i}
+\long\def\loi_removefirstspaces_i#1{\loi_ifspacefirst{#1}{\expandafter\loi_removefirstspaces_i\expandafter{\loi_gobspace#1}}{\loi_stop#1}}
+\edef\loi_restorezerocatcode{\catcode0=\number\catcode0 \relax}
+\catcode0 12
+\long\def\loi_removelastspaces#1{\romannumeral\loi_removelastspaces_i#1^^00 ^^00\_nil}
+\long\def\loi_removelastspaces_i#1 ^^00{\loi_removelastspaces_ii#1^^00}
+\long\def\loi_removelastspaces_ii#1^^00#2\_nil{\loi_ifspacefirst{#2}{\loi_removelastspaces_i#1^^00 ^^00\_nil}{\loi_stop#1}}
+\loi_restorezerocatcode
+\long\def\loi_removeextremespaces#1{% #1=texte o\`u les espaces extr\^emes sont retir\'es
+	\romannumeral\expandafter\expandafter\expandafter\loi_removelastspaces\expandafter\expandafter\expandafter
+	{\expandafter\expandafter\expandafter\loi_stop\loi_removefirstspaces{#1}}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%% macro publique \setsepchar %%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\setsepchar{\futurelet\loi_nxttok\setsepchar_i}
+\def\setsepchar_i{\loi_ifx{[\loi_nxttok}\setsepchar_ii{\setsepchar_ii[/]}}
+\long\def\setsepchar_ii[#1]#2{% #1=sepcar de <liste des sepcar>  #2=<liste des sepcar>
+	\loi_ifempty{#1}
+		{\loi_error{Empty separator not allowed, separator "/" used}%
+		\setsepchar_ii[/]{#2}%
+		}
+		{\def\loi_currentsep{#1}%
+		\_removeextremespacesfalse
+		\loi_nestcnt1 % r\'einitaliser niveau initial \`a 1
+		\def\nestdepth{1}%
+		\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
+		\def\loi_listname{loi_listofsep}%
+		\loi_ifempty{#2}
+			{\loi_error{Empty list of separators not allowed, "," used}%
+			\readlist_iv1{,}%
+			}
+			{\readlist_iv1{#2}}%
+		\loi_argcsname\let\nestdepth{loi_listofseplen[0]}%
+		\loi_argcsname\let\loi_currentsep{loi_listofsep[1]}% 1er car de s\'eparation
+		}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%% macro normalisant l'index %%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\loi_normalizeindex#1#2#3{% #1=macroname  #2=liste d'index  #3=profondeur max --> renvoie {err}{indx norm}
+	\loi_ifempty{#2}
+		{\loi_stop{}{}}
+		{\loi_normalizeindex_i1{}{#3}{#1}#2,\loi_quark,}%
+}%
+\def\loi_normalizeindex_i#1#2#3#4#5,{% #1=compteur de profondeur #2=index pr\'ec\'edents  #3=profondeur max #4=macroname  #5=index courant
+	\loi_ifx{\loi_quark#5}
+		{\loi_normalizeindex_iii#2\loi_quark}% supprimer la derni\`ere virgule
+		{\loi_ifnum{#1>#3 }
+			{\loi_invalidindex{Too deeply nested index, index [.] retained}{#2}}% si profondeur trop grande
+			{\loi_ifinrange\ifnum\numexpr#5<0 -1*\fi(#5)[[1:\csname #4len[#20]\endcsname]]% si abs(#5) hors de [1,len]
+				{\loi_exparg\loi_normalizeindex_ii{\number\numexpr#5\ifnum\numexpr#5<0 +\csname #4len[#20]\endcsname+1\fi}{#1}{#2}{#3}{#4}}
+				{\loi_invalidindex{#5 is an invalid index, index [.] retained}{#2}}%
+			}%
+		}%
+}
+\def\loi_normalizeindex_ii#1#2#3{\loi_exparg\loi_normalizeindex_i{\number\numexpr#2+1}{#3#1,}}% #1=index \`a rajouter  #2=compteur de profondeur #3=index pr\'ec\'edents
+\def\loi_normalizeindex_iii#1,\loi_quark{\loi_stop{}{#1}}
+\def\loi_invalidindex#1#2{\loi_ifempty{#2}{\loi_invalidindex_i{#1},}\loi_invalidindex_i{#1}{#2}}
+\def\loi_invalidindex_i#1#2{\loi_invalidindex_ii#1\loi_quark#2\loi_quark}
+\def\loi_invalidindex_ii#1[.]#2\loi_quark#3,\loi_quark#4\loi_quark,{\loi_stop{#1[#3]#2}{#3}}% #4= index ignor\'es
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%% macro publique \readlist %%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcount\loi_nestcnt
+
+\def\readlist{%
+	\loi_nestcnt1 % niveau initial = 1
+	\loi_argcsname\let{loi_previndex[\number\loi_nestcnt]}\empty
+	\loi_ifstar{\_removeextremespacestrue\readlist_i}{\_removeextremespacesfalse\readlist_i}%
+}
+\long\def\readlist_i#1#2{% #1=macro stockant les \'el\'ements  #2=liste des \'el\'ements
+	\loi_ifcs{#2}
+		{\loi_exparg{\readlist_i#1}{#2}}
+		{\edef\loi_listname{\loi_macroname#1}%
+		\loi_argcsname\let{\loi_listname nest}\nestdepth
+		\loi_argcsname\def{\loi_listname[]}{#2}% la liste enti\`ere
+		\loi_ifempty{#2}
+			{\def#1[##1]{}%
+			\loi_argcsname\def{\loi_listname len}{0}\loi_argcsname\def{\loi_listname len[0]}{0}%
+			\loi_error{Empty list ignored, nothing to do}%
+			}
+			{\edef#1[##1]{\unexpanded{\romannumeral\expandafter\loi_auxmacrolist\romannumeral\loi_normalizeindex}{\loi_listname}{##1}{\csname\loi_listname nest\endcsname}{\loi_listname}}%
+			\readlist_ii{#2}%
+			\loi_argcsname\loi_argcsname\let{\loi_listname len}{\loi_listname len[0]}% longueur du niveau 0
+			}%
+		}%
+}
+\def\loi_auxmacrolist#1#2#3{%
+	\expandafter\expandafter\expandafter\loi_stop\csname#3[#2]\expandafter\endcsname
+	\romannumeral\loi_ifempty{#1}{\loi_stop}{\loi_stop\loi_error{#1}}%
+}
+\def\readlist_ii{%
+	\loi_argcsname\let\loi_currentsep{loi_listofsep[\number\loi_nestcnt]}%
+	\expandafter\readlist_iii\loi_currentsep||\_nil
+}
+\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}%
+		\advance\loi_nestcnt-1
+		\loi_argcsname\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
+}
+\long\def\readlist_v#1#2{\readlist_vi{#2}{}#1||\loi_quark||#2\_nil}% #1=liste s\'eparateurs (s\'ep=||)  #2=chaine de tokens
+\long\def\readlist_vi#1#2#3||{% #1=liste restante   #2=dernier <sep utile>  #3=<sep courant>
+	\loi_ifx{\loi_quark#3}
+		{\loi_ifempty{#2}% si #1 vide, aucun <sep utile> n'a \'et\'e trouv\'e, il reste \`a lire "<liste compl\`ete>\_nil"
+			{\long\def\readlist_vii##1\_nil##2{\loi_exparg{\readlist_ix{##2}{}}{\loi_gobarg##1}}}% ##2=compteur d'index
+			{\long\def\readlist_vii##1#2{\loi_exparg\readlist_viii{\loi_gobarg##1}\relax}%
+			\long\def\readlist_viii##1##2\_nil##3{\loi_exparg{\readlist_ix{##3}}{\loi_gobarg##2}{##1}}% ##3=compteur d'index
+			}%
+		\readlist_vii\relax% le \relax meuble l'argument d\'elimit\'e
+		}
+		{\long\def\readlist_vii##1#3##2\_nil{%
+			\loi_ifempty{##2}% si <liste restante> ne contient pas le <sep courant>
+				{\readlist_vi{#1}{#2}}% recommencer avec le m\^eme <sep utile>
+				{\readlist_vi{##1#3}{#3}}% sinon raccourcir <liste restante> et <sep courant>:=<sep utile>
+			}%
+		\readlist_vii#1#3\_nil
+		}%
+}
+\long\def\readlist_ix#1#2#3{% #1=compteur d'index  #2=liste restante  #3=\'el\'ement courant
+	\loi_ifnum{0\loi_exparg\loi_ifspacefirst{\loi_currentsep}{}1\if_removeextremespaces1\fi=11 }% s'il faur retirer les espaces extr\^emes
+		{\loi_exparg{\loi_exparg{\readlist_x{#1}{#2}}}{\loi_removeextremespaces{#3}}}% red\'efinir l'\'el\'ement courant
+		{\readlist_x{#1}{#2}{#3}}%
+}
+\long\def\readlist_x#1#2#3{% #1=compteur d'index  #2=liste restante  #3=\'el\'ement courant
+	\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_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,}%
+			\readlist_ii{#3}% recommencer avec l'\'el\'ement courant
+			}
+			{}%
+		\loi_exparg\readlist_iv{\number\numexpr#1+1}{#2}% puis chercher l'\'el\'ement suivant dans la liste restante
+		}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%% macro \listlen %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\listlen#1[#2]{%
+	\romannumeral\loi_ifempty{#2}
+		{\expandafter\expandafter\expandafter\loi_stop\csname\loi_macroname#1len[0]\endcsname}
+		{\loi_exparg\listlen_i{\romannumeral-`\.\loi_macroname#1}{#2}}%
+}
+\def\listlen_i#1#2{% #1=macro name   #2=index non normalis\'e    prendre <profondeur max-1>
+	\loi_exparg{\expandafter\listlen_ii\romannumeral\loi_normalizeindex{#1}{#2}}{\number\numexpr\csname#1nest\endcsname-1}{#1}%
+}
+\def\listlen_ii#1#2#3{% #1=err   #2=index normalis\'e  #3=macroname
+	\expandafter\expandafter\expandafter\loi_stop\csname#3len[#2,0]\expandafter\endcsname
+	\romannumeral\loi_ifempty{#1}{\loi_stop}{\loi_stop\loi_error{#1}}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%% macro \foreachitem %%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\foreachitem#1\in#2{%
+	\edef\foreachitem_i{\noexpand\foreachitem_iii\noexpand#1{\expandafter\noexpand\csname\loi_macroname#1cnt\endcsname}{\loi_macroname#2}}%
+	\futurelet\loi_nxttok\foreachitem_ii
+}
+\def\foreachitem_ii{\loi_ifx{\loi_nxttok[}\foreachitem_i{\foreachitem_i[]}}
+\def\foreachitem_iii#1#2#3[#4]{% prendre <profondeur max-1>
+	\loi_exparg{\expandafter\foreachitem_iv\romannumeral\loi_normalizeindex{#3}{#4}}{\number\numexpr\csname#3nest\endcsname-1}#1{#2}{#3}%
+}
+\def\foreachitem_iv#1#2{\loi_ifempty{#2}{\foreachitem_v{#1}{}}{\foreachitem_v{#1}{#2,}}}% #1=err  #2=index norm
+\long\def\foreachitem_v#1#2#3#4#5#6{% #1=err  #2=index norm  #3=macroiter  #4=compteur associ\'e  #5=nom de macrolist  #6=code
+	\loi_ifnum{\csname#5len[#20]\endcsname>0 }
+		{\loi_ifempty{#1}{}{\loi_error{#1}}%
+		\loi_fornum#4=1to\csname#5len[#20]\endcsname\do{\loi_argcsname\let#3{#5[#2#4]}#6}%
+		}
+		{}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%% macro \showitem %%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\showitems{\loi_ifstar{\let\showitems_cmd\detokenize\showitems_i}{\let\showitems_cmd\loi_identity\showitems_i}}
+\def\showitems_i#1{\def\showitems_ii{\showitems_iv#1}\futurelet\loi_nxttok\showitems_iii}
+\def\showitems_iii{\loi_ifx{\loi_nxttok[}\showitems_ii{\showitems_ii[]}}
+\def\showitems_iv#1[#2]{\foreachitem\showitems_iter\in#1[#2]{\showitemsmacro{\expandafter\showitems_cmd\expandafter{\showitems_iter}}}}
+\unless\ifdefined\fbox
+	\newdimen\fboxrule \newdimen\fboxsep \fboxrule=.4pt \fboxsep=3pt % r\'eglages identiques \`a LaTeX
+	\def\fbox#1{% imitation de la macro \fbox de LaTeX, voir codes 251 \`a 254 ici --> http://progtex.fr/wp-content/uploads/2014/09/code.txt
+		\hbox{% et pages 271 \`a 274 de "Apprendre \`a programmer en TeX"
+			\vrule width\fboxrule
+			\vtop{%
+				\vbox{\hrule height\fboxrule \kern\fboxsep \hbox{\kern\fboxsep#1\kern\fboxsep}}%
+				\kern\fboxsep \hrule height\fboxrule
+			}\vrule width\fboxrule
+		}%
+	}
+\fi
+\def\showitemsmacro#1{% encadrement par d\'efaut
+	\begingroup\fboxsep=0.25pt \fboxrule=0.5pt \fbox{\strut#1}\endgroup
+	\hskip0.25em\relax
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%% macro \itemtomacro %%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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}%
+}
+\def\itemtomacro_i#1#2#3{%
+	\loi_ifempty{#1}{}{\loi_error{#1}}%
+	\loi_argcsname\let#3{\loi_listname[#2]}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%% r\'eglages par d\'efaut %%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if_removeextremespaces
+\newif\if_ignoreemptyitems
+\let\ignoreemptyitems\_ignoreemptyitemstrue
+\let\reademptyitems\_ignoreemptyitemsfalse
+\setsepchar{,}
+\reademptyitems
+
+\loi_restorecatcode
+\endinput
+
+######################################################################
+#                             Historique                             #
+######################################################################
+
+v1.0  19/8/2016
+    - Premi\`ere version publique
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/listofitems/listofitems.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2016-08-24 22:48:07 UTC (rev 41920)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2016-08-24 22:51:18 UTC (rev 41921)
@@ -1624,7 +1624,7 @@
  'listbib',     'listbib.tex|' . $standardtex,
  'listings',     '\.prf|' . $standardtex,
  'listings-ext','\.sty',        # not .cfg
- 'listofitems',	'\.listofitems.tex|' . $standardtex,
+ 'listofitems',	'listofitems.tex|' . $standardtex,
  'logic',       'milstd\.tex|' . $standardtex,
  'lollipop',	'\.ini|lollipop\.tex|lollipop-.*tex|lollipop.tex',
  'ltxkeys',     '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$',  # not cfg



More information about the tex-live-commits mailing list