最近我问如何使用 algorithm2e 以彩色方式突出显示算法的某些行?
我想使用该algorithm2e
包来实现此效果:
谢谢JLDiaz 的回答我知道该怎么做。JLDiaz 建议我使用xcolor
包定义一个宏,如下所示:
\documentclass{article}
\usepackage[ruled]{algorithm2e} % http://www.ctan.org/pkg/algorithm2e
\usepackage{xcolor} % http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor
% This is the solution:
\def\HiLi{\leavevmode\rlap{\hbox to
\hsize{\color{yellow!50}\leaders\hrule height .8\baselineskip depth .5ex\hfill}}}
\begin{document}
\begin{algorithm}[h]
\caption{Evolutionary algorithm}
initialize population \;
\HiLi\For( \emph{Evolutionary loop}){$g := 1$ to $G_{max}$}
{
\HiLi do things \;
evolve population \;
}
celebrate \;
\end{algorithm}
\end{document}
问题是没有办法绘制结束语句。
我从未做过任何 LaTeX 编程,但我认为解决方案可能是制作一个类似的宏,将一个水平盒放置在调用它的地方,并在几行之后放置一个相同的水平盒。行数可以手动提供。
这可能吗?
答案1
这是可能的,但是需要对 的内部代码进行一些破解algorithm2e.sty
。
如果您希望此行为在本地发生,请在您的内部添加以下几行;algorithm
如果您希望此行为在全局发生,请在序言中添加以下几行:
\makeatletter
\renewcommand{\algocf@@@block}[2]{#1\ifArgumentEmpty{#2}{\relax}{\KwSty{\HiLi\@algocf@endoption{#2}}\strut\par}}
\makeatother
梅威瑟:
\documentclass{article}
\usepackage[ruled]{algorithm2e} % http://www.ctan.org/pkg/algorithm2e
\usepackage{xcolor} % http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor
% This is the solution:
\def\HiLi{\leavevmode\rlap{\hbox to
\hsize{\color{yellow!50}\leaders\hrule height .8\baselineskip depth .5ex\hfill}}}
\begin{document}
\begin{algorithm}[h]
\makeatletter
\renewcommand{\algocf@@@block}[2]{#1\ifArgumentEmpty{#2}{\relax}{\KwSty{\HiLi\@algocf@endoption{#2}}\strut\par}}
\makeatother
\caption{Evolutionary algorithm}
initialize population \;
\HiLi\For( \emph{Evolutionary loop}){$g := 1$ to $G_{max}$}
{
\HiLi do things \;
evolve population \;
}
celebrate \;
\end{algorithm}
\end{document}
输出: