Как сделать таблицу в Markdown:синтаксис, выравнивание и многострочные ячейки.

Таблица Markdown — это обычный текст: ячейки разделены вертикальными чертами, а под заголовком идёт строка из дефисов. Вот синтаксис, выравнивание столбцов и способ вставить в ячейку вертикальную черту или вторую строку.

macOS 14 или новее. Чтение бесплатно; редактирование и ревью оплачиваются один раз.

Коротко

Напишите строку заголовка, затем строку-разделитель из дефисов, затем по строке на каждую запись, с | между ячейками. Двоеточия в разделителе выравнивают столбец: :--- по левому краю, :---: по центру, ---: по правому. Чтобы показать вертикальную черту внутри ячейки, напишите \|, а для второй строки в ячейке — <br>.

| Plan | Price | Seats |
|:-----|------:|:-----:|
| Free |    $0 |   1   |
| Team |   $12 |  10   |

·

Базовый синтаксис таблицы в Markdown

Таблицы входят в GitHub Flavored Markdown (GFM), диалект GitHub, GitLab и большинства Markdown-приложений. Для таблицы нужны три вещи:

  1. Строка заголовка

    Названия столбцов, разделённые вертикальными чертами: | Name | Role |.

  2. Строка-разделитель

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

  3. Строки таблицы

    По одной строке на запись, ячейки разделены вертикальными чертами. Если в строке ячеек не хватает, она дополняется пустыми, лишние отбрасываются. Таблица заканчивается на первой пустой строке.

| Name  | Role     |
| ----- | -------- |
| Alice | Designer |
| Bob   | Engineer |

Так это видит читатель:

ИмяРоль
АлисаДизайнер
БобИнженер

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

Выравнивание в таблице Markdown

Поставьте двоеточие слева, справа или с обеих сторон от дефисов столбца:

РазделительВыравнивание
:---По левому краю
:---:По центру
---:По правому краю
---По умолчанию (слева в большинстве приложений)
| Item   | Qty | Price |
|:-------|:---:|------:|
| Pencil |  12 |  $1.50 |
| Ruler  |   3 |  $4.00 |
ТоварКол-воЦена
Карандаш12$1.50
Линейка3$4.00

Выравнивание действует на весь столбец, включая заголовок. Оно задаётся один раз в строке-разделителе, а не в каждой ячейке. Числа лучше выравнивать по правому краю, чтобы разряды стояли друг под другом.

Вертикальная черта или вторая строка в ячейке

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

| Command            | Meaning          |
|--------------------|------------------|
| `a \| b`           | a pipe, in code  |
| Either \| or       | a pipe, in text  |

В таблице на вертикальных чертах одна строка соответствует одной записи, поэтому в ячейке нельзя сделать настоящий перенос строки или второй абзац. Обычный обход — HTML-тег <br>:

| Step  | What to do                          |
|-------|-------------------------------------|
| Build | Run the build.<br>Fix any errors.  |
| Ship  | Tag the release.<br>Push the tag.  |

Тот же приём даёт многострочную ячейку на GitHub и в большинстве других приложений, которые принимают HTML. Список Markdown в ячейке не работает: если в ячейке нужен список, поставьте <br> между короткими пунктами или вынесите список из таблицы.

Широкие таблицы и длинный текст

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

  • Делайте ячейки короткими: слово или число. Длинное объяснение вынесите в предложение под таблицей.
  • Берите меньше столбцов. Если их восемь, переверните таблицу: пусть столбцами будут объекты, а строками — их свойства.
  • Не выравнивайте исходный текст пробелами в таблице, которую часто правите: из-за одной изменённой ячейки пришлось бы переделывать отступы во всех строках.
  • Если нужны объединённые ячейки, ячейки на несколько строк или подпись, напишите таблицу на HTML. Большинство Markdown-приложений показывают обычный <table>.

Почему таблица Markdown не отображается

  • Нет строки-разделителя. Именно строка из дефисов превращает текст в таблицу.
  • Число ячеек не совпадает. Если в заголовке три ячейки, а в разделителе две, ничего не отобразится.
  • Неэкранированная вертикальная черта в ячейке делит её надвое. Пишите \|.
  • Пустая строка внутри таблицы. На ней таблица заканчивается, остальное — обычный текст.
  • В приложении нет таблиц. Таблиц нет ни в исходном Markdown, ни в ядре CommonMark. Они пришли из GFM, поэтому минимальный парсер покажет вертикальные черты как текст.

Чтобы увидеть результат до коммита, откройте файл в программе для чтения Markdown. DotMD показывает таблицы отрисованными, и читать в нём бесплатно. В DotMD Editor команда Insert → Table вставляет в файл готовую таблицу из трёх столбцов, а живой предпросмотр перерисовывает её по мере набора.

Вопросы о таблицах в Markdown

Как выровнять текст в таблице Markdown?

Добавьте двоеточия в строку-разделитель, ту, что из дефисов под заголовком. :--- выравнивает столбец по левому краю, :---: по центру, а ---: по правому.

Как сделать перенос строки в ячейке таблицы Markdown?

Напишите <br> там, где строка должна разорваться. В таблице на вертикальных чертах одна строка соответствует одной записи, поэтому настоящий перевод строки или список Markdown в ячейке не работает.

Как вставить символ вертикальной черты в ячейку таблицы?

Экранируйте его обратным слэшем: \|. Это нужно и в обычном тексте, и внутри строчного кода.

Можно ли объединять ячейки в таблице Markdown?

Нет. В таблицах GFM нет colspan и rowspan. Если нужны объединённые ячейки, напишите таблицу на HTML с <table>, colspan и rowspan.

Другие вопросы