Меня зовут Виталий и я пишу уже который год самую большую книгу по математике для 4 11 классов, а так же автор поста (рекомендую почитать) о ней. Пишу я ее в LaTeX и считаю, что современный учебник не должен быть черно-белым, а так же должен быть удобен для использования и учеником и учителем. Здесь я собрал базовые фишки, которые я использую (что-то чаще, что-то реже). Надеюсь, вы найдете что-нибудь полезное для себя:)

Постараюсь все подробно описать, но не гарантирую идеального кода. Компиляция в основном с помощью pdflatex, но есть места, где требуется lualatex. Для себя я сделал около 35 стилевых файлов для использования в преамбуле, но тут я написал полный код чтобы в каждом случае можно было запустить "из коробки".

Кстати, в следующем посте будут еще <<круче>> функции.

Основные фишки

Рамки. Возможности tcolorbox

Рамки, теоремы

Пакет tcolorbox — один из самых мощных инструментов для создания
красивых цветных рамок, теорем и выделений в LaTeX.

Что показано в этом примере:

  1. Note — примечание с пунктирной синей рамкой

  2. theo — нумерованная теорема с голубым фоном

  3. frogbox — декоративный бокс с «глазками лягушки»

  4. Rule — простая рамка для правил (желтый фон, красная рамка)

  5. Proof — выделение красной вертикальной линией слева

Ключевые библиотеки tcolorbox:

  • breakable — разрыв боксов между страницами

  • skins — расширенные стили (enhanced, overlay)

  • theorems — создание окружений теорем

Полный код тут в разделе 00 Рамки

что дает вот такой результат:

Рамки, теоремы
Рамки, теоремы

Обведение слов в тексте

Команда \mmark создает встроенные (inline) цветные овалы вокруг текста.
Это полезно для:

  • Выделения ключевых терминов в учебниках

  • Цветовой маркировки категорий

  • Визуального разделения понятий

  • Создания интерактивных материалов

Полный код тут в разделе 00 Рамки

Что дает

Обведение слов в тексте
Обведение слов в тексте

Демонстрация пакета boxes.sty

Три уровня детализации решения с визуальным различием:

  1. solutionTeacher (зелёный) — подробное решение с объяснением каждого шага

  2. solutionStudent (жёлтый) — краткое решение без лишних деталей

  3. solutionMaster (оранжевый) — виртуозное, минимальное решение

Особенности дизайна:

  • Декоративные уголки — рисуются через overlay с помощью TikZ

  • Полупрозрачный фонopacityback=0.6 (60% непрозрачности)

  • Маленькая бирка — прикреплена сверху по центру (attach boxed title)

  • Поддержка разрываbreakable для длинных решений на несколько страниц

Ключевые опции tcolorbox:

Опция

Описание

enhanced

Включает расширенные возможности (overlay, shadow и др.)

frame hidden

Скрывает основную рамку

breakable

Разрешает разрыв бокса между страницами

colback

Цвет фона

opacityback

Прозрачность фона (0-1)

overlay unbroken

Код TikZ для неразрывного бокса

overlay first/middle/last

Код TikZ для частей разрывного бокса

attach boxed title

Прикрепление заголовка-бирки

Полный код тут в разделе 00 Рамки

Что дает

Математика

Выделение цветом любых объектов. Пакет colors.sty

Две группы команд для удобного окрашивания:

Математический режим (заглавные команды)

Команда

Цвет

\Rd{x}

Красный

\Bl{x}

Синий

\Grn{x}

Зелёный

\Org{x}

Оранжевый

\Prp{x}

Фиолетовый

\Pnk{x}

Розовый

\Teal{x}

Бирюзовый

\Brn{x}

Коричневый

\Gry{x}

Серый

Текстовый режим (строчные команды с "c")

Команда

Цвет

\rdc{текст}

Красный

\blc{текст}

Синий

\grnc{текст}

Зелёный

и т.д.

...

Полный код тут в разделе 01 Математика

Что дает

Выделение цветными прямоугольниками

Команда \BOX создаёт цветной прямоугольник с заливкой и рамкой
вокруг текста или формулы.

Синтаксис:

\BOX{содержимое}           % красный по умолчанию
\BOX[blue]{содержимое}     % синий
\BOX[green]{содержимое}    % зелёный

Команда использует \tikzmarknode — создаёт TikZ-узел прямо в тексте:

  • draw — цвет рамки (затемнённый: цвет!30!black)

  • fill — цвет заливки (30% насыщенности: цвет!30)

  • inner sep — отступ внутри рамки

  • rounded corners — скругление углов

