Maîtriser l’environnement enumerate en LaTeX : Guide complet pour des listes numérotées personnalisées #
Numéroter autrement qu’en 1, 2, 3 n’a rien d’un tour de passe-passe : LaTeX expose ses compteurs, et quelques commandes suffisent pour passer en lettres, en romains, repartir de zéro ou indexer une numérotation sur la section en cours. Voici la syntaxe exacte, vérifiée dans la documentation des paquets concernés, avec un exemple par point.
- Listes : le paquet
enumitemet sa clélabel=(\alph*,\roman*,\arabic*). - Compteurs :
\setcounter,\addtocounter,\stepcounter,\value. - Pages :
\pagenumbering{roman}puis\pagenumbering{arabic}. - Sections :
\renewcommand{\thesection}{...},\numberwithin,\counterwithin.
- Une distribution TeX à jour (TeX Live ou MiKTeX) et un préambule que vous pouvez éditer.
- Les paquets
enumitem,babel,multicol,amsmath, et selon les castitlesecouchngcntr. - Niveau intermédiaire : savoir compiler un document et lire un fichier
.log. Comptez une vingtaine de minutes.
Plan de l'article
- Maîtriser l’environnement enumerate en LaTeX : Guide complet pour des listes numérotées personnalisées
- Syntaxe fondamentale de enumerate pour structurer ses listes
- Adapter et personnaliser le style de numérotation des listes
- Gestion avancée de la hiérarchie et de l’imbrication des énumérations
- Compatibilité des listes numérotées avec le multilinguisme et les paramètres locaux
- Techniques pour intégrer des listes énumérées dans des mises en page complexes
- Personnalisation dynamique : numérotations spéciales et extensions originales
- Piloter les compteurs LaTeX : setcounter, addtocounter et value
- Numéroter les pages autrement : pagenumbering et remise à zéro
- Changer la numérotation des sections : thesection, numberwithin et counterwithin
- Erreurs fréquentes et dépannage
- Questions fréquentes sur la numérotation personnalisée
Syntaxe fondamentale de enumerate pour structurer ses listes #
L’environnement enumerate reste la méthode de référence pour présenter des idées dans un ordre précis. Sa syntaxe repose sur une paire d’ouverture et de fermeture qui encadre les entrées, chaque \item produisant un numéro croissant :
\begin{enumerate}
\item Premier point
\item Deuxième point
\item Troisième point
\end{enumerate}On distingue enumerate de itemize (puces non ordonnées) et de description (entrées définies par l’auteur). La distinction n’est pas cosmétique dans des contenus techniques : une énumération ordonnée signale une progression, une liste à puces une simple collection.
LaTeX standard autorise quatre niveaux d’imbrication, pilotés par les compteurs enumi, enumii, enumiii et enumiv ; au-delà, il faut enumitem et sa commande \setlistdepth{10}. Dans un texte long, mieux vaut s’arrêter à trois niveaux : la lisibilité se dégrade bien avant la limite technique.
Adapter et personnaliser le style de numérotation des listes #
La numérotation arabe est le défaut, mais le paquet enumitem permet de la remplacer par tout ce dont vous avez besoin, via une syntaxe clé=valeur :
\usepackage{enumitem}
% quatre variantes de la clé label, au choix :
\begin{enumerate}[label=\alph*)] % a) b) c)
\begin{enumerate}[label=(\roman*)] % (i) (ii) (iii)
\begin{enumerate}[label=\Alph*.] % A. B. C.
\begin{enumerate}[label=Q\arabic*.] % Q1. Q2. Q3.Les variantes étoilées \alph*, \Alph*, \arabic*, \roman* et \Roman* désignent le compteur courant : pas besoin de le nommer. Le manuel d’enumitem donne ainsi l’exemple label=\emph{\alph*}), qui produit des lettres en italique suivies d’une parenthèse.
La clé ref= dissocie l’étiquette affichée du format des renvois : [label=(\arabic*), ref=\arabic*] affiche « (1) » dans la liste mais « 1 » dans un \ref. Et l’option shortlabels autorise la notation compacte de l’ancien paquet enumerate, \begin{enumerate}[(1)].
Gestion avancée de la hiérarchie et de l’imbrication des énumérations #
Plutôt que de répéter les options à chaque liste, \setlist les fixe globalement, niveau par niveau :
\setlist[enumerate,1]{label=\arabic*.}
\setlist[enumerate,2]{label=\arabic{enumi}.\arabic{enumii}}Pour une numérotation dite juridique — 1., 1.1., 1.1.1. — la clé label* ajoute l’étiquette du niveau parent devant celle du niveau courant. Combinée à \newlist, elle produit un environnement dédié et réutilisable :
\newlist{legal}{enumerate}{10}
\setlist[legal]{label*=\arabic*.}L’alignement se règle avec les noms de paramètres classiques : leftmargin, rightmargin, labelwidth, labelsep, itemindent. Différencier nettement les marqueurs d’un étage à l’autre reste le meilleur garde-fou contre les structures illisibles.
Compatibilité des listes numérotées avec le multilinguisme et les paramètres locaux #
Les exigences typographiques françaises se règlent en chargeant le support français de babel, qui gère notamment les espaces devant la ponctuation haute et la présentation des listes :
À lire VPN et Hadopi : Ce que les internautes français doivent vraiment savoir
\usepackage[french]{babel}
\frenchsetup{StandardEnumerateEnv=true}C’est là que ça coince : babel-french redéfinit les environnements de liste et entre donc en conflit avec une extension qui fait la même chose, enumitem en tête. Sa documentation prévoit le cas avec StandardItemizeEnv=true, StandardEnumerateEnv=true, StandardListSpacing=true, ou StandardLists=true qui neutralise d’un coup toute action sur les listes.
Un mot sur le nom de la commande : \frenchsetup s’appelait \frenchbsetup dans les versions antérieures, conservé comme alias. Deux réglages voisins méritent d’être connus : ThinColonSpace=true remplace l’espace-mot insécable placée avant les deux-points par une espace fine insécable, et \NoAutoSpacing, utilisée dans un groupe, inhibe localement l’insertion automatique d’espaces.
Techniques pour intégrer des listes énumérées dans des mises en page complexes #
Reste à insérer ces listes dans des contextes contraints : colonnes, tableaux, encadrés. Le paquet multicol définit l’environnement multicols, qui compose le texte sur jusqu’à dix colonnes et équilibre par défaut leur hauteur en fin d’environnement :
\usepackage{multicol}
\begin{multicols}{2}
\begin{enumerate}[label=\arabic*., itemsep=0pt]
\item Entrée courte
\item Entrée courte
\end{enumerate}
\end{multicols}Pour densifier sans casser la lecture, jouez sur topsep, parsep, itemsep et partopsep. enumitem fournit trois raccourcis : noitemsep (espace entre items), nosep (tout espace vertical), et le réglage global \setlist{nosep}.
À lire cat Linux : Maîtrisez la concaténation et la lecture de fichiers en ligne de commande
Personnalisation dynamique : numérotations spéciales et extensions originales #
Trois clés d’enumitem couvrent le sur-mesure : start= fixe le numéro du premier item, resume reprend le compteur là où la liste précédente l’a laissé, et series= regroupe plusieurs listes en une unité numérotée continue.
\begin{enumerate}[start=5]
\item Cet item porte le numéro 5
\end{enumerate}
Texte intercalaire.
\begin{enumerate}[resume]
\item La numérotation reprend à 6
\end{enumerate}La variante resume* reprend en plus les options de la liste précédente ; associée à start=1, elle conserve le style tout en repartant de un. Pour un marqueur atypique, la clé font= habille l’étiquette : la documentation d’enumitem va jusqu’à label=\protect\fcolorbox{blue}{yellow}{\protect\ding{\value*}}, révélateur de ce que label accepte.
Piloter les compteurs LaTeX : setcounter, addtocounter et value #
Derrière chaque numéro se cache un compteur. LaTeX en définit une série standard — part, chapter, section, page, figure, table, footnote, equation, enumi à enumiv — et vous pouvez créer les vôtres :
\newcounter{exercice}
\newcounter{question}[exercice] % remis à zéro quand exercice avance
\setcounter{exercice}{3} % valeur explicite
\addtocounter{exercice}{2} % incrément (ou décrément si négatif)
\stepcounter{exercice} % +1, et réinitialise les compteurs dépendants
\refstepcounter{exercice} % +1, et rend le compteur référençable par \label
Exercice \theexercice{} sur \arabic{exercice} au total.Retenez la distinction qui fait perdre le plus de temps : \theexercice imprime la représentation formatée, tandis que \value{exercice} renvoie la valeur numérique, destinée aux calculs, pas à l’affichage. Le format se choisit avec \arabic, \roman, \Roman, \alph, \Alph ou \fnsymbol.
À lire Découvrez les secrets de Java: techniques de test pour une qualité logicielle infaillible
Numéroter les pages autrement : pagenumbering et remise à zéro #
La pagination obéit à la même mécanique. \pagenumbering accepte arabic, roman, Roman, alph et Alph — de quoi paginer les pages liminaires en romains puis basculer en arabe au début du corps :
\pagenumbering{roman}
% pages liminaires : i, ii, iii...
\newpage
\setcounter{page}{5}
\pagenumbering{arabic}
% le corps du document repart à 1Attention à l’ordre : \pagenumbering remet le numéro de page à sa valeur initiale pour chaque style. Pour démarrer à une valeur précise, appelez donc \setcounter{page}{...} après le changement de style, jamais avant.
Changer la numérotation des sections : thesection, numberwithin et counterwithin #
Chaque compteur possède une commande d’affichage \the... redéfinissable. C’est le levier le plus direct pour imposer un format éditorial :
\renewcommand{\thesection}{\thepart.\arabic{section}}
\renewcommand{\thetable}{\Roman{table}}
\setcounter{secnumdepth}{3} % jusqu'où les titres sont numérotés
\section*{Avant-propos} % titre non numéroté
\addcontentsline{toc}{section}{Avant-propos}Pour rattacher un compteur à un autre, amsmath fournit \numberwithin{equation}{section} : les équations deviennent 1.1, 1.2, puis repartent à 2.1 à la section suivante, à accompagner d’un \renewcommand{\theequation}{\thesection\arabic{equation}} pour éviter les points en double. Côté structure, \counterwithin{compteur}{parent} remet un compteur à zéro chaque fois que son parent avance, et \counterwithout défait ce lien : ce sont les deux commandes du paquet chngcntr.
Si c’est l’apparence du titre et non le numéro qui doit changer, passez à titlesec, une interface aux commandes de sectionnement : \titlelabel{\thetitle.\quad} ajoute un point après le numéro, \titleformat*{\section}{\itshape} change la fonte. L’interface avancée expose \titleformat{commande}[forme]{format}{label}{sep}{code-avant}[code-après] et \titlespacing*{commande}{gauche}{avant}{après}[droite].
Erreurs fréquentes et dépannage #
- Charger
enumitemaprès les paquets de langue et de classe qui touchent aux listes. - Déclarer les réglages globaux avec
\setlistdans le préambule, pas liste par liste. - Utiliser
ref=dès que l’étiquette contient des parenthèses ou de la mise en forme. - Recompiler deux fois après avoir touché aux compteurs : les renvois se stabilisent au second passage.
- Imbriquer au-delà de quatre niveaux sans
\setlistdepth: erreur « too deeply nested ». - Laisser babel-french et enumitem se disputer les listes sans
StandardEnumerateEnv. - Écrire
\value{page}dans le texte : cette commande n’imprime rien, elle renvoie un nombre. - Appeler
\setcounter{page}{...}avant\pagenumbering, qui écrasera la valeur.
- Une liste se personnalise avec
enumitemet la clélabel=; tout le reste en découle. - Un compteur se pilote avec
\setcounter,\addtocounteret\stepcounter;\valuesert aux calculs, pas à l’affichage. - La pagination se change avec
\pagenumbering, qui réinitialise le numéro : ajustez ensuite avec\setcounter{page}. - Un format de section se redéfinit via
\renewcommand{\thesection};\numberwithinet\counterwithingèrent les dépendances entre compteurs. - Un conflit de listes en français se résout par
\frenchsetup{StandardEnumerateEnv=true}.
Questions fréquentes sur la numérotation personnalisée #
Comment obtenir des lettres au lieu des chiffres dans une liste ?
enumitem et écrivez \begin{enumerate}[label=\alph*)] pour a), b), c), ou label=\Alph*. pour A., B., C. La variante étoilée renvoie au compteur de la liste en cours.Comment reprendre la numérotation d’une liste interrompue ?
resume sur la seconde liste. Si vous voulez aussi conserver les options de style de la première, employez resume*. Pour un enchaînement sur tout le document, préférez la clé series=.Pourquoi ma personnalisation de liste ne s’applique-t-elle pas en français ?
\frenchsetup{StandardEnumerateEnv=true} après le chargement de babel, ou StandardLists=true pour désactiver entièrement son intervention sur les listes.Comment numéroter les équations par section ?
amsmath, placez \numberwithin{equation}{section} dans le préambule, et ajoutez \renewcommand{\theequation}{\thesection\arabic{equation}} si vous voyez des points en double.Quelle différence entre \thesection et \value{section} ?
\thesection imprime la représentation formatée, telle qu’elle apparaît dans le document. \value{section} renvoie un nombre exploitable par TeX dans un test ou un calcul, et ne compose pas de texte.À noter également : découvrir.




