r-markdown - 对RMarkdown中的数学表达式使用其他Latex包 `output = "html_document“`

标签 r-markdown knitr mathjax

我知道如何使用.Rmd文件的pdf格式输出使用其他Latex软件包

---
header-includes:
   - \usepackage{mathtools}
---

在YAML header 中。

但是,如果指定了output: html_document,那么(当然)这是行不通的。
---
output: html_document
header-includes:
   - \usepackage{mathtools}
---

对于output: html_document来说,使用额外的Latex-Packages也可能很有趣-尤其是在数学表达式中(下面的MWE)
---
title: "MWE"
output: html_document
header-includes:
   - \usepackage{mathtools}
---

## Use "Defined by" Symbol

$$sin(x) \coloneqq \frac{opposite}{hypothenuse}$$

最佳答案

MathJax提供了许多extensions,并且还有第三方扩展。如果无法以这种方式获得所需的软件包,则事情会变得很困难。

可以使用\coloneqq重新创建诸如\newcommand之类的简单命令。最简单的方法是通过include-before选项添加它们。将您的MWE与Mathematics Meta SE中的solution结合使用,您将获得:

---
title: "MWE"
output:
  html_document: default
include-before:
- '$\newcommand{\coloneqq}{\mathrel{=}}$'
---

## Use "Defined by" Symbol

$$sin(x) \coloneqq \frac{opposite}{hypothenuse}$$

输出:

Screenshot of MWE exported as HTML

背景

RMarkdown是围绕pandoc构建的,它执行大多数格式转换。 Pandoc通过LaTeX创建PDF(默认情况下),并将仅包含源中提供的所有原始LaTeX命令。当看到\usepackage{mathtools}时,不对包进行解析,而是将命令逐字添加到中间LaTeX中。但是,在导出为HTML时,通过LaTeX命令没有任何意义,因此任何此类命令都将从输出中省略,因此文档中的任何\usepackage都不会影响HTML输出。

替代解决方案

如果您使用的是非常复杂的LaTeX软件包,则可以考虑设置一个复杂的管道以继续使用它:例如,可以使用pandoc filter提取所有方程式,将每个方程式编译为单独的文档,然后转换生成的PDF到SVG。最后,该SVG然后可以包含在HTML输出中。这是不平凡的,可能不值得付出努力。建议对include TikZ pictures使用类似的方法。

关于r-markdown - 对RMarkdown中的数学表达式使用其他Latex包 `output = "html_document“`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52201541/

相关文章:

latex - Mathjax Latex 符号正方形和三角形大小

r - 是否可以从 RStudio 中的 R markdown (.Rmd) 调用外部 R 脚本?

latex - 在 Rstudio 中合并 rmarkdown 生成的 latex 文档,而无需手动删除序言

r - 跨不同文档类型缓存 block

r - 防止在 rmarkdown 中运行 block

javascript - Ractive JS 并使用 LaTeX 输入更新 MathJax?

r - latex 错误 : Environment ThreePartTable undefined

r - R Markdown for windows中代码块的键盘快捷键给出了í

r-markdown - 在同一个 Bookdown 项目中拥有 beamer_presentation 和 pdf_book

r - 使用 markdownToHTML 的方程格式不正确