Text-Rendering mit LaTeX#

Matplotlib kann LaTeX zum Rendern von Text verwenden. Dies wird durch Setzen von text.usetex : True in Ihren rcParams aktiviert oder durch Setzen der Eigenschaft usetex auf True für einzelne Text-Objekte. Die Textverarbeitung über LaTeX ist langsamer als das sehr leistungsfähige mathtext von Matplotlib, aber flexibler, da verschiedene LaTeX-Pakete (Schriftartenpakete, Mathematikpakete usw.) verwendet werden können. Die Ergebnisse können beeindruckend sein, besonders wenn Sie darauf achten, die gleichen Schriftarten in Ihren Abbildungen wie im Hauptdokument zu verwenden.

Die LaTeX-Unterstützung von Matplotlib erfordert eine funktionierende LaTeX-Installation. Für die *Agg-Backends ist zusätzlich dvipng erforderlich; für das PS-Backend sind zusätzlich PSfrag, dvips und Ghostscript erforderlich. Für die PDF- und SVG-Backends wird, wenn LuaTeX vorhanden ist, dieses zur Beschleunigung einiger Nachbearbeitungsschritte verwendet. Beachten Sie jedoch, dass es nicht zum Parsen des TeX-Strings selbst verwendet wird (nur LaTeX wird unterstützt). Die ausführbaren Dateien für diese externen Abhängigkeiten müssen sich alle in Ihrem PATH befinden.

Nur eine kleine Anzahl von Schriftfamilien (definiert durch das PSNFSS-Schema) wird unterstützt. Sie sind hier aufgeführt, mit den entsprechenden LaTeX-Schriftartenauswahlbefehlen und LaTeX-Paketen, die automatisch verwendet werden.

Generische Familie

Schriftarten

Serif (\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)

Kursiv (\rmfamily)

Zapf Chancery (chancery)

Monospace (\ttfamily)

Computer Modern Typewriter, Courier (courier)

Die Standard-Schriftfamilie (die kein Laden eines LaTeX-Pakets erfordert) ist Computer Modern. Alle anderen Familien sind Adobe-Schriftarten. Times und Palatino haben ihre eigenen begleitenden Mathematik-Schriftarten, während die anderen Adobe-Serif-Schriftarten die Computer Modern Mathematik-Schriftarten verwenden.

Um LaTeX zu aktivieren und eine Schriftart auszuwählen, verwenden Sie z. B.

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

oder äquivalent, setzen Sie Ihr matplotlibrc auf

text.usetex : true
font.family : Helvetica

Es ist auch möglich, stattdessen font.family auf einen der generischen Familiennamen zu setzen und dann die entsprechende generische Familie zu konfigurieren; z. B.

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

(dies war der erforderliche Ansatz bis Matplotlib 3.5).

Hier ist das Standardbeispiel: Mathematische Gleichungen mit TeX rendern

../../../_images/sphx_glr_tex_demo_001.png

Beachten Sie, dass der Anzeigemodus für mathematische Gleichungen ($$ e=mc^2 $$) nicht unterstützt wird. Das Hinzufügen des Befehls \displaystyle, wie im obigen Demo, liefert jedoch die gleichen Ergebnisse.

Nicht-ASCII-Zeichen (z. B. das Grad-Zeichen in der y-Achsenbeschriftung oben) werden unterstützt, in dem Umfang, in dem sie von inputenc unterstützt werden.

Hinweis

Um eine Konsistenz mit dem Nicht-usetex-Fall zu gewährleisten, behandelt Matplotlib Zeilenumbrüche speziell, sodass einzelne Zeilenumbrüche zu Zeilenumbrüchen führen (anstatt als Leerzeichen im Standard-LaTeX interpretiert zu werden).

Matplotlib verwendet das underscore-Paket, sodass Unterstriche (_) im Textmodus "as-is" gedruckt werden (anstatt einen Fehler wie im Standard-LaTeX zu verursachen). Unterstriche leiten im mathematischen Modus immer noch Unterindizes ein.

Hinweis

Bestimmte Zeichen erfordern eine spezielle Maskierung in TeX, wie z. B.

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

