Как сопоставить шрифты между математическим режимом LaTeX и рисунком, сгенерированным в Python?

Как сопоставить шрифты между математическим режимом LaTeX и рисунком, сгенерированным в Python?

Я пытаюсь создать рисунок на Python, текст которого соответствует (по крайней мере, близко) шрифту математического режима Latex. Однако я не нахожу в сети никакой информации, которая дала бы результаты, близкие к желаемому шрифту, особенно по греческим символам. Например, Latex выдает следующее:

\documentclass{article}
\usepackage{textgreek}
\begin{document}
\textit{testθτμ}

$test\theta\tau\mu$

\end{document}

Выход латекса

Я пытаюсь воспроизвести вторую строку текста. Основываясь на других ответах на SE и информации, которую я нашел в сети, я попробовал следующие шрифты и столкнулся со следующими проблемами:

Современный компьютер: слишком завитой/курсивный

Computer Modern Sans: другой стиль, наиболее заметен на tau

New Computer Modern 10: слишком завитой/курсивный

Новая компьютерная современная математика: не курсив

Латинская современная математика: не курсив

Я что-то упускаю? Я просто не нахожу курсивные варианты математических шрифтов или математический режим использует совершенно другой шрифт? Буду признателен за любые подсказки; любые ссылки на загрузку будут очень признательны.

решение1

Классический TeX не используеташрифт math. Шрифты имеют только 127 символов, и поэтому используется много (до 16) шрифтов на одно математическое выражение. (Система допускает 256 символов на шрифт, но использование 8 бит считалось слишком радикальным в 1980 году, поэтому используется только нижняя половина каждого шрифта)

так

\documentclass{article}
\showoutput
\begin{document}

$test\theta\tau\mu+1$

\end{document}

использует cmmi10.pfbдля test(с буквами в стандартных позициях ascii). Он использует тот же шрифт, но позиции для Ctrl-R, Ctrl-\, и Ctrl-Vдля греческого и он использует cmr10.pfbдля +и 1.

Это значительно затрудняет использование математических шрифтов TeX из других систем, даже если они могут использовать шрифты Type 1.

Математический шрифт Unicode содержит все эти символы в одном шрифте, в стандартных позициях, что значительно упрощает его использование в других системах.

Обработка с помощью LuaLaTeX

\documentclass{article}
\usepackage{unicode-math}
\showoutput
\begin{document}

$test\theta\tau\mu+1$

\end{document}

Все символы взяты из латинской современной математики ( latinmodern-math.otf) в стандартных слотах Unicode, обратите внимание на математический курсив.отдельныйперсонажи.

Полученная строка будет работать с любым математическим шрифтом Unicode, а не только с Latin Modern.

Например, на этом сайте он подхватит любой шрифт, установленный локально (здесь используется шрифт Windows Segoe UI Symbol).

решение2

(слишком длинно для комментария, поэтому опубликовано как ответ)

В этом ответе я в основном рассматриваю утверждение OP, что Latin Modern Math (LMM) "кажется, не имеет [математического] курсива". Я озадачен этим утверждением. Действительно, следующий пример, который нужно скомпилировать с помощью XeLaTeX или LuaLaTeX, демонстрирует, что LMM имеет математический курсив латинских и греческих букв.

Конечно, если вы хотите написать что-то курсивом в текстовом режиме, вам следует использовать текстовые курсивные глифы, а не математические курсивные глифы.

Пакет unicode-mathпредоставляет команду \symupдля записи символов в прямом режиме.

введите описание изображения здесь

\documentclass{article}
\usepackage{unicode-math} % for '\setmathfont' macro; load 'fontspec' package automatically
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}

\begin{document}

\textit{abcxyz} $abcxzy$ $\theta\tau\mu$ abcxyz $\symup{\theta\tau\mu}$

\end{document}

решение3

Этот пост показывает еще один инструмент в дополнение к другим хорошим ответам. Следующее основано на вашем MWE

\documentclass{article}
\usepackage{textgreek}
\begin{document}
\textit{testθτμ}%ϑ

$test\theta\tau\mu$

\end{document}

Вы могли бы использоватьpdfшрифтыв оболочке по вашему выбору для создания таблицы всех шрифтов PDF-файла (я заменил некоторые части на [...]):

