Commentez .

- Titre : Personnaliser ses listes LaTeX avec enumitem

- Auteurs : Maxime Auvy, Vincent Viale, Vincent Viale, Claude Leloup

- Parution : 12 avril 2013

- Licence : Le contenu de cet article a été rédigé par Maxime Auvy et est disponible sous la licence Creative Commons "Paternité Pas d'Utilisation Commerciale". Par contre, les logos developpez.com, en-tête, pied de page, css et look & feel de l'article sont eux sous copyright 2013 developpez.com.

Sommaire

- I. Introduction

- II. Rappels de typographie française

- III. Personnaliser ses listes

- IV. Toujours plus de puces !

- V. Personnalisation des énumérations

- VI. Changer la numérotation dans tout le document

- VII. Créer son propre environnement de liste

- VIII. Modifier l'indentation des listes, l'interligne, et le début de la numérotation

I - Introduction

Aujourd'hui, un petit peu de LaTeX. Je suis en train de taper un rapport pour le boulot, et mon « super » mégabouquin sur LaTeX est toujours sur le feu. Du coup, je me suis dit : pourquoi ne pas en faire un petit guide ?

On va donc parler des listes, vous savez, ces fameuses listes à puces ou non ! C'est vrai que de base, elles sont plutôt pauvres : des tirets, rien du tout, ou des numéros… C'est quand même sympa, parfois, de remplacer ces tirets par un p'tit cœur, non ?

Je ne fais pas ici de rappels sur les environnements de listes (enumerate, itemize, description), pour cela je vous invite à lire un précédent article sur les bases de LaTeX.

Commençons par le début…

II - Rappels de typographie française

Eh oui… Parce que ça, c'est la base, et ce n'est jamais respecté. La (bonne) mise en page d'un document commence là, pourtant !

Chaque élément d'une liste non numérotée (itemize, donc) commence par un tiret (de base, hein), et surtout par une minuscule. De la même façon, les éléments de premier niveau se terminent par un point-virgule (et pas autre chose), les éléments de niveaux supérieurs (dans une liste imbriquée… exemple plus bas) par une virgule. Le dernier élément se termine par un point.

Pour ce qui est des listes numérotées ou classifiées par des lettres : on met une majuscule au début de chaque élément. La ponctuation en fin de ligne est la même qu'au-dessus. Si on imbrique des énumérations, on commence par des chiffres arabes, le niveau du dessous se change en lettres minuscules, et encore en dessous on a des chiffres romains minuscules aussi. Si on veut faire plus de trois niveaux, ça devient un pancake.

L'environnement « description » : là pour le coup, je fais un petit rappel, vu que je n'en ai jamais causé. Chaque élément est de la forme suivante :

\begin{description}
\item[élément 1 :] explication 1 ;
\item[élément 2 :] explication 2.
\end{description}

Bien sûr, il est possible d'imbriquer des listes de types différents :

\begin{enumerate}
\item On commence par expliquer quelques termes ;
\begin{description}
\item[élément 1 :] explication 1 ;
\item[élément 2 :] explication 2.
\end{description}
\item Et on termine par un second élément.

III - Personnaliser ses listes

Quelque chose me dit que c'est ce pour quoi tu es là. Il y a pas mal de façons de faire, mais je vais parler d'une solution qui, si elle me semble bien pratique et simple à maîtriser, n'est pas forcément la meilleure, selon le point de vue de chacun. On va donc utiliser le package enumitem (n'oublie pas de le charger dans ton préambule, parce que je sens poindre le syndrome du « samarchpa »).

Attention, il peut y avoir un conflit entre babel (chargé avec une option de langue française type frenchb) et enumitem. Pourkeuwa ? Parce que babel change déjà les listes anglaises (des points, • ) en listes françaises (les tirets). Deux packages qui font la même chose vont nécessairement finir par se mettre sur la tronche, alors prenons les devants, et ajoutons un petit \frenchbsetup{StandardLists=true} dans le préambule du document.

Je vous avais dit qu'on remplacerait le tiret par un cœur,  alors « let's do that ». Un exemple sera plus parlant qu'un long discours !

</p>
<p style="text-align: justify;">\begin{itemize}[label=$\heartsuit$]
\item réponse A;
\item Obi-Wan Kenobi ;
\item 42.
\end{itemize}

Tu noteras donc, cher lecteur, que l'option entre [ ] se place bien après le type de liste entre { }. Si tu places tes options avant, tu ne récolteras qu'une sorte de diarrhée textuelle (si si) au moment de la compilation.

Les options se cumulent. Ainsi, tu peux changer la taille du cœur pour le faire plus gros, et même le colorer (et dans ce cas, il faut charger le package xcolor et au besoin créer une nouvelle couleur) :

</p>
<p style="text-align: justify;">\begin{itemize}[label=$\heartsuit$, font=\color{magenta} \huge]
\item la réponse D ;
\item nyan cat.
\end{itemize}</p>
<p style="text-align: justify;">

Ce n'est quand même pas bien méchant !

IV - Toujours plus de puces !

Point de pub pour un quelconque médicament pour chaton, simplement un petit « bonus » : avec LaTeX, il est possible de charger une police de symboles, un peu comme avec un traitement de texte classique. Pour cela, il suffit de charger le package pifont dans le préambule !

On appelle les symboles avec une commande spécifique : \ding{}, avec comme argument le numéro correspondant au symbole voulu. Numéro qu'il suffit de prendre dans la table suivante :

Table des symboles

Par exemple, pour le petit cœur, ce sera \ding{164} !

