Библиотека Markdown-it предоставляет мощный и гибкий
механизм для преобразования текста Markdown в HTML. Для работы с
математическими формулами чаще всего используется интеграция с
расширениями, поддерживающими LaTeX-синтаксис, такими
как markdown-it-katex или markdown-it-mathjax.
Они позволяют вставлять как строчные, так и
блочные формулы, сохраняя точность и читабельность
математического текста.
Для базового использования необходимо установить Markdown-it и выбранное расширение для формул:
npm install markdown-it markdown-it-katex
Далее создается экземпляр Markdown-it и подключается плагин:
const MarkdownIt = require('markdown-it');
const markdownItKatex = require('markdown-it-katex');
const md = new MarkdownIt();
md.use(markdownItKatex);
markdown-it-katex автоматически распознает синтаксис
формул:
$...$$$...$$Важно: любые символы внутри $...$ интерпретируются
как LaTeX, поэтому нельзя использовать $ без экранирования
внутри текста.
Строчные формулы используются внутри текста. Они оформляются через одинарные знаки доллара:
Эта формула $a^2 + b^2 = c^2$ встроена в текст.
Результат преобразуется в HTML примерно так:
<p>Эта формула <span class="katex">a^2 + b^2 = c^2</span> встроена в текст.</p>
Особенности:
\frac,
\sqrt, \sum, \int и др.).Блочные формулы создаются через двойные знаки доллара. Они выравниваются по центру и занимают отдельную строку:
$$
\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
В HTML это преобразуется в:
<p class="katex-display">
<span class="katex">...</span>
</p>
Особенности:
\\.Markdown-it позволяет переопределять рендеринг элементов формул через функцию:
md.renderer.rules.math_inline = function(tokens, idx) {
return `<span class="custom-math">${tokens[idx].content}</span>`;
};
Это полезно для:
Для динамической подгрузки формул на фронтенде можно подключать MathJax. Markdown-it будет генерировать текст LaTeX, а MathJax преобразует его в SVG/HTML:
md.use(require('markdown-it-mathjax'));
Это дает возможность:
Экранирование символов: Символ $
внутри текста необходимо экранировать (\$), чтобы не
нарушить рендеринг.
Безопасность: Markdown-it по умолчанию безопасен
для HTML, но плагины формул могут генерировать raw HTML. Следует
использовать опцию html: true осторожно:
const md = new MarkdownIt({ html: true });Стилизация: KaTeX автоматически подключает CSS для красивого отображения. Необходимо подключить:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/katex.min.css">Производительность: Блочные формулы могут быть тяжелыми для рендеринга на страницах с большим количеством уравнений. Рекомендуется кешировать HTML или использовать SSR.
$$
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
$$
$$
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
$$
Строчная формула: $\frac{1}{\sqrt{2}}$
Блочная формула:
$$
\frac{d}{dx} \left( e^{x^2} \right) = 2x e^{x^2}
$$
Markdown-it в связке с расширениями для математических формул позволяет создавать профессиональные учебные материалы, статьи и техническую документацию, сохраняя строгую структуру и визуальное качество математических выражений.