我正在写一篇文章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}