Problème dans le Markdown

On imbrique des styles

a marqué ce sujet comme résolu.

Salut,

Ces derniers temps, je m’intéresse au comportement du Markdown quand on imbrique plusieurs styles (le but est d’avoir des cas à tester pour le Markdown, mais aussi pour le LaTeX qu’il permet de générer). Je tombe sur quelques problèmes, généralement liés à une ambiguïté du Markdown. Pour la plupart d’entre eux, on sait « intuitivement » quel comportement on aimerait, pour d’autres c’est un peu plus compliqué.

La démarche est la suivante : on a sept choses qu’on pourrait qualifier de style : le gras, l'italique, le barré, les touches, les indices, les exposants, et les liens. Et on a également différents éléments que je vais tester : les mentions avec des pseudos simples @Karnaj, les mentions avec des pseudos composés @Karnaj-test, les abréviations ZdS, les notes de bas de page 1, les smileys :) et les maths 2+2=42 + 2 = 4.

Avec un seul style

Les septs tests

gras @Karnaj gras

gras @Karnaj-test gras

gras ZdS gras

gras 1 gras

gras :) gras

gras 2+2=42+2=4 gras

italique @Karnaj italique

italique @Karnaj-test italique

italique ZdS italique

italique 1 italique

italique :) italique

italique 2+2=42+2=4 italique

barré @Karnaj barré

barré @Karnaj-test barré

barré ZdS barré

barré 1 barré

barré :) barré

barré 2+2=42+2=4 barré

touche @Karnaj touche

touche @Karnaj-test touche

touche ZdS touche

touche 1 touche

touche :) touche

touche 2+2=42+2=4 touche

indice @Karnaj indice

indice @Karnaj-test indice

indice ZdS indice

indice 1 indice

indice :) indice

indice 2+2=42+2=4 indice

exposant @Karnaj exposant

exposant @Karnaj-test exposant

exposant ZdS exposant

exposant [mdown] exposant^

exposant :) exposant

exposant 2+2=42+2=4 exposant

lien @Karnaj lien

lien @Karnaj-test lien

lien ZdS lien

lien 1 lien

lien :) lien

lien 2+2=42+2=4 lien

Avec un seul style, quelques petits soucis apparaissent déjà.

Gras et mentions composées

La syntaxe pour les pseudos composés est **@pseudo-composé** ce qui pose problème à l’intérieur d’un contenu en gras.

**gras @**Karnaj-test** gras**

Nous donne gras @Karnaj-test gras.

D’ailleurs, le comportement est très bizarre. On a l’impression que zmd comprend qu’il y a un premier texte en gras (donc le **gras @Karnaj, @** et un second (le ** gras**)… Sauf que le deuxième @ n’est pas en gras !

Exposant et notes

Là, c’est le ^ présent pour indiquer une note de bas de page qui interfère avec la syntaxe pour les exposants.

^exposant [^mdown] exposant^

Nous donne exposant [mdown] exposant^.

Le ^ utilisé pour mettre en forme la note est compris comme un ^ qui termine la note de bas de page.

Liens et notes de bas de page

Et le ] utilisé pour indiquer une note pose problème lorsqu’il est placé dans un lien.

[lien [^mdown] lien](./)

Nous donne lien 1 lien

Là encore, le comportement actuel est assez bizarre ; alors que le ] du Markdown semble arrêter le lien (ce qui signifierait que zmd le considère comme la fin du lien et pas de la note), la note de bas de page, elle est bien prise en compte !

À ce niveau, on peut également se demander ce que l’on veut comme résultat pour le lien de la note de bas de page. Mène-il-toujours au bas de la page ou pas ? (Et comment bien traduire le comportement en LaTeX ?). Ce problème se pose également lorsqu’on a une mention dans un lien. Le comportement actuel, certainement le plus simple à tout point de vue, est qu’il n’y a pas de lien vers le profil mentionné.

Les maths et les images

On remarque de plus que les styles gras, italique et barré ne s’appliquent pas aux mathématiques, ce qui est, il me semble, voulu.

