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{<结束条件>}{<执行命令>}

参考文献

posted @ 2023-01-04 18:51  X1OO  阅读(1670)  评论(0编辑  收藏  举报