Если Markdown является надмножеством HTML, то почему он не может делать все, что может HTML? - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь понять отношение Markdown к HTML. Если я правильно понимаю, оба являются языками разметки (общий термин, обозначающий языки, которые добавляют элементы форматирования в текстовые документы). Markdown конвертирует простой текст в HTML.

Насколько я понимаю, Markdown - это расширенный набор HTML :

Markdown - это популярный язык разметки, представляющий собой расширенный набор HTML.

Я предполагаю, что это строгий или правильный суперсет . Проведение параллели из Что это значит, когда один язык является параллельным надмножеством другого? , я понимаю, что это означает, что каждая действительная программа HTML также является допустимой программой Markdown (например, HTML понимается в блокноте Jupyter Notebook Уценка), но обратное неверно.

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

Ниже приведена диаграмма, которая пытается подражать тому, что в Что означает «Objective-C является надмножеством C более строго, чем C ++»? enter image description here

1 Ответ

2 голосов
/ 07 апреля 2019

Эта документация вводит в заблуждение. Markdown сам по себе не является надмножеством HTML. Документация для оригинального проекта Markdown довольно ясна :

Уценка не является заменой HTML или даже близко к нему. Его синтаксис очень мал, соответствует только очень небольшому подмножеству тегов HTML. Идея состоит в том, чтобы не создать синтаксис, который облегчает вставку тегов HTML. На мой взгляд, HTML-теги уже легко вставить. Идея Markdown - облегчить чтение, запись и редактирование прозы. HTML является издательским форматом; Уценка - это запись формат. Таким образом, синтаксис форматирования Markdown решает только проблемы, которые могут быть переданы в виде простого текста.

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

(Технически говоря, Markdown также не является подмножеством HTML. *, например, не имеет никакого особого значения в HTML. Не преобразованные документы Markdown могут быть правильно сформированным HTML, но семантика очень разная. Но синтаксис Markdown отображается на подмножество тегов HTML.)

Однако в следующем абзаце оригинальной документации написано:

Для любой разметки, на которую не распространяется синтаксис Markdown, вы просто используете сам HTML. Нет необходимости вводить предисловие или разделять его, чтобы указать, что вы переходите с Markdown на HTML; вы просто используете теги.

Поскольку вы можете напрямую использовать HTML в Markdown, можно считать расширенным набором HTML. Например, это действительная уценка:

# My awesome title

I <em>really</em> like coffee

Если вы пропустите HTML-документ через соответствующий процессор Markdown, он должен выйти на другую сторону без изменений. Возможность напрямую использовать HTML в Markdown очень похожа на то, как можно напрямую использовать C в C ++. Это может быть то, что означает документация Jupyter.

...