在計算機科學當中,論文當中經常需要排版算法。相信大家在讀論文中也看見了很多排版精美的算法。本文就通過示例來簡要介紹一下 algorithms 束的用法。該束主要提供了兩個宏包,包含兩種進行算法排版的環境,algorithm 和 algorithmic 。
這兩個宏包是被設計成同時一起使用的,但也可以根據用戶的特殊需要分開使用。其中 algorithm 宏包主要是為算法提供一個浮動體環境,也就是說,在 LaTeX 中算法和圖像,表一樣,都是浮動體。algorithmic 宏包主要是用來完成算法的描述功能,該宏包提供了我們描述算法常用的幾種結構命令,如條件結構、循環結構等。下面我們就通過示例來對 algorithm 的使用進行講解。
Algorithmic 環境
Algorithmic 宏包,為描述算法提供了程序設計中的所有常用結構的表示,如:判斷 (IF) ,循環 (WHILE, FOR, LOOP), 輸入(REQUIRE) ,輸出(ENSURE)等。在這里需要注意的是,所有 algorithmic 提供的命令都是全大寫。下面,我們通過一個簡單程序的算法,來將所有的算法描述都用上。通過求從1到n的整數和的算法實例來說明 algorithmic 語法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
\begin
{algorithmic
}
\REQUIRE
$n \geq 1$
%輸入條件
\ENSURE
$Sum = 1 + \cdots + n$
%輸出
\STATE
$Sum \leftarrow 0$
%\STATE 命名演示
\IF
{
$n < 1$
}
%條件語句
\PRINT
{Input
Errow
}
%打印語句
\ELSE
\FOR
{
$i = 0$
to
n
}
%FOR循環結構
\STATE
$Sum = Sum + i$
\\
\STATE
$i = i + 1$
\ENDFOR
\ENDIF
\RETURN
Sum
\end
{algorithmic
}
|
以上就是一個算法的示例了其生成文檔效果如圖所示
這里用的 REQUIRE 命令和 ENSURE 命令和我們日常用的有不同,我們還可以使用重定義命令,將輸出變味我們常見的 Input 和 Output 形式,下面是命令:
1
2
|
\renewcommand
{
\algorithmicrequire
}
{
\textbf
{Input
:
}
}
\renewcommand
{
\algorithmicensure
}
{
\textbf
{Output
:
}
}
|
Algorithm 環境
Algorithm 環境主要作用是將代碼段變成浮動體,浮動體一方面能防止代碼超出頁面范圍,另外一方面也方面最后生成和圖表目錄相似的算法列表目錄。也能通過標記,方便在文章其它地方引用。還是以上面的例子為例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
\begin
{algorithm
}
\caption
{計算從1到n的和
}
%標題
\label
{alg1
}
%標記算法,方便在其它地方引用
\begin
{algorithmic
}
\REQUIRE
$n \geq 1$
%輸入條件
\ENSURE
$Sum = 1 + \cdots + n$
%輸出
\STATE
$Sum \leftarrow 0$
%\STATE 命名演示
\IF
{
$n < 1$
}
%條件語句
\PRINT
{Input
Errow
}
%打印語句
\ELSE
\FOR
{
$i = 0$
to
n
}
%FOR循環結構
\STATE
$Sum = Sum + i$
\\
\STATE
$i = i + 1$
\ENDFOR
\ENDIF
\RETURN
Sum
\end
{algorithmic
}
\end
{algorithm
}
|
該斷代碼生成文檔如下圖