
Я использую 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}