Легкий язык разметки

редактировать
Язык разметки с простым ненавязчивым синтаксисом

A облегченный язык разметки (LML ), также называемый простым или гуманным языком разметки, представляет собой язык разметки с простым, ненавязчивым синтаксисом . Он разработан таким образом, чтобы его было легко писать с использованием любого общего и легко читать в необработанном виде. Облегченные языки разметки используются в приложениях, где может потребоваться прочитать необработанный документ, а также окончательный визуализированный вывод.

Например, человек, загружающий библиотеку программного обеспечения, может предпочесть читать документацию в текстовом редакторе, а не в веб-браузере. Еще одно приложение для таких языков - обеспечение ввода данных в веб-публикациях, таких как веб-журналы и вики, где интерфейс ввода представляет собой простой текстовое поле. Серверное программное обеспечение затем преобразует ввод в общий язык разметки документов, например HTML.

Содержание
  • 1 История
  • 2 Типы
  • 3 Сравнение языковых функций
  • 4 Сравнение возможностей реализации
  • 5 Сравнение синтаксиса облегченного языка разметки
    • 5.1 Синтаксис заголовка
      • 5.1.1 Подчеркнутые заголовки
      • 5.1.2 Заголовки с префиксом
    • 5.2 Синтаксис ссылки
    • 5.3 Синтаксис списка
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
История

Облегченные языки разметки изначально использовались на текстовых дисплеях, которые не могли отображать символы, выделенные курсивом или жирный, поэтому пришлось разработать неформальные методы передачи этой информации. Этот выбор форматирования, естественно, был применен к обычным текстовым сообщениям электронной почты. Консольные браузеры также могут прибегать к аналогичным соглашениям об отображении.

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

Легкие языки разметки можно разделить на категории по типам их тегов. Подобно HTML (полужирный), в некоторых языках используются именованные элементы, которые имеют общий формат для начальных и конечных тегов (например, BBCode [b] жирный [ / b]), тогда как правильные упрощенные языки разметки ограничены ASCII -только знаками препинания и другими небуквенными символами для тегов, но некоторые также смешивают оба стиля (например, Textile bq.) или разрешить встроенный HTML (например, Markdown ), возможно, расширенный пользовательскими элементами (например, MediaWiki source).

Большинство языков различают разметку для строк или блоков и для более коротких отрезков текста, но некоторые поддерживают только встроенную разметку.

Некоторые языки разметки предназначены для определенной цели, например, для документирования компьютерного кода (например, POD, RD ) или для преобразования в определенный выходной формат (обычно HTML) и ничего больше, другие более вообще в приложении. Сюда входит, ориентированы ли они на текстовое представление или на сериализацию данных.

Языки, ориентированные на представление, включают AsciiDoc, atx, BBCode, креольский, Crossmark, Epytext, Haml, JsonML, MakeDoc, Markdown, Org-mode, POD, reST, RD, Setext, SiSU, SPIP, Xupl, Texy!, Текстиль, txt2tags, UDO и Wikitext.

Языки, ориентированные на сериализацию данных, включают Curl (гомоиконный, но также читает JSON; каждый объект сериализуется), JSON и YAML.

Сравнение языковых функций
Сравнение языковых функций
ЯзыкИнструмент экспорта HTMLИнструмент импорта HTMLТаблицыНазвания ссылокклассатрибутidатрибутДата выпуска
AsciiDoc ДаДаДаДаДаДа25 ноября 2002 г.
BBCode НетНетДаНетНетНет1998
Креол НетНетДаНетНетНет4 июля 2007 г.
GitHub Flavored Markdown ДаНетДаДаНетНет?
Уценка ДаДаНетДаДа / НетДа / Нет19 марта 2004 г.
Markdown Extra ДаДаДаДаДаДа?
MediaWiki ДаДаДаДаДаДа2002
MultiMarkdown ДаНетДаДаНетНет?
Режим организации ДаДаДаДаДаДа2003
PmWiki ДаДаДаДаДаДаЯнварь 2002 г.
POD Да?НетДа??1994
reStructuredText ДаДаДаДаДаавтоапр. il 2, 2002
Slack НетНетНетДаНетНет
Текстиль ДаНетДаДаДаДа26 декабря 2002 г.
Texy ДаДаДаДаДаДа2004
txt2tags ДаДаДаДаДа / НетДа / Нет26 июля 2001 г.
WhatsApp НетНетНетНетНетНет16 марта 2016 г.

