这个部分字符串颜色突出显示代码如何工作?

这个部分字符串颜色突出显示代码如何工作?

我正在使用该类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,但我无法从文件中创建一个.cls,而且我认为对于知道自己在看什么的人来说,这段代码并不复杂。如果我需要 MWE,请告诉我。

答案1

实际上,这个技巧非常简单:普通 TeX 命令的参数可以是单个标记(即字符或\controlsequences),也可以是用括号括起来的标记序列。例如,这就是为什么在数学模式下,您可以编写\frac 1 2\frac{1}{2}甚至\frac1{2}和 来获得相同的结果。

因此,要获取单词的前三个字符,只需使用带有三个参数的命令即可。例如,

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

允许您在调用后突出显示前三个字母,例如\mycommand hellolo在这种情况下, 根本不是命令的一部分。

为了获得仅在括号中使用一个参数的熟悉语法,您可以将此命令包装在另一个命令中:

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

彩色输出

相关内容