![Newtxmath 使用 siunitx 和 bm 的字体形状警告](https://linux22.com/image/365862/Newtxmath%20%E4%BD%BF%E7%94%A8%20siunitx%20%E5%92%8C%20bm%20%E7%9A%84%E5%AD%97%E4%BD%93%E5%BD%A2%E7%8A%B6%E8%AD%A6%E5%91%8A.png)
我想将 newtxtext 和 newtxmath 字体与 siunitx 结合使用。我还需要粗体数学,因此我添加了 bm 包,如下所述: 使用 newtxmath 的无衬线粗体数学符号
现在我面临字体形状线警告:
LaTeX Font Warning: Font shape `OT1/ntxtlf/sb/n' undefined
有人知道解决办法吗?特别是哪些字符被替换了?
谢谢你!
梅威瑟:
\documentclass[12pt, a4paper, twoside]{book}
\usepackage{newtxtext}
\usepackage[libertine, vvarbb]{newtxmath}
\usepackage{bm} %Bold math
\usepackage{siunitx}
\begin{document}
Test
\end{document}
答案1
很抱歉这么晚才回复您。我刚刚在搜索另一个问题的重复项时看到了这个问题。
这个问题与 无关,siunitx
并且(在 TeX Live 2019 上)如果您省略该包,它仍然会出现。正如 Ulrike Fischer 所暗示的那样,问题在于您newtxtext
与libertine
选项一起加载newtxmath
。对于粗体直立字母(例如大写希腊字母),这会导致包寻找基于 Times 的文本字体的半粗体粗细,但该字体并不存在(newtxlf/sb/n
是带有衬线数字、半粗体粗细、直立形状的 New Times)。
要解决此问题,请将libertine
包加载为文本字体。您应该为其提供semibold
匹配粗体数学的选项。
\documentclass[12pt, a4paper, twoside]{book}
\usepackage[lining, semibold, type1]{libertine}
\usepackage[T1]{fontenc}
\usepackage[libertine, vvarbb]{newtxmath}
\usepackage{bm} %Bold math
\usepackage{siunitx}
\begin{document}
Test
\end{document}
我加载了libertine
阻止type1
该包fontspec
在 LuaLaTeX 或 XeLaTeX 上加载的选项。虽然还有其他解决方法,但这主要是为了让直立的大写希腊字母(例如)\Delta
仍能正常工作。旧版包(例如)newtxmath
在 7 位 OT1 编码中查找它们。
在现代工具链中,使用 LuaLaTeX 和 XeLaTeX,您可以加载libertinus
以使用 Libertinus Math 字体,或者unicode-math
后跟\setmathfont{Libertinus Math}
。