algorithm2e是latex上用来写算法的包。
目前还有很多,比如algorithmc等。两者的语法不同。
使用时要先导入包:
\usepackage[ruled,linesnumbered]{algorithm2e}
下面贴出一个示例:
\begin{algorithm}[t]
\caption{Event Detection}
\label{algo:event}
\LinesNumbered
\KwIn{FFT Bins $B_{1}, B_{2}, B_{3}, ..., B_{n}$}
\KwOut{Event start point $S$, end point $E$}
\For{i=1:n}{
\eIf{max($B_{i}$) : max($B_{(i+4)}$)$>$-80}{
$S$=i; \tcp*{Start Point}
\For{j=S:n}{
\eIf{max($B_{j}$) : max($B_{(j+4)}$)$<$-100}{
$E$=j; \tcp*{End Point}
Return [$S,E$];
}{j++;}
}
}{
i++;}
}
\end{algorithm}
得到的结果如下:
下载与详细的使用请参考手册
几个注意的点:
- 在algorithm2e中,\If, \Else, \ElseIf都是会以endif结尾的,而\uIf, \lIf, \uElse, \lElse, \uElseIf, \lElseIf都是不带endif的。u和l的区别是,u是块级元素,而l是行内元素。
比如在上面的示例中,带else的if是\elf,如果只使用\Else会使else后也多出一个end来。 - \tcc是/* */注释, \tcp是//注释. 在if句使用注释时, \If(注释){条件}
- 使用algorithm2e就不可以再使用\usepackage{algorithm}和\usepackage{algorithmic}.
其他注意事项,这里有一个参考:https://blog.csdn.net/jlu_leven/article/details/8948997