Перейти до вмісту

Алгоритми й псевдокод

Огорніть псевдокод середовищем algorithm з \caption, щоб отримати «Algorithm 1»; усередині Scissor LaTeX читає команди algorithmic у верхньому регістрі (\STATE, \FOR) лише в макетах конференцій, тож для інших документів помістіть кроки в блок verbatim.

Середовище algorithm

Пакет algorithm надає нумероване середовище для псевдокоду, подібне до рисунка: \caption дає йому номер («Algorithm 1»), а \label після підпису дозволяє посилатися на нього через \ref. У Scissor LaTeX алгоритм лишається там, де ви його написали, а підпис ставиться під ним.

Що саме йде всередину, залежить від пакета, яким ви записуєте кроки, і саме тут підтримка відрізняється:

ПакетКомандиУ Scissor LaTeX
algorithmсередовище algorithm, \caption, \labelПрацює: нумерація «Algorithm N», підпис знизу.
algorithmic\STATE, \IF, \FOR, \WHILE, \RETURN ... (верхній регістр)Частково: читаються лише в документах із макетом конференції; деінде це невідомі команди.
algpseudocode (algorithmicx)\State, \If, \For, \EndFor, \Return ...Не підтримується: пропускається з повідомленням, а кроки зливаються в один рядок.
algorithm2e\KwIn, \For{..}{..}, \eIf ...Не підтримується: пропускається з повідомленням.

Псевдокод, який працює всюди

Найнадійніший спосіб показати псевдокод у будь-якому документі Scissor LaTeX — блок verbatim усередині algorithm. Номер і підпис зберігаються, а рядки зберігають свої відступи.

Алгоритм із кроками у verbatim

LaTeXПреамбула: \usepackage{algorithm}Відкрити в редакторі (відкриється в новій вкладці)
\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.
Зверстано в Scissor LaTeX: Алгоритм із кроками у verbatim

Для псевдокоду з формулами так само працює lstlisting, або ж запишіть кроки звичайним текстом поза середовищем algorithm у вигляді нумерованого списку.

Кроки як нумерований список, з математикою

\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}
Зверстано в Scissor LaTeX: Кроки як нумерований список, з математикою

algorithmic у макетах конференцій

Макети, схожі на конференційні (arXiv, IEEE, NeurIPS, ICML та інші), читають команди пакета algorithmic у верхньому регістрі: ключові слова на кшталт for, do, end for і return набираються жирним, а кожна команда починає новий рядок. Номери рядків не виводяться, а рядки центруються. Вкладка «Проблеми» називає макет, що використовується.

algorithmic у документі в стилі 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}
Зверстано в Scissor LaTeX: algorithmic у документі в стилі arXiv

Вкладка «Проблеми»: 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 не підтримується

algpseudocode, найпоширеніший пакет у нещодавніх статтях, використовує команди змішаного регістру, як-от \State і \EndFor. Scissor LaTeX їх не знає: їхні назви пропускаються, формули й слова зберігаються, і все зливається в один рядок. Вкладка «Проблеми» перелічує пропущені команди.

algpseudocode: кроки зливаються

LaTeXПреамбула: \usepackage{algorithm,algpseudocode}Відкрити в редакторі (відкриється в новій вкладці)
\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}

Вкладка «Проблеми»: Skipped 4 unknown commands: \State, \For, \EndFor, \Return

Якщо документ має працювати і тут, і в інсталяції TeX, запишіть кроки у verbatim, як показано вище; так він компілюється всюди.

Чим відрізняється від інсталяції TeX

Сторінка пакета: algorithm, algorithmic і algpseudocode. Посібники є на CTAN: algorithms, algorithmicx і algorithm2e.

Див. також пакети для алгоритмів, Лістинги коду і Макети конференцій.

Запитання й відповіді

Як написати алгоритм у LaTeX?

Використайте середовище algorithm з \caption і помістіть кроки всередину. У Scissor LaTeX кроки найкраще працюють у блоці verbatim або з командами \STATE з algorithmic у макеті конференції.

Чому мої рядки \State зливаються?

\State походить з algpseudocode, який Scissor LaTeX не підтримує. Назви команд пропускаються, тож кроки об'єднуються в один рядок. Натомість використайте для кроків verbatim.

Чи можна послатися на алгоритм за номером?

Так. Поставте \label{alg:name} після \caption і напишіть Algorithm~\ref{alg:name}.

Кожен приклад на цій сторінці верстається в Scissor LaTeX під час збирання сайту. Оновлено 2026-11-07.