4

我正在构建一个 bookdown 项目并将其呈现为具有大量数学页面的 gitbook,并且呈现缓慢。我想使用KaTeX而不是 mathJax 来呈现我的数学,但我不知道如何让它工作。有一个gitbook 插件,所以应该可以,但我不太清楚如何将它与 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 一起工作吗?

4

1 回答 1

2

看来您没有阅读 KaTeX 文档。KaTeX 不会自动呈现您的数学表达式。请参阅Github 上的自述文件中的页面上的数学自动呈现部分。简而言之,您必须加载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,您需要math: false在 YAML 中设置,例如

---
site: bookdown::bookdown_site
output:
  bookdown::gitbook:
    pandoc_args: [--katex]
    mathjax: NULL
    includes:
      in_header: katex.html
documentclass: book
math: false
---
于 2017-04-19T20:49:35.373 回答