粗体数学字体的渲染方式非常奇怪且丑陋,如下图所示。更具体地说,您可以看到粗体字母 w 和 x 看起来好像背后有阴影。我尝试了其他数学字体,结果相同,因此这不是字体特定的问题。问题是什么?我该如何解决?
平均能量损失
\documentclass{article}
\usepackage{geometry}
\usepackage{titlesec}
\usepackage{fontspec}
\setmainfont
[%
UprightFont = *,
BoldFont = *Bold,
ItalicFont = *It,
BoldItalicFont = *BoldIt
]{GFSArtemisia.otf}
\usepackage[greek, english]{babel}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{unicode-math}
\usepackage{mathtools}
\begin{document}
Text
%
\begin{equation}
\pmb{w}^{t+1} = \pmb{w}^{t} + a\cdot f(\pmb{w}^{t}\cdot \pmb{x}^{t})\cdot \pmb{x}^{t}
\end{equation}
\end{document}
答案1
您已经声明了一些粗体字体,但您使用的\pmb
是“穷人的粗体”,它只是简单地覆盖打印三份字母,稍微偏移以在没有粗体字体可用时给出粗体的外观。
使用\symbf
或\mathbf
等从数学字体中获取粗体字符。
答案2
大卫卡莱尔是正确的,但我认为用如何在数学模式下使用 Artemisia Bold Italic 的示例来补充他的答案会很有用:
\documentclass{article}
\usepackage[paperwidth=10cm]{geometry}
\usepackage{titlesec}
\usepackage{unicode-math}
\usepackage[greek, english]{babel}
\usepackage{mathtools}
\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{GFSArtemisia.otf}[Scale = 1.0]
\setmathfont{Libertinus Math}
\setmathfont[range=up,
Script=Latin, script-features={}, sscript-features={}
]{GFS Artemisia Regular}
\setmathfont[range=it,
Script=Latin, script-features={}, sscript-features={}
]{GFS Artemisia Italic}
\setmathfont[range=bfup,
Script=Latin, script-features={}, sscript-features={}
]{GFS Artemisia Bold}
\setmathfont[range=bfit,
Script=Latin, script-features={}, sscript-features={}
]{GFS Artemisia Bold Italic}
\begin{document}
Text
%
\begin{equation}
\symbfit{w}^{t+1} =
\symbfit{w}^{t}
+ a \cdot f\left(\symbfit{w}^{t} \cdot \symbfit{x}^{t}\right)
\cdot \symbfit{x}^{t}
\end{equation}
\end{document}
mathastext
或包mathspec
也可以工作,而且样板代码更少。(如果您愿意,至少可以删除Script
、script-features
和sscript-features
行。它们的唯一目的是抑制无害的警告消息。)
我还删除了一些与 多余的软件包unicode-math
。它会为您加载fontspec
和amsmath
,并且有自己的\boldmath
、\mathbf
和\symbf
命令,您应该使用这些命令来代替bm
。
如果您确实需要为没有粗体字体伪造粗体,则可以使用fontspec
字体选项[FakeBold=1.2]
或其他看起来最好的数字来实现。