Lualatex 和 bm 包

Lualatex 和 bm 包

我昨天更新了我的 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.sty2016/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}

在此处输入图片描述

相关内容