mfirstuc\capitalisewords 패키지가 올바르게 작동하지 않습니다.

mfirstuc\capitalisewords 패키지가 올바르게 작동하지 않습니다.

클래스 파일에서 이것을 선언했습니다.

\newcommand{\fullname}[1]{\gdef\@fullname{#1}}

와 함께\fullname{john doe}

클래스 파일의 전체 이름을 얻으려고합니다. 작동 \MakeUperrcase{\@fullname}하지만 작동 \capitalisewords하지 않습니다. 나는 시도했다

\capitalisewords\@fullname

그리고

\capitalisewords{\@fullname}

하지만 출력은 항상

존 도우

대신에

존 도우

확인해보니 \@fullname인쇄가 되네요

존 도우

답변1

\capitalisewords인수를 확장하지 않으므로 David가 주석에서 제안한 것처럼 먼저 인수를 확장해야 합니다.

\expandafter\capitalisewords\expandafter{\@fullname}

\xcapitalisewords또는 동일한 작업을 수행하는 바로 가기 명령을 사용하십시오 .

\xcapitalisewords{\@fullname}

인수가 자동으로 확장되지 않는 이유는 첫 글자 대문자 메커니즘이 단일 인수를 사용하는 의미적 마크업을 허용하기 때문입니다. 예를 들어:

\newcommand*{\strong}[1]{\textcolor{red}{\textbf{#1}}}
\capitalisewords{\strong{lorem} ipsum}

이는 효과적으로

\strong{\MakeUppercase lorem} \MakeUppercase ipsum

따라서 의미적 마크업은 대소문자 변경을 방해하지 않습니다. 인수가 확장된 경우 이 인스턴스는 다음과 같이 중단됩니다.

\textcolor{\MakeUppercase red}{\textbf{lorem}} \MakeUppercase ipsum

\textcolor(실제로도 확장 하면 이보다 더 복잡해집니다 .)

인수가 그룹이 뒤따르지 않는 제어 시퀀스로 시작하는 경우 \capitalisewords문자 또는 기호 명령(예: \aa)이라고 가정합니다.

\capitalisewords{\aa lorem ipsum}

된다

\MakeUppercase \aa lorem \MakeUppercase ipsum

이것이 귀하의 예에서 일어난 일입니다. 이것이 바로 당신이

\MakeUppercase\@fullname

관련 정보