如何匹配 LaTeX 数学模式和 Python 中生成的图形之间的字体?

如何匹配 LaTeX 数学模式和 Python 中生成的图形之间的字体?

我正在尝试用 Python 创建一个图形,其文本与 Latex 的数学模式字体匹配(至少非常接近)。但是,我在网上找不到任何信息可以提供接近所需字体的结果,尤其是希腊字符。例如,Latex 产生以下内容:

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

$test\theta\tau\mu$

\end{document}

Latex 输出

我正在尝试复制第二行文本。根据 SE 上的其他答案以及我在网上找到的信息,我尝试了以下字体,但遇到了以下问题:

计算机现代:太卷曲/草书了

Computer Modern Sans:风格不同,在 tau 上最为明显

新电脑现代 10:太卷曲/草书

新计算机现代数学:不是斜体

拉丁现代数学:非斜体

我是不是漏掉了什么?我是不是没找到数学字体的斜体变体,还是数学模式使用的是完全不同的字体?如能提供任何线索,我将不胜感激;如能提供任何下载链接,我将不胜感激。

答案1

经典 TeX 不使用A数学字体。字体只有 127 个字符,因此每个数学表达式使用很多字体(最多 16 个)。(系统允许每个字体有 256 个字符,但在 1980 年使用 8 位被认为过于激进,因此只使用每个字体的下半部分)

所以

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

$test\theta\tau\mu+1$

\end{document}

使用cmmi10.pfbtest字母位于标准 ascii 位置)。它使用相同的字体,但Ctrl-RCtrl-\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 的说法,即拉丁现代数学 (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字体在您选择的 shell 中生成 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/SFTI1000在 SFTI1000 中被列为 Computer Modern 的“Postscript 名称”。grmi1000似乎是斜体字之一克劳迪奥·贝卡利 希腊字体,请参阅 https://ctan.org/tex-archive/fonts/greek/cbfonts/fonts/tfm/cbgreekhttps://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

相关内容