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