首页 > 解决方案 > 更改 R 笔记本中的 mathjax 渲染器(使用“self_contained: false”)

问题描述

我正在创建包含方程式的 R 笔记本。我在 Windows 10、R 3.5.1 和 rmarkdown 2.1 上使用 RStudio 1.2.5033。当我的 R 笔记本呈现为 HTML 时,MathJax (v2.7.2) 使用“HTML-CSS”输出处理器来呈现方程式。但我认为“CommonHTML”输出处理器的输出看起来更好。所以我想在我的 R 笔记本中包含一个指令,强制 MathJax 使用 CommonHTML 输出处理器。我该怎么做?

如果我使用输出格式渲染一个普通的 R Markdown 文档,我可以通过YAML 标头中html_document的选项来解决问题。mathjax例如,当以下文件呈现为 HTML 时,MathJax 将使用 CommonHTML 输出处理器:

---
title: "Trouble with MathJax"
output: 
  html_document:
    mathjax: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML.js"
    self_contained: false    
---

\begin{equation}
  R_3 = \alpha
\end{equation}

output但是当我将格式从html_document更改为 时,此解决方案效果不佳html_notebook。在这种情况下,我得到如下所示的输出:

显示 html_notebook 渲染问题的屏幕截图

方程是用 CommonHTML 渲染的,但是页面顶部有很多杂乱无章的东西(注意四个要点),而且默认的 R Notebook CSS 似乎没有实现。

这个问题似乎对于用 渲染 R 笔记本很普遍self_contained: FALSE,正如R notebooks don't render proper when "self_contained" is FALSE 中所建议的,因为 "files" 目录在渲染后被删除。但是我看不到解决该问题的好方法。


死胡同

MathJax 文档似乎表明我可以通过在调用中添加数组来指定输出jax处理器MathJax.Hub.Config()。但是当我这样做时,我的方程式仍然通过 HTML-CSS 输出处理器显示。这是一个展示问题的 R Markdown 文档的最小示例:

---
title: 'Trouble with MathJax'
output: html_notebook
---

<script type="text/x-mathjax-config"> 
  MathJax.Hub.Config({ 
    jax: ["input/TeX", "output/CommonHTML"],
  });
</script>

\begin{equation}
  R_3 = \alpha
\end{equation}

调用MathJax.Hub.Config()似乎在这里什么都不做。在 Chrome 和 Edge 中,等式是通过 HTML-CSS 呈现的,而不是 CommonHTML。如何将呈现更改为 Common HTML?


相关文章

标签: latexrstudior-markdownmathjaxrnotebook

解决方案


解决方案是简单地省略self_containedYAML 标头中的行,或者等效地设置self_containedtrue. 这是用户选择了 mathjax 渲染器的 R 笔记本的最小示例:

---
title: "Self-contained notebook with non-default Mathjax config"
output:
  html_notebook:
    mathjax: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML.js"
---

$R_3 = 2$.

当文件呈现为 HTML 时,公式会使用 CommonHTML 显示,而不是 HTML-CSS。Mathjax 脚本包含在生成的“nb.html”文件中。

我很惊讶这行得通,因为文档rmarkdown::html_document()说“即使对于自包含文档,MathJax 仍然在外部加载(这是必要的,因为它的大小)。” 但是R Markdown 书的第 3.1.8 节指出,该限制仅适用于从本地文件加载 Mathjax 时。所以也许这不应该是一个惊喜。

旁注:rmarkdown 包使用的默认 Mathjax 配置由rmarkdown:::mathjax_config(). 从 rmarkdown v2.1 开始,该函数返回“MathJax.js?config=TeX-AMS-MML_HTMLorMML”。


推荐阅读