Для работы со сносками в Markdown-it используется
плагин markdown-it-footnote. Он позволяет добавлять в текст
сноски и автоматически формировать ссылки на них и сноски внизу
документа. Подключение выглядит следующим образом:
const MarkdownIt = require('markdown-it');
const markdownItFootnote = require('markdown-it-footnote');
const md = new MarkdownIt();
md.use(markdownItFootnote);
После подключения плагина синтаксис сносок становится доступным в стандартном Markdown:
Текст с сноской[^1].
[^1]: Содержимое сноски.
Этот код будет преобразован в HTML с корректными ссылками на сноски и их содержимое.
Объявление сносок осуществляется через квадратные
скобки с символом ^ и идентификатором сноски. Идентификатор
может состоять из букв, цифр и дефисов:
Пример сноски[^note-id].
[^note-id]: Это содержимое сноски.
Важные моменты:
Содержимое сноски может включать любые Markdown-элементы:
Текст с многострочной сноской[^example].
[^example]: Первый абзац сноски.
Второй абзац с отступом.
- Список в сноске
- С поддержкой Markdown
При рендеринге это преобразуется в HTML с <sup>
для ссылки на сноску и отдельным блоком
<section class="footnotes"> для самой сноски.
По умолчанию сноски нумеруются в порядке их появления. Для кастомизации HTML можно использовать события renderer rules:
md.renderer.rules.footnote_caption = function(tokens, idx, options, env, slf) {
let n = Number(tokens[idx].meta.id + 1).toString();
return n;
};
Эта функция позволяет изменить отображаемый номер сноски. Также можно переопределять шаблоны для ссылок на сноски и их обратные ссылки.
Markdown-it поддерживает вложенные элементы внутри сносок, включая другие ссылки или форматирование текста:
Сложная сноска[^complex].
[^complex]: Сноска с **жирным текстом**, [ссылкой](https://example.com) и `кодом`.
Сноска будет корректно отрендерена с сохранением всех вложенных Markdown-элементов. Важно помнить, что плагин не поддерживает вложенные сноски (сноска внутри другой сноски).
Markdown-it позволяет комбинировать плагины, что особенно полезно при использовании сносок вместе с расширениями для таблиц, списков или подсветки кода:
const markdownItEmoji = require('markdown-it-emoji');
const markdownItAnchor = require('markdown-it-anchor');
md.use(markdownItFootnote)
.use(markdownItEmoji)
.use(markdownItAnchor);
При этом Markdown-it гарантирует корректную обработку сносок, даже если текст сноски содержит emoji или якоря.
Стилизовать сноски можно через стандартные CSS-классы:
.footnotes — контейнер всех сносок..footnote-item — отдельная сноска..footnote-ref — ссылка на сноску.Пример CSS:
.footnotes {
font-size: 0.9em;
border-top: 1px solid #ccc;
margin-top: 1em;
padding-top: 0.5em;
}
.footnote-item {
margin-bottom: 0.5em;
}
.footnote-ref {
text-decoration: none;
color: #007bff;
}
Таким образом, плагин markdown-it-footnote позволяет
интегрировать сноски в любые документы Markdown с полной поддержкой
HTML-рендеринга и гибкой кастомизацией.
С такой организацией сноски становятся мощным инструментом для документации, учебных материалов и любых текстов с пояснениями.