проблема 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}

Вывод (одинаковый для обоих примеров)

введите описание изображения здесь

Связанный контент