Собственный синтаксис Markdown не поддерживает атрибуты класса или атрибуты id; однако, поскольку Markdown поддерживает включение собственного HTML-кода, эти функции могут быть реализованы с использованием прямого HTML. (Некоторые расширения могут поддерживать эти функции.)

Собственный синтаксис txt2tags не поддерживает атрибуты класса или атрибуты id; однако, поскольку txt2tags поддерживает включение собственного кода HTML в области с тегами, эти функции могут быть реализованы с использованием прямого HTML при сохранении в целевой HTML.

Сравнение функций реализации
Сравнение реализаций, особенно форматов вывода
ЯзыкРеализацииX HTML Con /La TeX PDF DocBook ODF EPUB DOC (X) LMLsДругоеЛицензия
AsciiDoc Python, Ruby, JavaScript, Java XHTMLLaTeXPDFDocBookODFEPUBНетЧеловек страница и т. д.GNU GPL, MIT
BBCode Perl, PHP, C#, Python, Ruby (X) HTMLNoNoNoNoNoНетPublic Domain
Creole PHP, Python, Ruby, JavaScript Зависит от реализацииCC_BY-SA 1.0
GitHub Flavored Markdown Haskell (Pandoc )HTMLLaTeX, ConTeXtPDFDocBookODFEPUBDOCAsciiDoc, reST OPML GPL
Java, JavaScript, PHP, Python, Ruby HTMLNoNoNoNoNoНетСобственный
Markdown Perl (изначально), C,Python, JavaScript, Haskell, Ruby,C#, Java, PHP HTMLLaTeX, ConTeXtPDFDocBookODFEPUBRTF MediaWiki, reST Справочная страница, S5 и т. д.BSD-style и GPL (оба)
Markdown Extra PHP (изначально), Python, Ruby XHTMLNoNoNoNoNoНетв стиле BSD и GPL (оба)
MediaWiki Perl, PHP, Haskell, Python XHTMLNoNoNoNoNoНетGNU GPL
MultiMarkdown C, Perl (X)HTMLLaTeXPDFNoODFNoDOC, RTFOPML GPL, MIT
Org-mode Emacs Lisp, Ruby (только синтаксический анализатор), Perl, OCaml XHTMLLaTeXPDFDocBookODFEPUBDOCXMarkdownTXT, XOXO, iCalendar, Texinfo, человек, вклад: groff, s5, deck.js, Confluence Wiki Markup, TaskJuggler, RSS, FreeMind GPL
PmWiki PHP XHTML 1.0 Transitional, HTML5NoДополнения для экспорта PDFNoNoДополнение для экспорта EPUBНетGNU GPL
POD Perl (X) HTML, XMLLaTeXPDFDocBookNoNoRTFMan page, простой текст Artistic License, Лицензия Perl
reStructuredText Python, Haskell (Pandoc), Java,HTML, XMLLaTeXPDFDocBookODFEPUBDOCчеловек, S5, Devhelp, QT Help, CHM, JSON Public Domain
Textile PHP, JavaScript, Java, Perl, Python, Ruby, ASP, C#, Haskell XHTMLNoNoNoNoNoНетTextile Лицензия
Texy! PHP, C# (X) HTMLNoNoNoNoNoНетЛицензия GNU GPL v2
txt2tags Python, PHP (X) HTML, SGMLLaTeXPDFDocBookODFEPUBDOCкреольский, AsciiDoc, MediaWiki, MoinMoin, PmWiki, DokuWiki, Google Code Wiki roff, man, MagicPoint, Lout, PageMaker, ASCII Art, TXT GPL
Сравнение синтаксиса упрощенного языка разметки

