matplotlib.dviread#

一个用于读取 TeX 输出的 dvi 文件的模块。由于一些限制,这目前不适合作为通用的 dvi 预处理器,但它目前被 pdf 后端用于处理 usetex 文本。

接口:

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)[源代码][源代码]#

基类:object

一个用于读取由 TeX 生成的 dvi(“设备无关”)文件的阅读器。

当前的实现只能按顺序遍历页面,甚至不尝试验证后记。

这个类可以用作上下文管理器,在退出时关闭底层文件。可以通过迭代读取页面。以下是一个过于简单的方法来提取文本,而不尝试检测空白:

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

从名为 filename 的文件中读取数据,并将 TeX 的内部单位转换为每英寸的 dpi 单位。dpi 仅设置单位,并不限制分辨率。使用 None 返回 TeX 的内部单位。

close()[源代码][源代码]#

如果底层文件是打开的,则关闭它。

class matplotlib.dviread.DviFont(scale, tfm, texname, vf)[源代码][源代码]#

基类:object

DVI 文件可以引用的字体的封装。

此类保存了字体的tex名称和大小,支持比较,并且知道与AFM文件相同单位的字形宽度。还有一些内部属性(供dviread.py使用),这些属性*不*用于比较。

尺寸是以Adobe点为单位(从TeX点转换而来)。

参数:
比例float

字体从其自然大小缩放的倍数。

tfmTfm

此字体的 TeX 字体度量

texname字节

字体名称,作为TeX及其相关程序内部使用的ASCII字节串。这通常与任何外部字体名称非常不同;可以使用 PsfontsMap 来查找字体的外部名称。

vfVf

一个 TeX “虚拟字体” 文件,如果该字体不是虚拟的,则为 None。

属性:
texname字节
大小float

Adobe 点中的字体大小,从稍小的 TeX 点转换而来。

宽度列表

字形在字形空间单位中的宽度,通常是点大小的1/1000。

size#

!! 由 numpydoc 处理 !!

texname#

!! 由 numpydoc 处理 !!

widths#

!! 由 numpydoc 处理 !!

class matplotlib.dviread.PsFont(texname, psname, effects, encoding, filename)[源代码]#

基类:tuple

创建 PsFont(texname, psname, effects, encoding, filename) 的新实例

effects#

字段编号2的别名

encoding#

字段编号 3 的别名

filename#

字段编号 4 的别名

psname#

字段编号1的别名

texname#

字段编号 0 的别名

class matplotlib.dviread.PsfontsMap(filename)[源代码][源代码]#

基类:object

一个格式化的 psfonts.map 文件,用于将 TeX 字体映射到 PS 字体。

参数:
文件名str 或 path-like

注释

由于历史原因,TeX 对许多 Type-1 字体的命名与外界不同。(例如,名称必须适合八个字符。)此外,TeX 的原生字体不是 Type-1 而是 Metafont,除了作为位图外,将其转换为 PostScript 并不简单。虽然高质量的 Type-1 格式转换存在并且随现代 TeX 发行版一起提供,但我们仍然需要知道哪些 Type-1 字体是哪些原生字体的对应物。因此,需要一个从内部字体名称到字体文件名称的映射。

一个 texmf 树通常包括映射文件,例如 psfonts.mappdftex.mapdvipdfm.map。文件 psfonts.mapdvips 使用,pdftex.mappdfTeX 使用,而 dvipdfm.mapdvipdfm 使用。psfonts.map 可能会避免嵌入 35 种 PostScript 字体(即,没有它们的文件名,如上面的 Times-Bold 示例),而与 pdf 相关的文件可能只避免“Base 14”pdf 字体。但用户可能已经以不同的方式配置了这些文件。

示例

>>> 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)[源代码][源代码]#

基类:object

一个 TeX 字体度量文件。

此实现仅涵盖 Dvi 类所需的最基本内容。

参数:
文件名str 或 path-like
属性:
校验和整数

用于验证dvi文件。

设计尺寸整数

字体的设计尺寸(未知单位)

宽度, 高度, 深度dict

每个字符的尺寸,需要根据dvi文件中指定的因子进行缩放。这些是字典,因为索引可能不是从0开始。

checksum#

!! 由 numpydoc 处理 !!

depth#

!! 由 numpydoc 处理 !!

design_size#

!! 由 numpydoc 处理 !!

height#

!! 由 numpydoc 处理 !!

width#

!! 由 numpydoc 处理 !!

class matplotlib.dviread.Vf(filename)[源代码][源代码]#

基类:Dvi

包含用于 DVI 文件的子程序的虚拟字体(*.vf 文件)。

参数:
文件名str 或 path-like

注释

虚拟字体格式是dvi的一个衍生品:http://mirrors.ctan.org/info/knuth/virtual-fonts 这个类重用了 Dvi 的一些机制,但替换了 _read 循环和调度机制。

示例

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

从名为 filename 的文件中读取数据,并将 TeX 的内部单位转换为每英寸的 dpi 单位。dpi 仅设置单位,并不限制分辨率。使用 None 返回 TeX 的内部单位。

matplotlib.dviread.find_tex_file(filename)[源代码][源代码]#

使用 kpathsea 在 texmf 树中查找文件。

kpathsea 库,由大多数现有的 TeX 发行版提供,无论是在类 Unix 系统上还是在 Windows 上(MikTeX),如果安装了 luatex,则通过一个长期存在的 luatex 进程调用,否则通过 kpsewhich 调用。

参数:
文件名str 或 path-like
引发:
文件未找到错误

如果文件未找到。