Liste
Les listes
Ou comment maîtriser savamment ses puces
Sommaire
Comment faire des listes à puces
Rien de plus facile que de faire des listes en LaTeX. Il suffit d’utiliser les environnements suivant :
- itemize
- enumerate
- description
Un environnement commence par un : \begin{unEnvironement} et se termine par un \end{unEnvironement}
itemize
C’est une liste d’item, non numérotés commençant par un tiret (–) (c’est un • en anglais).
Un petit rappel de typographie française : Tu mets une minuscule en début d’alinéa lorsqu’il commence par un tiret, ce qui est le cas des listes non numérotées, le premier niveau se termine par un point-virgule (;), le second niveau par une virgule (,) et le dernier item par un point(.).
\begin{itemize} \item premier élément ; \item deuxième élément ; \item le troisième. \end{itemize}

Tu peux, bien évidemment imbriquer les listes (faire des listes de listes).
\begin{itemize} \item premier élément ; \begin{itemize} \item sous liste 1, \item sous liste 2, \begin{itemize} \item sous sous liste A \item sous sous liste B \end{itemize} \end{itemize} \item deuxième élément. \end{itemize}

enumerate
C’est une liste d’item numérotés.
Un petit rappel de typographie française : tu mets une majuscule en début d’alinéa lorsqu’il commence par un numéro ou une lettre de classification.
\begin{enumerate} \item Premier élément ; \item Deuxième élément ; \item Le troisième. \end{enumerate}

Tu peux faire des énumérations d’énumérations. Dans ce cas la sous liste est numérotée avec des lettres minuscules, la suivante en chiffres romains en minuscules, ensuite des lettres majuscules.
\begin{enumerate} \item Premier élément; \begin{enumerate} \item Sous liste 1, \item Sous liste 2, \begin{enumerate} \item Sous sous liste 1, \item Sous sous liste 2, \end{enumerate} \end{enumerate} \item Deuxième élément. \end{enumerate}

description
L’environnement description permet d’associer une définition à un terme.
\begin{description} \item[mot1 :] définition1 ; \item[mot2 :] définition2. \end{description}

On mélange tout
Tu peux imbriquer des listes de types différents.
\begin{description} \item[mot 1:] \begin{enumerate} \item Premier élément ; \begin{itemize} \item sous liste 1, \item sous liste 2, \end{itemize} \item Deuxième élément. \end{enumerate} \item[mot 2 :] définition du mot 2. \begin{itemize} \item sous liste 1, \item sous liste 2, \end{itemize} \end{description}

Changer de puce
Tu trouves le tiret trop sérieux, et tu veux le remplacer par un coeur. Pas de problème, il y a même plusieurs façon de le faire. Je te conseille toutefois d’utiliser le package enumitem de Javier Bezos, qui possède beaucoup de possibilité et est simple à utiliser. De toute manière je te laisse pas trop de choix car c’est son utilisation que je vais expliquer. N’oublies pas de le charger avec la commande
\usepackage{enumitem}
Conflit entre enumitem et frenchb babel : Chez les anglo-saxons (créateur de LaTeX) les listes ont des puces ronde (•) et chez nous des tirets (–). L’option frenchb du package babel se charge habituellement de la transformation. Le rôle du package enumitem est également de modifier les puces des listes. Deux packages qui font la même chose ne cohabitent par forcement bien. La solution (si tu charges enumitem) est de demander à frenchb de ne pas s’occuper des listes, par la commande
\frenchbsetup{StandardLists=true}
à placer dans l’entête de ton source (avant le \begin{document}).
Alors commençons par remplacer le – par un coeur ($\heartsuit$). La commande \heartsuit qui permet de dessiner un coeur est issu des caractères mathématiques d'où les $ qui l'encadre et qui permettent de passer en mode mathématique. Le package enumitem permet d’ajouter des options à itemize. Comme toutes les options en LATEX elles sont entourées de [ ]. Pour changer la puce on utilise l’option label.
\begin{itemize}[label=$\heartsuit$] \item pomme ; \item radis ; \item choucroute. \end{itemize}

Attention
\begin[label=$\heartsuit$]{itemize}
provoque une erreur de compilation !
Changer la taille
Tu utilises les mêmes commandes que pour changer la taille du texte \Huge \huge \LARGE \Large \large \normal \small \footnotesize \scriptsize \tiny. Comme on change l’aspect de la puce on utilise l’option font=
. Le \textbullet dessine le petit rond.
\begin{itemize}[label=\textbullet,font=\Huge] \item pomme ; \item radis ; \item choucroute. \end{itemize}

Changer la couleur
Une fiche expliquera plus en détail la gestion des couleurs. Il faut juste que tu saches pour l’exemple qui va suivre qu’il te faut charger le package xcolor et que tu attribues une couleur avec la commande \color{nomCouleur} avec nomCouleur = red, blue, green, black, white, cyan, magenta, violet, yellow, . . .
\begin{itemize}[label=\textbullet,font=\color{red}] \item pomme ; \item radis ; \item choucroute. \end{itemize}

