我正在使用该类awesome-cv
,它突出显示部分标题的前三个字母,如下所示:
产生这种效果的代码如下所示:
\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 命令的参数可以是单个标记(即字符或\controlsequence
s),也可以是用括号括起来的标记序列。例如,这就是为什么在数学模式下,您可以编写\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}