amsart.cls 将文章标题大写。如何禁用它?

amsart.cls 将文章标题大写。如何禁用它?

我正在写一篇文章amsart.cls,其中 是amsart.cls文章标题的大写。我查看了一下amsart.cls,发现\MakeUppercase用在 中\maketitle。我试图关闭它,但是我做不到。至于作者,我可以关闭它。有什么线索吗?

我在 opensuse12.1 Linux 机器上运行 TeX Live 2011。amsart.cls日期是 2009 年 7 月。

答案1

您可以定义一个环境,在特定范围内禁用大写,例如:

\newenvironment{nouppercase}{%
  \let\uppercase\relax%
  \renewcommand{\uppercasenonmath}[1]{}}{}

文档中写道:

\begin{nouppercase}
\maketitle
\end{nouppercase}

关闭环境后,那些暂时禁用的命令再次起作用,因为环境限制了这些重新定义的范围。

如果您需要禁用进一步的大写命令,例如\MakeUppercase,只需扩展环境。

答案2

您可以暂时禁用命令\uppercasenonmath和/或\MakeUppercase

\documentclass{amsart}

\date{\today}
\author{My name}
\title{My $abc\beta$-title}

\begin{document}

\begingroup
\def\uppercasenonmath#1{} % this disables uppercasing title
\let\MakeUppercase\relax % this disables uppercasing authors
\maketitle
\endgroup

\section{My section}
My text

\end{document}

更新:如果您想让文档主体“干净”,您可以这样做:

\documentclass{amsart}

\date{\today}
\author{My name}
\title{My $abc\beta$-title}

\let\origmaketitle\maketitle
\def\maketitle{
  \begingroup
  \def\uppercasenonmath##1{} % this disables uppercasing title
  \let\MakeUppercase\relax % this disables uppercasing authors
  \origmaketitle
  \endgroup
}

\begin{document}

\maketitle

\section{My section}
My text

\end{document}

答案3

该命令\MakeUppercase是硬编码的,因此您必须重新定义内部命令。不过,您应该考虑@JosephWright 的评论。

\documentclass{amsart}
\date{\today}
\author{My name}
\title{My title}
\makeatletter
\def\@setauthors{%
  \begingroup
  \def\thanks{\protect\thanks@warning}%
  \trivlist
  \centering\footnotesize \@topsep30\p@\relax
  \advance\@topsep by -\baselineskip
  \item\relax
  \author@andify\authors
  \def\\{\protect\linebreak}%
%  \MakeUppercase{\authors}%
  \authors%
  \ifx\@empty\contribs
  \else
    ,\penalty-3 \space \@setcontribs
    \@closetoccontribs
  \fi
  \endtrivlist
  \endgroup
}
\def\@settitle{\begin{center}%
  \baselineskip14\p@\relax
    \bfseries
%\uppercasenonmath\@title
  \@title
  \end{center}%
}
\makeatother
\begin{document}
\maketitle
\section{foo}
Text
\end{document}

在此处输入图片描述

相关内容