latex 伪代码_Latex-算法伪代码
lalex算法偽代碼請用相應的宏包!
latex算法偽代碼請用相應的宏包!
一般來說論文中算法的偽代碼生成是比較簡單,所以我只給出兩種方法
- algorithm
宏包
usepackage{algorithm}usepackage{algorithmic}
我給出兩種例子,足夠平時使用:
官方用例如下:
begin{algorithm} caption{Calculate $y = x^n$} label{alg3} begin{algorithmic}REQUIRE $n geq 0 vee x neq 0$ ENSURE $y = x^n$ STATE $y gets 1$ IF{$n < 0$} STATE $X gets 1 / x$ STATE $N gets -n$ ELSE STATE $X gets x$ STATE $N gets n$ ENDIF WHILE{$N neq 0$} IF{$N$ is even} STATE $X gets X times X$ STATE $N gets N / 2$ ELSE[$N$ is odd] STATE $y gets y times X$ STATE $N gets N - 1$ ENDIF ENDWHILE end{algorithmic} end{algorithm}給出另一個我實際論文中的寫法(以下算法過程,可以在我發表的論文中找到)
begin{algorithm}%textsl{}setstretch{1.8}renewcommand{algorithmicrequire}{textbf{Input:}}renewcommand{algorithmicensure}{textbf{Output:}}caption{STVMD based on STFT}label{alg1}begin{algorithmic}[1]STATE Initialization:$left{ {s_{k,t}^1} right},left{ {omega _{k,t}^1} right},lambda _t^1,n leftarrow 0$STATE ${s_{r,t}}left( omega right) = int_0^{ + infty } {{s_r}left( tau right){w_h}left( {t - tau } right)} exp left( {jomega tau } right)dtau $ (via STFT)REPEATSTATE $n leftarrow n + 1$STATE Update $ s_{k,t}^{n + 1} $ based on Equation~(ref{eqn_8})STATE Update $omega _{k,t}^{n + 1}$ based on Equation~(ref{eqn_9})STATE Update $lambda _t^{n + 1} $ based on Equation~(ref{eqn_10})UNTIL $sumlimits_{k=1}^P {{{left| {s_{k,t}^{n + 1}left( omega right) - s_{k,t}^nleft( omega right)} right|_2^2} mathord{left/{vphantom {{left| {s_{k,t}^{n + 1}left( omega right) - s_{k,t}^nleft( omega right)} right|_2^2} {left| {s_{k,t}^nleft( omega right)} right|_2^2}}} right.kern-nulldelimiterspace} {left| {s_{k,t}^nleft( omega right)} right|_2^2}}} < varepsilon $ STATE Update ${s_k}left( t right)$ based on Equation~(ref{eqn_11_12}) (via ISTFT)ENSURE decomposed modes $ left{ {{s_k}left( t right)} right}$, $left{ {{omega _k}left( t right)} right}$end{algorithmic} end{algorithm}需要說明的幾點:
1:
renewcommand{algorithmicrequire{textbf{Input:}}renewcommand{algorithmicensure{textbf{Output:}}
這表示將將官方的 require 和 ensure 關鍵字換成我們常用的 input 和 output。
2:
%textsl{}setstretch{1.8}有的時候我們的公式比較復雜,所以存在兩行公式之間的間隔很短或者重疊,所以我們顯示調整偽代碼中行距,就可以使用上面的語句。
- algorithm2e
這里還給出另一種格式的代碼,所需要的宏包不一樣。
usepackage[linesnumbered,ruled,vlined]{algorithm2e}官方用例之一如下:
IncMargin{1em} begin{algorithm} SetKwData{Left}{left}SetKwData{This}{this}SetKwData{Up}{up} SetKwFunction{Union}{Union}SetKwFunction{FindCompress}{FindCompress} SetKwInOut{Input}{input}SetKwInOut{Output}{output}Input{A bitmap $Im$ of size $wtimes l$} Output{A partition of the bitmap}BlankLine emph{special treatment of the first line}; For{$ileftarrow 2$ KwTo $l$}{ emph{special treatment of the first element of line $i$}; For{$jleftarrow 2$ KwTo $w$}{label{forins} Left$leftarrow$FindCompress{$Im[i,j-1]$}; Up$leftarrow$ FindCompress{$Im[i-1,]$}; This$leftarrow$ FindCompress{$Im[i,j]$}; If(tcp*[h]{O(Left,This)==1}){Left compatible with This}{label{lt} lIf{Left $<$ This}{Union{Left,This}}lElse{Union{This,Left}} } If(tcp*[f]{O(Up,This)==1}){Up compatible withThis}{label{ut} lIf{Up $<$ This}{Union{Up,This}} tcp{This is put under Up to keep tree as flat as possible}label{cmt} lElse{Union{This,Up}}tcp*[h]{This linked to Up}label{lelse}}}lForEach{element $e$ of the line $i$}{FindCompress{p}} } caption{disjoint decomposition}label{algo_disjdecomp} end{algorithm}DecMargin{1em}其他用例參見官網說明
algorithm2e?mirrors.cqu.edu.cn最后,上述使用范例足夠平時使用,祝大家論文必中。
%%%%%%%%手動分割線
看到評論中,有人問道算法分頁怎么辦
我查了以下目前大部分的解決方法是采用makeatletter和makeatother來實現的,具體方法如下:
Latex寫論文中,算法過長,需要分頁顯示的方法_rechardchen123的博客-CSDN博客_latex 算法分頁?blog.csdn.net我自己也測試了以下,需要注意的就是我們論文中所有的begin{algorithm}` 和 `end{algorithm}需要用begin{breakablealgorithm}和end{breakablealgorithm}替換。但我們測試結果發現,對于雙欄模板而言,好像該方法并不能實現自動分行,所以某一行過長,會導致混亂,目前我也沒發現比較好的辦法。
單欄效果如下:
總結
以上是生活随笔為你收集整理的latex 伪代码_Latex-算法伪代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python第七周答案_马哥2016全新
- 下一篇: 外部表不是预期的格式_超详细的CMDB介