我正在编写 Overleaf 文档,其中我想使用 Adobe Garamond Pro 作为我的数学字体。问题是我有用于 Regular TTF 和 Italic TTF 的单独文件(也可用作 OTF 文件)。
这意味着我必须使用 xelatex 来完成(因为您无法使用 PDFlatex 将非标准字体导入 Overleaf)。我还必须使用 mathspec 而不是 unicode-math 来完成,因为我没有数学友好的字体文件。但我似乎无法使用 mathspec 来完成,因为我有单独的常规和斜体文件。
例如,如果我尝试下面的代码,我将无法获得用于数学的 Garamond 字体。有很多这样的变体(例如如何编写 setmathfont-key),但它们都不起作用。
\documentclass[11pt]{book}
\usepackage{amsmath}
\usepackage[no-math]{fontspec}
%% For Matspec
\usepackage{mathspec}
\makeatletter
\let\RequirePackage\original@RequirePackage % Get around amsmath before mathspec-warning
\makeatother
%% For Unicode-math
% \usepackage{unicode-math} % uncomment if mathspec is used
\setmainfont[Mapping=tex-text,Numbers={OldStyle,Proportional}]{AGaramondPro}[
Path=./fonts/,
Extension = .ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic]
%% For Unicode-math
% \setmathfont{Garamond-Math}
% \setmathfont{./fonts/AGaramondPro-Regular.ttf}[range=up/{Latin,num}]
% \setmathfont{./fonts/AGaramondPro-Italic.ttf}[range=it/{Latin,latin}]
%% For Mathspec
\setmathfont(Greek,Digits,Latin){./fonts/AGaramondPro-Italic.ttf}
\begin{document}
$h$ \textit{h}
\end{document}
如果我尝试使用unicode-math执行下面的代码,我只会收到一条警告,提示未找到字体。
\documentclass[11pt]{book}
\usepackage{amsmath}
\usepackage[no-math]{fontspec}
%% For Matspec
% \usepackage{mathspec}
% \makeatletter
% \let\RequirePackage\original@RequirePackage % Get around amsmath before mathspec-warning
% \makeatother
%% For Unicode-math
\usepackage{unicode-math} % uncomment if mathspec is used
\setmainfont[Mapping=tex-text,Numbers={OldStyle,Proportional}]{AGaramondPro}[
Path=./fonts/,
Extension = .ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic]
%% For Unicode-math
\setmathfont{Garamond-Math}
\setmathfont{./fonts/AGaramondPro-Regular.ttf}[range=up/{Latin,num}]
\setmathfont{./fonts/AGaramondPro-Italic.ttf}[range=it/{Latin,latin}]
%% For Mathspec
% \setmathfont(Greek,Digits,Latin){./fonts/AGaramondPro-Italic.ttf}
\begin{document}
$h$ \textit{h}
\end{document}
有什么办法可以解决这个问题吗?
[编辑:我用完整的“工作”示例更新了 OP(假设您在正确的文件夹中有正确的字体)。在打印中使用 h 的原因是因为很容易识别该字母中字体的差异。“Garamond-math”呈现的结果类似,但不完全相同。在打印论文之前,我希望它们是相同的......]
答案1
正如 @DavidCarlisle 指出的那样,路径应该以与我最初的 unicode-math 示例不同的方式给出:有关 \setmathfont 命令可用选项的信息
在给出路径之后,我查看了 unicode-math 文档,但错过了它从 fontspec 继承键。
因此,正如@UlrikeFischer 所展示的,在这种情况下最好的方法是首先设置一个默认的、功能齐全的数学字体,然后在其基础上构建范围,如下所示:
\documentclass[11pt]{book}
\usepackage{amsmath}
\usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\setmainfont[Mapping=tex-text,Numbers={OldStyle,Proportional}]{AGaramondPro}[
Path=./fonts/,
Extension = .ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic]
\setmathfont{Garamond-Math}
\setmathfont[Path=fonts/]{AGaramondPro-Regular.ttf}[range=up/{Latin,num}]
\setmathfont[Path=fonts/]{AGaramondPro-Italic.ttf}[range=it/{Latin,latin}]
\begin{document}
$h$ \textit{h}
\end{document}
这样,底部的 hs 就完全相同了。