Les listes

Ou comment maîtriser savamment ses puces

Fleuron

Comment faire des listes à puces

Rien de plus facile que de faire des listes en LaTeX. Il suffit d’utiliser les environnements suivant :

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 cœur. 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 french babel : Chez les anglo-saxons (créateur de LaTeX) les listes ont des puces ronde (•) et chez nous des tirets (–). L’option french 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 à french 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 cœur 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 mains 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.

Changer la numérotation

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}[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 rat ,
\item mouton ,
\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 {blue} \Huge]
\item rat ,
\item mouton ,
\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}

Modifier l'alignement des puces numérotées

Ceci ce fait avec l'option align qui prend 2 valeur left et right qui est l'option par défaut.

avec right

\begin{enumerate}[label=\Roman*., align=right]
\item chien ;
\item rat ;
\item mammouth.
\end{enumerate}

et avec left

\begin{enumerate}[label=\Roman*., align=left]
\item chien ;
\item rat ;
\item mammouth.
\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}[label= \fbox{\arabic*}]
\item pomme ;
\item radis ;
\item choucroute.
\end{enumerate}

Attention \fbox est une commande fragile, c'est à dire qu'elle n'aime pas se retrouver dans des commandes mouvantes. Une commande mouvante (ou mobile) est une commande LaTeX comme le titre, les sections, les légendes… qui se retrouve à plusieurs endroit de ton texte (une section peut être dans le corps du texte, dans l'entête, dans le sommaire). enumerate qui va produire plusieurs item est une commande mouvante. Il faut donc protéger la commande \fbox à l'aide de \protect pour obtenir le résultat espéré.

\begin{enumerate}[label= \protect\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}

\fcolorbox est également une commande fragile, donc à protéger :

\begin{enumerate}[label=\protect\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 :

À 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 aux 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ées par LaTeX (mm, em, \textwidth…).

Lorem ipsum dolor sit amet, consectetuer,
\begin{itemize}[label=--,leftmargin=*]
\item pomme ;
\item radis ;
\item choucroute.
\end{itemize}
adipiscing elit. Ut purus elit, vestibulum ut
\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}

Retour aux Zapf dingbats

Tu as peut être remarqué dans le tableau que certain symboles se suivent comme les numéros entourés d'un cercle. Un truc qui serai bien c'est de pouvoir les utiliser comme suite de numéro.

Voici comment faire :

\begin{enumerate}[label=\protect\ding{\value*}, start=172]
\item pomme ;
\item radis ;
\item choucroute.
\end{enumerate}

Et avec start=40 :

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}