Les images des smileys, elles, gardent toujours la même taille et ne sont pas barrées. D’ailleurs, tant qu’on parle des smileys, il y a d’autres soucis qu’on peut observer. Par exemple, le smiley ^^ ne passe pas en exposant ; ^exposant ^^ exposant^ donne exposant ^ exposant^. Il faudrait regarder plus en détail ce qui peut poser problème du côté des smileys.

Avec deux styles

Lorsqu’on imbrique deux styles, il y a généralement deux types de problèmes. Les premiers sont liés aux problèmes que l’on a obtenu avec un seul style, et les deuxièmes à des ambigüités entre les deux styles.

(Beaucoup) de tests

gras italique @Karnaj italique gras

gras *italique @Karnaj-test italique* gras

gras italique ZdS italique gras

gras italique 1 italique gras

gras italique :) italique gras

gras italique 2+2=42+2=4 italique gras

italique gras @Karnaj gras italique

italique gras @Karnaj-test gras italique

italique gras ZdS gras italique

italique gras 1 gras italique

italique gras :) gras italique

italique gras 2+2=42+2=4 gras italique

gras barré @Karnaj barré gras

gras ~~barré @Karnaj-test barré~~ gras

gras barré ZdS barré gras

gras barré 1 barré gras

gras barré :) barré gras

gras barré 2+2=42+2=4 barré gras

barré gras @Karnaj gras barré

barré gras @Karnaj-test gras barré

barré gras ZdS gras barré

barré gras 1 gras barré

barré gras :) gras barré

barré gras 2+2=42+2=4 gras barré

gras touche @Karnaj touche gras

gras ||touche @Karnaj-test touche|| gras

gras touche ZdS touche gras

gras touche 1 touche gras

gras touche :) touche gras

gras touche 2+2=42+2=4 touche gras

touche gras @Karnaj gras touche

touche gras @Karnaj-test gras touche

touche gras ZdS gras touche

touche gras 1 gras touche

touche gras :) gras touche

touche gras 2+2=42+2=4 gras touche

gras indice @Karnaj indice gras

gras ~indice @Karnaj-test indice~ gras

gras indice ZdS indice gras

gras indice 1 indice gras

gras indice :) indice gras

gras indice 2+2=42+2=4 indice gras

indice gras @Karnaj gras indice

indice gras @Karnaj-test gras indice

indice gras ZdS gras indice

indice gras 1 gras indice

indice gras :) gras indice

indice gras 2+2=42+2=4 gras indice

gras exposant @Karnaj exposant gras

gras ^exposant @Karnaj-test exposant^ gras

gras exposant ZdS exposant gras

gras exposant [mdown] exposant^ gras

gras exposant :) exposant gras

gras exposant 2+2=42+2=4 exposant gras

exposant gras @Karnaj gras exposant

exposant gras @Karnaj-test gras exposant

exposant gras ZdS gras exposant

exposant **gras [mdown] gras** exposant^

exposant gras :) gras exposant

exposant gras 2+2=42+2=4 gras exposant

gras lien @Karnaj lien gras

gras [lien @Karnaj-test lien](./) gras

gras lien ZdS lien gras

gras lien 1 lien gras

gras lien :) lien gras

gras lien 2+2=42+2=4 lien gras

lien gras @Karnaj gras lien

lien gras @Karnaj-test gras lien

lien gras ZdS gras lien

lien gras 1 gras lien

lien gras :) gras lien

lien gras 2+2=42+2=4 gras lien

italique barré @Karnaj barré italique

italique barré @Karnaj-test barré italique

italique barré ZdS barré italique

italique barré 1 barré italique

italique barré :) barré italique

italique barré 2+2=42+2=4 barré italique

barré italique @Karnaj italique barré

barré italique @Karnaj-test italique barré

barré italique ZdS italique barré

barré italique 1 italique barré

barré italique :) italique barré

barré italique 2+2=42+2=4 italique barré

italique touche @Karnaj touche italique

italique touche @Karnaj-test touche italique

italique touche ZdS touche italique

italique touche 1 touche italique

italique touche :) touche italique

italique touche 2+2=42+2=4 touche italique

touche italique @Karnaj italique touche

touche italique @Karnaj-test italique touche

touche italique ZdS italique touche

touche italique 1 italique touche

touche italique :) italique touche

touche italique 2+2=42+2=4 italique touche

italique indice @Karnaj indice italique

