amsart 标题排版问题

amsart 标题排版问题

我尝试为作者和标题命令实现一个元级别,因为大多数样式文件都希望它们有一点不同,并且我希望能够轻松地更改样式文件。

长话短说,我发现amsart当我将宏插入到时,该类的行为很奇怪\title{}。它不会抛出错误,但不会将标题大写。但是它仍将以粗体排版。

所以既没有完全没有效果,也没有完全有效果。我也尝试将其放置\expandafter在我能想到的所有地方,但显然我不太理解这个命令。

\documentclass[a4paper,reqno]{amsart}

\usepackage[utf8]{inputenc}

\begin{document}

\newtoks\mytitleA
\mytitleA={This is a title}

\newcommand{\mytitle}{This is a title}
\newcommand{\myauthor}{This is me}

% toggle the following commands to see that only the last version
% produceses the correct layout
%\title{\the\mytitleA}
%\title{\mytitle}
\title{This is a title}

% for the author I cannot spot a difference
\author{\myauthor}
\author{This is me}

\maketitle

\end{document}

其他样式文件(例如)似乎不会对标题进行不同的排版,如果它嵌套在宏中,至少我无法分辨出区别。因此,或的实现article可能存在问题。amsart\title{}\maketitle

有没有办法解决这个问题或者至少让嵌套宏工作?

答案1

你忘了一个工作,即

\expandafter\title\expandafter{\the\mytitleA}

当然,\the前面什么都\mytitleA不能避免,因为\the为了传递\toks寄存器的内容,这是必要的。

有什么问题?默认情况下amsart只使用\uppercase(它不应该,但那是另一个问题)。

您可以通过强制使用加载来避免textcase此问题,以便在完成其工作之前进行完整(受保护)的扩展。amsart\MakeTextUppercase\uppercase

使用\toks登记册

\documentclass[a4paper,reqno]{amsart}
\usepackage{textcase}

\newtoks\mytitleA
\mytitleA={This is a title}
\newcommand{\myauthor}{This is me}

\begin{document}

\title{\the\mytitleA}
\author{\myauthor}

\maketitle

\end{document}

使用命令

\documentclass[a4paper,reqno]{amsart}
\usepackage{textcase}

\newcommand{\mytitle}{This is a title}
\newcommand{\myauthor}{This is me}

\begin{document}

\title{\mytitle}
\author{\myauthor}

\maketitle

\end{document}

输出(与两个示例相同)

在此处输入图片描述

相关内容