Voici l'ECM qui illustre le problème:

Ouvrir dans l'éditeur Overleaf
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{titletoc}%
\usepackage{xcolor}%

\contentsmargin{0cm}%
\titlecontents{chapter}[1cm]%
{\addvspace{15pt}\color{blue}\large\sffamily\bfseries}%
{\llap{\colorbox{blue!10}{\vphantom{Séq}\makebox[4cm][r]{\chaptername\nobreakspace\thecontentslabel}}\hskip5pt}\colorbox{black!8}}%
{\llap{\colorbox{blue!10}{\vphantom{Séq}\makebox[4cm][r]{}}\hskip5pt}\colorbox{black!8}}%
{}%

\begin{document}
\tableofcontents
\chapter{Élastique}
\chapter{Elastique}
\chapter[\protect\vphantom{Ep}\smash{Élastique}]{Élastique}
\end{document}

Dans la table des matières, j'aimerais obtenir le troisième résultat sans passer par l'argument optionel de la commande \chapter.

alt text

Posée 22 Jan, 23:10

pluton's gravatar image

pluton
27516
Taux d'acceptation : 30%

Modifiée 22 Jan, 23:11

Avez vous essayé \setlength{\fboxsep}{0pt}?

(23 Jan, 00:41) touhami touhami's gravatar image

oui, ça n'est pas le problème puisque c'est le caractère É qui agrandit la boîte.

(23 Jan, 05:21) pluton pluton's gravatar image

Ce serait simple à faire si vos titres de section étaient formatés avec titlesec.

(23 Jan, 13:01) Bernard Bernard's gravatar image

Une solution simple consisteà définir une commande \colorbox personnalisée, qui insère une règle invisible au début de la boîte. Je l'ai fait avec une hauteur et une profondeur calculées au plus juste, mais c'est facile à modifier. J'ai utilisé ex pour unité, de sorte qu'en cas de changement de police, cela fonctionne toujours (en principe).

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{titletoc}%
\usepackage[table]{xcolor}%
\newcommand*{\contentsbox}[2]{\colorbox{#1}{\rule[-0.5ex]{0pt}{2.5ex}\smash{#2}}}%

\contentsmargin{0cm}%
\titlecontents{chapter}[1cm]%
{\addvspace{15pt}\color{blue}\large\sffamily\bfseries}%
{\llap{\contentsbox{blue!10}{\makebox[4cm][r]{\chaptername\nobreakspace\thecontentslabel}}\hskip5pt}\contentsbox{black!8}}%
{\llap{\contentsbox{blue!10}{\makebox[4cm][r]{}}\hskip5pt}\contentsbox{black!8}}%
{}%

\begin{document}

\tableofcontents

\chapter{Élastique}
\chapter{Elastique}
\chapter{Élastique}

\end{document}

alt text

Lien permanent

Publiée 23 Jan, 13:54

Bernard's gravatar image

Bernard
1.4k14
Taux d'acceptation : 29%

Modifiée 24 Jan, 15:30

Pathe's gravatar image

Pathe ♦♦
1.9k238

@Bernard oui c'est une solution à laquelle j'avais pensé mais j'aimerais bien voir aussi comment intégrer un smash?

(23 Jan, 17:40) pluton pluton's gravatar image

Ah! Il s'agirait d'annihiler hauteur + profondeur du texte pour les remplacer par une hauteur + profondeur prédéterminées?

(24 Jan, 13:08) Bernard Bernard's gravatar image

@Pluton: C'est fait. Est-ce que ça correspond à ce que vous vouliez ?

(24 Jan, 16:11) Bernard Bernard's gravatar image

@Bernard ah oui intéressant mais \contentsbox nécessite deux arguments? Quand appelez-vous le deuxième?

(24 Jan, 20:38) pluton pluton's gravatar image

Le second argument est l'argument implicite de \titlecontents, c.-à-d. le titre du chapitre, ou de la section, ou …

(24 Jan, 20:57) Bernard Bernard's gravatar image

ah oui, ça me dit quelque chose cette histoire d'argument implicite avec titletoc. Cette possibilité d'argument implicite est-elle générale à LateX? Il n'y pas beaucoup d'information sur le sujet.

(25 Jan, 06:08) pluton pluton's gravatar image

Je pense que c'est en relation avec la façon dont est codé titletoc: dans les 3e et 4e arguments obligatoires de \titlecontents, on peut insérer à la fin une commande, qui prend pour argument le titre de section. C'est la même chose avec \titleformat de titlesec, sauf que là, on peut choisir l'option explicit.

(25 Jan, 12:25) Bernard Bernard's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus
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.

Mots-clés de la question :

×4
×4

Question posée : 22 Jan, 23:10

Question vue : 148 fois

Dernière mise à jour : 25 Jan, 12:25