Comment modifier les environnements de liste?

$\Reponse$ L'environnement list permet de définir son propre style de liste. Sa syntaxe est la suivante :

\begin{list}{label}{mep}
...
\end{list}

L'argument {label} permet de définir le symbole qui sera associé à chaque élément de la liste, {mep} permet de définir la mise en page des éléments de la liste. Les paramètres utilisés pour définir cette mise en page sont les suivants :

  • topsep espace vertical supplémentaire (ajoute à \parskip) inséré entre le texte précédant la liste et le premier objet de la liste;
  • partosep espace vertical supplémentaire inséré devant la liste si celle-ci est précédée d'une ligne blanche;
  • itemsep espace vertical supplémentaire (ajouté à \parsep) inséré entre les éléments d'une liste.

Création d'un environnement de liste:

\newenvironment{maliste}%
{ \begin{list}%
        {$\bullet$}%
        {\setlength{\labelwidth}{30pt}%
         \setlength{\leftmargin}{35pt}%
         \setlength{\itemsep}{\parsep}}}%
{ \end{list} }
 
Utilisation :
\begin{maliste}
   \item premier élément
   \item deuxième élément
   \begin{maliste}
      \item petit 1
      \item petit 2
   \end{maliste}
\end{maliste}

$\Reponse$ Le petit bout de code du source de M. Boyer, définit les commandes :

  • noitemsep pour supprimer tout espacement vertical entre les items des environnements itemize, enumerate et description.
  • doitemsep pour les remettre.

Pour l'utiliser, il suffit de le sauvegarder dans un fichier sty et de l'inclure dans son document par une commande \usepackage.

boyer.sty
%%%% debut macro %%%%
%% -----------------------------------------------
%% Copyright (c) 1993 Hydro-Quebec
%%            mboyer@robot.ireq.ca
%% -----------------------------------------------
 
%% Bring items closer together in list environments
% Prevent infinite loops
\let\orig@Itemize =\itemize
\let\orig@Enumerate =\enumerate
\let\orig@Description =\description
% Zero the vertical spacing parameters
\def\Nospacing{\itemsep=0pt\topsep=0pt%
               \partopsep=0pt\parskip=0pt%
               \parsep=0pt}
% Redefinition de art12.sty pour commencer a la
% marge de gauche
%\leftmargini 1.2em      % 2.5em
 
\def\noitemsep{
% Redefine the environments in terms of the original
% values
\renewenvironment{itemize}
  {\orig@Itemize\Nospacing}{\endlist}
\renewenvironment{enumerate}
  {\orig@Enumerate\Nospacing}{\endlist}
\renewenvironment{description}
  {\orig@Description\Nospacing}%
{\endlist}
}
 
\def\doitemsep{
% Redefine the environments to the original values
\renewenvironment{itemize}
  {\orig@Itemize}{\endlist}
\renewenvironment{enumerate}
  {\orig@Enumerate}{\endlist}
\renewenvironment{description}
  {\orig@Description}{\endlist}
}

$\Reponse$ La macro de \nom{T.}{Murphy} présentée dans cet exemple permet de remplacer les numéros de l'environnement enumerate par des lettres grecques. On pourra préférer appliquer cette macro sur l'environnement enumerate modifié par le package enumerate.

Numéroter en lettres grecques dans enumerate:

\makeatletter
\def\greek#1{\expandafter\@greek
  \csname c@#1\endcsname}
\def\@greek#1{\ifcase#1\or
  $\alpha$\or
  $\beta$\fi}% as many as you
             % need
\renewcommand{\theenumi}{\greek{enumi}}
\makeatother
...
\begin{enumerate}
\item Un
\item Deux
\item Trois
\end{enumerate}

$\Reponse$ Les définitions suivantes permettent de redéfinir les caractères utilisés par l'environnement itemize pour ces différents niveaux d'encapsulation:

\renewcommand{\labelitemi}{\textbullet}
\renewcommand{\labelitemii}{---}
\renewcommand{\labelitemiii}{votre-label-niveau-iii}
\renewcommand{\labelitemiv}{votre-label-niveau-iv}
Avec certains packages, il faut placer ces nouvelles définitions de commande après le \begin{document}.

De même, utilisez \descriptionlabel pour changer le style des étiquettes de l'environnent description.

\renewcommand\descriptionlabel[1]{%
    \hspace\labelsep\normalfont
    \itshape #1:}
produit des étiquettes en italique, avec deux
points :
\begin{description}
   \item[Carte ma\^itresse] As
   \item[Carte ma\^itresse à l'atout] Valet
\end{description}

$\Reponse$ Pour réduire l'espace entre les items de toutes les listes on peut également utiliser le bout de code suivant de \nom{M.}{Wooding}

\makeatletter
\toks@\expandafter{\@listI}
\edef\@listI{\the\toks@\setlength{\parsep}{1pt}}
\makeatother

$\Reponse$ Le package mdwlist, de \nom{M.}{Wooding}, disponible sur https://www.ctan.org/{macros/latex/contrib/mdwtools/} permet de redéfinir certains paramètres de mise en page des listes qui ne sont pas faciles d'accès sous \LaTeX.

composition/texte/paragraphes/modifier_les_environnements_de_liste.txt · Dernière modification: 2018/12/09 11:55 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0