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套件:-)

然而 babel 的 brazil 選項可以使用一種可以使用的形式,\uppercase如果它使用\'{i}而不是\'{\i}.

在此輸入影像描述

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




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

\chapter{title}
\end{document}

相關內容