summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-08-08 20:38:28 +0000
committerKarl Berry <karl@freefriends.org>2017-08-08 20:38:28 +0000
commit3a8846b896e8f1b37294b5cd54016bf3b6f58490 (patch)
treefa27d759bb111cc63512b77a7c6aad1b6e3dbeb1
parent5be3c625def41bd2ce4fb607f5b262fd56f89c49 (diff)
hlist (8aug17)
git-svn-id: svn://tug.org/texlive/trunk@44983 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/hlist/README6
-rw-r--r--Master/texmf-dist/doc/generic/hlist/hlist-fr.pdfbin391818 -> 379214 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/hlist-fr.tex11
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-latex.pdfbin106461 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-latex.tex162
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-tex.pdfbin78134 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/hlist/htest-tex.tex173
-rw-r--r--Master/texmf-dist/tex/generic/hlist/hlist.sty3
-rw-r--r--Master/texmf-dist/tex/generic/hlist/hlist.tex257
9 files changed, 29 insertions, 583 deletions
diff --git a/Master/texmf-dist/doc/generic/hlist/README b/Master/texmf-dist/doc/generic/hlist/README
index 2d5817c0fba..ea0b68508fe 100644
--- a/Master/texmf-dist/doc/generic/hlist/README
+++ b/Master/texmf-dist/doc/generic/hlist/README
@@ -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@openmailbox.org (CT)
+E-mail : unbonpetit@netc.fr (CT)
Commentaires, signalements de bugs et
suggestions bienvenus
Licence : Released under the LaTeX Project Public License v1.3c or
diff --git a/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf b/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
index f7e8a0923ce..5501858df47 100644
--- a/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf
+++ 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
index df32418a419..c4b931f8425 100644
--- a/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
+++ b/Master/texmf-dist/doc/generic/hlist/hlist-fr.tex
@@ -2,7 +2,7 @@
% Ceci est la documentation du package "hlist"
%
% Fichier compilé 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éfaut} : {\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@openmailbox.org}}\par
+ Christian \bsc{Tellechea}\par
+ \texttt{unbonpetit@netc.fr}\par
\endgroup
\vskip2cm
\leftskip=.2\linewidth \rightskip=.2\linewidth \small
@@ -158,8 +159,8 @@ Récemment\footnote{\texttt{http://forum.mathematex.net/latex-f6/macros-a-paramet
\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.
+ \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 une telle différence avec la taille de \HLIST, 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, fût-ce 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.
diff --git a/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf b/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
deleted file mode 100644
index 8af038836ac..00000000000
--- a/Master/texmf-dist/doc/generic/hlist/htest-latex.pdf
+++ /dev/null
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
deleted file mode 100644
index 97fdc26984a..00000000000
--- a/Master/texmf-dist/doc/generic/hlist/htest-latex.tex
+++ /dev/null
@@ -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é 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
deleted file mode 100644
index 471b4c661d4..00000000000
--- a/Master/texmf-dist/doc/generic/hlist/htest-tex.pdf
+++ /dev/null
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
deleted file mode 100644
index e951d06290c..00000000000
--- a/Master/texmf-dist/doc/generic/hlist/htest-tex.tex
+++ /dev/null
@@ -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é 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
diff --git a/Master/texmf-dist/tex/generic/hlist/hlist.sty b/Master/texmf-dist/tex/generic/hlist/hlist.sty
index 71b2bb70f29..b122bbd7f74 100644
--- a/Master/texmf-dist/tex/generic/hlist/hlist.sty
+++ b/Master/texmf-dist/tex/generic/hlist/hlist.sty
@@ -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écuté au début de la boite contenant le label
+ pre label = \bfseries% code exécuté au début de la boite contenant le label
}
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/hlist/hlist.tex b/Master/texmf-dist/tex/generic/hlist/hlist.tex
index 2afdd6ac529..1ded7bfb69f 100644
--- a/Master/texmf-dist/tex/generic/hlist/hlist.tex
+++ b/Master/texmf-dist/tex/generic/hlist/hlist.tex
@@ -1,15 +1,15 @@
% !TeX encoding = ISO-8859-1
% Ce fichier contient le code commenté 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@openmailbox.org
+% email: unbonpetit@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ée 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élection 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évelopper ou 2-développer le 2e argument (le 1er étant
% dépouillé 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évelopper 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épouillé 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éfinir le token <espace>
\def\hlst_deftok#1#2{\let#1= #2\relax}\hlst_deftok\hlst_sptok{ }
@@ -101,225 +98,6 @@
{\hlst_ifx{\_futurtok\hlst_toktotest}\__truecode\__falsecode}%
}
-% Ces macros sont utiles pour \hlst_removeextremespaces, qui retire les
-% espaces extrêmes de son argument
-% Voir codes 320-324 (http://progtex.fr/wp-content/uploads/2014/09/code.txt)
-% et pages 339-343 de "Apprendre à 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ème clé/valeur ##############
-%################################################
-% Ceci est le booléen indiquant si la lecture de <clés>=<valeurs> définit les
-% <clés> _par défaut_ ou qu'il s'agit d'une _redéfinition_ des <clés> déjà
-% existantes
-\newif\ifhlst_default
-
-% macros chapeau appelant la même macro avec le booléen préalablement défini
-\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és>=<valeurs>
-\def\hlst_readKV[#1]#2{%
- \hlst_ifempty{#2}
-% Si aucune <clés>=<valeurs> alors qu'on définit les <valeurs> par défaut,
-% message d'erreur et on s'arrête là
- {\ifhlst_default\errmessage{No key/val found, no default key/val defined}\fi}
-% Sinon, initialiser à <vide> la macro \hlst_[<trousseau>] uniquement si on
-% créé les <valeurs> par défaut
- {\ifhlst_default\hlst_argcsname\let{hlst_[#1]}\empty\fi
-% Puis on passe aux choses sérieuses, on va lire un par un tous les éléments
-% <clé>=<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é>=<valeur>" de la liste qui reste à traiter :
-% tout d'abord, on se débarrasse des espaces extrêmes
- \hlst_eearg{\def\__temp}{\hlst_removeextremespaces{#2}}%
-% Si ce qui en résulte est égal 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ésulte est vide (le couple "<clé>=<valeur>" était donc
-% vide ou composé 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é> et la <valeur> du couple lu en
-% prenant soin de mettre à la fin "=<quark>" pour se prémunir du cas où
-% "<clé>=<valeur>" ne contient que la "<clé>" et pas de signe "=", ce qui
-% ferait planter la macro à arguments délimités
- {\expandafter\hlst_find_kv\__temp=\hlst_quark\_nil[#1]%
- }%
-% Lorsque la <clé> et la <valeur> est trouvée et stockée, recommencer et aller
-% lire le prochain couple "<clé>=<valeur>"
- \hlst_readKV_i[#1]%
- }%
-}
-
-% Voici la macro à arguments délimités à qui on a transmis
-% <clé>=<valeur>=<quark> (si <clé>=<valeur> est l'élément lu)
-% ou
-% <clé>=<quark> (si <clé> est seule)
-% et qui va isoler la <clé> 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é>, pas de problème, c'est _obligatoirement_ ce qui est avant le
-% signe "=", que ce signe soit présent dans le couple lu ou pas puisqu'on y a
-% rajouté "=<quark>".
-% On élimine les espaces extrêmes pour obtenir la <clé> définitive stockée dans
-% \__key (il faut 2-développer \hlst_removeextremespaces pour qu'elle donne son
-% argument sans espace extrême)
- \edef\__key{\detokenize\expandafter\expandafter\expandafter{\hlst_removeextremespaces{#1}}}%
-% Pour la <valeur>, on lui ôte d'abord les espaces extrêmes
- \hlst_eearg{\def\__val}{\hlst_removeextremespaces{#2}}%
- \hlst_ifx{\__val\hlst_quark}
-% Si elle est égale au <quark>, alors la <valeur> vaut "true"
- {\def\__val{true}}%
-% Sinon, ôter "=<quark>" de la fin de l'argument #2, éliminer les espaces
-% extrêmes de ce qui en résulte et stocker le tout dans \__val (tout ceci est
-% effectué par la macro \hlst_find_val <valeur>=<quark>)
- {\hlst_find_val#2}%
-% Si on lit les <clés>=<valeurs> par défaut,
- \ifhlst_default
-% assigner à la macro "\hlst_[<trousseau>]_<clé>" la <valeur> trouvée
- \hlst_argcsname\let{hlst_[#3]_\detokenize\expandafter{\__key}}\__val
-% Puis ajouter à la macro "\hlst_[<trousseau>]", qui a été préalablement
-% initialisée à <vide> :
-% \def\hlst_[<trousseau>]_<clé>{<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és les couples <clé>/<valeur> : les
-% <clés> 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ès sa <clé>, il suffit de développer la
-% macro \hlst_[<trousseau>]_<clé>
-% b) pour redéfinir une <clé>, il suffit de redéfinir cette macro avec la
-% nouvelle <valeur>
-% c) il est facile de vérifier qu'une <clé> existe en vérifiant que la macro
-% associée est définie, la primitive \ifcsname le fait très bien
-% d) en revanche, on ne peut pas faire de recherche _inverse_ de façon
-% pratique : il est en effet plus difficile de trouver la (ou les) <clé>
-% contenant une <valeur> donnée, mais cette limitation n'a pas grande
-% importance ici (je ne sais pas si les autres systèmes de <clé>/<valeur>
-% sont programmés de telle sorte que cela soit simple...)
-% Bref, la macro "\hlst_[<trousseau>]" contient donc _toutes_ les définitions
-% des macros définissant les <clés>/<valeurs> _par défaut_ et exécuter
-% "\hlst_[<trousseau>]" remet donc toutes les <clés> à leur <valeur> par défaut.
- \else
-% Dans le cas où on _lit_ des nouvelles <valeurs> pour des <clés>
- \hlst_ifcsname{hlst_[#3]_\__key}
-% Si la <clé> existe (ssi la macro "\hlst_[<trousseau>]_<clé>" est définie),
-% alors assigner la <valeur> à cette macro
- {\hlst_argcsname\let{hlst_[#3]_\__key}\__val}%
-% Sinon, émettre un message d'erreur et ne rien faire de plus
- {\errmessage{Key "\__key" is not defined: nothing is modified}}%
- \fi
-}
-
-% Cette macro à qui on a transmis "<valeur>=<quark>" ne garde que <valeur>, en
-% ôte les espaces extrêmes et stocke le résultat dans \__val
-\def\hlst_find_val#1=\hlst_quark{\hlst_eearg{\def\__val}{\hlst_removeextremespaces{#1}}}
-
-% Cette macro remet toutes les <clés> à leur <valeurs> par défaut en exécutant
-% 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 à la <clé> contenue dans #2
-\def\useKV[#1]#2{%
-% Avec \romannumeral, la <valeur> sera obtenue après _2_ développements de
-% \useKV[<trousseau>]{<clé>}
- \romannumeral\hlst_ifempty{#2}
-% Si la <clé> est vide, message d'erreur (il ne peut y avoir de <valeur>
-% associée à une <clé> vide)
- {\hlst_stop\errmessage{Key name missing}}
- {\hlst_ifcsname{hlst_[#1]_\hlst_removeextremespaces{#2}}
-% Si la macro "\hlst_[<trousseau>]_<clé>" existe, 2-développer 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éveloppable qui teste si #2 (la <clé> du <trousseau>
-% #1) est égale à "true" ou à "false" et selon l'issue, exécute le 1er ou 2e
-% argument qui suit (arguments appelés <vrai> et <faux>)
-\def\ifboolKV[#1]#2{%
-% Cette macro donnera un des 2 arguments <vrai> ou <faux> en _2_ développements
-% grâce au \romannumeral
- \romannumeral\hlst_ifempty{#2}
-% Si la <clé> est vide, message d'erreur
- {\hlst_stop\errmessage{Key name missing}\hlst_second}
- {\hlst_ifcsname{hlst_[#1]_\hlst_removeextremespaces{#2}}
-% Si la <clé> débarrassée de ses espaces extrêmes 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éen acceptable
- {\hlst_stop\errmessage{Value "#1" is not a valid boolean}\hlst_second}%
- }%
-}
-
-% La macro \hlst_ifargtrue{<argument>} teste de façon purement développable si
-% <argument> vaut "true" ou "false".
-% Pour cela, on transmet à \hlst_ifargtrue_i l'argument "<argument>true" qui est
-% délimité 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électionner 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ès "true" dans "true<autre>true",
-% c'est donc "<autre>true".
-% Pour être sûr que <autre> est <vide>, on transmet "<autre>true" à
-% \hlst_ifargtrue_ii qui teste si la réunion de ce qui est avant le
-% premier "true" et ce qui est après 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ède de même 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 ###############
%################################################
@@ -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écuter 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émenter le compteur de label associé à cette imbrication
- \hlst_argcsname\global\advance{c@hlist\romannumeral\hlst_nest} 1
+ \expandafter\global\expandafter\advance\csname c@hlist\romannumeral\hlst_nest\endcsname 1
% Incrémenter le compteur de colonnes du nombre de colonnes sautées précédemment
\advance\hlst_colcnt\hlst_askedmulticol\relax
% Si "*", mettre le compteur de colonnes au maximum pour forcer retour à la
@@ -836,3 +613,5 @@ Versions :
|-----------------------------------------------------------------------------|
| 0.1 | 01/05/2017 | Première version |
|-----------------------------------------------------------------------------|
+| 0.11 | 08/08/2017 | Chargement de simpleKV |
+|-----------------------------------------------------------------------------|