Listes imbriquées

Les listes peuvent être imbriquées. Vous écrivez simplement un autre environnement de liste dans le corps d'un \item d'un itemize ou d'un enumerate. LaTeX compte la profondeur d'imbrication (le niveau) pour vous et change automatiquement l'étiquette en tête de chaque ligne avec cette profondeur. Vous pouvez également mélanger les types – par exemple, une liste numérotée à l’intérieur d’une liste à puces. Il y a cependant une limite : itemize et enumerate s'emboîtent jusqu'à quatre niveaux de profondeur. Cette page explique comment imbriquer, l'étiquette par défaut à chaque niveau, comment mélanger les types et que faire lorsque vous avez besoin de plus de quatre niveaux.

Comment imbriquer

Vous créez une liste imbriquée simplement en plaçant un environnement de liste à l'intérieur du corps du \item d'une autre liste. Écrivez un nouveau \begin{itemize}\end{itemize} (ou enumerate) après l'un des \item externes. La liste interne « appartient » alors à cette entrée externe et LaTeX ajuste automatiquement l'étiquette et l'indentation en fonction de la profondeur. Aucune commande ou option spéciale n'est nécessaire.

document.tex
\begin{itemize}
  \item 果物
  \begin{itemize}
    \item りんご
    \item みかん
  \end{itemize}
  \item 野菜
\end{itemize}

Ici, « Fruits » et « Légumes » se situent au niveau 1, et « Pomme » et « Orange » en dessous d'eux au niveau 2. La liste interne doit être fermée avant la liste externe \end (les environnements doivent s'emboîter proprement). L'indentation est uniquement destinée à votre propre lisibilité et n'affecte pas la sortie — ce qui détermine le niveau est uniquement la structure d'imbrication \begin/\end.

Libellés par défaut par niveau

L'étiquette (le marqueur ou le numéro en tête de chaque ligne) change automatiquement avec le niveau. Pour itemize, les valeurs par défaut sont : niveau 1 : une puce pleine •, niveau 2 un tiret – en gras, niveau 3 un astérisque * et niveau 4 un point centré ·. Chacun vit dans une commande — \labelitemi, \labelitemii, \labelitemiii et \labelitemiv (les i/ii/iii/iv sont des chiffres romains désignant le niveau).

Pour enumerate, les valeurs par défaut sont : niveau 1 « 1. », niveau 2 « (a) », niveau 3 « i. » et niveau 4 « A. ». Ces formats vivent de \labelenumi à \labelenumiv, tandis que les nombres eux-mêmes sont détenus par quatre compteurs, de enumi à enumiv. Le tableau ci-dessous rassemble les deux ensembles de valeurs par défaut.

Niveaudétailler (marqueur)commande itemizeénumérer (numéro)commande énumérer
Level 11er• puce\labelitemi1.\labelenumi
Level 22ème– tiret (gras)\labelitemii(a)\labelenumii
Level 33ème* astérisque\labelitemiiije.\labelenumiii
Level 44ème· point centré\labelitemivR.\labelenumiv

Certaines classes de documents définissent des valeurs par défaut différentes, mais les classes standard (article et amis) utilisent les valeurs ci-dessus. La manière dont chaque compteur enumerate est *imprimé* est décidée par \theenumi via \theenumiv ; par défaut, il s'agit respectivement de \arabic{enumi}, \alph{enumii}, \roman{enumiii} et \Alph{enumiv} (le "." et les parenthèses environnantes sont ajoutés par les commandes \labelenum…). Le nombre combiné affiché lorsqu'un élément est référencé avec \label/\ref est construit à partir du compteur parent : pour qu'une référence de niveau 2 se lise comme "2.1", par exemple, vous la redéfinissez avec le parent \theenumi préfixé - \renewcommand{\theenumii}{\theenumi.\arabic{enumii}}.

Types de listes de mixage

Les listes imbriquées ne doivent pas nécessairement être du même type. Vous pouvez librement insérer un enumerate dans un itemize, un itemize dans un enumerate, etc. Le niveau (profondeur) est compté quel que soit le type : l'étiquette est choisie en fonction du nombre de listes profondes dont vous vous trouvez de l'extérieur. Ainsi, si vous placez un enumerate à l'intérieur d'un élément d'un itemize (niveau 1), ce enumerate est au niveau 2 et obtient donc « (a) (b)… ».

Le point clé est que la limite des « quatre niveaux » pour itemize et enumerate est comptée séparément par type d'environnement. Seuls quatre ensembles d'étiquettes existent pour itemize et quatre pour enumerate, de sorte que les étiquettes s'épuisent lorsqu'une cinquième liste du même type apparaît dans la chaîne d'imbrication. Même dans une pile mixte, atteindre un cinquième niveau de l’un ou l’autre type déclenche l’erreur décrite ci-dessous. En plus de cela, les listes de *n'importe quel* type partagent un plafond global de six niveaux imbriqués : LaTeX ne conserve que six ensembles de paramètres de formatage de liste (indentation, séparation des éléments, etc.), donc une septième liste imbriquée - même en mélangeant les types - s'arrête toujours avec la même erreur Too deeply nested.

Un exemple mixte à trois niveaux

Voici un exemple à trois niveaux qui mélange les types. La liste la plus externe est un enumerate (niveau 1) donnant des étapes numérotées ; à l'intérieur, un itemize (niveau 2) répertorie les ingrédients sous forme de puces ; et à l'intérieur, un autre enumerate (niveau 3) donne les sous-étapes numérotées de la préparation.

document.tex
\begin{enumerate}
  \item 生地を作る
  \begin{itemize}
    \item 小麦粉
    \item\begin{enumerate}
      \item 半分を加えて混ぜる
      \item 残りを少しずつ加える
    \end{enumerate}
  \end{itemize}
  \item 寝かせる
\end{enumerate}

Dans la sortie, « Faire la pâte » et « Laisser reposer » sont au niveau 1 enumerate, ils sont donc numérotés « 1 ». et « 2 ». En dessous d'eux, « Farine » et « Eau » sont au niveau 2 itemize, ils portent donc le tiret gras –. Le enumerate le plus interne, imbriqué dans « Eau », est au niveau 3, donc ses entrées sont par défaut les chiffres romains « i ». et « ii ». Même avec des types mélangés, la même règle s'applique partout : l'étiquette est toujours décidée par le nombre de niveaux de profondeur dans cette liste de l'extérieur.

Aller au-delà de quatre niveaux et changer les étiquettes

L'imbrication de itemize ou enumerate à cinq niveaux ou plus génère l'erreur Too deeply nested. En effet, la norme LaTeX ne fournit que quatre jeux d'étiquettes par type, et avec les environnements standard simples qu'est le plafond. Lorsque vous avez besoin d'une imbrication plus profonde ou que vous souhaitez modifier les étiquettes par niveau proprement et d'un seul coup, le remède standard est le package enumitem.

Chargez enumitem et vous pouvez augmenter la profondeur d'imbrication maximale avec \setlistdepth{<integer>}, puis définir l'étiquette et le formatage pour un niveau donné en nommant le type et le niveau — par exemple \setlist[itemize,5]{...}. Si, à la place, vous souhaitez uniquement modifier l’étiquette d’un niveau parmi les quatre habituels, redéfinir la commande correspondante avec \renewcommand suffit à lui seul.

latex
% 階層ごとに記号・番号を再定義(標準環境のまま)
\renewcommand{\labelitemii}{$\diamond$}      % itemize 第 2 階層 → 菱形
\renewcommand{\labelenumii}{\theenumii)}     % enumerate 第 2 階層 → a) b) ...

Cet exemple change le marqueur de niveau 2 de itemize en un losange (⋄) et l'étiquette de niveau 2 de enumerate sous la forme « a) », « b) ». Lorsque vous souhaitez un style cohérent sur de nombreuses listes, le nommer via les options de enumitem (telles que label=) est plus facile à gérer que cette redéfinition manuelle. Voir les liens ci-dessous pour les détails.