Le paquetage french babel redéfinit \part{}pour imprimer "Première partie" au lieu de "Partie I".

Cependant dans la table des matières, cette redéfinition est perdue.

Est-ce possible de configurer tocbasic de Koma-Script pour garder le formatage du nom de la partie dans la table des matières.

\documentclass[french,chapterprefix=false, openany]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage{babel}
\setcounter{tocdepth}{4}
\begin{document}
\part{Ceci est ma partie 1}
\chapter{Ceci est mon premier chapitre}
\chapter{Ceci est mon deuxième chapitre}
\chapter{Ceci est mon troisième chapitre}
\part{Ceci est ma partie 2}
\chapter{Ceci est mon quatrième chapitre}
\chapter{Ceci est mon cinquième chapitre}
\chapter{Ceci est mon sixième chapitre}

\part{Ceci est ma partie 3}
\chapter{Ceci est mon septième chapitre}
\chapter{Ceci est mon huitième chapitre}
\chapter{Ceci est mon neuvième chapitre}

\tableofcontents
\end{document}

Résultat souhaité

Résultat souhaité

Posée 30 Oct '23, 17:53

cmiramon's gravatar image

cmiramon
311
Taux d'acceptation : 0%

Modifiée 30 Oct '23, 17:55


Question intéressante… que je découvre avec beaucoup de retard car je ne suis pas un lecteur assidu de TeXnique :-(

Il est assez facile de paramétrer tocbasic pour obtenir dans la table des matières des entrées de la forme : Partie I. mon titre On peut utiliser pour cela les options de \DeclareTOCStyleEntry, notamment entrynumberformat=\mycommand, voici un exemple :

\documentclass[french,chapterprefix=false,openany]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareTOCStyleEntry[entrynumberformat=\myPart,
                     %breakafternumber=true,
                      numwidth=.25\linewidth]%
                     {tocline}{part}
\setcounter{tocdepth}{4}
\newcommand*{\myPart}[1]{Partie #1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\part{Ceci est ma partie 1}
\chapter{Ceci est mon premier chapitre}
\chapter{Ceci est mon deuxième chapitre}
\part{Ceci est ma partie 2}
\chapter{Ceci est mon quatrième chapitre}
\chapter{Ceci est mon cinquième chapitre}
\chapter{Ceci est mon sixième chapitre}

\part{Ceci est ma partie 3}
\chapter{Ceci est mon septième chapitre}
\chapter{Ceci est mon huitième chapitre}

\tableofcontents

\end{document}

Ceci ne répond pas à la question mais ce premier pas indique que le paramètre passé à la commande \myPart est le numéro de partie en capitales romaines suivi d'un point (I. II. III. IV. etc.) mais en fait c'est beaucoup plus touffu que ça… Il y a plein de commandes parasites (qui n'affichent rien).

Il est finalement plus simple d'utiliser l'option entryformat qui opère sur la totalité du deuxième argument de \addtocontentsline (voir le fichier .toc), par exemple comme ceci :

%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareTOCStyleEntry[entryformat=\FrenchPartNum,
                      %breakafternumber=true,
                     ]%
                     {tocline}{part}
\setcounter{tocdepth}{4}

\newcommand*{\OrdinalI}{Première partie}
\newcommand*{\OrdinalII}{Deuxième partie}
\newcommand*{\OrdinalIII}{Troisième partie}
\newcommand*{\OrdinalIV}{Quatrième partie}
\newcommand*{\FrenchPartNum}[1]{%
  \begingroup
    \def\numberline ##1{%
      \makebox[.25\linewidth][l]{%
        \expandafter\csname Ordinal##1\endcsname}}%
    \usefontofkomafont{partentry}#1%
  \endgroup

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%

Résultat affiché :

alt text

On peut décommenter l'option breakafternumber=true, pour ajouter passage à la ligne suivante après ... partie (utile éventuellement en cas de titre long).

On pourrait faire une boucle pour définir plus de commandes \OrdinalV, \OrdinalVI, etc.

Lien permanent

Publiée 06 Jan, 19:48

dflipo's gravatar image

dflipo
2813
Taux d'acceptation : 16%

Modifiée 08 Jan, 17:59

Au regret « je ne suis pas un lecteur assidu de TeXnique :-( », il y a un remède : https://texnique.fr/osqa/users/1648/dflipo/subscriptions/ ;)

(07 Jan, 14:27) 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.