> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/structure-du-document/04-indices.md).

# Index

Dans certains grands documents, par exemple des livres, il est d'usage de dresser une liste alphabétique contenant les principaux termes. Avec LaTeX et le programme d'assistance **imakeidx**, un index peut être généré très facilement.

## Introduction

Voyons un exemple simple et fonctionnel.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex

\begin{document}
\section{Introduction}
Dans cet exemple, plusieurs mots-clés\index{keywords} seront utilisés
qui sont importants et méritent d'apparaître dans l'Index\index{Index}.

Des termes comme generate\index{generate} et some\index{others} apparaîtront
également.

\printindex
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+%0Awhich+are+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+%0Aalso+show+up.+%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

L’image suivante montre le résultat produit par l’exemple ci-dessus :

![Index1OLV2.png](/files/208fb2efd6a87cf28fc0ec748f5a5c7969ebdf4c)

D'abord, le paquet est inclus dans le préambule par la ligne

```latex
\usepackage{imakeidx}
```

Puis la commande `\makeindex` est obligatoire pour que l'index fonctionne et peut prendre certains paramètres pour personnaliser son apparence ; dans les sections suivantes, cela deviendra clair.

Pour ajouter une entrée à l'index, la commande `\index{}` est utilisée, où le mot à ajouter est inséré comme paramètre. Attention, cela n'affichera pas le mot à l'emplacement courant, mais seulement dans l'index.

Enfin, la commande `\printindex` rendra effectivement l'index. Si vous utilisez une localisation particulière au moyen du `paquets babel` paquet, le titre sera traduit en conséquence.

Remarque : au lieu de `imakeidx`, le paquet `makeidx` peut être importé, mais offre moins de possibilités de personnalisation.

## Index sur Overleaf

Lors de l'ajout d'un index à un projet sur Overleaf, il est **important de noter** que pour que l'index se compile correctement, le fichier principal `.tex` doit se trouver dans le répertoire racine du projet, *à l'extérieur de tout dossier*. Cela garantit que les fichiers auxiliaires nécessaires pour générer l'index sont mis en cache de manière à être accessibles au compilateur.

## Entrées et sous-entrées

Comme mentionné dans la section précédente, la commande `\index` ajoutera le mot qui lui est passé à l'index, mais ce n'est pas la seule façon dont elle peut être utilisée.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex

\begin{document}
\section{Introduction}
Dans cet exemple, plusieurs mots-clés\index{keywords} seront utilisés
qui sont importants et méritent d'apparaître dans l'Index\index{Index}.

Des termes comme generate\index{generate} et some\index{others} apparaîtront aussi.
Les termes de l'index peuvent aussi être imbriqués \index{Index!nested}

\clearpage

\section{Deuxième section}
Cette deuxième section\index{section} peut inclure certains mots spéciaux,
et développer ceux déjà utilisés\index{keywords!used}.

\printindex
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+%0Awhich+are+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+also+%0Ashow+up.+Terms+in+the+index+can+also+be+nested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+word%2C+%0Aand+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

L’image suivante montre le résultat produit par l’exemple ci-dessus :

![Index2OLV2.png](/files/a997a21ea99b59700a6e18ac32a55b15dcc74423)

Il est d'usage d'étendre les termes de l'index pour inclure des adjectifs particuliers. Par exemple, le mot *Field* peut avoir une signification particulière s'il est précédé de l'adjectif *finite* ou suivi de *of characteristic 0*, et il peut être un peu fastidieux d'ajouter différents types de *Field*comme entrées séparées dans l'index. Dans de tels cas, vous pouvez ajouter un point d'exclamation "!" qui ajoutera les termes après ce signe comme sous-entrées du mot principal *Field*.

Dans l'exemple, le mot « Index » a le mot « nested » comme sous-entrée.

## Mise en forme de l'index

Une mise en forme simple de l'index, comme modifier le titre de l'index, ajouter plusieurs colonnes et changer la largeur des colonnes, peut être réalisée facilement en passant des valeurs optionnelles à `\makeindex`:

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index]

\begin{document}
\section{Introduction}
Dans cet exemple, plusieurs mots-clés\index{keywords} seront utilisés, qui
sont importants et méritent d'apparaître dans l'Index\index{Index}.

Des termes comme generate\index{generate} et some\index{others} apparaîtront aussi.
Les termes de l'index peuvent aussi être imbriqués \index{Index!nested}

\clearpage

\section{Deuxième section}
Cette deuxième section\index{section} peut inclure certains mots spéciaux,
et développer ceux déjà utilisés\index{keywords!used}.

\printindex
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%5Bcolumns%3D3%2C+title%3DAlphabetical+Index%5D%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+which+%0Aare+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+also+%0Ashow+up.+Terms+in+the+index+can+also+be+nested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+word%2C+%0Aand+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

