最近决定用 Libertine 字体来写论文,因为终于有一款适合 Libertine 的数学字体了:\usepackage[libertine]{newtxmath}
。因为想启用这款字体支持的漂亮历史连字,所以用 XeLaTeX 来编译文件.tex
。
不过阿拉伯字体好像跟CM字体有点类似,比Libertine原版数字字体要大不少,跟一样pdflatex
,没有问题,只是无法激活连笔功能。
在 Ubuntu 系统中
xelatex
+libertine
+newtxmath
+ 连字\usepackage[T1]{fontenc} \usepackage[lining]{libertine} \usepackage[libertine]{newtxmath} \addfontfeature{RawFeature=+hlig}
除了数学模式下的阿拉伯数字外,文本看起来非常棒。
pdflatex
+libertine
+newtxmath
\usepackage[lining]{libertine} \usepackage[T1]{fontenc} \usepackage[libertine]{newtxmath}
在这种情况下,数学模式下的阿拉伯字体与文本字体相同。
我只是想知道新的 TX 数学字体仅基于 pdflatex?
答案1
这里有几个问题。
XeLaTeX
和LuaLaTeX
处理字体的方式与 和 不同LaTeX
。pdfLaTeX
前两个使用fontspec
,后者使用fontenc
。使用 XeLaTeX 或 LuaLaTeX 时不应使用\usepackage{fontenc}
。对于您而言,如果您之前未加载过引擎,则软件包将检测到您正在使用的引擎并加载正确的引擎,但如果您仅使用 XeLaTeX 进行编译,libertine
则应将其删除。fontenc
字体处理方面的这种差异意味着,您在 中使用的字体格式与fontspec
您在 中使用的字体格式不同fontenc
。fontspec 将使用 OpenType 格式 ( .otf
),这些字体格式包含的功能比通常的 Type1 Postscript 字体多得多。其中一些功能包括这些连字符。您只能在使用 OTF 字体时访问这些功能。
关于 的行为newtxmath
,从源代码来看,至少对于我拥有的版本来说,它与 不兼容fontspec
。
如果您想使用 libertine 字体进行数学运算,fontspec
您必须使用mathspec
或unicode-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}