
На французском языке amsbook
класс пишет имя части строчными буквами в toc, даже если я переопределяю \partname
. Интересно, как это исправить.
\documentclass{amsbook}
\usepackage[french]{babel}
\title{La démocratie}
\author{Quelqu'un}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\part{Introduction}
\end{document}
решение1
Думаю, вы хотите оставить в названии фразу «Première party», поэтому вот вам пара советов.
Во-первых, код babel-french
не учитывает, что \thepart
перед ним стоит пробел, который следует игнорировать (или удалить), поэтому я исправляю это, (локально) переопределяя вместо \thepart
того \unskip
, чтобы ничего не делать.
Во-вторых, я вношу исправления \@part
, чтобы запись производилась напрямую, Partie
а не \partname
в toc
файл.
\documentclass{amsbook}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{etoolbox}
% fix a small issue in babel-french
\makeatletter
\renewcommand\FB@emptypart{\def\thepart{\unskip}}
% make \part write 'Partie' instead of '\partname'
\patchcmd{\@part}{\partname}{Partie}{}{}
\makeatother
\title{La démocratie}
\author{Quelqu'un}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\part{Introduction}
\end{document}
решение2
Согласноbabel-french
пакет документации PartNameFull
следует установить на , false
чтобы избежать подобных проблем.
Так что просто добавьте \frenchsetup{PartNameFull=false}
в преамбулу. Это должно решить вашу проблему.
Выдержка из документации:
PartNameFull=false (истина);
когда true, babel-french нумерует заголовки команд \part{} как «Première partie», «Deuxième partie» и т. д. С некоторыми классами, которые изменяют команду \part{} (классы AMS делают это), вы можете получить «Première partie 1», «Deuxième partie 2» в toc; когда это происходит, этот параметр должен быть установлен в false, тогда заголовки частей будут печататься как «Partie I», «Partie II».