Beamer 与 STIX 2 字体不兼容

Beamer 与 STIX 2 字体不兼容

使用 lualatex-engine 编译此代码后,近似符号未打印。我不明白为什么。有人能帮帮我吗?

\documentclass[lualatex, utf8]{beamer}

\usepackage{stix2}
\usepackage[T1]{fontenc}

\begin{document}
  \begin{frame}
    \[ Re \approx 10^8 \]
  \end{frame}
\end{document}

答案1

使用现代字体

如果您正在运行 LuaLaTeX,则可以使用unicode-math。它支持 Unicode 和所有 TrueType 和 OpenType 字体,并消除了 LaTeX 欠 20 世纪 80 年代的大量技术债务。例如,字体需要将所有数学符号打包成有限数量的 256 个字符的数学字母表,并以不同的方式执行此操作。我个人建议您尽可能使用现代工具,并在必要时使用旧字体。

\documentclass{beamer}

\usepackage{unicode-math}

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont[Scale=1.0]{STIX Two Text}
\setmathfont{STIX Two Math}

\begin{document}
  \begin{frame}
    \[ Re \approx 10^8 \]
  \end{frame}
\end{document}

OpenType 字体示例

我还删除了一些您不再需要的包选项。(LaTeX 3 已经将 UTF-8 作为默认输入编码,并且该类可以检测它在哪个引擎上运行。)

您可以将文本字体更改为您喜欢的任何字体,或定义单独的字体。如果您需要详细信息,\setsansfont请参阅文档。fontspec

您还可以在数学模式下使用您选择的字体作为变量名称,以及数学字体中的符号,选项为range=。有关详细信息,\setmathfont请参阅 的文档。unicode-math

使用传统 8 位字体

这里的问题是beamer试图替换文档中的某些字体。如果您pdffonts在获得的 PDF 文件上运行,您会发现它试图使用LMSans(Latin Modern Sans) 而不是 STIX Two。该类检测某些字体包以及 ,unicode-math并更改其行为以与它们兼容。但是,stix2不是这些包之一(截至 2020 年)。

因此您需要使用以下命令关闭这些替换professionalfonts

\documentclass[professionalfonts]{beamer}

\usefonttheme{professionalfonts}
\usepackage[T1]{fontenc}
\usepackage{stix2}

\begin{document}
  \begin{frame}
    \[ Re \approx 10^8 \]
  \end{frame}

\end{document}

Type1 字体示例

之后,您可以加载所需的任何其他字体stix2。例如,如果您想将 sans-serif 字体作为默认字体,则可以\renewcommand*\familydefault{\sfdefault}使用选项加载字体包[sfdefault]

相关内容