Comment interrompre temporairement une liste numérotée ?

Il est souvent pratique d'avoir un texte de commentaire, « en dehors » de la liste, entre les entrées successives d'une liste. La situation est ici fonction du type d'environnement utilisé :

  • avec l'environnement itemize, ce n'est pas un problème, car rien ne distingue les éléments successifs ;
  • avec l'environnement description, les étiquettes des éléments sont sous le contrôle de l'utilisateur et il n'y a donc pas de problème de continuité ;
  • avec l'environnement enumerate, la numérotation de la liste est générée automatiquement et est sensible au contexte. Il faut donc ici conserver l'état du compteur d'énumération pour poursuivre la liste après l'avoir interrompu. C'est ce cas qui est développé ici.

Avec les commandes de base

L'approche consiste ici à conserver l'état de l'énumération dans un compteur créé pour l'occasion, puis à le restaurer lors de la reprise de l'énumération :

\documentclass{article}
\newcounter{saveenum}
 
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
  \setcounter{saveenum}{\value{enumi}}
\end{enumerate}
Cela n'était pas bien compliqué.
\begin{enumerate}
  \setcounter{enumi}{\value{saveenum}}
  \item et complète.
\end{enumerate}
\end{document}

\documentclass{article}
\newcounter{saveenum}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
  \setcounter{saveenum}{\value{enumi}}
\end{enumerate}
Cela n'était pas bien compliqué.
\begin{enumerate}
  \setcounter{enumi}{\value{saveenum}}
  \item et complète.
\end{enumerate}
\end{document}

Cette méthode est raisonnable à petites doses… Les problèmes, en dehors de la lisibilité, sont d'obtenir le bon niveau (faut-il utiliser le compteur enumi, enumii…) et d'éviter d'avoir des listes interrompues dans le commentaire lui-même.

Par ailleurs, si vous suspendez une liste avec un style de numérotation modifié, vous devez fournir à nouveau les paramètres optionnels requis par l'extension enumerate lors de la reprise la liste.

Avec l'extension mdwlist

L'extension mdwlist définit les commandes \suspend et \resume pour simplifier ce processus:

\documentclass{article}
\usepackage{mdwlist}
 
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
\suspend{enumerate}
Cela n'était pas bien compliqué.
\resume{enumerate}
  \item et complète.
\end{enumerate}
\end{document}

\documentclass{article}
\usepackage{mdwlist}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
\suspend{enumerate}
Cela n'était pas bien compliqué.
\resume{enumerate}
  \item et complète.
\end{enumerate}
\end{document}

L'extension permet de tenir compte d'un identifiant facultatif (sur le modèle \suspend[id]{enumerate}) pour vous permettre d'identifier une suspension particulière, et donc de bien l'isoler des autres pour gérer par exemple des suspensions imbriquées.

Tout comme dans la méthode basique, si vous suspendez une liste avec un style de numérotation modifié, vous devez fournir à nouveau les paramètres optionnels requis par l'extension enumerate. La tâche est ici un peu fastidieuse car l'argument optionnel doit être encapsulé, en entier, à l'intérieur d'un argument optionnel de \resume et ceci nécessite l'utilisation d'accolades supplémentaires :

\documentclass{article}
\usepackage{mdwlist}
\usepackage{enumerate}
 
\begin{document}
Cette liste est :
\begin{enumerate}[\textbf{Item} i]
  \item claire ;
  \item précise ;
\suspend{enumerate}
Cela n'était pas bien compliqué.
\resume{enumerate}[{[\textbf{Item} i]}]
  \item et complète.
\end{enumerate}
\end{document}

\documentclass{article}
\usepackage{mdwlist}
\usepackage{enumerate}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}[\textbf{Item} i]
  \item claire ;
  \item précise ;
\suspend{enumerate}
Cela n'était pas bien compliqué.
\resume{enumerate}[{[\textbf{Item} i]}]
  \item et complète.
\end{enumerate}
\end{document}

Avec l'extension expdlist

L'extension expdlist a une manière différente d'aborder le problème, avec sa commande \listpart. L'argument de la commande devient en effet un commentaire entre les éléments de la liste :

\documentclass{article}
\usepackage{expdlist}
 
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
  \listpart{Cela n'était pas bien compliqué.}
  \item et complète.
\end{enumerate}
\end{document}

\documentclass{article}
\usepackage{expdlist}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
  \listpart{Cela n'était pas bien compliqué.}
  \item et complète.
\end{enumerate}
\end{document}

Ceci signifie qu'il n'a même pas à penser à suspendre ou à reprendre la liste, et bien sûr, cela fonctionne aussi bien dans n'importe quel environnement de liste.

Avec l'extension enumitem

L'extension enumitem, dans ses versions récentes, vous permettra également d'interrompre et de reprendre des listes :

\documentclass{article}
\usepackage{enumitem}
 
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
\end{enumerate}
Cela n'était pas bien compliqué.
\begin{enumerate}[resume]
  \item et complète.
\end{enumerate}
\end{document}

\documentclass{article}
\usepackage{enumitem}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}
  \item claire ;
  \item précise ;
\end{enumerate}
Cela n'était pas bien compliqué.
\begin{enumerate}[resume]
  \item et complète.
\end{enumerate}
\end{document}

Cette approche semble tout aussi naturelle que celle de mdwlist et a l'avantage de bien s'adapter aux autres fonctionnalités de l'extension enumitem.

L'extension enumitem permet également la suspension à plusieurs niveaux et la reprise des listes :

\documentclass{article}
\usepackage{enumitem}
 
\begin{document}
Cette liste est :
\begin{enumerate}
\item claire ;
\end{enumerate}
En tant qu'exemple, elle se devait de l'être.
\begin{enumerate}[resume]
\item précise ;
\begin{enumerate}
\item par souci de formalisme, 
\end{enumerate}
Oui, oui, toujours parce qu'elle est exemplaire.
\begin{enumerate}[resume]
\item et par souci de concision ;
\end{enumerate}
\item et complète
\end{enumerate}
\end{document}

\documentclass{article}
\usepackage{enumitem}
\pagestyle{empty}
\begin{document}
Cette liste est :
\begin{enumerate}
\item claire ;
\end{enumerate}
En tant qu'exemple, elle se devait de l'être.
\begin{enumerate}[resume]
\item précise ;
\begin{enumerate}
\item par souci de formalisme, 
\end{enumerate}
Oui, oui, toujours parce qu'elle est exemplaire.
\begin{enumerate}[resume]
\item et par souci de concision ;
\end{enumerate}
\item et complète
\end{enumerate}
\end{document}

Cependant, le commentaire présent dans l'énumération imbriquée apparaît comme s'il s'agissait d'un deuxième paragraphe au sein du deuxième élément de la liste principale, ce qui n'est guère satisfaisant.


Source: Interrupting enumerated lists

2_composition/texte/listes/interrompre_une_liste_numerotee.txt · Dernière modification: 2021/01/28 17:47 par dbitouze
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0