不知何故,我无法让 AlegreyaSans 字体在 Beamer 中使用mathspec
。AlegreyaSans 的标准fontenc
调用适用于 PDFLaTeX,但我需要将其auto-pst-pdf
用于表格,因此使用了 XeLaTeX(如果我错了,请纠正我!)。因此,我希望在 XeLaTeX 中指定数学字体,因此使用了mathspec
。但不知何故,我无法让它工作;我不断收到:“无法找到 AlegreyaSans-Regular”。请参阅给定的 MWE。
我一直想知道这是否是破折号或空格的问题:Alegreya Sans vs. AlegreyaSans vs. Alegreya-Sans,但这没有任何作用。我检查了系统上的字体:它们肯定是 AlegreyaSans-Regular 等。
我在 OSX.11.13 上使用 TeXLive 2015。
编辑:AlegreyaSans 是一种免费字体;可以免费下载这里。
\documentclass{beamer}
\usepackage{mathspec}
%\usepackage[T1]{fontenc}
%\usepackage[sfdefault]{AlegreyaSans}
\setmainfont[
Extension = .otf, %does not work with ttf either
UprightFont = AlegreyaSans-Regular,
ItalicFont = AlegreyaSans-Italic,
BoldFont = AlegreyaSans-Bold,
BoldItalicFont = AlegreyaSans-BoldItalic,
UprightFeatures = {SmallCapsFont = AlegreyaSansSC-Regular},
ItalicFeatures = {SmallCapsFont = AlegreyaSansSC-Italic},
BoldFeatures = {SmallCapsFont = AlegreyaSansSC-Bold},
BoldItalicFeatures = {SmallCapsFont = AlegreyaSansSC-BoldItalic},
Ligatures = TeX]
{AlegreyaSans}
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{AlegreyaSans}
\makeatletter
\DeclareMathSymbol{0}{\mathalpha}{\eu@DigitsArabic@symfont}{`0}
\DeclareMathSymbol{1}{\mathalpha}{\eu@DigitsArabic@symfont}{`1}
\DeclareMathSymbol{2}{\mathalpha}{\eu@DigitsArabic@symfont}{`2}
\DeclareMathSymbol{3}{\mathalpha}{\eu@DigitsArabic@symfont}{`3}
\DeclareMathSymbol{4}{\mathalpha}{\eu@DigitsArabic@symfont}{`4}
\DeclareMathSymbol{5}{\mathalpha}{\eu@DigitsArabic@symfont}{`5}
\DeclareMathSymbol{6}{\mathalpha}{\eu@DigitsArabic@symfont}{`6}
\DeclareMathSymbol{7}{\mathalpha}{\eu@DigitsArabic@symfont}{`7}
\DeclareMathSymbol{8}{\mathalpha}{\eu@DigitsArabic@symfont}{`8}
\DeclareMathSymbol{9}{\mathalpha}{\eu@DigitsArabic@symfont}{`9}
\usepackage{pst-node, auto-pst-pdf}
\begin{document}
\begin{frame}
1 $S_1$
\end{frame}
\end{document}
答案1
默认的 beamer 主题使用无衬线字体。因此,如果您想更改 beamer 中的字体,您必须使用 设置无衬线字体\setsansfont
或更改为衬线字体主题\usefonttheme{serif}
。
fontspec
如果您通过字体名称加载字体功能,通常可以很好地自动设置字体功能。因此,对于 Alegreya 字体,只需设置字体系列和小写字体就足够了。
\setsansfont[UprightFeatures = {SmallCapsFont = Alegreya Sans SC},
ItalicFeatures = {SmallCapsFont = Alegreya Sans SC Italic},
BoldFeatures = {SmallCapsFont = Alegreya Sans SC Bold},
BoldItalicFeatures = {SmallCapsFont = Alegreya Sans SC Bold Italic}]{Alegreya Sans}
对于数学字体,我还建议通过字体名称加载字体(实际上我不知道是否mathspec
支持通过文件名加载字体)。因此,下面这行应该足够了。
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{Alegreya Sans}
但是数字设置Lining
似乎不起作用。要解决这个问题,您必须使用类选项professionalfont
,它会抑制 beamer 执行的一些内部替换。有关此内容的更多信息,请参阅 beamer 手册。
完成 MWE:
\documentclass[professionalfont]{beamer}
\usepackage{mathspec}
\setsansfont[UprightFeatures = {SmallCapsFont = Alegreya Sans SC},
ItalicFeatures = {SmallCapsFont = Alegreya Sans SC Italic},
BoldFeatures = {SmallCapsFont = Alegreya Sans SC Bold},
BoldItalicFeatures = {SmallCapsFont = Alegreya Sans SC Bold Italic}]{Alegreya Sans}
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{Alegreya Sans}
\begin{document}
\begin{frame}{Font feature test}
\begin{itemize}
\item Regular
\item \textit{Italic}
\item \textsc{SmallCaps}
\item \textbf{Bold}
\item \textbf{\textit{Bold Italic}}
\item \textbf{\textsc{Bold SmallCaps}}
\item \textbf{\textsc{\textit{Bold Italic SmallCaps}}}
\item Math: $a^2+b^2 = c^2$
\item Numbers in Math: $1234567890$
\end{itemize}
\end{frame}
\end{document}
输出: