easylist est un package (par Paul Isambert, distribué sur CTAN sous la LPPL) dans lequel vous exprimez des listes profondément imbriquées par le *nombre de caractères marqueurs* au début de chaque ligne. La norme d'imbrication itemize ou enumerate s'arrête à quatre niveaux, mais easylist n'a pas de limite de profondeur. Sa force réside dans la rédaction concise de listes de 5 ou 6 niveaux – idéales pour les documents juridiques et les plans finement structurés.
Le nombre de marqueurs est le niveau
Une liste imbriquée normale empile \begin{itemize} … \item … \end{itemize} plus profondément à chaque niveau. easylist adopte une approche complètement différente. À l'intérieur de \begin{easylist} … \end{easylist}, le nombre de caractères marqueurs au début d'une ligne *est* le niveau de cet élément. Un marqueur signifie niveau 1, deux signifie niveau 2, trois signifie niveau 3, et ainsi de suite – pas de \item, pas d'environnements imbriqués.
Le marqueur est un seul caractère actif — il n'a une signification particulière qu'à l'intérieur de l'environnement easylist et revient à son état ordinaire à l'extérieur. Le marqueur par défaut est le signe de section §, mais comme il est difficile à saisir, une option \usepackage vous permet de passer à un caractère plus simple (voir ci-dessous). Sur cette page, nous utilisons # comme marqueur, comme supposé partout. Pour obtenir #, chargez le package sous \usepackage[sharp]{easylist}.
Voici un exemple minimal utilisant # comme marqueur. Une ligne avec un # est de niveau 1, ## est de niveau 2, ### est de niveau 3. Mettez toujours un espace juste après la série de marqueurs — sans cela, aucun numéro n'est imprimé. Chaque marqueur démarre également automatiquement une nouvelle ligne, donc exécuter des éléments ensemble sur une seule ligne donne le même résultat.
\documentclass{article}
\usepackage[sharp]{easylist}
\begin{document}
\begin{easylist}
# First proposition.
## Interesting comment.
### A note on the comment.
### Another note.
#### By the way...
# Let's start something new.
\end{easylist}
\end{document}Ce traitement numérote automatiquement les éléments par profondeur, avec des séparateurs de points : 1 / 1.1 / 1.1.1 / 1.1.2 / 1.1.2.1 / 2. Si vous sautez un niveau, le niveau ignoré compte pour 0 (par exemple, un élément de niveau 3 juste après un élément de niveau 1 devient 1.0.1).
Choisir le marqueur — pourquoi [at] existe
Vous choisissez le marqueur avec une option de package. Sans aucun, c'est § ; [pilcrow] donne ¶, [sharp] donne #, [at] donne @ et [ampersand] donne &. L'utilisation est identique quel que soit votre choix : le caractère sélectionné ne devient actif qu'entre \begin{easylist} et \end{easylist}.
| Option | Marqueur | |
|---|---|---|
(none) | § (signe de section, par défaut) | par défaut |
pilcrow | ¶ (corbeau) | \usepackage[pilcrow]{easylist} |
sharp | # (signe dièse) | \usepackage[sharp]{easylist} |
at | @ (arobase) | \usepackage[at]{easylist} |
ampersand | & (esperluette) | \usepackage[ampersand]{easylist} |
Il vaut la peine de se demander pourquoi [at] (@) est fourni. # est le caractère de paramètre de LaTeX dans les définitions de macro (#1, #2, …) et a une signification particulière dans tabular et ailleurs. Ainsi, choisir # comme marqueur invite à des conflits dans les définitions de macros et les tableaux. Les personnages actifs sont difficiles au début et se comportent mal à l’intérieur des cases. Dans ces situations, il est plus sûr de passer à un marqueur moins sujet aux conflits tel que [at] (@) ou [ampersand] (&).
Si vous devez combiner un marqueur simple avec des commandes utilisées à l'intérieur de l'environnement, soit définissez ces commandes en dehors de l'environnement easylist, soit utilisez \Activate et \Deactivate (qui rendent le marqueur actif/inactif) dans la liste. Par défaut, dix niveaux de compteurs sont créés ; pour aller plus loin, augmentez le nombre avec une option numérique comme \usepackage[50]{easylist}.
Styliser avec \ListProperties
La numérotation, les marques, l'indentation et le reste de la mise en page sont contrôlés ensemble par \ListProperties(...). Vous écrivez des paires key=value séparées par des virgules entre parenthèses, et \ListProperties affecte tous les éléments et listes suivants. De nombreuses clés ont une forme numérotée par niveau : Numbers s'applique à chaque niveau, Numbers3 au niveau 3 uniquement (en général, key + numéro de niveau). Réinitialisez les valeurs par défaut avec \NewList.
| Clé | Ce qu'il fait | |
|---|---|---|
Numbers / Numbersn | Style de numéro. a=arabe (par défaut), r/R=roman inférieur/supérieur, l/L=lettres inférieures/supérieures, z=Zapf Dingbats | Les styles par niveau sont autorisés |
Mark / FinalMark | Ponctuation entre compteurs (point par défaut). FinalMark est la marque après le dernier compteur | par ex. \ListProperties(Mark=.,FinalMark=) |
Style / Stylen | Police de caractères du numéro et du texte. * cible uniquement le numéro, ** le texte uniquement | Passer \bfseries, \color{blue}, etc. |
Hide / Hiden | Masquer les n premiers compteurs ; vous permet de créer des listes non numérotées | Hide=10000 cache chaque niveau |
Start / Startn* | Valeur de départ du compteur ; le formulaire * le lie à un compteur externe (par exemple \thesection) | \ListProperties(Start1*=\thesection) |
Progressive / Progressive* | La marge gauche s'agrandit avec la profondeur ; le formulaire * conserve le niveau 1 à la marge actuelle | \ListProperties(Progressive*=.5cm) |
Space / Space* | Espace vertical entre les éléments ; le formulaire * se trouve entre des éléments de même niveau | Les valeurs négatives compactent la liste |
Par exemple, \ListProperties(Numbers3=l, FinalMark=) oblige le niveau 3 à utiliser la numérotation des lettres a, b, c… et supprime le point final. Pour utiliser une virgule littérale ou une parenthèse fermante dans une valeur, placez-la entre accolades, comme dans \ListProperties(FinalMark={)}). D'autres touches permettent un réglage précis : Hang (laisser le texte pendre du numéro), Align (aligner les éléments au même niveau), Margin/Indent (marge gauche et retrait du paragraphe), FinalSpace (espace entre le numéro et le texte, par défaut .3em) et CtrCom (envelopper le numéro entier dans une commande telle que \fbox).
Un exemple profondément imbriqué
Sans limite de profondeur, vous pouvez rédiger directement des structures à cinq niveaux et plus, telles que des clauses contractuelles. L'exemple ci-dessous met en gras le niveau 1, les chiffres romains au niveau 2 et les lettres minuscules au niveau 3, en les indentant progressivement en fonction de la profondeur. Notez que l’ajout d’un seul caractère marqueur vous fait descendre d’un niveau plus profond.
\documentclass{article}
\usepackage[sharp]{easylist}
\begin{document}
\ListProperties(Style1*=\bfseries, Numbers2=R, Numbers3=l,
Progressive=1.5em, Space*=2pt)
\begin{easylist}
# Agreement.
## Definitions.
### Party means a signatory hereto.
### Effective Date means the date of last signature.
## Term and termination.
### This Agreement begins on the Effective Date.
#### Either party may terminate on 30 days notice.
##### Notice must be given in writing.
# Miscellaneous.
\end{easylist}
\end{document}Dans cet exemple, les nombres de niveau 1 sont 1 et 2 (gras, arabe), le niveau 2 sont en majuscules romaines et le niveau 3 sont des lettres minuscules, composées comme 1.I.a, 1.II.a. Les niveaux 4 et 5 s'indentent davantage et apparaissent simplement en écrivant #### et ##### . Écrire la même structure avec enumerate imbriqué se bloquerait à quatre niveaux et nécessiterait une configuration supplémentaire (par exemple avec enumitem) pour aller plus loin – avec easylist, vous ajoutez simplement un marqueur.
Quand l'atteindre
easylist est une niche, mais une alternative bienvenue lorsque vous atteignez la limite de quatre niveaux des listes standard. Il brille lorsque vous souhaitez répertorier des éléments à la fois numérotés et approfondis : documents juridiques, termes, spécifications et aperçus à plusieurs niveaux. Pour les listes superficielles ordinaires, les niveaux fortement stylisés ou les listes en ligne, itemize/enumerate ou enumitem sont plus naturels. Étant donné que le marqueur # peut entrer en conflit avec des macros et des tableaux, il est plus sûr dans une liste autonome de niveau texte.