如何制作 `\bm{}` 与 `\usepackage[libertine]{newtxmath}` 和 pdflatex 一起工作吗?

如何制作 `\bm{}` 与 `\usepackage[libertine]{newtxmath}` 和 pdflatex 一起工作吗?

0当我使用 lualatex 编译以下代码时,我得到了预期的粗体效果。但是,0使用 pdflatex 时,我得到了正常效果(不是粗体)。有没有解决方法可以让0pdflatex 变得粗体?

\documentclass{article}
\usepackage[libertine]{newtxmath} 
\usepackage{bm}

\begin{document}
0$0\bm{0}$ % OK with lualatex, but not with pdflatex
\end{document}

我的环境是

pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016)
LuaTeX, Version 0.95.0 (TeX Live 2016)
bm: 2017/01/16
newtx: 1.515 2017-01-22

答案1

当您将其libertine作为选项传递给newtxmath它时,将使用数学中的半粗体粗细来表示粗体字符。但是,您尚未加载文本字体,因此默认的 Computer Modern 字体用于数学中的数字等,但没有 Computer Modern 字体的半粗体版本。一种解决方法是添加字体替换指令

\DeclareFontShape{OT1}{cmr}{sb}{n}{<->ssub * cmr/b/n}{}

如下面文档所示,通过用权重代替sb权重,可以得到所需的结果b。但实际上你应该加载适当的文本字体来匹配数学,例如只需发出

\usepackage{libertine}

在加载之前newtxmath

示例输出

\documentclass{article}

\usepackage[libertine]{newtxmath}
\usepackage{bm}
\DeclareFontShape{OT1}{cmr}{sb}{n}{<->ssub * cmr/b/n}{}

\begin{document}

Testing some mathematics \( x = y^2 = \int_0^1 2y\,dy \).

Testing some bold symbols \( \bm{v} = (0,0,0) = \bm{0} \).

\end{document}

\showoutput顺便说一句,您可以通过在文件中发出命令来准确地看到正在打印哪些字符。

相关内容