latex - 更改 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
。在这种情况下,我得到如下所示的输出:
方程是用 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?
相关文章
- 一年前的帖子,Markdown 中有没有办法覆盖默认的 mathjax 渲染器?, 是关于 Jupyter 笔记本的,但它是相关的。它没有收到答复。
- 从 MathJax Google Group改编这篇文章中的脚本——主要是通过将“HTML-CSS”更改为“CommonHTML”——似乎没有任何效果。
解决方案
解决方案是简单地省略self_contained
YAML 标头中的行,或者等效地设置self_contained
为true
. 这是用户选择了 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”。
推荐阅读
- powershell - Powershell Core中的“对象引用未设置为对象的实例”
- rust - 遍历对 Chars 的引用
- python - 如何将行读入多个文件
- postgresql - 如何将 CASE WHEN 语句限制为仅显示 ELSE 值?
- jquery - jQuery在动画子元素时扩展父div
- powerapps - 如果从 sql server 中删除,则无法重新添加数据
- java - 当 cassandra 单元测试在 Jenkins 上运行但在本地工作时出现 ExceptionInInitializerError
- javascript - 如何在 ES6 中将属性附加到函数
- android - 当我使用 ListView.builder 自动创建许多 Listile 时,如何编辑每个列表?
- python - 有什么理由我不应该使用 time.sleep() 命令让我的程序每 2 小时执行一次?