目录
一、原因
背景:自己是在texlive+vs code环境下写小论文,在写算法的时候,一直出现输入控制语句全部都是没有定义的,如下
Undefined control sequence.
\REQUIRE
Undefined control sequence.
\ENSURE
...
我调用了下面的宏包,但是总是提示我使用没定义的控制语句。
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
二、解决
原因:少了下面这两句话
\begin{algorithmic}[1]
...
\end{algorithmic}
补充:
algorithm:首先要明白一个概念“浮动体”,简单说就是一个篇幅较大,同时又不方便分页的内容,这个内容会被放到其它地方。Algorithm 环境主要作用是将代码段变成浮动体,浮动体一方面能防止代码超出页面范围,另外一方面也方面最后生成和图表目录相似的算法列表目录。也能通过标记,方便在文章其它地方引用。
algorithmic:包含了算法设计中常用的结构,如:判断 (IF) ,循环 (WHILE, FOR, LOOP), 输入(REQUIRE) ,输出(ENSURE)等。在这里需要注意的是,所有 algorithmic 提供的命令都是全大写。
区别:在latex cookbook别人用的是algorithmicx,所以控制语句是首字母大写,而如果你用algorithmic,则是所有字母都要大写,反正要注意是和包有关的。
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
这两个重新命令是在你的算法表格中把Ensure变成了Input,并不是把控制语句的关键字改成了Input,也就是说你在写控制语句的时候还是得用Ensure!