Markdown
Розширення файлу: | .md, .markdown |
---|---|
MIME-тип: | text/markdown |
Узагальнений ідентифікатор типу: | net.daringfireball.markdown |
Розробник: | Джон Грубер[en] |
Тип ліцензії: | Ліцензія BSD |
Рік випуску: | 19 березня 2004 |
Остання версія: | 1.0.1 |
Дата випуску останньої версії: | 17 грудня 2004 |
Тип формату: | Мова розмітки даних |
Розширений до: | MultiMarkdown, Markdown Extra, CommonMark |
Сайт: | daringfireball.net/projects/markdown/ |
Markdown — полегшена мова розмітки даних, яку створено з ухилом на прочитність та зручність у публікації з подальшим перетворенням її на structurally valid XHTML або HTML. Чимало ідей для мови позичено з існуючих домовленостей у розмітці тексту в електронних листах. Першу реалізацію Markdown написано Грубером на Perl, але з часом з'явились багато реалізацій від сторонніх розробників (див. нижче). Реалізація на Perl розповсюджується за ліцензією BSD. Реалізації Markdown різними мовами програмування включені (або наявні як плаґіни) у численні системи керування вмістом.
Такі сайти, як GitHub, Reddit та Stack Overflow використовують Markdown для полегшення обговорень між користувачами[1][2][3].
Markdown передували існуючі способи розмітки простого тексту, прийняті для електронної пошти та постів Usenet,[4] реалізовані у мовах розмітки setext[en] (прибл. 1992), Textile (бл. 2002), та reStructuredText (бл. 2002).[5]
У 2002 році Аарон Шварц створив atx та називав її «справжнім структурованим текстовим форматом» (англ. the true structured text format). Грубер створив мову розмітки Markdown у 2004, а Аарон Шварц був його «лакмусовим папірцем»[6][a]. Метою мови було дати людям формат тексту, який "легко читається і легко пишеться, з можливістю перетворення у валідний XHTML (або HTML)"[7].
Ключовим принципом дизайну Markdown була читабельність, збереження можливості читати текст як є, і щоб він при цьому не виглядав як розмічений тегами або іншими інструкціями форматування,[5] Однак читабельність підкреслюється понад усе. Документ, відформатований у Markdown, повинен публікуватися як є, як звичайний текст, без ознак того, що він був розмічений тегами або інструкціями форматування. Хоча на синтаксис Markdown вплинуло кілька існуючих фільтрів перетворення тексту в HTML, зокрема Setext, atx, Textile, reStructuredText, Grutatext[8], and EtText[9] — єдиним найбільшим джерелом натхнення для синтаксису Markdown є формат звичайної електронної пошти"}}, на відміну від відформатованого за допомогою «важчих» мов розмітки тексту, таких як RTF, HTML або навіть вікірозмітка (кожна з яких має очевидні вбудовані теги та інструкції з форматування, які можуть зробити текст складнішим для читання).
Грубер написав скрипт на Perl, Markdown.pl
, що конвертує текст з розміткою Markdown у валідний XHTML чи HTML и замінює кутові дужки (<
, >
) та амперсанди (&
) на відповідні їм символьні сутності. Він може працювати і як самостійний скрипт, і як плагін для Blosxom[en] і як фільтр для BBEdit[en].[7]
Цей опис не є вичерпним переліком синтаксису Markdown, та у багатьох випадках для досягнення певного ефекту існує декілька стилів синтаксису[10]. Літери, які Markdown однозначно визначає як команди форматування, можуть бути екрановані бекслешем; наприклад, вираз '\*'
виведе зірочку, а не означатиме початку проміжку виділеного тексту. Також Markdown не перетворює текст із «сирим» XHTML-елементом блокового рівня. Це дозволяє включати секції XHTML у джерело Markdown документа, обернувши їх в XHTML теги блокового рівня.
HTML-заголовки створюються розміщенням кількох символів решітки перед текстом заголовка відповідно до бажаного рівня (HTML підтримує 6 рівнів заголовіків), наприклад:
# заголовок першого рівня
#### заголовок четвертого рівня
Перші два рівні заголовків також мають альтернативний синтаксис:
Заголовок першого рівня
=======================
Заголовок другого рівня
-----------------------
Параграф є одним чи декількома послідовними рядками тексту, які розділяються одним чи декількома порожніми рядками. Звичайні параграфи не повинні мати відступи або табуляцію:
Це параграф. Він містить два речення.
Це інший параграф. Він також містить два речення.
* Пункт в маркованому (ненумерованому) списку
* Підпункт, відділений 4 пробілами
* Інший пункт в маркованому списку
1. Пункт в нумерованому списку
1.1. Підпункт, відділений 4 пробілами
2. Інший пункт в нумерованому списку
*emphasis* або _emphasis_ (тобто нахил)
**сильне виділення** або __сильне виділення__ (тобто напівжирний)
Для включення коду (відформатованого в моноширинний шрифт), ви можете або оточити вбудований код зворотніми лапками (`
), наприклад, `деякий код`
, або відділити декілька рядків коду щонайменше чотирма пробілами, як тут:
перший рядок коду
другий рядок коду
третій рядок коду
Останній варіант за допомогою пробілів дозволяє зберігати і показувати синтаксис Markdown.
Якщо ви хочете вставити закінчення рядка Markdown, закінчіть рядок з щонайменше двома пробілами.
Наприклад:
def show_results space space
end
Результат:
def show_results
end
Ви також можете використати два порожніх рядки, наприклад:
sentence A
sentence B
Результат:
sentence A
sentence B
> "Весь цей абзац тексту буде поміщений у HTML blockquote елемент.
Blockquote елементи змінюються в залежності від потреби/пристрою виводу.
Ви можете обернути довільний текст за власним смаком, та воно перетвориться
на єдиний blockquote елемент."
Приклад вище перетвориться на такий HTML:
<blockquote><p>Весь цей абзац тексту буде поміщений у HTML blockquote елемент.
Blockquote елементи змінюються в залежності від потреби/пристрою виводу.
Ви можете обернути довільний текст за власним смаком, та воно перетвориться
на єдиний blockquote елемент.</p></blockquote>
Посилання можуть бути вбудованими:
[текст посилання](адреса посилання)
Наприклад: [Markdown](https://en.wikipedia.com/wiki/Markdown)
Також посилання можуть бути розміщені у примітках поза параграфом, наприклад:
[текст посилання][linkref]
створить посилання, якщо додати примітку (як показано нижче) поза параграфом (або в кінці документу):
[linkref]: link.address.here "link title here"
Зображення мають схожий із посиланнями синтаксис з попереднім знаком оклику.
![Alt text](/path/to/img.jpg)
Або:
![Alt text](/path/to/img.jpg "Optional title")
Як і посилання, зображення також мають примітковий стиль синтаксису
[Alt text][id]
з пізнім посиланням в документі, яке визначає URL розміщення.
[id]: url/to/image "Optional title attribute"
Горизонтальні лінії задаються розміщенням трьох або більшим дефісів, зірочок, або підкресленням в рядку самостійно. Ви можете використовувати пробіли між дефісами чи зірочками. Кожен з наведених нижче рядків створить горизонтальну лінію:
* * *
***
*****
- - -
---------------------------------------
Хоча Markdown є полегшеною мовою розмітки яку легко читати та редагувати звичайними текстовими редакторами, існують спеціально розроблені редактори, які дозволяють попередньо переглядати зі стилями. Є безліч таких редакторів, які наявні для всіх основних платформ. Існує плаґін підсвітки синтаксису для Markdown, вбудований у gedit та Vim. Текстовий редактор Atom має підсвітку синтаксису Markdown, є також можливість легко встановлювати пакунки для розширення функціоналу мови: наприклад, пакунок markdown-preview-plus дозволяє відтворювати також синтаксис LaTeX, а markdown-writer допомагає з форматуванням списків, таблиць тощо.
Markdown із LaTeX також використовуються в IPython-записниках в Jupyter та Google Colaboratory для форматування тексту. Ці вебоболонки для IPython можуть використовуватись як текстові редактори, оскільки там є можливість створювати блоки тексту окремо від блоків коду та можливість завантажувати сторінку, наприклад, у PDF. [11][12]
Реалізації Markdown існують для багатьох різних фреймворків, платформ та мов.
- Система документації джерельних текстів Doxygen підтримує Markdown з додатковими можливостями[джерело?].
- RStudio, IDE для R підтримує C++ обгортку функцій[en] для реалізації markdown Sundown[13].
- IntelliJ IDEA, IDE для Java, містить плаґін для підтримки Markdown[14][15].
- Існують формат і програма MultiMarkdown з ширшим синтаксисом та можливостями експорту, ніж в традиційній Markdown.
Існує багато іншого відкритого програмного забезпечення реалізації Markdown, доступного в мережі.
Markdown Extra - це легка мова розмітки на основі Markdown реалізована в PHP (початково), Python та Ruby. Вона містить функції недоступні в звичайному синтаксисі Markdown. Markdown Extra підтримується системами керування вмістом, наприклад Drupal,[16] TYPO3[17] та MediaWiki.[18]
Додає наступні функції до Markdown:
- Markdown всередині блоків HTML
- Елементи з атрибутами id/class
- "обгороджені" блоки коду (англ. Fenced code blocks)
- Таблиці[19]
- Списки означень (dl)
- Зноски
- Абревіатури
- Розширення Markdown
- Org-mode має подібну полегшену розмітку.
- txt2tags, інша полегшена мова розмітки.
- Setext, стара полегшена мова розмітки(1992).
- ↑ В оригіналі — sounding board
- ↑ GitHub Flavored Markdown. GitHub. Архів оригіналу за 5 лютого 2019. Процитовано 29 березня 2013.
- ↑ Приклад Markdown у Reddit. Або, іншими словами, як зробити гламурне форматування ваших коментарів. Reddit. Архів оригіналу за 27 серпня 2013. Процитовано 29 березня 2013.
- ↑ Допомога з Markdown. Stack Overflow. Архів оригіналу за 27 серпня 2013. Процитовано 29 березня 2013.
- ↑ Gilbertson, Scott (5 жовтня 2014). Markdown throwdown: What happens when FOSS software gets corporate backing?. Ars Technica. Архів оригіналу за 14 листопада 2020. Процитовано 14 червня 2017.
CommonMark fork could end up better for users... but original creators seem to disagree.
- ↑ а б Daring Fireball – Markdown – Syntax. 13 червня 2013.
- ↑ @gruber (12 червня 2016). I should write about it, but it’s painful. More or less: Aaron was my sounding board, my muse (Твіт) — через Твіттер.
- ↑ а б Markdown 1.0.1 readme source code Daring Fireball – Markdown. 17 грудня 2004. Архів оригіналу за 2 квітня 2004.
- ↑ Un naufragio personal: The Grutatxt markup. triptico.com. Процитовано 30 червня 2022.
- ↑ EtText: Documentation: Using EtText. ettext.taint.org. Процитовано 30 червня 2022.
- ↑ Повний синтаксис Markdown. Архів оригіналу за 22 лютого 2011. Процитовано 7 квітня 2013.
- ↑ Project Jupyter. www.jupyter.org. Архів оригіналу за 30 січня 2021. Процитовано 30 січня 2021.
- ↑ Google Colaboratory. colab.research.google.com (укр.). Архів оригіналу за 2 лютого 2021. Процитовано 30 січня 2021.
- ↑ Архівована копія. Архів оригіналу за 26 липня 2017. Процитовано 7 квітня 2013.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ https://plugins.jetbrains.com/plugin?id=5970.
{{cite web}}
: Пропущений або порожній|title=
(довідка) - ↑ Архівована копія. Архів оригіналу за 10 вересня 2013. Процитовано 7 квітня 2013.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Markdown editor for BUEditor. Архів оригіналу за 17 вересня 2020. Процитовано 24 лютого 2017.
- ↑ Markdown for TYPO3. Архів оригіналу за 14 вересня 2014. Процитовано 24 лютого 2017.
- ↑ MarkdownExtraParser for MediaWiki. Архів оригіналу за 13 липня 2017. Процитовано 24 лютого 2017.
- ↑ PHP Markdown Extra - Tables. Архів оригіналу за 1 липня 2012. Процитовано 24 лютого 2017.
- Official Markdown project at Daring Fireball [Архівовано 2 квітня 2004 у Wayback Machine.]
- Огляд Markdown редакторів для OS X (Raywenderlich) [Архівовано 3 червня 2016 у Wayback Machine.](англ.)