Хотя обычно документируется выделение текста курсивом и полужирным шрифтом, большинство облегченных процессоров разметки выводят семантические элементы HTML emи сильныйвместо этого. Моноширинный текст может привести либо к семантическому коду, либо к презентационным элементам tt. Некоторые языки проводят различие, например Текстиль, или позволить пользователю легко настроить вывод, например Texy.

LML иногда различаются разметкой из нескольких слов, где некоторые требуют, чтобы символы разметки заменяли межсловные пробелы (инфикс). Для некоторых языков требуется один символ в качестве префикса и суффикса, для других - удвоение или даже утроение или поддержка обоих символов с немного другим значением, например разные уровни акцента.

Сравнение синтаксиса форматирования текста
Вывод HTMLсильно подчеркнутыйвыделенный тексткодсемантический
жирный тексткурсивный текстмоноширинный текстпрезентационный
AsciiDoc * жирный текст *'курсивный текст'+ ​​моноширинный текст +Может удваивать операторы для применения форматирования там, где нет границы слова (например, ** b ** old t ** ex ** tдает b old t ex t).
_italic text_`monospace text`
ATX* жирный текст *_italic text_| моноширинный текст |стиль электронной почты
креольский ** жирный text **// курсивный текст //{{{моноширинный текст}}}Тройные фигурные скобки предназначены для новики, которая может быть моноширинной.
Markdown ** жирный текст *** курсивный текст *`моноширинный текст`семантические HTML-теги
__bold text___italic text_
MediaWiki '' 'жирный текст' '''' курсивный текст ''моноширинный текств основном использует встроенный HTML
Org-mode * жирный текст */ курсив /= code =
~ дословно ~
PmWiki '' 'жирный текст' '''' курсивный текст ''@@ моноширинный текст @@
reST ** жирный текст *** курсивный текст *`` моноширинный текст ''
Setext ** жирный текст **~ курсивный текст ~Н / Д
Текстиль * strong *_emphasis_@monospace text @семантические HTML-теги
** жирный текст **__italic text__презентационные HTML-теги
Texy! ** полужирный текст *** курсивный текст *`monospace text`семантические HTML-теги по умолчанию, дополнительная поддержка презентационных тегов
// курсивный текст //
txt2tags ** жирный текст **// курсивный текст //`` моноширинный текст ''
POD BICТекст с отступом также отображается как моноширинный код.
BBCode [b] жирный текст [/ b][i] курсивный текст [/ i][code] моноширинный текст [/ code]Форматирование работает через разрывы строк.
Slack * жирный текст *_italic text_`моноширинный текст`` `блок моноширинного текста``
WhatsApp * жирный текст *_italic text_`` моноширинный текст`` ​​

Microsoft Word и Outlook и, соответственно, другие текстовые процессоры и почтовые клиенты, которые стремятся к аналогичному взаимодействию с пользователем, также поддерживают базовое соглашение об использовании звездочек для жирного шрифта и подчеркивания для курсив. В то время как Word удаляет символы, Outlook сохраняет их.

