summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-05-02 21:44:16 +0000
committerKarl Berry <karl@freefriends.org>2017-05-02 21:44:16 +0000
commit4b5f083d84e14a50598792a1035cc601ed39baa9 (patch)
tree900d09244b082d1215b1cb12d2b7a1dafdf503b8 /Master/texmf-dist/doc
parent07dc3a0326b2e760470ab8635dcb16036920d5a5 (diff)
hlist (2may17)
git-svn-id: svn://tug.org/texlive/trunk@44158 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/generic/hlist/README21
-rw-r--r--Master/texmf-dist/doc/generic/hlist/hlist-fr.pdfbin0 -> 391818 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/hlist-fr.tex462
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-latex.pdfbin0 -> 106461 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-latex.tex162
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-tex.pdfbin0 -> 78134 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-tex.tex173
7 files changed, 818 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/hlist/README b/Master/texmf-dist/doc/generic/hlist/README
new file mode 100644
index 00000000000..2d5817c0fba
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/README
@@ -0,0 +1,21 @@
+___________________________________
+
+ L'extension
+ hlist
+
+ v0.1
+
+ 1er mai 2017
+___________________________________
+
+Authors : Christian Tellechea
+Maintainer: Christian Tellechea
+E-mail : unbonpetit@openmailbox.org (CT)
+ Commentaires, signalements de bugs et
+ suggestions bienvenus
+Licence : Released under the LaTeX Project Public License v1.3c or
+ later, see http://www.latex-project.org/lppl.txt
+
+----------------------------------------------------------------------
+
+Horizontal and columned lists
diff --git a/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf b/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
new file mode 100644
index 00000000000..f7e8a0923ce
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex b/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
new file mode 100644
index 00000000000..df32418a419
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
@@ -0,0 +1,462 @@
+% !TeX encoding = ISO-8859-1
+% Ceci est la documentation du package "hlist"
+%
+% Fichier compilé avec pdflatex
+\documentclass[frenchb,a4paper,10pt]{article}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[margin=2cm]{geometry}
+\usepackage[bottom]{footmisc}
+\usepackage{libertine,boites,tikz,enumitem,MnSymbol,babel,xspace,listings,hlist}
+\usepackage[scaled=0.8]{luximono}
+\frenchbsetup{og=«,fg=»}
+\def\eTeX{\hbox{$\varepsilon$-\TeX}}
+\def\HLIST{\texttt{\hlstname}\xspace}
+\makeatletter
+\def\code{\expandafter\code@i\string}
+\def\code@i#1{%
+ \begingroup
+ \par\nobreak\medskip\parindent0pt
+ \leftskip.1\linewidth
+ \catcode`\^^I 13 \begingroup\lccode`\~`\^^I \lowercase{\endgroup\def~{\leavevmode\space\space\space\space}}%
+ \let\do\@makeother \dospecials
+ \ttfamily\small\@noligs
+ \obeylines\obeyspaces
+ \def\code@ii##1#1{##1\par\medbreak\endgroup}%
+ \code@ii
+}
+\long\def\grab@toks#1\relax{\gdef\right@content{#1}}
+
+\newcommand\disable@lig[1]{%
+ \catcode`#1\active
+ \begingroup
+ \lccode`\~`#1\relax
+ \lowercase{\endgroup\def~{\leavevmode\kern\z@\string#1}}%
+}
+
+\newcommand\make@car@active[1]{%
+ \catcode`#1\active
+ \begingroup
+ \lccode`\~`#1\relax
+ \lowercase{\endgroup\def~}%
+}
+
+\newcommand\exemple{%
+ \begingroup
+ \parskip\z@
+ \exemple@}
+
+\newcommand\exemple@{%
+ \medbreak\noindent
+ \begingroup
+ \let\do\@makeother\dospecials
+ \make@car@active\ { {}}%
+ \make@car@active\^^M{\par\leavevmode}%
+ \make@car@active\^^I{\space\space}%
+ \make@car@active\,{\leavevmode\kern\z@\string,}%
+ \make@car@active\-{\leavevmode\kern\z@\string-}%
+ \make@car@active\>{\leavevmode\kern\z@\string>}%
+ \make@car@active\<{\leavevmode\kern\z@\string<}%
+ \@makeother\;\@makeother\!\@makeother\?\@makeother\:% neutralise frenchb
+ \exemple@@
+}
+
+\newcommand\exemple@@[1]{%
+ \def\@tempa##1#1{\exemple@@@{##1}}%
+ \@tempa
+}
+
+\newcommand\exemple@@@[1]{%
+ \xdef\the@code{#1}%
+ \endgroup
+ \begingroup
+ \fboxrule0.4pt \fboxsep=5pt
+ \let\breakboxparindent\z@
+ \def\bkvz@top{\hrule\@height\fboxrule}%
+ \def\bkvz@bottom{\hrule\@height\fboxrule}%
+ \let\bkvz@before@breakbox\relax
+ \def\bkvz@set@linewidth{\advance\linewidth\dimexpr-2\fboxrule-2\fboxsep\relax}%
+ \def\bkvz@left{\vrule\@width\fboxrule\kern\fboxsep}%
+ \def\bkvz@right{\kern\fboxsep\vrule\@width\fboxrule}%
+ \breakbox
+ \kern.5ex\relax
+ \begingroup
+ \ttfamily\small\the@code\par
+ \endgroup
+ \kern3pt
+ \hrule height0.1pt width\linewidth depth0.1pt
+ \vskip5pt
+ \newlinechar`\^^M\everyeof{\noexpand}\scantokens{#1}\par
+ \endbreakbox
+ \endgroup
+ \medbreak
+ \endgroup
+}
+\begingroup
+ \catcode`\<13 \catcode`\>13
+ \gdef\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+ \bgroup
+ \verb@eol@error \let\do\@makeother \dospecials
+ \verbatim@font\@noligs
+ \catcode`\<13 \catcode`\>13 \def<{\begingroup$\langle$\itshape}\def>{$\rangle$\endgroup}%
+ \@ifstar\@sverb\@verb}
+\endgroup
+\def\longfrhlstdate@i#1/#2/#3\@nil{\number#3\relax\space \ifcase#2 \or janvier\or février\or mars\or avril\or mai\or juin\or juillet\or aout\or septembre\or octobre\or novembre\or décembre\fi\space#1}
+\edef\longfrhlstdate{\expandafter\longfrhlstdate@i\hlstdate\@nil}
+\makeatother
+\begingroup
+ \catcode`\_11
+ \gdef\cleval#1#2{%
+ \bigbreak\noindent
+ \hbox to .25\linewidth{%
+ \color{teal}\bfseries\ttfamily
+ \detokenize{#1}=$\langle$\detokenize{#2}$\rangle$\hss}\kern2.5em
+ (\textit{Défaut} : {\color{teal}\ttfamily
+ \hlst_eearg\hlst_ifempty{\useKV[hlist]{#1}}
+ {\detokenize{{}}}
+ {\detokenize\expandafter\expandafter\expandafter{\useKV[hlist]{#1}}}})%
+ \par\nobreak
+ }
+\endgroup
+\begin{document}
+\parindent=0pt
+\thispagestyle{empty}
+\begin{titlepage}
+ \begingroup
+ \centering
+ \null\vskip.25\vsize
+ {\large\bfseries L'extension pour \TeX/\LaTeX\par \Huge \hlstname\par}
+ \bigbreak
+ v \hlstver
+ \smallbreak
+ \longfrhlstdate
+ \vskip1.5cm
+ Christian \bsc{Tellechea}\footnote{\texttt{unbonpetit@openmailbox.org}}\par
+ \endgroup
+ \vskip2cm
+ \leftskip=.2\linewidth \rightskip=.2\linewidth \small
+ Cette petite extension sans prétention permet de créer des listes horizontale d'items; s'ils s'étendent sur plus d'une ligne, ils seront alignés les uns au-dessous des autres, en colonnes de largeurs égales, un peu à la manière d'un tableau.
+\end{titlepage}
+\parindent1.5em
+
+\section{Comment ça marche}
+Au tout début, j'avais écrit ce code pour présenter des questions courtes \emph{en ligne}, comme on peut le voir parfois dans les manuels scolaires, pour une économie de place verticale dans mes feuilles d'exercices ou de contrôles\footnote{On ne trouve pas ce genre de questions dans mes contrôles !} :
+
+\exemple/Qu'est ce que \TeX ?
+\begin{hlist}3
+ \hitem Une marque \emph{distributeur} de vêtements que l'on trouve dans l'enseigne Carrefour;
+ \hitem Une unité de mesure de la finesse de filaments;
+ \hitem Un logiciel de composition créé par Donald \bsc{Knuth};
+ \hitem Le nom \emph{de scène} de l'humoriste Jean-Christophe \bsc{Le Texier};
+ \hitem Une membrane coupe-vent.
+\end{hlist}/
+
+Le code initial dont je me suis servi pendant longtemps était bien plus basique que celui de cette extension; depuis, il s'est complexifié, mais les méthodes qu'il mettait en \oe uvre sont restées les mêmes. Or, j'avais programmé les listes horizontales en utilisant des \emph{boites} de \TeX{} et non pas des \emph{alignements}. Évidemment, il semble plus naturel de faire appel aux alignements de \TeX{} pour réaliser une telle tâche, mais leur mise en \oe uvre est plus délicate que celle des boites et j'ai été partisan du moindre effort (et je le suis toujours).
+
+Récemment\footnote{\texttt{http://forum.mathematex.net/latex-f6/macros-a-parametres-indefini-t16733.html\char`\#p155215}}, alors que la finalisation du code avait déjà commencée, j'ai découvert que l'extension \texttt{Tasks} offrait \emph{presque} les mêmes fonctionnalités que \HLIST. Comme \emph{presque} n'est pas synonyme d'\emph{exactement}, je me suis finalement décidé à publier cette extension. Il n'est bien entendu pas dans mon intention de dénigrer le travail de C. \bsc{Niederberger} et encore moins de considérer \HLIST comme meilleure que \texttt{Tasks}, mais au niveau des principales différences entre \texttt{Tasks} et \HLIST, on peut citer :
+\begin{itemize}
+ \item \HLIST peut être utilisé avec \TeX{} (\eTeX en réalité) alors que \texttt{Tasks} requiert \LaTeX;
+ \item les listes de \HLIST peuvent être imbriquées tandis que celles de \texttt{Tasks} ne le peuvent pas;
+ \item les changements de catcode (et donc le « verbatim ») 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} (écrit en \LaTeX3) et, contrairement à ce dernier, \HLIST ne fait appel à aucune extension tierce\footnote{Vu les facilités prétendument offertes par \LaTeX3 et les extensions chargées par \texttt{Tasks}, je suis resté médusé face à la longueur du code de \texttt{Tasks}. Je ne m'explique pas un telle différence entre la taille des deux codes alors que \HLIST embarque son propre système de clés/valeurs, ses macros de développement, etc. Avant de me lancer dans une critique sans ménagement de \LaTeX3 et comme j'ai un fort soupçon que quelque chose m'échappe là-dedans, je serais très 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çais. Cesser de docilement se plier à cette prétendue nécessité de fournir une documentation en anglais, fusse pour des extensions de \TeX/\LaTeX, compte \emph{beaucoup} à 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éfaut : une coupure de page ne peut pas avoir lieu au sein d'un item qui s'étendrait sur plusieurs lignes.
+
+\section{Syntaxe}
+L'environnement \HLIST peut être appelé de ces deux manières:
+\begin{itemize}
+ \item façon \LaTeX: \begin{tabular}[t]{l}\relax\verb|\begin{hlist}[<paramètres>]<nombre>|\\\hskip2em \ttfamily contenu de l'environnement\\\verb|\end{hlist}|\end{tabular}
+ \item façon \TeX: \begin{tabular}[t]{l}\relax\verb|\hlist[<paramètres>]<nombre>|\\\hskip2em \ttfamily contenu de l'environnement\\\verb|\endhlist|\end{tabular}
+\end{itemize}
+
+Les options, décrites plus loin, seront celles qui s'appliquent à cette liste et le \verb|<nombre>| est le nombre de colonnes demandées.
+
+L'environnement \HLIST doit commencer par un item, c'est-à-dire par la macro \verb|\hitem|, éventuellement suivie des arguments optionnels suivants :
+
+\begin{enumerate}
+ \item "\verb|*|" signifiant que cet item doit commencer une nouvelle ligne;
+ \item "\texttt{>}" signifiant que cet item doit s'étendre sur toutes les colonnes restant disponibles sur la ligne en cours ;
+ \item l'argument entre crochets "\verb|[<label>]|" spécifie ce que doit être la numérotation de cet item (voir la description de cette fonctionnalité plus loin);
+ \item l'argument entre parenthèses "\verb|(<n>)|" où \verb|<n>| est un entier, indique sur combien de colonnes doit d'étendre cet item.
+\end{enumerate}
+
+Il faut noter que, s'ils sont présents tous les deux, l'argument optionnel "\verb|*|" \emph{doit} précéder "\texttt{>}". En revanche pour les deux derniers arguments optionnels, l'ordre n'a pas d'importance et donc "\verb|[<label>](<n>)|" et accepté tout comme "\verb|(<n>)[<label>]|".
+
+\exemple/\def\txtA{Après le pain, l'éducation est le premier besoin du peuple.}
+\def\txtB{Comment se fait-il que les enfants étant si intelligents,
+ la plupart des hommes soient bêtes ?\par Cela doit tenir à l'éducation.}
+\hlist3
+ \hitem \txtA \hitem \txtB \hitem \txtA
+ \hitem \txtA \hitem> \txtB
+ \hitem*> \txtB
+ \hitem(2) \txtB \hitem \txtA
+\endhlist/
+
+On peut voir à la page~\pageref{show frame} cette même liste horizontale avec des cadres tracés autour des boites, ce qui peut rendre les choses plus claires pour cet exemple, volontairement complexe et peu réaliste.
+
+\section{Choix des paramètres}
+Nous avons déjà vu qu'écrire \verb|\hlist[<paramètres>]| permet de régler des \verb|<paramètres>| spécifiques à la liste qui suit.
+
+On peut également régler des \verb|<paramètres>| pour toutes les \HLIST à venir avec
+\begin{center}
+\verb|\sethlist{<paramètres>}|
+\end{center}
+mais aussi régler des \verb|<paramètres>| \emph{par défaut} pour les \HLIST à venir avec
+\begin{center}
+\verb|\setdefaulthlist{<paramètres>}|
+\end{center}
+
+Chaque paramètre est de la forme \verb|<clé>=<valeur>| où la \verb|<clé>| est le plus souvent constituée de deux mots (l'espace entre ces deux mots est \emph{nécessaire}). Les espaces avant et après la \verb|<clé>| et la \verb|<valeur>| sont ignorés.
+
+Lorsqu'une \verb|<clé>| est seule, elle est comprise comme un \emph{booléen} qui vaut \verb|true|. Pour indiquer qu'un booléen est faux, il faut assigner la valeur \verb|false|.
+
+Les paramètres de \emph{placement} sont résumés dans le schéma ci-dessous:\par\kern10pt \nobreak
+
+ {\ttfamily\footnotesize
+ \begin{tikzpicture}[line join=round,x=1.33cm,y=1.33cm]
+ % tracé du paragraphe précédent la hlist
+ \draw [dash pattern=on 2pt off 2pt] (11.6,7.6)--(11.1,7.6);
+ \draw(11.1,7.6)--(1.6,7.6)--(1.6,7.1)--(0,7.1)--(0,6.6)--(11.1,6.6);
+ \draw[dash pattern=on 2pt off 2pt] (11.6,6.6)--(11.1,6.6);
+ \draw[-stealth](0,8)--(1.6,8)node[midway,anchor=south]{\string\parindent};
+ % tracé du 1er label
+ \draw(1.2,5.7)--(1.8,5.7)--(1.8,5.3)--(1.2,5.3);
+ \draw[fill=lightgray](1.2,5.7)--(1.6,5.7)--(1.6,5.3)--(1.2,5.3)--cycle;
+ \draw(1.4,5.5)node[anchor=center]{\normalfont\large\bfseries1.};
+ \draw[-stealth](0,5.8)--(1,5.8)node [midway,anchor=south]{left margin};
+ \draw[-stealth](1,6.2)--(2.1,6.2)node [midway,anchor=south]{item offset};
+ \draw[line width=1pt,red](1,5.6)--(1.2,5.6);
+ \draw[-stealth](2.1,5.8)--(1.8,5.8)node [midway,anchor=south]{label sep};
+
+ \draw[-stealth](1.8,5)--(1.2,5)node [pos=0,anchor=south east]{label width};
+ \draw[-stealth](3.2,6.6)--(3.2,5.7)node[midway,anchor=west]{\string\parskip+pre skip};
+ % tracé du 1er texte
+ \draw(2.1,5.7)--(5.5,5.7)--(5.5,4.1)--(2.1,4.1)--cycle;
+ % tracé du 2e label
+ \draw[-stealth](5.5,5.8)--(6.3,5.8)node[midway,anchor=south]{col sep};
+ \draw(6.3,5.7)--(7,5.7)--(7,5.3)--(6.3,5.3)--cycle;
+ % tracé du 2e texte
+ \draw [dash pattern=on 2pt off 2pt](9.5,5.7)--(8.9,5.7);
+ \draw(8.9,5.7)--(7.3,5.7)--(7.3,4.9)--(8.9,4.9);
+ \draw [dash pattern=on 2pt off 2pt](8.9,4.9)--(9.5,4.9);
+ % tracé 2e ligne
+ \draw(1.2,3.4)--(1.8,3.4)--(1.8,3)--(1.2,3)--cycle;
+ \draw [dash pattern=on 2pt off 2pt](3.7,3.4)--(3,3.4);
+ \draw(3,3.4)--(2.1,3.4)--(2.1,3);
+ \draw [dash pattern=on 2pt off 2pt](2.1,3)--(2.1,2.7);
+ \draw[-stealth](2.4,4.1)--(2.4,3.4)node[midway,anchor=west]{\string\parskip+item sep};
+ \end{tikzpicture}}
+
+\section{Placement de la liste de plus haut niveau}
+\cleval{pre skip}{ressort}
+Valeur du \verb|<ressort>| vertical inséré avant la liste \emph{de plus haut niveau d'imbrication}.
+
+\cleval{post skip}{ressort}
+Valeur du \verb|<ressort>| vertical inséré après la liste \emph{de plus haut niveau d'imbrication}.
+
+\cleval{left margin}{dimension}
+Valeur du décalage vers la droite de la liste \emph{de plus haut niveau d'imbrication}.
+
+\exemple/\parindent=2em
+Ceci est un paragraphe s'étendant sur deux ligne et présentant
+une liste de questions mises en forme à l'aide de l'extension \texttt{hlist}
+et avec les paramètres par défaut :
+\hlist3% paramètres par défaut
+ \hitem Question 1 \hitem Question 2
+ \hitem Une question 3
+ \hitem Question 4 \hitem Question 5
+\endhlist
+Ceci est un paragraphe s'étendant sur deux ligne et présentant
+une liste de questions mises en forme à l'aide de l'extension \texttt{hlist}
+et avec des paramètres spécifiés par argument optionnel :
+\hlist[pre skip = 0pt , post skip = 4pt , left margin = \parindent]3
+ \hitem Question 1 \hitem Question 2
+ \hitem Une question 3
+ \hitem Question 4 \hitem Question 5
+\endhlist
+Suite du texte/
+
+\section{Label et texte des items}
+\cleval{item offset}{dimension}
+Cette \verb|<dimension>| est la distance entre la frontière gauche de la boite contenant le label et la frontière gauche de la boite contenant le texte de l'item.
+
+\cleval{label sep}{dimension}
+Espacement entre la boite contenant le label et celle contenant le texte de l'item.
+
+\cleval{label width}{dimension}
+C'est la dimension de la boite accueillant le label. Le label lui-même (en gris sur la figure) peut être plus court que cette dimension auquel cas, il faut jouer avec la clé «\verb|label align|» (voir plus bas) pour indiquer quel alignement on souhaite.
+
+Si en revanche le label est \emph{plus large} que la largeur «\verb|label width|», alors un dépassement du type «\texttt{Overful hbox}» aura lieu, sauf si on met la clé \verb|autoindent| à la valeur \verb|true| (voir plus bas).\medbreak
+
+Les trois clés «\verb|item offset|», «\verb|label sep|» et «\verb|label width|» sont en interdépendance pour le placement du label et plusieurs cas peuvent se présenter :
+
+\begin{itemize}
+ \item si l'une des 3 trois (et seulement \emph{une seule} sur les trois) vaut «\verb|*|», alors, les 2 autres sont calculées de telles sorte que l'égalité suivante soit vérifiée
+ \begin{center}
+ \verb|item offset|${}={}$\verb|label sep|${}+{}$\verb|label width|
+ \end{center}
+ \item si \verb|item offset|${}>{}$\verb|label sep|${}+{}$\verb|label width| comme c'est le cas sur la figure, alors la différence entre le membre de gauche et celui de droite (trait rouge sur la figure) est meublé avec un \verb|\hfill|;
+ \item si \verb|item offset|${}<{}$\verb|label sep|${}+{}$\verb|label width|, ce qui ne devrait pas se produire, un avertissement sera émis.
+\end{itemize}
+
+\cleval{label align}{lettre}
+Cette clé représente la consigne d'alignement du label à l'intérieur de sa boite. Elle n'a de sens que lorsque le label occupe moins de place horizontale que «\verb|label width|». On peut demander une consigne \verb|l|, \verb|r| ou \verb|c| selon que l'on souhaite un alignement à gauche, à droite ou centré.
+
+Seule le première lettre \emph{minuscule} de la valeur est prise en compte. La consigne \verb|left| est donc équivalente à \verb|l|.
+
+\cleval{label}{code}
+Le \verb|<code>| sera exécuté pour afficher le label. Pour afficher des labels en rapport avec le rang de l'item dans la liste, \HLIST met à disposition les macros suivantes :
+\begin{itemize}
+ \item \verb|\arabic{<nom>}| pour afficher un entier;
+ \item \verb|\roman{<nom>}| et \verb|\Roman{<nom>}| pour afficher des nombres romains, en minuscule ou majuscule ;
+ \item \verb|\alpha{<nom>}| et \verb|\Alpha{<nom>}| pour afficher des lettres, minuscules ou majuscules.
+\end{itemize}
+
+L'argument de ces macros est le \emph{nom} d'un compteur au format \LaTeX{}, c'est-à-dire que le registre de compteur qui se trouve derrière est \verb|\c@<nom>|\footnote{Les compteurs de \LaTeX{} pour l'environnement \texttt{enumerate}, à savoir \texttt{enumi}, \texttt{enumii}, etc sont bien évidemment admis dans les arguments des macros ci-dessus. En règle générale, tout compteur de \LaTeX{} l'est également (\texttt{section}, \texttt{equation}, \texttt{page}, \texttt{footnote} ou autre).}.
+
+\HLIST fournit les compteurs nommés «\verb|hilsti|» pour les listes de plus haut niveau, «\verb|hilstii|» pour les listes imbriquées de niveau~1, «\verb|hilstiii|» pour celle de niveau~2, etc.
+
+\cleval{pre label}{code}
+Contient le \verb|<code>| qui sera exécutée avant d'afficher le label.
+
+\cleval{post label}{code}
+Contient le \verb|<code>| qui sera exécutée après avoir affiché le label.
+
+\exemple/Exemple 1 :\hlist[label=\alpha{hlisti})]3
+ \hitem question 1 \hitem question 2 \hitem question 3 \hitem question 4
+ \endhlist
+Exemple 2:\hlist[label=---]3
+ \hitem question 1 \hitem question 2 \hitem question 3 \hitem question 4
+ \endhlist
+Exemple 3:\hlist[pre label=\begingroup\color{red}\itshape,label=\roman{hlisti}-,post label=\endgroup]3
+ \hitem question 1 \hitem question 2 \hitem question 3 \hitem question 4
+ \endhlist/
+
+Lorsque l'argument optionnel entre crochet de \verb|\hitem| est vide, aucun label ne sera affiché et la valeur «\texttt{item offset}» sera nulle pour cet item. Cela peut s'avérer utile dans le cas de listes imbriquées :
+
+\exemple|Exemple avec 2\up e label numéroté :
+\hlist3
+ \hitem question 1
+ \hitem% label numéroté pour cet item !
+ \hlist[label=\alpha{hlistii}.,col sep=1em]3
+ \hitem XX \hitem YY \hitem ZZ
+ \endhlist
+ \hitem question 3 \hitem question 4 \hitem question 5
+\endhlist
+
+Même exemple avec 2\up e label forcé à vide :
+\hlist3
+ \hitem question 1
+ \hitem[]% pas de label pour cet item !
+ \hlist[label=\arabic{hlisti}\alpha{hlistii}.]3
+ \hitem XX \hitem YY \hitem ZZ
+ \endhlist
+ \hitem question 3 \hitem question 4 \hitem question 5
+\endhlist|
+
+\cleval{pre label}{code}
+Il s'agit du \verb|<code>| qui est exécuté juste avant que le label soit affiché.
+
+\cleval{post label}{code}
+Cette valeur contient le \verb|<code>| qui est exécuté juste après l'affichage du label.
+
+\cleval{resume}{booléen}
+Lorsque cette clé est assignée à \verb|true|, la numérotation de la liste n'est pas réinitialisée lorsque la macro \verb|\hlist| est exécutée.
+
+\cleval{autoindent}{booléen}
+Lorsque la largeur du label dépasse la dimension «\verb|label width|, nous avons vu qu'un avertissement du type \texttt{Overful hbox} est produit. Lorsque la clé «\texttt{autoindent}» est mise à \verb|true|, ce dépassement se fait en \emph{indentant la première ligne du texte du label} de telle sorte que subsiste entre le label et le texte l'espace de largeur «\texttt{label sep}». Il n'y a alors plus d'avertissement émis par \TeX.
+
+Ceci fonctionne évidemment pour un schéma de label \emph{global} passé par la clé «\verb|label={<code>}|», mais trouve surtout une utilité pour des labels \emph{exceptionnels} spécifiés par \verb|\hitem[<label>]|.
+
+\exemple|\def\txt{et voici le texte de la question}
+\hlist[item sep=5pt]3
+ \hitem Question 1, \txt \hitem Question 2, \txt \hitem[Bonus] Question 3, \txt
+ \hitem Question 4, \txt \hitem Question 5, \txt
+\endhlist
+Texte intermédiaire...
+\hlist[item sep=5pt,autoindent=true]3
+ \hitem Question 1, \txt \hitem Question 2, \txt \hitem[Bonus] Question 3, \txt
+ \hitem Question 4, \txt \hitem Question 5, \txt
+\endhlist|
+
+\cleval{pre item}{code}
+Le code exécuté juste avant le texte de l'item.
+
+\cleval{post item}{code}
+Le code exécuté juste après le texte de l'item.
+
+\cleval{show label}{booléen}
+Cette clé, lorsqu'elle est assignée à \verb|false|, interdit l'affichage du label et donc, tout se passe comme si les dimensions \texttt{item offset}, \texttt{label width} et \texttt{label sep} valaient \verb|0pt|.
+
+\exemple|Exemple avec \texttt{show label} :
+\hlist3
+ \hitem Question 1 \hitem Question 2
+ \hitem Une question 3
+ \hitem Question 4 \hitem Question 5
+\endhlist
+Exemple sans \texttt{show label} :
+\hlist[show label=false]3
+ \hitem Question 1 \hitem Question 2
+ \hitem Une question 3
+ \hitem Question 4 \hitem Question 5
+\endhlist|
+
+\cleval{list parindent}{dimension}
+Cette clé spécifie l'indentation des paragraphes de l'item, sauf pour le premier paragraphe de chaque item qui reste non indenté.
+
+\cleval{show frame}{booléen}
+Cette clé, lorsqu'elle est assignée à \verb|true|, encadre les boites contenant le label et le texte de l'item.
+
+\label{show frame}\exemple/\def\txtA{Après le pain, l'éducation est le premier besoin du peuple.}
+\def\txtB{Comment se fait-il que les enfants étant si intelligents,
+ la plupart des hommes soient bêtes ?\par Cela doit tenir à l'éducation.}
+\hlist[show frame=true]3
+ \hitem \txtA \hitem \txtB \hitem \txtA
+ \hitem \txtA \hitem> \txtB
+ \hitem*> \txtB
+ \hitem(2) \txtB \hitem \txtA
+\endhlist/
+
+\section{Le code}
+Contrairement à mes habitudes, le code est \emph{abondamment} commenté, trop sans doute. J'espère que cela constituera une source d'information exploitable pour les utilisateurs de cette extension qui souhaitent y comprendre quelque chose ou modifier par eux-même une fonctionnalité.
+
+Toute suggestion, remontée de bug, remarque, demande, ajout ou modification de fonctionnalité est bienvenue; dans ce cas, j'invite les utilisateurs de \HLIST à m'envoyer un email.\medbreak
+
+Le code ci-dessous est l'exact verbatim du fichier \verb|hlist.tex| :
+
+\lstinputlisting[
+ language=TeX,
+ moretexcs={unless,ifcsname,ifdefined,detokenize,numexpr,dimexpr,glueexpr,unexpanded},
+ basicstyle=\small\ttfamily\color{black!25},
+ identifierstyle=\bfseries\color{white},%
+ backgroundcolor=\color{black!85},
+ keywordstyle=\bfseries\color{orange},
+ commentstyle=\color{cyan!66},
+ columns=fixed,
+ alsoletter={\_},
+ tabsize=2,
+ extendedchars=true,
+ showspaces=false,
+ showstringspaces=false,
+ numbers=left,
+ numberstyle=\tiny\ttfamily\color{black},
+ breaklines=true,
+ prebreak={\hbox{$\rhookswarrow$}},
+ breakindent=3em,
+ breakautoindent=true,
+ xleftmargin=1em,
+ xrightmargin=0pt,
+ lineskip=0pt,
+ numbersep=1em,
+ classoffset=1,
+ alsoletter={\_},
+ morekeywords={setKVdefault,setKV,useKVdefault,useKV,ifboolKV,%
+ hlist,endhlist,hitem,hlst_arabic,hlst_roman,%
+ hlst_Roman,hlst_alpha,hlst_Alpha,inithlist,%
+ sethlist,setdefaulthlist},
+ keywordstyle=\bfseries\color{red!85!black},
+ classoffset=0,
+ ]{hlist.tex}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf b/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
new file mode 100644
index 00000000000..8af038836ac
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/hlist/htest-latex.tex b/Master/texmf-dist/doc/generic/hlist/htest-latex.tex
new file mode 100644
index 00000000000..97fdc26984a
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/htest-latex.tex
@@ -0,0 +1,162 @@
+% !TeX encoding = ISO-8859-1
+% Ceci est le fichier de test (pdf)(Xe)(lua)LaTex de l'entension hlist
+%
+% Fichier compilé 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épète #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écédent \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écédent \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éfaut
+Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
+
+\section{Test 3}
+Voici le texte précédent \repeatntimes{15}{bla bla bla }
+\begin{hlist}[pre skip=0pt,post skip=0pt]4
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+\end{hlist}
+Voici le texte intermédiaire \repeatntimes{15}{bla bla bla }
+\begin{hlist}[resume,pre skip=0pt,post skip=0pt]4
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+\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écédent \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écédent \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écédent \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éponse A
+ \hitem Réponse B
+ \hitem Réponse C
+ \hitem Réponse 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écédent \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écédent \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ème 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écédent \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ème item pour remplir une ligne\par
+ Un deuxième 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
diff --git a/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf b/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf
new file mode 100644
index 00000000000..471b4c661d4
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/hlist/htest-tex.tex b/Master/texmf-dist/doc/generic/hlist/htest-tex.tex
new file mode 100644
index 00000000000..e951d06290c
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/hlist/htest-tex.tex
@@ -0,0 +1,173 @@
+% !TeX encoding = ISO-8859-1
+% Ceci est le fichier de test (pdf)(Xe)(lua)tex de l'entension hlist
+%
+% Fichier compilé 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épète #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@section\endcsname
+\def\section#1{%
+ \expandafter\advance\csname c@section\endcsname1
+ \bigbreak\noindent
+ \begingroup\hlstsectionfont \the\csname c@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ères actifs de ponctuation française
+\catcode`\:=13 \def:{\unskip\penalty10000 \ \string:}
+\catcode`\!=13 \def!{\unskip\penalty10000 \ \string!}
+
+%%%%% DÉBUT DU DOCUMENT
+\hlstdebugmodetrue
+\hlsttextfont
+\parindent1.5em
+\begingroup
+ \hfill\hlsttitlefont Fichier de test \TeX\hfill\null\par
+\endgroup
+
+\section{Test 1}
+Voici le texte précédent \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écédent \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éfaut
+Voici le texte qui suit la liste \repeatntimes{15}{bla bla bla }
+
+\section{Test 3}
+Voici le texte précédent \repeatntimes{15}{bla bla bla }
+\hlist[pre skip=0pt,post skip=0pt]4
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+\endhlist
+Voici le texte intermédiaire \repeatntimes{15}{bla bla bla }
+\hlist[resume,pre skip=0pt,post skip=0pt]4
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+ \hitem Item répété
+\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écédent \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écédent \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écédent \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écédent \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ème 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écédent \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ème item pour remplir une ligne\par
+ Un deuxième 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