улучшение amsbook

улучшение amsbook

Сегодня я впервые попробовал 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}

Связанный контент