Текст после тегов div отображается некорректно

Текст, который появляется на строке непосредственно после тега div, отображается неправильно. Добавление пустой строки после строки с div решает эту проблему.

<div>divved text</div>
[a link]( `/admin/email/templates`.) **italic**
divved text
[a link]( `/admin/email/templates`.) **italic**

Скриншот:

Другой HTML не вызывает проблемы:

<small>small text</small>
[a link]( `/admin/email/templates`.) **italic**

small text
a link italic

<span>spanned text</span>
[a link]( `/admin/email/templates`.) **italic**

spanned text
a link italic


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

<div>divved text</div> end of div
beginning of markdown [a link]( `/admin/email/templates`.) **italic**
divved text
end of div beginning of markdown [a link]( `/admin/email/templates`.) **italic**

Скриншот:

Это полностью определённое, соответствующее стандартам поведение, описанное в спецификации CommonMark § 4.6 — HTML-блоки.

Ключевое правило — HTML-блок типа 6. В спецификации CommonMark тег div (наряду с p, blockquote, table, h1–h6, ul, ol, li, hr и др.) явно указан как блочный тег. Когда парсер встречает строку, начинающуюся с одного из этих тегов, он открывает HTML-блок с следующим условием завершения:

Условие завершения: за строкой следует пустая строка.

Ваши другие примеры относятся к строчным элементам и ведут себя иначе.

Спасибо! Я этого и боялся.

Стремясь сделать мой отчёт простым, я забыл упомянуть, что проблема возникла, когда пользователь вставил код <div data-theme-toc="true"> </div> для добавления оглавления. Похоже, это проблема для разработчика этой функции, если кто-то и виноват.

Хм, это интересно. Так что без оглавления проблема вообще не возникает? (я имею в виду другие div-элементы)

Речь идет о точном позиционировании <div data-theme-toc="true"> </div>. В данном случае это был первый элемент в сообщении, а текст начинался со следующей строки. Мы бы даже не заметили этого, если бы первая строка не содержала разметку Markdown. Не уверен, что это логично.

Если после этого кода поставить пустую строку, всё будет работать. См. Data-theme-toc="true" should be placed at the top of a post in it's own paragraph.