À travers cet article, nous allons voir comment générer des listes à puces personnalisées de ce genre :
Comment créer une liste à puces basique
On définit l’un des trois environnements suivants :
- itemize
- enumerate
- description
Pour ceux qui auraient loupé les cours de latex, pour définir un environnement il suffit de faire :
\begin{itemize} % ... \end{itemize}
Environnement itemize
L’environnement itemize définit une liste d’items non numérotée et chaque item commence par un tiret.
\begin{itemize} \item First \item Second \item Third \end{itemize}
Remarque : les anglo-saxons utilisent des listes avec des puces rondes et nous nous utilisons des tirets. L’option french du package babel se charge de faire la transformation. Le rôle du package enumitem étant également de modifier les listes, les deux packages ne vont pas forcément bien cohabiter. Si vous avez ce problème, il suffit de demander au package french de ne pas s’occuper des listes grâce à la commande \frenchbsetup{StandardLists=true} à placer dans l’entête (avant \begin{document}).
Environnement enumerate
L’environnement enumerate défini une liste d’item numérotée.
\begin{enumerate} \item First \item Second \item Third \end{enumerate}
On peut bien sûr réaliser des sous-listes, dans ce cas précis, l’environnement enumerate va utiliser des lettres minuscules pour la sous-liste et si vous réaliser encore une sous-liste dans cette sous-liste, il utilisera des chiffres romains. Du coup on pourrait obtenir quelque chose du genre :
\begin{enumerate} \item First \begin{enumerate} \item Item \item Item \begin{enumerate} \item Item \end{enumerate} \end{enumerate} \item Second \item Third \end{enumerate}
Environnement description
L’environnement description permet d’associer un mot à sa définition.
\begin{description} \item[CMS :] Un système de gestion de contenu ou SGC... \item[Framework :] En programmation informatique, un framework.... \item[SGBD :] Un système de gestion de base de données... \end{description}
On remerciera wikipédia pour les définitions :3
Utilisation du package enumitem et xcolor
Le package qui nous intéressera le plus c’est enumitem, en effet ce dernier nous permet de personnaliser les puces des listes. Une fois le package inclus avec la commande \usepackage{enumitem}, on peut préciser des options lors de la déclaration de l’environnement d’une liste à puces, par exemple afin d’obtenir un rond à la place d’un tiret, on fera :
\begin{itemize}[label=\textbullet, font=\LARGE] \item First \item Second \item Third \end{itemize}
Le package xcolor permet de définir la couleur que l’on souhaite en fonction par exemple de valeurs RGB, on peut ainsi obtenir la couleur que l’on souhaite, ici on créé du bleu, comme ceci :
\definecolor{blue}{RGB}{51,131,255} ... \begin{itemize}[label=\textbullet, font=\LARGE \color{blue}] \item First \item Second \item Third \end{itemize}
Ce qui nous donne :
On peut appliquer ce genre de changements sur les trois environnements, on peut ainsi changer la numérotation de l’environnement enumerate :
- \Alph* et \alph* : a,b,c… et A, B, C…
- \arabic* : 1,2,3 >…
- \roman* et \Roman* : i, ii, iii… et I, II, III…
\begin{enumerate}[label=\Roman*)]
Le package pifont
Pifont permet de charger la fonte Zapf dingbats, cela va nous permettre d’avoir accès a une large gamme de symboles.
Ensuite pour appeler le symbole, il suffit de faire \ding{numero}, ainsi par exemple pour obtenir la flèche du premier exemple, il suffit de faire \ding{221}. D’autres symboles sont disponibles dans le mode mathématique.
Pour utiliser ce mode, il suffit d’entourer la commande de deux dollars $, donc pour obtenir le symbole environ, il suffit de faire :
\begin{itemize}[label=$\thicksim$, font=\LARGE \color{blue}]
Gérer l’espace entre les éléments d’une liste
On peut utiliser la commande leftmargin pour permettre d’enlever la marge par défaut des listes ou encore pour l’augmenter.
- leftmargin=* : on supprime le retrait
- leftmargin=-2cm : on diminue le retrait de 2, on empiète sur les marges du document
- leftmargin=2cm : on augmente le retrait
\begin{itemize}[label=--,leftmargin=*] \item First \item Second \item Third \end{itemize}
On peut également modifier l’interligne d’une liste grâce à la commande itemsep.
\begin{itemize}[label=--,itemsep=12pt] \item First \item Second \item Third \end{itemize}
Gérer la numérotation de l’environnement enumerate
On peut commencer une liste à partir d’un numéro donné grâce à la commande start. On peut également commencer une liste la fermer et reprendre la numérotation de la liste précédente grâce à l’option resume.
\begin{enumerate}[label=\arabic* --, start=2] \item Second \item Third \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 Fourth \item Fifth \end{enumerate}
Appliquer nos changements sur toutes les listes
C’est bien beau de définir des options sur une liste en particulier mais quand on écrit un rapport, on va vite avoir tendance à vouloir éviter ce genre de définitions, on peut donc bien sûr utiliser une commande afin d’appliquer un style donné pour toutes nos listes. La commande magique se nomme \setitemize (ou encore \setenumerate), voici les options que la commande peut prendre :
\setenumerate[profondeur]{font=..., label=...}
La profondeur comme son nom l’indique permet de préciser le niveau des listes que l’on veut personnaliser (1 : liste principale, 2 sous-liste, 3 sous-sous liste…). On peut également préciser la police que l’on veut utiliser ou encore le label.
\setitemize[0]{font=\bfseries, label=\ding{221} \color{blue} }
Avec l’exemple du dessus, on applique à chaque environnement itemize une flèche bleue pour la liste principale. Attention, toutefois il faut placer la commande dans le préambule du code source, c’est-à-dire avant la commande \begin{document}.
Définir ses propres listes
Enfin, maintenant et si nous créions nos propres listes, on va prendre comme un exemple une liste permettant de définir un exercice. un truc de ce style-là :
Regardons maintenant le code :
\newlist{exo}{enumerate}{2} \setlist[exo,1]{label=Exercice \arabic*:} \setlist[exo,2]{label=Question \alph*)} \begin{document} \begin{exo} \item Ouverture/fermeture \item Gradients/Laplaciens \begin{exo} \item Réaliser un script bash réalisant un gradient \item Réaliser un script bash réalisant un laplacien \end{exo} \item Calculs de distances \end{exo} \end{document}
La commande \newlist{} permet de définir un nom de liste basé sur un environnement existant, ici on utilise un enumerate et on modifie avec une profondeur de deux. Ensuite, on utilise la fonction \setlist{} afin de préciser quel niveau de profondeur on touche et quel effet on va appliquer. Et voilà c’est fini vous avez votre propre environnement et par exemple, ici on pourrait rapidement réaliser une fiche d’exercices.