Полный код тут в разделе 01 Математика

Получается:

Опять выделение прямоугольниками с тенью, но другими

Библиотека shadows.blur из TikZ позволяет создавать красивые
прямоугольники с градиентной тенью для выделения формул.

Синтаксис:

\begin{tikzpicture}
    \fill[gray!20, blur shadow={shadow blur steps=10}] 
        (0,0) rectangle (5,1.2);
    \node at (2.5,0.6) {$формула$};
\end{tikzpicture}

Параметры blur shadow:

Параметр

Описание

shadow blur steps

Количество шагов размытия (5–20)

больше шагов

плавнее тень, но дольше компиляция

Полный код тут в разделе 01 Математика

Что дает

Автоматические цветные скобки

Система команд для окрашивания скобок с автоматическим выбором цвета
по уровню вложенности.

Основные команды:

Команда

Описание

\L( ... \R)

Авто-размер (как \left \right)

\lo( ... \ro)

Маленький размер

\lO( ... \rO)

Средний размер

\Lo( ... \Ro)

Большой размер

\SW

Переключение палитры

4 цветовые палитры:
0. Стандартная: зелёный → синий → оранжевый → пурпурный

  1. Красная: red → tomato → orangered → darkred

  2. Фиолетовая: purple → magenta → violet → darkviolet

  3. Коричневая: brown → saddlebrown → chocolate → maroon

Пример:

\[ \L( a + \L( b + \L( c \R) \R) \R) \]

Каждый уровень вложенности автоматически получает свой цвет.

Принцип работы:

  • Счётчик BracketLevel отслеживает уровень вложенности

  • \L увеличивает счётчик, \R уменьшает

  • Цвет выбирается из массива по значению счётчика

  • \SW циклически переключает палитру ВАЖНО

Полный код тут в разделе 01 Математика

Что дает

Подписи сверху к уравнениям

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

  1. Пакет annotate-equations

\begin{equation*}
    \eqnmarkbox[red]{term1}{x^2} + \eqnmarkbox[blue]{term2}{2x} = 0
\end{equation*}
\annotatetwo[yshift=1em]{above}{term1}{term2}{Пояснение}

Важно: требуется 2 компиляции!

Команды:

  • \eqnmarkbox[цвет]{метка}{формула} — отмечает элемент

  • \annotate[опции]{позиция}{метка}{текст} — одна аннотация

  • \annotatetwo[опции]{позиция}{метка1}{метка2}{текст} — объединяющая

  1. TikZ-диаграммы

Для сложных схем используйте TikZ напрямую:

  • \node — создание блоков

  • \path или \draw — стрелки между блоками

  • Стили задаются в начале tikzpicture

Полезные стили:

  • right=of node — размещение справа от узла

  • above=of node — размещение сверху

  • -> — стрелка

  • >=latex — тип наконечника

Полный код тут в разделе 01 Математика

Что дает

Подписи справа к уравнениям при переходе на следующую строку

Пакет witharrows добавляет стрелки с пояснениями справа от формул,
объясняя переходы между строками.

Синтаксис:

\begin{DispWithArrows}[format=ll]
    левая часть &= правая часть
        \Arrow{пояснение} \\
    &= следующий шаг
        \Arrow{пояснение} \\
    &= результат
\end{DispWithArrows}

Опции окружения:

Опция

Описание

format=ll

Выравнивание left-left

format=rl

Выравнивание right-left

format=c

Центрирование

Команда \Arrow:

  • \Arrow{текст} — стрелка с пояснением

  • \Arrow*{текст} — только текст без стрелки

  • \Arrow[yshift=1em]{текст} — со сдвигом

Полный код тут в разделе 01 Математика

Что дает

Совокупности и системы (не доработано, потом когда-нибудь доделаю)

Удобное написание в .tex файле систем и совокупностей

Полный код тут в разделе 01 Математика

Что дает

Математика внутри section чтобы не было проблем в оглавлении и закладках

Возможно вы сталкивались с проблемой что нельзя добавлять математику в секции и пр разделы, тк есть конфликты с закладками. Вот решение проблемы:

\subsection{Математика в section и оглавлении. The values of \texorpdfstring{$\beta$}{тот текст который будет отображаться в закладках}  for which \texorpdfstring{$\omega_i \mid {\omega}\mid^{-\beta}$}{тот текст который будет отображаться в закладках} is defined at the origin}

