5. LaTeX 算法伪代码基本格式排版 |
您所在的位置:网站首页 › 伪代码书写规范 › 5. LaTeX 算法伪代码基本格式排版 |
LaTeX 算法伪代码基本格式排版
1、算法排版初体验
LaTeX 的所有宏包文件都要写在 \documentclass 命令之后和\begin{document} 之前。在本文中,我们主要会用到如下的两个宏包: \usepackage{algorithmic} \usepackage{algorithm}在论文写作的过程中,对于计算机专业的学生,在论文中插入伪代码描述所用的算法还是比较常见的。这里我们先体验一下伪代码算法插入模板的效果,然后在后面详细讲解模板的中的每个细节。 我们比较通用的模板如下: \begin{algorithm}[!h] \caption{algorithm of SUM} \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}上述模板的展示效果如下: 1、算法排版框架 \begin{algorithm}[!t] ... \end{algorithm}整体大框架明确了伪代码或算法结构的开始(\begin)和结束(\end)的位置,而 algorithm 说明插入的内容是算法。[!h] 是算法的摆放格式:在当前位置(hear),所有的格式和图片、表格相同。 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。除此之外,我们最常用的还有判断语句、循环语句和返回语句。 2. 算法的引用算法的引用要用到的命令 /ref,如果要调用上面的算法,就可以这样调用: As show in algorithm \ref{alg:AOA}命令大括号中的就是算法的标签,执行结果如下: 有些时候,我们想用的不是 algorithm ,例如我们想写智能合约,就希望是下面这种样式: 只需要在使用前添加一行:\floatname{algorithm}{Contract} \floatname{algorithm}{Contract} \begin{algorithm}[!h] \caption{Cont of ABC} \label{alg:AOA} \begin{algorithmic}[1] \STATE AAAAA \end{algorithmic} \end{algorithm} 3、算法常用语句在算法的伪代码书写模式中有一些常用的语句,比如:条件分支、循环结构等。这些语法的使用要用到 algorithmic 宏包,即:\usepackage{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循环语句主要用于那些具有明确循环次数和范围的循环语句,例如有如下的几种情况: \FOR{循环条件} \STATE 循环语句 \ENDFOR这里以 1 到 100 以内所有整数之和为例: \STATE $Sum = 0$ \FOR{each $i \in [1,100]$} \STATE $Sum = Sum + i$ \ENDFOR执行结果如下: while循环主要用于那些循环次数不确定的,直到满足某个条件退出的,while循环格式如下: \WHILE{条件} \STATE 循环语句 \ENDWHILE举个例子:计算 1 到 2021 的整数和。 \begin{algorithm}[!h] \caption{Sum} \label{alg:Sum} \begin{algorithmic}[1] \STATE $s = 0$, $i = 1$ \WHILE{$s |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |