
Wenn ich schreibe:
\documentclass[a4paper]{report}
\begin{document}
\lowercase{Norma}
\end{document}
Ich erhalte "norma" in der Ausgabe, kleingeschrieben, wie ich es möchte. Wenn ich jedoch schreibe:
\documentclass[a4paper]{report}
\expandafter\def\csname mw@mu\endcsname{Norma}
\begin{document}
\lowercase{\csname mw@mu\endcsname}
\end{document}
Ich bekomme „Norma“ mit dem Großbuchstaben, den ich nicht haben möchte. Ich habe versucht, es \noexpand
vor \lowercase
, und \lowercase
mit \expandafter
s zu umgeben, aber ohne Erfolg: der Großbuchstabe steht immer da. Wie kann ich das beheben?
Antwort1
Die Befehle \lowercase
und \uppercase
erweitern ihren Inhalt nicht; sie konvertieren lediglich Zeichen-Token in ihrem Argument und legen die Token-Liste in den Eingabestrom zurück.
In Ihrem Code können sich Groß- m
w
@
m
und Kleinschreibung ändern u
. Wenn Sie es tatsächlich versuchen,
\lowercase{\csname MW@MU\endcsname}
Sie erhalten das gleiche Ergebnis wie
\lowercase{\csname mw@mu\endcsname}
Um das Beispiel einfacher zu machen:
\def\Norma{Norma}
\lowercase{\Norma}
wird drucken
Norma
weil symbolische Token nicht von berührt werden \lowercase
. Wenn Sie die Erweiterung von wirklich klein schreiben möchten, \Norma
müssen Sie sagen
\lowercase\expandafter{\Norma}
aber nur das erste Token wird expandiert, nicht die anderen Token, die darauf folgen. Für das mit angegebene Makro \csname
benötigen Sie
\lowercase\expandafter\expandafter\expandafter{\csname mw@mu\endcsname}