Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Markdown - это легкий язык разметки для создания форматированного текста с помощью текстового редактора . Джон Грубер и Аарон Шварц создали Markdown в 2004 году как язык разметки, который привлекает читателей в форме исходного кода. [9] Markdown широко используется в блогах , мгновенных сообщениях , онлайн-форумах , программном обеспечении для совместной работы , на страницах документации и в файлах readme .

Поскольку первоначальное описание Markdown [10] содержало двусмысленность и оставшиеся без ответа вопросы, реализации, появившиеся на протяжении многих лет, имеют тонкие различия, и многие из них поставляются с расширениями синтаксиса.

История [ править ]

В 2002 году Аарон Шварц создал atx , «настоящий структурированный текстовый формат». Затем Шварц и Джон Грубер вместе работали над созданием языка Markdown в 2004 году [2] [3] с целью дать людям возможность «писать, используя простой для чтения и записи простой текстовый формат, при желании преобразовать его. в структурно допустимый XHTML (или HTML ) ». [4]

Его основная цель дизайна - удобочитаемость - чтобы язык можно было читать как есть, не создавая впечатление, что он был размечен тегами или инструкциями по форматированию [9], в отличие от текста, отформатированного с помощью языка разметки , такого как Rich Text Format (RTF) или HTML, в котором есть очевидные теги и инструкции по форматированию. С этой целью его основным источником вдохновения являются существующие соглашения о разметке обычного текста в электронной почте , хотя он также опирается на более ранние языки разметки, в частности, setext , Textile и reStructuredText . [9]

Gruber написал Perl скрипт, Markdown.pl, который преобразует размеченный ввод текста действительно, хорошо сформированный XHTML или HTML и угловые скобки заменяют « <» « >» и амперсанды « &» с их соответствующими ссылками мнемоники . Он может выступать в роли автономного скрипта, плагина для Blosxom или Movable Type или текстового фильтра для BBEdit . [4]

Стандартизация [ править ]

Markdown характеризуется неформальной спецификацией [11] и эталонной реализацией для преобразования в HTML. Со временем появилось множество реализаций Markdown. Люди разрабатывали их в основном из-за необходимости в дополнительных функциях поверх базового синтаксиса, таких как таблицы, сноски, списки определений (технически списки описания HTML) и разметка внутри блоков HTML. Поведение некоторых из них отличается от эталонной реализации. В то же время привлек внимание ряд двусмысленностей в неформальной спецификации. [12] Эти проблемы стимулировали создание таких инструментов, как Babelmark [13] [14] для сравнения результатов различных реализаций, [15]и усилия некоторых разработчиков парсеров Markdown по стандартизации. Однако Грубер утверждал, что полная стандартизация будет ошибкой: «У разных сайтов (и людей) разные потребности. Ни один синтаксис не сделает всех счастливыми». [16]

В марте 2016 года были опубликованы два соответствующих информационных RFC в Интернете :

  • RFC 7763 представил тип MIMEtext/markdown с исходным вариантом.
  • RFC 7764 обсудили и зарегистрирован варианты MultiMarkdown , GitHub ароматизированный Markdown (GFM), Pandoc , CommonMark и Markdown Extra среди других. [17]

CommonMark [ править ]

С 2012 года группа людей, включая Джеффа Этвуда и Джона Макфарлейна , начала то, что Этвуд охарактеризовал как усилия по стандартизации. [20] Веб-сайт сообщества теперь направлен на «документирование различных инструментов и ресурсов, доступных авторам и разработчикам документов, а также разработчикам различных реализаций Markdown». [21] В сентябре 2014 года Грубер возразил против использования «Markdown» в названии этой попытки, и он был переименован в новый диалект под названием CommonMark. [22] [23] CommonMark.org опубликовал несколько версий спецификации, эталонной реализации и набора тестов, а также «[планирует] объявить окончательную версию 1.0 спецификации и набора тестов в 2019 году». [24]С тех пор не было выпущено ни одной спецификации 1.0, поскольку основные проблемы все еще остаются нерешенными. [25] Тем не менее, следующие сайты и проекты приняли CommonMark: Discourse, GitHub, GitLab, Reddit, Qt, Stack Exchange (Stack Overflow) и Swift.

Варианты [ править ]

Такие сайты, как GitHub , Bitbucket , Reddit , Diaspora , Stack Exchange , OpenStreetMap и SourceForge, используют варианты Markdown для облегчения обсуждения между пользователями. [26] [27] [28] [29]

GitHub Flavored Markdown [ править ]

В 2017 году GitHub выпустил официальную спецификацию своей GitHub Flavored Markdown (GFM), основанную на CommonMark. [26] Это строгий надмножество CommonMark, точно соответствующее его спецификации, за исключением таблиц, зачеркивания, автосвязок и списков задач, которые GFM добавляет в качестве расширений. [30] GitHub также соответствующим образом изменил парсер, используемый на своих сайтах, что потребовало изменения некоторых документов. Например, GFM теперь требует, чтобы символ решетки, который создает заголовок, отделялся от текста заголовка пробелом.

