我的问题与此相同相关一个。我已经algorithm2e
通过重新定义实现了一些语法高亮\KwSty
,这里是一个 MWE:
\documentclass{article}
% Math
\usepackage{amsmath}
\usepackage{amsfonts}
% Colors
\usepackage{xcolor}
\definecolor{mycolor}{RGB}{153, 0, 0}
% Algorithms
\usepackage{algorithm2e}
\renewcommand{\KwSty}[1]{\textnormal{\textcolor{mycolor}{\bfseries #1}}\unskip}
\begin{document}
\begin{algorithm}
\SetAlgoLined\DontPrintSemicolon
\ForEach{\(n \in \mathbb{K}\)}{
\If{\(n < \tau\)}{
\(print(\text{``Lower than''})\)\;
}
\Else{
\(print(\text{``Greater than equal''})\)\;
}
}
\end{algorithm}
\end{document}
生成:
但我想知道是否可以进行更细粒度的控制,即为if
和foreach
块设置不同的颜色。我在手册上找不到这方面的信息。
答案1
如果您需要更精细的控制,您可以通过宏进行更改。您可以在, l. 2908ff\SetKw...
中找到它们的默认定义。algorithm2e.sty
\documentclass{article}
% Math
\usepackage{amsmath}
\usepackage{amsfonts}
% Colors
\usepackage{xcolor}
\definecolor{mycolor}{RGB}{153, 0, 0}
% Algorithms
\usepackage{algorithm2e}
%\renewcommand{\KwSty}[1]{\textnormal{\textcolor{mycolor}{\bfseries #1}}\unskip}
\SetKwFor{ForEach}{\textcolor{mycolor}{foreach}}{\textcolor{mycolor}{do}}{\textcolor{mycolor}{end}}%
\SetKwIF{If}{ElseIf}{Else}{\textcolor{teal}{if}}{\textcolor{teal}{then}}{\textcolor{teal}{else if}}{\textcolor{teal}{else}}{\textcolor{teal}{end if}}%
\begin{document}
\begin{algorithm}
\SetAlgoLined\DontPrintSemicolon
\ForEach{\(n \in \mathbb{K}\)}{
\If{\(n < \tau\)}{
\(print(\text{"Lower"})\)\;
}
\Else{
\(print(\text{"Greather equal"})\)\;
}
}
\end{algorithm}
\end{document}