Table des matières

Avant toutes choses voici le fichier qui va nous servir pour illustrer cette fiche :

\mainlanguage[fr]
\language[fr]
\setcharacterspacing[frenchpunctuation]
\starttext
\chapter{Le premier chapitre}
\section{La section 1 du chapitre 1}
\subsection{La sous-section 1 de la section 1 du chapitre 1}
\subsection{La sous-section 2 de la section 1 du chapitre 1}
\subsubsection{La sous-sous-section 1 de la sous-section 2 de la section 1 du chapitre 1}
\subsubsection{La sous-sous-section 2 de la sous-section 2 de la section 1 du chapitre 1}
\section{La section 2 du chapitre 1}
\subsection{La sous-section 1 de la section 2 du chapitre 1}
\chapter{Le second chapitre}
\section{La section 1 du chapitre 2}
\subsection{La sous-section 1 de la section 1 du chapitre 2}
\subsection{La sous-section 2 de la section 1 du chapitre 2}
\subsubsection{La sous-sous-section 1 de la sous-section 2 de la section 1 du chapitre 2}
\subsubsection{La sous-sous-section 2 de la sous-section 2 de la section 1 du chapitre 2}
\section{La section 2 du chapitre 2}
\subsection{La sous-section 1 de la section 2 du chapitre 2}
\stoptext

Je lui ajouterais les commandes gérant la bibliographie.

Il y a deux commandes pour afficher la Table des Matières (dans le reste de la fiche je dirais tdm) :

\completecontent % avec le titre
\placecontent % sans le titre

Voici le résultat du code ci-dessous :

\mainlanguage[fr]
\language[fr]
\setcharacterspacing[frenchpunctuation]
\starttext
\completecontent
\chapter{Le premier chapitre}
\section{La section 1 du chapitre 1}

\subsection{La sous-section 1 de la section 2 du chapitre 2}
\stoptext

Tu peux placer la commande \completecontent où tu veux dans ton texte mais si tu la places ailleurs qu’au début du texte, tu dois ajouter [criterium=all] et si tu la places tout à la fin de ton document tu peux utiliser [criterium=previous].

\mainlanguage[fr]
\language[fr]
\setcharacterspacing[frenchpunctuation]
\starttext
\chapter{Le premier chapitre}
\section{La section 1 du chapitre 1}

\subsection{La sous-section 1 de la section 2 du chapitre 2}
\completecontent[criterium=all]
\stoptext

Modifier le titre de la tdm

Tu veux voir Sommaire à la place de Table des matière, tu utilises \setupheadtext comme quand tu modifies l’entête des chapitres. Le nom du titre dépendant de la langue il faut préciser celle-ci. Tu places cette commande avant le \starttext

\setupheadtext[fr][content=Sommaire]

Attention à chaque fois que tu utilises une = ne l'entoure pas d'espace. Si sous LaTeX cela n'a aucune importance, ConTeXt n'aime pas du tout et c'est source d'erreur de compilation difficile à retrouver. Donc tu écris content=Sommaire et pas content = Sommaire ou content= Sommaire.

Les points de suite

\setupcombinedlist[content][alternative=c]

Contrôler le nombre de niveau présent dans la table des matières

Si tu ne veux pas voir figurer dans la table des matières les sous-sous-sections ni les sous-sous-sous-sections il suffit de préciser dans la commande suivante les niveaux que tu veux voir apparaître.

\setupcombinedlist[content][list={chapter,section,subsection}]

Ce qui donne avec les mêmes niveaux que le premier exemple :

Ajouter les sections non numérotées

Par défaut les sections non numérotées ne sont pas reprises dans la table des matières. Ce sont les commandes suivantes \title (chapitre non numéroté) \subject (section non numéroté) \subsubject

En général ces sections non numérotées se trouvent au début ou à la fin du document (par exemple une préface et une bibliographie) et ne modifient pas l'énumération des sections numérotées

Dans ce cas tu utilises :

\setuphead[subject][incrementnumber = list]

Et tu n'oublies pas d'ajouter ces sections dans la \setupcombinedlist :

\setupcombinedlist[content][list={subject,section,subsection}]

Voici un exemple complet :

\mainlanguage[fr]
\language[fr]
\setuphead[subject][incrementnumber=list]
\setupcombinedlist[content][list={subject,section,subsection}]
\starttext


\completecontent
\page[yes]


\subject{Préface}
\section{Première section}
\subsection{Première sous-section}
\subsubsection{Première sous-sous-section}
\subsubsubsection{Première sous-sous-sous-section}
\section{Deuxième section}
\subsection{Deuxième sous-section}
\subsubsection{Deuxième sous-sous-section}
\subsubsubsection{Deuxième sous-sous-sous-section}
\subject{Bibliographie}


