Если вы работаете в крупной компании, где утвержден корпоративный шаблон презентаций, скорее всего, он выполнен в PowerPoint или Keynote. Цвета, шрифты, логотипы, фоновые изображения описаны в брендбуке. Но многие инженерные доклады, лекции, отчеты по научным работам удобнее верстать в LaTeX.Работая в YADRO, я много выступаю как на внешних конференциях, так и на собственных мероприятиях компании. В какой-то момент поняла, что мне удобнее делать презентации в LaTex и взяла все в свои руки: разработала стилевой файл для LaTeX на базе корпоративного брендбука и pptx-шаблона. Шаблон оказался очень востребованным, и я решила поделиться опытом и наработками с сообществом.Главная цель статьи — не дать готовый «черный ящик», а объяснить, по какому принципу устроен файл YourPres.cls, чтобы вы могли адаптировать его под корпоративный стиль или настроить его на свой вкус для личного использования. Описанный шаблон выложила на GitHub — ссылку найдете под катом. Читать далее
Если вы работаете в крупной компании, где утвержден корпоративный шаблон презентаций, скорее всего, он выполнен в PowerPoint или Keynote. Цвета, шрифты, логотипы, фоновые изображения описаны в брендбуке. Но многие инженерные доклады, лекции, отчеты по научным работам удобнее верстать в LaTeX.
Работая в YADRO, я много выступаю как на внешних конференциях, так и на собственных мероприятиях компании. В какой-то момент я поняла, что мне удобнее делать презентации в LaTex и взяла все в свои руки: разработала стилевой файл для LaTeX на базе корпоративного брендбука и pptx-шаблона. Шаблон оказался очень востребованным, и я решила поделиться опытом и наработками с сообществом.
Главная цель статьи — не дать готовый «черный ящик», а объяснить, по какому принципу устроен файл YourPres.cls, чтобы вы могли адаптировать его под корпоративный стиль или настроить его на свой вкус для личного использования. Весь описанный шаблон с демонстрацией целиком выложен на GitHub, поэтому его можно сразу попробовать в деле.
Предполагается, что у читателя есть базовое представление о LaTeX и Beamer. Если это не так, нестрашно: вы все равно можете клонировать готовый репозиторий и адаптировать его под свои цвета и шрифты по инструкции в тексте с помощью стилевого файла
YourPres.cls. В конце текста я также привела список литературы для дальнейшего погружения в тему.
LaTeX — это язык верстки и система подготовки документов на основе набора макросов TeX. Вы пишете текст своей статьи или презентации в plain-файле с разметкой, а затем компилируете его в PDF. В отличие от Word и PowerPoint верстка — шрифты, отступы, цвета, расположение элементов — задается отдельно либо встроенными командами, либо подключаемыми классами и стилями.
LaTex сильно упрощает набор сложных «многоэтажных» формул с выделением важных частей цветами, рамками, подчеркиваниями (кстати, в статьях на Хабре тоже можно вставлять LaTeX-формулы!), подгрузку листингов кода с подсветкой синтаксиса, вставку псевдокода алгоритмов. Таблицы и рисунки нумеруются автоматически, как и оглавление. А чтобы преобразовать статью в презентацию и обратно, достаточно просто заменить стилевой файл. Одним словом — праздник. Еще и версионировать удобно, потому что стиль и презентация — текстовые файлы. Вы можете работать с презентацией как с кодом: фиксировать изменения, откатывать неудачные правки и т.д.
При таком подходе текст презентации и стиль — это два разных файла, что позволяет вам набирать только текст (tex-файл), а корпоративный стиль применять автоматически при компиляции. Нет шансов случайно использовать не тот шрифт, не тот цвет, не те отступы, не тот стиль таблицы или нечаянно изменить макет страницы — ее поля, положение заголовков, отступы. Стиль может обновляться, но вам достаточно просто подтянуть из репозитория обновленный стилевой файл и один раз нажать на кнопку компиляции — перекомпилированный PDF будет соответствовать обновленному стилю. Вам не нужно ничего править в тексте презентации! Если у вас уже есть презентация или статья в LaTeX, то достаточно перекомпилировать ее с корпоративным стилевым файлом — и вуаля!
Как обычно, дьявол кроется в мелочах: в том, чтобы из корпоративного брендбука и pptx-шаблона сделать этот самый стилевой файл для LaTeX. По собственному опыту могу сказать, что это требует времени, очень тонкой настройки шаблона и даже замеров отступов в pptx линеечкой. Три года назад я сделала такой файл для себя, скопировав корпоративный стиль нашей компании в LaTeX-класс. Потом поделилась с коллегами — и даже забыла об этом.
Недавно я узнала, что мой шаблон активно используют для докладов и целых образовательных курсов, дописывают в него свои ветки, читают лекции. В общем, он явно живет свою лучшую жизнь! «Класс, что же вы молчали, я бы раньше восхитилась!» — сказала я активистам, на что коллеги резонно заметили: «Ну ты же не пишешь Линусу Торвальдсу, что используешь Linux» (с). И правда! Хотя, наверное, стоило бы, прости нас, Линус, если что не так.
Даже не ожидала, что, решая свою проблему, я сделала такую востребованную вещицу, перерыв много документации. Поэтому решила поделиться историей и показать на примере реально работающего шаблона и файла YourPres.cls в репозитории, как, опираясь на мои наработки, с минимальными модификациями сделать стилевик для презентаций на свой вкус или корпоративный дизайн, не погружаясь при этом в нюансы настроек Beamer-стилей и переопределения LaTeX-команд.
Конкретные цвета, шрифты и логотипы в моем примере заменены на generic-значения в фиолетовых тонах, потому что я их люблю (простим мне это), но архитектура и приемы полностью рабочие. Вы сможете легко модифицировать шаблон для своего дизайна, просто подставив свои шрифты, палитры, иконки, логотипы, значения отступов и многое другое.
Структура LaTeX-шаблонаРепозиторий с примером имеет следующую структуру:
project/
YourPres.cls // сам класс (774 строки с комментариями)
YourStyle/ // визуальные ресурсы:
logo.png // * логотип;
titlepage.png // * фон титульного слайда;
finalslide.png // * фон финального слайда;
icons/ // * 33 иконки Material Design Icons (512×512, белый контур)
fonts/ // папка с TTF-шрифтами (Inter, JetBrains Mono, Open Sans)
img/ // изображения для демо-презентации
code/ // примеры кода для демо-презентации
video/ // PNG-кадры для анимаций в демо-презентации
Example.tex // текст демо-презентации
Example.pdf // скомпилированная демо-презентация
Весь LaTeX-стиль для Beamer реализован в файле YourPres.cls. Это LaTeX-класс: в tex-файле с презентацией достаточно указать \documentclass{YourPres} — и стиль подтянется. Не нужно устанавливать файлы в TeX-дистрибутив или править texmf. Можно добавить шаблон как подмодуль в любой проект и получать обновления стиля автоматически.
Давайте разберемся, из чего состоит YourPres.cls и, главное, что в нем нужно поменять, чтобы переделать файл под свой дизайн.
Первый шаг при создании любого LaTeX-класса — сообщить системе, что это .cls, а не пакет, и зарегистрировать его имя и версию:
\NeedsTeXFormat{LaTeX2e} % если LaTeX слишком старый, компиляция остановится с ошибкой
\ProvidesClass{YourPres}[08/08/2026 V.2.0.0]
\ProvidesClass{YourPres}[...] задает имя класса, дату и номер версии. Дата позволяет LaTeX проверять, не устарела ли версия класса относительно подключенных пакетов.
Класс загружается поверх Beamer и требует XeLaTeX:
\LoadClass[hyperref=xetex, final,8pt, width=33.867,height=19.05,scale=1,aspectratio=169]{beamer}
\setbeamersize{text margin left=0.75cm, text margin right=0.75cm}
Параметры \LoadClass:
hyperref=xetex — гиперссылки через драйвер XeTeX (без этого параметра ссылки могут не работать);
final — финальный режим (не draft — здесь присутствуют все рисунки и элементы);
8pt — базовый размер шрифта (Beamer по умолчанию использует более крупные шрифты, 8pt для слайдов 16:9 дает комфортное соотношение);
width/height — ширина и высота слайда в мм (33.867×19.05 мм соответствует пропорции 16:9, 13"×7.5", при scale=1);
aspectratio=169 — явно указывает Beamer, что слайд широкоформатный (классический widescreen);
scale=1 — масштаб 1:1 (можно было бы 0.5 для «сжатого» просмотра, но не нужно).
Почему не pdfLaTeX? XeLaTeX умеет напрямую загружать .otf/.ttf-шрифты из указанной папки (Path=fonts/) без системной установки. Единственное ограничение: ваш файл презентации должен быть строго в кодировке UTF-8, иначе шрифты не подтянутся.
Далее задаем горизонтальные отступы текста от краев слайда:
\setbeamersize{text margin left=0.75cm, text margin right=0.75cm}
Меняйте эти значения, если нужно сдвинуть текст к краям или от краев.
Далее подключаются все необходимые пакеты:
Пакет | Назначение |
|---|---|
| Подключение TTF/OTF-шрифтов по пути |
| Для копирования кириллицы из PDF |
| Русский/английский язык (замена babel для XeLaTeX) |
| Unicode-подстановки для XeTeX |
| Цветовая палитра |
| Круглые фото авторов (path picture) |
| Подсветка кода |
| Анимация из последовательности PNG-кадров ( |
| Стилизация таблиц с автораскраской строк и колонками |
| Стандартная математика |
| Псевдокод алгоритмов |
| Научная нотация чисел |
| Красивый математический шрифт для операторов |
| Пиктограммы — буллиты, крестики, галочки |
| Вставка изображений ( |
| Вставка таблиц и объединение ячеек в них по строкам/столбцам |
| Размещение плавающих рисунков и таблиц |
| Подписи к рисункам/таблицам |
| Преобразование регистра ( |
| Условные операторы внутри стилевого файла |
| Для изменения чужих макросов |
Отключаем увеличенные пробелы после точки при помощи \frenchspacing и разрешаем использовать в гиперссылках unicode и цвет, создавать закладки:
\hypersetup{unicode=true, colorlinks=true, bookmarks=true}
Цветовая палитраВ любом корпоративном шаблоне есть набор «фирменных» цветов. В YourPres.cls палитра в десятом разделе файла состоит из одного базового цвета и серии производных, подобранных в единой гамме:
% YourBase — основной брендовый цвет (темно-фиолетовый).
% Используется: заголовки фреймов, шапка таблиц, фон титула, блоки, буллиты.
\definecolor{YourBase}{HTML}{5B2C8C}
% YourSectionShaded — цвет неактивных разделов в содержании (светло-фиолетовый).
\definecolor{YourSectionShaded}{HTML}{B59AD9}
% YourBlock — фон блоков и четных строк таблиц (светлая лаванда).
\definecolor{YourBlock}{HTML}{F3EEF7}
% YourBad — цвет «плохо» (для статусов, ошибок).
\definecolor{YourBad}{HTML}{C41E3A}
% YourNeutral — цвет «нейтрально» (янтарный).
\definecolor{YourNeutral}{HTML}{CF9900}
% YourGood — цвет «хорошо» (зеленый).
\definecolor{YourGood}{HTML}{008F6B}
% YourAccent — акцентный цвет (маджента-фиолетовый).
\definecolor{YourAccent}{HTML}{B324D1}
% YourParam ... YourParam5 — параметры графиков (серия фиолетовых оттенков).
\definecolor{YourParam}{HTML}{8E44AD}
\definecolor{YourParam2}{HTML}{75389C}
\definecolor{YourParam3}{HTML}{A569BD}
\definecolor{YourParam4}{HTML}{6C3483}
\definecolor{YourParam5}{HTML}{FF794C}
Выделите HEX-код (например, 5B2C8C) и замените на корпоративный цвет. Если делаете просто стиль для себя, то для подбора палитры можно воспользоваться ресурсом. Полезно добавлять комментарии с назначением — это шпаргалка для коллег и самодокументирование.
На основе палитры настраиваются Beamer-темы:
% Заголовок блока: белый текст на YourBase
\setbeamercolor{block title}{fg=white,bg=YourBase}
% Тело блока: фон YourBlock
\setbeamercolor{block body}{bg=YourBlock}
% Заголовок фрейма: цвет YourBase
\setbeamercolor{frametitle}{fg=YourBase}
% Подписи к рисункам: цвет YourFigureCaption
\setbeamercolor{caption}{fg=YourFigureCaption}
% Цвета буллитов и нумераторов в списках
% По умолчанию Beamer использует синий — перекрашиваем в YourBase (фиолетовый)
% Меняйте YourBase на другой цвет (например YourParam), чтобы сменить оттенок
\setbeamercolor{itemize item}{fg=YourBase}
\setbeamercolor{itemize subitem}{fg=YourBase}
\setbeamercolor{itemize subsubitem}{fg=YourBase}
\setbeamercolor{enumerate item}{fg=YourBase}
\setbeamercolor{enumerate subitem}{fg=YourBase}
\setbeamercolor{enumerate subsubitem}{fg=YourBase}
Принцип простой: изменили HEX-код в определении цвета YourBase — перекрасили сразу frametitle, block title, шапку таблицы, маркеры списков, буллиты и фон титульного слайда. Изменили цвет YourBlock — сменился фон подложки у блоков и т.д.
Корпоративные шрифты обычно поставляются как OTF- или TTF-файлы. Я кладу их в папку fonts/ в репозитории и подключаю через параметр Path=. Поэтому шрифты не нужно устанавливать в систему: при компиляции LaTeX подхватит их прямо из репозитория. Новый разработчик клонирует проект и сразу может его скомпилировать — не нужно разыскивать корпоративные шрифты по всей компании.
В качестве примера в папке fonts/ лежат Inter (Regular, Bold, Italic, BoldItalic), JetBrainsMono (Regular, Bold), OpenSans (Regular, Bold). Для смены шрифтов во всей презентации достаточно добавить новые шрифты в эту папку и прописать имена новых файлов в блоке подключения:
% Глобальные настройки fontspec
\defaultfontfeatures{Ligatures={TeX},Mapping=tex-text}
% Основной шрифт — Inter (Regular / Bold / Italic / BoldItalic)
\setmainfont[Path=fonts/, BoldFont=Inter-Bold.ttf,
ItalicFont=Inter-Italic.ttf,
BoldItalicFont=Inter-BoldItalic.ttf]{Inter-Regular.ttf}
\setromanfont[Path=fonts/, ...]{Inter-Regular.ttf}
\setsansfont[Path=fonts/, ...]{Inter-Regular.ttf}
% Моноширинный — JetBrains Mono
\setmonofont[Path=fonts/, BoldFont=JetBrainsMono-Bold.ttf]{JetBrainsMono-Regular.ttf}
Для кириллицы polyglossia требует явного указания шрифтов:
% \cyrillicfont — обязательная команда polyglossia для кириллического основного шрифта
\newfontfamily{\cyrillicfont}[Path=fonts/, ...]{Inter-Regular.ttf}
% \cyrillicfonttt — кириллический моноширинный шрифт
\newfontfamily{\cyrillicfonttt}[Path=fonts/, ...]{JetBrainsMono-Regular.ttf}
% \cyrillicfontsf — кириллический гротеск (sans-serif)
\newfontfamily{\cyrillicfontsf}[Path=fonts/, ...]{Inter-Regular.ttf}
% \cyrillicfontrm — кириллический римский шрифт
\newfontfamily{\cyrillicfontrm}[Path=fonts/, ...]{Inter-Regular.ttf}
Каркас слайда: шапка (headline), подвал (footline), заголовок (frametitle)Навигационные кнопки (section navigation) Beamer глобально отключаем командой \beamertemplatenavigationsymbolsempty. Оставляем в шапке только логотип в правом верхнем углу:
% Верхний колонтитул: логотип справа вверху
% \vspace*{0.5cm} — отступ сверху от логотипа
% \vspace*{-0.85cm} — компенсация, чтобы основной текст не съехал вниз
\setbeamertemplate{headline}{\vspace*{0.5cm}\hspace*{.5cm}\scriptsize{
\hspace*{50pt} \hfill \includegraphics[width=0.95cm]{YourStyle/logo.png}\hspace*{.7cm}}\vspace*{-0.85cm}}
Меняйте 0.5cm (отступ сверху), 0.95cm (ширина логотипа) и -0.85cm (компенсация), чтобы подогнать положение логотипа под свой макет.
В подвале оставляем только номер текущего слайда, обернутый в цветной прямоугольник цвета YourBlock:
% Нижний колонтитул: номер страницы в цветном боксе справа внизу
% \fcolorbox{YourBlock}{YourBlock}{...} — рамка и заливка одним цветом
\setbeamertemplate{footline}{\hspace*{.5cm}\scriptsize{
\hspace*{50pt} \hfill\fcolorbox{YourBlock}{YourBlock}{\hspace*{.25cm}\insertframenumber\hspace*{.25cm}}\hspace*{.7cm}}}
Определяем стиль заголовков и подзаголовков слайдов:
\defbeamertemplate*{frametitle}{my theme}
{%
% Если подзаголовок не задан явно, используем название текущего раздела
\ifx\insertframesubtitle\empty
\let\insertframesubtitle\secname
\fi
\begin{beamercolorbox}{frame title}%
% Если подзаголовок пустой — показываем только заголовок
\ifx\insertframesubtitle\@empty%
% ОТСТУП СВЕРХУ, когда есть только заголовок
% Увеличьте до 0.45cm, чтобы опустить заголовок ниже
\vspace*{0.45cm}\\
\insertframetitle
\else%
% ОТСТУП СВЕРХУ, когда есть и заголовок, и подзаголовок
% Увеличьте до 0.35cm, чтобы опустить всю группу ниже
\vspace*{0.35cm}\\
% Печатаем подзаголовок (название раздела) — маленьким шрифтом, заглавными
\usebeamercolor[fg]{framesubtitle}\usebeamerfont{framesubtitle}
\hspace*{0.03cm}\MakeTextUppercase{\insertframesubtitle}\vspace*{-0.1cm}\\
% Печатаем заголовок фрейма — крупно
\usebeamercolor[fg]{frametitle}\usebeamerfont{frametitle}\insertframetitle
\fi
% Отступ снизу после заголовка перед содержимым
% Увеличьте до 0.25cm, чтобы добавить воздуха между заголовком и текстом
\vspace*{0.25cm}
\end{beamercolorbox}%
}
Подзаголовок (subtitle) автоматически переводится в верхний регистр (\MakeTextUppercase), поэтому в tex-файле его можно писать в любом регистре. Если subtitle не передан явно, автоматически подставляется название секции (\secname). Это экономит время и делает навигацию единообразной. Отступы сверху вынесены в отдельные \vspace*, их легко менять под свой макет.
Чтобы показывать в презентации полноэкранные изображения без колонтитулов и заголовков на слайде, определим команду:
\newcommand{\FullSlideImage}[1] {
{
\usebackgroundtemplate{\includegraphics[width=\paperwidth]{#1}}
\setbeamertemplate{footline}{}
\setbeamertemplate{headline}{}
\setbeamertemplate{frametitle}{}{}
\begin{frame}{}
\end{frame}
}
}
Теперь слайд с полноэкранным изображением img/diagram.png можно создать, просто написав \FullSlideImage{img/diagram.png}.
Для генерации финального слайда с полноэкранным фоновым изображением YourStyle/finalslide.png используйте команду \Yourfinalslide. Не забудьте заменить фон финального слайда в папке YourStyle на свой.
На титульный слайд поместим полноэкранное фоновое изображение YourStyle/titlepage.png. Также замените его в папке YourStyle на фон из вашего дизайна, и поверх него выведем название презентации и имя автора:
\newcommand{\Yourtitlepage}{
{
\usebackgroundtemplate{
\includegraphics[width=\paperwidth,height=\paperheight]{YourStyle/titlepage.png}
}
\setbeamertemplate{footline}{}
\setbeamertemplate{headline}{}
\setbeamertemplate{frametitle}{}{}
\begin{frame}
\hspace*{1.5cm}
\begin{minipage}[h]{0.77\linewidth}
\vspace*{5cm}
{\color{white}
{\Huge\sffamily{\bfseries\inserttitle} } \\
\vskip1pt
\insertauthor
}
\end{minipage}
\end{frame}
}
}
Значения \vspace*{5cm} (отступ сверху) и \hspace*{1.5cm} (отступ слева), а также шрифт, используемый для названия и автора, можно менять под свой макет.
Например, напишем ультракороткую презентацию из одного титульного слайда:
\documentclass{YourPres}
% XeLaTeX, UTF-8
\title{Оптимизация расчетов на GPU}
\author{Денис Денисов}
\begin{document}
\Yourtitlepage
\end{document}
Сохраним этот tex-файл и скомпилируем. Появится pdf-файл из одной страницы такого вида:

Титульный слайд
Слайд с информацией об автореВ классе определена команда \roundpic, которая делает круглую обрезку фотографии с помощью TikZ:
\newcommand{\roundpic}[2] {
\tikz\node [circle, minimum width = #1,
path picture = {
\node [anchor=center] at (path picture bounding box.center) {
\includegraphics[width=#1]{#2}};
}] {};}
Эта команда используется в \bioTune, которая размещает фото автора и четыре пункта с информацией о нем в блоках с регулируемыми пропорциями:
% \bioTune{photo}{name}{title}{fact1}{fact2}{photo_width}{text_width}
% — базовая команда для размещения фото и текста про автора.
% Аргументы 6 и 7 регулируют соотношение ширины фото и текста.
% Размер круглой обрезки фото задается множителем 0.65\linewidth внутри
% minipage шириной #6\linewidth. Меняйте 0.65 на большее (например 0.85),
% чтобы кружок был крупнее, или на меньшее (0.5), чтобы он был мельче.
\newcommand{\bioTune}[7] {
\mbox{ }\hfill
\begin{minipage}[h]{#6\linewidth}
\hfill\roundpic{0.65\linewidth}{#1}\hfill
\end{minipage}\hspace*{0.5cm}
\begin{minipage}[h]{#7\linewidth}
{\color{white}{\huge{\textbf{#2}}}\\
#3\\ \vskip2pt
\begin{itemize}
\item #4
\item #5
\end{itemize}
}
\end{minipage}
\hfill\mbox{ }
}
У \bioTune есть две обертки с пропорциями для случая одного автора и двух:
% Один автор: фото 25% ширины, текст 42%
\newcommand{\bio}[5]{\bioTune{#1}{#2}{#3}{#4}{#5}{0.25}{0.42}}
% Пара авторов: фото 16% ширины, текст 62%
\newcommand{\bioPair}[5]{\bioTune{#1}{#2}{#3}{#4}{#5}{0.16}{0.62}}
Можно редактировать пропорции в них, а также добавлять больше авторов.
Добавим команды для создания слайдов с информацией об авторах с использованием этих оберток:
\newcommand{\SingleAuthorPage}[5] {
{
% Фон страницы — YourBase (темно-фиолетовый)
\setbeamercolor{background canvas}{bg=YourBase}
% Убираем колонтитулы
\setbeamertemplate{footline}{}
\setbeamertemplate{headline}{}
\setbeamertemplate{frametitle}{}{}
% Белые буллиты
\setbeamertemplate{itemize item}{\color{white}$\bullet$}
\setbeamercolor{itemize/enumerate body}{fg=white}
\begin{frame}\vskip0.75cm
\bio{#1}{#2}{#3}{#4}{#5}
\end{frame}
}
}
\newcommand{\PairCoAuthorsPage}[2] {
{
\setbeamercolor{background canvas}{bg=YourBase}
\setbeamertemplate{footline}{}
\setbeamertemplate{headline}{}
\setbeamertemplate{frametitle}{}{}
\setbeamertemplate{itemize item}{\color{white}$\bullet$}
\setbeamercolor{itemize/enumerate body}{fg=white}
\begin{frame}\vskip0.75cm
#1\\ \vskip1cm #2
\end{frame}
}
}
В качестве примера добавим такой слайд к нашей ультракороткой презентации из предыдущего пункта:
\SingleAuthorPage{img/author.png}{Денис Денисов}
{Инженер-исследователь, Компания Н}
{Опыт в HPC — 8 лет}
{Автор 10+ публикаций}
После компиляции в pdf-файле появится вторая страница:

Слайд о себе любимом
Примеры для двух авторов представлены в демо-презентации. Для изменения вида таких страниц отредактируйте в командах выше значения отступов, цветов и т.д.
Секционные слайды — автосодержаниеОдна из самых удобных фич Beamer — \AtBeginSection. Я использую ее, чтобы при каждом вызове \section{Название} автоматически вставлялся слайд с оглавлением, где выделен текущий раздел. В примере для этого я использовала цепочку стрелок — семь $\blacktriangleright$ слева от названия, а также цвет и жирное начертание шрифта, «затенив» остальные разделы оглавления с помощью полупрозрачного YourSectionShaded:
% Патч: убираем \vfill в содержании, заменяем на \vspace{0.6cm},
% чтобы секции не разъезжались по всей высоте.
\patchcmd{\beamer@sectionintoc}
{\vfill}
{\vspace{0.6cm}}
{}
{}
\AtBeginSection{
{
% Темно-фиолетовый фон всего слайда
\setbeamercolor{background canvas}{bg=YourBase}
% Убираем колонтитулы
\setbeamertemplate{footline}{}
\setbeamertemplate{headline}{}
\setbeamertemplate{frametitle}{}{}
% Шрифт активного раздела — крупный, жирный
\setbeamerfont{section in toc}{size=\Large, series=\bfseries}
% Шрифт неактивных разделов — крупный, обычный
\setbeamerfont{section in toc shaded}{size=\Large, series=\mdseries}
% Активный раздел — белый
\setbeamercolor{section in toc}{fg=alerted text.fg, fg=white}
% Неактивные разделы — полупрозрачный фон + цвет YourSectionShaded
\setbeamercolor{section in toc shaded}{bg=YourSectionShaded!20, fg=YourSectionShaded}
% Шаблон неактивного раздела — просто название
\setbeamertemplate{section in toc shaded}{\inserttocsection}
% Шаблон активного раздела — цепочка стрелок от левого края
\setbeamertemplate{section in toc}{\hspace{-2.35cm}\makebox[2.35cm][l]{\color{white}$\blacktriangleright$$\blacktriangleright$$\blacktriangleright$$\blacktriangleright$$\blacktriangleright$$\blacktriangleright$$\blacktriangleright$}\inserttocsection}
\begin{frame}
\vfill
\hspace*{1.6cm}\begin{minipage}[h]{0.75\linewidth}\linespread{1.6}
\tableofcontents[currentsection]
\end{minipage}
\vfill
\end{frame}
}
}
Автоматически сгенерированные в начале секций оглавления есть и в демо-презентации:

Пример секционного слайда
Вы можете заменить цепочку стрелок в \setbeamertemplate{section in toc}{...} на подчеркивание, любые другие символы либо убрать совсем, если того требует ваш брендбук.
Настройки listings подгоняются под цветовую палитру:
\lstset{
basicstyle=\small\ttfamily, % основной шрифт кода
commentstyle=\color{YourGood}, % комментарии — зеленый
keywordstyle=\color{YourBase}, % ключевые слова — основной цвет
basicstyle=\Yourcode, % используется \Yourcode (\small\ttfamily)
numbers=left, % нумерация строк слева
xleftmargin=2em, % отступ слева под номера
frame=single, % рамка вокруг листинга
framexleftmargin=1.5em, % отступ рамки слева
numberstyle=\tiny\color{YourFigureCaption}, % стиль номеров строк
stepnumber=1, % нумеровать каждую строку
numbersep=5pt, % отступ номера от кода
backgroundcolor=\color{YourBlock}, % фон — как у Beamer-блоков
rulecolor=\color{YourBlock}, % рамка сливается с фоном
stringstyle=\color{YourBad}, % строки — красный
emphstyle=\color{YourAccent}, % выделенные функции — акцентный
showspaces=false, % не показывать пробелы
showstringspaces=false, % не показывать пробелы в строках
showtabs=false, % не показывать табуляцию
tabsize=2, % размер табуляции = 2 пробела
captionpos=t, % подпись сверху
breaklines=true, % перенос длинных строк
breakatwhitespace=false, % переносить в любом месте (не только по пробелу)
escapeinside={\%*}{*)} % экранирование в LaTeX внутри кода
}
Все цвета (YourGood, YourBase, YourBlock, YourBad, YourAccent) можно заменить на свои — подсветка перестроится автоматически.
Можно определять свои стили для диалектов. Например, в классе определен стиль CUDA для языка C++ с подсветкой CUDA-специфичных функций:
\lstdefinestyle{CUDA}{language=C++,
emph={
cudaMalloc, cudaFree,
__global__, __shared__, __device__, __host__,
__syncthreads, __umul24,
}
}
Использование:
\begin{lstlisting}[language=C++, style=CUDA]
// ваш код
\end{lstlisting}
Можно подгружать код прямо из файлов, указывать нужные номера строк и т.д. Например, как в демо-презентации:
\lstinputlisting[language=Python, linerange={2-4,6-13,32-35},title=Вставка из example.py]{code/example.py}
В итоге в презентации все листинги стилизованы и имеют автоподсветку кода:

Пример слайда с листингами
Таблицы с автораскраскойТаблицы — частая боль в LaTeX. Я сделала так, чтобы строки окрашивались автоматически с чередованием белого и цвета YourBlock. А шапка — всегда на YourBase-фоне с белым текстом:
% Шапка: фон YourBase, белый жирный текст
\def \YourTableHeadRow {\rowcolor{YourBase}\rowstyle{\bfseries\color{white}}}
% Авточередование цветов строк
\newcommand{\Yourtable}[1][oddheadrows]{
\ifthenelse{\equal{evenheadrows}{#1}}
{\rowcolors{1}{}{YourBlock}}
{\rowcolors{1}{YourBlock}{}}
\renewcommand{\arraystretch}{1.5}
}
Для автостилизации таблиц необходимо перед окружением таблицы использовать команду Yourtable. Если шапка таблицы состоит из четного числа строк, то \Yourtable[evenheadrows]. Перед каждой строкой шапки нужно использовать команду YourTableHeadRow.
Есть нюанс: \rowcolor применяется ко всем столбцам строки. Если в шапке есть объединенные ячейки или мультиряд, нужно уметь «сбрасывать» стиль. Для этого определены два специальных типа колонок:
% = сбрасывает \rowstyle (первый столбец)
\newcolumntype{=}{>{\gdef\@rowstyle{}}}
% + применяет \rowstyle (остальные столбцы)
\newcolumntype{+}{>{\@rowstyle}}
Как это работает:
= ставится в преамбуле таблицы перед типом первого столбца — это сбрасывает стиль предыдущей строки;
+ ставится в преамбуле таблицы перед типом каждого следующего столбца — это вставляет сохраненный \@rowstyle, который был установлен через \rowstyle внутри \YourTableHeadRow.
Для примера наберем самую простую табличку:
\Yourtable
\begin{tabular}{=c|+c|+c|+c}
\YourTableHeadRow
Заголовок 1 & Заголовок 2 & Заголовок 3 & Заголовок 4 \\
данные 1 & данные 2 & данные 3 & данные 4 \\
данные 5 & данные 6 & данные 7 & данные 8 \\
\end{tabular}
На слайде она будет выглядеть так:

Дополнительно в классе настроены:
% Цвет линий-разделителей в таблицах — белый
% Так как строки цветные, линии должны быть не видны
\arrayrulecolor{white}
% Толщина линий
\setlength{\arrayrulewidth}{0.5pt}
% Отступ текста от краев ячейки
\setlength{\tabcolsep}{0.75em}
Цвет, толщину линий и размер отступов смело меняйте на свои.
Иконки, блоки, карточкиИконки собраны в папке YourStyle/icons/. В текущем наборе 33 иконки в стиле «белый контур на прозрачном фоне» (512×512 px, PNG). Они взяты из Material Design Icons (MDI) — свободной библиотеки под лицензией Apache 2.0. Подмените их на иконки из вашего дизайна или выберите иконки на свой вкус с этого же или других бесплатных ресурсов:
IconFinder — iconfinder.com (фильтр Free);
SVG Repo — svgrepo.com (CC0 / MIT);
Flaticon — flaticon.com (Free с указанием автора);
Font Awesome — fontawesome.com (Free-пак).
Для удобного доступа к иконкам сделаны две команды-обертки:
% [размер]{имя файла} — по умолчанию стандартный размер 24pt
\newcommand{\icon}[2][24pt]{\includegraphics[width=#1, height=#1]{YourStyle/icons/#2.png}}
% {имя файла} — сокращенная версия, размером всегда 20pt
\newcommand{\iconS}[1]{\icon[20pt]{#1}}
\icon[32pt]{tools} вставляет иконку tools размером 32×32pt, \icon{tools} — размером 24×24pt, а \iconS{tools} — размером 20×20pt.
В демо-презентации на 11-м слайде есть каталог, где все иконки собраны в виде таблицы с названиями:

Набор иконок из репозитория с примерами
Штатные Beamer-блоки (block) переопределим, чтобы добавить опциональную иконку в заголовок:
\renewenvironment<>{block}[2][]{%
\begin{actionenv}%
\def\insertblocktitle{\par\vspace{-0.1em}\leftskip=0.45em\rightskip=0.45em \normalsize\textbf{\ifstrempty{#1}{#2}{\raisebox{-.5\height}{\hspace{-3pt}\icon{#1}}\hspace*{0.1cm}\raisebox{-0.5\height}{\hbox{#2}}}}\vspace*{0.1cm}
}
\par \usebeamertemplate{block begin}\leftskip=0.45em\rightskip=0.45em
\vspace{0.1em}%
}
{\par\vspace*{0.1cm}\usebeamertemplate{block end}
\end{actionenv}}
Внутри блока добавлен горизонтальный отступ. Его можно менять на свое значение, чтобы текст не упирался в края:
\addtobeamertemplate{block begin}{\hspace*{0.1cm}\begin{minipage}[t]{\linewidth-0.1cm}\addtolength{\leftmargini}{0.17cm}}{}
\addtobeamertemplate{block end}{}{\end{minipage}\vspace*{0.05cm}}
Чтобы сверстать блок с иконкой tools, набираем \begin{block}[tools]{Заголовок} ... \end{block}. Если иконка не нужна, пишем как обычно: \begin{block}{Заголовок} ... \end{block}.
В демо-презентации можно увидеть, как выглядят блоки с иконками:

Примеры блоков с иконками
И без иконок:

Примеры блоков без иконок
Для верстки списков преимуществ, характеристик и т.п. удобно использовать карточки с иконками и без. Они определены в классе следующим образом:
% \Yourcard[icon]{width}{title}{description} — карточка с опциональной иконкой
% width — доля \linewidth (например, 0.27 для трех карточек в ряд и 0.4 — для двух)
\newcommand{\Yourcard}[4][]{
\begin{minipage}[t]{#2\linewidth}
% Цветной квадратик слева вверху — с иконкой, если она есть, или пустой, если ее нет
\colorbox{YourBase}{\ifstrempty{#1}{\makebox(4,4){}}{\makebox(16,16){\iconS{#1}}}}
\vspace{0.2cm}\\
\textbf{#3}\\
#4
\end{minipage}
}
В презентации элементы-карточки выглядят так:

Примеры карточек с иконками (верхний ряд) и без иконок (нижний ряд)
Анимации из последовательности кадровСтандартные методы вставки видео в PDF работают нестабильно. А Flash Player в Adobe Reader с 2020 года вовсе не поддерживается. Альтернатива — разбить видео на PNG-кадры c помощью простого скрипта или онлайн-конвертера и вставить их как анимацию через пакет animate с методом method=ocg (Optional Content Groups):
% Анимация без элементов управления (циклический автопросмотр, как GIF)
\newcommand{\FramesAsGIF}[6]{\animategraphics[loop,autoplay,method=ocg,width=#2,height=#3,keepaspectratio]{#4}{#1}{#5}{#6}}
% С кнопками play/stop
\newcommand{\FramesAsVideoPlayer}[6]{
\animategraphics[loop,method=ocg,controls={play,stop},width=#2,height=#3,keepaspectratio]{#4}{#1}{#5}{#6}
}
% С полным набором кнопок управления
\newcommand{\FramesAsVideoExtraPlayer}[6]{
\animategraphics[loop,method=ocg,controls,width=#2,height=#3,keepaspectratio]{#4}{#1}{#5}{#6}
}
Аргументы этих команд:
Путь до кадров (с префиксом имени файла без номера и расширения),
Ширина,
Высота,
Частота кадров (fps),
Номер первого кадра,
Номер последнего кадра.
Примеры использования из демо-презентации:
% Анимация без элементов управления (циклический автопросмотр, как GIF)
\FramesAsGIF{video/resonans/Re100Pair0_85Resonans-}{2.4cm}{2.4cm}{4}{0}{28}
% С кнопками play/stop
\FramesAsVideoPlayer{video/resonans/Re100Pair0_85Resonans-}{2.4cm}{2.4cm}{4}{0}{28}
% С полным набором кнопок управления
\FramesAsVideoExtraPlayer{video/resonans/Re100Pair0_85Resonans-}{2.4cm}{2.4cm}{4}{0}{28}
На слайде выглядят так (слева направо):

Примеры встроенных на слайд анимаций
Для просмотра анимаций скачайте демо-презентацию и откройте в любой программе для просмотра PDF на девятом слайде.
Последние штрихи: гиперссылки, отступы в списках, полезные мелочиСсылки настроим так, чтобы в PDF не было цветных рамок вокруг текста ссылки. Вместо них сделаем подчеркивание:
\makeatletter
\Hy@AtBeginDocument{%
\def\@pdfborder{0 0 1}%
\def\@pdfborderstyle{/S/U/W 1}%
}
\makeatother
Цвет URL-ссылок привязан к YourBase (в примере это фиолетовый), а внутренние ссылки не перекрашиваются:
\hypersetup{colorlinks,linkcolor=,urlcolor=YourBase,linkbordercolor=YourBase,urlbordercolor=YourBase}
\urlstyle{same}
\urlstyle{same} устанавливает, что URL печатаются тем же шрифтом, что и основной текст, а не моноширинным по умолчанию. Если ваш корпоративный стиль требует другого цвета ссылок, достаточно поменять YourBase в urlcolor=YourBase на нужный.
По умолчанию Beamer использует большие отступы в itemize / enumerate. В классе они уменьшены и настраиваются отдельно для каждого уровня вложенности:
% Отступ слева для первого уровня
\setlength\leftmargini{1.4em}
% Отступ между маркером и текстом
\setlength\labelsep{7pt}
Дополнительно через \xpatch переопределены внутренние макросы Beamer, чтобы можно было менять межстрочный интервал только внутри списков:
\newcommand\setlistsep[3]{%
\setlength{\my@beamer@itemsepi}{#1}% первый уровень
\setlength{\my@beamer@itemsepii}{#2}% второй уровень
\setlength{\my@beamer@itemsepiii}{#3}% третий уровень
}
После этого переопределения в классе можно указать \setlistsep{2ex}{1.5ex}{1ex}, и межстрочные расстояния в списках изменятся по всей презентации. Если хочется более плотные списки, уменьшайте значения в фигурных скобках.
В класс можно добавлять свои команды для ускорения повседневного форматирования текста на слайдах. Например, сейчас определено несколько таких коротких команд:
% Моноширинный шрифт для вставки LaTeX-команд в тексте
\def \Yourcode {\small\ttfamily}
% Зеленая галочка
\def \YourCheckedbox {\color{YourGood}\Checkedbox}
% Красный крестик
\def \YourCrossedbox {\color{YourBad}\Crossedbox}
% Фиолетовая pointing hand
\def \YourHandRight {\color{YourBase}\HandRight}
% Цветной бокс вокруг текста (рамка YourBase, заливка 20%)
\newcommand{\Yourcolorbox}[1]{\fcolorbox{YourBase}{YourBase!20}{#1}}
\Yourcode удобен, когда нужно вставить имя LaTeX-команды прямо в текст: \Yourcode{\textbackslash section{...}}. Галочка и крестик пригодятся в списках «плюсов и минусов», \Yourcolorbox для выделения ключевого термина цветным фоном. Размер шрифта в \Yourcode регулируется: замените \small на \footnotesize, если шрифт кажется крупным.
В самом конце \YourPres.cls добавляем:
\setbeamercovered{dynamic} — скрытые элементы (например, на оверлеях) не просто исчезают, а плавно затемняются. Глаз не теряет контекст.
\setcounter{secnumdepth}{5} — глубокая нумерация разделов (до subparagraph), хотя на практике в презентациях используется редко.
\def\emptyset{\varnothing} — более красивый символ пустого множества вместо стандартного \emptyset.
\mode<presentation> / \mode<all> — гарантирует, что класс работает только в режиме презентации Beamer.
Подведем итогиМы разобрали минимальный, но достаточный набор, чтобы превратить корпоративный брендбук в самодостаточный LaTeX-класс.
Дальше можно добавлять:
SVG-иконки — заменить PNG на вектор для четкости на Retina-экранах или использовать команды Font Awesome или MDI напрямую через пакеты;
автогенерацию каталога иконок — написать скрипт, который сканирует папку и генерирует LaTeX-таблицу;
поддержку светлой/темной темы через \newcommand{\LightTheme}{...} / \DarkTheme;
событийные варианты — например, переопределять титульный слайд для конференций или мероприятий;
разбивку на модули — можно выделить colors.sty, fonts.sty, tables.sty и подключать их из основного класса;
динамическую загрузку шрифтов через \IfFileExists;
и целую кучу всего.
Можно дописать еще хоть 10 000 строк кода, добавив десятки новых функций, реорганизовав код — и все равно будет, что улучшать. Но ядро корпоративного стиля — цвета, шрифты, каркас слайда, блоки, таблицы, иконки, авторские страницы — умещается здесь, в одном достаточно компактном файле. Сейчас это ~800 строк с комментариями, из которых ~500 строк кода, который мы полностью разобрали в статье.
Начать работать с шаблоном можно прямо по демо-презентации даже тем, кому LaTeX в новинку. Если вы еще не используете систему контроля версий для своих презентаций, попробуйте такой подход:
Вынесите шаблон в отдельный репозиторий.
Подключите его к репозиторию с презентацией как submodule:
git submodule add https://github.com/vvp-cfd/beamer-template-kit.git company-pres-template
Git автоматически добавит информацию о submodule в .gitmodules.
Подключите класс в презентации через \documentclass{YourPres}.
И спокойно пишите презентацию, не отвлекаясь на оформление.
Когда шаблон обновляется, сделайте git submodule update —remote в своих проектах с презентациями.
Надеюсь, статья оказалась полезной и для тех, кто только осваивает LaTeX/Beamer, и для тех, кто давно хотел разобраться с созданием классов и стилевых файлов, но все не доходили руки. А если после прочтения вы поняли, что хотите больше узнать в целом про LaTeX или в частности про Beamer, вот подборка литературы:
Львовский С.М. Набор и верстка в системе LaTeX.
Балдин Е.М. Компьютерная типография LaTeX.
Кузнецов А.В. Основы LaTeX.
Столяров А.В. Сверстай диплом красиво: LaTeX за три дня.
Knuth D.E. The TeXbook.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Декомпозиция промптов для презентации: почему «сделай красиво» не работает | 0 | 7.46 | 14-07-2026 |
| 2 | Лучшие нейросети для создания презентаций по тексту, выбираем ТОП-5 ИИ для создания и улучшение слайдов | 0 | 5 | 07-07-2026 |
| 3 | Как сделать презентацию по Word-документу нейросетью в 2026: ТОП-6 ИИ, которые соберут слайды из твоего текста | 0 | 5 | 07-07-2026 |
| 4 | PowerHTML | 5 | 7 | 03-07-2026 |
| 5 | Презентация для транспортной компании | 0 | 7.48 | 03-08-2026 |
| 6 | Дизайнеры не должны договариваться о том, как оформлять макеты. Как мы сформировали дизайн-стандарт | 0 | 7.98 | 08-07-2026 |
| 7 | Формула «идеального enterprise» для open-source | 0 | 18.47 | 12-08-2026 |
| 8 | Будет ли self-hosted LLM производительнее, чем модель во внешнем контуре: сравниваем GLM, Claude и GPT | 0 | 10.61 | 10-08-2026 |
| 9 | Как мы показываем клиентам документацию по проекту из приватного репозитория, не пуская их в репозиторий | 0 | 6.67 | 22-07-2026 |