Перейти к содержанию

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

Оберните псевдокод в окружение 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.