我正在尝试实现一件我认为相当简单的事情,但到目前为止,它让我浪费了大量的时间。我在文档中使用 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}