Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
3_composition:texte:listes:interrompre_une_liste_numerotee [2018/06/03 14:57] joseph.wright |
3_composition:texte:listes:interrompre_une_liste_numerotee [2021/01/28 17:47] dbitouze Correction de lien interne |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | --- | + | ====== Comment interrompre temporairement une liste numérotée ? ====== |
- | title: Interrupting enumerated lists | + | |
- | category: usage | + | |
- | tags: lists | + | |
- | permalink: /FAQ-interruptlist | + | |
- | --- | + | |
- | It's often convenient to have commentary text, "outside" the list, | + | 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é : |
- | between successive entries of a list. In the case of | + | * avec l'environnement ''itemize'', ce n'est pas un problème, car rien ne distingue les éléments successifs ; |
- | `itemize` lists this is no problem, since there's never | + | * 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é ; |
- | anything to distinguish successive items, while in the case of | + | * 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. |
- | `description` lists, the item labels are under the user's | + | |
- | control so there's no automatic issue of continuity. | + | |
- | For `enumerate` lists, the labels are generated | + | ===== Avec les commandes de base ===== |
- | automatically, and are context-sensitive, so the context (in this | + | |
- | case, the state of the enumeration counter) needs to be preserved. | + | |
- | The belt-and-braces approach is to remember the state of the | + | 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 : |
- | enumeration in your own counter variable, and then restore it when | + | |
- | restarting enumerate: | + | <code latex> |
- | ```latex | + | \documentclass{article} |
\newcounter{saveenum} | \newcounter{saveenum} | ||
- | ... | + | |
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate} | \begin{enumerate} | ||
- | ... | + | \item claire ; |
+ | \item précise ; | ||
\setcounter{saveenum}{\value{enumi}} | \setcounter{saveenum}{\value{enumi}} | ||
\end{enumerate} | \end{enumerate} | ||
- | <Commentary text> | + | Cela n'était pas bien compliqué. |
\begin{enumerate} | \begin{enumerate} | ||
\setcounter{enumi}{\value{saveenum}} | \setcounter{enumi}{\value{saveenum}} | ||
- | ... | + | \item et complète. |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | \end{document} |
+ | </code> | ||
- | This is reasonable, in small doses… Problems (apart from sheer | + | <latexdoc> |
- | verbosity) are getting the level right | + | \documentclass{article} |
- | ("should I use counter `enumi`, `enumii`, …") and remembering not to | + | \newcounter{saveenum} |
- | nest the interruptions (i.e., not to have a separate list, that is | + | \pagestyle{empty} |
- | itself interrupted) in the "commentary text"). | + | \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} | ||
+ | </latexdoc> | ||
- | The [`mdwlist`](https://ctan.org/pkg/mdwlist) package defines commands `\suspend` and | + | 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. |
- | `\resume` that simplify the process: | + | |
- | ```latex | + | Par ailleurs, si vous suspendez une [[2_composition:texte:listes:modifier_le_style_des_listes_numerotees |liste avec un style de numérotation modifié]], vous devez fournir à nouveau les paramètres optionnels requis par l'extension [[ctanpkg>enumerate|enumerate]] lors de la reprise la liste. |
+ | |||
+ | ===== Avec l'extension mdwlist ===== | ||
+ | |||
+ | L'extension [[ctanpkg>mdwlist|mdwlist]] définit les commandes ''\suspend'' et ''\resume'' pour simplifier ce processus: | ||
+ | |||
+ | <code latex> | ||
+ | \documentclass{article} | ||
+ | \usepackage{mdwlist} | ||
+ | |||
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate} | \begin{enumerate} | ||
- | ... | + | \item claire ; |
+ | \item précise ; | ||
\suspend{enumerate} | \suspend{enumerate} | ||
- | <Commentary text> | + | Cela n'était pas bien compliqué. |
\resume{enumerate} | \resume{enumerate} | ||
- | ... | + | \item et complète. |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | \end{document} |
- | The package allows an optional name (as in | + | </code> |
- | `\suspend[id]{enumerate}`) to allow you to identify a | + | |
- | particular suspension, and hence provide a handle for manipulating | + | |
- | nested suspensions. | + | |
- | If you're suspending a [fancy-enumeration list](FAQ-enumerate), | + | <latexdoc> |
- | you need to | + | \documentclass{article} |
- | re-supply the optional "item label layout" parameters required by | + | \usepackage{mdwlist} |
- | the [`enumerate`](https://ctan.org/pkg/enumerate) package when resuming the list, whether by the | + | \pagestyle{empty} |
- | belt-and-braces approach, or by the [`mdwlist`](https://ctan.org/pkg/mdwlist) | + | \begin{document} |
- | `\resume{enumerate}` technique. The task is a little tedious | + | Cette liste est : |
- | in the [`mdwlist`](https://ctan.org/pkg/mdwlist) case, since the optional argument has to be | + | \begin{enumerate} |
- | encapsulated, whole, inside an optional argument to `\resume`, | + | \item claire ; |
- | which requires use of extra braces: | + | \item précise ; |
- | ```latex | + | \suspend{enumerate} |
+ | Cela n'était pas bien compliqué. | ||
+ | \resume{enumerate} | ||
+ | \item et complète. | ||
+ | \end{enumerate} | ||
+ | \end{document} | ||
+ | </latexdoc> | ||
+ | |||
+ | 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 [[2_composition:texte:listes:modifier_le_style_des_listes_numerotees |liste avec un style de numérotation modifié]], vous devez fournir à nouveau les paramètres optionnels requis par l'extension [[ctanpkg>enumerate|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 : | ||
+ | |||
+ | <code latex> | ||
+ | \documentclass{article} | ||
+ | \usepackage{mdwlist} | ||
+ | \usepackage{enumerate} | ||
+ | |||
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate}[\textbf{Item} i] | \begin{enumerate}[\textbf{Item} i] | ||
- | ... | + | \item claire ; |
+ | \item précise ; | ||
\suspend{enumerate} | \suspend{enumerate} | ||
- | <comment> | + | Cela n'était pas bien compliqué. |
\resume{enumerate}[{[\textbf{Item} i]}] | \resume{enumerate}[{[\textbf{Item} i]}] | ||
- | ... | + | \item et complète. |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | \end{document} |
- | The [`enumitem`](https://ctan.org/pkg/enumitem) package, in its most recent | + | </code> |
- | release, will also allow you to resume lists: | + | |
- | ```latex | + | <latexdoc> |
+ | \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} | ||
+ | </latexdoc> | ||
+ | |||
+ | ===== Avec l'extension expdlist ===== | ||
+ | |||
+ | L'extension [[ctanpkg>expdlist|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 : | ||
+ | |||
+ | <code latex> | ||
+ | \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} | ||
+ | </code> | ||
+ | |||
+ | <latexdoc> | ||
+ | \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} | ||
+ | </latexdoc> | ||
+ | |||
+ | 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 [[ctanpkg>enumitem|enumitem]], dans ses versions récentes, vous permettra également d'interrompre et de reprendre des listes : | ||
+ | |||
+ | <code latex> | ||
+ | \documentclass{article} | ||
+ | \usepackage{enumitem} | ||
+ | |||
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate} | \begin{enumerate} | ||
- | ... | + | \item claire ; |
+ | \item précise ; | ||
\end{enumerate} | \end{enumerate} | ||
- | <comment> | + | Cela n'était pas bien compliqué. |
\begin{enumerate}[resume] | \begin{enumerate}[resume] | ||
- | ... | + | \item et complète. |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | \end{document} |
- | which feels just as "natural" as the [`mdwtools`](https://ctan.org/pkg/mdwtools) facility, | + | </code> |
- | and has the advantage of playing well with the other excellent | + | |
- | facilities of [`enumitem`](https://ctan.org/pkg/enumitem). | + | |
- | [`Expdlist`](https://ctan.org/pkg/Expdlist) has a neat way of providing for comments, with its | + | <latexdoc> |
- | `\listpart` command. The command's argument becomes a comment | + | \documentclass{article} |
- | between items of the list: | + | \usepackage{enumitem} |
- | ```latex | + | \pagestyle{empty} |
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate} | \begin{enumerate} | ||
- | \item item 1 | + | \item claire ; |
- | \item item 2 | + | \item précise ; |
- | \listpart{interpolated comment} | + | |
- | \item item 3 | + | |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | Cela n'était pas bien compliqué. |
- | This, you will realise, means it doesn't even have to think about | + | \begin{enumerate}[resume] |
- | suspending or resuming the list, and of course it works equally well | + | \item et complète. |
- | in any of the list environments (thought it's not actually | + | \end{enumerate} |
- | _necessary_ for any but `enumerate`). | + | \end{document} |
+ | </latexdoc> | ||
- | [`Enumitem`](https://ctan.org/pkg/Enumitem) also allows multi-level suspension and resumption | + | Cette approche semble tout aussi naturelle que celle de [[ctanpkg>mdwlist|mdwlist]] et a l'avantage de bien s'adapter aux autres fonctionnalités de l'extension [[ctanpkg>enumitem|enumitem]]. |
- | of lists: | + | |
- | ```latex | + | L'extension [[ctanpkg>enumitem|enumitem]] permet également la suspension à plusieurs niveaux et la reprise des listes : |
+ | |||
+ | <code latex> | ||
+ | \documentclass{article} | ||
+ | \usepackage{enumitem} | ||
+ | |||
+ | \begin{document} | ||
+ | Cette liste est : | ||
\begin{enumerate} | \begin{enumerate} | ||
- | \item outer item 1 | + | \item claire ; |
\end{enumerate} | \end{enumerate} | ||
- | <comment> | + | En tant qu'exemple, elle se devait de l'être. |
\begin{enumerate}[resume] | \begin{enumerate}[resume] | ||
- | \item outer item 2 | + | \item précise ; |
- | % nested enumerate | + | |
\begin{enumerate} | \begin{enumerate} | ||
- | \item inner item 1 | + | \item par souci de formalisme, |
\end{enumerate} | \end{enumerate} | ||
- | <nested comment> | + | Oui, oui, toujours parce qu'elle est exemplaire. |
- | % resume nested enumerate | + | |
\begin{enumerate}[resume] | \begin{enumerate}[resume] | ||
- | \item inner item 2 | + | \item et par souci de concision ; |
\end{enumerate} | \end{enumerate} | ||
- | \item outer item 3 | + | \item et complète |
- | % end outer enumerate | + | |
\end{enumerate} | \end{enumerate} | ||
- | ``` | + | \end{document} |
- | However, the "nested comment" interpolated in the nested enumeration | + | </code> |
- | appears as if it were a second paragraph to "outer item 2", which is | + | |
- | hardly satisfactory. | + | <latexdoc> |
+ | \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} | ||
+ | </latexdoc> | ||
+ | |||
+ | 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:// [[faquk>FAQ-interruptlist|Interrupting enumerated lists]] | ||
+ | {{htmlmetatags>metatag-keywords=(LaTeX,listes et énumérations,couper une liste,interrompre une liste) | ||
+ | metatag-og:title=(Comment interrompre temporairement une liste numérotée) | ||
+ | metatag-og:site_name=(FAQ LaTeX francophone) | ||
+ | }} |