matplotlib.dviread#

Ein Modul zum Lesen von DVI-Dateien, die von TeX ausgegeben werden. Mehrere Einschränkungen machen dies derzeit nicht nützlich als allgemeiner DVI-Präprozessor, aber es wird derzeit vom PDF-Backend zur Verarbeitung von usetex-Text verwendet.

Schnittstelle

with Dvi(filename, 72) as dvi:
    # iterate over pages:
    for page in dvi:
        w, h, d = page.width, page.height, page.descent
        for x, y, font, glyph, width in page.text:
            fontname = font.texname
            pointsize = font.size
            ...
        for x, y, height, width in page.boxes:
            ...
class matplotlib.dviread.Dvi(filename, dpi)[Quelle]#

Bases: object

Ein Leser für eine DVI-Datei ("device-independent"), wie sie von TeX erzeugt wird.

Die aktuelle Implementierung kann nur Seiten in Reihenfolge durchlaufen und versucht nicht einmal, die Postamble zu verifizieren.

Diese Klasse kann als Kontextmanager verwendet werden, um die zugrunde liegende Datei beim Beenden zu schließen. Seiten können durch Iteration gelesen werden. Hier ist eine übermäßig einfache Möglichkeit, Text zu extrahieren, ohne zu versuchen, Whitespace zu erkennen.

>>> with matplotlib.dviread.Dvi('input.dvi', 72) as dvi:
...     for page in dvi:
...         print(''.join(chr(t.glyph) for t in page.text))

Liest die Daten aus der Datei mit dem Namen filename und konvertiert die internen TeX-Einheiten in Einheiten von dpi pro Zoll. dpi legt nur die Einheiten fest und begrenzt nicht die Auflösung. Verwenden Sie None, um die internen TeX-Einheiten zurückzugeben.

close()[Quelle]#

Schließt die zugrunde liegende Datei, wenn sie geöffnet ist.

class matplotlib.dviread.DviFont(scale, tfm, texname, vf)[Quelle]#

Bases: object

Kapselung einer Schriftart, auf die eine DVI-Datei verweisen kann.

Diese Klasse speichert den TeX-Namen und die Größe einer Schriftart, unterstützt Vergleiche und kennt die Breiten von Glyphen in denselben Einheiten wie die AFM-Datei. Es gibt auch interne Attribute (zur Verwendung durch dviread.py), die nicht für Vergleiche verwendet werden.

Die Größe ist in Adobe-Punkten (konvertiert von TeX-Punkten).

Parameter:
scalefloat

Faktor, um den die Schriftart von ihrer natürlichen Größe skaliert wird.

tfmTfm

TeX Font Metrics für diese Schriftart.

texnamebytes

Name der Schriftart, wie sie intern von TeX und verwandten Programmen verwendet wird, als ASCII-Bytestring. Dies unterscheidet sich normalerweise stark von allen externen Schriftartnamen; PsfontsMap kann verwendet werden, um den externen Namen der Schriftart zu finden.

vfVf

Eine TeX "virtuelle Schriftart"-Datei oder None, wenn diese Schriftart nicht virtuell ist.

Attribute:
texnamebytes
sizefloat

Größe der Schriftart in Adobe-Punkten, konvertiert von den etwas kleineren TeX-Punkten.

widthslist

Breiten von Glyphen in Glyphen-Raum-Einheiten, typischerweise 1/1000stel der Punktgröße.

size#
texname#
widths#
class matplotlib.dviread.PsFont(texname, psname, effects, encoding, filename)[Quelle]#

Bases: tuple

Erstellt eine neue Instanz von PsFont(texname, psname, effects, encoding, filename).

effects#

Alias für Feldnummer 2.

encoding#

Alias für Feldnummer 3.

filename#

Alias für Feldnummer 4.

psname#

Alias für Feldnummer 1.

texname#

Alias für Feldnummer 0.

class matplotlib.dviread.PsfontsMap(filename)[Quelle]#

Bases: object

Eine Datei im psfonts.map-Format, die TeX-Schriftarten auf PS-Schriftarten abbildet.

Parameter:
filenamestr oder pfadähnlich

Anmerkungen

