Chuyển đến nội dung

Các gói thuật toán trong Scissor LaTeX

Các gói thuật toán hoạt động một phần trong Scissor LaTeX: môi trường algorithm hoạt động với chú thích đánh số và \label; các lệnh viết hoa của algorithmic (\STATE, \FOR) chỉ được đọc trong bố cục hội nghị; algpseudocode (\State, \For) và algorithm2e (\KwIn, \For{}{}) không được hỗ trợ, vì vậy hãy đặt các bước trong một khối verbatim.

Các gói này làm gì

Mã giả trong LaTeX thường cần hai gói. algorithm cung cấp một môi trường đánh số có chú thích, "Algorithm 1: ...", trôi nổi như một hình. Một gói thứ hai dùng để viết các bước: algorithmic (lệnh viết hoa, \STATE, \IF, \ENDIF), algpseudocode từ bộ algorithmicx (viết hoa chữ đầu, \State, \If, \EndIf), hoặc algorithm2e, gói mang theo môi trường algorithm riêng và các lệnh như \KwIn và \For{condition}{body}.

Những gì hoạt động ở đây

GóiTính năngTrong Scissor LaTeX
algorithm\begin{algorithm}, \caption, \label, \refHoạt động: "Algorithm N", chú thích bên dưới, không trôi nổi.
algorithmVị trí đặt [H], [t], [h]Bỏ qua: thuật toán nằm đúng chỗ bạn viết.
algorithm\listofalgorithmsKhông hỗ trợ: bị bỏ qua kèm thông báo.
algorithmic\STATE, \IF, \FOR, \WHILE, \RETURN ...Một phần: được đọc trong tài liệu có bố cục hội nghị, không có số dòng. Ở nơi khác chúng không được nhận biết.
algpseudocode\State, \If, \For, \Function, \Return ...Không hỗ trợ: tên lệnh bị bỏ qua và các bước bị dồn vào một dòng.
algorithm2e\KwIn, \KwOut, \For{..}{..}, \eIf, \;Không hỗ trợ: bị bỏ qua kèm thông báo; các bước bị dồn lại.

Bên trong algorithm, nội dung được căn giữa, như trong một hình. Một khối verbatim được căn giữa như một khối, với các dòng căn trái và thụt lề đúng như đã gõ, nên đây là cách đáng tin cậy nhất để trình bày các bước ở đây.

Ví dụ

Các bước trong verbatim, có số và tham chiếu:

algorithm với các bước dạng verbatim

LaTeXPhần mở đầu: \usepackage{algorithm}Mở trong trình soạn (mở trong thẻ mới)
\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.
Dàn trang bởi Scissor LaTeX: algorithm với các bước dạng verbatim

Các lệnh của algorithm2e bị bỏ qua, nên các dòng bị dồn lại. Thẻ Sự cố liệt kê những lệnh mà nó không biết:

algorithm2e không được hỗ trợ

LaTeXPhần mở đầu: \usepackage{algorithm2e}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: algorithm2e không được hỗ trợ

Thẻ Sự cố: Skipped 4 unknown commands: \KwIn, \For, \KwTo, \Return

Trang Thuật toán và mã giả trình bày algorithmic trong bố cục hội nghị và algpseudocode cạnh nhau.

Khả năng tương thích

  • Từ một bản cài đặt TeX sang đây: thuật toán giữ số và chú thích. Các bước viết bằng algpseudocode hoặc algorithm2e bị dồn lại; hãy viết lại chúng trong verbatim, hoặc bằng algorithmic trong bố cục hội nghị.
  • Từ đây sang một bản cài đặt TeX: algorithm với các bước dạng verbatim biên dịch được ở mọi nơi và trông giống nhau, chỉ khác là thuật toán có thể trôi lên đầu trang.

Tài liệu hướng dẫn có trên CTAN: algorithms (algorithm và algorithmic), algorithmicx (algpseudocode) và algorithm2e.

Xem thêm Thuật toán, listings và Bố cục hội nghị.

Hỏi và đáp

Tôi nên dùng gói thuật toán nào trong Scissor LaTeX?

Hãy dùng algorithm để có số và chú thích, và viết các bước trong một khối verbatim. Cách này hoạt động trong mọi tài liệu ở đây và trong mọi bản cài đặt TeX.

Vì sao các dòng thuật toán của tôi bị gộp thành một?

Các bước dùng lệnh của algpseudocode hoặc algorithm2e, mà Scissor LaTeX không đọc. Tên của chúng bị bỏ qua, nên văn bản của mọi bước dồn vào một dòng.

Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.