目录
伪代码
1、通用模板
2、模块细节
2.1模板说明
2.2模板引用
2.3模板改名
3、常用语句
3.1IF条件判断语句
3.2FOR循环语句
3.3WHILE循环语句
代码块
1、基础用法
2、高级用法
需要用到的宏包:
\usepackage{algorithmic}
\usepackage{algorithm}
对于计算机专业的学生,在论文中插入伪代码描述所用的算法还是比较常见的。下面是伪代码的通用模板,我们先体验一下其效果,然后在后面详细讲解模板中的每个细节。
\begin{algorithm}[!h]
\caption{Algorithm of SUM}
\label{alg:AOS}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\begin{algorithmic}[1]
\REQUIRE $A$, $B$, $C$(This is Inputs) %%input
\ENSURE XXX(This is Outputs) %%output
\STATE xxxxx
\WHILE{$A=B$}
\STATE xxxxx
\ENDWHILE
\FOR{each $i \in [1,10]$}
\IF {$C = 0$}
\STATE xxxxx
\ELSE
\STATE xxxxx
\ENDIF
\ENDFOR
\RETURN Outputs
\end{algorithmic}
\end{algorithm}
2.1.1框架
\begin{algorithm}[htbp]
...
\end{algorithm}
整体大框架明确了伪代码或算法结构的开始(\begin)和结束(\end)的位置,而 algorithm 说明插入的内容是算法。
[htbp] 是算法的摆放位置,括号内容可根据需求选填,表示意思与图片、表格相同。
2.1.2标题、标签
\caption{Algorithm of SUM}
\label{alg:AOS}
caption 是算法的标题。{ }中就是标题展示的具体内容,标题也会有编号,一般都是自动编号。label 是标签,标签主要是在引用的时候会用到。
2.1.3输入输出设置
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\renewcommand{}{}
:第二个{}是名称,这里设为Input:和Output:。
如果每个算法都遵循这个设定,可将其设为全局命令:添加到引言区。(算法优先选择自己内部局部设定的命令)
假如直接使用下面命令:
\algorithmicrequire
\algorithmicensure
因为算法一般都要有输入输出,所以上面这个命令不可取。
2.1.4算法内容框架
\begin{algorithmic}[1]
\end{algorithmic}
这一对是算法内容的框架,表示算法的具体实现以伪代码的形式写在这里。
[]中的参数一般写1,表示算法内容几行标一次序号,这里是一行一标记。如果没有[],则不标记序号。
2.1.5输入输出
\REQUIRE $A$, $B$, $C$(This is Inputs) %%input
\ENSURE XXX(This is Outputs) %%output
\REQUIRE
命令表示输入,\ENSURE
命令表示输出。
2.1.6算法内容
\STATE xxxxx
\WHILE{$A=B$}
\STATE xxxxx
\ENDWHILE
\FOR{each $i \in [1,10]$}
\IF {$C = 0$}
\STATE xxxxx
\ELSE
\STATE xxxxx
\ENDIF
\ENDFOR
\RETURN Outputs
每一条独立的语句,前面都要添加命令\STATE
。除此之外,我们最常用的还有IF判断语句、FOR循环语句、WHILE循环语句和RETURN返回语句。
As show in Algorithm \ref{alg:AOS} %% 英文引用算法
正如算法 \ref{alg:AOS} %% 中文引用算法
只需要在模块前面添加一行:\floatname{algorithm}{名称}
。
在算法的伪代码书写模式中有一些常用的语句,比如:条件分支、循环结构等。这些语法的使用要用到 algorithmic 宏包,即:\usepackage{algorithmic}
。
\IF {条件}
\STATE 语句1
\ELSE
\STATE 语句2
\ENDIF
\IF {条件}
\STATE 语句1
\ENDIF
\IF {条件1}
\STATE 语句1
\ELSE
\IF{条件2} \STATE 语句2
\ELSE \STATE 语句3
\ENDIF
\ENDIF
\FOR{循环条件}
\STATE 循环语句
\ENDFOR
\WHILE{条件}
\STATE 循环语句
\ENDWHILE
\usepackage{listings}
:所需要的宏包
\lstset{}
进行基础设置
\begin{lstlisting}[language=xxx]
和\end{lstlisting}
插入代码块。
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{listings}
% 代码块基础设置
\lstset{
numbers=left, % 在左侧显示行号
showstringspaces=false, % 不显示字符串中的空格
frame=single, % 设置代码块边框
}
\title{Latex基础} % 文章标题
\author{埘间海洋} % 作者的名称
\date{\today} % 当天日期
\begin{document}
\maketitle
\section{C Language}
\begin{lstlisting}[language=c]
#include
// main function
int main() {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\end{document}
在基础用法基础上增加了\usepackage{xcolor}
宏包,并使用\lstset{}进行高级设置。
高级设置除基础设置外,还包括关键字格式,字符串格式等设置。
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{listings}
\usepackage{xcolor}
% 代码块高级设置
\lstset{
% basicstyle=\footnotesize, % 设置整体的字体大小
showstringspaces=false, % 不显示字符串中的空格
frame=single, % 设置代码块边框
numbers=left, % 在左侧显示行号
% numberstyle=\footnotesize\color{gray}, % 设置行号格式
numberstyle=\color{darkgray}, % 设置行号格式
backgroundcolor=\color{white}, % 设置背景颜色
keywordstyle=\color{blue}, % 设置关键字颜色
commentstyle=\it\color[RGB]{0,100,0}, % 设置代码注释的格式
stringstyle=\sl\color{red}, % 设置字符串格式
}
\title{Latex基础} % 文章标题
\author{埘间海洋} % 作者的名称
\date{\today} % 当天日期
\begin{document}
\maketitle
\section{C Language}
\begin{lstlisting}[language=c]
#include
// main function
int main() {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\end{document}
Latex相关内容链接:
1、Latex学习笔记之基础入门篇
2、Latex学习笔记之图片篇
3、Latex学习笔记之表格篇
4、Latex学习笔记之数学公式篇
5、Latex学习笔记之伪代码、代码块篇
6、Latex学习笔记之参考文献篇
Latex学习笔记——总篇(入门、图片、表格、数学公式、伪代码、代码块、参考文献)