宏包algorithm與algorithmic引發的Undefined control sequence問題

背景:自己是在texlive+vs code環境下寫小論文,在寫算法的時候,一直出現輸入控制語句全部都是沒有定義的,如下

Undefined control sequence.
    \REQUIRE
Undefined control sequence.
    \ENSURE
...

可是我明明是按照別人寫的調用了包,修改了輸入輸出的指令,然後總是提示我使用沒定義的控制語句。

\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}

最可氣的是別人的能編譯過,我的缺過不了!

學習的是這篇文章:latex使用小結

後來自己仔細對比了一下,發現我少了下面這兩句話,至於爲什麼不加,是因爲我不知道是在哪個人寫的latex算法操作中提了一句“algorithmic是負責算法格式的”,所以我就想着我先顯示出來個基本的,汗!

\begin{algorithmic}[1]
...
\end{algorithmic}

然後我查了查這兩個包的意義:

  • algorithm

首先要明白一個概念“浮動體”,簡單說就是一個篇幅較大,同時又不方便分頁的內容,這個內容會被放到其它地方。

Algorithm 環境主要作用是將代碼段變成浮動體,浮動體一方面能防止代碼超出頁面範圍,另外一方面也方面最後生成和圖表目錄相似的算法列表目錄。也能通過標記,方便在文章其它地方引用。

  • algorithmic

包含了算法設計中常用的結構,如:判斷 (IF) ,循環 (WHILE, FOR, LOOP), 輸入(REQUIRE) ,輸出(ENSURE)等。在這裏需要注意的是,所有 algorithmic 提供的命令都是全大寫。

注意algorithmic和algorithmicx的區別,在latex  cookbook別人用的是algorithmicx,所以控制語句是首字母大寫,而如果你用algorithmic,則是所有字母都要大寫,反正要注意是和包有關的。

至於還有一個問題:

\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}

這兩個重新命令是在你的算法表格中把Ensure變成了Input,並不是把控制語句的關鍵字改成了Input,也就是說你在寫控制語句的時候還是得用Ensure!

如果要看algorithmic和algorithmicx詳細的列子可以看下面這篇:Algorithmic和Algorithm環境

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章