带有 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 文件?
在此先感谢您的帮助!
系统配置:
- 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)
您看到的确实是 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。
我正在使用 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 文件?
在此先感谢您的帮助!
系统配置:
- 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)
您看到的确实是 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。