LaTeX 写作: 算法代码排版 --latex2e范例总结
latex2e 宏包的使用范例:
- usepackage[ruled]{algorithm2e} %算法排版样式1
- usepackage[ruled,vlined]{algorithm2e} %算法排版样式2
- usepackage[linesnumbered,boxed]{algorithm2e} %算法排版样式3
使用上述代码中三种不同的宏包编译后的代码排版样式预览:
样式一:
样式二:
样式三:
latex代码排版.tex文件:
documentclass{article}
usepackage[ruled]{algorithm2e} %算法排版样式1 %usepackage[ruled,vlined]{algorithm2e} %算法排版样式2 %usepackage[linesnumbered,boxed]{algorithm2e} %算法排版样式3
egin{document} How to use the algorithm2e in LaTeX ~ file. Examples:
% ------------------------------Example - 1--------------------------------------------- egin{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------------------------------------------------ egin{algorithm} % SetAlgoNoLine %去掉之前的竖线 caption{identifyRowContext} KwIn{$r_i$, $Backgrd(T_i)$=${T_1,T_2,ldots ,T_n}$ and similarity threshold $ heta_r$} KwOut{$con(r_i)$} $con(r_i)= Phi$; For{$j=1;j le n;j e i$} { float $maxSim=0$; $r^{maxSim}=null$; While{not end of $T_j$} { compute Jaro($r_i,r_m$)($r_min T_j$); If{$(Jaro(r_i,r_m) ge heta_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 % ewifif@restonecol %makeatother %letalgorithm elax %letendalgorithm elax end{document}
中文latex模式下,更改Input为输入,更改Output为输出的方法: 在算法内部插入、
SetKwInOut{KIN}{输入}
SetKwInOut{KOUT}{输出}
用我们定义的新的宏名“KIN” 在算法开头相应位置替换掉自带的KwInput,用"KOUT" 替换掉KwOutput 即可,实现中文的输入和输出.
具体事例如下:
1 enewcommand{algorithmcfname}{算法} 2 egin{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)| geqvarepsilon )$ or $(t leq T )$} 20 { 21 For{$ i=1$ to $M$} 22 { 23 emph{$ lacktriangleright $ (Mutation and Crossover)}\ 24 % extit{ $ lacktriangleright $ (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{$ lacktriangleright $ (Greedy Selection)}\ 31 % extit{ $ lacktriangleright $ (Greedy Selection) }\ 32 eIf{$ f( extbf{u}_{i,t}) < f( extbf{x}_{i,t}) $} 33 { 34 $ extbf{x}_{i,t} leftarrow extbf{u}_{i,t}$; 35 If{$ f( extbf{x}_{i,t}) < f(varDelta)$} 36 { 37 $ varDelta leftarrow extbf{x}_{i,t}$ ; 38 } 39 } 40 { 41 $ extbf{x}_{i,t} leftarrow extbf{x}_{i,t} $; 42 } 43 } 44 $ t leftarrow t+1 $; 45 } %While 46 Return the best vector $varDelta$; 47 end{algorithm}