Введение

Лёгкий язык разметки (LML), также называемый простым или удобным языком разметки, – это язык разметки с простым и ненавязчивым синтаксисом. Он разработан таким образом, чтобы его было легко писать в любом текстовом редакторе и легко читать в исходном виде. Лёгкие языки разметки используются в приложениях, где может потребоваться просматривать как исходный документ, так и окончательный отрендеренный результат. Например, разработчик, скачивающий библиотеку программного обеспечения, может предпочесть читать документацию в текстовом редакторе, а не в веб-браузере. Другая область применения таких языков – ввод данных в веб-публикации, такие как блоги и вики, где интерфейсом ввода является простое текстовое поле. Серверное программное обеспечение затем преобразует введенные данные в общепринятый язык разметки документов, например HTML.

История

Легкие языки разметки изначально использовались на текстовых дисплеях, которые не могли отображать символы курсивом или полужирным шрифтом, поэтому потребовалось разработать неофициальные способы передачи этой информации. Этот выбор формата естественным образом перешел и в обычные текстовые электронные письма. Консольные браузеры также могут использовать подобные соглашения об отображении. В 1986 году международный стандарт SGML предоставил средства для определения и разбора легких языков разметки с использованием грамматик и импликации тегов. W3C XML 1998 года является профилем SGML, который исключает эти средства. Однако определения типа документа SGML (DTD) для каких-либо из перечисленных ниже языков неизвестны.

Типы

Легкие языки разметки можно классифицировать по типам тегов. Как и HTML (<b>bold</b>), некоторые языки используют именованные элементы, имеющие общий формат для открывающих и закрывающих тегов (например, BBCode [b]bold[/b]), в то время как настоящие легкие языки разметки ограничены использованием только знаков препинания ASCII и других небуквенных символов для тегов, хотя некоторые также сочетают оба стиля (например, Textile bq.) или допускают встраивание HTML (например, Markdown), возможно, расширенного пользовательскими элементами (например, MediaWiki). Большинство языков различают разметку для строк или блоков и для коротких фрагментов текста, но некоторые поддерживают только встроенную разметку. Некоторые языки разметки предназначены для конкретной цели, такой как документирование компьютерного кода (например, POD, reST, RD) или преобразование в определенный формат вывода (обычно HTML или LaTeX) и ничего более, другие более универсальны. Это включает в себя ориентацию на текстовое представление или на сериализацию данных. К языкам, ориентированным на представление, относятся AsciiDoc, atx, BBCode, Creole, Crossmark, Djot, Epytext, Haml, JsonML, MakeDoc, Markdown, Org mode, POD (Perl), reST (Python), RD (Ruby), Setext, SiSU, SPIP, Xupl, Texy!, Textile, txt2tags, UDO и Wikitext. К языкам, ориентированным на сериализацию данных, относятся Curl (гомоиконический, но также читает JSON; каждый объект сериализуется), JSON и YAML.

Сравнение особенностей реализации

+ Сравнение реализаций, особенно выходных форматов. Язык Реализации XHTML Con/LaTeX PDF DocBook ODF EPUB DOC(X) LMLs Другие Лицензии AsciiDoc Python, Ruby, JavaScript, Java Страница руководства и т.д. GNU GPL, MIT BBCode Perl, PHP, C#, Python, Ruby Общественное достояние Creole PHP, Python, Ruby, JavaScript Зависит от реализации CC BY SA 1.0 Djot Lua (первоначально), JavaScript, Prolog, Rust JavaScript, PHP, Python, Ruby Python, JavaScript, Haskell, C#, Java, PHP BSD-стиль и GPL (оба) Markdown Extra PHP (первоначально), Python, Ruby BSD-стиль и GPL (оба) MediaWiki Perl, PHP, Haskell, Python GNU GPL MultiMarkdown C, Perl GPL, MIT Org mode Emacs Lisp, Ruby (только парсер), Perl, OCaml TaskJuggler, RSS, FreeMind GPL PmWiki PHP GNU GPL POD Perl Страница руководства, простой текст Художественная лицензия, лицензия Perl reStructuredText Python, Haskell (Pandoc), Java man, S5, Devhelp, QT Help, CHM, JSON Общественное достояние Textile PHP, JavaScript, Java, Perl, Python, Ruby, ASP, C#, Haskell Textile License Texy! PHP, C# GNU GPL v2 License txt2tags Python, PHP Creole, AsciiDoc, MediaWiki, MoinMoin, PmWiki, DokuWiki, Google Code Wiki roff, man, MagicPoint, Lout, PageMaker, ASCII Art, TXT GPL

