Улучшение обработки абзацев в Markdown

Согласно спецификации CommonMark

Параграф
Разрыв строки — это символ новой строки (U+000A), символ возврата каретки (U+000D), не сопровождаемый новой строкой, или символ возврата каретки и следующая за ним новая строка.

Или спецификации GitHub Flavored Markdown

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

Таким образом,

Foo
bar

Должно отображаться как

Foo bar

Но вместо этого оно отображается как

Foo
bar

Смотрите пример CommonMark или пример GitHub.

Это ошибка или намеренное отклонение от спецификации?

Сценарий использования

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

Вот пример:

Единственная другая ситуация, которую я могу придумать, когда это также происходит, — это когда новые пользователи начинают использовать Discourse; иногда они создают параграфы вручную таким образом.

3 лайка

Это сделано намеренно и соответствует тому же поведению, что и на GitHub:

Администраторы могут включить настройку «Традиционные переносы строк в Markdown» в параметрах сайта, чтобы изменить это поведение.

Вас может заинтересовать эта тема, в которой описывается часть обоснования, лежащего в основе реализации.

5 лайков

Большое спасибо. Я изучу это.

4 лайка