![Как сделать `\bm{}` работает с `\usepackage[libertine]{newtxmath}` и pdflatex?](https://rvso.com/image/348240/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C%20%60%5Cbm%7B%7D%60%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D1%81%20%60%5Cusepackage%5Blibertine%5D%7Bnewtxmath%7D%60%20%D0%B8%20pdflatex%3F.png)
Я получаю полужирный шрифт 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
в своем файле.