Что дает

Команды-сокращения

Список команд:

Команда

Описание

\ris

Сокращение «рис.»

\LL

Двойная стрелка ⟺ с отступами

\ddfrac{a}{b}

Дробь с вертикальными отступами

\dop{n}

Показать домножение на n

\al или \al[3cm]

Линия для ответа

\td{текст}

Заметка для автора

Полный код тут в разделе 01 Математика

Что дает

Дроби и обводка

Полный код тут в разделе 01 Математика

Что дает

Tikz-рисунки

3D функции

Пакет pgfplots строит трёхмерные графики функций z = f(x,y).

Базовый синтаксис:

\begin{tikzpicture}
\begin{axis}[3d box, xlabel=$x$, ylabel=$y$, zlabel=$z$, colormap/viridis]
    \addplot3[surf, domain=-2:2, samples=45] {x^2 + y^2};
\end{axis}
\end{tikzpicture}

Ключевые параметры:

Параметр

Описание

3d box

Рисовать рамку вокруг графика

surf

Тип: сплошная поверхность

mesh

Тип: сетка без заливки

domain

Диапазон X и Y

samples

Количество точек (больше = плавнее)

colormap/...

Цветовая схема

Популярные цветовые карты:

  • viridis — научный стандарт

  • jet — радуга (классика)

  • hot — тепловая карта

  • cool — холодные тона

Полный код тут в разделе 02 Tikz

Что дает

3D-рисунки

3D рисунки с tikz-3dplot

Пакет tikz-3dplot позволяет рисовать в трёхмерном пространстве,
задавая углы обзора.

Базовый синтаксис:

\tdplotsetmaincoords{60}{110}  % углы θ и φ

\begin{tikzpicture}[tdplot_main_coords]
    \draw (0,0,0) -- (2,0,0);      % линия в 3D
    \draw[->] (0,0,0) -- (0,0,3);  % ось Z
\end{tikzpicture}

Углы обзора:

  • θ (первый) — наклон от вертикали (0°=сверху, 90°=сбоку)

  • φ (второй) — поворот вокруг Z

Полный код тут в разделе 02 Tikz

Что дает

Площадь между графиков

Полный код тут в разделе 02 Tikz

Что дает

Человечки всех видов

Полный код тут в разделе 02 Tikz

Что дает

Анимированный график/пошаговое переключение рисунков

Полный код тут в разделе 02 Tikz

Что дает

Анимация
Анимация

Примеры рисунков и графиков. Посложнее

Всякие рисунки

Полный код тут в разделе 02 Tikz

Что дает

Диаграммы Эйлера-Венна

Полный код тут в разделе 02 Tikz

Что дает

Отрезки

Всякие разные рисунки

Полный код тут в разделе 02 Tikz

Что дает

Рисунки посложнее

Полный код тут в разделе 02 Tikz

Что дает

Ссылки, всплывающие подсказки, скрытые подсказки

Гиперссылки внутри текста

Полный код тут в разделе 03 Ссылки

Что дает

QR-код

Полный код тут в разделе 03 Ссылки

Что дает

Подсказки, всплывающий текст при наведении

Полный код тут в разделе 03 Ссылки

Что дает

Скомпилируйте у себя, откройте в acrobat reader и наведите мышку на иконку
Скомпилируйте у себя, откройте в acrobat reader и наведите мышку на иконку

По мне так иконки не очень. См следующий раздел

Иконки с подсказками

Гораздо лучше чем в прошлом случае

Полный код тут в разделе 03 Ссылки

Что дает

Скомпилируйте у себя, откройте в acrobat reader и наведите мышку на иконку
Скомпилируйте у себя, откройте в acrobat reader и наведите мышку на иконку

Прикрепленные файлы. ТОПовая технология! очень удобно!

Я считаю что это одно из лучших решений для использования в современных учебниках. Например можно прикреплять большие качественные pdf рисунки геометрических задач или mp3 пояснения оставлять прямо в книге!

Обращаю внимание на несколько очень важных пунктов

  • Работает только с adobe acrobate reader

  • Чтобы открыть файл надо дважды кликнуть на иконку внутри основного pdf

  • Чтобы скомпилировать без ошибок как у меня у вас должен лежать в этой же папке где и .tex файл modal.pdf (вообще любой pdf, просто у меня называется именно так и в коде указан именно он) и в папке audio должен лежать файл Recording0001.wav. Очевидно, вы можете создать свой и расположить его где угодно, у меня прописано audio/Recording0001.wav.

