
我正在使用該類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,而且我認為這段程式碼對於那些知道自己在看什麼的人來說並不那麼複雜。如果我需要 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}