italique indice @Karnaj-test indice italique

italique indice ZdS indice italique

italique indice 1 indice italique

italique indice :) indice italique

italique indice 2+2=42+2=4 indice italique

indice italique @Karnaj italique indice

indice italique @Karnaj-test italique indice

indice italique ZdS italique indice

indice italique 1 italique indice

indice italique :) italique indice

indice italique 2+2=42+2=4 italique indice

italique exposant @Karnaj exposant italique

italique exposant @Karnaj-test exposant italique

italique exposant ZdS exposant italique

italique exposant [mdown] exposant^ italique

italique exposant :) exposant italique

italique exposant 2+2=42+2=4 exposant italique

exposant italique @Karnaj italique exposant

exposant italique @Karnaj-test italique exposant

exposant italique ZdS italique exposant

exposant *italique [mdown] italique* exposant^

exposant italique :) italique exposant

exposant italique 2+2=42+2=4 italique exposant

italique lien @Karnaj lien italique

italique lien @Karnaj-test lien italique

italique lien ZdS lien italique

italique lien 1 lien italique

italique lien :) lien italique

italique lien 2+2=42+2=4 lien italique

lien italique @Karnaj italique lien

lien italique @Karnaj-test italique lien

lien italique ZdS italique lien

lien italique 1 italique lien

lien italique :) italique lien

lien italique 2+2=42+2=4 italique lien

barré touche @Karnaj touche barré

barré touche @Karnaj-test touche barré

barré touche ZdS touche barré

barré touche 1 touche barré

barré touche :) touche barré

barré touche 2+2=42+2=4 touche barré

touche barré @Karnaj barré touche

touche barré @Karnaj-test barré touche

touche barré ZdS barré touche

touche barré 1 barré touche

touche barré :) barré touche

touche barré 2+2=42+2=4 barré touche

barré indice @Karnaj indice barré

barré indice @Karnaj-test indice barré

barré indice ZdS indice barré

barré indice 1 indice barré

barré indice :) indice barré

barré indice 2+2=42+2=4 indice barré

indice barré @Karnaj barré~ indice~

indice barré @Karnaj-test barré~ indice~

indice barré ZdS barré~ indice~

indice barré 1 barré~ indice~

indice barré :) barré~ indice~

indice barré 2+2=42+2=4 barré~ indice~

barré exposant @Karnaj exposant barré

barré exposant @Karnaj-test exposant barré

barré exposant ZdS exposant barré

barré exposant [mdown] exposant^ barré

barré exposant :) exposant barré

barré exposant 2+2=42+2=4 exposant barré

exposant barré @Karnaj barré exposant

exposant barré @Karnaj-test barré exposant

exposant barré ZdS barré exposant

exposant ~~barré [mdown] barré~~ exposant^

exposant barré :) barré exposant

exposant barré 2+2=42+2=4 barré exposant

barré lien @Karnaj lien barré

barré lien @Karnaj-test lien barré

barré lien ZdS lien barré

barré lien 1 lien barré

barré lien :) lien barré

barré lien 2+2=42+2=4 lien barré

lien barré @Karnaj barré lien

lien barré @Karnaj-test barré lien

lien barré ZdS barré lien

lien barré 1 barré lien

lien barré :) barré lien

lien barré 2+2=42+2=4 barré lien

touche indice @Karnaj indice touche

touche indice @Karnaj-test indice touche

touche indice ZdS indice touche

touche indice 1 indice touche

touche indice :) indice touche

touche indice 2+2=42+2=4 indice touche

indice touche @Karnaj touche indice

indice touche @Karnaj-test touche indice

indice touche ZdS touche indice

indice touche 1 touche indice

indice touche :) touche indice

indice touche 2+2=42+2=4 touche indice

touche exposant @Karnaj exposant touche

touche exposant @Karnaj-test exposant touche

touche exposant ZdS exposant touche

touche exposant [mdown] exposant^ touche

touche exposant :) exposant touche

touche exposant 2+2=42+2=4 exposant touche

exposant touche @Karnaj touche exposant

exposant touche @Karnaj-test touche exposant

exposant touche ZdS touche exposant

exposant ||touche [mdown] touche|| exposant^

exposant touche :) touche exposant

