Почему-то я не могу заставить шрифт AlegreyaSans работать в Beamer с mathspec
. Стандартный fontenc
вызов AlegreyaSans работает для PDFLaTeX, но мне нужно использовать auto-pst-pdf
для таблицы, поэтому используется XeLaTeX (поправьте меня, если я ошибаюсь!). Таким образом, я надеюсь указать шрифт math в XeLaTeX, поэтому используется mathspec
. Но почему-то я не могу заставить его работать; я постоянно получаю: «AlegreyaSans-Regular» не может быть найден. См. указанный MWE.
Я задавался вопросом, проблема ли это с тире или пробелом: Alegreya Sans против AlegreyaSans против Alegreya-Sans, но это ничего не дает. Я проверил шрифты в системе: они определенно называются AlegreyaSans-Regular и т. д.
Я использую TeXLive 2015 на OSX.11.13.
EDIT: 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 использует шрифт sans serif. Поэтому, если вы хотите изменить шрифт в Beamer, вам нужно либо установить шрифт sans, \setsansfont
либо изменить тему шрифта на serif \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
похоже, не работает. Чтобы решить эту проблему, вам нужно использовать опцию class professionalfont
, которая подавляет некоторые внутренние замены, выполняемые beamer. Для получения дополнительной информации об этом загляните в руководство по beamer.
Полная МВЭ:
\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}
Выход: