amsbook 改进

amsbook 改进

今天是我第一次尝试amsbook上课,我注意到一个(可能的?)错误(或者我应该说不兼容?)

babelbrazil选项翻译章节章目. 因此请注意重音字母。

嗯,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(或者 egreg 提出的优秀 textcase 包:-)

\uppercase但是,如果使用\'{i}而不是 ,babel 的 brazil 选项可以使用一种可以与 一起使用的形式\'{\i}

在此处输入图片描述

\documentclass[11pt,a4paper]{amsbook}
\usepackage[brazil]{babel}




\begin{document}
\def\chaptername{Cap\'{i}tulo}

\chapter{title}
\end{document}

相关内容