matplotlib.dviread
Модуль для чтения файлов dvi, выводимых TeX. Несколько ограничений делают его (в настоящее время) непригодным для использования в качестве универсального препроцессора 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:
...
- классmatplotlib.dviread.Dvi(filename, dpi)[source]
-
Базируется на
objectЧтец для файла dvi ("device-independent"), создаваемого TeX.
Текущая реализация может только итерироваться по страницам в порядке, и даже не пытается проверить постскрипт.
Этот класс можно использовать как контекстный менеджер для закрытия базового файла при выходе. Страницы можно читать с помощью итерации. Вот чрезмерно упрощенный способ извлечения текста без попытки обнаружения пробелов:
>>> 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()[source]
-
Закрыть базовый файл, если он открыт.
- классmatplotlib.dviread.DviFont(scale, tfm, texname, vf)[source]
-
Базируется на
objectИнкапсуляция шрифта, на который может ссылаться файл DVI.
Этот класс содержит texname и размер шрифта, поддерживает сравнение и знает ширины глифов в тех же единицах, что и файл AFM. Также существуют внутренние атрибуты (для использования в dviread.py), которые не используются для сравнения.
Размер в пунктах Adobe (преобразованных из пунктов TeX).
- Параметры:
-
- scalefloat
-
Коэффициент, на который шрифт масштабируется относительно его естественного размера.
- tfmTfm
-
Метрики шрифта TeX для этого шрифта
- texnamebytes
-
Имя шрифта, используемое в TeX и друзьях, как строка ASCII-байтов. Обычно это сильно отличается от любых внешних имён шрифтов;
PsfontsMapможет быть использован для поиска внешнего имени шрифта. - vfVf
-
Файл шрифта TeX "виртуальный шрифт", или None, если этот шрифт не виртуальный.
- Атрибуты:
-
- texnamebytes
- sizefloat
-
Размер шрифта в пунктах Adobe, преобразованный из немного меньших пунктов TeX.
- widthslist
-
Ширина глифов в единицах пространства глифов, как правило, 1/1000-ые от размера пункта.
- size
- texname
- widths
- классmatplotlib.dviread.PsFont(texname, psname, effects, encoding, filename)[source]
-
Базируется на
tupleСоздать новый экземпляр PsFont(texname, psname, effects, encoding, filename)
- effects
-
Псевдоним для поля номер 2
- encoding
-
Псевдоним для поля номер 3
- filename
-
Псевдоним для поля номер 4
- psname
-
Псевдоним для поля номер 1
- texname
-
Псевдоним для поля номер 0
- классmatplotlib.dviread.PsfontsMap(filename)[source]
-
Базируется на
objectФайл в формате psfonts.map, отображающий шрифты TeX на шрифты PS.
- Параметры:
-
- filenamestr или path-like
Примечания
По историческим причинам TeX знает многие шрифты Type-1 по другим именам, чем внешний мир. (В частности, имена должны помещаться в восемь символов.) Кроме того, родные шрифты TeX — это не шрифты Type-1, а Metafont, который непросто преобразовать в PostScript, за исключением битовой карты. Хотя высококачественные преобразования в формат Type-1 существуют и поставляются с современными дистрибутивами TeX, нам нужно знать, какие шрифты Type-1 являются аналогами каких родных шрифтов. По этим причинам требуется отображение от внутренних имён шрифтов к именам файлов шрифтов.
Дерево texmf обычно включает файлы отображения, например
psfonts.map,pdftex.map, илиdvipdfm.map. Файлpsfonts.mapиспользуется dvips,pdftex.map— pdfTeX, аdvipdfm.map— dvipdfm.psfonts.mapможет избежать встраивания 35 шрифтов PostScript (т.е. не иметь имени файла для них, как в примере Times-Bold выше), тогда как файлы, относящиеся к pdf, возможно, избегают только шрифтов pdf "Base 14". Но пользователь может настроить эти файлы иначе.Примеры
>>> 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
- classmatplotlib.dviread.Tfm(filename)[source]
-
Bases:
objectФайл метрик шрифта TeX.
Данная реализация охватывает только минимум, необходимый для класса Dvi.
- Параметры:
-
- filenamestr или путь
- Атрибуты:
-
- checksumint
-
Используется для проверки на соответствие файлу dvi.
- design_sizeint
-
Размер шрифта по умолчанию (единицы неизвестны)
- width, height, depthdict
-
Размеры каждого символа, необходимо масштабировать с помощью коэффициента, указанного в файле dvi. Это словари, так как индексация может не начинаться с 0.
- checksum
- depth
- design_size
- height
- width
- classmatplotlib.dviread.Vf(filename)[source]
-
Bases:
DviВиртуальный шрифт (*.vf файл), содержащий подпрограммы для файлов dvi.
- Параметры:
-
- filenamestr или путь
Примечания
Формат виртуального шрифта является производным от 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)[source]
-
Поиск файла в дереве texmf с помощью kpathsea.
Библиотека kpathsea, предоставляемая большинством существующих дистрибутивов TeX, как на Unix-подобных системах, так и на Windows (MikTeX), вызывается через долгоживущий процесс luatex, если luatex установлен, или через kpsewhich в противном случае.
- Параметры:
-
- filenamestr или путь
- Возбуждает:
-
- FileNotFoundError
-
Если файл не найден.
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.8.4/api/dviread.html