我正在为一个班级项目写报告,我需要在报告中突出显示一些算法中的几行。我设法做到了,但我不喜欢我得到的解决方案。这是一张图片(见下面的 MWE 代码)。
为了实现这一点,我使用了\color{red}
,然后放入我想要突出显示的文本,然后是\color{black}
。我想知道我是否可以用红色突出显示算法的相同行,但不突出显示行号,也不突出显示注释a miracle in polynomial time
。有什么解决方案吗?这个答案建议重新定义包的命令,但他们使用的包与我不一样,我想知道是否可以做得更简单。
如果有人能给我一些建议,告诉我如何做到这一点,同时algorithm2e
尽可能地坚持这个方案,那就太好了。
代码:
\documentclass[12pt]{article}
\pdfoutput=1
\usepackage[linesnumbered,titlenumbered,ruled,vlined,resetcount,algosection]{algorithm2e}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{color}
\begin{document}
\title{MWE}
\maketitle
\section{Algorithm}
\begin{algorithm}
\caption{3-SAT in polynomial time}
\label{alg:hs}
\DontPrintSemicolon
\KwIn{List of clauses}
\KwOut{The clauses are satisfiable}
\SetKwProg{Fn}{Function}{ is}{end}
\Fn{\textsc{IsSatisfiable}($C$)} {
\color{red} %<- my best attempt
$k\gets 0$ \;
\For {$i = 1$ \bf{to} $|C|$}
{
$c_i \gets $ $i$-th clause \;
$L \gets$ list of literals of $c_i$ \;
$k\gets f(k, L)$ \tcp{a miracle in polynomial time}
}
\color{black} %<- go back to color black
\If {$k$ is even} {
\Return true
}
\Else {
\Return false
}
}
\end{algorithm}
\end{document}
答案1
我从未使用过algorithm2e
,但查看其文档(第 9.5.3 节),我认为最明智的做法是重新定义数字和注释的字体,以明确包含将颜色切换为的指令black
。
\documentclass[12pt]{article}
\usepackage[linesnumbered,titlenumbered,ruled,vlined,resetcount,algosection]{algorithm2e}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{color}
%% These three lines !!!
\SetNlSty{textbf}{\color{black}}{}
\newcommand*{\mycommentfont}[1]{\textcolor{black}{\ttfamily#1}}
\SetCommentSty{mycommentfont}
\begin{document}
\title{MWE}
\maketitle
\section{Algorithm}
\begin{algorithm}
\caption{3-SAT in polynomial time}
\label{alg:hs}
\DontPrintSemicolon
\KwIn{List of clauses}
\KwOut{The clauses are satisfiable}
\SetKwProg{Fn}{Function}{ is}{end}
\Fn{\textsc{IsSatisfiable}($C$)} {
\begingroup
\color{red}
$k\gets 0$ \;
\For {$i = 1$ \bf{to} $|C|$}
{
$c_i \gets $ $i$-th clause \;
$L \gets$ list of literals of $c_i$ \;
$k\gets f(k, L)$ \tcp{a miracle in polynomial time}
}
\endgroup
\If {$k$ is even} {
\Return true
}
\Else {
\Return false
}
}
\end{algorithm}
\end{document}
的额外定义\mycommentfont
是必要的,因为的字体命令需要一个带有一个参数的宏的algorithm2e
单个宏名(不带)。\