Les mots que le CSS tenait séparés le restent

Une ligne comme 39 words · 1 heading · 1 table est d’ordinaire faite d’éléments distincts dont l’écart vient de la mise en page et non du balisage — elle se convertissait donc en 39words1heading1table. L’extension lit désormais la page avec sa mise en page en main et remet ces espaces avant de convertir. Les lignes de statistiques, les listes d’étiquettes et les fils d’Ariane ressortent de nouveau comme des phrases.

Ouvrez le balisage d’une page et regardez la ligne de comptes sous un titre d’article. Très souvent, il n’y a pas un seul caractère d’espace dedans : <span>39</span><span>words</span>, et l’écart que vous voyez à l’écran est une propriété gap sur un conteneur flex. L’espace est dans la feuille de style, pas dans le document.

Tout convertisseur qui vient après voit la chaîne et non la page — le nôtre compris —, et les mots arrivent donc collés. Ce n’est pas non plus une forme exotique : une ligne de statistiques, une liste d’étiquettes, un fil d’Ariane et une barre de pagination ressemblent tous à cela dans n’importe quel framework actuel.

Pourquoi cela ne peut se corriger que dans la page

Le seul endroit capable de dire si deux éléments sont posés côte à côte est la page elle-même, tant que getComputedStyle y existe encore. Une fois le HTML recopié au-dehors pour être converti, la mise en page est partie avec la feuille de style, et aucune supposition ne la récupère : rien dans <span>39</span><span>words</span> ne dit si un espace y a sa place ou non.

L’extension clone donc le document, parcourt le clone à côté du vivant, et partout où l’élément réel pose ses enfants comme éléments flex ou grid, la copie reçoit un espace après chacun d’eux. C’est la copie qui est convertie. Votre page n’est pas touchée, et tout cela ne tourne qu’au moment où vous appuyez sur le bouton : aucun script ne reste assis dans vos onglets.

Un fichier que vous déposez sur le site n’a rien de tout cela, parce qu’il n’y a pas de mise en page à lire. C’est la différence entre convertir une page et convertir une copie de son balisage, et c’est une bonne part de la raison d’être de l’extension.

Ce qui n’est pas couvert

Flex et grid, et rien d’autre. Un écart produit par une marge sur un inline-block, par un positionnement absolu ou par du contenu généré dans un ::before reste invisible dans le balisage, et ressort toujours refermé.

Convertir une sélection reste également intact : une plage sélectionnée est clonée directement depuis le document, une ligne de statistiques prise en sélection peut donc encore arriver en 39words. Appuyez sur le bouton sans rien sélectionner et la voie page entière vous rend les espaces.

Autres lectures : enregistrer une page web en Markdown et Turndown et les bibliothèques HTML vers Markdown.