enumitem (formatage, compteurs, en ligne)

enumitem est le package standard pour remodeler itemize, enumerate et description via des options clé=valeur. Au lieu de remplacer manuellement les commandes internes avec \renewcommand, vous écrivez les paramètres entre crochets de l'environnement - \begin{enumerate}[label=(\alph*), leftmargin=*]. Format des étiquettes, espacement entre les éléments, marges, où commence ou reprend la numérotation, même les listes en ligne (run-in) et les types de listes fraîchement définis : presque tout ce qui concerne les listes se trouve ici.

L'idée clé=valeur

Chargez-le dans le préambule avec \usepackage{enumitem}, et les trois environnements de liste de base obtiennent un argument facultatif. Écrivez des paires key=value séparées par des virgules entre parenthèses – \begin{itemize}[...] – et cette liste est configurée. Si une valeur est entièrement entourée d'accolades, la paire externe est supprimée (le comportement par défaut de keyval), donc pour conserver les accolades elles-mêmes, vous les doublez. Le package est maintenu par Javier Bezos ; la version actuelle de CTAN est la v3.11 (2025-02-06).

document.tex
\usepackage{enumitem}
% ...
\begin{itemize}[itemsep=1ex, leftmargin=1cm]
  \item 余白と項目間を調整した箇条書き
  \item 二つめの項目
\end{itemize}

Les mêmes clés peuvent être remplacées dans une hiérarchie — pour l'ensemble du document, par type de liste ou pour une liste (via \setlist, ci-dessous). La valeur la plus spécifique l'emporte, vous pouvez donc définir une politique globale et la remplacer uniquement lorsque cela est nécessaire.

Format d'étiquette et de référence (étiquette, réf)

Dans enumerate, l'étiquette est définie avec label=. À l'intérieur de la valeur, les formes étoilées de \arabic, \alph, \Alph, \roman et \Roman (\arabic* et amis) représentent le compteur actuel à ce niveau. Donc label=(\arabic*) donne (1) (2) (3), label=\alph*) donne a) b) c), et label=\Roman*. donne I. II. III. Ces formes étoilées ne nécessitent aucun argument ; ce sont les orthographes spéciales qui se développent jusqu'à la valeur du compteur à l'intérieur d'une étiquette.

document.tex
\begin{enumerate}[label=(\alph*)]
  \item りんご
  \item みかん
  \item ぶどう
\end{enumerate}

Par défaut, le paramètre label= détermine également l'apparence des références croisées (\ref). Pour donner aux références un format différent, ajoutez ref=. Par exemple, vous pouvez imprimer l'étiquette de la liste sous la forme (1) avec des parenthèses tout en faisant en sorte que \ref produise un simple 1.

document.tex
\begin{enumerate}[label=(\arabic*), ref=\arabic*]
  \item \label{step:one} 下ごしらえ
  \item 加熱する
\end{enumerate}
手順~\ref{step:one} に戻る。

Notez que les valeurs label et ref sont des arguments mobiles, donc les commandes fragiles peuvent avoir besoin de \protect (les compteurs étoilés eux-mêmes conviennent). Il est également utile de se rappeler que la modification de label= met également à jour la représentation du compteur à ce niveau (\theenumi et ainsi de suite).

Espacement et marges (itemsep, leftmargin, …)

Les longueurs que LaTeX utilise en interne deviennent des noms de clé directement dans enumitem. Verticalement : topsep (au-dessus et en dessous de la liste), partopsep (un bit supplémentaire lorsque la liste suit un paragraphe), parsep (entre les paragraphes d'une même entrée) et itemsep (entre les entrées). Horizontalement : leftmargin / rightmargin (les marges latérales), labelsep (l'espace entre l'étiquette et le corps), labelwidth (la largeur de la boîte d'étiquette), itemindent et enumitem propre labelindent (l'espace entre l'extérieur et le bord gauche de la boîte d'étiquette).

CléSignificationAxe
topsepEspace au dessus et en dessous de la listeVerticale
partopsepEspace supplémentaire lorsque la liste suit un paragrapheVerticale
parsepEspace entre les paragraphes dans une entréeVerticale
itemsepEspace entre les entréesVerticale
leftmarginMarge gauche du corps de la listeHorizontale
labelsepEspace entre l'étiquette et le corps de l'entréeHorizontale
labelwidthLargeur de la boîte contenant l'étiquetteHorizontale
labelindentEspace entre l'extérieur et la boîte d'étiquette (ajouté par enumitem)Horizontale
alignAlignement des étiquettes (left / right (par défaut) / parleft)

Ceux-ci ne sont pas indépendants ; ils sont liés par \leftmargin + \itemindent = \labelindent + \labelwidth + \labelsep. Donc, donner * ou ! à certaines clés permet à enumitem de calculer le reste. En particulier, leftmargin=* est le modèle quotidien qui dimensionne la marge gauche de l'étiquette, et labelsep=* est pratique lorsque vous souhaitez que le corps commence à un endroit fixe. align= contrôle si l'étiquette est alignée à gauche, à droite (valeur par défaut) ou dans une parbox alignée à gauche – en rangeant la façon dont les nombres et les marqueurs s'alignent.

Listes et raccourcis compacts (nosep, noitemsep, large)

Quelques raccourcis permettent d'ajuster rapidement l'espacement. nosep met à zéro tout l'espace vertical autour et entre les entrées (topsep, partopsep, parsep et itemsep ensemble à 0 pt) pour une liste bien remplie. noitemsep supprime uniquement l'espace entre les éléments et entre les paragraphes (itemsep=0pt, parsep=0pt) tout en conservant l'espace au-dessus et en dessous de la liste.

document.tex
\begin{itemize}[nosep]
  \item 詰まった項目その一
  \item 詰まった項目その二
  \item 詰まった項目その三
\end{itemize}

Une autre clé pratique est wide. Il annule la marge gauche afin que l'étiquette soit lue comme une partie du texte et des entrées définies comme des paragraphes ordinaires (en interne, elle s'étend en align=left, leftmargin=0pt, labelindent=\parindent, labelwidth=0pt, itemindent=! et autres). Pour modifier l'indentation, transmettez une valeur, comme dans wide=\parindent.

