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 (または 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}

関連情報