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ói | Tính năng | Trong Scissor LaTeX |
|---|---|---|
| algorithm | \begin{algorithm}, \caption, \label, \ref | Hoạt động: "Algorithm N", chú thích bên dưới, không trôi nổi. |
| algorithm | Vị trí đặt [H], [t], [h] | Bỏ qua: thuật toán nằm đúng chỗ bạn viết. |
| algorithm | \listofalgorithms | Khô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
\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.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ợ
\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}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:
algorithmvới các bước dạngverbatimbiê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.