
Si escribo:
\documentclass[a4paper]{report}
\begin{document}
\lowercase{Norma}
\end{document}
Obtengo "norma" en el resultado, en minúsculas como quiero. Sin embargo, si escribo:
\documentclass[a4paper]{report}
\expandafter\def\csname mw@mu\endcsname{Norma}
\begin{document}
\lowercase{\csname mw@mu\endcsname}
\end{document}
Me sale "Norma", con mayúscula, que no quiero. Intenté poner \noexpand
antes \lowercase
y rodear \lowercase
con \expandafter
s, pero fue en vano: la letra mayúscula siempre está ahí. ¿Cómo puedo solucionar esto?
Respuesta1
Los comandos \lowercase
y \uppercase
no amplían su contenido; simplemente convierten tokens de caracteres en su argumento y devuelven la lista de tokens al flujo de entrada.
En su código, lo que está sujeto a posibles cambios de caso es m
w
@
m
y u
; de hecho, si lo intentas
\lowercase{\csname MW@MU\endcsname}
obtendrás el mismo resultado que
\lowercase{\csname mw@mu\endcsname}
Sólo para simplificar el ejemplo:
\def\Norma{Norma}
\lowercase{\Norma}
imprimirá
Norma
porque las fichas simbólicas no son tocadas por \lowercase
. Si realmente quieres reducir la expansión de \Norma
tienes que decir
\lowercase\expandafter{\Norma}
pero solo se expandirá el primer token, no los demás tokens que le sigan. Para la macro proporcionada con \csname
usted necesita
\lowercase\expandafter\expandafter\expandafter{\csname mw@mu\endcsname}