MEP29: marcação de luz de texto #

Estado #

Discussão

Filiais e solicitações pull #

Nenhum no momento, apenas prova de conceito.

Resumo #

Este MEP propõe adicionar marcações leves ao artista de texto.

Descrição detalhada #

Usar tamanho/cor/família diferente em uma anotação de texto é difícil porque o textmétodo aceita argumentos para tamanho/cor/família/peso/etc. que são usados ​​para todo o texto. Mas, se alguém quiser, por exemplo, ter cores diferentes, deve consultar a galeria onde um exemplo é fornecido: Rainbow text

Este exemplo usa uma lista de strings, bem como uma lista de cores, o que o torna complicado de usar. Uma alternativa seria usar um conjunto restrito de marcação tipo pango e interpretar essa marcação.

Alguns exemplos de marcação:

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

Implementação #

Uma prova de conceito é fornecida em markup_example.py , mas atualmente lida apenas com a direção horizontal.

Melhorias #

  • Esta prova de conceito usa regex para analisar o texto, mas pode ser melhor usar o html.parser da biblioteca padrão.

  • O cálculo das posições dos fragmentos de texto pode se beneficiar da classe OffsetFrom. Veja por exemplo o item 5 em Usando Coordenadas Complexas com Anotações

Problemas #

  • Um problema sério é como lidar com texto com tags do tipo LaTeX e HTML. Por exemplo, considere o seguinte:

    $<b>Bold$</b>
    

    A recomendação seria ter exclusão mútua.

Compatibilidade com versões anteriores #

Nenhum no momento, pois é apenas uma prova de conceito

Alternativas #

Conforme proposto por @anntzer, isso também pode ser implementado como melhorias no mathtext. Por exemplo:

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