Полужирный шрифт или сильный акцент
КодAsciiDocATXCreoleMarkdownMediaWikiOrg-modePmWikireSTSetextSlackTextileTexy!txt2tagsWhatsApp
*bold*ДаДаNoNoNoДаNoNoNoДаДаNoNoДа
** жирный **ДаNoДаДаNoNoNoДаДаNoДаДаДаНет
__bold__NoNoNoДаNoNoNoNoNoNoNoNoNoНет
'' 'жирный' 'NoNoNoNoДаNoДаNoNoNoNoNoNoНет
Курсив или нормальный курсив
КодAsciiDocATXCreoleMarkdownMediaWikiOrg-modePmWikireSTSetextSlackTextileTexy!txt2tagsWhatsApp
* курсив *NoNoNoДаNoNoNoДаNoNoNoДаNoНет
** курсив **NoNoNoNoNoNoNoNoNoNoNoNoNoНет
_italic_ДаДаNoДаNoNoNoNoNoДаДаNoNoДа
__italic__ДаNoNoNoNoNoNoNoNoNoДаNoNoНет
'курсивом'ДаNoNoNoNoNoNoNoNoNoNoNoNoНет
'курсивом'ДаNoNoNoДаNoДаNoNoNoNoNoNoНет
/ курсив /NoNoNoNoNoДаNoNoNoNoNoNoNoНет
//italic//NoNoДаNoNoNoNoNoNoNoNoДаДаНет
~ курсив ~NoNoNoNoNoNoNoNoДаNoNoNoNoНет
Подчеркнутый текст
КодAsciiDocATXкреольскийMarkdownMediaWikiOrg-modePmWikireSTSetextSlackТекстильTexy!txt2tagsWhatsApp
_underline_NoNoNoNoNoДаNoNoДаNoNoNoNoНет
__underline __NoNoNoNoNoNoNoNoNoNoNoNoДаНет
Зачеркнутый текст
КодAsciiDocATXCreoleMarkdownMediaWikiOrg-modePmWikireSTSetextSlackTextileTexy!txt2tagsWhatsApp
~ поражен ~NoNoNoNoNoNoNoNoNoДаNoNoNoДа
~~ поражен ~~NoNoNoGFMNoNoNoNoNoNoNoNoNoНет
+ зачеркнутый +NoNoNoNoNoДаNoNoNoNoNoNoNoНет
- зачеркнутый--NoNoNoNoNoNoNoNoNoNoNoNoДаНет
Моноширинный шрифт, текст телетайпа или код
КодAsciiDocATXCreoleMarkdownMediaWikiOrg-modePmWikireSTSetextSlackTextileTexy!txt2tagsWhatsApp
@ code @NoNoNoNoNoNoNoNoNoNoДаNoNoНет
@@ code @@NoNoNoNoNoNoДаNoNoNoNoNoNoНет
`code`ДаNoNoДаNoNoNoNoNoДаNoДаNoНет
``код`ДаNoNoДаNoNoNoДаNoNoNoNoДаНет
`` код` ``NoNoNoДаNoNoNoNoNoДа / НетNoNoNoДа
= код =NoNoNoNoNoДаNoNoNoNoNoNoNoНет
~ код ~NoNoNoNoNoДаNoNoNoNoNoNoNoНет
+ код +ДаNoNoNoNoNoNoNoNoNoNoNoNoНет
++ код ++ДаNoNoNoNoNoNoNoNoNoNoNoNoНет
{{{code}}}NoNoДаNoNoNoNoNoNoNoNoNoNoНет
| код |NoДаNoNoNoNoNoNoNoNoNoNoNoНет

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

Заголовки обычно доступны на шести уровнях, но верхний часто зарезервирован для того, чтобы содержать то же самое, что и заголовок документа, который может быть установлен извне. В некоторых документах уровни могут быть связаны с типами подразделений, например часть, глава, раздел, статья или абзац.

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

Подчеркнутые заголовки

Заголовок уровня 1 =============== Заголовок уровня 2 --------------- Заголовок уровня 3 ~~~~~~~~~~~~~~~

В первом стиле используются подчеркивания, то есть повторяющиеся символы (например, равно =, дефис -или тильда ~, обычно не менее двух или четырех раз) в строке под текстом заголовка.

Подчеркнутые уровни заголовков
Символы:=-~*#+^_:"'`.мин.
Разметка 12NoNoNoNoNoNoNoNoNoNoNo1
Сетекст 12NoNoNoNoNoNoNoNoNoNoNo?
AsciiDoc 123NoNoNoNoNoNoNoNoNoNo2
Texy! 34No21NoNoNoNoNoNoNoNo3
reStructuredText ДаДаДаДаДаДаДаДаДаДаДаДаДаширина заголовка

