用上Latex實現編輯偽代碼


【需求】在用word寫小論文的時候想插入漂亮的偽代碼,搜索發現有latex這個排版軟件可以實現。

【思路】

1、利用Aurora插件在word中插入對象時打開latex編輯。(這個出現“problems running latex”多種方法均未被解決,遂放棄,仍想試試的見http://hqium.blog.163.com/blog/static/253625026201712110504726/#)

2、利用CTeX里面的WinEdt編輯。(直接用Latex,但怎么將生成的結果導入到word未研究,或者直接用Latex排版小論文)

【下載】

[MiKTeX] https://miktex.org/download

[Aurora2.2]  http://www.xiazaiba.com/html/31107.html

[Aurora 2.x keygen] http://download.csdn.net/detail/studentalei/4600437

[CTeX] http://www.ctex.org/CTeXDownload

[algorithm宏包] https://www.ctan.org/

【步驟】

1、如果按照思路1安裝前三個,如果按照思路2安裝CTeX。

  找了一個例子[1],在winedt新建文檔,粘貼編碼保存,選擇XeLaTex運行(首次使用出現了‘algorithm.sty’ not found的問題)

2、所以要給MikTex安裝對應宏包(package),利用Miktex Package Manager(在工具欄Tex里面有)找到algorithm自動安裝出現一直連不上服務器的問題“The remote package redository is not online.”,后根據知乎[2]改用從本地文件夾安裝還是根據博客[3]更換鏡像都出現了問題:包括“本地地址does not seem to be a local package repository”、“Windows API error 87: 鍙傛暟閿欒銆?” 【由於最后失敗就不詳細說明了,可能只是我個人問題,想試試該方法的自行打開文末網址[2][3]】

3、按照【下載】里的地址找到algorithm宏包下載到本地並解壓,新建一個文件夾放一下(我的是:E:\Miktex_pac\algorithms)

4、打開命令提示符界面(windows+R ,cmd),進入路徑(E:,cd Miktex_pac\algorithms),輸入”latex algorithms.ins”, 經過一段時間編譯,生成algorithm.sty。(下載宏包解壓后自帶了pdf幫助文檔,如果沒有就再輸入”latex algorithms.dtx”生成)

5、將生成的algorithm.sty文件放到LaTeX能夠識別的路徑下(我的是”C:\CTEX\MiKTeX\tex\latex”),新建一個文件夾algorithms,放進去。

6、找到MikTex Options(在CTeX的工具欄Tex里面有,或者在開始找到MikTex里面的Setting(Admin)),點擊general選項卡的Refresh FNDB按鈕,等待~

 

7、然后重新運行步驟1的編碼,成功就會看到工具欄的pdf變成紅色,點擊打開pdf。(編碼例子有中文的,沒有顯示出來,后續研究)

 

 

參考資料:

[1] http://blog.csdn.net/yeyang911/article/details/41758039

[2] https://www.zhihu.com/question/26584112

[3] http://www.nexoncn.com/read/ed4f5ad1d8d480de07e3b3a2.html

[4] http://www.cnblogs.com/csucat/p/5142459.html

 

 【方便附上編碼測試】

\documentclass[11pt]{article}
\usepackage{CJK}
\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\usepackage{amsmath}

\floatname{algorithm}{算法}
\renewcommand{\algorithmicrequire}{\textbf{輸入:}}
\renewcommand{\algorithmicensure}{\textbf{輸出:}}

\begin{document}
\begin{CJK*}{UTF8}{gkai}
    \begin{algorithm}
        \caption{用歸並排序求逆序數}
        \begin{algorithmic}[1] %每行顯示行號
            \Require $Array$數組,$n$數組大小
            \Ensure 逆序數
            \Function {MergerSort}{$Array, left, right$}
                \State $result \gets 0$
                \If {$left < right$}
                    \State $middle \gets (left + right) / 2$
                    \State $result \gets result +$ \Call{MergerSort}{$Array, left, middle$}
                    \State $result \gets result +$ \Call{MergerSort}{$Array, middle, right$}
                    \State $result \gets result +$ \Call{Merger}{$Array,left,middle,right$}
                \EndIf
                \State \Return{$result$}
            \EndFunction
            \State
            \Function{Merger}{$Array, left, middle, right$}
                \State $i\gets left$
                \State $j\gets middle$
                \State $k\gets 0$
                \State $result \gets 0$
                \While{$i<middle$ \textbf{and} $j<right$}
                    \If{$Array[i]<Array[j]$}
                        \State $B[k++]\gets Array[i++]$
                    \Else
                        \State $B[k++] \gets Array[j++]$
                        \State $result \gets result + (middle - i)$
                    \EndIf
                \EndWhile
                \While{$i<middle$}
                    \State $B[k++] \gets Array[i++]$
                \EndWhile
                \While{$j<right$}
                    \State $B[k++] \gets Array[j++]$
                \EndWhile
                \For{$i = 0 \to k-1$}
                    \State $Array[left + i] \gets B[i]$
                \EndFor
                \State \Return{$result$}
            \EndFunction
        \end{algorithmic}
    \end{algorithm}
\end{CJK*}
\end{document}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM