Dans la classe yathesis, est-il possible de modifier l'affichage de la table des matières de telle sorte qu'apparaisse : « Chapitre 1 : Titre du chapitre » au lieu de « 1 Titre du chapitre » ?

J'ai vu que le package etoc le permet mais je ne sais pas comment, ni s'il est possible de modifier \etocstyle{chapter}{...} puisque ce package est déjà chargé.

Attention : ce n'est pas la tête de chapitre dans le corps du manuscrit que je veux modifier mais bien son apparence dans la table des matières. Je voudrais quelque chose d'équivalent à ça :

Ouvrir dans l'éditeur Overleaf
\documentclass{book}
\usepackage{etoc}

\newlength{\tocleftmargin} \setlength{\tocleftmargin}{5cm}
\newlength{\tocrightmargin} \setlength{\tocrightmargin}{1cm}

\etocsetstyle{chapter} % will pretend to be a Chapter
{\addvspace{1ex}\parfillskip0pt
\leftskip\tocleftmargin % (already done in title)
\rightskip\the\tocrightmargin plus 1fil
\parindent0pt} %\color{cyan}} % (already done)
{\bfseries\LARGE\upshape\addvspace{1ex}\leavevmode}
{\llap{Chapter\hspace{.5em}{\etocnumber}\hspace{.75cm}}\etocname
\hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
{}

\begin{document}
\tableofcontents
\mainmatter
%\part{Foo}
\chapter{bob}
\chapter{toto}
\end{document}

Posée 16 Jui '18, 21:30

iti1801's gravatar image

iti1801
10948
Taux d'acceptation : 0%

Modifiée 16 Jui '18, 22:16

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

@iti1801 Attention ! Votre réponse était une précision plutôt qu'une réponse : elle a été convertie comme telle, et intégrée dans votre question initiale.

(16 Jui '18, 22:20) Pathe ♦♦ Pathe's gravatar image

yathesis a configuré le style des différents éléments de la table des matières avec une commande \YAD@globalstyle : c'est celle-ci que vous devez redéfinir.

(17 Jui '18, 01:37) touhami touhami's gravatar image

Il faut patcher, non seulement \YAD@globalstyle, mais aussi \YAD@computenumwidths@. Ça tombe bien: yathesis charge, non seulement etoc, mais aussi l'extension xpatch.

Cela dit, je ne suis pas convaincu de l'utilité d'apprendre en parcourant la table des matières, où elle se trouve.

Voici donc un code :

Ouvrir dans l'éditeur Overleaf
\documentclass[showframe]{yathesis}
\usepackage[utf8]{inputenc}

\makeatletter
\xpatchcmd{\YAD@globalstyle}{%
\bfseries\etocnumber}{%
\bfseries\chaptername\,\etocnumber}{}{}
\xpatchcmd{\YAD@computenumwidths@}{%
\etocsetstyle{chapter}{}
 {\setbox0\hbox{\bfseries\etocthenumber\kern#2}}}{%
\etocsetstyle{chapter}{}
 {\setbox0\hbox{\bfseries\chaptername\,\etocthenumber\kern#2}}}{}{}
\makeatother

\begin{document}

\tableofcontents
\mainmatter
\part{Foo}
\chapter{bob}
\chapter{toto}

\end{document}

alt text

Lien permanent

Publiée 17 Jui '18, 17:24

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

1

Il y a aussi le problème des annexes.

(17 Jui '18, 20:26) touhami touhami's gravatar image

Ah! oui. Il s'agit de remplacer Chapitre par Annexe? Là, a priori, je n'ai pas d'idée. Il faudra que je fouille.

(17 Jui '18, 23:45) Bernard Bernard's gravatar image

En plus du problème des annexes, il y a celui des chapitres non numérotés.

(19 Jui '18, 11:17) denis ♦♦ denis's gravatar image

@Bernard Il est vrai qu'il peut paraître bizarre que la table des matières figure en elle-même mais ça permet à l'auteur, en cours de rédaction, de voir où elle est située dans l'ensemble du document. Ça permet aussi au lecteur de voir où il se situe lorsqu'il est en train de la lire. Il est vrai qu'une option permettant d'ôter la (les) table(s) des matières d'elle(s)-même(s) pourrait être la bienvenue.

(19 Jui '18, 11:23) denis ♦♦ denis's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.