使用“新 TX”数学字体选项时数学模式中的阿拉伯数字问题 [Libertine] 由 XeLaTeX 编译

使用“新 TX”数学字体选项时数学模式中的阿拉伯数字问题 [Libertine] 由 XeLaTeX 编译

最近决定用 Libertine 字体来写论文,因为终于有一款适合 Libertine 的数学字体了:\usepackage[libertine]{newtxmath}。因为想启用这款字体支持的漂亮历史连字,所以用 XeLaTeX 来编译文件.tex

不过阿拉伯字体好像跟CM字体有点类似,比Libertine原版数字字体要大不少,跟一样pdflatex,没有问题,只是无法激活连笔功能。

在 Ubuntu 系统中

  1. xelatex+ libertine+ newtxmath+ 连字

    \usepackage[T1]{fontenc}  
    \usepackage[lining]{libertine}
    \usepackage[libertine]{newtxmath}  
    \addfontfeature{RawFeature=+hlig}
    

    在此处输入图片描述

    除了数学模式下的阿拉伯数字外,文本看起来非常棒。

  2. pdflatex+ libertine+newtxmath

    \usepackage[lining]{libertine}
    \usepackage[T1]{fontenc}  
    \usepackage[libertine]{newtxmath}
    

    在此处输入图片描述

    在这种情况下,数学模式下的阿拉伯字体与文本字体相同。

我只是想知道新的 TX 数学字体仅基于 pdflatex?

答案1

这里有几个问题。

XeLaTeXLuaLaTeX处理字体的方式与 和 不同LaTeXpdfLaTeX前两个使用fontspec,后者使用fontenc。使用 XeLaTeX 或 LuaLaTeX 时不应使用\usepackage{fontenc}。对于您而言,如果您之前未加载过引擎,则软件包将检测到您正在使用的引擎并加载正确的引擎,但如果您仅使用 XeLaTeX 进行编译,libertine则应将其删除。fontenc

字体处理方面的这种差异意味着,您在 中使用的字体格式与fontspec您在 中使用的字体格式不同fontenc。fontspec 将使用 OpenType 格式 ( .otf),这些字体格式包含的功能比通常的 Type1 Postscript 字体多得多。其中一些功能包括这些连字符。您只能在使用 OTF 字体时访问这些功能。

关于 的行为newtxmath,从源代码来看,至少对于我拥有的版本来说,它与 不兼容fontspec

如果您想使用 libertine 字体进行数学运算,fontspec您必须使用mathspecunicode-math包(但我不认为这unicode-math在这里起作用,因为 libertine 不是完全独立的)。

\usepackage{mathspec}
\usepackage{libertine}
\setmathsfont[ItalicFont={LinLibertine_RI.otf}]{LinLibertine_R.otf}
\setmathrm{LinLibertine_R.otf}
\setboldmathrm{LinLibertine_RB.otf}

请注意,您将收到一些关于未找到形状并被默认形状替换的警告。

但是我从未尝试过,也不知道 OTF 字体是否包含所有数学字形。您还可以分别使用和\setmathsf{}命令更改无衬线字体和等宽\setmathtt{}字体。如果您想使用 libertine 包提供的相同字体,您可以使用:

\setmathsf{LinBiolinum_RB.otf}
\setmathtt{LinMono_M.otf}

答案2

对我而言,一个更简单的解决方案(使用XeLaTeX)是这样的:

\usepackage[no-math]{fontspec}
\setmainfont[Ligatures={TeX,Historic}]{Linux Libertine O}
\usepackage[libertine]{newtxmath}

包的顺序很重要:如果该行\usepackage[libertine]{newtxmath}位于其他行之上,阿拉伯字体看起来就像 CM 字体。

答案的想法来自于这里

答案3

感谢 ArTourter,现在一切看起来都很棒。

\usepackage{mathspec}
\usepackage{libertine}
\setmathsfont[ItalicFont={LinLibertine_RI.otf}]{LinLibertine_R.otf}
\setmathrm{LinLibertine_R.otf}
\setboldmathrm{LinLibertine_RB.otf}

\usepackage[libertine]{newtxmath}

在此处输入图片描述

相关内容