¿Cómo funciona este código de resaltado de color de cadena parcial?

¿Cómo funciona este código de resaltado de color de cadena parcial?

Estoy usando la awesome-cvclase, que resalta las primeras tres letras del encabezado de la sección así:

Educación con "Edu" resaltado

El código que produce este efecto se ve así:

\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}%
}

El tamaño del texto y la negrita se agregan más adelante en

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

¿Cómo resalta la primera parte de este código las tres primeras letras?


Entiendo que esto no es un MWE, pero no pude crear uno a partir del .clsarchivo y no creo que este código sea tan complejo para alguien que sabe lo que está viendo. Si necesito un MWE, házmelo saber.

Respuesta1

En realidad, este truco es bastante simple: los argumentos de los comandos TeX normales pueden ser tokens individuales (es decir, caracteres o \controlsequences), o pueden ser secuencias de tokens encerradas entre llaves. Por ejemplo, esta es la razón por la que, en modo matemático, puedes escribir \frac 1 2, \frac{1}{2}o incluso \frac1{2}y obtener el mismo resultado.

Por lo tanto, todo lo que necesitas hacer para obtener los primeros tres caracteres de una palabra es un comando con tres argumentos. Por ejemplo,

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

le permite resaltar las primeras tres letras después de una invocación como \mycommand hello. En loeste caso, simplemente no forma parte del comando.

Para obtener la sintaxis familiar con un solo parámetro entre llaves, puede incluir este comando en otro comando:

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

Esto le permite escribir \myothercommand{hello}.

Aquí hay un MWE que muestra una versión simplificada del comando con diferentes colores:

\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}

salida colorida

información relacionada