Et pour écrire des étiquettes enumerate dans le style court du package enumerate, chargez-le avec \usepackage[shortlabels]{enumitem}. Ensuite, écrire A, a, I, i ou 1 comme premier élément entre parenthèses signifie respectivement \Alph*, \alph*, \Roman*, \roman* ou \arabic* (par exemple \begin{enumerate}[(1)]).

Démarrage et reprise des numéros (démarrage, reprise)

Il existe également des touches pour la numérotation. start= définit le numéro du premier élément (start=5 commence à 5). Pour interrompre un paragraphe puis continuer la numérotation à partir du enumerate précédent, utilisez resume. Pour reprendre également les paramètres d'option de cette liste précédente, utilisez resume* (cette forme étoilée n'a de sens que entre parenthèses de l'environnement).

document.tex
\begin{enumerate}
  \item 最初の項目
  \item 二つめの項目
\end{enumerate}
途中に説明の段落が入る。
\begin{enumerate}[resume]
  \item 三つめの項目(番号が続く)
\end{enumerate}

resume continue localement. Pour enfiler la numérotation sur plusieurs listes séparées comme une seule unité globale, utilisez la fonctionnalité « série » : marquez la liste de départ avec series=name, puis sur les listes ultérieures, donnez resume=name ou resume*=name.

Paramètres globaux et nouveaux types de listes (\setlist, \newlist)

Écrire les mêmes paramètres à chaque fois est fastidieux. \setlist applique les paramètres en masse à un type et un niveau de liste choisis. \setlist[enumerate,1]{...} cible le niveau 1 de enumerate, \setlist[itemize]{...} cible tous les niveaux de itemize et \setlist{...} (sans crochets) atteint tous les niveaux de chaque liste. Le \setlist* étoilé s'ajoute aux paramètres précédents au lieu de les remplacer.

latex
% プリアンブルで一括設定
\setlist{nosep}                       % すべてのリストの空きを詰める
\setlist[itemize]{leftmargin=*}       % itemize の左余白を自動調整
\setlist[enumerate,1]{label=(\arabic*), ref=\arabic*}

Pour aller plus loin, vous pouvez définir vos propres types de listes. \newlist{name}{type}{max-depth} clone l'une des trois listes de base (enumerate, itemize ou description) dans un nouvel environnement, puis vous lui donnez un aperçu avec \setlist[name]{...} (vous devez au moins définir l'étiquette). Parce que vous pouvez lui donner un nom logique, l’intention du manuscrit est plus claire.

latex
\newlist{steps}{enumerate}{1}
\setlist[steps]{label=\textbf{Step \arabic*.}, leftmargin=*}
% 本文では独自の環境として使える
\begin{steps}
  \item お湯を沸かす
  \item 麺を入れる
\end{steps}

Listes en ligne (run-in)

Vous pouvez également définir des listes horizontalement dans un paragraphe – « listes en ligne ». Chargez le package sous \usepackage[inline]{enumitem} et vous obtenez les environnements étoilés enumerate*, itemize* et description*. Ils partagent l'étiquetage de leurs homologues affichés et des clés telles que label= fonctionnent comme d'habitude.

document.tex
\usepackage[inline]{enumitem}
% ...
必要なものは
\begin{enumerate*}[label=(\arabic*)]
  \item 小麦粉
  \item 砂糖
  \item\end{enumerate*}
の三つです。

La ponctuation dans une liste en ligne est réglée avec des clés telles que itemjoin (entre les éléments ; un espace par défaut), itemjoin* (pour un séparateur différent juste avant le dernier élément) et afterlabel (juste après l'étiquette ; ~ par défaut). Notez que les éléments de la liste en ligne sont encadrés par défaut, donc les flottants, les listes imbriquées et les mathématiques affichées ne peuvent pas y entrer (utilisez mode=unboxed si vous en avez besoin). Ils conviennent aux phrases courtes.