Язык разметки Markdown создан Джоном Грубером (англ. John Gruber) и Аароном Шварцем (англ. Aaron H. Swartz) в 2004 году. Авторы задавались целью создать максимально удобочитаемый и удобный в публикации облегчённый язык разметки, пригодный для последующего преобразования в HTML (а также и в другие форматы).
```markdown
<!-- Markdown является надмножеством HTML, поэтому любой HTML-файл является
валидным документом Markdown, что позволяет использовать напрямую любые элементы
HTML-разметки, такие, например, как этот комментарии.
Встроенные в документ HTML-элементы не затрагиваются парсером Markdown
и попадают в итоговый HTML без изменений. Однако, следует понимать,
что эта жа особенность не позволяет использовать разметку Markdown внутри
HTML-элементов -->
<!-- Ещё одна особенность формата Markdown состоит в том, что поддерживаемые
возможности разметки зависят от конкретной реализации парсера. В данном
руководстве возможности, поддерживаемые лишь определёнными парсерами
сопровождаются соответствующими примечаниями. -->
<!-- Заголовки -->
<!-- HTML-элементы от <h1> до <h6> размечаются очень просто:
текст, который должен стать заголовком, предваряется соответствующим количеством
символов "#": -->
# Это заголовок h1
## Это заголовок h2
### Это заголовок h3
#### Это заголовок h4
##### Это заголовок h5
###### Это заголовок h6
<!-- Markdown позволяет размечать заголовки <h1> и <h2> ещё одним способом: -->
Это заголовок h1
================
А это заголовок h2
------------------
<!-- Простейшая стилизация текста -->
<!-- Текст легко сделать полужирным и/или курсивным: -->
*Этот текст будет выведен курсивом.*
_Также как этот._
**А этот текст будет полужирным.**
__И этот тоже.__
***Полужирный курсив.***
**_И тут!_**
*__И даже здесь!__*
<!--В Github Flavored Markdown (версии Markdown, использующейся в Github
для рендеринга Markdown-документов) текст можно сделать зачёркнутым: -->
~~Зачёркнутый текст.~~
<!-- Параграфами являются любые строки, следующие друг за другом.
Разделяются же параграфы - одной или несколькими пустыми строками: -->
Это параграф. Всё предельно просто.
А тут уже параграф №2.
Эта строка всё ещё относится к параграфу №2!
О, а вот это уже параграф №3!
<!-- Для втавки принудительных переносов можно использовать HTML-тэг <br/>: -->
Принудительный <br/> перенос!
<!-- Цитаты размечаются с помощью символа ">": -->
> Это цитата. В цитатах можно
> принудительно переносить строки, вставляя ">" в начало каждой следующей строки. А можно просто оставлять достаточно длинными, и такие длинные строки будут перенесены автоматически.
> Разницы между этими двумя подходами к переносу строк нет, коль скоро
> каждая строка начинается с символа ">"
> А ещё цитаты могут быть многоуровневыми:
>> как здесь
>>> и здесь :)
> Неплохо?
<!-- Списки -->
<!-- Маркированные списки размечаются вставкой в начало каждого элемента
одного из символов "*", "+" и "-":
(символ должен быть одним и тем же для всех элементов) -->
* Список,
* Размеченный
* "Звёздочками"
либо
+ Список,
+ Размеченный
+ "Плюсами"
либо
- Список,
- Размеченный
- "Дефисами"
<!--В нумерованных списках каждая строка начинается
с числа и точки вслед за ним: -->
1. Первый элемент
2. Второй элемент
3. Третий элемент
<!-- Заметьте, нумеровать элементы корректно необязательно. Достаточно указать
любое число в начале каждого элемента и рендер пронумерует элементы сам!
Правда, злоупотреблять этим не стоит :) -->
1. Первый элемент
1. Второй элемент
1. Третий элемент
<!-- (Этот список будет отрендерен так же, как и предыдущий!) -->
<!-- Списки могут быть вложенными: -->
1. Введение
2. Начало работы
3. Примеры использования
* Простые
* Сложные
4. Заключение
<!-- Блоки с исходным кодом -->
<!-- Фрагменты исходного кода выделяются очень просто - каждая строка блока должна иметь отступ в четыре пробела либо в один символ табуляции -->
Это код,
причём - многострочный
<!-- Дополнительные отступы в коде следует делать с помощью четырёх пробелов: -->
my_array.each do |item|
puts item
end
<!-- Иногда бывает нужно вставить фрагмент кода прямо в строку текста,
не выделяя код в блок. Для этого фрагменты кода нужно обрамлять
символами "`": -->
Например, можно выделить имя функции `go_to()` прямо посреди текста.
<!-- Github Flavored Markdown позволяет указать для блока кода синтаксис оного.
В этом случае синтаксис внутри блока будет подсвечен. Пример: -->
\`\`\`ruby <!-- Только нужно будет убрать backslashes, оставив лишь "```ruby" -->
def foobar
puts "Hello world!"
end
\`\`\` <!-- И здесь тоже backslashes нужно убрать, т.е. оставить "```" -->