L’image suivante montre le résultat produit par l’exemple ci-dessus :

![Index3OLV2.png](/files/9223eb30f6961d5a44c2e12078782b3b220abcba)

Dans cet exemple, l'index est présenté dans un format à trois colonnes avec le paramètre `columns=3`, et le titre est changé en « Alphabetical Index » par `title=Alphabetical Index`; ces paramètres sont passés à `\makeindex` dans le préambule. Voir le [guide de référence](#reference-guide) pour la liste des paramètres disponibles et leur description.

### Utilisation de fichiers de style

Pour personnaliser davantage l'index, on peut utiliser un fichier de style. Les fichiers de style informent `makeindex` sur le format prévu de la sortie finale. Les fichiers de style contiennent une liste de `<key, value>` paires. Par exemple, si l'on veut regrouper les termes de l'index par leur lettre initiale et aligner les numéros de page à droite, le fichier de style suivant fera l'affaire :

```latex
headings_flag 1

heading_prefix "\n\\centering\\large\\sffamily\\bfseries%
\\noindent\\textbf{"heading_suffix "}\\par\\nopagebreak\n"

item_0 "\n \\item \\small "

delim_0 " \\hfill "
delim_1 " \\hfill "
delim_2 " \\hfill "
```

Les clés modifient différents éléments dans la sortie de l'index :

* `headings_flag 1` permet le regroupement en insérant l'en-tête de groupe (symboles, nombres ou lettres) avant un nouveau groupe.
* `heading_prefix` formate l'en-tête à insérer avant le début d'une nouvelle lettre. Il utilise des commandes de mise en forme classiques pour la famille de police, la taille de police et l'alignement, mais les antislashs doivent être échappés en utilisant deux antislashs au lieu d'un seul.
* `item_0` est ce qui sera inséré entre deux éléments principaux.
* `delim_*` est le délimiteur à insérer entre la clé et le premier numéro de page.

