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
text
mé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}}$"