Le texte après les balises div n'est pas rendu correctement

Le texte qui apparaît sur une ligne directement suivant une balise div ne s’affiche pas correctement. Ajouter une ligne vide après la ligne contenant le div résout le problème.

<div>texte dans un div</div>
[un lien]( `/admin/email/templates`.) **en italique**
texte dans un div
[un lien]( `/admin/email/templates`.) **en italique**

Capture d’écran :

Les autres balises HTML ne posent pas de problème :

<small>texte petit</small>
[un lien]( `/admin/email/templates`.) **en italique**

texte petit
un lien en italique

<span>texte dans un span</span>
[un lien]( `/admin/email/templates`.) **en italique**

texte dans un span
un lien en italique


Je suppose que, dès qu’un HTML est détecté, la ligne suivante est absorbée par le processeur et ensuite non analysée pour le Markdown. Vous pouvez tester cela en plaçant du texte sur la ligne suivant le div et au début de la ligne suivante :

<div>texte dans un div</div> fin du div
début du Markdown [un lien]( `/admin/email/templates`.) **en italique**
texte dans un div
fin du div début du Markdown [un lien]( `/admin/email/templates`.) **en italique**

Capture d’écran :

Il s’agit d’un comportement entièrement spécifié et conforme aux normes, défini par la spécification CommonMark § 4.6 — Blocs HTML.

La règle clé est le type de bloc HTML 6. La spécification CommonMark liste explicitement div (ainsi que p, blockquote, table, h1–h6, ul, ol, li, hr, etc.) comme balise de niveau bloc. Lorsque l’analyseur rencontre une ligne commençant par l’une de ces balises, il ouvre un bloc HTML avec cette condition de fin :

Condition de fin : la ligne est suivie d’une ligne vide.

Vos autres exemples sont des éléments en ligne et se comportent différemment.

Merci ! C’est ce que je craignais.

En simplifiant mon rapport, j’ai oublié de mentionner que le problème est survenu lorsqu’un utilisateur a inséré le code <div data-theme-toc="true"> </div> pour ajouter une table des matières. Il semble que ce soit un problème pour le développeur de cette fonctionnalité, si tant est qu’il y en ait un.

D’accord, c’est intéressant. Donc cela ne se produit pas du tout sans la table des matières ? (je parle des autres divs)

Il s’agit du positionnement précis de <div data-theme-toc="true"> </div>. Dans ce cas, c’était le premier élément du message et le texte commençait sur la ligne suivante. Nous ne l’aurions même pas remarqué si cette première ligne ne contenait pas de balises Markdown. Je ne sais pas si c’est clair.

Si vous ajoutez une ligne vide après ce code, tout fonctionne. D’où Data-theme-toc="true" should be placed at the top of a post in it's own paragraph.