From 4b5f083d84e14a50598792a1035cc601ed39baa9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 2 May 2017 21:44:16 +0000 Subject: hlist (2may17) git-svn-id: svn://tug.org/texlive/trunk@44158 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/hlist/README | 21 + Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf | Bin 0 -> 391818 bytes Master/texmf-dist/doc/generic/hlist/hlist-fr.tex | 462 ++++++++++++ .../texmf-dist/doc/generic/hlist/htest-latex.pdf | Bin 0 -> 106461 bytes .../texmf-dist/doc/generic/hlist/htest-latex.tex | 162 ++++ Master/texmf-dist/doc/generic/hlist/htest-tex.pdf | Bin 0 -> 78134 bytes Master/texmf-dist/doc/generic/hlist/htest-tex.tex | 173 +++++ Master/texmf-dist/tex/generic/hlist/hlist.sty | 6 + Master/texmf-dist/tex/generic/hlist/hlist.tex | 838 +++++++++++++++++++++ 9 files changed, 1662 insertions(+) create mode 100644 Master/texmf-dist/doc/generic/hlist/README create mode 100644 Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf create mode 100644 Master/texmf-dist/doc/generic/hlist/hlist-fr.tex create mode 100644 Master/texmf-dist/doc/generic/hlist/htest-latex.pdf create mode 100644 Master/texmf-dist/doc/generic/hlist/htest-latex.tex create mode 100644 Master/texmf-dist/doc/generic/hlist/htest-tex.pdf create mode 100644 Master/texmf-dist/doc/generic/hlist/htest-tex.tex create mode 100644 Master/texmf-dist/tex/generic/hlist/hlist.sty create mode 100644 Master/texmf-dist/tex/generic/hlist/hlist.tex (limited to 'Master/texmf-dist') 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 Binary files /dev/null and b/Master/texmf-dist/doc/generic/hlist/hlist-fr.pdf 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}[]|\\\hskip2em \ttfamily contenu de l'environnement\\\verb|\end{hlist}|\end{tabular} + \item façon \TeX: \begin{tabular}[t]{l}\relax\verb|\hlist[]|\\\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|| 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|[