\stoptext

J’ai fait exprès de ne pas mettre de chapitre dans l’exemple ci-dessus. Si tu utilises \title{Préface} et \title{Bibliographie}, tu dois donc mettre

\setuphead[title][incrementnumber = list]
\setupcombinedlist[content][list={title,chapter,section,subsection}]

Le titre de la tdm est un chapitre non numéroté (\title) il apparaît donc dans la tdm.

Si tu as plusieurs type de sections non numérotées tu peux écrire :

\setuphead[title,subject][incrementnumber=list]

Ne mets pas d’espace après ou avant le signe = dans [incrementnumber=list]
[incrementnumber= list], [incrementnumber =list] et [incrementnumber = list] produisent des erreurs de compilation.

Si tu ne veux pas voir la tdm dans la tdm mais les autres chapitres non numérotés (title), il te faut créer une nouvelle commande de section :

\definehead[monTitle][title]

Ma nouvelle commande \monTitle hérite de toutes les caractéristiques de \title.

Voici le code :

\mainlanguage[fr]
\language[fr]
\definehead[monTitle][title]
\setuphead[monTitle][incrementnumber=list]
\setupcombinedlist[content][list={monTitle,section,subsection}]
\starttext
\completecontent
\monTitle{Préface}
\chapter{Le premier chapitre}
\section{La section 1 du chapitre 1}

 …
\section{La section 2 du chapitre 2}
\subsection{La sous-section 1 de la section 2 du chapitre 2}
\monTitle{Bibliographie}
\stoptext

Et voila plus de tdm dans la tdm, mais il y a quand même un petit problème. Ma nouvelle section n’est pas correctement interprété par \completecontent. L’espace entre la dernière sous-section et Bibliographie n’est pas bon.

Pour corriger il faut placer :

\setuplist[monTitle][before={\blank[big]}]

N’oublie pas les {} encadrant \blank[big] car ConTeXt n’aime pas des [] dans des []. On parle plus tard de \setuplist.

