Uso de \minúsculas

Uso de \minúsculas

Se eu escrever:

\documentclass[a4paper]{report}

\begin{document}
\lowercase{Norma}
\end{document}

Recebo "norma" na saída, em letras minúsculas como desejo. No entanto, se eu escrever:

\documentclass[a4paper]{report}
\expandafter\def\csname mw@mu\endcsname{Norma}

\begin{document}
\lowercase{\csname mw@mu\endcsname}
\end{document}

Recebo "Norma", com letra maiúscula, o que não quero. Tentei colocar \noexpandantes \lowercasee cercar \lowercasecom \expandafters, mas sem sucesso: a letra maiúscula está sempre lá. Como faço para corrigir isso?

Responder1

Os comandos \lowercasee \uppercasenão expandem seu conteúdo; eles apenas convertem tokens de caracteres em seus argumentos e colocam de volta a lista de tokens no fluxo de entrada.

No seu código, o que está sujeito a possíveis alterações de caso é m w @ mand u; na verdade, se você tentar

\lowercase{\csname MW@MU\endcsname}

você obterá o mesmo resultado que

\lowercase{\csname mw@mu\endcsname}

Apenas para tornar o exemplo mais simples:

\def\Norma{Norma}
\lowercase{\Norma}

irá imprimir

norma

porque os tokens simbólicos não são tocados por \lowercase. Se você realmente deseja diminuir a expansão de \Normavocê tem que dizer

\lowercase\expandafter{\Norma}

mas apenas o primeiro token será expandido, e não os outros tokens que o seguem. Para a macro fornecida com \csnamevocê precisa

\lowercase\expandafter\expandafter\expandafter{\csname mw@mu\endcsname}

informação relacionada