KaTeX 与 bookdown + gitbook

KaTeX with bookdown + gitbook

我正在构建一个 bookdown 项目并将其呈现为包含大量数学页面的 gitbook,但呈现速度缓慢。我想使用 KaTeX instead of mathJax to render my math but I'm not sure how to get it working. There is a gitbook plugin 所以它应该是可能的,但我不太知道如何将它与 bookdown 集成。

在我的 index.Rmd 文件中,我尝试了以下操作:

---
site: bookdown::bookdown_site
output:
  bookdown::gitbook:
    pandoc_args: [--katex]
    mathjax: NULL
    includes:
      in_header: katex.html
documentclass: book
---

其中 katex.html 包含 KaTeX 的样式表和主题。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" integrity="sha384-wITovz90syo1dJWVh32uuETPVEtGigN07tkttEqPv+uR2SE/mbQcG7ATL28aI9H0" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js" integrity="sha384-/y1Nn9+QQAipbNQWU65krzJralCnuOasHncUFXGkdwntGeSvQicrYkiUBwsgUqc1" crossorigin="anonymous"></script>

但是,数学没有呈现(除了一些仍然由 MathJax 呈现的部分)。

有什么方法可以让我在 KaTeX 上使用 bookdown 吗?

看来您没有阅读 KaTeX 文档。 KaTeX 不会自动渲染你的数学表达式。请参阅 Github 的自述文件中的 Automatic rendering of math on a page 部分。简而言之,您必须加载 auto-render.min.js 并添加一个事件来呈现数学,例如在你的 katex.html 中,你需要:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" integrity="sha384-wITovz90syo1dJWVh32uuETPVEtGigN07tkttEqPv+uR2SE/mbQcG7ATL28aI9H0" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js" integrity="sha384-/y1Nn9+QQAipbNQWU65krzJralCnuOasHncUFXGkdwntGeSvQicrYkiUBwsgUqc1" crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/contrib/auto-render.min.js" integrity="sha384-dq1/gEHSxPZQ7DdrM82ID4YVol9BYyU7GbWlIwnwyPzotpoc57wDw/guX8EaYGPx" crossorigin="anonymous"></script>
<script>
  document.addEventListener("DOMContentLoaded", function() {
    renderMathInElement(document.body);
  });
</script>

要在 bookdown gitbook 输出中禁用 MathJax,您需要在 YAML 中设置 math: false,例如

---
site: bookdown::bookdown_site
output:
  bookdown::gitbook:
    pandoc_args: [--katex]
    mathjax: NULL
    includes:
      in_header: katex.html
documentclass: book
math: false
---