RST определяет уровни заголовков динамически, что, с одной стороны, делает создание более индивидуальным, но с другой стороны усложняет слияние из внешних источников.

Заголовки с префиксом

# Заголовок уровня 1 ## Заголовок уровня 2 ## ### Заголовок уровня 3 ###

Второй стиль основан на повторяющихся маркерах (например, хэш #, равно =или звездочка *) в начале самого заголовка, где количество повторений указывает (иногда обратный) уровень заголовка. Большинство языков также поддерживают дублирование маркеров в конце строки, но в то время как некоторые делают их обязательными, другие даже не ожидают совпадения их номеров.

Заголовки префикса (и суффикса) строки
Символ:=#*!+СуффиксУровниОтступ
AsciiDoc ДаNoNoNoНетНеобязательно1–6Нет
ATXNoДаNoNoНетNoбез ограничений?
Creole ДаNoNoNoНетНеобязательно1–6Нет
MediaWiki ДаNoNoNoНетДа1–6Нет
txt2tags ДаNoNoNoДаДа1–6Нет
Markdown NoДаNoNoНетДополнительно1–6Нет
Texy! ДаДаNoNoНетНеобязательно6–1 или 1–6, динамическийНет
Орг-режим NoNoДаNoНетNo1– + ∞альтернатива
PmWiki NoNoNoДаНетДополнительно1–6Нет

POD и Textile выберите соглашение HTML вместо этого пронумерованные уровни заголовков.

Орг-режим поддерживает отступ как средство указания уровня.

BBCode вообще не поддерживает заголовки разделов.

Другие форматы заголовков
ЯзыкФормат
POD
= head1 Уровень 1 Заголовок = head2 Заголовок уровня 2
Текстиль,. Jira
h1. Уровень 1 Заголовок div class="ht". Уровень 2 Заголовок h3. Уровень 3 Заголовок h4. Уровень 4 Заголовок h5. Уровень 5 Заголовок h6. Заголовок уровня 6

Microsoft Word поддерживает автоматическое форматирование абзацев в качестве заголовков, если они не содержат более нескольких слов, без точки в конце и если пользователь дважды нажимает клавишу ввода. Для более низких уровней пользователь может нажать клавишу табулятора соответствующее количество раз перед вводом текста, т. Е. С одной по восемь вкладок для уровней заголовков со второго по девятый.

Синтаксис ссылки

Гиперссылки могут быть добавлены встроенными, что может загромождать код из-за длинных URL-адресов, либо с именованным псевдонимомили пронумерованным idссылки на строки, не содержащие ничего, кроме адреса и связанных атрибутов, и часто могут находиться в любом месте документа. Большинство языков позволяют автору указывать текст Textдля отображения вместо простого адреса http://example.com , а некоторые также предоставляют методы для установки другой заголовок ссылки Заголовок, который может содержать дополнительную информацию о месте назначения.

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

В большинстве языков для заключения ссылок используются (двойные) квадратные или угловые скобки, но вряд ли какие-либо два языка полностью совместимы. Многие могут автоматически распознавать и анализировать абсолютные URL-адреса внутри текста без дополнительной разметки.

Встроенный синтаксис гиперссылки
ЯзыкиБазовый синтаксисТекстовый синтаксисСинтаксис заголовка
BBCode, Creole, MediaWiki, PmWikihttp: / /example.com
Textile«Text»: http: //example.com«Text (Title)»: http: //example.com
Texy!«Текст. (Заголовок)»: http: //example.com
AsciiDochttp://example.com [Текст]
Slack
txt2tags[http: / /example.com visible[Текст http://example.com]
MediaWiki[http://example.com Text]
Creole, MediaWiki, PmWiki[[Имя] ][[Имя | Текст]]
Режим организации[[Имя] [Текст]]
Креол[[Пространство имен: Имя]][[Пространство имен: Имя | Текст]]
Режим организации[[Пространство имён: Имя] [Текст]]
Креольский язык, PmWiki[[http://example.com]][[http: //example.com|Text visible visible
BBCode[url] http://example.com [/ url][url = http: //example.com] Text [/ url]
Markdown[Текст] (http://example.com)[Текст] (http://example.com «Название»)
reStructuredText`Текст `_
PODL
PODL
Синтаксис ссылки
ЯзыкиСинтаксис текстаСинтаксис заголовка
reStructuredText
... Имя_..... _Name: http: // example.com
ATX
... [Текст]... [Текст] http://example.com
AsciiDoc
... [[id]]... <>
... [[id]]... <>
... привязка: id... xref: id
... привязка: id... xref: id [Текст]
Markdown
... [Текст] [id]... [id]: http://example.com
... [Текст] [id]... [id]: http://example.com "Заголовок"
... [Текст]... [Текст]: http://example.com
... [Текст]... [Текст]: http://example.com "Заголовок"
... [Текст]... [Текст]: http://example.com
... [Текст]... [Текст]: http://example.com "Заголовок"
Org-modeОбычный синтаксис ссылки Org-mode выполняет текстовый поиск файла. Вы также можете указать выделенные цели с помощью <>.
Textile
... "Text": alias... [alias] http://example.com
... "Text": alias... [псевдоним (Заголовок)] http://example.com
Texy!
... «Текст»: псевдоним... [псевдоним]: http://example.com
... «Текст»: псевдоним... [псевдоним]: http://example.com. (Заголовок)

.

Синтаксис списка

HTML требует явного элемента для списка с указанием его типа и по одному для каждого элемента списка, но большинству облегченных языков разметки требуются только разные префиксы строк для маркеров или перечисленные элементы. Некоторые языки используют отступы для вложенных списков, другие используют повторяющиеся маркеры родительского списка.

Неупорядоченные элементы маркированного списка
Символы:*-+#.·_:отступпропуститьгнездо
Разметка ДаДаДаNoNoNoNoNoNoNoNo0–31–3отступ
MediaWiki ДаNoNoNoNoNoNoNoNoNoNo01+повтор
Org-mode Да (с оговорками)ДаДаNoNoNoNoNoNoNoNo0+отступ

Microsoft Word автоматически преобразует абзацы, которые начинаются со звездочки *, дефис-минус -или скобка «больше» >, за которой следует пробел или горизонтальный табулятор в качестве пунктов маркированного списка. Он также начнет нумерованный список для цифры 1 и букв без учета регистра a (для алфавитных списков) или i (для римских цифр), если за ними следует точка ., закрывающая круглая скобка ), знак «больше» >или дефис с минусом -и пробел или табуляция; в случае круглых скобок также поддерживается необязательный открывающий элемент (перед маркером списка.

Языки различаются в зависимости от того, поддерживают ли они необязательные или обязательные цифры в элементах нумерованных списков, и какие типы перечислителей они понимают (например, десятичную цифру 1, римские цифры i или I, буквенные буквы a или A) и поддерживают ли они сохранение явных значений в выходном формате. Некоторые диалекты Markdown, например, будут учитывать начальное значение, отличное от 1, но игнорировать любые другие явные значения.

Упорядоченные, нумерованные элементы списка
Символы:#11.1)1]1}(1)[1]{1}a.A.i.I.отступпропуститьгнездо
Markdown No11NoNoNoNoNoNoNoNoNo0–31–3отступ
MediaWiki #NoNoNoNoNoNoNo(несвязанный более сложный синтаксис)01+повтор
Org-mode NoДаДаNoNoNoNoNoНеобязательныйNoNo0+отступ

Slack помогает пользователю вводить нумерованные и маркированные списки, но на самом деле не форматирует их как таковые, т. Е. Просто включает первая цифра, за которой следует точка и пробел или символ маркера ter перед строкой.

.

.

См. Также
Ссылки
Внешние ссылки
В Wikibooks есть книга по теме: Curl
Последняя правка сделана 2021-05-27 09:25:04
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте