Markdown — облегчённый язык разметки¶
Markdown — облегчённый язык разметки текста, созданный в 2004 году писателем и блогером Джоном Грубером совместно с Аароном Шварцем. Основная идея Markdown — минимальный синтаксис, основанный на обычном текстовом форматировании: символы вроде #, *, _ и отступов задают структуру документа, при этом исходный файл остаётся читаемым без специальных программ. Markdown широко используется для документации, readme-файлов, форумов, блогов, систем управления контентом и встроенных редакторов (например, в GitHub, GitLab, Reddit, Notion).
¶История
Джон Грубер запустил проект Markdown в 2004 году. Среди соавторов первоначальной спецификации — Аарон Шварц, хотя степень его участия остаётся предметом дискуссий. Грубер создал Markdown как альтернативу сложным языкам разметки вроде HTML и BBCode, стремясь к тому, чтобы форматирование не мешало чтению текста.
Со временем вокруг Markdown сложилось несколько вариантов синтаксиса. Стандартная спецификация Грубера никогда не была формализована через стандартную организацию, что привело к расхождениям в реализациях. В 2014 году была основана CommonMark — инициатива по созданию строгой, однозначной спецификации Markdown. В 2017 году вышла версия CommonMark 0.28, которая стала основой для многих современных редакторов.
¶Синтаксис
Синтаксис Markdown охватывает базовое форматирование текста и структурные элементы.
¶Основное форматирование
| Элемент | Синтаксис | Результат |
|---|---|---|
| Заголовок | # Текст | Заголовок 1 уровня |
| Жирный текст | текст | текст |
| Курсив | текст | текст |
| Зачёркнутый | ~~текст~~ | ~~текст~~ |
| Ссылка | [текст](URL) | Ссылка |
| Изображение | | Изображение |
| Код | ` код ` | Код в строке |
| Цитата | > Текст | Цитата |
¶Структурные элементы
- Нумерованные списки — строки, начинающиеся с
1.,2.и так далее. - Маркированные списки — строки, начинающиеся с
-,*или+. - Разделители — три и более символа
-или*на отдельной строке. - Таблицы — создаются с помощью вертикальных черт
|и разделителей---. - Блоки кода — выделяются тройными обратными кавычками (```), что позволяет сохранять отступы и форматирование.
¶Варианты и расширения
Помимо CommonMark, существуют популярные расширения синтаксиса:
- GitHub Flavored Markdown (GFM) — вариант, используемый на GitHub. Добавляет таблицы, зачёркивание, чек-листы, автоматические ссылки и упоминания.
- Markdown Extra — расширение с поддержкой сносок, определений терминов и вставок PHP.
- MultiMarkdown — расширение с поддержкой метаданных, таблиц и формул.
- LaTeX-формулы — во многих реализациях (например, в Jupyter Notebook, Obsidian) поддерживаются математические выражения в синтаксисе LaTeX.
¶Применение
Markdown применяется в самых разных сферах:
- Документация программного обеспечения — readme-файлы на платформах GitHub и GitLab, техническая документация.
- Блоги и сайты — движки WordPress, Jekyll, Hugo, Hexo поддерживают Markdown как основной или альтернативный формат ввода.
- Заметки и личное планирование — приложения Obsidian, Bear, Notion, Ulysses используют Markdown для хранения заметок в виде обычных текстовых файлов.
- Форумы и комментарии — Reddit, Stack Exchange, Discourse поддерживают Markdown для форматирования сообщений.
- Электронная почта и мессенджеры — некоторые почтовые клиенты и мессенджеры (Slack, Discord) поддерживают элементы Markdown.
¶Преимущества и ограничения
К достоинствам Markdown относятся:
- Простота освоения — базовый синтаксис сводится к нескольким символам.
- Читаемость исходного кода — файл остаётся понятным без рендеринга.
- Портативность — текстовые файлы с расширением
.mdне зависят от конкретного программного обеспечения. - Легкость преобразования — Markdown легко конвертируется в HTML, PDF, DOCX и другие форматы.
К ограничениям относятся:
- Отсутствие единого стандарта (до появления CommonMark) и расхождения между реализациями.
- Невозможность выразить сложную вёрстку без встраивания HTML.
- Ограниченные возможности для таблиц и формул в базовой версии.
¶Инструменты
Существует множество редакторов Markdown: Typora, Mark Text, VS Code (с расширениями), Obsidian, а также онлайн-сервисы Dillinger, StackEdit. Для конвертации используются утилиты Pandoc, markdown-it, marked.
Источники:
- CommonMark Specification
- John Gruber. Markdown Design
- Flanagan D., Matsumoto Y. JavaScript: The Definitive Guide (упоминание Markdown в контексте документации)
