最近的更新是否在使用 mathspec 时破坏了 mathbf?

最近的更新是否在使用 mathspec 时破坏了 mathbf?

以下 MWE 说明了在过去几周内某个时间运行的代码。

\documentclass{article}
\usepackage{mathspec}
\setallmainfonts{Times New Roman}

\begin{document}
\begin{equation}
    \nabla \times \mathbf{B} = \mu_0 \mathbf{J}
\end{equation}
\end{document}

我现在收到一个警告:

LaTeX Font Warning: Font shape `TU/TimesNewRoman(0)/bx/n' undefined (Font) using `TU/TimesNewRoman(0)/m/n' instead on input line 13.

我每周更新我的 LaTeX 包,所以我不确定哪个包或版本导致了行为的改变。

我怀疑是fontspec最近更新的,而且mathspec已经好几年没更新了。但是,使用以下命令时不会出现警告消息fontspec

...
\usepackage{fontspec}
\setmainfont{Times New Roman}
...

是否存在某个地方引入了可以解释此现象的错误?

mathspec是版本 0.2b,但自 2016 年以来似乎没有更新过。 fontspec最近更新(2 月 3 日),现在是版本 2.7h。

不再mathspec维护?还是应该fontspec直接使用(mathspec加载fontspec)?

答案1

这显然是由于新的 LaTeX 内核使用b为默认值\bfseries

可能fontspec还应该定义bx权重以实现兼容性,但与此同时您可以修补mathspec以使用b而不是bx

\documentclass{article}
\usepackage{mathspec}
\usepackage{xpatch}

\xpatchcmd{\setmathrm}{bx}{b}{}{}
\xpatchcmd{\setmathrm}{bx}{b}{}{}
\xpatchcmd{\setmathrm}{bx}{b}{}{}
\xpatchcmd{\setmathsf}{bx}{b}{}{}
\makeatletter
\xpatchcmd{\eu@get@familyseriesshape}{bx}{b}{}{}
\xpatchcmd{\@eu@mkern}{bx}{b}{}{}
\makeatother

\setallmainfonts{Times New Roman}

\begin{document}

\begin{equation}
\nabla \times \mathbf{B} = \mu_0 \mathbf{J}
\end{equation}

\end{document}

答案2

您可以添加声明,以便文本字体也知道 bx:

\documentclass{article}
\usepackage{mathspec}
\setallmainfonts{Times New Roman}
\DeclareFontShape{TU}{\familydefault}{bx}{n}{<-> ssub*\familydefault/b/n}{}

\begin{document}
\begin{equation}
    \nabla \times \mathbf{B} = \mu_0 \mathbf{J}
\end{equation}
\end{document}

fontspec 可能会在下一个版本中默认执行此操作。

相关内容