LaTex - Algorithm2e简明使用教程
这几天在用 LaTeX 写一些东西,需要用到一个比较新的算法包,algorithm2e,因为之前没用过,所以花些时间了解了一下。感觉比 algorithmc 用起来方便点,更符合代码书写习惯,也不用写那么多麻烦的 \STATE
之类的无意义状态语。下面了解一下这个 algorithm2e 的一些简明的用法,也算是做个记录。
Algorithm2e 基本语法
使用之前当然需要先引入:
\usepackage[options ]{algorithm2e}
具体的 options 可以查看下面参考文献 2 的第七章,比如:
\usepackage[ruled,linesnumbered]{algorithm2e}
其中:
ruled
是让标题显示在上面,否则算法的标题则在下面。linesnumbered
让算法中显示行号。- 还可以添加
boxed
, 让算法排版时插入在一个盒子里。
基本语法
代码 | 含义 |
---|---|
; | 在行末添加分号,并自动换行 |
\caption{} | 插入标题 |
\KwData | 效果为:“Data:输入信息” |
\Kwln | 效果为:“ln:输入信息” |
\KwOut | 效果为:“Out:输出信息” |
\KwResult | 效果为:“Result:输出信息” |
\For {条件} | |
\If {条件} | |
\While {条件} | |
\tcc | /注释/ |
\tcp | //注释 |
\elf {条件}{肯定语句} |
更多说明:
- 如果你不想让你的伪代码叫做 ‘Algorithm 编号’, 可以使用
\renewcommand{\algorithmcfname}{算法名}
命令来修改。 - 除了\If, \Else, \ElseIf之外,还有\uIf, \lIf, \uElse, \lElse, \uElseIf, \lElseIf等命令,他们的区别在于
- \If, \Else, \ElseIf都是会以end结尾
- \uIf, \uElse, \uElseIf, 是不以end结尾的块级元素
- \lIf, \lElse, \lElseIf 是不以end为结尾的行内元素
- 在If-else结构中,\eIf 自带else(即 if 和 else 共用一个 end),而只是用 \If 和 \Else 的话则会多出一个end给Else。
此外,Algorithm2e 本身不支持 Do-While 结构(支持的是 While-Do),需要自行定义。不过自行定义并不难,因为宏包中内置了 Repeat-Until 结构,在 Algorithm2e 中是“宏指令(Repeat macros)”的一种
自定义宏指令
\SetKwRepeat{Do}{do}{while}
定义完之后,就可以在伪代码块中使用如下命令调用
\Do{<结束条件>}{<执行命令>}
参考文献