
Hoy fue la primera vez que probé amsbook
la clase y noté un (¿posible?) error (¿o debería decir incompatibilidad?)
babel
con brazil
opción traduceCapítuloaCapítulo. Así que tenga en cuenta la letra acentuada.
Bueno, amsbook
la clase produce CAPíTULO.
Comprobando la línea 990 amsbook.cls
encontramos
\uppercase\@xp{\chaptername}\enspace\thechapter}
y las mayúsculas son el problema. (por cierto, ¿qué es \@xp
?)
Bien, es posible redefinir esa parte \@makechapterhead
para solucionar el problema, pero¿Existe alguna posibilidad de tener una versión actualizada de la clase en el futuro??
MWE
\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}
Respuesta1
Puedes hacer un parche para usar \MakeUppercase
en lugar de \uppercase\@xp
.
Es una buena idea cargar textcase
junto con amsbook
, especialmente si se esperan caracteres acentuados.
\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}
Respuesta2
amsbook debería usar MakeUppercase (o el excelente paquete textcase propuesto por egreg :-)
Sin embargo, la opción brasil de Babel podría usar un formulario que funcionaría \uppercase
si se usara \'{i}
en lugar de \'{\i}
.
\documentclass[11pt,a4paper]{amsbook}
\usepackage[brazil]{babel}
\begin{document}
\def\chaptername{Cap\'{i}tulo}
\chapter{title}
\end{document}