Синтаксис встроенного протяжения

Хотя обычно документируется как выдача курсивного и жирного текста, большинство легких процессоров разметки выводят семантические элементы HTML `em` и `strong` вместо этого. Монопространственный текст может привести либо к семантическому коду, либо к элементам презентации `tt`. Лишь немногие языки делают различие, например, Textile, или позволяют пользователю легко настраивать вывод, например, Texy. LML иногда отличаются для многословной разметки, где некоторые требуют, чтобы символы разметки заменяли межсловные пробелы (инфикс). Некоторые языки требуют один символ в качестве префикса и суффикса, другие – удвоенные или даже утроенные, или поддерживают оба варианта с немного разным значением, например, разными уровнями выделения. + Сравнение синтаксиса форматирования текста и HTML-вывода: <strong>сильно выделенный</strong> <em>выделенный текст</em> <code>код</code> семантический <b>жирный текст</b> <i>курсивный текст</i> <tt>монопространственный текст</tt> презентационный AsciiDoc *bold text* 'italic text' +monospace text+ Можно использовать двойные операторы для применения форматирования, когда нет границы слова (например, **b**old t**ex**t дает жирный текст). *курсивный текст* `монопространственный текст` BBCode [b]bold text[/b] [i]italic text[/i] [code]monospace text[/code] Форматирование работает через разрывы строк. Creole **bold text** //italic text// {monospace text} Тройные фигурные скобки используются для nowiki, который опционально отображается монопространственным шрифтом. Djot *bold text* italic text `monospace text` Gemtext ```alt text monospace text``` Текст, непосредственно следующий за первыми тремя обратными кавычками, является альтернативным текстом. Jira Formatting Notation *bold text* italic text monospace text Markdown **bold text** *italic text* `monospace text` семантические HTML-теги bold text italic text MediaWiki '''bold text''' ''italic text'' <code>monospace text</code> в основном использует встроенный HTML Org mode *bold text* /italic text/ =code= ~verbatim~ PmWiki '''bold text''' ''italic text'' @@monospace text@@ reST **bold text** *italic text* ``monospace text`` Setext **bold text** ~italic text~ `monospace text` Textile *strong* emphasis @monospace text@ семантические HTML-теги **bold text** italic text презентационные HTML-теги Texy! **bold text** *italic text* `monospace text` семантические HTML-теги по умолчанию, опциональная поддержка презентационных тегов //italic text// TiddlyWiki ''bold text'' //italic text// `monospace text` ``monospace text`` txt2tags **bold text** //italic text// ``monospace text`` POD B<bold text> I<italic text> C<monospace text> Вставленный текст также отображается как монопространственный код. Slack *bold text* italic text `monospace text` ```блок монопространственного текста``` WhatsApp *bold text* italic text ```monospace text```

В Gemtext нет встроенного форматирования. Монопространственный текст (в контексте Gemtext называемый предварительно отформатированным текстом) должен иметь открывающие и закрывающие ``` на отдельных строках.

Синтаксис заголовка

Заголовки обычно доступны в количестве до шести уровней, но верхний уровень часто резервируется для отображения того же текста, что и заголовок документа, который может быть задан извне. В некоторых документациях уровни заголовков могут быть связаны с типами подразделов, например, частью, главой, разделом, статьей или параграфом. Большинство языков разметки документов (LML) используют один из двух стилей оформления заголовков: Setext, с использованием подчеркиваний, или atx, с использованием символов в начале строки, либо поддерживают оба стиля.