0
当我使用 lualatex 编译以下代码时,我得到了预期的粗体效果。但是,0
使用 pdflatex 时,我得到了正常效果(不是粗体)。有没有解决方法可以让0
pdflatex 变得粗体?
\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
顺便说一句,您可以通过在文件中发出命令来准确地看到正在打印哪些字符。