MEP29 : Balisage de texte clair #

Statut #

Discussion

Branches et demandes d'extraction #

Aucun pour le moment, preuve de concept uniquement.

Résumé #

Ce député européen propose d'ajouter un balisage léger au texte de l'artiste.

Descriptif détaillé #

L'utilisation de différentes tailles/couleurs/familles dans une annotation de texte est difficile car la textméthode accepte les arguments pour la taille/couleur/famille/poids/etc. qui sont utilisés pour l'ensemble du texte. Mais, si l'on veut, par exemple, avoir des couleurs différentes, il faut regarder la galerie où un tel exemple est fourni : Texte arc -en-ciel

Cet exemple prend une liste de chaînes ainsi qu'une liste de couleurs ce qui le rend lourd à utiliser. Une alternative serait d'utiliser un ensemble restreint de balisage de type pango et d'interpréter ce balisage.

Quelques exemples de balisage :

Hello <b>world!</b>`
Hello <span color="blue">world!</span>

Mise en œuvre #

Une preuve de concept est fournie dans markup_example.py mais elle ne gère actuellement que la direction horizontale.

Améliorations #

  • Cette preuve de concept utilise regex pour analyser le texte, mais il peut être préférable d'utiliser le html.parser de la bibliothèque standard.

  • Le calcul des positions des fragments de texte pourrait bénéficier de la classe OffsetFrom. Voir par exemple l'élément 5 dans Utilisation de coordonnées complexes avec des annotations

Problèmes #

  • Un problème sérieux est de savoir comment traiter le texte contenant à la fois des balises de type LaTeX et HTML. Par exemple, considérez ce qui suit :

    $<b>Bold$</b>
    

    La recommandation serait d'avoir une exclusion mutuelle.

Rétrocompatibilité #

Aucun pour le moment puisqu'il ne s'agit que d'une preuve de concept

Alternatives #

Comme proposé par @anntzer, cela pourrait également être implémenté en tant qu'améliorations de mathtext. Par exemple:

r"$\text{Hello \textbf{world}}$"
r"$\text{Hello \textcolor{blue}{world}}$"
r"$\text{Hello \textsf{\small world}}$"