Daher verhalten sich diese Zeichen je nach rcParams["text.usetex"] (Standard: False) unterschiedlich. Wie oben erwähnt, müssen Unterstriche (_) außerhalb des mathematischen Modus nicht maskiert werden.

Hinweis

LaTeX verwendet standardmäßig eine Serifenschrift für mathematische Gleichungen (auch wenn rcParams["font.family"] = "sans-serif" gesetzt ist). Wenn gewünscht, können Sie durch Hinzufügen von \usepackage{sfmath} zu rcParams["text.latex.preamble"] LaTeX dazu bringen, Sans-Serif-Mathematik auszugeben.

PostScript-Optionen#

Um gekapselte PostScript (EPS)-Dateien zu erzeugen, die in ein neues LaTeX-Dokument eingebettet werden können, besteht das Standardverhalten von Matplotlib darin, die Ausgabe zu destillieren. Dies entfernt einige von LaTeX verwendete PostScript-Operatoren, die in einer EPS-Datei ungültig sind. Dieser Schritt führt zu Ergebnissen, die für einige Benutzer möglicherweise nicht akzeptabel sind, da der Text grob gerastert und in Bitmaps konvertiert wird, die nicht skalierbar sind wie Standard-PostScript, und der Text nicht durchsuchbar ist. Eine Problemumgehung besteht darin, rcParams["ps.distiller.res"] (Standard: 6000) in Ihren rc-Einstellungen auf einen höheren Wert (vielleicht 6000) zu setzen, was größere Dateien erzeugt, aber besser aussehen und vernünftig skalieren kann. Eine bessere Problemumgehung, die Poppler oder Xpdf erfordert, kann aktiviert werden, indem rcParams["ps.usedistiller"] (Standard: None) auf xpdf geändert wird. Diese Alternative erzeugt PostScript ohne Textrasterung, sodass es richtig skaliert, in Adobe Illustrator bearbeitet und in PDF-Dokumenten durchsucht werden kann.

Mögliche Probleme#

  • Unter Windows muss möglicherweise die Umgebungsvariable PATH geändert werden, um die Verzeichnisse aufzunehmen, die die ausführbaren Dateien für LaTeX, dvipng und Ghostscript enthalten. Einzelheiten finden Sie unter Umgebungsvariablen und Umgebungsvariablen unter Windows setzen.

  • Wenn Sie MiKTeX mit Computer Modern-Schriftarten verwenden und seltsame *Agg- und PNG-Ergebnisse erhalten, gehen Sie zu MiKTeX/Optionen und aktualisieren Sie Ihre Formatdateien.

  • Unter Ubuntu und Gentoo enthält die Basisinstallation von texlive das Paket type1cm nicht. Möglicherweise müssen Sie einige der zusätzlichen Pakete installieren, um alle Vorteile zu erhalten, die mit anderen LaTeX-Distributionen gebündelt sind.

Fehlerbehebung#

  • Versuchen Sie, Ihr Verzeichnis .matplotlib/tex.cache zu löschen. Wenn Sie nicht wissen, wo Sie .matplotlib finden, siehe Standorte des Matplotlib-Konfigurations- und Cache-Verzeichnisses.

  • Stellen Sie sicher, dass LaTeX, dvipng und Ghostscript jeweils funktionieren und sich in Ihrem PATH befinden.

  • Stellen Sie sicher, dass das, was Sie zu tun versuchen, in einem LaTeX-Dokument möglich ist, dass Ihre LaTeX-Syntax gültig ist und dass Sie Rohzeichenketten verwenden, falls erforderlich, um unbeabsichtigte Escape-Sequenzen zu vermeiden.

  • rcParams["text.latex.preamble"] (Standard: '') wird nicht offiziell unterstützt. Diese Option bietet viel Flexibilität und viele Möglichkeiten, Probleme zu verursachen. Bitte deaktivieren Sie diese Option, bevor Sie Probleme melden.

  • Wenn Sie immer noch Hilfe benötigen, lesen Sie bitte Hilfe erhalten.

Galerie generiert von Sphinx-Gallery