
내가 쓴다면 :
\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
앞에 를 넣고 s 로 \lowercase
둘러싸려고 했지만 아무 소용이 없었습니다. 대문자는 항상 거기에 있습니다. 이 문제를 어떻게 해결합니까?\lowercase
\expandafter
답변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}