exposant touche 2+2=42+2=4 touche exposant

touche lien @Karnaj lien touche

touche lien @Karnaj-test lien touche

touche lien ZdS lien touche

touche lien 1 lien touche

touche lien :) lien touche

touche lien 2+2=42+2=4 lien touche

lien touche @Karnaj touche lien

lien touche @Karnaj-test touche lien

lien touche ZdS touche lien

lien touche 1 touche lien

lien touche :) touche lien

lien touche 2+2=42+2=4 touche lien

indice exposant @Karnaj exposant indice

indice exposant @Karnaj-test exposant indice

indice exposant ZdS exposant indice

indice exposant [mdown] exposant^ indice

indice exposant :) exposant indice

indice exposant 2+2=42+2=4 exposant indice

exposant indice @Karnaj indice exposant

exposant indice @Karnaj-test indice exposant

exposant indice ZdS indice exposant

exposant ~indice [mdown] indice~ exposant^

exposant indice :) indice exposant

exposant indice 2+2=42+2=4 indice exposant

indice lien @Karnaj lien indice

indice lien @Karnaj-test lien indice

indice lien ZdS lien indice

indice lien 1 lien indice

indice lien :) lien indice

indice lien 2+2=42+2=4 lien indice

lien indice @Karnaj indice lien

lien indice @Karnaj-test indice lien

lien indice ZdS indice lien

lien indice 1 indice lien

lien indice :) indice lien

lien indice 2+2=42+2=4 indice lien

exposant lien @Karnaj lien exposant

exposant lien @Karnaj-test lien exposant

exposant lien ZdS lien exposant

exposant [lien [mdown] lien](./) exposant^

exposant lien :) lien exposant

exposant lien 2+2=42+2=4 lien exposant

lien exposant @Karnaj exposant lien

lien exposant @Karnaj-test exposant lien

lien exposant ZdS exposant lien

lien exposant [mdown] exposant^ lien

lien exposant :) exposant lien

lien exposant 2+2=42+2=4 exposant lien

Mention composée dans style dans gras

Sûrement une conséquence du problème de mention composée dans du gras.

**gras *italique @**Karnaj-test** italique* gras**

Nous donne gras *italique @Karnaj-test italique* gras.

On perd l’italique, sûrement parce que le premier * est dans le premier texte en gras, et le second dans le second texte en gras (donc une superposition).

On a ce problème avec tous les styles dans du gras, pas seulement l’italique.

Bien sûr on a également des soucis avec une mention composée dans du gras dans un autre style, mais c’est le problème de la mention composée dans du gras, on ne va pas la renoter.

Notes dans style dans exposant

On a le même soucis avec les notes et les exposants.

^exposant ~~barré [^mdown] barré~~ exposant^

Nous donne exposant ~~barré [mdown] barré~~ exposant^.

Notes dans style dans lien

Et on l’a avec les liens et les exposants.

[lien **gras [^mdown] gras** lien](./)

Nous donne lien gras 1 gras lien.

Indices et barré

Et une nouvelle ambiguïté avec les indices ~ et le texte barré ~~. Des indices dans du texte barré ne posent pas de problème, mais l’inverse si.

~indice ~~barré ZdS barré~~ indice~

Nous donne indice barré ZdS barré~ indice~.


  1. Plus d’informations sur Markdown.
+8 -0

Salut Karnaj,

merci pour le temps passé à tester et à établir ce rapport détaillé.

Nombreux de ces problèmes semblent être des problèmes de précédence purement internes à ZMarkdown, auquel cas ils seront corrigés rapidement, sans doute pour la prochaine version. D’autres sont sans doute plus complexes et concernent soit :

  • des extensions que nous ne gérons pas en propre (lien & notes de bas de page par exemple), auquel nous ne pourrons rien faire (de simple en tout cas) avant la (très) grosse mise à jour de ZMd pour passer vers micromark ;
  • sans avoir regardé en détail, il est possible que certains problèmes pointés ne soient pas facilement solubles par changement de précédence. Auquel cas nous aviserons s’il est important de corriger rapidement le problème, et d’inclure un correctif avant le passage à micromark.

Voilà pour le résumé, je repasserais poster par ici au fil des correctifs. Merci encore pour les remarques !

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte