关于如何在 lualatex 中设置 Minion Pro 进行数学运算的一般指南

关于如何在 lualatex 中设置 Minion Pro 进行数学运算的一般指南

Minion 专业版

是最漂亮的字体之一,随许多 Adob​​e 产品提供。Mn符号字体和软件包,不完全兼容路拉泰克斯

然而最好的选择是小黄人数学,它是商业性的,几乎没有任何免费替代品。但是...

我也想使用 Minion Pro 进行 lualatex 中的数学运算 - 我该怎么做?

这个答案已经给出了一个很好的起点, 这个针对此问题提供了详尽的解释。关于此主题还有许多其他问题,但我还没有找到一个能提供完整解决方案的问题。

使用链接的起点,人们已经得到了所有字母Minion 专业版在数学环境中以及由Mn符号

\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb,mathrsfs}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont[Numbers = OldStyle,Ligatures = TeX,SmallCapsFeatures = {Renderer=Basic}]{Minion Pro}
\setmathfont{MnSymbol}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Minion Pro}
\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{MinionPro-Bold}
\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{MinionPro-It}
\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{MinionPro-BoldIt}
\setmathrm{Minion Pro}

\begin{document}

\begin{equation}
 \mathscr{D}^{\gamma}   f(t)= \mathscr{D}^{m} \mathscr{I}^{m-\gamma}  
 f(t)=\frac{\partial^m }{\partial t^m} \Bigg[ \frac{1}{\Gamma(m-\gamma)}  
 \int\limits_{0}^{t} \frac{f(\tau )}{(t-\tau)^{\gamma-m+1}} ~\partial{\tau}  \Bigg] \:, 
\end{equation}

\begin{equation}
A =
\left( \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33} 
\end{array} \right) \qquad
B =
\begin{pmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33} 
\end{pmatrix} 
\end{equation}

\begin{equation}
y = \sqrt{\frac{z^2}{\ln{z}}} + z \,\Bigg|_{z\,=\,z_0}
\end{equation}

\end{document}

在此处输入图片描述

另一个例子链接答案结果也相当有缺陷。

在此处输入图片描述

有很多事情无法正常工作:

  1. 偏微分\partial和垂直线字符|丢失
  2. 积分和\sum符号太小
  3. 所有括号都不会随着其包装内容的大小而缩放,并且大小说明\Bigg(符也不起作用
  4. 矩阵的括号不起作用
  5. 平方根不按比例缩放
  6. \mathscr没有任何区别
  7. 缺少逗号
  8. MinionPro 中的希腊字母epsilon未定义(至少在旧字体版本中)
  9. 待续 ...

我该如何修复它们?


有一个替代方法避免unicode-math

并使用非unicode实现MnSymbol

\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb,mathrsfs}
\usepackage[no-math]{fontspec}
\usepackage{MnSymbol}