Idem, on peut utiliser (comme je l'ai fait plus haut, en fait, mais sans le préciser - les plus balèzes d'entre vous l'auront remarqué au double $) le mode mathématique pour utiliser ses symboles, comme :

Quelques symboles du mode mathématique

À placer entre deux $ pour qu'il soit reconnu/interprété !

V - Personnalisation des énumérations

Pas d'jaloux, tout le monde a droit au même traitement. On va jouer un peu avec les enumerate !

Changer le type de numérotation :

</p>
<p style="text-align: justify;">\begin{enumerate}[label=\Roman*]
\item Paul le poulpe ;
\item @Zilkos ;
\item hééé gentil canard.
\end{enumerate}</p>
<p style="text-align: justify;">

C'est le label qui fait tout. Il y en a plusieurs :

- Roman* : I , II …

- roman* : i , ii …

- Alph* : A, B, C…

- alph* : a, b, c…

En plus de ça, vous pouvez ajouter un symbole supplémentaire. Je m'explique : si le a, b… ne conviennent pas et que tu veux un a), b)… il te suffit d'ajouter  le symbole après le * :

</p>
<p style="text-align: justify;">\begin{enumerate}[label=\alph*)]</p>
<p style="text-align: justify;">

Encore plus fort et pratique : on peut ajouter un mot ! Je m'en sers quand je crée des exercices pour les cours à domicile…

</p>
<p style="text-align: justify;">\begin{enumerate}[label=Exercice\Roman*--]</p>
<p style="text-align: justify;">

Cet exemple va me numéroter tous les éléments avec des chiffres romains majuscules, en les faisant précéder du mot « Exercice » et terminera par un tiret.

Comme pour les itemize, la couleur, taille de police… sont modifiables, de façon identique.

Il y a aussi d'autres options, comme l'encadrement des numéros, la numérotation continue des sous-listes… Ce sera dans le bouquin (qui sera libre et gratuit, normalement), mais si vous voulez, demandez en commentaire, je répondrai.

VI - Changer la numérotation dans tout le document

Toutes ces modifications, aussi géniales qu'elles soient, ne sont que locales : elles ne s'appliquent qu'à la liste concernée. Comment faire pour qu'elles soient appliquées à l'ensemble du document ? En plaçant dans le préambule une/plusieurs ligne(s) du type :

</p>
<p style="text-align: justify;">\setenumerate[profondeur]{font=xxx, label=yyy}</p>
<p style="text-align: justify;">

La profondeur correspond au niveau de la liste, c'est donc un entier entre 1 et le niveau max de vos listes.

De même pour itemize, sauf que la commande sera \setitemize.

VII - Créer son propre environnement de liste

Là, on attaque les choses sérieuses, pour les « grands ».

Imaginons que vous utilisiez deux types de listes avec enumerate, pour des utilisations différentes. Vous ne pouvez pas définir l'environnement de façon globale et, reconnaissez-le, définir ponctuellement chacune des listes, c'est lourd. On va donc définir deux environnements personnalisés, un pour chacune des listes. C'est parti !

Dans le préambule :

% on définit l'environnement de liste, de la forme \newlist{label}{type de liste}{niveau maxi}
\newlist{exo}{enumerate}{2}
% on définit maintenant chacun des niveaux de la liste : \setlist[label,niveau]{label=xxx}
\setlist[exo,1]{label=Exercice \arabic*--}
\setlist[exo,2]{label=question \alph*)}

Et du coup, dans le document, il suffit de taper :

</p>
<p style="text-align: justify;">\begin{exo}
\item Premier énoncé ;
\begin{exo}
\item Une question,
\item Une autre question.
\end{exo}
\item Second énoncé.
\end{exo}</p>
<p style="text-align: justify;">

Et hop, on a une liste et sous-liste qui dépotent, qui correspondent à ce qu'on voulait, et qui en plus sont simples à appeler. Que demande le peuple ?

VIII - Modifier l'indentation des listes, l'interligne, et le début de la numérotation

Dernier élément de ce tutoriel qui, somme toute, est bien plus long que ce que je comptais faire au départ : lecteur, tu n'es pas sans remarquer que les listes sont (plus ou moins) légèrement décalées par rapport au texte. C'est l'indentation. Pour tout un tas de bonnes raisons, on peut vouloir changer cet écart, l'augmenter, le réduire, ou le supprimer (comme les utilisateurs d'iCraps).

De même, on peut avoir envie de changer l'interligne (l'espace vertical qui sépare deux éléments), ou même de vouloir commencer une énumération à 3.

Toutes ces options sont à placer comme les autres dans les [ ] avec les modifications de police, couleur, puce… et sont valables avec les trois types de listes (y compris description, dont je n'ai que peu parlé) :

- leftmargin=xxx modifie l'indentation, par exemple :

- leftmargin=* supprime l'indentation,

- leftmargin=1 cm décale la liste d'1 cm vers la droite,

- leftmargin=-1 cm décale la liste d'1 cm vers la gauche ;

- itemsep=6 pt modifie l'interligne, qui prend la valeur indiquée ;

- start=3 fait débuter la numérotation à 3.

Super-bonus : tu peux commencer une énumération, y mettre fin, taper un paragraphe, et reprendre la numérotation où tu l'as arrêtée avec l'option resume !

Voilà-voilà, si avec tout ça vos listes ne sont pas parfaites… Je ne sais plus quoi faire. J'espère que ça en aidera plus d'un !

Des fois que : le package enumitem sur le CTAN.

Personnaliser ses listes LaTeX avec enumitem

Auteurs

| Maxime Auvy | Vincent Viale | Vincent Viale | Claude Leloup |