texlive[44983] Master/texmf-dist: hlist (8aug17)

commits+karl at tug.org commits+karl at tug.org
Tue Aug 8 22:38:28 CEST 2017


Revision: 44983
          http://tug.org/svn/texlive?view=revision&revision=44983
Author:   karl
Date:     2017-08-08 22:38:28 +0200 (Tue, 08 Aug 2017)
Log Message:
-----------
hlist (8aug17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/hlist/README
    trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
    trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
    trunk/Master/texmf-dist/tex/generic/hlist/hlist.sty
    trunk/Master/texmf-dist/tex/generic/hlist/hlist.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
    trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.tex
    trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf
    trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.tex

Modified: trunk/Master/texmf-dist/doc/generic/hlist/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/hlist/README	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/doc/generic/hlist/README	2017-08-08 20:38:28 UTC (rev 44983)
@@ -3,14 +3,14 @@
              L'extension
                 hlist
                
-                v0.1
+                v0.11
 
-             1er mai 2017
+             8 aout 2017
 ___________________________________
 
 Authors   : Christian Tellechea
 Maintainer: Christian Tellechea
-E-mail    : unbonpetit at openmailbox.org     (CT)
+E-mail    : unbonpetit at netc.fr     (CT)
             Commentaires, signalements de bugs et
             suggestions bienvenus
 Licence   : Released under the LaTeX Project Public License v1.3c or

Modified: trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex	2017-08-08 20:38:28 UTC (rev 44983)
@@ -2,7 +2,7 @@
 % Ceci est la documentation du package "hlist"
 %
 % Fichier compil\xE9 avec pdflatex
-\documentclass[frenchb,a4paper,10pt]{article}
+\documentclass[french,a4paper,10pt]{article}
 \usepackage[latin1]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage[margin=2cm]{geometry}
@@ -112,7 +112,7 @@
 			\color{teal}\bfseries\ttfamily
 			\detokenize{#1}=$\langle$\detokenize{#2}$\rangle$\hss}\kern2.5em 
 		(\textit{D\xE9faut} : {\color{teal}\ttfamily
-		\hlst_eearg\hlst_ifempty{\useKV[hlist]{#1}}
+		\skv_eearg\skv_ifempty{\useKV[hlist]{#1}}
 			{\detokenize{{}}}
 			{\detokenize\expandafter\expandafter\expandafter{\useKV[hlist]{#1}}}})%
 		\par\nobreak
@@ -131,7 +131,8 @@
 		\smallbreak
 		\longfrhlstdate
 		\vskip1.5cm
-		Christian \bsc{Tellechea}\footnote{\texttt{unbonpetit at openmailbox.org}}\par
+		Christian \bsc{Tellechea}\par
+		\texttt{unbonpetit at netc.fr}\par
 	\endgroup
 	\vskip2cm
 	\leftskip=.2\linewidth \rightskip=.2\linewidth \small
@@ -158,8 +159,8 @@
 	\item \HLIST peut \xEAtre utilis\xE9 avec \TeX{} (\eTeX en r\xE9alit\xE9) alors que \texttt{Tasks} requiert \LaTeX;
 	\item les listes de \HLIST peuvent \xEAtre imbriqu\xE9es tandis que celles de \texttt{Tasks} ne le peuvent pas;
 	\item les changements de catcode (et donc le \xAB verbatim \xBB) sont possibles dans les listes de \HLIST et pas dans celles de \texttt{Tasks};
-	\item le code source de \HLIST est plus concis que celui de \texttt{Tasks} (\xE9crit en \LaTeX3) et, contrairement \xE0 ce dernier, \HLIST ne fait appel \xE0 aucune extension tierce\footnote{Vu les facilit\xE9s pr\xE9tendument offertes par \LaTeX3 et les extensions charg\xE9es par \texttt{Tasks}, je suis rest\xE9 m\xE9dus\xE9 face \xE0 la longueur du code de \texttt{Tasks}. Je ne m'explique pas un telle diff\xE9rence entre la taille des deux codes alors que \HLIST embarque son propre syst\xE8me de cl\xE9s/valeurs, ses macros de d\xE9veloppement, etc. Avant de me lancer dans une critique sans m\xE9nagement de \LaTeX3 et comme j'ai un fort soup\xE7on que quelque chose m'\xE9chappe l\xE0-dedans, je serais tr\xE8s reconnaissant si quelqu'un, capable de comprendre ce qui se passe, pouvait me fournir une explication.};
-	\item la documentation de \texttt{Tasks} est en anglais (son auteur est allemand); celle de \HLIST est en fran\xE7ais. Cesser de docilement se plier \xE0 cette pr\xE9tendue n\xE9cessit\xE9 de fournir une documentation en anglais, fusse pour des extensions de \TeX/\LaTeX, compte \emph{beaucoup} \xE0 mes yeux.
+	\item le code source de \HLIST est plus concis que celui de \texttt{Tasks} (\xE9crit en \LaTeX3) et, contrairement \xE0 ce dernier, \HLIST ne fait appel \xE0 aucune extension tierce\footnote{Vu les facilit\xE9s pr\xE9tendument offertes par \LaTeX3 et les extensions charg\xE9es par \texttt{Tasks}, je suis rest\xE9 m\xE9dus\xE9 face \xE0 la longueur du code de \texttt{Tasks}. Je ne m'explique pas une telle diff\xE9rence avec la taille de \HLIST, alors que \HLIST embarque son propre syst\xE8me de cl\xE9s/valeurs, ses macros de d\xE9veloppement, etc. Avant de me lancer dans une critique sans m\xE9nagement de \LaTeX3 et comme j'ai un fort soup\xE7on que quelque chose m'\xE9chappe l\xE0-dedans, je serais tr\xE8s reconnaissant si quelqu'un, capable de comprendre ce qui se passe, pouvait me fournir une explication.};
+	\item la documentation de \texttt{Tasks} est en anglais (son auteur est allemand); celle de \HLIST est en fran\xE7ais. Cesser de docilement se plier \xE0 cette pr\xE9tendue n\xE9cessit\xE9 de fournir une documentation en anglais, f\xFBt-ce pour des extensions de \TeX/\LaTeX, compte \emph{beaucoup} \xE0 mes yeux.
 \end{itemize}
 
 En revanche, puisque les deux extensions s'appuient sur des constructions de boites, \HLIST partage avec \texttt{Tasks} le principal d\xE9faut : une coupure de page ne peut pas avoir lieu au sein d'un item qui s'\xE9tendrait sur plusieurs lignes.

Deleted: trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.tex	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/doc/generic/hlist/htest-latex.tex	2017-08-08 20:38:28 UTC (rev 44983)
@@ -1,162 +0,0 @@
-% !TeX encoding = ISO-8859-1
-% Ceci est le fichier de test (pdf)(Xe)(lua)LaTex de l'entension hlist
-%
-% Fichier compil\xE9 avec pdflatex
-\documentclass[frenchb,a4paper,draft]{article}
-\usepackage[latin1]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[margin=2cm]{geometry}
-\usepackage{xcolor,hlist,babel}
-\begingroup\catcode`\_11
-\gdef\repeatntimes{\begingroup\def\temp{\endgroup}\repeatntimes_i}
-\gdef\repeatntimes_i#1#2{% r\xE9p\xE8te #1 fois le code #2
-	\hlst_ifnum{#1>0 }
-		{\expandafter\def\expandafter\temp\expandafter{\temp#2}%
-		\hlst_exparg\repeatntimes_i{\number\numexpr#1-1}{#2}}
-		\temp
-}
-\endgroup
-\begin{document}
-\hlstdebugmodetrue
-\parindent1.5em
-\begingroup
-	\hfill\bfseries\Huge Fichier de test \LaTeX\hfill\null\par
-\endgroup
-
-\section{Test 1}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\begin{hlist}5
-	\hitem \repeatntimes6{bla bla 1 }
-	\hitem \repeatntimes6{bla bla 2 }
-	\hitem \repeatntimes6{bla bla  3 }
-	\hitem \repeatntimes2{bla bla  4 }
-	\hitem \repeatntimes4{bla bla  5 }
-	\hitem \repeatntimes3{L2 L2 }
-	\hitem(3) \repeatntimes9{multicol 3 }
-	\hitem*(2) \repeatntimes5{retour ligne + multicol 2 }
-	\hitem> \repeatntimes5{multicol maximal }
-\end{hlist}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 2}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\sethlist{%
-	left margin=\parindent,
-	label=\arabic{section}\alpha{hlisti}),
-	item offset=2.5em,
-	label width=*,
-	pre item=\begingroup\color,
-	post item=\endgroup,
-	autoindent}
-\begin{hlist}3
-	\hitem {blue}item bleu !
-	\hitem {red}\repeatntimes3{bla bla en rouge }
-	\hitem {cyan}item cyan
-	\hitem>[LABEL PERSO] {magenta}\repeatntimes4{Long item sur toute la largeur }
-\end{hlist}
-\inithlist% retour aux valeur par d\xE9faut
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 3}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\begin{hlist}[pre skip=0pt,post skip=0pt]4
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-\end{hlist}
-Voici le texte interm\xE9diaire \repeatntimes{15}{bla bla bla }
-\begin{hlist}[resume,pre skip=0pt,post skip=0pt]4
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-\end{hlist}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 4}
-\noindent
-\begin{minipage}[t]{0.5\linewidth}
-	Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-	\begin{hlist}[label=$\bullet$,label sep=.33em,label width=.75em,
-	              label align=l,item offset=*,show frame]3
-		\hitem Choix A
-		\hitem Choix B
-		\hitem Choix C
-		\hitem Choix D
-		\hitem Choix E
-	\end{hlist}
-\end{minipage}\hfill\vrule\hfill
-\begin{minipage}[t]{0.4\linewidth}
-	Voici le texte pr\xE9c\xE9dent \repeatntimes{8}{bla bla bla }
-	\begin{hlist}[label=$\bullet$,label sep=.33em,label width=.75em,
-	              label align=l,item offset=*]3
-		\hitem Choix A
-		\hitem Choix B
-		\hitem Choix C
-		\hitem Choix D
-		\hitem Choix E
-	\end{hlist}
-\end{minipage}
-
-\section{Test 5}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-
-\begin{enumerate}
-	\item Question 1
-	\item Question 2\par
-		\begin{hlist}[label=\arabic{enumi}\alpha{hlisti},pre skip=0pt,
-		              post skip=0pt]3
-			\hitem Choix A
-			\hitem Choix B
-			\hitem Choix C
-			\hitem Choix D
-		\end{hlist}
-	\item Question 3\par
-		\begin{hlist}[label=\arabic{enumi}\alpha{hlisti},pre skip=0pt,
-		              post skip=0pt]3
-			\hitem R\xE9ponse A
-			\hitem R\xE9ponse B
-			\hitem R\xE9ponse C
-			\hitem R\xE9ponse D
-		\end{hlist}
-	\item Question 4
-\end{enumerate}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 6}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\begin{hlist}[label sep=0.25em,label width=1.6em,item offset=*,
-              label=\arabic{section}\alpha{hlisti},col sep=1em,show frame]8
-	\repeatntimes{26}{\hitem a\space eou}%
-\end{hlist}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 7}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\begin{hlist}[item offset=\parindent,label width=1em,label sep=*,list parindent=\parindent]3
-	\hitem Un premier item\par
-	       Une autre ligne pour rien dire !
-	\hitem Le \verb|verbatim| est permis avec l'extension \verb|hlist|, la preuve : <<~\verb|# 1\ $%    ~|~>>.
-	\hitem Un troisi\xE8me item pour le fun et pour remplir une ligne\par
-	       Un autre paragraphe pour prendre deux lignes.
-	\hitem La fin... des haricots !
-\end{hlist}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 8}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\begin{hlist}[show label=false,show frame,col sep=3em,list parindent=\parindent]3
-	\hitem Un premier item\par
-	       Une autre ligne pour ne rien dire !
-	\hitem Le \verb|verbatim| est permis dans les items avec l'extension \verb|hlist|, la preuve : <<~\verb|# 1\ $%    ~|~>>.
-	\hitem Un troisi\xE8me item pour remplir une ligne\par
-	       Un deuxi\xE8me paragraphe qui prend deux lignes.
-	\hitem La fin... des haricots !
-\end{hlist}
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-\end{document}
\ No newline at end of file

Deleted: trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.tex	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/doc/generic/hlist/htest-tex.tex	2017-08-08 20:38:28 UTC (rev 44983)
@@ -1,173 +0,0 @@
-% !TeX encoding = ISO-8859-1
-% Ceci est le fichier de test (pdf)(Xe)(lua)tex de l'entension hlist
-%
-% Fichier compil\xE9 avec pdftex
-\def\margin{2cm}
-\hoffset\dimexpr \margin - 1in \relax
-\voffset\dimexpr \margin - 1in \relax
-\hsize\dimexpr 21cm - \margin*2 \relax
-\vsize\dimexpr 29.7cm - \margin*2 \relax
-
-\input hlist.tex
-\input color.tex
-
-\begingroup
-	\catcode`\_11
-	\gdef\repeatntimes{\begingroup\def\temp{\endgroup}\repeatntimes_i}
-	\gdef\repeatntimes_i#1#2{% r\xE9p\xE8te #1 fois le code #2
-		\hlst_ifnum{#1>0 }
-			{\hlst_exparg{\def\temp}{\temp#2}%
-			\hlst_exparg\repeatntimes_i{\number\numexpr#1-1}{#2}%
-			}
-			\temp
-	}
-\endgroup
-
-\def\verb{\expandafter\verbA\string}
-\def\verbA#1{%
-	\begingroup
-		\def\verbB##1#1{\tt##1\endgroup}%
-		\def\do##1{\catcode`##112 }%
-		\catcode32 13 \begingroup\lccode`\~ 32 \lowercase{\endgroup\let~\space}%
-		\do\\\do\{\do\}\do\$\do\&\do\#\do\^\do\_\do\%\do\~%
-		\verbB
-}
-
-\expandafter\newcount\csname c at section\endcsname
-\def\section#1{%
-	\expandafter\advance\csname c at section\endcsname1
-	\bigbreak\noindent
-	\begingroup\hlstsectionfont \the\csname c at section\endcsname\quad#1\endgroup
-	\smallbreak
-}
-\font\hlsttitlefont=ecbx2000 % titre
-\font\hlstsectionfont=ecbx1400 % section
-\font\hlsttextfont=ecrm1000 % texte
-
-\catcode`\;=13 \def;{\unskip\penalty10000 \ \string;}% caract\xE8res actifs de ponctuation fran\xE7aise
-\catcode`\:=13 \def:{\unskip\penalty10000 \ \string:}
-\catcode`\!=13 \def!{\unskip\penalty10000 \ \string!}
-
-%%%%% D\xC9BUT DU DOCUMENT
-\hlstdebugmodetrue
-\hlsttextfont
-\parindent1.5em
-\begingroup
-	\hfill\hlsttitlefont  Fichier de test \TeX\hfill\null\par
-\endgroup
-
-\section{Test 1}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\hlist5
-	\hitem \repeatntimes6{bla bla 1 }
-	\hitem \repeatntimes6{bla bla 2 }
-	\hitem \repeatntimes6{bla bla  3 }
-	\hitem \repeatntimes2{bla bla  4 }
-	\hitem \repeatntimes4{bla bla  5 }
-	\hitem \repeatntimes3{L2 L2 }
-	\hitem(3) \repeatntimes9{multicol 3 }
-	\hitem*(2) \repeatntimes5{retour ligne + multicol 2 }
-	\hitem> \repeatntimes5{multicol maximal }
-\endhlist
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 2}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\sethlist{%
-	left margin=\parindent,
-	label=\arabic{section}\alpha{hlisti}),
-	item offset=2.5em,
-	label width=*,
-	pre item=\begingroup\color,
-	post item=\endgroup,
-	autoindent}
-\hlist3
-	\hitem {blue}item bleu !
-	\hitem {red}\repeatntimes3{bla bla en rouge }
-	\hitem {cyan}item cyan
-	\hitem>[LABEL PERSO] {magenta}\repeatntimes4{Long item sur toute la largeur }
-\endhlist
-\inithlist% retour aux valeur par d\xE9faut
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 3}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\hlist[pre skip=0pt,post skip=0pt]4
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-\endhlist
-Voici le texte interm\xE9diaire \repeatntimes{15}{bla bla bla }
-\hlist[resume,pre skip=0pt,post skip=0pt]4
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-	\hitem  Item r\xE9p\xE9t\xE9
-\endhlist
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 4}
-\noindent
-\vtop{\hsize=.5\hsize
-	Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-	\hlist[label=$\bullet$,label sep=.33em,label width=.75em,
-	              label align=l,item offset=*,show frame]3
-		\hitem Choix A
-		\hitem Choix B
-		\hitem Choix C
-		\hitem Choix D
-		\hitem Choix E
-	\endhlist
-}\hfill\vrule\hfill
-\vtop{\hsize=.4\hsize
-	Voici le texte pr\xE9c\xE9dent \repeatntimes{8}{bla bla bla }
-	\hlist[label=$\bullet$,label sep=.33em,label width=.75em,
-	              label align=l,item offset=*]3
-		\hitem Choix A
-		\hitem Choix B
-		\hitem Choix C
-		\hitem Choix D
-		\hitem Choix E
-	\endhlist
-}%
-
-\section{test 5}
-Sans objet, l'extension \verb|enumerate| n'est pas disponible pour \TeX.
-
-\section{Test 6}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\hlist[label sep=0.25em,label width=1.6em,item offset=*,
-              label=\arabic{section}\alpha{hlisti},col sep=1em,show frame]8
-	\repeatntimes{26}{\hitem a\space eou}%
-\endhlist
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 7}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\hlist[item offset=\parindent,label width=1em,label sep=*,list parindent=\parindent]3
-	\hitem Un premier item\par
-	       Une autre ligne pour rien dire !
-	\hitem Le \verb|verbatim| est permis avec l'extension \verb|hlist|, la preuve : <<~\verb|# 1\ $%    ~|~>>.
-	\hitem Un troisi\xE8me item pour le fun et pour remplir une ligne\par
-	       Un autre paragraphe pour prendre deux lignes.
-	\hitem La fin... des haricots !
-\endhlist
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-
-\section{Test 8}
-Voici le texte pr\xE9c\xE9dent \repeatntimes{15}{bla bla bla }
-\hlist[show label=false,show frame,col sep=3em,list parindent=\parindent]3
-	\hitem Un premier item\par
-	       Une autre ligne pour ne rien dire !
-	\hitem Le \verb|verbatim| est permis dans les items avec l'extension \verb|hlist|, la preuve : <<~\verb|# 1\ $%    ~|~>>.
-	\hitem Un troisi\xE8me item pour remplir une ligne\par
-	       Un deuxi\xE8me paragraphe qui prend deux lignes.
-	\hitem La fin... des haricots !
-\endhlist
-Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
-\bye
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/hlist/hlist.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/hlist/hlist.sty	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/tex/generic/hlist/hlist.sty	2017-08-08 20:38:28 UTC (rev 44983)
@@ -1,6 +1,7 @@
 % !TeX encoding = ISO-8859-1
 \input hlist.tex
+\ProvidesPackage{hlist}[\hlstdate\space v\hlstver\space Horizontal lists (CT)]
 \setKVdefault[hlist]{
-	pre label     = \bfseries,% code ex\xE9cut\xE9 au d\xE9but de la boite contenant le label
+	pre label     = \bfseries% code ex\xE9cut\xE9 au d\xE9but de la boite contenant le label
 }
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/hlist/hlist.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/hlist/hlist.tex	2017-08-08 09:58:24 UTC (rev 44982)
+++ trunk/Master/texmf-dist/tex/generic/hlist/hlist.tex	2017-08-08 20:38:28 UTC (rev 44983)
@@ -1,15 +1,15 @@
 % !TeX encoding = ISO-8859-1
 % Ce fichier contient le code comment\xE9 de l'extension "hlist"
 %
-% IMPORTANT : pour que les commentaires s'affichent correctement, lire
-%             ce fichier avec l'encodage ISO-8859-1
+% IMPORTANT : pour que les commentaires s'affichent correctement,
+%             ouvrir ce fichier avec l'encodage ISO-8859-1
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                    %
 \def\hlstname                   {hlist}                              %
-\def\hlstver                     {0.1}                               %
+\def\hlstver                     {0.11}                              %
 %                                                                    %
-\def\hlstdate                 {2017/05/01}                           %
+\def\hlstdate                 {2017/08/08}                           %
 %                                                                    %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
@@ -27,9 +27,11 @@
 % This work has the LPPL maintenance status `maintained'.
 %
 % The Current Maintainer of this work is Christian Tellechea
-% email: unbonpetit at openmailbox.org
+% email: unbonpetit at netc.fr
 %        Commentaires, suggestions et signalement de bugs bienvenus !
 %        Comments, bug reports and suggestions are welcome.
+% Package URL: https://www.ctan.org/pkg/hlist
+% Copyright: Christian Tellechea 2017
 % --------------------------------------------------------------------
 % L'extension hlist est compos\xE9e des 9 fichiers suivants :
 %   - code               : hlist            (.tex et .sty)
@@ -39,6 +41,9 @@
 %   - fichier lisezmoi   : README
 % --------------------------------------------------------------------
 
+\begingroup
+	\ifdefined\skvname\let\hlsttmp\endgroup\else\def\hlsttmp{\endgroup\input simplekv.tex}\fi
+\hlsttmp\relax
 \expandafter\edef\csname hlst_restorecatcode\endcsname{\catcode`\noexpand\_=\the\catcode`\_\relax}
 \catcode`\_11
 
@@ -55,15 +60,14 @@
 
 % Voici les macros habituelles de s\xE9lection d'arguments
 \def\hlst_gobarg#1{}
-\long\def\hlst_first#1#2{#1}\long\def\hlst_second#1#2{#2}
+\long\def\hlst_first#1#2{#1}
+\long\def\hlst_second#1#2{#2}
 \long\def\hlst_firsttonil#1#2\_nil{#1}
 
 % Voici la macro pour 1-d\xE9velopper ou 2-d\xE9velopper le 2e argument (le 1er \xE9tant
 % d\xE9pouill\xE9 des accolades)
 %     \hlst_exparg{<a>}{<b>} devient <a>{<b>}
-%     \hlst_eearg{<a>}{<b>} devient <a>{**<b>}
 \long\def\hlst_exparg#1#2{\expandafter\hlst_exparg_i\expandafter{#2}{#1}}%
-\long\def\hlst_eearg#1#2{\expandafter\expandafter\expandafter\hlst_exparg_i\expandafter\expandafter\expandafter{#2}{#1}}%
 \long\def\hlst_exparg_i#1#2{#2{#1}}
 
 % Et la macro pour 1-d\xE9velopper le 2e argument (le 1er et le 2e argument sont
@@ -72,12 +76,6 @@
 \long\def\hlst_expafter#1#2{\expandafter\hlst_expafter_i\expandafter{#2}{#1}}
 \long\def\hlst_expafter_i#1#2{#2#1}
 
-% Enfin, la macro pour former le nom du 2e argument (le 1er est d\xE9pouill\xE9 des
-% accolades)
-%     \hlst_argcsname{<a>}{<b>} devient <a>\<b>
-\def\hlst_argcsname#1#{\hlst_argcsname_i{#1}}
-\def\hlst_argcsname_i#1#2{\hlst_expafter{#1}{\csname#2\endcsname}}
-
 %################################################
 %################ macros de test ################
 %################################################
@@ -87,7 +85,6 @@
 \long\def\hlst_ifx#1{\ifx#1\expandafter\hlst_first\else\expandafter\hlst_second\fi}
 \long\def\hlst_ifempty#1{\hlst_exparg\hlst_ifx{\expandafter\relax\detokenize{#1}\relax}}
 \def\hlst_ifstar#1#2{\def\hlst_ifstar_i{\hlst_ifx{*\hlst_nxttok}{\hlst_first{#1}}{#2}}\futurelet\hlst_nxttok\hlst_ifstar_i}
-\def\hlst_eaddtomacro#1#2{\hlst_exparg{\hlst_exparg{\def#1}}{\expandafter#1#2}}
 
 % Ici, une macro pour d\xE9finir le token <espace>
 \def\hlst_deftok#1#2{\let#1= #2\relax}\hlst_deftok\hlst_sptok{ }
@@ -101,226 +98,7 @@
 		{\hlst_ifx{\_futurtok\hlst_toktotest}\__truecode\__falsecode}%
 }
 
-% Ces macros sont utiles pour \hlst_removeextremespaces, qui retire les
-% espaces extr\xEAmes de son argument
-%     Voir codes 320-324 (http://progtex.fr/wp-content/uploads/2014/09/code.txt)
-%     et pages 339-343 de "Apprendre \xE0 programmer en TeX"
-\long\def\hlst_ifspacefirst#1{\expandafter\hlst_ifspacefirst_i\detokenize{#10} \_nil}
-\long\def\hlst_ifspacefirst_i#1 #2\_nil{\hlst_ifempty{#1}}
-\expandafter\def\expandafter\hlst_gobspace\space{}
-\def\hlst_removefirstspaces{\romannumeral\hlst_removefirstspaces_i}
-\long\def\hlst_removefirstspaces_i#1{\hlst_ifspacefirst{#1}{\expandafter\hlst_removefirstspaces_i\expandafter{\hlst_gobspace#1}}{\hlst_stop#1}}
-\begingroup
-	\catcode0 12
-	\long\gdef\hlst_removelastspaces#1{\romannumeral\hlst_removelastspaces_i#1^^00 ^^00\_nil}
-	\long\gdef\hlst_removelastspaces_i#1 ^^00{\hlst_removelastspaces_ii#1^^00}
-	\long\gdef\hlst_removelastspaces_ii#1^^00#2\_nil{\hlst_ifspacefirst{#2}{\hlst_removelastspaces_i#1^^00 ^^00\_nil}{\hlst_stop#1}}
-\endgroup
-\long\def\hlst_removeextremespaces#1{%
-	\romannumeral\expandafter\expandafter\expandafter\hlst_removelastspaces\expandafter\expandafter\expandafter
-	{\expandafter\expandafter\expandafter\hlst_stop\hlst_removefirstspaces{#1}}%
-}
-
 %################################################
-%############## syst\xE8me cl\xE9/valeur ##############
-%################################################
-% Ceci est le bool\xE9en indiquant si la lecture de <cl\xE9s>=<valeurs> d\xE9finit les
-% <cl\xE9s> _par d\xE9faut_ ou qu'il s'agit d'une _red\xE9finition_ des <cl\xE9s> d\xE9j\xE0
-% existantes
-\newif\ifhlst_default
-
-% macros chapeau appelant la m\xEAme macro avec le bool\xE9en pr\xE9alablement d\xE9fini
-\def\setKVdefault{\hlst_defaulttrue\hlst_readKV}
-\def\setKV{\hlst_defaultfalse\hlst_readKV}
-
-% L'argument obligatoire #1 est le nom du <trousseau> et #2 est l'ensemble
-% des <cl\xE9s>=<valeurs>
-\def\hlst_readKV[#1]#2{%
-	\hlst_ifempty{#2}
-% Si aucune <cl\xE9s>=<valeurs> alors qu'on d\xE9finit les <valeurs> par d\xE9faut,
-% message d'erreur et on s'arr\xEAte l\xE0
-		{\ifhlst_default\errmessage{No key/val found, no default key/val defined}\fi}
-% Sinon, initialiser \xE0 <vide> la macro \hlst_[<trousseau>] uniquement si on
-% cr\xE9\xE9 les <valeurs> par d\xE9faut
-		{\ifhlst_default\hlst_argcsname\let{hlst_[#1]}\empty\fi
-% Puis on passe aux choses s\xE9rieuses, on va lire un par un tous les \xE9l\xE9ments
-% <cl\xE9>=<valeur> (contenus dans #2) en mettant le quark comme dernier couple
-% pour montrer la fin de la liste
-		\hlst_readKV_i[#1]#2,\hlst_quark,%
-		}%
-}
-
-\def\hlst_readKV_i[#1]#2,{%
-% #2 est le premier couple "<cl\xE9>=<valeur>" de la liste qui reste \xE0 traiter :
-% tout d'abord, on se d\xE9barrasse des espaces extr\xEAmes
-	\hlst_eearg{\def\__temp}{\hlst_removeextremespaces{#2}}%
-% Si ce qui en r\xE9sulte est \xE9gal au <quark>,
-	\hlst_ifx{\__temp\hlst_quark}
-% alors, on a fini et on ne fait rien (fin du processus)
-		{}
-% Sinon, si ce qui en r\xE9sulte est vide (le couple "<cl\xE9>=<valeur>" \xE9tait donc
-% vide ou compos\xE9 d'un espace)
-		{\hlst_ifx{\__temp\empty}
-% On a fini et on ne fait rien (fin du processus)
-			{}
-% dans le cas contraire, on va isoler la <cl\xE9> et la <valeur> du couple lu en
-% prenant soin de mettre \xE0 la fin "=<quark>" pour se pr\xE9munir du cas o\xF9
-% "<cl\xE9>=<valeur>" ne contient que la "<cl\xE9>" et pas de signe "=", ce qui
-% ferait planter la macro \xE0 arguments d\xE9limit\xE9s
-			{\expandafter\hlst_find_kv\__temp=\hlst_quark\_nil[#1]%
-			}%
-% Lorsque la <cl\xE9> et la <valeur> est trouv\xE9e et stock\xE9e, recommencer et aller
-% lire le prochain couple "<cl\xE9>=<valeur>"
-		\hlst_readKV_i[#1]%
-		}%
-}
-
-% Voici la macro \xE0 arguments d\xE9limit\xE9s \xE0 qui on a transmis
-%     <cl\xE9>=<valeur>=<quark> (si <cl\xE9>=<valeur> est l'\xE9l\xE9ment lu)
-% ou
-%     <cl\xE9>=<quark> (si <cl\xE9> est seule)
-% et qui va isoler la <cl\xE9> de la <valeur>.
-\def\hlst_find_kv#1=#2\_nil[#3]{%
-% #1 est ce qui se trouve avant le _premier_ signe "=" et
-% #2 est ce qui se trouve entre le premier signe "=" et le \_nil
-% Pour la <cl\xE9>, pas de probl\xE8me, c'est _obligatoirement_ ce qui est avant le
-% signe "=", que ce signe soit pr\xE9sent dans le couple lu ou pas puisqu'on y a
-% rajout\xE9 "=<quark>".
-% On \xE9limine les espaces extr\xEAmes pour obtenir la <cl\xE9> d\xE9finitive stock\xE9e dans
-% \__key (il faut 2-d\xE9velopper \hlst_removeextremespaces pour qu'elle donne son
-% argument sans espace extr\xEAme)
-	\edef\__key{\detokenize\expandafter\expandafter\expandafter{\hlst_removeextremespaces{#1}}}%
-% Pour la <valeur>, on lui \xF4te d'abord les espaces extr\xEAmes
-	\hlst_eearg{\def\__val}{\hlst_removeextremespaces{#2}}%
-	\hlst_ifx{\__val\hlst_quark}
-% Si elle est \xE9gale au <quark>, alors la <valeur> vaut "true"
-		{\def\__val{true}}%
-% Sinon, \xF4ter "=<quark>" de la fin de l'argument #2, \xE9liminer les espaces
-% extr\xEAmes de ce qui en r\xE9sulte et stocker le tout dans \__val (tout ceci est
-% effectu\xE9 par la macro \hlst_find_val <valeur>=<quark>)
-		{\hlst_find_val#2}%
-% Si on lit les <cl\xE9s>=<valeurs> par d\xE9faut,
-	\ifhlst_default
-% assigner \xE0 la macro "\hlst_[<trousseau>]_<cl\xE9>" la <valeur> trouv\xE9e
-		\hlst_argcsname\let{hlst_[#3]_\detokenize\expandafter{\__key}}\__val
-% Puis ajouter \xE0 la macro "\hlst_[<trousseau>]", qui a \xE9t\xE9 pr\xE9alablement
-% initialis\xE9e \xE0 <vide> :
-%     \def\hlst_[<trousseau>]_<cl\xE9>{<valeur>}
-		\hlst_argcsname\hlst_eaddtomacro{hlst_[#3]}%
-			{\expandafter\def\csname hlst_[#3]_\detokenize\expandafter{\__key}\expandafter\endcsname\expandafter{\__val}}%
-% C'est selon ce hashage que sont enregistr\xE9s les couples <cl\xE9>/<valeur> : les
-% <cl\xE9s> sont contenues dans les noms des macros tandis que les <valeurs> sont
-% les textes de remplacement de ces macros.
-% C'est rapide et simple :
-%    a)  pour trouver une <valeur> d'apr\xE8s sa <cl\xE9>, il suffit de d\xE9velopper la
-%        macro \hlst_[<trousseau>]_<cl\xE9>
-%    b) pour red\xE9finir une <cl\xE9>, il suffit de red\xE9finir cette macro avec la
-%       nouvelle <valeur>
-%    c) il est facile de v\xE9rifier qu'une <cl\xE9> existe en v\xE9rifiant que la macro
-%       associ\xE9e est d\xE9finie, la primitive \ifcsname le fait tr\xE8s bien
-%    d) en revanche, on ne peut pas faire de recherche _inverse_ de fa\xE7on
-%       pratique : il est en effet plus difficile de trouver la (ou les) <cl\xE9>
-%       contenant une <valeur> donn\xE9e, mais cette limitation n'a pas grande
-%       importance ici (je ne sais pas si les autres syst\xE8mes de <cl\xE9>/<valeur>
-%       sont programm\xE9s de telle sorte que cela soit simple...)
-% Bref, la macro "\hlst_[<trousseau>]" contient donc _toutes_ les d\xE9finitions
-% des macros d\xE9finissant les <cl\xE9s>/<valeurs> _par d\xE9faut_ et ex\xE9cuter 
-% "\hlst_[<trousseau>]" remet donc toutes les <cl\xE9s> \xE0 leur <valeur> par d\xE9faut.
-	\else
-% Dans le cas o\xF9 on _lit_ des nouvelles <valeurs> pour des <cl\xE9s>
-		\hlst_ifcsname{hlst_[#3]_\__key}
-% Si la <cl\xE9> existe (ssi la macro "\hlst_[<trousseau>]_<cl\xE9>" est d\xE9finie),
-% alors assigner la <valeur> \xE0 cette macro
-			{\hlst_argcsname\let{hlst_[#3]_\__key}\__val}%
-% Sinon, \xE9mettre un message d'erreur et ne rien faire de plus
-			{\errmessage{Key "\__key" is not defined: nothing is modified}}%
-	\fi
-}
-
-% Cette macro \xE0 qui on a transmis "<valeur>=<quark>" ne garde que <valeur>, en
-% \xF4te les espaces extr\xEAmes et stocke le r\xE9sultat dans \__val
-\def\hlst_find_val#1=\hlst_quark{\hlst_eearg{\def\__val}{\hlst_removeextremespaces{#1}}}
-
-% Cette macro remet toutes les <cl\xE9s> \xE0 leur <valeurs> par d\xE9faut en ex\xE9cutant
-% la macro "\hlst_[<trousseau>]"
-\def\useKVdefault[#1]{%
-	\hlst_ifcsname{hlst_[#1]}
-		{\csname hlst_[#1]\endcsname}
-% Si la macro "\hlst_[<trousseau>]" n'existe pas, message d'erreur
-		{\errmessage{Undefined set of keys "#1"}}%
-}
-
-% Cette macro donne la <valeur> correspondant \xE0 la <cl\xE9> contenue dans #2
-\def\useKV[#1]#2{%
-% Avec \romannumeral, la <valeur> sera obtenue apr\xE8s _2_ d\xE9veloppements de
-% \useKV[<trousseau>]{<cl\xE9>}
-	\romannumeral\hlst_ifempty{#2}
-% Si la <cl\xE9> est vide, message d'erreur (il ne peut y avoir de <valeur>
-% associ\xE9e \xE0 une <cl\xE9> vide)
-		{\hlst_stop\errmessage{Key name missing}}
-		{\hlst_ifcsname{hlst_[#1]_\hlst_removeextremespaces{#2}}
-% Si la macro "\hlst_[<trousseau>]_<cl\xE9>" existe, 2-d\xE9velopper le \csname pour
-% avoir la <valeur>
-			{\expandafter\expandafter\expandafter\hlst_stop\csname hlst_[#1]_\hlst_removeextremespaces{#2}\endcsname}
-% Sinon, message d'erreur
-			{\hlst_stop\errmessage{Key "\hlst_removeextremespaces{#2}" not defined}}%
-		}%
-}
-
-% Voici une macro purement d\xE9veloppable qui teste si #2 (la <cl\xE9> du <trousseau>
-% #1) est \xE9gale \xE0 "true" ou \xE0 "false" et selon l'issue, ex\xE9cute le 1er ou 2e
-% argument qui suit (arguments appel\xE9s <vrai> et <faux>)
-\def\ifboolKV[#1]#2{%
-% Cette macro donnera un des 2 arguments <vrai> ou <faux> en _2_ d\xE9veloppements
-% gr\xE2ce au \romannumeral
-	\romannumeral\hlst_ifempty{#2}
-% Si la <cl\xE9> est vide, message d'erreur
-		{\hlst_stop\errmessage{Key name missing}\hlst_second}
-		{\hlst_ifcsname{hlst_[#1]_\hlst_removeextremespaces{#2}}
-% Si la <cl\xE9> d\xE9barrass\xE9e de ses espaces extr\xEAmes existe, tester son contenu
-			{\hlst_eearg\ifboolKV_i{\csname hlst_[#1]_\hlst_removeextremespaces{#2}\endcsname}}
-% Sinon, message d'erreur
-			{\hlst_stop\errmessage{Key "\hlst_removeextremespaces{#2}" not defined}\hlst_second}%
-		}%
-}
-
-% Cette macro teste si #1, qui est une <valeur>, vaut "true" ou "false"
-\def\ifboolKV_i#1{%
-% Tester d'abord si elle vaut "true"
-	\hlst_ifargtrue{#1}
-		{\expandafter\hlst_stop\hlst_first}
-		{\hlst_ifargfalse{#1}
-% Puis si elle vaut "false"
-			{\expandafter\hlst_stop\hlst_second}
-% Si ni l'un ni l'autre, la <valeur> n'est pas un bool\xE9en acceptable
-			{\hlst_stop\errmessage{Value "#1" is not a valid boolean}\hlst_second}%
-		}%
-}
-
-% La macro \hlst_ifargtrue{<argument>} teste de fa\xE7on purement d\xE9veloppable si
-% <argument> vaut "true" ou "false".
-% Pour cela, on transmet \xE0 \hlst_ifargtrue_i l'argument "<argument>true" qui est
-% d\xE9limit\xE9 par \_nil
-\def\hlst_ifargtrue#1{\hlst_ifargtrue_i#1true\_nil}
-% Dans la macro \hlst_ifargtrue_i, l'argument #1 est ce qui se trouve avant
-% "true" dans "<argument>true" :
-%     - s'il n'est pas vide, s\xE9lectionner l'argument <faux>
-%     - s'il est vide, cela signifie que <argument> commence par "true" ; il est
-%       donc de la forme "true<autre>"
-%       L'argument #2 est ce qui se trouve apr\xE8s "true" dans "true<autre>true",
-%       c'est donc "<autre>true".
-%       Pour \xEAtre s\xFBr que <autre> est <vide>, on transmet "<autre>true" \xE0
-%       \hlst_ifargtrue_ii qui teste si la r\xE9union de ce qui est avant le
-%       premier "true" et ce qui est apr\xE8s est <vide>
-\def\hlst_ifargtrue_i#1true#2\_nil{\hlst_ifempty{#1}{\hlst_ifargtrue_ii#2\_nil}\hlst_second}
-\def\hlst_ifargtrue_ii#1true#2\_nil{\hlst_ifempty{#1#2}}
-
-% On proc\xE8de de m\xEAme pour tester "false"
-\def\hlst_ifargfalse#1{\hlst_ifargfalse_i#1false\_nil}
-\def\hlst_ifargfalse_i#1false#2\_nil{\hlst_ifempty{#1}{\hlst_ifargfalse_ii#2\_nil}\hlst_second}
-\def\hlst_ifargfalse_ii#1false#2\_nil{\hlst_ifempty{#1#2}}
-
-%################################################
 %############### macros de  hlist ###############
 %################################################
 % Voici les registres utilis\xE9s :
@@ -511,7 +289,7 @@
 	\hlst_ifcsname{c@\detokenize{#1}}
 % Donner le nombre arabe avec \number, sinon, message d'erreur
 		{\number\csname c@\detokenize{#1}\endcsname}
-		{\errmessage{Unkonwn counter named "\detokenize{#1}"}}%
+		{\errmessage{Unknown counter named "\detokenize{#1}"}}%
 }
 % Ensuite, ces macros convertissent un <nombre> en nombre romain ou en lettre,
 % avec choix de la casse
@@ -569,7 +347,7 @@
 % Ensuite on peut trouver (<multicol>) et/ou [<label>] dans n'importe quel ordre
 \def\hitem_i#1#2(#3)[#4]{%
 	\hlst_ifnxttok\hlst_sptok
-		{\def\__temp{\hitem_i#1#2(#3)[#4]}\expandafter\__temp\hlst_gobspace}
+		{\def\__temp{\hitem_i#1#2(#3)[#4]}\expandafter\__temp\skv_gobspace}
 		{\hitem_ii#1#2(#3)[#4]}%
 }
 
@@ -582,8 +360,7 @@
 % si ce n'est _pas_ le 1er de la liste
 	\hlst_ifnum{\hlst_colcnt>0 }
 % Ex\xE9cuter la routine de fin d'item
-		{\hlst_enditem
-		}
+		{\hlst_enditem}
 % Sinon, fermer la boite ouverte par \hlist
 		{\egroup
 % Si toutes ses dimensions ne sont pas nulles, message d'erreur
@@ -594,7 +371,7 @@
 		\hlst_maxdepth0pt \hlst_maxprevdepth0pt
 		}%
 % Incr\xE9menter le compteur de label associ\xE9 \xE0 cette imbrication
-	\hlst_argcsname\global\advance{c at hlist\romannumeral\hlst_nest} 1
+	\expandafter\global\expandafter\advance\csname c at hlist\romannumeral\hlst_nest\endcsname 1
 % Incr\xE9menter le compteur de colonnes du nombre de colonnes saut\xE9es pr\xE9c\xE9demment
 	\advance\hlst_colcnt\hlst_askedmulticol\relax
 % Si "*", mettre le compteur de colonnes au maximum pour forcer retour \xE0 la
@@ -836,3 +613,5 @@
 |-----------------------------------------------------------------------------|
 |   0.1   | 01/05/2017 | Premi\xE8re version                                     |
 |-----------------------------------------------------------------------------|
+|   0.11  | 08/08/2017 | Chargement de simpleKV                               |
+|-----------------------------------------------------------------------------|



More information about the tex-live-commits mailing list