
如果我寫:
\documentclass[a4paper]{report}
\begin{document}
\lowercase{Norma}
\end{document}
我在輸出中得到“norma”,按照我的需要小寫。但是,如果我寫:
\documentclass[a4paper]{report}
\expandafter\def\csname mw@mu\endcsname{Norma}
\begin{document}
\lowercase{\csname mw@mu\endcsname}
\end{document}
我得到“Norma”,帶有大寫字母,這是我不想要的。我嘗試將其放在\noexpand
前面\lowercase
,並\lowercase
用\expandafter
s 包圍,但無濟於事:大寫字母始終存在。我該如何解決?
答案1
命令\lowercase
並且\uppercase
不擴展其內容;他們只是轉換參數中的字元標記並將標記列表放回輸入流中。
在您的程式碼中,可能會發生大小寫變更的內容是m
w
@
m
和u
;確實,如果你嘗試
\lowercase{\csname MW@MU\endcsname}
你會得到相同的結果
\lowercase{\csname mw@mu\endcsname}
只是為了使範例更簡單:
\def\Norma{Norma}
\lowercase{\Norma}
將列印
諾瑪
因為象徵性標記不被 觸及\lowercase
。如果你真的想小寫擴充\Norma
你必須說
\lowercase\expandafter{\Norma}
但只有第一個標記將被擴展,而不是其後的其他標記。對於\csname
您需要的巨集
\lowercase\expandafter\expandafter\expandafter{\csname mw@mu\endcsname}