Changer de puces, de taille et de couleur
Toujours plus fort !
\begin{itemize}[font=\color{magenta} \Large, label=\ding{43}] \item pomme ; \item radis ; \item choucroute. \end{itemize}

Un aparté les Zapf dingbats
Les ciseaux que l'on vient d'écrire avec la commande \ding{43}, font partis d'une font qui s'appelle Zapf dingbats. Pour l'utiliser avec LaTeX, il faut charger le package pifont et appeler le symbole par la commande \ding{numéro}. Le tableau ci-dessous te donne les correspondances. Par exemple \ding{37} dessine un téléphone (%) et \ding{168} un trèfle (¨).

Te voici avec une collection de puces. Il en existe d’autres notament en utilisant le mode mathématique.
Changer la numérotation des enumérations
Une numérotation avec des lettres se fait avec \alph* (minuscules : a, b, c, . . .) et \Alph* (majuscules : A, B, C, . . .), en chiffres arabe \arabic* (par défaut : 1, 2, 3, . . .) et en chiffres romain \roman* (minuscules : i, ii, iii, iv, . . .) et \Roman* (majuscules : I, II , III, IV, . . .).
\begin{enumerate}%orange[label=\Roman*] \item pomme ; \item radis ; \item choucroute. \end{itemize}

\begin{enumerate}[label=\alph*] \item pomme ; \item radis ; \item choucroute. \end{enumerate}
On peut compliquer en définissant un mot, un compteur et un séparateur.
\begin{enumerate}[label=Exercice \Roman* —] \item pomme ; \item radis ; \begin{enumerate}[label=\alph*)] \item \item rat , \item \item mouton , \item \item araignée , \end{enumerate} \item choucroute. \end{enumerate}
Comme pour itemize tu peux modifier l'apparence de la puce à l'aide de font=.
\begin{enumerate}[label=\arabic* — , font=\color{red}] \item pomme ; \item radis ; \begin{enumerate}[label=\alph*), font=\color%red{blue} \Huge] \item \item rat , \item \item mouton , \item \item araignée , \end{enumerate} \item choucroute. \end{enumerate}
Si tu veux que les changements s’appliquent à toutes tes listes, tu utilises la commande :
\setenumerate[profondeur]{font=mesChangements, label=mesChangements}
L’option profondeur est un nombre correspondant à la sous liste que tu veux modifier : 1 pour la liste principale, 2 pour la première sous liste, 3 pour la liste de liste de liste et ainsi de suite. Comme toutes options tu peux la supprimer :
\setenumerate{font=mesChangements, label=mesChangements}
dans ce cas les modifications s’appliquent à toutes les sous listes. Tu places cette commande dans le préambule de ton source (avant le \begin{document}), pour l’appliquer à tout ton document, où à l’endroit du texte à partir duquel tu veux que la modification s’applique.
\setenumerate[1]{font= \bfseries \color{blue}, label= \Roman*.} \setenumerate[2]{font= \itshape \color{red}, label*= \alph*} \begin{enumerate} \item pomme ; \item radis ; \begin{enumerate} \item chien, \item rat, \item mammouth, \end{enumerate} \item choucroute. \end{enumerate}
Numérotation continue des sous-listes
La commande 'label* permet de numéroter la sous liste suivante en reprenant la numérotation de la liste mère. Un petit exemple pour comprendre :
\setenumerate{label*=\arabic*.} \begin{enumerate} \item pomme ; \item radis ; \begin{enumerate} \item chien, \begin{enumerate} \item rouge, \item noire, \item gris, \end{enumerate} \item rat, \item mammouth, \end{enumerate} \item choucroute. \end{enumerate}
Encadrer la numérotation
Tu peux utiliser la commande \fbox{} qui crée un cadre autour d'un texte pour encadrer tes numérotations :
\begin{enumerate}[blue%\fbox{\arabic*}}] \item pomme ; \item radis \item choucroute. \end{enumerate}
Les cadres en couleur}
Avec le package xcolor, tu peux créer un cadre jaune à bord bleu.
\fcolorbox{couleurCadre}{couleurFond}{texte} \begin{enumerate}[label=\fcolorbox{blue}{yellow}{\arabic*}] \item pomme ; \item radis ; \item choucroute. \end{enumerate}
Définir ses propres listes
Imaginons que pour un document tu aies besoin de deux listes :
- une liste de type itemize avec une flèche bleue comme puce
- une autre liste de type énumération avec une liste principale numéroté exercice 1 : , exercice 2 : , exercice 3 : . . . et une sous liste numéroté question a), question b), question c), . . .
À la place de taper les options qui vont bien à chaque fois que tu as besoin d'une liste, avec les risques d'erreurs que cela peut entraîner, il est préférable de créer son propre type de liste.
On va commencer par la liste au flèches bleues. On va donc créer une nouvelle liste de type itemize que l'on va appeler fleche (ce nom est libre tu mets ce que tu veux) par la commande
\newlist{fleche}{itemize}{1}
Le 1 indique la profondeur de liste. Pour cette liste on a pas besoin de sous liste d'où le 1. Maintenant on va indiquer le format de cette liste par la commande
\setlist[fleche]{label=\ding{220},font=\color{blue}}
Tu places ces deux commandes dans le préambule de ton source (avant le \begin{document}). Tu fais appel à cette liste de la façon suivante :
\begin{fleche} \item pomme ; \item radis ; \item choucroute. \end{fleche}
Maintenant nous allons voir comment créer notre liste d'exercices. On va donc créer une nouvelle liste de type enumerate que l'on va appeler exo par la commande :
\newlist{exo}{enumerate}{2}
Pour cette liste on a besoin d'une sous liste (question a), question b), . . .) d'où le 2. Maintenant on va indiquer le format de la liste principale par la commande :
\setlist[exo,1]{label=Exercice \arabic* :}
Le 1 après exo indique la profondeur. Pour le format de la sous liste tu tapes :
\setlist[exo,2]{label=question \alph*)}
Le 2 après exo indique la profondeur de la sous liste. Tu places ces trois commandes dans le préambule de ton source (avant le \begin{document}). Tu fais appel à cette liste de la façon suivante :
\begin{exo} \item pomme ; \item radis ; \begin{exo} \item chien, \item rat, \item mammouth, \end{exo} \item choucroute. \end{exo}
L'une des supériorités de LaTeX est la possibilité de créer facilement ses propres commandes. Cette faculté présentent plusieurs avantages. Tout d'abord de séparer la forme et le fond. Une fois que tu as créé l'ensemble de tes commandes, tu peux te concentrer uniquement sur ce que tu écris. Tu n'as plus à te préoccuper de la forme, tes commandes le feront à ta place. L'autre avantages est la facilité avec laquelle tu peux modifier ton document. Finalement une flèche bleue ne te semble plus appropriée pour ta liste, mais un carré rouge te semble plus adapté. Il te suffis de modifier ta commande (une seule ligne) et toutes les listes de ton document sont changées.
Modifier l'indentation des listes
Comme tu as pu le remarquer les listes ne sont pas alignées sur le texte, elles sont en léger retrait. La commande leftmargin=* supprime ce retrait, leftmargin=2cm augmente le retrait et leftmargin=-2cm le diminue (la liste se retrouve dans la marge).
Les exemples sont donnés avec itemize mais le résultat est identique avec enumerate, et tu peux utiliser toutes les unités accepté par LaTeX (mm, em, \textwidth. . .).
Lorem ipsum dolor sit amet, consectetuer, \begin{itemize}[label=--,leftmargin=*] \item pomme ; \item radis ; \item choucroute. adipiscing elit. Ut purus elit, vestibulum ut \end{itemize} \begin{itemize}[label=--,leftmargin=2cm] \item pomme ; \item radis ; \item choucroute. \end{itemize}% placerat ac, adipiscing vitae, felis. \begin{itemize}[label=--,leftmargin=-1.5cm] \item pomme ; \item radis ; \item choucroute. \end{itemize}%
Modifier l'espace entre les éléments d'une liste
La commande itemsep modifie l'espace interligne d'une liste.
Lorem ipsum dolor sit amet, consectetuer, \begin{itemize}[label=--,itemsep=0pt] \item pomme ; \item radis ; \item choucroute. adipiscing elit. Ut purus elit, vestibulum ut \end{itemize} \begin{itemize}[label=--,itemsep=10pt] \item pomme ; \item radis ; \item choucroute. \end{itemize} placerat ac, adipiscing vitae, felis.
Changer le début de la numérotation
start permet de modifier le numéro de début de l'énumération.
\begin{enumerate}[label=\arabic* --,start=5] \item pomme ; \item radis ; \item choucroute \end{enumerate}
Reprendre la numérotation après une interruption de la liste
Tu peux interrompre la numérotation et de la reprendre un peu plus loin avec l'option resume
\begin{enumerate}[label=\arabic* --] \item pomme ; \item radis ; \item choucroute. \end{enumerate} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. \begin{enumerate}[label=\arabic* --,resume] \item lapin : \item mammouth ; \item truie. \end{enumerate}
Modifier les descriptions
De la même façon tu peux modifier les descriptions. Par exemple en rouge, avec une font sans sériation et en emphase :
\begin{description}[font= \color{red} \sffamily \em] \item[Raoul :] le plus cool ; \item[Robert :] le plus vert ; \item[Raymond :] le plus con. \end{description} \end{verbatim}