Rendu de texte avec LaTeX #

Matplotlib peut utiliser LaTeX pour afficher du texte. Ceci est activé en définissant dans vos rcParams, ou en définissant la propriété sur True sur des objets individuels. La gestion de texte via LaTeX est plus lente que le mathtext très performant de Matplotlib , mais est plus flexible, car différents packages LaTeX (packages de polices, packages mathématiques, etc.) peuvent être utilisés. Les résultats peuvent être saisissants, surtout lorsque vous prenez soin d'utiliser les mêmes polices dans vos figures que dans le document principal.text.usetex : TrueusetexText

Le support LaTeX de Matplotlib nécessite une installation LaTeX fonctionnelle. Pour les backends *Agg, dvipng est également requis ; pour le backend PS, PSfrag , dvips et Ghostscript sont également requis. Pour les backends PDF et SVG, si LuaTeX est présent, il sera utilisé pour accélérer certaines étapes de post-traitement, mais notez qu'il n'est pas utilisé pour analyser la chaîne TeX elle-même (seul LaTeX est pris en charge). Les exécutables de ces dépendances externes doivent tous se trouver sur votrePATH.

Seul un petit nombre de familles de polices (définies par le schéma PSNFSS ) sont prises en charge. Ils sont répertoriés ici, avec les commandes de sélection de polices LaTeX correspondantes et les packages LaTeX, qui sont automatiquement utilisés.

famille générique

polices

empattement ( \rmfamily)

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

sans empattement ( \sffamily)

Ordinateur Moderne Serif, Helvetica ( helvet), Avant Garde ( avant)

cursif ( \rmfamily)

Chancellerie Zapf ( chancery)

monospace ( \ttfamily)

Machine à écrire moderne informatique, courrier ( courier)

La famille de polices par défaut (qui ne nécessite le chargement d'aucun package LaTeX) est Computer Modern. Toutes les autres familles sont des polices Adobe. Times et Palatino ont chacun leurs propres polices mathématiques, tandis que les autres polices Adobe serif utilisent les polices mathématiques Computer Modern.

Pour activer LaTeX et sélectionner une police, utilisez par exemple :

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

ou de manière équivalente, définissez votre matplotlibrc sur :

text.usetex : true
font.family : Helvetica

Il est également possible de définir font.familyà la place l'un des noms de famille génériques, puis de configurer la famille générique correspondante ; par exemple:

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

(c'était l'approche requise jusqu'à Matplotlib 3.5).

Voici l'exemple standard, rendu des équations mathématiques à l'aide de TeX :

../../_images/sphx_glr_tex_demo_001.png

Notez que le mode d'affichage mathématique ( ) n'est pas pris en charge, mais l'ajout de la commande , comme dans la démonstration ci-dessus, produira les mêmes résultats.$$ e=mc^2 $$\displaystyle

Les caractères non-ASCII (par exemple, le signe degré dans l'étiquette y ci-dessus) sont pris en charge dans la mesure où ils sont pris en charge par inputenc .

Noter

Par souci de cohérence avec le cas non-usetex, Matplotlib utilise des sauts de ligne spéciaux, de sorte que les sauts de ligne simples produisent des sauts de ligne (plutôt que d'être interprétés comme des espaces blancs dans LaTeX standard).

Matplotlib utilise le package underscore_ pour que les traits de soulignement ( ) soient imprimés "tels quels" en mode texte (plutôt que de provoquer une erreur comme dans LaTeX standard). Les traits de soulignement introduisent toujours des indices en mode mathématique.

Noter

Certains caractères nécessitent un échappement spécial dans TeX, tels que :

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

Par conséquent, ces caractères se comporteront différemment selon rcParams["text.usetex"](par défaut : False). Comme indiqué ci-dessus, les traits de soulignement ( _) ne nécessitent pas d'échappement en dehors du mode mathématique.

Options PostScript #

Afin de produire des fichiers PostScript encapsulés (EPS) pouvant être intégrés dans un nouveau document LaTeX, le comportement par défaut de Matplotlib est de distiller la sortie, ce qui supprime certains opérateurs PostScript utilisés par LaTeX qui sont illégaux dans un fichier EPS. Cette étape produit des résultats qui peuvent être inacceptables pour certains utilisateurs, car le texte est grossièrement pixellisé et converti en bitmaps, qui ne sont pas évolutifs comme le PostScript standard, et le texte n'est pas interrogeable. Une solution de contournement consiste à définir rcParams["ps.distiller.res"](par défaut : 6000) une valeur plus élevée (peut-être 6000) dans vos paramètres rc, ce qui produira des fichiers plus volumineux mais peut sembler meilleur et évoluer raisonnablement. Une meilleure solution de contournement, qui nécessite Poppler ou Xpdf , peut être activée en remplaçant rcParams["ps.usedistiller"](par défaut : None) parxpdf. Cette alternative produit du PostScript sans pixelliser le texte, il est donc correctement mis à l'échelle, peut être modifié dans Adobe Illustrator et recherché du texte dans des documents pdf.

Raccrochages possibles #

  • Sous Windows, lePATHIl peut être nécessaire de modifier la variable d'environnement pour inclure les répertoires contenant les exécutables latex, dvipng et ghostscript. Voir Variables d'environnement et Définition des variables d'environnement dans Windows pour plus de détails.

  • En utilisant MiKTeX avec des polices Computer Modern, si vous obtenez des résultats *Agg et PNG impairs, allez dans MiKTeX/Options et mettez à jour vos fichiers de format

  • Sur Ubuntu et Gentoo, l'installation de base de texlive n'est pas livrée avec le package type1cm. Vous devrez peut-être installer certains des packages supplémentaires pour obtenir tous les avantages fournis avec d'autres distributions LaTeX.

  • Certains progrès ont été réalisés afin que Matplotlib utilise les fichiers dvi directement pour la mise en page du texte. Cela permet d'utiliser LaTeX pour la mise en page du texte avec les backends pdf et svg, ainsi que les backends *Agg et PS. À l'avenir, une installation LaTeX pourrait être la seule dépendance externe.

Dépannage #

  • Essayez de supprimer votre .matplotlib/tex.cacherépertoire. Si vous ne savez pas où trouver .matplotlib, consultez la configuration matplotlib et les emplacements des répertoires de cache .

  • Assurez-vous que LaTeX, dvipng et ghostscript fonctionnent chacun et sur votre PATH.

  • Assurez-vous que ce que vous essayez de faire est possible dans un document LaTeX, que votre syntaxe LaTeX est valide et que vous utilisez des chaînes brutes si nécessaire pour éviter les séquences d'échappement involontaires.

  • rcParams["text.latex.preamble"](par défaut : '') n'est pas officiellement pris en charge. Cette option offre une grande flexibilité et de nombreuses façons de causer des problèmes. Veuillez désactiver cette option avant de signaler des problèmes à la liste de diffusion.

  • Si vous avez encore besoin d'aide, veuillez consulter Obtenir de l'aide .

Galerie générée par Sphinx-Gallery