Rendering del testo con LaTeX #

Matplotlib può usare LaTeX per rendere il testo. Questo viene attivato impostando nel tuo rcParams o impostando la proprietà su True su singoli oggetti. La gestione del testo tramite LaTeX è più lenta del mathtext molto capace di Matplotlib , ma è più flessibile, poiché è possibile utilizzare diversi pacchetti LaTeX (pacchetti di caratteri, pacchetti matematici, ecc.). I risultati possono essere sorprendenti, soprattutto quando si ha cura di utilizzare gli stessi caratteri nelle figure come nel documento principale.text.usetex : TrueusetexText

Il supporto LaTeX di Matplotlib richiede un'installazione LaTeX funzionante. Per i backend *Agg, è inoltre richiesto dvipng ; per il backend PS, sono inoltre richiesti PSfrag , dvips e Ghostscript . Per i backend PDF e SVG, se LuaTeX è presente, verrà utilizzato per accelerare alcuni passaggi di post-elaborazione, ma si noti che non viene utilizzato per analizzare la stringa TeX stessa (è supportato solo LaTeX). Gli eseguibili per queste dipendenze esterne devono trovarsi tutti sul tuoPATH.

È supportato solo un piccolo numero di famiglie di caratteri (definite dallo schema PSNFSS ). Sono elencati qui, con i corrispondenti comandi di selezione dei caratteri LaTeX e pacchetti LaTeX, che vengono utilizzati automaticamente.

famiglia generica

caratteri

grazie ( \rmfamily)

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

sans-serif ( \sffamily)

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

corsivo ( \rmfamily)

Cancelleria Zapf ( chancery)

monospazio ( \ttfamily)

Computer Macchina da scrivere moderna, Corriere ( courier)

La famiglia di caratteri predefinita (che non richiede il caricamento di alcun pacchetto LaTeX) è Computer Modern. Tutte le altre famiglie sono font Adobe. Times e Palatino hanno ciascuno i propri caratteri matematici di accompagnamento, mentre gli altri caratteri Adobe serif utilizzano i caratteri matematici Computer Modern.

Per abilitare LaTeX e selezionare un carattere, utilizzare ad esempio:

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

o equivalentemente, imposta il tuo matplotlibrc su:

text.usetex : true
font.family : Helvetica

E' inoltre possibile impostare invece font.familyuno dei cognomi generici e quindi configurare la famiglia generica corrispondente; per esempio:

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

(questo era l'approccio richiesto fino a Matplotlib 3.5).

Ecco l'esempio standard, Rendering di equazioni matematiche usando TeX :

../../_images/sphx_glr_tex_demo_001.png

Si noti che la modalità di visualizzazione matematica ( ) non è supportata, ma l'aggiunta del comando , come nella demo precedente, produrrà gli stessi risultati.$$ e=mc^2 $$\displaystyle

I caratteri non ASCII (ad es. il segno di grado nell'etichetta y sopra) sono supportati nella misura in cui sono supportati da inputenc .

Nota

Per coerenza con il caso non-usetex, Matplotlib usa le nuove righe per i casi speciali, in modo che le nuove righe singole producano interruzioni di riga (piuttosto che essere interpretate come spazi bianchi in LaTeX standard).

Matplotlib utilizza il pacchetto underscore_ in modo che i trattini bassi ( ) vengano stampati "così come sono" in modalità testo (piuttosto che causare un errore come in LaTeX standard). I caratteri di sottolineatura introducono ancora i pedici in modalità matematica.

Nota

Alcuni caratteri richiedono caratteri di escape speciali in TeX, come ad esempio:

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

Pertanto, questi caratteri si comporteranno in modo diverso a seconda di rcParams["text.usetex"](predefinito: False). Come notato sopra, i caratteri di sottolineatura ( _) non richiedono l'escape al di fuori della modalità matematica.

Opzioni PostScript #

Per produrre file PostScript incapsulati (EPS) che possono essere incorporati in un nuovo documento LaTeX, il comportamento predefinito di Matplotlib è quello di distillare l'output, che rimuove alcuni operatori PostScript usati da LaTeX che sono illegali in un file EPS. Questo passaggio produce risultati che potrebbero essere inaccettabili per alcuni utenti, poiché il testo viene rasterizzato grossolanamente e convertito in bitmap, che non sono scalabili come PostScript standard e il testo non è ricercabile. Una soluzione alternativa consiste nell'impostare rcParams["ps.distiller.res"](default: 6000) a un valore più alto (forse 6000) nelle impostazioni di rc, che produrrà file più grandi ma potrebbe avere un aspetto migliore e ridimensionarsi ragionevolmente. Una soluzione alternativa migliore, che richiede Poppler o Xpdf , può essere attivata modificando rcParams["ps.usedistiller"](predefinito: None) inxpdf. Questa alternativa produce PostScript senza rasterizzare il testo, quindi viene ridimensionato correttamente, può essere modificato in Adobe Illustrator e ricercato nel testo nei documenti pdf.

Possibili problemi #

  • Su Windows, ilPATHpotrebbe essere necessario modificare la variabile d'ambiente per includere le directory contenenti gli eseguibili latex, dvipng e ghostscript. Vedere Variabili d'ambiente e Impostazione delle variabili d'ambiente in Windows per i dettagli.

  • Usando MiKTeX con i font Computer Modern, se ottieni strani risultati *Agg e PNG, vai su MiKTeX/Opzioni e aggiorna i tuoi file di formato

  • Su Ubuntu e Gentoo, l'installazione base di texlive non viene fornita con il pacchetto type1cm. Potrebbe essere necessario installare alcuni dei pacchetti extra per ottenere tutti i gadget forniti in bundle con altre distribuzioni LaTeX.

  • Sono stati compiuti alcuni progressi, quindi Matplotlib utilizza i file dvi direttamente per il layout del testo. Ciò consente di utilizzare LaTeX per il layout del testo con i backend pdf e svg, nonché con i backend *Agg e PS. In futuro, un'installazione LaTeX potrebbe essere l'unica dipendenza esterna.

Risoluzione dei problemi #

  • Prova a cancellare la tua .matplotlib/tex.cachedirectory. Se non sai dove trovarlo .matplotlib, consulta la configurazione di matplotlib e le posizioni delle directory della cache .

  • Assicurati che LaTeX, dvipng e ghostscript funzionino entrambi e sul tuo PATH.

  • Assicurati che ciò che stai cercando di fare sia possibile in un documento LaTeX, che la tua sintassi LaTeX sia valida e che tu stia usando stringhe non elaborate se necessario per evitare sequenze di escape indesiderate.

  • rcParams["text.latex.preamble"](predefinito: '') non è ufficialmente supportato. Questa opzione offre molta flessibilità e molti modi per causare problemi. Si prega di disabilitare questa opzione prima di segnalare problemi alla mailing list.

  • Se hai ancora bisogno di aiuto, consulta Ottenere aiuto .

Galleria generata da Sphinx-Gallery