Discussion:
Les titres dans la table des matières
(trop ancien pour répondre)
plebeien
2008-09-11 23:32:59 UTC
Permalink
Bonsoir à tous,

j'ai un léger problème à soumettre, j'utilise une table des matières
avec une numérotation en chiffres romains de type :
I <Titre du chapitre>.
Or, je voudrais que mes titres de chapitre dans la table des matières
soient de la forme :
Chapitre I - <Titre du chapitre>
sans la numérotation initiale

En vérité, je ne sais pas quels marqueurs latex reprennent tel ou tel
élément et donc, j'en appelle à vous pour savoir comment faire.

Je ne sais pas si tout a été très clair mais bon...
GL
2008-09-12 08:57:14 UTC
Permalink
Post by plebeien
Bonsoir à tous,
j'ai un léger problème à soumettre, j'utilise une table des matières
I <Titre du chapitre>.
Or, je voudrais que mes titres de chapitre dans la table des matières
Chapitre I - <Titre du chapitre>
sans la numérotation initiale
En vérité, je ne sais pas quels marqueurs latex reprennent tel ou tel
élément et donc, j'en appelle à vous pour savoir comment faire.
Je ne sais pas si tout a été très clair mais bon...
La première solution (la plus simple) c'est d'écrire :

\renewcommand\thechapter{}
\chapter{Chapitre I -- Premier chapitre}
\section{...}
\chapter{Chapitre II -- Deuxième chapitre}

Inconvénients :
1) perte de la numérotation auto des titres des chapitres (pas très grave)
2) problème si on utilise fncychap par exemple
3) etc.


Sinon plus sophistiqué, il faut se tourner du côté de tocloft :

\documentclass[12pt,a4paper,openright,twoside,french]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{tocloft}


\renewcommand\thechapter{\Roman{chapter}}
\settowidth\cftchapnumwidth{\cftchapfont\chaptername~XIX\ --\ }
\renewcommand\cftchappresnum{\chaptername~--\hfil}

\begin{document}

\tableofcontents

\chapter{Premier chapitre}
\section{Section A}
\section{Section B}
\chapter{Deuxième chapitre}
\section{Section A}
\section{Section B}

\end{document}
\endinput

Voilà
plebeien
2008-09-12 13:41:34 UTC
Permalink
Merci pour la réponse.

J'ai repris tes lignes et je les ai un peu trifouillé pour les adapter
à ce que je veux :

\renewcommand{\thechapter}{\Roman{chapter}}
\settowidth{\cftchapnumwidth}{\cftchapfont\chaptername~XXX}
\renewcommand\cftchappresnum{\chaptername~}
\renewcommand\cftchapaftersnum{~-~\hfil}

C'est vraiment bon, j'ai juste un problème... avec les chiffres
romains, on a toujours un espace trop long ou pas assez après le
numéro du chapitre... Ne pourrait-on avoir une sorte de stretch, un
espace élastique, qui permette de réduire ce gros problème de rendu ?

Merci encore
GL
2008-09-12 16:22:01 UTC
Permalink
Post by plebeien
Merci pour la réponse.
J'ai repris tes lignes et je les ai un peu trifouillé pour les adapter
\renewcommand{\thechapter}{\Roman{chapter}}
\settowidth{\cftchapnumwidth}{\cftchapfont\chaptername~XXX}
\renewcommand\cftchappresnum{\chaptername~}
\renewcommand\cftchapaftersnum{~-~\hfil}
C'est vraiment bon, j'ai juste un problème... avec les chiffres
romains, on a toujours un espace trop long ou pas assez après le
numéro du chapitre... Ne pourrait-on avoir une sorte de stretch, un
espace élastique, qui permette de réduire ce gros problème de rendu ?
Merci encore
En fait, c'est le boulot du \hfil, que j'ai mis dans le
\cftchap*pres*num, de sorte que les numéros Romains soient *centrés les
uns par rapport aux autres*.

Pour ton exemple, le \hfil ne sert à rien ici, puisque par défaut les
numéros sont alignés à gauche -- autrement dit, il y a déjà un \hfil
*par défaut*, après le numéro Romain du chapitre.

Si tu veux que les tirets soient tous alignés, quel que soit la largeur
du numéro Romain du chapitre, il faut mettre :
\renewcommand\cftchapaftersnum{\hfill~-~}

Et si tu veux que les numéros soient centrés verticalement par rapport à
leur ligne médiane, ET que les tirets soient alignés, il faut :
\renewcommand\cftchappresnum{\chaptername~\hfill}
\renewcommand\cftchapaftersnum{\hfill~-~}

