我昨天更新了我的 latex 软件包,现在出现了问题lualatex
。现在我遇到的一个问题是,使用该软件包lualatex
无法打印粗体字符。bm
当我使用 pdflatex 编译以下 MWE 时,一切看起来都正常,但对于 lualatex 来说却不然:
\documentclass{article}
\usepackage{bm}
\begin{document}
%
Bold $\bm{E}$
\\
Normal $E$
%
\end{document}
使用 pdflatex 输出
使用 lualatex
尝试使用 lualatex 恢复到早期版本\RequirePackage{luatex85}
对我来说也不起作用。
查看日志文件时,发现有可疑消息
LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 142.
LaTeX Info: Redefining \bm on input line 208.
[...]
Missing character: There is no х (U+0445) in font cmmi10!
有人能告诉我,这里发生了什么事,我需要做什么来解决这个问题,因为我很确定lualatex
并且bm
以前也做过这样的工作?
答案1
更新
以下补丁已纳入分发的bm.sty
2016/07/07 v1.2b
以下是bm
在 luatex 中使用经典的数学字体设置。它对带有 unicode-math 的 opentype 数学字体没有做正确的事(由于大多数此类设置不包含粗体字体,因此并不总是清楚正确的做法是什么)
\documentclass{article}
\usepackage{bm}
\makeatletter
\def\bm@test@token#1{%
\let\bm@next\@empty
\ifx#1\@@end
\else\ifx#1\mathchoice
\let\bm@next\bm@mathchoice
\else\ifx#1\mathchar
\afterassignment\bm@mathchar\count@
\else\ifx#1\mathaccent
\afterassignment\bm@mathaccent\count@
\else\ifx#1\delimiter
\afterassignment\bm@delimiter\count@
\else\ifx#1\radical
\afterassignment\bm@radical\count@
\else\ifx#1\mkern
\bm@register#1{\muskip\z@}%
\else\ifx#1\kern
\bm@register#1\skip@
\else\ifx#1\penalty
\bm@register#1\count@
\else\ifx#1\unvcopy
\let\bm@next\bm@add
\else\ifcat\noexpand#1\relax
\xdef\meaning@{\meaning#1}%
\expandafter\bm@mchar@test\meaning@""""\@nil#1%
\else\ifcat.\ifcat a#1.\else#1\fi
\count@\mathcode`#1\relax
\ifnum\count@=\mathcode`\'%
\begingroup\uccode`\~`#1\uppercase{\endgroup
\def\bm@next{\bm@expand~}}%
\else
\ifx\bm@previous\left
\count@\delcode`#1\relax
\bm@delimiter
\else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifnum\count@>"8000
\Umathcharnumdef\@tempa\count@
\xdef\meaning@{\meaning\@tempa}%
\expandafter\bm@mchar@test\meaning@""""\@nil\@tempa
\else
\bm@mathchar
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\fi
\fi
\else
\bm@add{#1}%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\bm@next}
\makeatother
\begin{document}
%
Bold $\bm{E\left(\frac{A}{B}\right)}$
\\
Normal $E\left(\frac{A}{B}\right)$
%
\end{document}
答案2
[这不是解决方案,而是一种解决方法]
您说,截止日期即将到来,在此之前可能没有可用的修复。这里有一个解决方法,需要包amsmath
(您最有可能使用它)。它定义\bm
为使用\boldsymbol
来自的宏amsbsy
(由自动加载amsmath
)。请记住,有一些缺点相比bm
,但至少符号出现了。
\documentclass{article}
\usepackage{amsmath}
\def\bm{\boldsymbol}
\begin{document}
\luatexbanner
Bold $\bm{E}$
Normal $E$
\end{document}