Pour une liste complète des clés et des valeurs à utiliser dans un fichier .ist, voir [Le tableau inclus dans le guide de référence](#keys-to-create-styles-files).

Supposons que le fichier précédent soit enregistré sous le nom "example\_style.ist". Pour l'utiliser dans le document, nous ajoutons le paramètre `options= -s example_style.ist` dans le `\makeindex` commande.

```latex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index,
           options= -s example_style.ist]

\begin{document}

\tableofcontents

\section{Introduction}
Dans cet exemple, plusieurs mots-clés\index{keywords} seront utilisés, qui sont importants et méritent d'apparaître dans l'Index\index{Index}.

Des termes comme generate\index{generate}, une grande\index{great} liste et d'autres\index{others} termes qui pourraient être importants\index{important}
apparaîtront également. Les termes de l'index peuvent aussi être imbriqués \index{Index!nested}

\clearpage

\section{Deuxième section}
Cette deuxième section\index{section} peut inclure certains mots spéciaux, et développer ceux déjà utilisés\index{keywords!used}.

\printindex
\end{document}
```

[Ouvrir un exemple utilisant un fichier de style d'index sur Overleaf](https://www.overleaf.com/project/new/template/20614?id=70756423\&templateName=Using+an+index+style+file\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

L’image suivante montre le résultat produit par l’exemple ci-dessus :

![Index4OLV2.png](/files/8ef93dc99757de176646da6eecf89bad332bc9e5)

## Inclure l'index dans la table des matières

Par défaut, l'index n'est pas inclus dans la table des matières ; cela peut être facilement modifié.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index, intoc]

\begin{document}
\tableofcontents

\section{Introduction}
Dans cet exemple, plusieurs mots-clés\index{keywords} seront
utilisés, qui sont importants et méritent d'apparaître dans le
Index\index{Index}.

Des termes comme generate\index{generate} et some\index{others}
apparaîtront également. Les termes de l'index peuvent aussi être
imbriqués \index{Index!nested}

\clearpage

\section{Deuxième section}
Cette deuxième section\index{section} peut inclure certains
mots spéciaux, et développer ceux déjà utilisés\index{keywords!used}.

\printindex
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%5Bcolumns%3D3%2C+title%3DAlphabetical+Index%2C+intoc%5D%0A%0A%5Cbegin%7Bdocument%7D%0A%5Ctableofcontents%0A%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+%0Aused+which+are+important+and+deserve+to+appear+in+the+%0AIndex%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+%0Awill+also+show+up.+Terms+in+the+index+can+also+be+%0Anested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+%0Aword%2C+and+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

L’image suivante montre le résultat produit par l’exemple ci-dessus :

![Index5OLV2.png](/files/9bf716824ab5b0022f9a17c8d052dca4d456c958)

En ajoutant le paramètre `intoc` à la commande `\makeindex` l'inclusion du titre de l'index dans la table des matières est activée.

## Guide de référence

### Paramètres de la commande \makeindex

**title**

Titre à composer au début de l'index spécifique. Un exemple est présenté dans la mise en forme de l'index.

**intoc**

Si cette option est passée, le titre de l'index est ajouté à la table des matières.

**columns**

Utilise la syntaxe clé=valeur, la valeur doit être un entier représentant le nombre de colonnes. La valeur par défaut est 2.

**columnsep**

Spécifie les unités qui représentent l'espacement entre les colonnes. La syntaxe doit être clé=valeur, par exemple columnsep=2em.

**columnseprule**

Si l'option est passée, une règle verticale sera affichée entre les colonnes.

### Clés pour créer des fichiers de style

Le tableau suivant présente les clés, les valeurs par défaut et les descriptions pour créer des fichiers de style .ist.

| clé                         | Description                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `actual <char>`             | '@' Symbole indiquant que l'entrée suivante doit apparaître dans le fichier de sortie.                                                                                                                                                                                                                                                                          |
| `arg_close <char>`          | '}' Délimiteur de fermeture pour l'argument de l'entrée d'index.                                                                                                                                                                                                                                                                                                |
| `arg_open <char>`           | '{' Délimiteur d'ouverture pour l'argument de l'entrée d'index.                                                                                                                                                                                                                                                                                                 |
| `encap <char>`              | ' Symbole indiquant que le reste de la liste d'arguments doit être utilisé comme commande d'encapsulation pour le numéro de page.                                                                                                                                                                                                                               |
| `escape <char>`             | '\\\\' Symbole qui échappe la lettre suivante, sauf si le symbole qui le précède est lui-même un symbole d'échappement. Remarque : quote est utilisé pour échapper la lettre qui suit immédiatement, mais s'il est précédé d'un symbole d'échappement, il est traité comme un caractère ordinaire. Ces deux symboles doivent être distincts.                    |
| `keyword <string>`          | "\\\indexentry" Commande qui indique à makeindex que son argument est une entrée d'index.                                                                                                                                                                                                                                                                       |
| `level <char>`              | '!' Délimiteur désignant un nouveau niveau de sous-élément.                                                                                                                                                                                                                                                                                                     |
| `quote <char>`              | '"' Remarque : quote est utilisé pour échapper la lettre qui suit immédiatement, mais s'il est précédé d'un symbole d'échappement, il est traité comme un caractère ordinaire. Ces deux symboles doivent être distincts.                                                                                                                                        |
| `range_close <char>`        | ')' Délimiteur de fermeture indiquant la fin d'une plage de pages explicite.                                                                                                                                                                                                                                                                                    |
| `range_open <char>`         | '(' Délimiteur d'ouverture indiquant le début d'une plage de pages explicite.                                                                                                                                                                                                                                                                                   |
| `preamble <string>`         | "\\\begin{theindex}\n" Préambule du fichier de sortie.                                                                                                                                                                                                                                                                                                          |
| `postamble <string>`        | "\n\n\\\end{theindex}\n" Postambule du fichier de sortie.                                                                                                                                                                                                                                                                                                       |
| `setpage_prefix <string>`   | "\n \\\setcounter{page}{" Préfixe de la commande qui définit le numéro de page de départ.                                                                                                                                                                                                                                                                       |
| `setpage_suffix <string>`   | "}\n" Suffixe de la commande qui définit le numéro de page de départ.                                                                                                                                                                                                                                                                                           |
| `group_skip <string>`       | "\n\n \\\indexspace\n" Espace vertical à insérer avant le début d'un nouveau groupe.                                                                                                                                                                                                                                                                            |
| `headings_flag <string>`    | 0 Indicateur signalant le traitement des nouveaux en-têtes de groupe, insérés avant un nouveau groupe (symboles, nombres et les 26 lettres) : des valeurs positives font insérer une lettre majuscule entre le préfixe et le suffixe, et des valeurs négatives font insérer une lettre minuscule (la valeur par défaut est 0, ce qui ne produit aucun en-tête). |
| `heading_prefix <string>`   | "" Préfixe de l'en-tête à insérer avant le début d'une nouvelle lettre.                                                                                                                                                                                                                                                                                         |
| `symhead_positive <string>` | "Symbols" En-tête pour les symboles à insérer si headings\_flag est positif.                                                                                                                                                                                                                                                                                    |
| `symhead_negative <string>` | "symbols" En-tête pour les symboles à insérer si headings\_flag est négatif.                                                                                                                                                                                                                                                                                    |
| `numhead_positive <string>` | "Numbers" En-tête pour les nombres à insérer si headings\_flag est positif.                                                                                                                                                                                                                                                                                     |
| `numhead_negative <string>` | "numbers" En-tête pour les nombres à insérer si headings\_flag est négatif.                                                                                                                                                                                                                                                                                     |
| `item_0 <string>`           | "\n \\\item " Commande à insérer entre deux éléments principaux (niveau 0).                                                                                                                                                                                                                                                                                     |
| `item_1 <string>`           | "\n \\\subitem " Commande à insérer entre deux éléments secondaires (niveau 1).                                                                                                                                                                                                                                                                                 |
| `item_2 <string>`           | "\n \\\subsubitem " Commande à insérer entre deux éléments de niveau 2.                                                                                                                                                                                                                                                                                         |
| `item_01 <string>`          | "\n \\\subitem " Commande à insérer entre un élément de niveau 0 et un élément de niveau 1.                                                                                                                                                                                                                                                                     |
| `item_x1 <string>`          | "\n \\\subitem " Commande à insérer entre un élément de niveau 0 et un élément de niveau 1, lorsque l'élément de niveau 0 n'a pas de numéros de page associés.                                                                                                                                                                                                  |
| `item_12 <string>`          | "\n \\\subsubitem " Commande à insérer entre un élément de niveau 1 et un élément de niveau 2.                                                                                                                                                                                                                                                                  |
| `item_x2 <string>`          | "\n \\\subsubitem " Commande à insérer entre un élément de niveau 1 et un élément de niveau 2, lorsque l'élément de niveau 1 n'a pas de numéros de page associés.                                                                                                                                                                                               |
| `delim_0 <string>`          | ", " Délimiteur à insérer entre une clé de niveau 0 et son premier numéro de page (par défaut : virgule suivie d'un espace).                                                                                                                                                                                                                                    |
| `delim_1 <string>`          | ", " Délimiteur à insérer entre une clé de niveau 1 et son premier numéro de page (par défaut : virgule suivie d'un espace).                                                                                                                                                                                                                                    |
| `delim_2 <string>`          | ", " Délimiteur à insérer entre une clé de niveau 2 et son premier numéro de page (par défaut : virgule suivie d'un espace).                                                                                                                                                                                                                                    |
| `delim_n <string>`          | ", " Délimiteur à insérer entre deux numéros de page pour la même clé, à n'importe quel niveau (par défaut : virgule suivie d'un espace).                                                                                                                                                                                                                       |
| `delim_r <string>`          | "--" Délimiteur à insérer entre les numéros de page de début et de fin d'une plage.                                                                                                                                                                                                                                                                             |
| `delim_t <string>`          | "" Délimiteur à insérer à la fin d'une liste de pages. Ce délimiteur n'affecte pas les entrées qui n'ont pas de liste de pages associée.                                                                                                                                                                                                                        |
| `encap_prefix <string>`     | "\\\\" Première partie du préfixe de la commande qui encapsule le numéro de page.                                                                                                                                                                                                                                                                               |
| `encap_infix <string>`      | "{" Deuxième partie du préfixe de la commande qui encapsule le numéro de page.                                                                                                                                                                                                                                                                                  |
| `encap_suffix <string>`     | "}". Suffixe de la commande qui encapsule le numéro de page.                                                                                                                                                                                                                                                                                                    |
| `line_max <number>`         | 72 Longueur maximale d'une ligne dans la sortie, au-delà de laquelle la ligne est renvoyée à la ligne.                                                                                                                                                                                                                                                          |
| `indent_space <string>`     | "\t\t" Espace à insérer au début d'une ligne renvoyée à la ligne (par défaut : deux tabulations).                                                                                                                                                                                                                                                               |
| `indent_length <number>`    | 16 Longueur de indent\_space (par défaut : 16, équivalent à 2 tabulations).                                                                                                                                                                                                                                                                                     |

## Lectures complémentaires

Pour plus d'informations, voir :

* [Glossaires](/latex/fr/structure-du-document/05-glossaries.md)
* [Listes des tableaux et des figures](/latex/fr/figures-et-tableaux/03-lists-of-tables-and-figures.md)
* [Table des matières](/latex/fr/structure-du-document/02-table-of-contents.md)
* [Sections et chapitres](/latex/fr/structure-du-document/01-sections-and-chapters.md)
* [Hyperliens](/latex/fr/structure-du-document/09-hyperlinks.md)
* [Prise en charge des langues internationales](/latex/fr/langues/03-international-language-support.md)
* [Référencement croisé des sections et des équations](/latex/fr/structure-du-document/03-cross-referencing-sections-equations-and-floats.md)
* [Gestion dans un grand projet](/latex/fr/structure-du-document/07-management-in-a-large-project.md)
* [Projets LaTeX multi-fichiers](/latex/fr/structure-du-document/08-multi-file-latex-projects.md)
* [Documentation du paquet imakeidx](http://mirror.math.ku.edu/tex-archive/macros/latex/contrib/imakeidx/imakeidx.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/structure-du-document/04-indices.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
