
Ich habe versucht, eine Metaebene für die Befehle „Autor“ und „Titel“ zu implementieren, da die meisten Stildateien etwas andere Befehle erfordern und ich die Stildatei problemlos ändern können möchte.
Kurz gesagt, ich habe festgestellt, dass sich die amsart
Klasse seltsam verhält, wenn ich ein Makro einfüge \title{}
. Es wird kein Fehler ausgegeben, aber der Titel wird nicht groß geschrieben. Er wird jedoch weiterhin fett gedruckt.
Es gibt also weder keinen Effekt noch alle Effekte. Ich habe auch versucht, \expandafter
an allen Stellen zu platzieren, die mir eingefallen sind, aber anscheinend verstehe ich diesen Befehl nicht wirklich.
\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}
Andere Stildateien wie article
scheinen den Titel nicht anders zu setzen, wenn er in einem Makro verschachtelt ist, zumindest konnte ich den Unterschied nicht erkennen. Daher stimmt möglicherweise etwas mit der amsart
Implementierung von \title{}
oder nicht \maketitle
.
Gibt es eine Möglichkeit, dies zu beheben oder zumindest ein verschachteltes Makro zum Laufen zu bringen?
Antwort1
Du hast eines vergessen, dastutArbeit, nämlich
\expandafter\title\expandafter{\the\mytitleA}
Natürlich kann man \the
davor nichts aus dem \mytitleA
Weg räumen, denn das \the
ist notwendig, um den Inhalt des \toks
Registers auszuliefern.
Wo liegt das Problem? Standardmäßig amsart
wird einfach verwendet \uppercase
(das sollte es nicht, aber das ist ein anderes Problem).
Sie können das Problem vermeiden, indem Sie das Laden so durchführen, dass die Verwendung textcase
erzwungen wird , sodass eine vollständige (geschützte) Erweiterung erfolgt, bevor die Aufgabe ausgeführt wird.amsart
\MakeTextUppercase
\uppercase
Mit einem \toks
Register
\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}
Mit einem Befehl
\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}