背景:自己是在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环境

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