Et si tu préfère que les numéros soit alignés à droite :
\renewcommand\cftchappresnum{\chaptername~\hfill}
\renewcommand\cftchapaftersnum{\hfil~-~}

Bref, à toi de jouer...

*Pour répondre à ta question*, si tu mets un espace variable, les titres
des chapitres ne seront pas alignés : ce que tu as actuellement n'est
n'est donc pas un *gros problème* de rendu, mais au contraire, l'inverse
(titre non aligné) mérite cette qualification...
Essaye par exemple :
\renewcommand\cftchappresnum{\hfill\chaptername~}
\renewcommand\cftchapaftersnum{\hfil~-~}

C'est pas bô hein ?

Sinon, quand tu écris :
\settowidth{\cftchapnumwidth}{\cftchapfont\chaptername~XXX}
Tu te trompes, car si tu as VRAIMENT XXX chapitres, *XXIV=24 sera plus
large que XXX* -- et certainement aussi XXIX=29 -- ils sont fous ces
Romains... De plus, dans \cftchapnumwidth, *il faut inclure le tiret*,
car la \hbox qui fixe le numéro du chapitre contient ici :
Le-Mot-Chapitre (\chaptername)
Le-Numéro-Romain(\thechapter)
Le-tiret-après-le-numéro-romain
Sinon tu t'exposes à avoir un tiret qui "rentre dans le titre"
Essaye avec : \makeatletter\***@chapter=28\makeatother dans le préambule.

Si enfin, tu tiens à tout pris à ce que les titres des chapitres ne
soient pas alignés (et les tirets non plus donc, mais on peut les enlever) :
Chapitre XXIX - C'est le vingt-neuf
^
Chapitre XXX - C'est le trente
^
il faut redéfinir \numberline avec une box variable :
\renewcommand{\numberline}[1]{%
\hbox{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}

Ce qui s'appliquera donc à toutes les sections de la TdM (pas seulement
les chapitres) sauf à définir une numberline spéciale (en ne touchant
donc pas à la \numberline) :

\newcommand{\numberlineforchapters}[1]{%
\hbox{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}

et à utiliser l'astuce :

\renewcommand\cftchapfont{\let\numberline\numberlineforchapters}
qui reste locale (ok).

Voilà. Je crois que tu peux faire la TdM que tu veux maintenant.
GL
2008-09-12 16:30:58 UTC
Permalink
Post by GL
Post by plebeien
Merci pour la réponse.
\newcommand{\numberlineforchapters}[1]{%
\renewcommand\cftchapfont{\let\numberline\numberlineforchapters}
qui reste locale (ok).
Voilà. Je crois que tu peux faire la TdM que tu veux maintenant.
Non, il reste un schmoll, si tu veux que ta TdM ressemble à ceci :
Chapitre XXIX Vingt-neuf 547
Chapitre XXX Trente 593

tu as besoin de :
\providecommand{\cftdotfil}[1]{%
\leaders\hbox{$\***@th\mkern #1 mu\hbox{\cftdot}\mkern #1 mu$}\hfil}
\renewcommand\cftchapleader{\cftdotfil{\cftdotsep}}
\renewcommand\cftchapaftersnumb{\hfill}

la commande \cftdotfil manque dans tocloft. Ca c'est ridicule, parce que
ca ne coutait vraiment rien de l'ajouter (imagine que tu ne veuilles
pas les numéros des chapitres :
Vingt-neuf 546
Trente 593
Ca se tient comme TdM non ?)
plebeien
2008-09-12 16:57:17 UTC
Permalink
C'est extra de maîtriser aussi bien la bête... J'en reste sans voix.
En fait j'ai adapté mon template final pour la table des matières et
donc le problème ne se pose plus en ces termes. Malgré tout, je vais
conserver ces éléments parce qu'ils sont vraiment intéressants à avoir
sous le coude.

Encore merci pour cette aide.
GL
2008-09-12 17:01:14 UTC
Permalink
Post by plebeien
C'est extra de maîtriser aussi bien la bête... J'en reste sans voix.
Encore merci pour cette aide.
Bahh il "suffit" en fait de lire le TeXbook. Parce que TeX c'est super,
alors qu'avec LaTeX on s'embrouille souvent. Du genre :
\def\***@xt@{\hbox to} % Quel intérêt ? C'est + lisible ??
Quand on s'intéresse à TeX, on fait vraiment de la typographie, pas de
la programmation... (enfin, un peu quand même ;)

Derien, ça pourra m'être utile aussi
Jean-Côme Charpentier
2008-09-12 23:20:45 UTC
Permalink
Post by GL
Post by plebeien
C'est extra de maîtriser aussi bien la bête... J'en reste sans voix.
Encore merci pour cette aide.
Bahh il "suffit" en fait de lire le TeXbook. Parce que TeX c'est super,
alors qu'avec LaTeX on s'embrouille souvent.
Mouais, je doute que tout le monde soit d'accord avec cette affirmation.
Cela économise des lexèmes.
\***@xt@ => 1 lexème
\hbox to => 3 lexèmes (l'espace n'atteint pas le stade de lexème)
Post by GL
C'est + lisible ??
Ce n'est pas non plus le comble de l'illisibilité. Dans lma même
veine, TeX a initié cette pratique bien avant LaTeX avec les \@ne, \***@ne
et autre \z@, qui n'ont certes pas que l'avantage d'économiser des
lexèmes mais qui ont aussi cet avantage.
Post by GL
Quand on s'intéresse à TeX, on fait vraiment de la typographie, pas de
la programmation... (enfin, un peu quand même ;)
Sous-entendu avec LaTeX c'est le contraire ?

Jean-Côme Charpentier
--
Cela dit, on pourrait sans doute faire quelque chose avec les
fonctions que je propose. Sans doute de façon nettement moins
intuitive mais un concours est un concours. En particulier, concours
commence par "con".
-+- Jean-Côme in fr.comp.text.tex -+-
GL
2008-09-13 16:07:53 UTC
Permalink
Post by Jean-Côme Charpentier
Post by GL
Post by plebeien
C'est extra de maîtriser aussi bien la bête... J'en reste sans voix.
Encore merci pour cette aide.
Bahh il "suffit" en fait de lire le TeXbook. Parce que TeX c'est super,
alors qu'avec LaTeX on s'embrouille souvent.
Mouais, je doute que tout le monde soit d'accord avec cette affirmation.
La première ou la deuxième affirmation ? Il y a deux phrases (composées respectivement de 9 et 11 lexèmes
-- sauf erreur ou omission).
Post by Jean-Côme Charpentier
Cela économise des lexèmes.
\hbox to => 3 lexèmes (l'espace n'atteint pas le stade de lexème)
Post by GL
C'est + lisible ??
Ce n'est pas non plus le comble de l'illisibilité. Dans lma même
lexèmes mais qui ont aussi cet avantage.
\@ne est un caractère, \***@ne un compteur, \z@ une dimension, \@m un caractère mathématique...
Mais \***@xt@ c'est quoi ? remplacer une primitive par une macro ?
Pourquoi pas : \def\***@ss@g@{\message} \def\l@@der@{\leader} ?

J'ai paramétré mon editeur pour qu'affiche d'une couleur différente les control sequence primitives.
C'est plus lisible pour moi : \hbox to ...
Post by Jean-Côme Charpentier
Post by GL
Quand on s'intéresse à TeX, on fait vraiment de la typographie, pas de
la programmation... (enfin, un peu quand même ;)
Sous-entendu avec LaTeX c'est le contraire ?
Oui à peine, à peine sous-entendu... cf ma réponse à Ulrike Fisher dans le thread "Les pages jaunes -
marquages - extramarks est RiDiCuLe"...
Post by Jean-Côme Charpentier
Jean-Côme Charpentier
GL
mpg
2008-09-13 22:28:31 UTC
Permalink
Post by Jean-Côme Charpentier
Cela économise des lexèmes.
[...]
Parce que ça n'économise pas de lexèmes, les deux derniers. Comme le dit
Jean-Côme, avec \z@, \@one, etc, on a surtout l'avantage de gagner en
vitesse d'exécution, mais pour les autres le seul avantage est de gagner
des lexèmes, donc de l'espace mémoire.

Pour TeX, ça prend moins de place de stocker \***@xt@ que \hbox to. C'est
tout. Il se trouve qu'à une époque ça comptait. Si on veut, on peut voire
ça comme de la compression, faite à la main et au feeling genre « ce truc
on le voit souvent, on va lui donner sa séquence de contrôle ».

Y'avait une discussion que dérivait là-dessus à propos de l'économie dans
les messages d'erreurs dans la discussion suivant un rapport de bug sur le
site du projet latex, j'arrive plus à retrouver. Ça a l'air un peu
surréaliste quand même...

Manuel.
Jose Grimm
2008-09-17 13:41:23 UTC
Permalink
Ca facilite des constructions du genre
\expandafter\def\expandafter\truc\expandafter{\expandafter\***@xt@\expandafter\z@\expandafter{\machin...}}

Jose'

Continuer la lecture sur narkive:
Loading...