![LuaLaTeX:积分间距错误或数学字体错误](https://linux22.com/image/344941/LuaLaTeX%EF%BC%9A%E7%A7%AF%E5%88%86%E9%97%B4%E8%B7%9D%E9%94%99%E8%AF%AF%E6%88%96%E6%95%B0%E5%AD%A6%E5%AD%97%E4%BD%93%E9%94%99%E8%AF%AF.png)
这个问题与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}
对于我来说,输出如下所示:
所以这里积分符号太小,极限离积分符号太远。
通过实验,我发现如果使用fontspec
该no-math
选项加载,则不会发生此间距问题(否则保持上述代码不变)。但是接下来的行
\setmathrm{Linux Libertine O}
不再有任何效果(实际上以前没有必要),即\mathrm
命令现在以 Computer Modern 排版,并且输出现在如下所示:
现在,答案https://tex.stackexchange.com/a/326837/25031上述问题建议我使用type1
Libertine 字体的版本,添加一行
\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}