Markdown Extra [ править ]

Markdown Extra - это легкий язык разметки, основанный на Markdown, реализованном в PHP (изначально), Python и Ruby . [31] Он добавляет функции, недоступные при использовании простого синтаксиса Markdown. Markdown Extra поддерживается в некоторых системах управления контентом, таких как, например, Drupal [32] и TYPO3 . [33]

Markdown Extra добавляет в Markdown следующие функции:

  • Разметка Markdown внутри блоков HTML
  • Элементы с атрибутом id / class
  • «Изолированные блоки кода», охватывающие несколько строк кода.
  • Таблицы [34]
  • Списки определений
  • Сноски
  • Сокращения

Пример [ править ]

Реализации [ править ]

Реализации Markdown доступны для более чем дюжины языков программирования; кроме того, многие платформы и фреймворки поддерживают Markdown. [35] Например, плагины Markdown существуют для всех основных платформ для ведения блогов. [36]

Хотя Markdown - это минимальный язык разметки, который читается и редактируется с помощью обычного текстового редактора, существуют специально разработанные редакторы, которые предварительно просматривают файлы со стилями, которые доступны для всех основных платформ. Многие редакторы текста и кода общего назначения имеют встроенные плагины для подсветки синтаксиса для Markdown или доступные для дополнительной загрузки. Редакторы могут иметь параллельное окно предварительного просмотра или отображать код непосредственно в режиме WYSIWYG .

  • JotterPad - онлайн-редактор WYSIWYG, поддерживающий Markdown и fountain [37]
  • Doxygen - генератор документации исходного кода, который поддерживает Markdown с дополнительными функциями [38]
  • RStudio - IDE для R . Он предоставляет функцию- оболочку C ++ для варианта уценки, называемого sundown [39]
  • GitHub ароматизированные уценки (GFM) игнорируют подчеркивания в словах, и добавляют подсветку синтаксиса , списки задач , [40] и таблицы [26]
  • Скидка - реализация C [41] [42]
  • MarkAPL - конвертер, написанный на Dyalog APL . Он поддерживает изолированные блоки, интеллектуальную типографику, ссылки на ссылки и специальные атрибуты, а также может создавать оглавление [43]
  • PHP Markdown - пакет библиотеки, который включает синтаксический анализатор PHP Markdown и его аналог PHP Markdown Extra с дополнительными функциями [44]
  • Markdig - библиотека .NET, которая следует спецификациям CommonMark и включает набор расширений и возможность для пользователя создавать свои собственные [45]
  • Showdown [46] и Smartdown [47] - средства визуализации Markdown в JavaScript
  • hackmd.io - онлайн-редактор Markdown, который поддерживает Markdown с дополнительными функциями [48]
  • gomarkdown - парсер Markdown и средство визуализации HTML в Go [49]

См. Также [ править ]

  • Сравнение языков разметки документов
  • Сравнение генераторов документации
  • Легкий язык разметки
  • Разметка вики

