![Beamer 与 STIX 2 字体不兼容](https://linux22.com/image/406778/Beamer%20%E4%B8%8E%20STIX%202%20%E5%AD%97%E4%BD%93%E4%B8%8D%E5%85%BC%E5%AE%B9.png)
使用 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}
我还删除了一些您不再需要的包选项。(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}
之后,您可以加载所需的任何其他字体stix2
。例如,如果您想将 sans-serif 字体作为默认字体,则可以\renewcommand*\familydefault{\sfdefault}
使用选项加载字体包[sfdefault]
。