以下 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 可能会在下一个版本中默认执行此操作。