Ссылки [ править ]

  1. ^ a b c "RFC 7763 - Тип носителя текста / уценки" .
  2. ^ a b Шварц, Аарон (19 марта 2004 г.). «Уценка» . Аарон Шварц: Интернет-блог .
  3. ^ a b Грубер, Джон . «Уценка» . Дерзкий огненный шар . Архивировано из оригинала на 2004-04-02 . Проверено 25 апреля 2014 .
  4. ^ a b c Markdown 1.0.1 исходный код readme "Daring Fireball - Markdown" . 2004-12-17. Архивировано из оригинала на 2004-04-02.
  5. ^ a b «RFC7764 - Руководство по Markdown: философия проектирования, стратегии стабильности и отдельные регистрации» .
  6. ^ "Справочный сайт RMarkdown" .
  7. ^ «Уценка: Лицензия» . Дерзкий огненный шар . Проверено 25 апреля 2014 .
  8. ^ Daring Fireball заявление создателя John Gruber
  9. ^ a b c Синтаксис Markdown «Дерзкий огненный шар - Markdown - Синтаксис» . 2013-06-13. При этом удобочитаемость ставится превыше всего. Документ в формате Markdown должен быть доступен для публикации как есть, как обычный текст, и не должен выглядеть так, как будто он был размечен тегами или инструкциями по форматированию. Хотя на синтаксис Markdown повлияли несколько существующих фильтров преобразования текста в HTML, включая Setext, atx, Textile, reStructuredText, Grutatext и EtText, самым большим источником вдохновения для синтаксиса Markdown является формат обычного текстового сообщения электронной почты.
  10. ^ «Дерзкий огненный шар: Введение в Markdown» . daringfireball.net . Проверено 23 сентября 2020 .
  11. ^ «Документация по синтаксису Markdown» . Дерзкий огненный шар.
  12. ^ "Спецификация Markdown со вкусом GitHub - Зачем нужна спецификация?" . github.github.com .
  13. ^ «Babelmark 2 - Сравните реализации уценки» . Johnmacfarlane.net . Проверено 25 апреля 2014 .
  14. ^ «Babelmark 3 - Сравните реализации Markdown» . github.io . Проверено 10 декабря 2017 .
  15. ^ "Babelmark 2 - FAQ" . Johnmacfarlane.net . Проверено 25 апреля 2014 .
  16. ^ Грубер, Джон [@gruber] (4 сентября 2014 г.). «@tobie @espadrine @comex @wycats Потому что у разных сайтов (и людей) разные потребности. Ни один синтаксис не сделает всех счастливыми» (твит) - через Twitter .
  17. ^ «Варианты уценки» . IANA . 2016-03-28 . Проверено 6 июля 2016 .
  18. ^ «UTI документа CommonMark» .
  19. ^ «Спецификация CommonMark» .
  20. ^ Этвуд, Джефф (2012-10-25). «Будущее Markdown» . CodingHorror.com . Проверено 25 апреля 2014 .
  21. ^ "Страница сообщества Markdown" . GitHub . Проверено 25 апреля 2014 .
  22. ^ «Standard Markdown теперь является Common Markdown» . Джефф Этвуд . Проверено 7 октября 2014 .
  23. ^ «Стандартная уценка становится общей уценкой, а затем общей маркой» . InfoQ . Проверено 7 октября 2014 .
  24. ^ "CommonMark" . Дата обращения 20 июн 2018 . Текущая версия спецификации CommonMark является полной и достаточно надежной после года публичных отзывов… но не совсем окончательной. С вашей помощью мы планируем анонсировать окончательную версию 1.0 и набор тестов в 2019 году.
  25. ^ «Проблемы, которые мы ДОЛЖНЫ решить до выпуска 1.0 [осталось 6]» . Обсуждение CommonMark . 2015-07-26 . Проверено 2 октября 2020 .
  26. ^ a b c «Спецификация Markdown с добавлением GitHub» . GitHub . Проверено 11 июня 2020 .
  27. ^ "Учебник по разметке Reddit. Или как вы вообще делаете все это причудливое форматирование в своих комментариях?" . Reddit.com . Проверено 29 марта 2013 .
  28. ^ «Справка по редактированию Markdown» . StackOverflow.com . Проверено 11 апреля 2014 .
  29. ^ "SourceForge: Руководство по синтаксису Markdown" . SourceForge.net . Проверено 10 мая 2013 .
  30. ^ "Формальная спецификация для GitHub Flavored Markdown" . GitHub Engineering . Дата обращения 16 мар 2017 .
  31. ^ Фортин, Мишель (2018). «PHP Markdown Extra» . Сайт Мишеля Фортина . Проверено 26 декабря 2018 .
  32. ^ "Редактор Markdown для BUEditor" . 4 декабря 2008 г.
  33. ^ «Markdown для TYPO3 (markdown_content)» . extension.typo3.org .
  34. ^ «PHP Markdown Extra» . Мишель Фортин .
  35. ^ «Страница сообщества W3C, посвященная реализациям Markdown» . W3C Markdown Wiki . Проверено 24 марта 2016 года .
  36. ^ «Markdown Throwdown - Что происходит, когда программное обеспечение FOSS получает корпоративную поддержку» . Ars Technica. 2014-10-05.
  37. ^ «Зачем вам нужен редактор WYSIWYG при написании в Markdown и Fountain» . Блог JotterPad . 2020-11-17 . Проверено 6 декабря 2020 .
  38. ^ «Руководство Doxygen: поддержка Markdown» .
  39. ^ Allaire, JJ ; ea (30.06.2015). "Markdown.cpp" . Проект GitHub RStudio . Проверено 7 июля 2016 .
  40. ^ «Написание на GitHub» . help.github.com . GitHub, Inc . Проверено 9 июля 2014 года .
  41. ^ "Discount - C-реализация языка разметки Markdown" . Проверено 1 марта 2020 .
  42. ^ Парсонс, Дэвид (2016-05-28). «СКИДКА» . GitHub . Проверено 7 июля 2016 . скидка в Open Hub
  43. ^ "Конвертер Markdown, написанный на Dyalog APL" .
  44. ^ "PHP Markdown" . Проверено 1 марта 2016 .
  45. ^ «Быстрый, мощный, совместимый с CommonMark, расширяемый процессор Markdown для .NET» . Проверено 19 октября 2020 .
  46. ^ "Двунаправленный конвертер Markdown в HTML, написанный на Javascript!" . Проверено 19 октября 2020 .
  47. ^ «Библиотека Javascript для перевода, рендеринга и взаимодействия с документами Smartdown» . Проверено 19 октября 2020 .
  48. ^ "Учебное пособие по HackMD - HackMD" .
  49. ^ «Парсер Markdown и средство визуализации HTML в Go» . Проверено 19 октября 2020 .

Внешние ссылки [ править ]

  • Официальный сайт оригинальной разметки John Gruber
  • Markdown Guide: Tools - независимый обзор источников программного обеспечения, поддерживающего Markdown.