![mathbf 中的一些粗体字符被带有 unicode-math 的主数学字体覆盖](https://linux22.com/image/441040/mathbf%20%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E7%B2%97%E4%BD%93%E5%AD%97%E7%AC%A6%E8%A2%AB%E5%B8%A6%E6%9C%89%20unicode-math%20%E7%9A%84%E4%B8%BB%E6%95%B0%E5%AD%A6%E5%AD%97%E4%BD%93%E8%A6%86%E7%9B%96.png)
我想在环境FiraMath-Bold
中自动使用字体mathbf
,但某些字符和符号(如平方根、等号和括号)似乎没有以粗体显示,而是被主数学字体覆盖。我目前正在使用,但如果它能解决问题,unicode-math
我愿意使用它。mathspec
\documentclass{minimal}
\usepackage{unicode-math}
\setmainfont[
Extension = .otf,
UprightFont = FiraMath-Light,
BoldFont = FiraMath-Bold
]{FiraMath}
\setmathfont[Extension = .otf]{FiraMath-Light}
\setmathfontface\mathbf[Extension = .otf]{FiraMath-Bold}
\setmathfont[version = bold, Extension = .otf]{FiraMath-Bold}
\begin{document}
\textbf{Example:}
Square root in light weight inside mathbf a enviroment:
\begin{equation}
\mathbf{\Delta = \sqrt{b^2 - 4ac}}
\end{equation}
Expected behaviour:
\begin{equation}
\mathversion{bold} \Delta = \sqrt{b^2 - 4ac}
\end{equation}
\end{document}
答案1
您需要\boldsymbol
命令(来自amsbsy
,unicode-math
间接加载)。这将设置 中的内容\mathversion{bold}
。该\setmathfont[range=bfup]
命令将更改命令\symbfup
,但不会更改\mathbf
或\boldmath
。
顺便说一句,你不想设置\mathbf
为数学字体。这样做的方法是
\setmathrm{FiraSans}[
UprightFont=*-Light,
BoldFont=*-Bold,
ItalicFont=*-LightItalic,
BoldItalicFont=*BoldItalic,
Extension=.otf]
这将更改\mathrm
、\mathbf
和。默认情况下,这些设置为主字体系列,因此如果您想要不同的字体系列\mathit
,\mathbfit
则只需更改它们。
这些字母适用于数学模式中的单词,而\symup
、\symbfup
等适用于独立的数学符号。您将看到\mathrm{iff}
(解释为应有连字符的单词)和之间存在巨大差异\symup{iff}
(解释为常数的乘积)之间存在巨大差异我,F和F)。
一位 MWE 表示:
\documentclass{article}
\usepackage[paperwidth=10cm]{geometry} % Format a MWE for TeX.SX
\usepackage{unicode-math}
\setmainfont{FiraSans}
\setmathfont[Extension = .otf]{FiraMath-Regular}
\setmathfont[version = bold, FakeBold=1.5, Extension = .otf]{FiraMath-Regular}
\setboldmathrm{FiraSans}[
UprightFont=*-Bold,
BoldFont=*-ExtraBold,
ItalicFont=*-BoldItalic,
BoldItalicFont=*-ExtraBoldItalic,
Extension=.otf]
\begin{document}
\textbf{Example:}
This \textbf{should} work for you:
\begin{equation}
\boldsymbol{\Delta = \sqrt{b^2 - 4ac}}
\end{equation}
Expected behaviour:
\begin{equation}
\mathversion{bold} \Delta = \sqrt{b^2 - 4ac}
\end{equation}
Math alphabets in regular math:
\mathversion{normal}
\[ \mathrm{mathrm} \; \mathit{mathit} \; \mathbf{mathbf} \; \mathbfit{mathbfit}
\]
Math alphabets in bold math:
\begingroup\mathversion{bold}
\[ \mathrm{mathrm} \; \mathit{mathit} \; \mathbf{mathbf} \; \mathbfit{mathbfit}
\]
\endgroup
\end{document}
除了 Regular 以外,我没有其他重量的 Fira Math,所以我FakeBold
在这里替换了。
答案2
\mathbf
并不是正确的做法,因为它只对字母起作用。如果你想让它对字母起作用,\Delta
你需要\symbf
。
您可以定义一个环境,使一切 \boldmath
。
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{FiraSans}[
Extension = .otf,
UprightFont = *-Light,
BoldFont = *-Bold,
]
\setmathfont{FiraMath-Regular}[
Extension = .otf
]
\setmathfont{FiraMath-Bold}[
version = bold,
Extension = .otf,
]
\NewDocumentEnvironment{makebold}{m}
{\boldmath\csname #1\endcsname}
{\csname end#1\endcsname}
\begin{document}
\textbf{Example:}
Square root in light weight inside mathbf a enviroment:
\begin{equation}
\symbf{\Delta = \sqrt{b^2 - 4ac}}
\end{equation}
Expected behaviour:
\begin{makebold}{equation}
\Delta = \sqrt{b^2 - 4ac}
\end{makebold}
\begin{makebold}{align}
\Delta &= \sqrt{b^2 - 4ac} \\
\Delta &= \sqrt{b^2 - 4ac}
\end{makebold}
\end{document}
平方根没有出现,但这似乎是数学字体(测试版)的问题。