Написание алгоритмов и псевдокода в LaTeX (пакет algorithm2e)

Почему algorithm2e — стандарт для научных публикаций

При написании дипломных работ по программной инженерии, диссертаций и статей в IEEE/ACM ключевые вычислительные методы принято представлять не длинными листингами кода и не громоздкими рисунками, а в виде компактного псевдокода. Пакет algorithm2e — признанный эталон академической верстки алгоритмов.

В отличие от пакетов для вывода листингов исходного кода с кириллицей, algorithm2e ориентирован именно на математическую абстракцию алгоритма, обеспечивая строгую нумерацию строк и визуализацию вложенности условий.

Подключение и базовые опции: linesnumbered, ruled, vlined

Для подключения пакета добавьте в преамбулу строку с полезными опциями:

LaTeX Преамбула
\usepackage[linesnumbered,ruled,vlined,algo2e]{algorithm2e}

Значение параметров:

  • linesnumbered — автоматическая нумерация строк псевдокода слева;
  • ruled — оформление заголовка алгоритма элегантными горизонтальными разделительными линиями сверху и снизу;
  • vlined — отрисовка аккуратных вертикальных линий, наглядно показывающих границы вложенности условий и циклов;
  • algo2e — предотвращение конфликтов имен окружений с другими пакетами.

Псевдокод в LaTeX algorithm2e: условия If-Else, циклы While и For

Создавая псевдокод в latex algorithm2e, вы используете интуитивные макросы для управляющих конструкций:

  • Условие: \eIf{условие}{блок тогда}{блок иначе} или \If{условие}{блок};
  • Цикл с предусловием: \While{условие}{тело цикла};
  • Цикл со счетчиком: \For{i = 1 \KwTo n}{тело цикла};
  • Итератор по коллекции: \ForEach{элемент \textbf{in} коллекция}{тело};
  • Возврат значения: \Return результат\; (обратите внимание на обязательную точку с запятой \; в конце строки).

Русификация ключевых слов (Вход, Выход, Если, Иначе)

По умолчанию ключевые слова выводятся на английском языке. Чтобы локализовать их по ГОСТу для русскоязычной работы, задайте переопределения в преамбуле:

LaTeX Русификация
\SetKwInOut{Input}{Вход}
\SetKwInOut{Output}{Выход}
\SetKw{KwTo}{до}
\SetKw{KwDownTo}{вниз до}
\SetKwIF{If}{ElseIf}{Else}{если}{то}{иначе если}{иначе}{конец если}
\SetKwFor{While}{пока}{выполнять}{конец цикла}
\SetKwFor{For}{для}{выполнять}{конец цикла}
\SetKwFor{ForEach}{для каждого}{выполнять}{конец цикла}
\SetKw{Return}{вернуть}

Оформление алгоритма блок схема LaTeX: законченный пример

Полный код алгоритма поиска кратчайшего пути Дейкстры. Качественное оформление алгоритма блок схема latex в виде псевдокода выглядит строго и профессионально:

LaTeX Пример алгоритма
\begin{algorithm}[htbp]
\caption{Алгоритм Дейкстры для поиска кратчайшего пути}
\label{algo:dijkstra}
\Input{Взвешенный граф $G = (V, E)$, стартовая вершина $s \in V$}
\Output{Массив кратчайших расстояний $dist[u]$ для всех $u \in V$}

\ForEach{$u \in V$}{
    $dist[u] \leftarrow \infty$;
    $visited[u] \leftarrow \text{false}$;
}
$dist[s] \leftarrow 0$;
Инициализировать очередь с приоритетами $Q$ парой $(0, s)$;

\While{$Q$ не пуста}{
    Извлечь вершину $u$ с минимальным $dist[u]$ из $Q$;
    \If{$visited[u]$}{
        \textbf{continue};
    }
    $visited[u] \leftarrow \text{true}$;
    
    \ForEach{соседней вершины $v$ для $u$ со стоимостью ребра $w$}{
        \If{$dist[u] + w < dist[v]$}{
            $dist[v] \leftarrow dist[u] + w$;
            Добавить $(dist[v], v)$ в очередь $Q$;
        }
    }
}
\Return $dist$;
\end{algorithm}

Чтобы читатель мог перейти к описанию алгоритма из текста работы по клику на его номер, настройте систему кликабельных перекрестных ссылок в PDF.

Практические советы

1

Точка с запятой \; в конце строки

В algorithm2e команда \; не просто печатает точку с запятой, а завершает логическую строку и осуществляет перенос на новую строку с сохранением нумерации.

2

Компиляция в Labkeeper

В онлайн-редакторе Labkeeper вы можете мгновенно отлаживать сложные многостраничные алгоритмы без конфликтов стилевых файлов.

Попробуйте прямо сейчас

Верстайте алгоритмы в Labkeeper

Онлайн-редактор LaTeX с поддержкой algorithm2e, формул amsmath и автоматическим предпросмотром страниц в реальном времени.

LaTeX editor screenshot
  • Полновесная компиляция: Получайте PDF профессионального качества с помощью встроенного LaTeX-компилятора.
  • 60 секунд на выполнение: Работайте со сложными документами без ограничений — лимит времени компиляции в разы выше, чем в аналогичных сервисах.
  • Умная конвертация: Любые вычислительные формулы автоматически преобразовываются в красивый LaTeX
  • Гибридный синтаксис: Используйте легковесные вставки Markdown прямо в сложном LaTeX-коде для ускорения работы.
bg

Другие статьи