Renderização de texto com LaTeX #

Matplotlib pode usar LaTeX para renderizar texto. Isso é ativado definindo em seu rcParams ou definindo a propriedade como True em objetos individuais. A manipulação de texto através do LaTeX é mais lenta do que o mathtext muito capaz do Matplotlib , mas é mais flexível, uma vez que diferentes pacotes LaTeX (pacotes de fontes, pacotes matemáticos, etc.) podem ser usados. Os resultados podem ser surpreendentes, especialmente quando você toma cuidado para usar as mesmas fontes em suas figuras como no documento principal.text.usetex : TrueusetexText

O suporte LaTeX do Matplotlib requer uma instalação LaTeX funcional . Para os backends *Agg, o dvipng também é necessário; para o back-end PS, PSfrag , dvips e Ghostscript também são necessários. Para back-ends PDF e SVG, se LuaTeX estiver presente, ele será usado para acelerar algumas etapas de pós-processamento, mas observe que ele não é usado para analisar a string TeX em si (somente LaTeX é suportado). Os executáveis ​​para essas dependências externas devem estar todos localizados em seuPATH.

Apenas um pequeno número de famílias de fontes (definidas pelo esquema PSNFSS ) é suportado. Eles estão listados aqui, com os comandos de seleção de fonte LaTeX correspondentes e pacotes LaTeX, que são usados ​​automaticamente.

família genérica

fontes

serifa ( \rmfamily)

Computer Modern Roman, Palatino ( mathpazo), Times ( mathptmx), Bookman ( bookman), New Century Schoolbook ( newcent), Charter ( charter)

sem serifa ( \sffamily)

Computer Modern Serif, Helvetica ( helvet), Avant Garde ( avant)

cursiva ( \rmfamily)

Chancelaria Zapf ( chancery)

monoespaço ( \ttfamily)

Computador Moderna Máquina de Escrever, Courier ( courier)

A família de fontes padrão (que não requer o carregamento de nenhum pacote LaTeX) é Computer Modern. Todas as outras famílias são fontes da Adobe. Times e Palatino têm suas próprias fontes matemáticas acompanhantes, enquanto as outras fontes Adobe serif fazem uso das fontes matemáticas Computer Modern.

Para ativar o LaTeX e selecionar uma fonte, use, por exemplo:

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "Helvetica"
})

ou de forma equivalente, defina seu matplotlibrc para:

text.usetex : true
font.family : Helvetica

Também é possível definir font.familyum dos nomes de família genéricos e, em seguida, configurar a família genérica correspondente; por exemplo:

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "sans-serif",
    "font.sans-serif": "Helvetica",
})

(essa era a abordagem necessária até o Matplotlib 3.5).

Aqui está o exemplo padrão, renderizando equações matemáticas usando o TeX :

../../_images/sphx_glr_tex_demo_001.png

Observe que o modo de exibição matemática ( ) não é suportado, mas adicionar o comando , como na demonstração acima, produzirá os mesmos resultados.$$ e=mc^2 $$\displaystyle

Caracteres não-ASCII (por exemplo, o sinal de grau no rótulo y acima) são suportados na medida em que são suportados por inputenc .

Observação

Para consistência com o caso não-usetex, o Matplotlib cria novas linhas em casos especiais, de modo que as novas linhas produzam quebras de linha (em vez de serem interpretadas como espaços em branco no LaTeX padrão).

Matplotlib usa o pacote sublinhado_ para que os sublinhados ( ) sejam impressos "como estão" no modo de texto (em vez de causar um erro como no LaTeX padrão). Os sublinhados ainda introduzem subscritos no modo matemático.

Observação

Certos caracteres requerem escape especial no TeX, como:

# $ % & ~ ^ \ { } \( \) \[ \]

Portanto, esses caracteres se comportarão de maneira diferente dependendo de rcParams["text.usetex"](padrão: False). Conforme observado acima, sublinhados ( _) não exigem escape fora do modo matemático.

Opções PostScript #

Para produzir arquivos PostScript (EPS) encapsulados que podem ser incorporados em um novo documento LaTeX, o comportamento padrão do Matplotlib é destilar a saída, o que remove alguns operadores PostScript usados ​​pelo LaTeX que são ilegais em um arquivo EPS. Esta etapa produz resultados que podem ser inaceitáveis ​​para alguns usuários, porque o texto é grosseiramente rasterizado e convertido em bitmaps, que não são escalonáveis ​​como PostScript padrão, e o texto não é pesquisável. Uma solução alternativa é definir rcParams["ps.distiller.res"](padrão: 6000) para um valor mais alto (talvez 6000) nas configurações do rc, o que produzirá arquivos maiores, mas pode parecer melhor e dimensionar razoavelmente. Uma solução alternativa melhor, que requer Poppler ou Xpdf , pode ser ativada alterando rcParams["ps.usedistiller"](padrão: None) paraxpdf. Essa alternativa produz PostScript sem rasterizar o texto, portanto, ele é dimensionado corretamente, pode ser editado no Adobe Illustrator e pesquisado em documentos PDF.

Possíveis interrupções #

  • No Windows, oPATHA variável de ambiente pode precisar ser modificada para incluir os diretórios que contêm os executáveis ​​latex, dvipng e ghostscript. Consulte Variáveis ​​de ambiente e Definindo variáveis ​​de ambiente no Windows para obter detalhes.

  • Usando MiKTeX com fontes Computer Modern, se você obtiver resultados estranhos *Agg e PNG, vá para MiKTeX/Options e atualize seus arquivos de formato

  • No Ubuntu e no Gentoo, a instalação base do texlive não vem com o pacote type1cm. Você pode precisar instalar alguns dos pacotes extras para obter todos os recursos que vêm junto com outras distribuições do LaTeX.

  • Algum progresso foi feito para que o Matplotlib use os arquivos dvi diretamente para o layout do texto. Isso permite que o LaTeX seja usado para layout de texto com os back-ends pdf e svg, bem como os back-ends *Agg e PS. No futuro, uma instalação do LaTeX pode ser a única dependência externa.

Solução de problemas #

  • Tente excluir seu .matplotlib/tex.cachediretório. Se você não sabe onde encontrar .matplotlib, consulte a configuração do matplotlib e os locais do diretório de cache .

  • Certifique-se de que LaTeX, dvipng e ghostscript estão funcionando e no seu PATH.

  • Certifique-se de que o que você está tentando fazer é possível em um documento LaTeX, que sua sintaxe LaTeX é válida e que você está usando strings brutas, se necessário, para evitar sequências de escape não intencionais.

  • rcParams["text.latex.preamble"](padrão: '') não é oficialmente suportado. Essa opção oferece muita flexibilidade e muitas maneiras de causar problemas. Desative esta opção antes de relatar problemas à lista de discussão.

  • Se ainda precisar de ajuda, consulte Como obter ajuda .

Galeria gerada por Sphinx-Gallery