Markdown
Markdown (МФА: [ˈmɑːkdaʊn], произносится маркда́ун) — облегчённый язык разметки, созданный с целью обозначения форматирования в простом тексте, с максимальным сохранением его читаемости человеком, и пригодный для машинного преобразования в языки для продвинутых публикаций (HTML, Rich Text и других).
Общие сведения
| Markdown | |
|---|---|
| Расширение |
. |
| MIME-тип | text/markdown[5] |
| Разработчик | Джон Грубер |
| Опубликован | 19 марта 2004[2][3] |
| Последний выпуск | 17 декабря 2004 |
| Тип формата | Язык разметки |
| Открытый формат? | да[4] |
| Сайт | daringfireball.net/proje… |
История
Первоначально создан в 2004 году Джоном Грубером и Аароном Шварцем. Многие идеи языка были позаимствованы из существующих соглашений по разметке текста в электронных письмах. Реализации языка Markdown преобразуют текст в формате Markdown в валидный, правильно построенный XHTML и заменяют левые угловые скобки («<») и амперсанды («&») на соответствующие коды сущностей. Первой реализацией Markdown стала написанная Грубером реализация на Perl, однако спустя некоторое время появилось множество реализаций от сторонних разработчиков (см. ниже). Реализация на Perl распространяется по лицензии типа BSD. Реализации Markdown на различных языках программирования включены (или доступны в качестве плагина) во многие системы управления содержимым.
Примеры синтаксиса
Ниже приведены примеры использования Markdown, однако это далеко не полное руководство. Полное описание языка может быть найдено на официальном сайте[6]. Символы, которые обычно рассматриваются в Markdown как специальные, могут быть экранированы с помощью обратного слеша. Например, последовательность «\*» выведет символ «*», а не будет являться признаком начала выделенного текста. Кроме того, Markdown не преобразует текст внутри «сырых» блоков XHTML. Таким образом, в Markdown-документ можно включать секции XHTML, заключив их предварительно в теги уровня блока.
*выделение* (например, курсив)
**сильное выделение** (например, полужирное начертание)
Элементы кода могут быть внутри строки (inline) либо многострочными блоками.
Внутри строки код выделяется символом "`" (обратный апостроф).
Пример кода внутри строки (inline) `Hello world!`
Многострочный блок кода обозначается отступом из 4 пробелов или одного Tab.
Ниже начинается многострочный блок кода
<!doctype html>
<html>
<head>
<!-- Заголовок документа -->
</head>
<body>
<!-- Тело документа -->
</body>
</html>
Блок кода завершился
необходимо сделать ~~одну~~ другую вещь
* элемент маркированного списка
- ещё один элемент ненумерованного списка
+ буллеты элементов могут быть разными
1. Элемент нумерованного списка
2. Элемент №2 того же списка
9. Элемент №3 списка — элементы нумеруются по порядку, цифра в начале строки не имеет значения
Создание заголовков производится путём помещения знака решетки перед текстом заголовка. Количество знаков «#» соответствует уровню заголовка. HTML предоставляет 6 уровней заголовков.
# Заголовок первого уровня
...
### Заголовок третьего уровня
...
###### Заголовок шестого уровня
Первые два уровня заголовка также имеют альтернативный синтаксис:
Заголовок первого уровня
========================
Заголовок второго уровня
------------------------
> Данный текст будет заключен в HTML-теги <blockquote></blockquote>
[Текст ссылки](http://example.com/ "Необязательный заголовок ссылки")
альтернативный способ задавать ссылки если есть повторения
Где-то среди текста встречается [текст ссылки][example].
Также ссылка повторяется [пример адреса][example].
Ссылка на [второй][foo] также [Bar][] ресурсы.
[example]: http://example.com/ "Необязательный заголовок ссылки"
[foo]: http://example.net/ 'Необязательный заголовок ссылки'
[bar]: http://example.edu/ (Необязательный заголовок ссылки)

Реализации Markdown
- C#[7][8]
- C[9][10][11][12]
- ColdFusion[13]
- Common Lisp[14]
- Go[15]
- Haskell[16]
- Java[17][18]
- JavaScript[19]
- Kotlin[20][21]
- Lua[22]
- newLISP[23]
- Perl[24]
- PHP[25]
- Python[26][27]
- Ruby[28][29]
- Scala[30]
- Tcl[31]
Приведённые ниже приложения реализуют Markdown, расширяя его синтаксис дополнительной функциональностью:
- MultiMarkdown (C)[32]
- Text::MultiMarkdown (Perl) модуль, реализующий расширение MultiMarkdown[33]
- PHP Markdown Extra[34]
- python-markdown2 (Поддерживает некоторые расширения PHP Markdown)[27]
- python-markdown (Имеет систему расширений для добавления нового синтаксиса)[26]
- Markout (Java)[35]
- Pegdown (Java)[18]
- Maruku (Ruby)[29]
- Pandoc (Haskell)[16][36]
- из HTML в Markdown
- html2text.py (написано на Python)[39]
- Markdownify (на PHP)[40]
- Make.text — букмарклет, преобразующий любую веб-страницу в Markdown[41]
- XHTML-to-Markdown XSLT (XSLT-таблица стилей, работает только с XHTML)[42]
- Pandoc — написанная на Haskell библиотека по преобразованию различных форматов, поддерживает несколько диалектов Markdown (
markdown— диалект от pandoc,markdown_strict— оригинальный Markdown без расширений,markdown_phpextra— диалект от PHP,markdown_github— диалект от github) может преобразовывать из и в Markdown, HTML, reStructuredText, LaTeX, и другие.[16]
- Другие форматы в Markdown
- odt2txt (написанный на Python скрипт для преобразования файлов из формата OpenDocument в Markdown)[43]
- word_markdown_macro (макрос Microsoft Word, преобразующий некоторую часть форматирования Word в Markdown)[44]
- Markdown tool (написанный на Python скрипт для загрузки документов Markdown вместе с изображениями)[45]
- Writage — плагин для Microsoft Word, позволяющий конвертировать DOCX документы в формат Markdown и наоборот.
- Вики:
- Блоги:
- Tumblr — изначально отключён, но можно использовать, включив в настройках.
- scriptogr.am
- CMS:
- Веб-фреймворки:
- Ruby on Rails — требуется установка BlueCloth, Maruku[51]
- Yii — виджет CMarkdown, входит в стандартную поставку фреймворка
- Webasyst — входит в стандартную поставку PHP-фреймфорка в виде плагина к бесплатному приложению «Блог»
- Symfony — требуется установка бандла KnpMarkdownBundle
- Социальные приложения:
- Discord — приложение для публичного общения.
- Steemit — социальная сеть, основанная на блокчейне.
- Telegram — популярный кросс-платформенный мессенджер.
- WhatsApp — популярный кросс-платформенный мессенджер.
- Element.io (бывший Riot.im) — защищённый кросс-платформенный мессенджер, работающий по федеративному протоколу Matrix.
Поддержка текстовыми редакторами
- Универсальные редакторы: TextMate, BBEdit (с версии 8.6), Vim (с помощью специального пользовательского режима[52], написанного Беном Вильямсом), Emacs(с помощью специального пользовательского режима[53], написанного Джейсоном Блевинсом), TextWrangler, Smultron, Sublime Text, Geany, Atom, Visual Studio Code.
- Редакторы для блогов: Ecto[54], MarsEdit
- Плагины для редактора среды Eclipse от ThinkTank Mathematics[55]
- Плагины для текстового редактора gedit[56]
- Текстовый редактор iA Writer в версии для Mac OS[57] и Android[58].
- Текстовый редактор Markor для Android[59].
- Текстовый редактор ReText для GNU/Linux[60]
- WYSIWYM-редактор Texts для Windows/Mac OS[61]
- WYSIWYM-редактор Typora для Windows, GNU/Linux и Mac OS [62]