![この部分文字列の色強調表示コードはどのように機能しますか?](https://rvso.com/image/330753/%E3%81%93%E3%81%AE%E9%83%A8%E5%88%86%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E8%89%B2%E5%BC%B7%E8%AA%BF%E8%A1%A8%E7%A4%BA%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私はawesome-cv
、セクション見出しの最初の 3 文字を次のように強調表示するクラスを使用しています。
この効果を生み出すコードは次のようになります。
\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}}
このコードの最初の部分では、最初の 3 文字がどのように強調表示されるのでしょうか?
これは MWE ではないことは理解していますが、ファイルから MWE を作成することはできませんでした.cls
。また、このコードは、何を見ているかがわかっている人にとってはそれほど複雑ではないと思います。MWE が必要な場合は、お知らせください。
答え1
実際、このトリックは非常に簡単です。通常の TeX コマンドの引数は、単一のトークン (つまり、文字または) か、中括弧で囲まれたトークン シーケンスのいずれかになります。たとえば、数式モードで 、 、または と\controlsequence
書いても同じ結果が得られるのはこのためです。\frac 1 2
\frac{1}{2}
\frac1{2}
したがって、単語の最初の3文字を取得するには、3つの引数を持つコマンドを実行するだけで済みます。たとえば、
\newcommand\mycommand[3]{%
\textcolor{red}{#1}%
\textcolor{green}{#2}%
\textcolor{blue}{#3}%
}
を使用すると、 のような呼び出しに続く最初の 3 文字を強調表示できます\mycommand hello
。lo
この場合、 は単にコマンドの一部ではありません。
中括弧で囲まれた 1 つのパラメータのみを含む使い慣れた構文を取得するには、このコマンドを別のコマンドで囲みます。
\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}