使用R Markdown和HTML输出将数学表达式显示为非斜体

问题描述

习惯上以斜体显示数学(the tradition dates to Ancient Greece)。但是对于非正式的演讲,我不太喜欢它的外观。我正在尝试使用自己的字体进行数学显示,或者至少要消除斜体字。在YAML中使用pdf_document:mathfont: my-math-font来更改latex_engine: xelatex的数学字体很简单,但是对于HTML输出,事实证明它更加复杂。

显然,MathJax用于通过Pandoc渲染方程。我尝试过通过外部CSS文件或按照this stackoverflow question中的建议在YAML的正下方添加CSS规则。显然,Pandoc将类.math { }应用于所有MathJax表达式...但是,我对CSS的了解并不多,因此证明参数正确是很困难的。据我所知,我多余的CSS规则只是被忽略了,因为当我在R Studio中进行编织时,斜体仍然存在。

我希望有人有解决方案?这是我正在使用的代码的最小示例;要复制它,只需将其复制粘贴到.Rmd文件中,然后使用ctrl + shift + k进行编织:

---
title: "How to change math font for HTML output?"
output:
 html_document
---

```{css}
.math {
  font-family: Sans-Serif;
  font-style: normal;
}
```

This math equation is still rendered with italics: $\rho~=~\frac{m_{water}}{m_{oven-dry~soil}}$

解决方法

这是方法:

---
title: "Change MathJax font"
author: "Stéphane Laurent"
date: "05/11/2020"
output: html_document
---

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  "HTML-CSS" : {
    availableFonts : ["STIX"],preferredFont : "STIX",webFont : "STIX-Web",imageFont : null
  }
});
</script>

$$
\int_0^1 f(x) dx = 0
$$

编辑

现在不起作用。要使用不同的字体,您必须下载它们并使用MathJax的本地副本。我尝试了所有可用的字体,但渲染效果都不佳。

我认为更好的解决方案是使用标准字体并使用\mathrm

$$
\mathrm{\int_0^1 f(x) dx = 0}
$$