导读
LaTeX是我们科研过程中,非常重要的编写论文的工具。掌握LaTeX的基本用法,是科研人员必备的技能。
学LaTeX的过程中,遇到很多坑,总结一下,写一份简易教程,方便大家入门LaTeX并能够方便使用LaTeX编写论文。
本篇文章我们一起来了解LaTeX中算法的相关知识,包括算法相关的包,算法模板推荐与讲解,算法的引用和算法的改写。
如果你还没有配置好LaTeX环境,那就先阅读下面的文章吧!
LaTeX简易教程 | 01 LaTeX介绍与软件安装
如果你不知道如何下载模板,对模板结构不清晰,可以阅读下面的文章,我们以IEEE trans 的模板为例讲解LaTeX的模板下载和结构详解。
LaTeX简易教程 | 02 LaTeX模板下载与结构详解
前三篇文章,我们讲解了如何在文章中插入公式、图片和表格。
LaTeX简易教程 | 03 一篇文章讲通LaTeX公式与特殊字母(文末有福利)
LaTeX简易教程 | 04 一篇文章讲通LaTeX图片的排版、引用与格式
LaTeX简易教程 | 05 一篇文章讲通LaTeX表格格式与常用表格类型详解
接下来让我们一起走进今天的文章吧!
1
LaTeX算法总述
1、LaTeX算法包
LaTeX的所有包文件都要写在\ documentclass命令之后和\begin{document}之前。
在本文中,我们会用到的包文件有:
\usepackage{algorithmic}
\usepackage{algorithm}
对于第一个包,我们还可以使用algorithm2e包或 algorithmicx包。这三个包一般不要混用,只用一个,不同的包的写法,还有显示风格可能都不同,混用可能会出现错误。
如果有必要,后面我会单独再讲解这些包。本教程,我们以algorithmic包为例讲解算法的实现。
2、鸡汤——模板中没有算法怎么办?
很多论文中,是不需要算法的,我们的模板中,也没有提供算法的模板。
没有条件,创造条件也要上!
毕竟我们不能总指望着模板能给我们包揽所有问题,我们只是做些文本的修修改改!
但是互联网很发达,我们可以上互联网上找各种算法模板,然后选择一个和我们论文风格一致并且比较美观的。
我们的人生也是如此,不可能时时顺利,事事顺心,想要取得一些成就就要付出对应的辛苦,不断思考、实事求是的付出一定是和收获成正比的!持续的收获会带来最终的成功!
2
算法模板讲解
前面不是说没有模板么?
这里的模板,是我自己认为比较不错的模板,分享给大家,毕竟我这个是教程总不能只仍给大家鸡汤,不提供解决办法!
1、模板语句和效果
我们的模板如下:
\begin{algorithm}[!h]
\caption{Algor of ABC}
\label{alg:AoA}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\begin{algorithmic}[1]
\REQUIRE $A$, $B$, $C$ %%input
\ENSURE EEEEE %%output
\STATE AAAAA
\WHILE{$A=B$}
\STATE BBBBB
\ENDWHILE
\FOR{each $i \in [1,10]$}
\IF {$C = 0$}
\STATE CCCCC
\ELSE
\STATE DDDDD
\ENDIF
\ENDFOR
\RETURN EEEEE
\end{algorithmic}
\end{algorithm}
结果如下:
个人感觉这个模板样式还是挺好看的!
2、详细讲解
表格和图片很多地方都是一致的,我们就简单说一下,不一样的地方我们着重讲解。
接下来我们详细讲解下每个部分:
1、框架
\begin{algorithm}[!t]
\end{algorithm}
整体大框架明确了表格的开始(\begin)和结束(\end)的位置,algorithm说明插入的是算法。[!h]是算法的摆放格式是在当前位置(hear),所有的格式和图片一致,具体请看下面的文章:
LaTeX简易教程 | 04 一篇文章讲通LaTeX图片的排版、引用与格式
一般来说算法都是在当前位置,如果当前位置放不下就会自动到下一排。
2、标题与标签
\caption{Algor of ABC}
\label{alg:AoA}
caption是图像的标题。{}中就是标题的具体内容,标题还会有编号,一般都是自动编号。label是标签,标签主要是在引用的时候会用到。
一般来说标签都喜欢强调一下我们这个是算法标签,即使用alg:AoA 而不是直接使用AOA作为标签。当然,图片和表格也可以这样,算法也可以不这样,具体就看大家的习惯咯!
3、设置输入输出
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
算法一般是需要输入和输出的。我们需要重新定义两个命令:
\algorithmicrequire
\algorithmicensure
这两个命令输入如下:
这时候我们需要命令:
\renewcommand{}{}
第一个大括号是修改前的命令,第二个大括号是修改后的命令。\textbf是命令文本的格式。
如果这条语句适用于所有的算法,那么我们就可以把这条语句和引用包的命令放在一起:
这样就是全局设定的命令,所有用到该命令的算法都要遵守这个设定。在每个具体的算法中,我们就不需要使用这个命令了。但如果在算法中使用了这个命令,就会优先按照这个命令来。而其他没有使用这个命令,就是用前面全局设定的命令。
4、算法内容框架
\begin{algorithmic}[1]
\end{algorithmic}
这两个是算法内容框架,表示算法的具体内容要写在这个里面。
后面有个参数,参数中一般都写1,这个1表示具体算法内容前面的序号是每几行语句标一次序号,一般我们都是每一行算法语句都要,所以是1。
5、输入输出
\REQUIRE $A$, $B$, $C$ %%input
\ENSURE EEEEE %%output
这一整块就是输入与输出,\REQUIRE命令表示输入,\ENSURE命令表示输出,因为我们前面已经修改了命令,如果没有修改而调用这两条语句,输出就是我们前面讲的那种样式:
如果算法中不需要输入和输出这两条语句,那我们这两条语句就不用写在算法中。输出的结果就没有这两块了:
6、算法内容
\STATE AAAAA
\WHILE{$A=B$}
\STATE BBBBB
\ENDWHILE
\FOR{each $i \in [1,10]$}
\IF {$C = 0$}
\STATE CCCCC
\ELSE
\STATE DDDDD
\ENDIF
\ENDFOR
\RETURN EEEEE
这一整块就是算法的内容了。每一条独立的语句,前面都要添加命令\STATE。除此之外,我们最常用的还有判断语句、循环语句和返回语句。在我们的这个模板里都有,在后面我们会详细讲解。
3、算法的引用
表格的引用要用到命令ref,例如我们要调用上面的算法,就可以这样调用:
As show in algorithm \ref{alg:AoA},
命令大括号中的就是算法的标签,执行结果如下:
4、算法改名
有些时候,我们想用的,不是algorithm,例如我们想写智能合约,就希望是下面这种样式:
我们就可以在使用前添加如下语句:
\floatname{algorithm}{Contract}
全部语句如下:
\floatname{algorithm}{Contract}
\begin{algorithm}[!h]
\caption{Cont of ABC}
\label{Con:AoA}
\begin{algorithmic}[1]
\STATE AAAAA
\end{algorithmic}
\end{algorithm}
3
算法常用语句
接下来给大家讲解一些算法中的常用语句。这些语法的使用要用到algorithmic包,当然也可以使用另外的两个,那就不是我们这篇文章下面讲的这些写法了,具体的我们后面再说明,我们先掌握着一种方法,足够应付所有的论文。
另外两种就是当我们已经用腻了这种写法或者我们觉得这种写法的算法不美观,可以选用另外两种我们更喜欢的。
1、if判断语句
if判断语句的结构如下:
\IF {条件}
\STATE 语句1
\ELSE
\STATE 语句2
\ENDIF
这个语句块的含义就是:如果条件成立,执行语句1,如果条件不成立,执行语句2。
如果我们不用考虑条件不成立,那么我们就可以省略else,直接写如下的语句块:
\IF {条件}
\STATE 语句1
\ENDIF
我们我们想有两个以上的情况分支,就需要用到嵌套功能,即在一个判断语句中再写一个判断语句,例如:
\IF {条件1}
\STATE 语句1
\ELSE
\IF{条件2} \STATE 语句2
\ELSE \STATE 语句3
\ENDIF
\ENDIF
2、for循环语句
for循环语句主要用于那些明确循环次数和范围的循环语句,例如如下几种情况。
1到100以内所有整数的和
100以内的所有素数
for循环写法如下:
\FOR{循环条件}
\STATE 循环语句
\ENDFOR
举个例子:
$Sum = 0$
\FOR{each $i \in [1,100]$}
\STATE $Sum = Sum + i$
\ENDFOR
执行结果如下:
3、while循环语句
while循环主要用于那些循环次数不确定的,直到满足某个条件退出的,while循环格式如下:
\WHILE{条件}
\STATE 循环语句
\ENDWHILE
举个例子:
\begin{algorithm}[!h]
\caption{Sum}
\label{alg:Sum}
\begin{algorithmic}[1]
\STATE $s = 0$, $i = 1$
\WHILE{$s<2021$}
\STATE $s = s+i$
\STATE $i++$
\ENDWHILE
\end{algorithmic}
\end{algorithm}
上面示例的执行结果如下:
4
下节更精彩
这一节我们学习了LaTeX的算法相关知识,包括算法相关的包,算法模板推荐与讲解,算法的引用和算法的改写!
下一节,我们将继续深入文章,讲解LaTeX中的参考文献,包括参考需要引用的包,参考文献的格式,参考文献的生成方法,以及参考文献的引用以。
长按二维码关注
标签:语句,LaTeX,06,algorithm,STATE,讲通,算法,模板 From: https://blog.51cto.com/u_12001271/5973632