p.s. Почему то моя нарисованная иконка pdf выглядит криво при компиляции pdflatex но нормально с lualatex

Скрытые подсказки. Тоже ТОПовое решение

Полный код тут в разделе 03 Ссылки

Что дает

Очевидно, работает только с adobe acrobat

Устал писать статью, это только половина от того, что я тут хотел описать
Продолжу завтра:)
p.s. ссылка на мой тг канал где я выкладываю кусочки книги по математике
p.s.2 обновил статью, убрал весь код на гугл диск. слишком огромная статья была. многие жаловались
p.s.3 случайно отклонил комментарий от человека о полезности пакета todolist. действительно, можно вывести целый список с напоминалками о том, что надо доработать что-то в конкретных местах. К сожалению, второй комментарий не прочитал(

Комментарии (11)


  1. DmitryKolosov
    07.01.2026 07:56

    Я список кораблей прочёл до середины. (с) Осип Мандельштам


  1. malkovsky
    07.01.2026 07:56

    Есть предзаказ?


    1. Vitaly1024 Автор
      07.01.2026 07:56

      Добрый день! К сожалению, работа над книгой идёт медленнее чем хотелось бы(

      Постараюсь почаще в Telegram канал выкладывать бесплатные методички, являющиеся частью книги


  1. domix32
    07.01.2026 07:56

    Сегодня я узнал, что хабр умеет прикладывать PDF в статью. @boombooroom а вы эту штуку проверяли на предмет RCE? А то ж как вставят щас Doom PDF в статью.


  1. abcdsash
    07.01.2026 07:56

    люблю ТеХ )

    но очень длинная статья. Слишком много материала, а в исходниках, порой, много избыточных комментариев... А так - супер просто!


    1. Vitaly1024 Автор
      07.01.2026 07:56

      Сори, следующую сделаю короче. То, что она длинная понял вчера в 3 часа ночи… пришлось вместо кода вставлять ссылки на гугл диск

      А комментариев много — согласен, пользователи лишние могут убрать. Было очень сложно генерировать отдельные файлы, поэтому заставил писать ИИ, получилось объемно, но переделывать не стал

      рад, что понравилось) завтра след статья


  1. malkovsky
    07.01.2026 07:56

    Еще такой глобальный вопрос: из статьи кажется, что вы хотите учебник и в печатном, и в электронном варианте. Многие вспомогательные штуки в печатном варианте невозможны, что делает сложным иметь один вариант для обоих случаев. Если все-таки предполагается электронный вариант, разве нет каких-нибудь хороших альтернатив latex? Я лично смотрю в сторону jupyter book и подобного, сам использую quarto, по сути они все представлют собой jupyter страницы в разных вариациях, преимущество которых перед техом в том, что большую часть текста можно верстать в markdown, тех поддерживается на достаточном уровне чтобы сверстать IEEE статью и при этом есть возможность исполняемые вставлять фрагменты кода и компилировать не только в пдф.

    Отдельно отмечу, что лично я latex перестал работать c чистым latex в основном из-за отсутствия адекватного UX, например в overleaf я не вижу визуально изменения мгновенно, а в MD вижу. Тут еще стоит отметить typst, но с ним я почти не знаком.


    1. Vitaly1024 Автор
      07.01.2026 07:56

      День добрый! Сначала я хотел печатать книгу, но потом понял что это бесполезно и катастрофически дорого.

      бОльшая часть фишек заточена под электронный формат книги, при чем такой, который работает и без интернета.

      Я настолько освоился в техстудио в латехе, что даже не смотрю на пдф постоянно. Мне в этом помогают макросы для окружений, заготовки + отступы + цвета команд. Я бы рассмотрел другие варианты, но объем моей книги уже «перевалил» за рамки адекватного и работать с полной версией, наоборот, удобнее в латехе.

      Typest попробовал, клевая вещь, рендерит быстрее. Но пока не понял почему нужно на него перейти. Слишком много всего надо будет менять и переадаптироваться


      1. malkovsky
        07.01.2026 07:56

        Typest попробовал, клевая вещь, рендерит быстрее. Но пока не понял почему нужно на него перейти. Слишком много всего надо будет менять и переадаптироваться

        Вот если бы он просто быстро рендерил латех, то я скорее всего сидел бы на нём


    1. Vitaly1024 Автор
      07.01.2026 07:56

      Кстати, переделать учебник под печатный — пол часа :)


  1. redbeardster
    07.01.2026 07:56

    Большой молодец!