为什么“bm”包不能与“unicode-math”包一起使用?

为什么“bm”包不能与“unicode-math”包一起使用?

我想要数学模式下的粗体斜体数学字符(如普通数学)。因此,我尝试使用该bm包,但它无法与unicode-math我的 LaTeX 文档中的包一起使用。同样,对于某些特定字符,无法删除unicode-math包。有人能帮我一起使用这些包吗?谢谢!

以下代码在没有 的情况下可以正常工作\usepackage{unicode-math}。但是当添加此包时,该\bm命令不起作用。

  \documentclass[12pt, twoside]{book}
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage[explicit]{titlesec}
  \usepackage[english]{babel}
  \usepackage{lmodern}
  \usepackage{fontspec}
  \usepackage{graphicx}
  \usepackage{amsmath}
  \usepackage{amsfonts}
  \usepackage{amssymb}
  \usepackage{bm}
  \usepackage{array}
  \usepackage{tabularx,booktabs}
  \usepackage{color, colortbl}
  \usepackage{pgf, pgfplots}
  \usepackage{tikz}\usetikzlibrary{shapes.misc}
  \usepackage{mathrsfs}
  \usepackage{enumitem}
  \usepackage{geometry}

  \begin{document}
      $\bm{(\sqrt[n]{x})^{n}=\sqrt[n]{x^{n}}=x}$
  \end{document}

答案1

首先,针对序言中显示的代码,提出一些一般性的评论和观察:

  • 使用 LuaLaTeX 或 XeLaTeX 时,你应该不是加载fontencinputenc包。(即使使用 pdfLaTeX,也不再需要加载inputenc除非您的文件的输入编码是不是UTF8 或 ASCII,它是 UTF8 的真子集。)

  • 单独加载colortblcolor包是错误的,因为它不会最大限度地提高这两个包的兼容性和互操作性。因此,请用替换\usepackage{color, colortbl}。有关更多信息\usepackage[table]{xcolor},请参阅包用户指南的第 2.1.2 节“包选项”以及表 1“包选项” xcolor

  • 当使用该unicode-math包以及合适的 OpenType 数学字体(通过合适的\setmathfont指令指定)时,无需加载以下包:lmodern、、、、、和。(附言:如果加载包但不运行指令fontspecamsmath则默认数学字体为。)amsfontsamssymbbmunicode-math\setmathfontLatin Modern Math

  • 如果尚未加载,则会自动unicode-math加载该包amsmath事先的遇到 LaTeX 指令。有关详细信息,\usepackage{unicode-math}请参阅软件包用户指南的第 3 节“入门” 。unicode-math

  • 如果您希望使用\mathscrmathrsfs包的指令,请务必加载mathrsfs unicode-math。(我提到这一点是因为您发布的序言加载了该mathrsfs包。)

现在,终于到了你查询的主要部分了:

我想要数学模式下的粗体斜体数学字符(如普通数学)

  • 生成加粗斜体数学模式字母和符号,该unicode-math包提供了一个名为的宏\symbfit。使用它代替\boldsymbol\bm。(正如您所发现的,\bm无论如何都不起作用;因此,不要使用它。)

  • 生成大胆直立数学模式字母和符号,使用\symbfup。用它代替\mathbf

如下面的截图所示,\symbfit\symbfup——以及它们的常规粗细对应物\symit\symup——会影响拉丁字母和希腊字母的粗细和形状,但是不是(数学)“运算符”的形状和权重,例如\int,,,和。\sum\exp\ln

在此处输入图片描述

\documentclass{book}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman} 
\setmathfont{Latin Modern Math}

\newcommand\blurb{(\sqrt[n]{x}\,)^{n}=\sqrt[n]{x^{n}}=x 
     \quad \alpha\beta\Sigma\Omega \quad \int\sum\exp\ln}

\usepackage{setspace}  % just for this example
\setstretch{1.25}

\begin{document}
\obeylines
$\blurb$ --- default
$\symbfit{\blurb}$ --- \verb+\symbfit+
$\symbfup{\blurb}$ --- \verb+\symbfup+
$\symit{\blurb}$ --- \verb+\symit+
$\symup{\blurb}$ --- \verb+\symup+
\end{document}

答案2

bm包适用于旧式 8 位字体。在 中unicode-math,加载粗体数学字体(目前为 XITS Math、Libertinus Math 或 Minion Math)并用于\boldsymbol粗体运算符和符号。如果您只需要粗体字母,则可以使用\mathbf\mathbfcal等。或者使用 Mico 提到的新命令\symbfup来显示直立粗体、\symbfit斜体粗体等。粗体字母适用于任何 Unicode 数学字体。

如果您想要加粗符号和不同的数学字体,您也可以加载粗体数学字体\setmathfont[version=bold]{SomeBoldMathFont.otf}

您正在加载许多已过时的旧包unicode-math,其中包括amssymb、、和。只有在使用旧版 7 位amsfonts和8 位字体时才需要所有这些。(无论如何您都不应该加载:XeLaTeX 和 LuaLaTeX 不支持它,PDFLaTeX 不再需要它。)mathrsfsfontencinputencinputenc

相关内容