Aus historischen Gründen kennt TeX viele Type-1-Schriftarten unter anderen Namen als die Außenwelt. (Zum einen müssen die Namen in acht Zeichen passen.) Außerdem sind TeXs native Schriftarten keine Type-1-Schriftarten, sondern Metafont, was schwierig in PostScript zu konvertieren ist, außer als Bitmap. Obwohl qualitativ hochwertige Konvertierungen in das Type-1-Format existieren und mit modernen TeX-Distributionen geliefert werden, müssen wir wissen, welche Type-1-Schriftarten die Gegenstücke zu welchen nativen Schriftarten sind. Aus diesen Gründen ist eine Abbildung von internen Schriftartnamen auf Schriftartdateinamen erforderlich.

Ein texmf-Baum enthält typischerweise Abbildungsdateien mit Namen wie z. B. psfonts.map, pdftex.map oder dvipdfm.map. Die Datei psfonts.map wird von dvips verwendet, pdftex.map von pdfTeX und dvipdfm.map von dvipdfm. psfonts.map vermeidet möglicherweise das Einbetten der 35 PostScript-Schriftarten (d. h. hat keinen Dateinamen dafür, wie im Times-Bold-Beispiel oben), während die pdf-bezogenen Dateien möglicherweise nur die "Base 14"-PDF-Schriftarten vermeiden. Der Benutzer kann diese Dateien jedoch unterschiedlich konfiguriert haben.

Beispiele

>>> map = PsfontsMap(find_tex_file('pdftex.map'))
>>> entry = map[b'ptmbo8r']
>>> entry.texname
b'ptmbo8r'
>>> entry.psname
b'Times-Bold'
>>> entry.encoding
'/usr/local/texlive/2008/texmf-dist/fonts/enc/dvips/base/8r.enc'
>>> entry.effects
{'slant': 0.16700000000000001}
>>> entry.filename
class matplotlib.dviread.Tfm(filename)[Quelle]#

Bases: object

Eine TeX Font Metric-Datei.

Diese Implementierung deckt nur das absolute Minimum ab, das von der Dvi-Klasse benötigt wird.

Parameter:
filenamestr oder pfadähnlich
Attribute:
checksumint

Wird zur Verifizierung gegen die DVI-Datei verwendet.

design_sizeint

Konstruktionsgröße der Schriftart (unbekannte Einheiten).

width, height, depthdict

Abmessungen jedes Zeichens, müssen mit dem im DVI-Format angegebenen Faktor skaliert werden. Dies sind Dictionaries, da die Indizierung nicht bei 0 beginnen muss.

checksum#
depth#
design_size#
height#
width#
class matplotlib.dviread.Vf(filename)[Quelle]#

Basiert auf: Dvi

Eine virtuelle Schriftart (*.vf-Datei) mit Unterroutinen für DVI-Dateien.

Parameter:
filenamestr oder pfadähnlich

Anmerkungen

Das Format der virtuellen Schriftarten ist eine Ableitung von DVI: http://mirrors.ctan.org/info/knuth/virtual-fonts Diese Klasse verwendet einige der Mechanismen von Dvi wieder, ersetzt aber die Schleife _read und den Dispatch-Mechanismus.

Beispiele

vf = Vf(filename)
glyph = vf[code]
glyph.text, glyph.boxes, glyph.width

Liest die Daten aus der Datei mit dem Namen filename und konvertiert die internen TeX-Einheiten in Einheiten von dpi pro Zoll. dpi legt nur die Einheiten fest und begrenzt nicht die Auflösung. Verwenden Sie None, um die internen TeX-Einheiten zurückzugeben.

matplotlib.dviread.find_tex_file(filename)[Quelle]#

Findet eine Datei im texmf-Baum unter Verwendung von kpathsea.

Die kpathsea-Bibliothek, die von den meisten bestehenden TeX-Distributionen sowohl auf Unix-ähnlichen Systemen als auch auf Windows (MikTeX) bereitgestellt wird, wird über einen langlebigen luatex-Prozess aufgerufen, wenn luatex installiert ist, andernfalls über kpsewhich.

Parameter:
filenamestr oder pfadähnlich
Löst aus:
FileNotFoundError

Wenn die Datei nicht gefunden wird.