LaTeX 算法代码排版 --latex2e范例总结

时间:2021-07-21 19:19:58

LaTeX 写作: 算法代码排版 --latex2e范例总结

 

latex2e 宏包的使用范例:

 

  • \usepackage[ruled]{algorithm2e}                                     %算法排版样式1
  • \usepackage[ruled,vlined]{algorithm2e}                          %算法排版样式2
  • \usepackage[linesnumbered,boxed]{algorithm2e}        %算法排版样式3

 

使用上述代码中三种不同的宏包编译后的代码排版样式预览:

样式一:

LaTeX 算法代码排版 --latex2e范例总结

样式二:

LaTeX 算法代码排版 --latex2e范例总结

样式三:

LaTeX 算法代码排版 --latex2e范例总结

 

latex代码排版.tex文件: 

 

\documentclass{article}
\usepackage[ruled]{algorithm2e}
%算法排版样式1
%\usepackage[ruled,vlined]{algorithm2e} %算法排版样式2
%\usepackage[linesnumbered,boxed]{algorithm2e} %算法排版样式3

\begin{document}
How to use the algorithm2e
in \LaTeX ~ file.

Examples:
% ------------------------------Example - 1---------------------------------------------
\begin{algorithm}[H]
\caption{How to write algorithms}
\KwIn{
this text}
\KwOut{how to write algorithm with \LaTeX2e }

initialization\;
\While{not at end of
this document}{
read current\;
\eIf{understand}
{
go to next section\;
current section becomes
this one\;
}
{
go back to the beginning of current section\;
}
}
\end{algorithm}

% ---------------------------Example - 2------------------------------------------------
\begin{algorithm}
% \SetAlgoNoLine %去掉之前的竖线
\caption{identifyRowContext}
\KwIn{$r_i$, $Backgrd(T_i)$
=${T_1,T_2,\ldots ,T_n}$ and similarity threshold $\theta_r$}
\KwOut{$con(r_i)$}
$con(r_i)
= \Phi$\;
\For{$j
=1;j \le n;j \ne i$}
{
float $maxSim=0$\;
$r
^{maxSim}=null$\;
\While{not end of $T_j$}
{
compute Jaro($r_i,r_m$)($r_m\
in T_j$)\;
\If{$(Jaro(r_i,r_m) \ge \theta_r)\wedge (Jaro(r_i,r_m)\ge r
^{maxSim})$}
{
replace $r
^{maxSim}$ with $r_m$\;
}
}
$con(r_i)
=con(r_i)\cup {r^{maxSim}}$\;
}
return $con(r_i)$\;
\end{algorithm}
%--------------------------------------------------------------------------------------
some special information
The algorithm2e LaTeX package conflicts with several others over the use of the algorithm identifier. A common indicator
is something like this message:
To resolve the issues, simply put the following just before the inclusion of the algorithm2e package:

%\makeatletter
%\newif\if@restonecol
%\makeatother
%\let\algorithm\relax
%
\let\endalgorithm\relax

\end{document}

 中文latex模式下,更改Input为输入,更改Output为输出的方法: 在算法内部插入、

 

\SetKwInout{KIN}{输入}

\SetKwInout{KOUT}{输出}

 

用我们定义的新的宏名“\KIN” 在算法开头相应位置替换掉自带的\KwInput,用"\KOUT" 替换掉\KwOutput 即可,实现中文的输入和输出.

具体事例如下:

 

 1 \renewcommand{\algorithmcfname}{算法}
2 \begin{algorithm}[H]
3 %\SetAlgoNoLine
4 \SetKwInOut{KIN}{输入}
5 \SetKwInOut{KOUT}{输出}
6 %\BlankLine %空一行
7 \caption{标准DE算法 }
8 \label{DE_algo} %
9 \KIN{Population: $ M$; Dimension: $ D $; Genetation: $ T $ }
10 \KOUT{The best vector (solution) $ \varDelta $ }
11 $ t \leftarrow 1 (initialization) $\;
12 \For{$i=1$ to $ M $ }
13 {\For{$j=1$ to $ D $}
14 {
15 $ {x}_{i,t}^j=x_{min}^j + rand(0,1)\cdotp (x_{max}^j-x_{min}^j) $\;
16 }
17 }
18 %--------------------------------------------------
19 \While{$(|f(\varDelta)| \geq\varepsilon )$ or $(t \leq T )$}
20 {
21 \For{$ i=1$ to $M$}
22 {
23 \emph{$ \blacktriangleright $ (Mutation and Crossover)}\\
24 %\textit{ $ \blacktriangleright $ (Mutation and Crossover) }\\
25 \For{$j=1$ to $ D $}
26 {
27 $ v_{i,t}^j =Mutation(x_{i,t}^j)$\;
28 $ u_{i,t}^j =Crossover(x_{i,t}^j,v_{i,t}^j)$\;
29 }
30 \emph{$ \blacktriangleright $ (Greedy Selection)}\\
31 %\textit{ $ \blacktriangleright $ (Greedy Selection) }\\
32 \eIf{$ f(\textbf{u}_{i,t}) < f(\textbf{x}_{i,t}) $}
33 {
34 $ \textbf{x}_{i,t} \leftarrow\textbf{u}_{i,t}$\;
35 \If{$ f(\textbf{x}_{i,t}) < f(\varDelta)$}
36 {
37 $ \varDelta \leftarrow \textbf{x}_{i,t}$ \;
38 }
39 }
40 {
41 $ \textbf{x}_{i,t} \leftarrow \textbf{x}_{i,t} $\;
42 }
43 }
44 $ t \leftarrow t+1 $\;
45 } %While
46 \Return the best vector $\varDelta$\;
47 \end{algorithm}