Все статьи

Markdown: почему простой текстовый синтаксис победил сложные редакторы

Markdown — это лёгкая разметка, которая позволяет форматировать текст (заголовки, списки, ссылки, выделение) обычными символами, оставаясь при этом легко читаемым в сыром виде — в отличие от HTML, который трудно читать без рендеринга.

Основной синтаксис

  • # Заголовок — заголовки разных уровней через количество символов #.
  • **жирный** и *курсив* — выделение текста.
  • [текст](url) — ссылка.
  • - пункт или 1. пункт — маркированные и нумерованные списки.
  • ``` — блоки кода с подсветкой синтаксиса по названию языка.

Почему markdown-таблицы — не часть оригинального Markdown

Джон Грубер в 2004 году описал Markdown прозой, а не формальной грамматикой, и в этом описании нет ни таблиц, ни зачёркнутого текста, ни списков задач. Таблицы, которые сегодня привычны в любом README на GitHub, — расширение GitHub Flavored Markdown (GFM), появившееся много позже и никогда не входившее в исходную спецификацию Грубера.

GFM как фактический стандарт

GitHub Flavored Markdown добавляет к CommonMark то, чем разработчики пользуются постоянно: таблицы через |, чекбоксы задач (- [ ] / - [x]), зачёркивание ~~текст~~ и автоматическое превращение голых ссылок в кликабельные. Поскольку огромная часть технической документации — issues, pull requests, README — живёт именно на GitHub, GFM стал тем набором правил, на который в реальности ориентируются большинство парсеров, включая этот инструмент.

Конвертация в HTML и обратно

Преобразование Markdown → HTML прямое: парсер распознаёт синтаксические конструкции и генерирует соответствующие теги. Обратное преобразование HTML → Markdown сложнее, так как HTML поддерживает значительно больше возможностей форматирования, чем базовый Markdown, поэтому часть разметки (сложные таблицы, вложенные стили) может упрощаться или теряться.

Зачем это нужно

  • Быстро посмотреть, как Markdown-файл будет выглядеть после рендеринга, не публикуя его.
  • Конвертировать содержимое страницы или документа в Markdown для хранения в системе контроля версий.
  • Подготовить HTML-контент для вставки в приложение, принимающее только Markdown.
Попробовать инструмент