Как сделать `\bm{}` работает с `\usepackage[libertine]{newtxmath}` и pdflatex?

Как сделать `\bm{}` работает с `\usepackage[libertine]{newtxmath}` и pdflatex?

Я получаю полужирный шрифт 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в своем файле.

Связанный контент