带有 Metropolis 主题的 rmarkdown 幻灯片中的字体问题

Font issue in rmarkdown slides with Metropolis theme

我正在使用 rmarkdown 包制作带有 Metropolis 主题的 PDF 幻灯片。最近,我注意到方程式开始出现不同 - 它们使用不同的字体。

*.Rmd 文件的最小示例:

---
output: 
  beamer_presentation:
    theme: "metropolis"
    latex_engine: xelatex
    keep_tex: true
---

## Problem with font
$$f(x_i\mid\mu,\sigma^2) = \exp\left\{-\frac{(x_i-\mu)^2}{2\sigma^2}\right\}$$

在 RStudio 中编织时,会产生:

这看起来与使用 xelatex 在 LaTeX 中直接编译同一张幻灯片时获得的结果不同:

\documentclass{beamer}
\usetheme{metropolis}

\begin{document}

\begin{frame}{Problem with font}

\[f(x_i\mid\mu,\sigma^2) = \exp\left\{-\frac{(x_i-\mu)^2}{2\sigma^2}\right\}\]

\end{frame}

\end{document}

产生:

这看起来差别不大,但在其他公式中缺少一些特殊字符,并且字体大小略有不同,影响了我幻灯片的整体布局。

经过一些调查,结果是在 rmarkdown 生成的 tex 文件中注释掉这两行可以使它变得更好:

  %\usepackage{unicode-math}
  %\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}

unicode-math 包是这里的(唯一)罪魁祸首吗?如何解决这个问题并确保 Metropolis 使用正确的字体而无需手动更改 tex 文件?

在此先感谢您的帮助!

系统配置:

您看到的确实是 unicode-math 包的效果。有一种简单的方法可以通过强制 pandoc 使用 mathspec 包来解决这个问题。这可以通过在元数据

中设置 mathspec: true 来完成
---
mathspec: true
output: …
---

或者在调用 pandoc 时设置相应的变量

---
output: 
  beamer_presentation:
    theme: "metropolis"
    latex_engine: xelatex
    pandoc_args: ["--variable=mathspec"]
---

两者之间只有一个很小的、非常微妙的、几乎无关紧要的区别。我建议使用第一个版本,因为它更简单。

有关 differences between unicode-math and mathspec 的讨论,请参阅 TeX StackExchange。