\setmainfont[...

\begin{document}
...

这当然是一个可行的选择,但一切看起来有点混乱,我对结果不满意。

在此处输入图片描述

如果您认为这是更好的方法,请随意发布提供解决方案的答案,让一切变得更加协调。


我知道没有真正的解决方案除非 OpenType 版本的Mn符号已修补以供使用unicode-math。这个问题是自我回答的,因为我认为值得分享(在我看来)令人愉快的结果,尽管这只是一个丑陋的解决方法。

请随时提供更好、更简单的解决方法甚至部分解决方案。

答案1

顶部有底线。

孩子们,不要在家里尝试这个!使用 MnSymbol 和 unicode-math 会浪费你的时间!


提供的符号Mn符号未设置为使用unicode-math。有些缺失,有些大小不可缩放。这些需要用不同的数学字体替换。在我看来XITS 数学做得很好。只需要找到Unicode 字符由于修复。

偏微分\partial

\setmathfont[range={"2202} ]{XITS Math} 

对积分进行一些额外的小调整:

\setmathfont[range={"222B-"2233,"2A0B-"2A1C}]{XITS Math}
\newcommand{\intX}[2]{\int\limits_{\mkern-15mu #1}^{#2} \mkern-15mu}

对于和符号,我个人认为拉丁现代数学符号更匹配:

\setmathfont[range={"2211} ]{Latin Modern Math} 

支架的重量相当重XITS 数学,因此也使用拉丁现代数学在这种情况下:

\setmathfont[range={"005B,"005D,"0028,"0029,"007B,"007D} ]{Latin Modern Math}

不过,垂直线字符太粗了,所以回到XITS 数学

\setmathfont[range={"007C} ]{XITS Math}

修复根:

\setmathfont[range={"002F,"221A}]{XITS Math}

和逗号:

\setmathfont[range={"002C} ]{XITS Math}

最后,\mathscr还有\mathrm角色

\setmathfont[range=\mathscr,StylisticSet={1}]{XITS Math}
\setmathrm{Minion Pro}

这封信\epsilon不见了,但\varepsilon还在起作用。正如我们使用的unicode 数学\let需要在文档开头进行替换:

\AtBeginDocument{%
\let\phi\varphi
\let\epsilon\varepsilon
}

或者\AfterEndPreamble如果出现问题超链接电子工具箱包裹。

另一个问题是斜线/,使用哪种字体进行替换是一个个人喜好问题。

\setmathfont[range={"002F,"2215}]{Latin Modern Math}

但原始 MWE 的作者实际上犯了错误,他应该使用\mathbin{/}而不是 ,/以获得更好的间距。

所有这些修复结合在一起产生了令人满意的结果:

\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb,mathrsfs}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont[Numbers = OldStyle,Ligatures = TeX,SmallCapsFeatures = {Renderer=Basic}]{Minion Pro}
\setsansfont[Numbers={OldStyle,Proportional},Scale=MatchLowercase]{Minion Pro}
\setmonofont[Numbers=OldStyle,Scale=MatchLowercase]{Minion Pro}

\setmathfont{MnSymbol}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Minion Pro}
\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{MinionPro-Bold}
\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{MinionPro-It}
\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{MinionPro-BoldIt}
\setmathfont[range=\mathscr,StylisticSet={1}]{XITS Math}
\setmathfont[range={"005B,"005D,"0028,"0029,"007B,"007D} ]{Latin Modern Math} % brackets
\setmathfont[range={"2202} ]{XITS Math}  % partial
\setmathfont[range={"2211} ]{Latin Modern Math}  % sum
\setmathfont[range={"007C} ]{XITS Math}  % vertical
\setmathfont[range={"221A} ]{XITS Math}  % root
\setmathfont[range={"222B-"2233,"2A0B-"2A1C}]{XITS Math}  % integrals
\setmathfont[range={"002F,"2215}]{Latin Modern Math} % / 
\setmathfont[range={"002C} ]{XITS Math} % ,
\setmathrm{Minion Pro}

\newcommand{\intX}[2]{\int\limits_{\mkern-15mu #1}^{#2} \mkern-15mu}

\AtBeginDocument{\let\epsilon\varepsilon}

\begin{document}
...

在此处输入图片描述

产生的输出也\blindmathpaper看起来不错:

在此处输入图片描述


永无止境的故事。

可能你还是会发现缺少了一些东西。我放弃之前遇到的最后一个问题是缺少句号/标点符号,正如在这个问题并解决了这个答案。但即便如此,像命令\dots仍然不起作用。意识到需要修复几乎所有Mn符号,所以实际上什么都没有剩下,我决定使用另一种数学字体,只包含一些特定的符号Mn符号我很喜欢。

我最终使用这个设置:

\setmathfont{XITS Math}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Minion Pro}
\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{MinionPro-Bold}
\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{MinionPro-It}
\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{MinionPro-BoldIt}
\setmathfont[range=\mathscr,StylisticSet={1}]{XITS Math}
\setmathfont[range={"005B,"005D,"0028,"0029,"007B,"007D,"2211,"002F,"2215 } ]{Latin Modern Math} % brackets, sum, /
\setmathfont[range={"002B,"002D,"003A-"003E} ]{MnSymbol} % + - < = >
\setmathrm{Minion Pro}

底线在最底部。

孩子们,不要在家里尝试这个!使用 MnSymbol 和 unicode-math 会浪费你的时间!

整个东西都有很多错误,不值得尝试。也许将来吧。使用另一种字体作为基础,并包含来自Mn符号但看起来很合适。

相关内容