LaTeX记录
在LaTeX中使用算法伪代码
引入宏包
1 | \usepackage{algorithm} |
创建伪代码环境
1 | \begin{algorithm}[htbp] |
创建伪代码
1 | \begin{algorithm}[htbp] |
添加输入输出(可选)
首先重定义关键字 1
2
3\floatname{algorithm}{{Algorithm}} % 可将'Algorithm'修改为'算法'
\renewcommand{\algorithmicrequire}{\textbf{Input:}} % 可将'Input'修改为'输入'
\renewcommand{\algorithmicensure}{\textbf{Output:}} % 可将'Output'修改为'输出'
之后在代码环境中添加相应语句即可,即 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22\begin{algorithm}[htbp]
\caption{Example Pseudocode} % 可替换为中文
\begin{algorithmic}[1] % 这里的[1]代表显示每行的行号,若改为[2],则代表每2行显示一次行号
\REQUIRE{$y$} % 输入
\ENSURE{$x$} % 输出
\STATE $x\gets0$
% if语句
\IF {$x\leq 0$}
\STATE $x\gets x+1$
\ELSIF{$x\geq1$}
\STATE $x\gets x-1$
\ELSE
\STATE $x\gets 2x$
\ENDIF
% for语句
\FOR {$x = 0, 1, ..., 10$}
\STATE $x\gets x+1$
\ENDFOR
\end{algorithmic}
\end{algorithm}
伪代码跨页
当伪代码长度过长时,需要跨页显示,解决方法如下 1. 在usepackage
的地方粘贴如下代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20\makeatletter
\newenvironment{breakablealgorithm}
{% \begin{breakablealgorithm}
\begin{center}
\refstepcounter{algorithm}% New algorithm
\hrule height.8pt depth0pt \kern2pt% \@fs@pre for \@fs@ruled
\renewcommand{\caption}[2][\relax]{% Make a new \caption
{\raggedright\textbf{\fname@algorithm~\thealgorithm} ##2\par}%'\fname@algorithm'可替换为'算法',同时可删除'\floatname{algorithm}{{Algorithm}}'语句
\ifx\relax##1\relax % #1 is \relax
\addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##2}%
\else % #1 is not \relax
\addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##1}%
\fi
\kern2pt\hrule\kern2pt
}
}{% \end{breakablealgorithm}
\kern2pt\hrule\relax% \@fs@post for \@fs@ruled
\end{center}
}
\makeatother1
2
3\usepackage{algorithm}
\usepackage{algorithmic} % \usepackage{algorithmicx}
\usepackage{algpseudocode}\begin{algorithm}
和\end{algorithm}
替换成\begin{breakablealgorithm}
和\end{breakablealgorithm}
即可。
注意:在实际使用时,可能会出现与正文间距过近的情况,因而可能需要在\begin{breakablealgorithm}
前和\end{breakablealgorithm}
后添加部分空行,以保证和前后文的间距。