LuaLaTeX:积分间距错误或数学字体错误

LuaLaTeX:积分间距错误或数学字体错误

这个问题与newtxmath + libertine:积分符号间距错误。我正在使用 TeXLive 2016 (版本 0.95.0) 中的 LuaLaTeX。

和积分似乎存在已知的间距问题lualatex,如上面链接的问题或unicode-math 和 lualatex 中积分符号后空格太多。我在以下代码中遇到了类似的问题(我想将 Libertine 同时用作文本和数学字体):

\documentclass{minimal}

\usepackage[libertine]{newtxmath}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setmathrm{Linux Libertine O}

\begin{document}

cos $\cos$
\[ \int_0^1 \cos x \]

\end{document}

对于我来说,输出如下所示:

在此处输入图片描述

所以这里积分符号太小,极限离积分符号太远。

通过实验,我发现如果使用fontspecno-math选项加载,则不会发生此间距问题(否则保持上述代码不变)。但是接下来的行

\setmathrm{Linux Libertine O}

不再有任何效果(实际上以前没有必要),即\mathrm命令现在以 Computer Modern 排版,并且输出现在如下所示:

在此处输入图片描述

现在,答案https://tex.stackexchange.com/a/326837/25031上述问题建议我使用type1Libertine 字体的版本,添加一行

\usepackage{libertine-type1}

调用后fontspec。这确实产生了正确的输出,但我想知道是否有一些“更干净”的方法来实现这一点?事实上,在我的实际文档中,使用libertine-type1会导致与其他包发生大量冲突。

答案1

正如我在回答中补充提到的https://tex.stackexchange.com/a/328047/2388问题的核心是开放类型 Linux Libertine = 中的数学常量表的副作用。我在 luatex 列表中简要讨论了这个问题(http://tug.org/pipermail/luatex/2016-September/006172.html及后续内容) 并且恕我直言,您可以总结出这样的讨论:如果混合使用数学传统字体和开放类型字体,它可能会对某些开放类型字体产生不良副作用 - 而 libertine 就是这种有问题的字体之一。

因此,要么按照 Henri 的建议完全切换到使用 unicode-math 的开放类型字体,要么强制 newtxmath 仅使用 type1/legacy 数学字体:

\documentclass{article}

\def\rmdefault{LinuxLibertineT-LF}
\usepackage[libertine]{newtxmath}
\usepackage[no-math]{fontspec}

\setmainfont{Linux Libertine O}


\begin{document}

cos $\cos \mathrm{cos} $
\[ \int_0^1 \cos x \]

\end{document}

在此处输入图片描述

答案2

我会采用完全不同的方法,只使用Libertinus 字体(Linux Libertine 的后继者)提供了完整的 Unicode 数学字体(样品)。这不仅更易于使用,而且使文档看起来更加一致,并且您可以在整个文本和数学中获得匹配的字体系列。

\documentclass{article}

\usepackage{unicode-math}
\setmainfont{Libertinus Serif}
\setmathfont{Libertinus Math}

\begin{document}

\[ \int_0^1 \cos x \]

\end{document}

在此处输入图片描述

相关内容