Markdown по умолчанию не поддерживает расширенные таблицы с выравниванием текста и сложной структурой. Библиотека Markdown-it позволяет расширять стандартный синтаксис с помощью плагинов, и одним из самых востребованных является markdown-it-table (или встроенные плагины, обеспечивающие поддержку таблиц).
Для работы с таблицами необходимо подключить Markdown-it и подключить соответствующий плагин:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
require('markdown-it-table')(md);
В современном варианте часто используется встроенная поддержка таблиц
через markdown-it с флагом markdown-it-attrs
или markdown-it-container, но чаще всего применяется
отдельный плагин для полноценного парсинга таблиц.
Инициализация плагина может содержать параметры для настройки:
md.use(require('markdown-it-table'), {
multiline: true, // Поддержка многострочных ячеек
rowspan: true, // Поддержка объединения ячеек по строкам
headerless: false // Таблицы без заголовков
});
Ключевые параметры:
Markdown-it с плагином позволяет использовать расширенный Markdown-синтаксис для таблиц:
| Имя | Возраст | Город |
|-----------|:-------:|-------------:|
| Алексей | 29 | Москва |
| Мария | 24 | Санкт-Петербург |
| Иван | 35 | Новосибирск |
Особенности синтаксиса:
| разделяет ячейки.
: указывает выравнивание:
:--- — выравнивание по левому краю.:---: — по центру.---: — по правому краю.Первая строка после заголовка (---) обязательна для
корректного парсинга таблицы.
Плагин Markdown-it автоматически добавляет к HTML-таблицам атрибуты для выравнивания. Пример:
| Левый | Центр | Правый |
|:------|:----:|------:|
| A | B | C |
Сгенерированный HTML:
<table>
<thead>
<tr>
<th style="text-align: left;">Левый</th>
<th style="text-align: center;">Центр</th>
<th style="text-align: right;">Правый</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">A</td>
<td style="text-align: center;">B</td>
<td style="text-align: right;">C</td>
</tr>
</tbody>
</table>
С включённой опцией multiline таблицы могут содержать
ячейки с переносом строки:
| Имя | Описание |
|-----------|-----------------------|
| Алексей | Разработчик |
| | с опытом в Node.js |
| Мария | Дизайнер интерфейсов |
В случае rowspan: true можно объединять ячейки по
вертикали:
| Группа | Имя |
|-----------|--------|
| Группа 1 | Алексей|
| | Мария |
Плагин корректно создаст HTML с использованием
rowspan.
Плагины для таблиц часто совместимы с другими расширениями Markdown-it, такими как:
Пример добавления класса к таблице:
| Имя | Город |
|-----|-------|
{: .my-table }
Результат:
<table class="my-table">
...
</table>
Markdown-it позволяет переопределять рендеринг таблиц через
renderer.rules:
md.renderer.rules.table_open = () => '<table class="custom-table">\n';
md.renderer.rules.table_close = () => '</table>\n';
Это позволяет интегрировать таблицы в любую CSS-структуру проекта, без необходимости вручную редактировать HTML после конвертации.
|---| для
совместимости с большинством Markdown-парсеров.multiline и rowspan.renderer.rules для
соответствия дизайну проекта.markdown-it-attrs для
добавления стилей, классов и идентификаторов без изменения исходного
Markdown.Markdown-it с плагинами для таблиц обеспечивает гибкую, расширяемую работу с табличными данными в Markdown, создавая удобный путь от простой разметки до сложного HTML.