![sansmathfonts 使用 XeLaTeX 编译时使常规文本变为衬线](https://linux22.com/image/432627/sansmathfonts%20%E4%BD%BF%E7%94%A8%20XeLaTeX%20%E7%BC%96%E8%AF%91%E6%97%B6%E4%BD%BF%E5%B8%B8%E8%A7%84%E6%96%87%E6%9C%AC%E5%8F%98%E4%B8%BA%E8%A1%AC%E7%BA%BF.png)
我有以下文件:
\documentclass{beamer}
\usepackage{sansmathfonts}
\begin{document}
\begin{frame}{}
Test $ a\sigma $
\end{frame}
\end{document}
如果我使用 PDFLaTeX 编译它,我会得到预期的结果:
但是,使用 XeLaTeX 我得到了以下奇怪的结果:
如果我删除该行,\usepackage{sansmathfonts}
我会得到您所期望的结果,无论是使用 PDFLaTeX 还是 XeLaTeX:
(请注意“衬线”σ)。
我尝试过明确指定beamer
使用 sans 字体,但没有任何改变。此外,如果我使用article
并设置,问题仍然存在\renewcommand{\familydefault}{\sfdefault}
,因此我认为这与 无关beamer
。
答案1
诸如此类的软件包sansmathfonts
通常没有考虑到 XeLaTeX 的字体加载机制。虽然它可能通常可以正常工作,但正如您所发现的那样,一些意外问题是可以预料到的。
在这种情况下,使用 XeLaTeX 中字体的常规方法通常效果更好,即使用加载系统安装的字体fontspec
。
具体来说,对于数学,有mathspec
一个在其上运行的包fontspec
,可以详细指定数学字体。
当然,您需要找到一种具有所有必需字体形状的字体,即拉丁字体、希腊字体、斜体字体、无衬线字体。
以 Liberation Sans 为字体的示例:
\documentclass{beamer}
\usepackage{mathspec}
\setmainfont{Liberation Sans}
\setmathfont(Digits,Latin,Greek){Liberation Sans}
\begin{document}
\begin{frame}{Test of Liberation Sans}
Test $ a\int_\infty \sqrt{\sigma\alpha\beta\pi} $
\end{frame}
\end{document}