이 부분 문자열 색상 강조 코드는 어떻게 작동합니까?

이 부분 문자열 색상 강조 코드는 어떻게 작동합니까?

나는 awesome-cv다음과 같이 섹션 제목의 처음 세 글자를 강조하는 클래스를 사용하고 있습니다.

'Edu'가 강조표시된 교육

이 효과를 생성하는 코드는 다음과 같습니다.

\RequirePackage{xcolor}
\RequirePackage{xifthen}
\RequirePackage{etoolbox}
\RequirePackage[quiet]{fontspec}
\RequirePackage{fontawesome}

\definecolor{awesome-red}{HTML}{DC3522}
\colorlet{awesome}{awesome-red}

\newcounter{colorCounter}
\def\@sectioncolor#1#2#3{%
  {%
    \color{%
      \ifcase\value{colorCounter}%
        awesome\or%
        awesome\or%
        awesome\or%
        awesome\or%
        awesome\else%
        awesome\fi%
    } #1#2#3%
  }%
  \stepcounter{colorCounter}%
}

텍스트 크기와 볼드체는 나중에 추가됩니다.

\newcommand*{\sectionstyle}[1]{{\fontsize{15pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}

이 코드의 첫 번째 부분은 처음 세 글자를 어떻게 강조합니까?


나는 이것이 MWE가 아니라는 것을 알고 있지만 파일에서 MWE를 만들 수 없었고 .cls이 코드가 자신이 보고 있는 것을 아는 사람에게는 그렇게 복잡하지 않다고 생각합니다. MWE가 필요하면 알려주세요.

답변1

실제로 이 트릭은 매우 간단합니다. 일반 TeX 명령에 대한 인수는 단일 토큰(예: 문자 또는 s)일 수도 있고 \controlsequence중괄호로 묶인 토큰 시퀀스일 수도 있습니다. 예를 들어, 수학 모드에서 \frac 1 2, \frac{1}{2}또는 를 쓰고 \frac1{2}동일한 결과를 얻을 수 있는 이유는 다음과 같습니다.

따라서 단어의 처음 세 문자를 얻으려면 세 개의 인수를 사용하는 명령만 있으면 됩니다. 예를 들어,

\newcommand\mycommand[3]{%
    \textcolor{red}{#1}%
    \textcolor{green}{#2}%
    \textcolor{blue}{#3}%
}

와 같은 호출 다음에 나오는 처음 세 글자를 강조 표시할 수 있습니다 \mycommand hello. 이 lo경우 단순히 명령의 일부가 아닙니다.

중괄호 안에 매개변수 하나만 사용하여 익숙한 구문을 얻으려면 이 명령을 다른 명령으로 래핑하면 됩니다.

\newcommand*\myothercommand[1]{%
    \mycommand #1%
}

이를 통해 글을 쓸 수 있습니다 \myothercommand{hello}.

다음은 다양한 색상으로 명령의 간단한 버전을 보여주는 MWE입니다.

\documentclass{article}
\RequirePackage{xcolor}
\RequirePackage{xifthen}

\definecolor{awesome-red}{HTML}{DC3522}
\colorlet{awesome}{awesome-red}

\newcounter{colorCounter}
\newcommand\sectioncolor[3]{%
  {%
    \color{%
      \ifcase\value{colorCounter}%
        awesome\or%
        green\or%
        blue\or%
        orange\or%
        yellow\else%
        cyan\fi%
    } #1#2#3%
  }%
  \stepcounter{colorCounter}%
}

\newcommand*{\sectionstyle}[1]{{\fontsize{15pt}{1em}\bfseries\sectioncolor #1}}

\begin{document}
    \sectionstyle{first}\par
    \sectionstyle{second}\par
    \sectionstyle{third}\par
    \sectionstyle{fourth}\par
    \sectionstyle{fifth}\par
    \sectionstyle{sixth}\par
    \sectionstyle{seventh}
\end{document}

다채로운 출력

관련 정보