Scissor LaTeX 中的演算法套件
演算法套件在 Scissor LaTeX 中部分可用:algorithm 環境可以搭配有編號的標題和 \label 使用;algorithmic 的大寫指令(\STATE、\FOR)只在研討會版面中會被讀取;algpseudocode(\State、\For)和 algorithm2e(\KwIn、\For{}{})不支援,所以請改把步驟放在 verbatim 區塊中。
套件的用途
在 LaTeX 中寫虛擬碼通常需要兩個套件。algorithm 提供一個有編號和標題(「Algorithm 1: ...」)的環境,會像圖片一樣浮動。第二個套件負責寫出步驟:algorithmic(大寫指令,\STATE、\IF、\ENDIF)、algorithmicx 套件組中的 algpseudocode(大小寫混合,\State、\If、\EndIf),或是 algorithm2e,它帶有自己的 algorithm 環境,以及 \KwIn 和 \For{condition}{body} 等指令。
在這裡可用的功能
| 套件 | 功能 | 在 Scissor LaTeX 中 |
|---|---|---|
| algorithm | \begin{algorithm}, \caption, \label, \ref | 可用:「Algorithm N」,標題在下方,不會浮動。 |
| algorithm | [H]、[t]、[h] 位置參數 | 忽略:演算法留在你寫的位置。 |
| algorithm | \listofalgorithms | 不支援:會被略過並顯示訊息。 |
| algorithmic | \STATE, \IF, \FOR, \WHILE, \RETURN ... | 部分支援:在使用研討會版面的文件中會被讀取,沒有行號。在其他地方無法辨識。 |
| algpseudocode | \State, \If, \For, \Function, \Return ... | 不支援:指令名稱會被略過,步驟會連在同一行。 |
| algorithm2e | \KwIn, \KwOut, \For{..}{..}, \eIf, \; | 不支援:會被略過並顯示訊息;步驟會連在一起。 |
在 algorithm 中,內容會像在圖片中一樣置中。verbatim 區塊會整體置中,但各行仍靠左對齊,並保留你輸入的縮排,所以這是在這裡顯示步驟最可靠的方式。
範例
放在 verbatim 中的步驟,有編號和參照:
步驟寫在 verbatim 中的 algorithm
\begin{algorithm}
\caption{Find the largest value}
\label{alg:max}
\begin{verbatim}
best := xs[1]
for i := 2 to n:
if xs[i] > best:
best := xs[i]
return best
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:max} looks at each value once.algorithm2e 的指令會被略過,所以各行會連在一起。「問題」分頁會列出它不認得的指令:
algorithm2e 不支援
\begin{algorithm}
\caption{Sum of a list}
\KwIn{numbers $a_1, \dots, a_n$}
$s \gets 0$\;
\For{$i \gets 1$ \KwTo $n$}{$s \gets s + a_i$\;}
\Return{$s$}\;
\end{algorithm}「問題」分頁: Skipped 4 unknown commands: \KwIn, \For, \KwTo, \Return
演算法與虛擬碼頁面並排展示了研討會版面中的 algorithmic 和 algpseudocode。
相容性
- 從 TeX 安裝環境搬到這裡:演算法會保留編號和標題。用 algpseudocode 或 algorithm2e 寫的步驟會連在一起;請改寫成
verbatim,或在研討會版面中使用 algorithmic。 - 從這裡搬到 TeX 安裝環境:步驟寫在
verbatim中的algorithm在任何地方都能編譯,外觀也相同,只是演算法可能會浮動到頁面頂端。
手冊在 CTAN 上:algorithms(algorithm 和 algorithmic)、algorithmicx(algpseudocode)和 algorithm2e。
常見問題
在 Scissor LaTeX 中應該使用哪個演算法套件?
用 algorithm 取得編號和標題,並把步驟寫在 verbatim 區塊中。這在這裡的每份文件中都能用,在每個 TeX 安裝環境中也一樣。
為什麼我的演算法各行被連成一行?
這些步驟使用了 algpseudocode 或 algorithm2e 的指令,而 Scissor LaTeX 不會讀取它們。它們的名稱會被略過,所以所有步驟的文字都會落在同一行。
本頁的每個範例都在建置網站時由 Scissor LaTeX 排版。 最後更新:2026-11-07