我正在使用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\}$$
这看起来与使用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文件?
在此先感谢您的帮助!
系统配置:
答案 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。