Si tu as des sections non numérotées à l’intérieur de tes sections numérotées (ce qui n'est pas forcement une bonne idée) et que tu veuilles les intégrer à la table des matières il faut procéder différemment et utiliser dans \setuphead incrementnumber=yes qui garde une trace du numéro et number=no qui ne l'affiche pas.

Voici ce que donne la version avec \setuphead[subject][incrementnumber=list] :

\mainlanguage[fr]
\language[fr]
\setuphead[subject][incrementnumber=list]
\setupcombinedlist[content][list={subject,section,subsection}]\starttext


\completecontent
\page[yes]
\section{Première section}
\subsection{Première sous-section}
\subsubsection{Première sous-sous-section}
\subsubsubsection{Première sous-sous-sous-section}
\subject{Section non numérote}
\section{Deuxième section}
\subsection{Deuxième sous-section}
\subsubsection{Deuxième sous-sous-section}
\subsubsubsection{Deuxième sous-sous-sous-section}
\stoptext

Celle avec \setuphead[subject][incrementnumber=yes,number = no] :

\mainlanguage[fr]
\language[fr]
\setuphead[subject][incrementnumber=yes,number=no]
\setupcombinedlist[content][list={subject,section,subsection}]
\starttext


\completecontent
\page[yes]
\section{Première section}
\subsection{Première sous-section}
\subsubsection{Première sous-sous-section}
\subsubsubsection{Première sous-sous-sous-section}
\subject{Section non numérotée}
\section{Deuxième section}
\subsection{Deuxième sous-section}
\subsubsection{Deuxième sous-sous-section}
\subsubsubsection{Deuxième sous-sous-sous-section}
\stoptext

Modifier l’apparence d’une section

Tu utilises :

\setuplist[la section concernée][option1= , option2=, …]

Par exemple tu veux voir les chapitres en gras.

\setuplist[chapter][width=5mm, style=bold]

width= modifie l’espace entre le numéro du chapitre et le titre que je trouve trop grand.

Tu peux par exemple mettre une section en couleur ou seulement le numéro de la section ou son titre ou le numéro de page…

\mainlanguage[fr]
\language[fr]
\definecolor[monBleu][x=1A78B8]
\setuplist[chapter][color=red]
\setuplist[section][textcolor=monBleu,numbercolor=green]
\setuplist[subsection][pagecolor=orange]
\starttext
\completecontent
\monTitle{Préface}
\chapter{Le premier chapitre}
\section{La section 1 du chapitre 1}

 …
\section{La section 2 du chapitre 2}
\subsection{La sous-section 1 de la section 2 du chapitre 2}
\monTitle{Bibliographie}
\stoptext

Tu peux modifier de la même façon le style, l’espace entre les différents éléments… Je te renvoie à la documentation car la liste des options est trop importante pour tout détailler ici, je vais juste te montrer des exemples trouvé dans des ouvrages de ma bibliothèque et d’autres un peu farfelu pour que tu ais une idée des possibilités.

Premier exemple

Toute la tdm est centrée et les différents éléments sont les un sous les autres en commençant par le numéro de page, en gros il faut obtenir ça :

Pour bidouiller l’agencement des trois éléments qui composent une entrée dans la tdm, à savoir le numéro de la section, le titre de la section et le numéro de page, \setuplist a 4 options :

À cela il faut ajouter alternative= qui indique à \setuplist que la gestion de la liste est confiée à une commande.

\mainlanguage[fr]
\language[fr]
\setuphead[title,subject][incrementnumber=yes,number=no]
\setupcombinedlist[content][list={title,subject}]
\starttext
\setcounter[userpage][5]
\placecontent
\title{Le premier chapitre}
\subject{La section 1 du chapitre 1}
\subject{La section 2 du chapitre 1}
\subject{La section 3 du chapitre 1}


 \title{Le second chapitre avec un titre très long vraiment très long}
\setcounter[userpage][64]
\subject{La section 1 du chapitre 2}
\subject{La section 2 du chapitre 2}


 \title{Le troisième chapitre}
\setcounter[userpage][102]
\subject{La section 1 du chapitre 3}
\subject{La section 2 du chapitre 3}
\subject{La section 3 du chapitre 3}
\stoptext

J’ai ajouté \setcounter[userpage][102]uniquement pour l’esthétique, pour modifier la numérotation des pages, pour pas avoir dans mon exemple des pages qui se suivent 2, 3 et 4 ce que je trouve pas terrible.

Modifier les subject n’est pas très compliqué, il faut juste indiquer de ne pas afficher les numéros de page pagenumber=no et de les centrées align=middle.


\setuphead[title,subject][incrementnumber=yes,number=no]
\setupcombinedlist[content][list={title,subject}]
\setuplist[subject][pagenumber=no,align=middle]
\starttext
\setcounter[userpage][5]
\placecontent
\title{Le premier chapitre}

 …
\subject{La section 3 du chapitre 3}
\stoptext

Pour modifier l’aspect de title dans la tdm on va passer par une commande. Comme il faut transformer plusieurs éléments (le numéro de page et le titre) on va utiliser l’option command qui nécessite trois arguments. Ces arguments sont notés #1 #2 et #3 et correspondent respectivement au le numéro de section, au titre et au numéro de page. Je te renvoie à la fiche «Comment créer une commande» si tu ne voies pas à quoi correspond le #1. La définition de la commande doit ce faire de cette façon

\define[3]\monTitle

même si on utilise pas une des données (#1 qui est vide car il n’y a pas de numéro de section). Si tu ne comprends pas \define[3] revoie la fiche «Comment créer une commande», je l’ai déjà dis il me semble.

\define[3]\monTitle
{\vskip1cm{\midaligned{\bfc#3}}
\vskip1em
{ \midaligned{\bfa#2}}
\vskip.7em
}

Rien de bien compliqué dans cette commande : \vskip est une commande TEX qui crée un espace vertical, \midaligned centre l’objet et \bfc écrit en gros et gras.

On indique à \setuplist que la gestion de title ce fait par une commande :

\setuplist[title][alternative=command,command=\monTitle]

Le code complet :

\mainlanguage[fr]
\language[fr]
\setuphead[title,subject][incrementnumber=yes,number=no]
\setupcombinedlist[content][list={title,subject}]
\setuplist[title][alternative=command,command=\monTitle]
\setuplist[subject][pagenumber=no,align=middle]
\define[3]\monTitle
{\vskip1cm{\midaligned{\bfc#3}}
\vskip1em
{ \midaligned{\bfa#2}}
\vskip.7em
}
\starttext
\setcounter[userpage][5]
\placecontent
\title{Le premier chapitre}
\subject{La section 1 du chapitre 1}
\subject{La section 2 du chapitre 1}
\subject{La section 3 du chapitre 1}
\title{Le second chapitre avec un titre très long vraiment très long}
\setcounter[userpage][64]
\subject{La section 1 du chapitre 2}
\subject{La section 2 du chapitre 2}
\title{Le troisième chapitre}
\setcounter[userpage][102]
\subject{La section 1 du chapitre 3}
\subject{La section 2 du chapitre 3}
\subject{La section 3 du chapitre 3}
\stoptext