Markdown - это облегчённый язык разметки для форматирования текстовых документов. Markdown-файлы без потерь преобразуются в другие форматы (например, HTML и PDF), открываются в любом текстовом редакторе и будут понятны любому человеку даже в виде исходного кода.
Каждый раз, открывая интернет-страницу или текстовый документ, вы сталкиваетесь с разметкой. Например, текст этой статьи выровнен по левому краю, набран шрифтом Open Sans, отдельные слова в нём выделены полужирным, а между абзацами интервал больше, чем между строками. Чтобы ваш браузер понимал, как ему правильно отобразить страницу, используются языки разметки — в данном случае HTML. В таких языках с помощью специальных меток, или тегов, указывается, какие элементы страницы каким образом выводить на экран.
Например, вот так в HTML текст выделяют полужирным:
<b>Жирный текст</b>
Вы можете взглянуть на разметку любого сайта сами, открыв исходный код страницы. Для этого нажмите Ctrl + U (для Windows) или Command + Option + U (для macOS). Ещё есть универсальный способ: добавить перед адресом сайта магическое view-source.
Markdown создали Джон Грубер и Аарон Шварц в 2004 году. Название языка — игра слов. Разметка по-английски называется markup, что можно дословно перевести как «отметка вверх». Markdown, соответственно, — «отметка вниз». В процессе работы Грубер и Шварц вдохновлялись соглашениями по разметке текста в электронных письмах. Они хотели сделать язык, который было бы удобно читать даже в виде исходного кода. Также Грубер написал программу на Perl, которая преобразовывала Markdown-файлы в HTML.
Markdown — не замена HTML и даже не близок к этому. Его синтаксис очень аскетичен и покрывает лишь небольшое подмножество HTML-тегов. Его идея не в том, чтобы создать синтаксис, облегчающий расстановку HTML-тегов. На мой взгляд, их уже и так легко расставлять. Идея Markdown в том, чтобы было проще читать, писать и редактировать тексты. HTML создан для публикации, а Markdown — для написания. Таким образом, синтаксис Markdown решает только те задачи, которые возникают и могут быть выражены исключительно в форме простого текста.
Чтобы оформить текст на Markdown, нужно расставить по нему специальные символы, указатели. Затем конвертер или редактор переведёт файл в нужный формат — и у вас в руках окажется готовый симпатичный документ.
Сам синтаксис прост и лаконичен. Вот несколько базовых правил.
Первоначальным Markdown, который появился в 2004 году, сейчас почти никто не пользуется. Разные платформы быстро стали создавать собственные реализации Markdown.
В какой-то момент эти реализации стали вступать в противоречие друг с другом. Из-за мелких различий в синтаксисе текст, оформленный согласно одной реализации, мог по-другому отображаться в другой.
Так продолжалось, пока в 2014 году «группа поклонников Markdown» не выпустила спецификацию CommonMark. В группу входили сотрудники разных компаний, использующих Markdown на своих платформах: Pandoc, Meteor, GitHub, Reddit, Stack Overflow, Discourse.
В спецификации они не только более детально прописали синтаксис, но и добавили новые функции. Например, разрешили использовать некоторые HTML-теги внутри Markdown-разметки, добавили новые способы переноса строк, оформления ссылок и блоков кода.
На основе CommonMark создано большинство диалектов языка Markdown — они в целом соответствуют стандарту, но расширяют его и добавляют собственные функции. Такие диалекты есть у Discourse, GitHub, GitLab, Reddit, Qt, Stack Overflow, Swift, Microsoft Learn.
Есть и другие версии Markdown, которые создавались независимо от CommonMark и не наследуются от него. Вот некоторые из них:
R Markdown — написан для создания динамических страниц, кроме R поддерживает языки Python, C++, Julia и SQL.
Markdown — облегчённый язык разметки, при помощи которого оформляют текстовые документы. Он конвертируется в HTML и другие форматы, но сделан так, чтобы его было удобно читать даже в виде исходного кода.
Markdown часто используют программисты для написания технической документации, но сфера его применения гораздо шире.
У Markdown есть много реализаций и диалектов. Разные платформы расширяют инструментарий языка для своих нужд.