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:
objectEin 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.
- class matplotlib.dviread.DviFont(scale, tfm, texname, vf)[Quelle]#
Bases:
objectKapselung 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;
PsfontsMapkann 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:
tupleErstellt 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:
objectEine 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.mapoderdvipdfm.map. Die Dateipsfonts.mapwird von dvips verwendet,pdftex.mapvon pdfTeX unddvipdfm.mapvon dvipdfm.psfonts.mapvermeidet 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:
objectEine 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:
DviEine 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
Dviwieder, ersetzt aber die Schleife_readund 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.