KaTeX с bookdown + gitbook
Я строю проект 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?
1 ответ
Кажется, вы не читали документацию по KaTeX. KaTeX не отображает автоматически ваши математические выражения. Смотрите раздел Автоматический рендеринг математики на странице в README на 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>
Чтобы отключить MathJax в выводе gitbook bookdown, вам нужно установить math: false
в YAML, например
---
site: bookdown::bookdown_site
output:
bookdown::gitbook:
pandoc_args: [--katex]
mathjax: NULL
includes:
in_header: katex.html
documentclass: book
math: false
---
Мне не удалось заставить предложение Yihui работать, но проверяю связанный README
от KaTeX
репо я использовал следующее в katex.html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
Затем в YAML я использовал:
---
site: bookdown::bookdown_site
output:
bookdown::gitbook:
pandoc_args: [--katex]
mathjax: NULL
includes:
in_header: katex.html
documentclass: book
math: true
---
В частности, я счел необходимым использовать math: true
не math: false
.