具有大都会主题的rmarkdown幻灯片中的字体问题

时间:2019-08-27 09:16:37

标签: r r-markdown pandoc xelatex

我正在使用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中编织后,会产生: slide produced with rmarkdown

这看起来与使用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}

产生: slide produced with beamer

这看起来并没有太大的区别,但是在其他等式中,缺少一些特殊字符,并且字体大小略有不同,从而影响了幻灯片的整个布局。

经过一番调查,结果发现在rmarkdown产生的tex文件中注释掉这两行会更好:

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

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

在此先感谢您的帮助!

系统配置:

  • RStudio 1.2.1335
  • rmarkdown 1.15
  • pandoc 2.3.1(通过RStudio)
  • Metropolis theme 1.2
  • Fira Sans font 4.3
  • XeTeX 3.14159265-2.6-0.999991(TeX Live 2019)

1 个答案:

答案 0 :(得分:3)

您所看到的确实是 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。