背景:自己是在texlive+vs code环境下写小论文,在写算法的时候,一直出现输入控制语句全部都是没有定义的,如下
Undefined control sequence.
\REQUIRE
Undefined control sequence.
\ENSURE
...
可是我明明是按照别人写的调用了包,修改了输入输出的指令,然后总是提示我使用没定义的控制语句。
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
最可气的是别人的能编译过,我的缺过不了!
学习的是这篇文章:latex使用小结
后来自己仔细对比了一下,发现我少了下面这两句话,至于为什么不加,是因为我不知道是在哪个人写的latex算法操作中提了一句“algorithmic是负责算法格式的”,所以我就想着我先显示出来个基本的,汗!
\begin{algorithmic}[1]
...
\end{algorithmic}
然后我查了查这两个包的意义:
- algorithm
首先要明白一个概念“浮动体”,简单说就是一个篇幅较大,同时又不方便分页的内容,这个内容会被放到其它地方。
Algorithm 环境主要作用是将代码段变成浮动体,浮动体一方面能防止代码超出页面范围,另外一方面也方面最后生成和图表目录相似的算法列表目录。也能通过标记,方便在文章其它地方引用。
-
algorithmic
包含了算法设计中常用的结构,如:判断 (IF) ,循环 (WHILE, FOR, LOOP), 输入(REQUIRE) ,输出(ENSURE)等。在这里需要注意的是,所有 algorithmic 提供的命令都是全大写。
注意algorithmic和algorithmicx的区别,在latex cookbook别人用的是algorithmicx,所以控制语句是首字母大写,而如果你用algorithmic,则是所有字母都要大写,反正要注意是和包有关的。
至于还有一个问题:
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
这两个重新命令是在你的算法表格中把Ensure变成了Input,并不是把控制语句的关键字改成了Input,也就是说你在写控制语句的时候还是得用Ensure!
如果要看algorithmic和algorithmicx详细的列子可以看下面这篇:Algorithmic和Algorithm环境