$ pdflatex Example.SE.tex; echo "\nTable for Ryan White:"; pdffonts Example.SE.pdf
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex)
[...]
Output written on Example.SE.pdf (1 page, 39405 bytes).
Transcript written on Example.SE.log.

Table for Ryan White:
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
MSKRKD+CMTI10                        Type 1            Builtin          yes yes yes      4  0
TPJLSH+grmi1000                      Type 1            Builtin          yes yes yes      5  0
OIWUEJ+SFTI1000                      Type 1            Custom           yes yes yes      6  0
RYTSZC+CMMI10                        Type 1            Builtin          yes yes yes      7  0
SDXKYB+CMR10                         Type 1            Builtin          yes yes yes      8  0

Я получаю похожую таблицу $ latex Example.SE.tex; vipdfm Example.SE.dvi; echo "\nTable for Ryan White:"; pdffonts Example.SE.pdf:

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
BGNOPA+CMTI10                        Type 1C           Builtin          yes yes yes      4  0
DOYMNM+grmi1000                      Type 1C           Builtin          yes yes yes      5  0
VQMNVE+SFTI1000                      Type 1C           WinAnsi          yes yes yes      6  0
SIZLWA+CMMI10                        Type 1C           Builtin          yes yes yes      7  0
ZIUSPE+CMR10                         Type 1C           Builtin          yes yes yes      8  0

Вы найдете описания таких сокращений, какCMTI10(Computer Modern Italic, «более сжатый и немного светлее», размер 10pt) наhttps://ctan.org/tex-archive/fonts/cm/mf. Другая информация доступна наhttps://eng.m.fontke.com/font/10030505/detail/.СФТИ1000указан в SFTI1000 как «Postscript-имя» Computer Modern.grmi1000кажется, это курсив один изКлаудио Беккари греческийшрифты, см. https://ctan.org/tex-archive/fonts/greek/cbfonts/fonts/tfm/cbgreekиhttps://ctan.org/pkg/cbgreek-complete. Если удалить \usepackage{textgreek}и \textit{testθτμ}из файла и скомпилировать снова, то останутся только CMMI10 (Computer Modern Italic, «не сжатый и не совсем такой легкий», 10pt) и CMR10 (Computer Modern Italic, «базовый», 10pt).

Таким образом, точный ответ ботаника на ваш вопрос (до редактирования) «Какой шрифт в математическом режиме Latex?»:CMMI10 (Computer Modern Italic, «не сжатый и не такой светлый», 10pt)относительно установки, упомянутой выше.

Обратите внимание на различияLuaTeX:

$ lualatex Example.SE.tex; echo "\nTable for Ryan White:"; pdffonts Example.SE.pdf 
This is LuaHBTeX, Version 1.17.0 (TeX Live 2023) 
[...]
Output written on Example.SE.pdf (1 page, 12154 bytes).
Transcript written on Example.SE.log.

Table for Ryan White:
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
EJJTSY+LMRoman10-Italic              CID Type 0C       Identity-H       yes yes yes      4  0
RYTSZC+CMMI10                        Type 1            Builtin          yes yes no       5  0
JFRMQG+LMRoman10-Regular             CID Type 0C       Identity-H       yes yes yes      6  0

LMРоманэто латинский модерн.

Компиляция

\documentclass{article}
\usepackage{textgreek}
\usepackage{unicode-math} % ADDED
\begin{document}
\textit{testθτμ}

$test\theta\tau\mu$

\end{document}

дает

$ lualatex Example.SE.tex; echo "\nTable for Ryan White:"; pdffonts Example.SE.pdf 
This is LuaHBTeX, Version 1.17.0 (TeX Live 2023) 
[...]
Output written on Example.SE.pdf (1 page, 6180 bytes).
Transcript written on Example.SE.log.

Table for Ryan White:
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
EJJTSY+LMRoman10-Italic              CID Type 0C       Identity-H       yes yes yes      4  0
WLUBUQ+LatinModernMath-Regular       CID Type 0C       Identity-H       yes yes yes      5  0
JFRMQG+LMRoman10-Regular             CID Type 0C       Identity-H       yes yes yes      6  0

Связанный контент