algorithm2e 关键字的不同颜色

algorithm2e 关键字的不同颜色

我的问题与此相同相关一个。我已经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}

生成:

在此处输入图片描述

但我想知道是否可以进行更细粒度的控制,即为ifforeach块设置不同的颜色。我在手册上找不到这方面的信息。

答案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}

在此处输入图片描述

相关内容