Beamer:与 LuaLaTeX 和 fontspec 包一起在数学模式下使用无衬线数字

Beamer:与 LuaLaTeX 和 fontspec 包一起在数学模式下使用无衬线数字

这是我上一次问题。我想beamer使用字体制作演示文稿Helvetica Neue。我正在使用这个 MWE:

\documentclass[]{beamer}

\usepackage{fontspec}
\setsansfont[
  BoldFont=HelveticaNeueLTCom-Md,
  ItalicFont=HelveticaNeueLTCom-LtIt, 
  SmallCapsFont=TeXGyre Heros,
  SmallCapsFeatures={Letters=SmallCaps},
]{HelveticaNeueLTCom-Lt}

\begin{document}

\begin{frame}{Test 1 2 3}

\begin{itemize}
\item \textit{italic}
\item \textbf{bold}
\item normal
\item numbers: 1, 2, 3 and 4
\item math
\begin{align}
a^2 + b^2 &= c^\text{2} \text{ (used \texttt{\textbackslash text} to produce sans serif 2 for $c$)}\\
\alpha^2 + \beta^2 &= \gamma^2
\end{align}
\item \textsc{SmallCaps}
\item Dash -- Dash
\end{itemize}

\end{frame}

\end{document}

结果如下:

在此处输入图片描述

  1. 如何更改数学模式下用于数字的字体?我可以\text一直使用,但这不是一个聪明的解决方案。
  2. 这样代码可以吗?我没有使用\usefonttheme{professionalfonts}beamer 命令,因为我认为这对我而言没用。
  3. 仪表板--无法使用。如何修复?
  4. SmallCaps 字体与较细的主字体搭配起来显得太粗了。有人能推荐更好的 SmallCaps 替代品吗?我在这里查看了http://www.gust.org.pl/projects/e-foundry/tex-gyre/它还说

TeX Gyre Heroes 可以替代流行的 Helvetica 字体


更新

按照 Mico 的建议,会导致缺少希腊字母,如\alpha\beta。我删除了greekGreek选项,但字母仍然缺失:

\setmathfont[range=\mathup/{latin,Latin,num}]{HelveticaNeueLTCom-Th}
\setmathfont[range=\mathit/{latin,Latin,num}]{HelveticaNeueLTCom-ThIt}
\setmathfont[range=\mathbfup/{latin,Latin,num}]{HelveticaNeueLTCom-Roman}
\setmathfont[range=\mathbfit/{latin,Latin,num}]{HelveticaNeueLTCom-It}

在此处输入图片描述

日志文件中的警告如下所示:

*************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
* 
* OpenType feature 'Style=MathScript' (+ssty) not available for font
* 'HelveticaNeueLTCom-ThIt' with script 'Math' and language 'Default'.
*************************************************
luaotfload: font no 25 (HelveticaNeueLTCom-ThIt) does not define feature ssty fo
r script latn with language dflt
luaotfload: no font with id 25
*************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
* 
* OpenType feature 'Style=MathScriptScript' (+ssty) not available for font
* 'HelveticaNeueLTCom-ThIt' with script 'Math' and language 'Default'.
*************************************************

使用\usefonttheme{professionalfonts}与否对输出没有影响(据我所知)。

答案1

尝试

\usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\setsansfont[
  BoldFont=HelveticaNeueLTCom-Md,
  ItalicFont=HelveticaNeueLTCom-LtIt, 
  SmallCapsFont=TeXGyre Heros,
  SmallCapsFeatures={Letters=SmallCaps},
]{HelveticaNeueLTCom-Lt}
\setmathfont{HelveticaNeueLTCom-Lt}
\setmathfont[range=\mathit/{greek}]{TeXGyre Heros Italic}

答案2

按照相反的顺序回答你的问题:

  • --要启用 endash 和 emdash 符号的自动替换---,请确保使用选项加载相关字体Ligatures=TeX,即

    \setsansfont[Ligatures=TeX,
      Extension=.ttf,
      BoldFont=HelveticaNeueLTCom-Md,
      ItalicFont=HelveticaNeueLTCom-LtIt, 
      SmallCapsFont=TeXGyre Heros,
      SmallCapsFeatures={Letters=SmallCaps},
     ]{HelveticaNeueLTCom-Lt}
    

    我无法显示此修改产生的输出,因为我的系统上没有这些字体。设置选项 optionLigatures=TeX还会将 `` 替换为印刷正确的左双引号。

  • 到目前为止,您已指定文本(无衬线)字体,但没有指定数学字体;因此,数学部分显示在 Computer/Latin Modern 中。您应该加载包unicode-math(反过来,加载包fontspec)并发出一些指令,告诉 LuaLaTeX 尽可能多地使用文本字体系列中的字符。(据我所知,没有 opentype无衬线字体数学字体可用。

    \usepackage{unicode-math}
    \setsansfont{TeXGyre Heros}
    \setmathfont[range=\mathup/{greek,Greek,latin,Latin,num}]{TeXGyre Heros}
    \setmathfont[range=\mathit/{greek,Greek,latin,Latin,num}]{TeXGyre Heros Italic}
    \setmathfont[range=\mathbfup/{greek,Greek,latin,Latin,num}]{TeXGyre Heros Bold}
    \setmathfont[range=\mathbfit/{greek,Greek,latin,Latin,num}]{TeXGyre Heros Bold Italic}
    

    这里,我使用了各种粗细和形状的 TeXGyre Heros 字体。假设 HelveticaNeue 字体有希腊字母,您可以用等TeXGyre Heros替换HelveticaNeueLTCom-Lt

    如果您的 beamer 文档中有很多数学内容,您可以认真考虑使用其中一个professionalfonts选项,比如说,arevclass。

  • 前面的讨论还应该允许在数学模式下使用无衬线数字。

相关内容