请考虑
\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