Thuật toán và mã giả
Đặt mã giả trong môi trường algorithm kèm \caption để có "Algorithm 1"; bên trong đó, Scissor LaTeX chỉ đọc các lệnh viết hoa của algorithmic (\STATE, \FOR) trong bố cục hội nghị, nên với các tài liệu khác hãy đặt các bước trong một khối verbatim.
Môi trường algorithm
Gói algorithm cung cấp một môi trường có đánh số cho mã giả, giống như một hình: \caption gán cho nó một số ("Algorithm 1"), và \label đặt sau chú thích cho phép bạn tham chiếu đến nó bằng \ref. Trong Scissor LaTeX, thuật toán nằm đúng chỗ bạn viết và chú thích của nó được đặt bên dưới.
Nội dung bên trong phụ thuộc vào gói bạn dùng để viết các bước, và mức hỗ trợ khác nhau chính ở chỗ đó:
| Gói | Lệnh | Trong Scissor LaTeX |
|---|---|---|
| algorithm | môi trường algorithm, \caption, \label | Hoạt động: đánh số "Algorithm N", chú thích bên dưới. |
| algorithmic | \STATE, \IF, \FOR, \WHILE, \RETURN ... (viết hoa) | Một phần: chỉ được đọc trong tài liệu có bố cục hội nghị; ở nơi khác chúng là lệnh không xác định. |
| algpseudocode (algorithmicx) | \State, \If, \For, \EndFor, \Return ... | Không hỗ trợ: bị bỏ qua kèm thông báo, và các bước bị dồn vào một dòng. |
| algorithm2e | \KwIn, \For{..}{..}, \eIf ... | Không hỗ trợ: bị bỏ qua kèm thông báo. |
Mã giả dùng được ở mọi nơi
Cách đáng tin cậy nhất để trình bày mã giả trong bất kỳ tài liệu Scissor LaTeX nào là một khối verbatim bên trong algorithm. Bạn giữ được số và chú thích, còn các dòng giữ nguyên thụt lề.
Thuật toán với các bước dạng verbatim
\begin{algorithm}
\caption{Sum of a list}
\label{alg:sum}
\begin{verbatim}
s := 0
for each a in xs:
s := s + a
return s
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:sum} adds the numbers of a list.Với mã giả có công thức, lstlisting hoạt động theo cùng cách, hoặc bạn có thể viết các bước thành văn bản thường bên ngoài môi trường algorithm, dưới dạng danh sách đánh số.
Các bước dạng danh sách đánh số, kèm toán
\textbf{Input:} numbers $a_1, \dots, a_n$.
\begin{enumerate}
\item Set $s \gets 0$.
\item For $i = 1, \dots, n$: set $s \gets s + a_i$.
\item Return $s$.
\end{enumerate}algorithmic trong bố cục hội nghị
Các bố cục mô phỏng hội nghị (arXiv, IEEE, NeurIPS, ICML và các bố cục khác) đọc các lệnh viết hoa của gói algorithmic: các từ khóa như for, do, end for và return được in đậm, và mỗi lệnh bắt đầu một dòng mới. Số dòng không được vẽ, và các dòng được căn giữa. Thẻ Sự cố cho biết tên bố cục đang dùng.
algorithmic trong tài liệu kiểu arXiv
\documentclass{article}
\usepackage{arxiv}
\usepackage{algorithm,algorithmic}
\begin{document}
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}
\STATE $s \gets 0$
\FOR{$i = 1$ to $n$}
\STATE $s \gets s + a_i$
\ENDFOR
\RETURN $s$
\end{algorithmic}
\end{algorithm}
\end{document}
Thẻ Sự cố: Layout in the style of the arXiv preprint style (final mode). Not official. To compile elsewhere, add arxiv.sty from github.com/kourgeorge/arxiv-style.
algpseudocode không được hỗ trợ
algpseudocode, gói phổ biến nhất trong các bài báo gần đây, dùng các lệnh viết hoa lẫn thường như \State và \EndFor. Scissor LaTeX không biết các lệnh này: tên của chúng bị bỏ qua, công thức và từ ngữ được giữ lại, và mọi thứ bị dồn vào một dòng. Thẻ Sự cố liệt kê các lệnh bị bỏ qua.
algpseudocode: các bước bị dồn lại với nhau
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}[1]
\State $s \gets 0$
\For{$i = 1$ to $n$}
\State $s \gets s + a_i$
\EndFor
\State \Return $s$
\end{algorithmic}
\end{algorithm}Thẻ Sự cố: Skipped 4 unknown commands: \State, \For, \EndFor, \Return
Nếu bạn cần tài liệu hoạt động cả ở đây lẫn trong một bản cài đặt TeX, hãy viết các bước trong verbatim như ở trên; cách này biên dịch được ở mọi nơi.
Khác biệt so với một bản cài đặt TeX
Trang về gói là algorithm, algorithmic và algpseudocode. Tài liệu hướng dẫn có trên CTAN: algorithms, algorithmicx và algorithm2e.
Xem thêm các gói thuật toán, Mã nguồn chương trình và Bố cục hội nghị.
Hỏi và đáp
Làm thế nào để viết một thuật toán trong LaTeX?
Dùng môi trường algorithm kèm \caption, rồi đặt các bước vào bên trong. Trong Scissor LaTeX, các bước hoạt động tốt nhất trong một khối verbatim, hoặc với các lệnh \STATE của algorithmic trong bố cục hội nghị.
Vì sao các dòng \State của tôi bị dồn lại với nhau?
\State đến từ algpseudocode, gói mà Scissor LaTeX không hỗ trợ. Tên lệnh bị bỏ qua, nên các bước nối thành một dòng. Hãy dùng verbatim cho các bước thay thế.
Tôi có thể tham chiếu đến một thuật toán bằng số không?
Có. Đặt \label{alg:name} sau \caption và viết Algorithm~\ref{alg:name}.
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.