如何制作一个hbox在指定位置下几行?

如何制作一个hbox在指定位置下几行?

最近我问如何使用 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} 

输出:

在此处输入图片描述

相关内容