这是我的 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 包不是已加载',所以我只是将编码方案从 改为EU1
,TU
即
% !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}
它运行完美并且解决了我的难题,结果如下: