========================= MEP29: Text light markup ========================= .. contents:: :local: Status ====== Discussion Branches and Pull requests ========================== None at the moment, proof of concept only. Abstract ======== This MEP proposes to add lightweight markup to the text artist. Detailed description ==================== Using different size/color/family in a text annotation is difficult because the `~.Axes.text` method accepts argument for size/color/family/weight/etc. that are used for the whole text. But, if one wants, for example, to have different colors, one has to look at the gallery where one such example is provided: :doc:`/gallery/text_labels_and_annotations/rainbow_text` This example takes a list of strings as well as a list of colors which makes it cumbersome to use. An alternative would be to use a restricted set of pango_-like markup and to interpret this markup. .. _pango: https://developer.gnome.org/pygtk/stable/pango-markup-language.html Some markup examples:: Hello world!` Hello world! Implementation ============== A proof of concept is provided in `markup_example.py `_ but it currently only handles the horizontal direction. Improvements ------------ * This proof of concept uses regex to parse the text but it may be better to use the html.parser from the standard library. * Computation of text fragment positions could benefit from the OffsetFrom class. See for example item 5 in `Using Complex Coordinates with Annotations `_ Problems -------- * One serious problem is how to deal with text having both LaTeX and HTML-like tags. For example, consider the following:: $Bold$ Recommendation would be to have mutual exclusion. Backward compatibility ====================== None at the moment since it is only a proof of concept Alternatives ============ As proposed by @anntzer, this could be also implemented as improvements to mathtext. For example:: r"$\text{Hello \textbf{world}}$" r"$\text{Hello \textcolor{blue}{world}}$" r"$\text{Hello \textsf{\small world}}$"