amsart,标题和短标题中没有大写字母(短标题的字体较小)

amsart,标题和短标题中没有大写字母(短标题的字体较小)

请考虑

\documentclass[12pt]{amsart}
\let\origmaketitle\maketitle
\def\maketitle{
    \begingroup
    \def\uppercasenonmath##1{} % this disables uppercasing title
    \let\MakeUppercase\relax % this disables uppercasing authors
    \origmaketitle
    \endgroup
}
\makeatother
\title[Ersrerr'f pbzzragf: Vzcebirq ybpny rkvfgrapr naq
vzcebirq pbagvahngvba pevgrevba]{Ersrerr'f pbzzragf ba gur negvpyr:
  Vzcebirq ybpny rkvfgrapr, havdhrarff naq ybpnyvmrq pbagvahngvba
  pevgrevba sbe fbyhgvbaf gb gur Rhyre--Cbvffba flfgrz jvgu pbzcnpgyl
  fhccbegrq vavgvny qngn} 
\begin{document}
\maketitle
Some text
\newpage 
more text
\end{document}

所以长标题不使用大写字母。我希望短标题也能使用大写字母,此外,我还希望短标题的字体稍微小一点,以防它太长而无法放在标题上。有什么想法吗?谢谢

答案1

使用大写是因为没有\shortauthors字段,在本例中,amsart定义\shortauthors与 相同\shorttitle

并且该类(像往常一样,以其扭曲的方式)适用\MakeUppercase\shortauthors任何情况。

解决方案:修补\maketitle\@settitle

\documentclass[12pt]{amsart}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\maketitle}{\uppercasenonmath\shorttitle}{}{}{}
\patchcmd{\maketitle}{\@nx\MakeUppercase{\the\toks@}}{\the\toks@}{}{}
\patchcmd{\@settitle}{\uppercasenonmath\@title}{}{}{}
\makeatother

\title[Ersrerr'f pbzzragf: Vzcebirq ybpny rkvfgrapr naq
  vzcebirq pbagvahngvba pevgrevba]{Ersrerr'f pbzzragf ba gur negvpyr:
  Vzcebirq ybpny rkvfgrapr, havdhrarff naq ybpnyvmrq pbagvahngvba
  pevgrevba sbe fbyhgvbaf gb gur Rhyre--Cbvffba flfgrz jvgu pbzcnpgyl
  fhccbegrq vavgvny qngn}

\begin{document}

\maketitle

Some text
\newpage

more text

\end{document}

我会担心自动调整短标题的大小:它已经以非常小的字体大小排版了。

在此处输入图片描述

如果加载hyperref,则需要修补原始命令,而不是 定义的版本hyperref。与 的加载无关的代码hyperref如下。

\documentclass[12pt]{amsart}
\usepackage{etoolbox}
\usepackage{hyperref}

\makeatletter
\@ifpackageloaded{hyperref}{\patchcmd{\HyOrg@maketitle}}{\patchcmd{\maketitle}}%
  {\uppercasenonmath\shorttitle}{}{}{}
\@ifpackageloaded{hyperref}{\patchcmd{\HyOrg@maketitle}}{\patchcmd{\maketitle}}%
  {\@nx\MakeUppercase{\the\toks@}}{\the\toks@}{}{}
\patchcmd{\@settitle}{\uppercasenonmath\@title}{}{}{}
\makeatother

\title[Ersrerr'f pbzzragf: Vzcebirq ybpny rkvfgrapr naq
  vzcebirq pbagvahngvba pevgrevba]{Ersrerr'f pbzzragf ba gur negvpyr:
  Vzcebirq ybpny rkvfgrapr, havdhrarff naq ybpnyvmrq pbagvahngvba
  pevgrevba sbe fbyhgvbaf gb gur Rhyre--Cbvffba flfgrz jvgu pbzcnpgyl
  fhccbegrq vavgvny qngn} 

\begin{document}

\maketitle

Some text
\newpage 

more text

\end{document}

少一点拗口:

\providecommand\patchcs[1]{\expandafter\patchcmd\csname#1\endcsname}

\makeatletter
\patchcs{\@ifpackageloaded{hyperref}{HyOrg@}{}maketitle}
  {\uppercasenonmath\shorttitle}{}{}{}
\patchcs{\@ifpackageloaded{hyperref}{HyOrg@}{}maketitle}
  {\@nx\MakeUppercase{\the\toks@}}{\the\toks@}{}{}
\patchcmd{\@settitle}{\uppercasenonmath\@title}{}{}{}
\makeatother

相关内容