Перейти до вмісту

Markdown

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
Markdown
Розширення файлу:.md, .markdown
MIME-тип:text/markdown
Узагальнений ідентифікатор типу:net.daringfireball.markdown
Розробник:Джон Грубер[en]
Тип ліцензії:Ліцензія BSD
Рік випуску:19 березня 2004; 20 років тому (2004-03-19)
Остання версія:1.0.1
Дата випуску останньої версії:17 грудня 2004; 20 років тому (2004-12-17)
Тип формату:Мова розмітки даних
Розширений до: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](http://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 Extra - це легка мова розмітки на основі Markdown реалізована в PHP (початково), Python та Ruby. Вона містить функції недоступні в звичайному синтаксисі Markdown. Markdown Extra підтримується системами керування вмістом, наприклад Drupal,[16] TYPO3[17] та MediaWiki.[18]

Додає наступні функції до Markdown:

  • Markdown всередині блоків HTML
  • Елементи з атрибутами id/class
  • "обгороджені" блоки коду (англ. Fenced code blocks)
  • Таблиці[19]
  • Списки означень (dl)
  • Зноски
  • Абревіатури

Див. також

[ред. | ред. код]

Коментарі

[ред. | ред. код]
  1. В оригіналі — sounding board

Посилання

[ред. | ред. код]
  1. GitHub Flavored Markdown. GitHub. Архів оригіналу за 5 лютого 2019. Процитовано 29 березня 2013.
  2. Приклад Markdown у Reddit. Або, іншими словами, як зробити гламурне форматування ваших коментарів. Reddit. Архів оригіналу за 27 серпня 2013. Процитовано 29 березня 2013.
  3. Допомога з Markdown. Stack Overflow. Архів оригіналу за 27 серпня 2013. Процитовано 29 березня 2013.
  4. 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.
  5. а б Daring Fireball – Markdown – Syntax. 13 червня 2013.
  6. @gruber (12 червня 2016). I should write about it, but it’s painful. More or less: Aaron was my sounding board, my muse (Твіт) — через Твіттер.
  7. а б Markdown 1.0.1 readme source code Daring Fireball – Markdown. 17 грудня 2004. Архів оригіналу за 2 квітня 2004.
  8. Un naufragio personal: The Grutatxt markup. triptico.com. Процитовано 30 червня 2022. [Архівовано 2022-06-30 у Wayback Machine.]
  9. EtText: Documentation: Using EtText. ettext.taint.org. Процитовано 30 червня 2022.
  10. Повний синтаксис Markdown. Архів оригіналу за 22 лютого 2011. Процитовано 7 квітня 2013.
  11. Project Jupyter. www.jupyter.org. Архів оригіналу за 30 січня 2021. Процитовано 30 січня 2021.
  12. Google Colaboratory. colab.research.google.com (укр.). Архів оригіналу за 2 лютого 2021. Процитовано 30 січня 2021.
  13. Архівована копія. Архів оригіналу за 26 липня 2017. Процитовано 7 квітня 2013.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  14. http://plugins.jetbrains.com/plugin?id=5970. {{cite web}}: Пропущений або порожній |title= (довідка) [Архівовано 2014-04-27 у Wayback Machine.]
  15. Архівована копія. Архів оригіналу за 10 вересня 2013. Процитовано 7 квітня 2013.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  16. Markdown editor for BUEditor. Архів оригіналу за 17 вересня 2020. Процитовано 24 лютого 2017. [Архівовано 2020-09-17 у Wayback Machine.]
  17. Markdown for TYPO3. Архів оригіналу за 14 вересня 2014. Процитовано 24 лютого 2017.
  18. MarkdownExtraParser for MediaWiki. Архів оригіналу за 13 липня 2017. Процитовано 24 лютого 2017.
  19. PHP Markdown Extra - Tables. Архів оригіналу за 1 липня 2012. Процитовано 24 лютого 2017.

Зовнішні посилання

[ред. | ред. код]