
Сегодня я впервые попробовал amsbook
класс и заметил (возможную?) ошибку (или, правильнее сказать, несовместимость?)
babel
с brazil
опцией переводаГлавакГлава. Обратите внимание на ударную букву.
Ну, amsbook
класс производит CAPíTULO.
Проверяя строку 990, amsbook.cls
мы находим
\uppercase\@xp{\chaptername}\enspace\thechapter}
и проблема в верхнем регистре. (кстати, что такое \@xp
?)
Хорошо, можно переопределить эту часть, \@makechapterhead
чтобы исправить проблему, ноесть ли шанс получить обновленную версию класса в будущем??
МВЭ
\documentclass[11pt,a4paper]{amsbook}
\usepackage[brazil]{babel}
%% original code
\makeatletter
\def\@makechapterhead#1{\global\topskip 7.5pc\relax
\begingroup
\fontsize{\@xivpt}{18}\bfseries\centering
\ifnum\c@secnumdepth>\m@ne
\leavevmode \hskip-\leftskip
\rlap{\vbox to\z@{\vss
\centerline{\normalsize\mdseries
\uppercase\@xp{\chaptername}% <----- here
\enspace\thechapter}
\vskip 3pc}}\hskip\leftskip\fi
#1\par \endgroup
\skip@34\p@ \advance\skip@-\normalbaselineskip
\vskip\skip@ }
\makeatother
\begin{document}
\chapter{title}
\end{document}
решение1
Вы можете создать патч для использования \MakeUppercase
вместо \uppercase\@xp
.
Рекомендуется загружать textcase
вместе с amsbook
, особенно если ожидаются символы с диакритическими знаками.
\documentclass{amsbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{textcase}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}
{\uppercase\@xp}
{\MakeUppercase}
{}{}
\makeatother
\begin{document}
\mainmatter
\chapter{Abcdéf}
text
\end{document}
решение2
amsbook следует использовать MakeUppercase (или отличный пакет textcase, предложенный egreg:-)
Однако бразильский вариант Babel мог бы использовать форму, которая работала бы, \uppercase
если бы он использовал \'{i}
вместо \'{\i}
.
\documentclass[11pt,a4paper]{amsbook}
\usepackage[brazil]{babel}
\begin{document}
\def\chaptername{Cap\'{i}tulo}
\chapter{title}
\end{document}