使用 mathspec 自定义拉丁字母或数字字母时,\bm 不起作用

使用 mathspec 自定义拉丁字母或数字字母时,\bm 不起作用

这是我的 MWE:

% !TEX program = xelatex
\documentclass{article}

\usepackage{amsmath,bm}
\usepackage{mathspec}

\setmainfont{Times New Roman}
\setmathfont(Digits,Latin,Greek){Minion Pro}
\setmathrm{Minion Pro}

\begin{document}    

    This is MWE for testing.

    A vector $\bm{d}$, a stress tensor $\bm{\sigma}$.

    A vector $\mathbf{d}$, a stress tensor $\mathbf{\sigma}$.

    A vector $\pmb{d}$, a stress tensor $\pmb{\sigma}$.

\end{document}

输出:

在此处输入图片描述

我想在 Minion Pro 字体(或其他自定义字体)中为拉丁文获取粗体和斜体字母。'amsbsy' 包中的命令 \pmb 可以满足我的需求,但放大文件时看起来就像两个字母重叠在一起。而 \mathbf 虽然可以加粗字母,但无法获得斜体形式。我可以删除选项 'Greek' 以让此设置成为 CM 字体,那么除了 \pmb 之外还有其他方法可以解决这个问题吗?我试过一个命令,

\SetSymbolFont{Digits:m:n}{bold}{EU1}{\eu@mathrm}{bx}{n}

使用 XeLaTeX 和 mathspec 获取粗体数字,但不起作用(运行时出错)。

有人能给我一个好的解决办法吗?

答案1

好吧,我自己找到了解决方案如何让 XeLaTeX 使用粗体 Minion Pro 字体来表示希腊字符?但他的回答是

\makeatletter
%\DeclareMathVersion{bold}
\fontspec{Minion Pro} %sets \zf@family to minion pro.
\SetSymbolFont{Latin:m:n}{bold}{EU1}{\zf@family}{bx}{n}
\SetSymbolFont{Latin:m:it}{bold}{EU1}{\zf@family}{bx}{it}
\SetSymbolFont{operators}{bold}{EU1}{\zf@family}{bx}{n}
\SetSymbolFont{Greek:m:n}{bold}{EU1}{\zf@family}{bx}{n}
\SetSymbolFont{Greek:m:it}{bold}{EU1}{\zf@family}{bx}{it}

\fontspec{Linux Libertine O}
\SetSymbolFont{Digits:m:n}{bold}{EU1}{\zf@family}{m}{n}
\makeatother

在我的计算机(win10-1803,TeXlive 2018)上运行,出现错误“编码方案 EU1 未知”。并且这里给出了其定义。

这种编码方案属于 包fontspec。其版本 (2018/07/30) 的文档中写道 '由于默认字体编码已从欧盟1/欧盟2是一种新的 Unicode 字体编码......因此,有了这个包选项,Ross Moore 的 xunicode 包不是已加载',所以我只是将编码方案从 改为EU1TU

% !TEX program = xelatex
\documentclass{article}

\usepackage{amsmath,bm}
\usepackage{mathspec}

\setmainfont{Times New Roman}
\setmathfont(Digits,Latin,Greek){Minion Pro}
\setmathrm{Minion Pro}

\makeatletter
%\DeclareMathVersion{bold}
\fontspec{Minion Pro} %sets \zf@family to minion pro.
\SetSymbolFont{Latin:m:n}{bold}{TU}{\zf@family}{bx}{n}
\SetSymbolFont{Latin:m:it}{bold}{TU}{\zf@family}{bx}{it}
\SetSymbolFont{operators}{bold}{TU}{\zf@family}{bx}{n}
\SetSymbolFont{Greek:m:n}{bold}{TU}{\zf@family}{bx}{n}
\SetSymbolFont{Greek:m:it}{bold}{TU}{\zf@family}{bx}{it}
\makeatother

\begin{document}    

    This is MWE for testing.

    A vector $\bm{d}$, a stress tensor $\bm{\sigma}$.

    A vector $\mathbf{d}$, a stress tensor $\mathbf{\sigma}$.

    A vector $\pmb{d}$, a stress tensor $\pmb{\sigma}$.

\end{document}

它运行完美并且解决了我的难题,结果如下:

在此处输入图片描述

相关内容