使用 XeLaTeX 和 mathspec 获取粗体数字

使用 XeLaTeX 和 mathspec 获取粗体数字

我正在尝试实现一件我认为相当简单的事情,但到目前为止,它让我浪费了大量的时间。我在文档中使用 XeLaTeX,并将“Arno Pro”设置为我的字体。我也在数学模式中使用相同的字体,我需要一个带有粗体数字的公式。

梅威瑟:

\documentclass{article}

\usepackage{amsmath}
\usepackage{mathspec}

\usepackage{xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}

\setmathsfont(Digits,Latin,Greek)[
Path = fonts/,Extension = .otf,
UprightFont=ArnoPro-Regular,
BoldFont=ArnoPro-Bold,
ItalicFont=ArnoPro-Italic,
BoldItalicFont=ArnoPro-BoldItalic,
Numbers={Proportional}
]{ArnoPro}

\setmathrm
[Path = fonts/,Extension = .otf,
UprightFont=ArnoPro-Regular,
BoldFont=ArnoPro-Bold,
ItalicFont=ArnoPro-Italic,
BoldItalicFont=ArnoPro-BoldItalic
]{ArnoPro}

\fontspec[Path=fonts/]{ArnoPro.otf}
\SetSymbolFont{Digits:m:n}{bold}{EU1}{\zf@family}{m}{n}

\begin{document}
\noindent
$\boldsymbol{bf\ 0123}$\\
$\mathbf{bf\ 0123}$\\
$normal\ 0123$\\
$\mathit{it\ 0123}$\\
$\mathrm{rm\ 0123}$

\end{document}

现在,除了只影响文本和符号而不影响数字之外,它几乎完美地运行。

我尝试过各种组合,包括一些unicode-math,但都无济于事。

我究竟做错了什么?

答案1

mathspec基本上是一些黑客的集合;如果您的文档涉及数学,最好使用真正的 Unicode 数学字体。

不过,这里有一种获取粗体数字的方法:

\documentclass{article}

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

\setmathsfont(Digits,Latin,Greek){FreeSerif}

\setmathrm{FreeSerif}

\setmainfont{FreeSerif}
\makeatletter
\SetSymbolFont{Digits:m:n}{bold}{EU1}{\eu@mathrm}{bx}{n}
\makeatother

\begin{document}

$\mathbf{x}=\bm{0}+\bm{1}$

\end{document}

我使用 FreeSerif,因为我没有 Arno Pro。

在此处输入图片描述

使用带有字体明确路径的指令的完整示例:

\documentclass{article}

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

\setmathsfont(Digits,Latin,Greek)[
  Path=/Library/Fonts/Kerkis-OTF/,
  Extension=.otf,
  UprightFont=Kerkis,
  ItalicFont=Kerkisitalics,
  BoldFont=Kerkisbold,
  BoldItalicFont=Kerkisbolditalic,
]{Kerkis}

\setmathrm[
  Path=/Library/Fonts/Kerkis-OTF/,
  Extension=.otf,
  UprightFont=Kerkis,
  ItalicFont=Kerkisitalics,
  BoldFont=Kerkisbold,
  BoldItalicFont=Kerkisbolditalic,
]{Kerkis}

\setmainfont[
  Path=/Library/Fonts/Kerkis-OTF/,
  Extension=.otf,
  Ligatures=TeX,
  UprightFont=Kerkis,
  ItalicFont=Kerkisitalics,
  BoldFont=Kerkisbold,
  BoldItalicFont=Kerkisbolditalic,
]{Kerkis}

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

\begin{document}

Abc\textit{abc}\textit{\textbf{abc}}

$\mathbf{x}=\bm{0}+\bm{1}$

$\mathit{xyz}$

\end{document}

在此处输入图片描述

相关内容