跳到主要內容

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

LaTeX導言區: \usepackage{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.
由 Scissor LaTeX 排版: 步驟寫在 verbatim 中的 algorithm

algorithm2e 的指令會被略過,所以各行會連在一起。「問題」分頁會列出它不認得的指令:

algorithm2e 不支援

LaTeX導言區: \usepackage{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}
由 Scissor LaTeX 排版: algorithm2e 不支援

「問題」分頁: 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。

另請參閱演算法、listings 和研討會版面。

常見問題

在 Scissor LaTeX 中應該使用哪個演算法套件?

用 algorithm 取得編號和標題,並把步驟寫在 verbatim 區塊中。這在這裡的每份文件中都能用,在每個 TeX 安裝環境中也一樣。

為什麼我的演算法各行被連成一行?

這些步驟使用了 algpseudocode 或 algorithm2e 的指令,而 Scissor LaTeX 不會讀取它們。它們的名稱會被略過,所以所有步驟的文字都會落在同一行。

本頁的每個範例都在建置網站時由 Scissor LaTeX 排版。 最後更新:2026-11-07