Запуск KaTeX на Jekyll?

Несколько дней я пытаюсь использовать KaTeX вместо MathJax на своем статичном веб-сайте Jekyll. Я пробовал много предложений, найденных в Интернете, но безуспешно. Последний — плагин jekyll-katex. Я выполнил все шаги в ридми.

Это мой текущий Gemfile:

source "https://rubygems.org"

gem "jekyll", "~> 3.8.3"
gem "minima", "~> 2.0"

group :jekyll_plugins do
  gem "jekyll-feed", "~> 0.6"
  gem 'jekyll-katex', "~> 0.2"
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.0" if Gem.win_platform?

Это соответствующая часть моего текущего _config.yml:

markdown: kramdown
theme: minima
plugins:
  - jekyll-feed
  - jekyll-katex

Когда я запускаю bundle exec jekyll serve, я получаю эту ошибку:

bundler: failed to load command: jekyll (/usr/local/bin/jekyll)
Bundler::GemRequireError: There was an error while trying to load the gem 'jekyll-katex'.
Gem Load Error is: undefined method `[]' for nil:NilClass
Backtrace for gem load error is:
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll-katex/configuration.rb:22:in `js_path'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll/tags/katex.rb:14:in `<class:Katex>'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll/tags/katex.rb:12:in `<module:Tags>'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll/tags/katex.rb:7:in `<module:Jekyll>'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll/tags/katex.rb:6:in `<top (required)>'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll-katex.rb:7:in `require'
/var/lib/gems/2.5.0/gems/jekyll-katex-0.2.0/lib/jekyll-katex.rb:7:in `<top (required)>'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:81:in `require'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:81:in `block (2 levels) in require'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:76:in `each'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:76:in `block in require'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:65:in `each'
/usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:65:in `require'
/usr/local/lib/site_ruby/2.5.0/bundler.rb:114:in `require'
/var/lib/gems/2.5.0/gems/jekyll-3.8.3/lib/jekyll/plugin_manager.rb:51:in `require_from_bundler'
/var/lib/gems/2.5.0/gems/jekyll-3.8.3/exe/jekyll:11:in `<top (required)>'
/usr/local/bin/jekyll:23:in `load'
/usr/local/bin/jekyll:23:in `<top (required)>'
/usr/local/lib/site_ruby/2.5.0/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/site_ruby/2.5.0/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/site_ruby/2.5.0/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/site_ruby/2.5.0/bundler/cli.rb:424:in `exec'
/usr/local/lib/site_ruby/2.5.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/site_ruby/2.5.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/site_ruby/2.5.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/site_ruby/2.5.0/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/site_ruby/2.5.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/site_ruby/2.5.0/bundler/cli.rb:18:in `start'
/usr/lib/ruby/gems/2.5.0/gems/bundler-1.16.2/exe/bundle:30:in `block in <top (required)>'
/usr/local/lib/site_ruby/2.5.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/lib/ruby/gems/2.5.0/gems/bundler-1.16.2/exe/bundle:22:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Bundler Error Backtrace:

  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:84:in `rescue in block (2 levels) in require'
  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:80:in `block (2 levels) in require'
  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:76:in `each'
  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:76:in `block in require'
  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:65:in `each'
  /usr/local/lib/site_ruby/2.5.0/bundler/runtime.rb:65:in `require'
  /usr/local/lib/site_ruby/2.5.0/bundler.rb:114:in `require'
  /var/lib/gems/2.5.0/gems/jekyll-3.8.3/lib/jekyll/plugin_manager.rb:51:in `require_from_bundler'
  /var/lib/gems/2.5.0/gems/jekyll-3.8.3/exe/jekyll:11:in `<top (required)>'
  /usr/local/bin/jekyll:23:in `load'
  /usr/local/bin/jekyll:23:in `<top (required)>'

Любая помощь приветствуется.


person gvgramazio    schedule 16.06.2018    source источник
comment
Обратите внимание, что моя настоящая цель — найти простой способ использования KaTeX с Jekyll. Это означает, что если у вас есть другие решения, не использующие этот плагин, вы также можете опубликовать их.   -  person gvgramazio    schedule 16.06.2018


Ответы (3)


Прошло много времени с тех пор, как OP задал вопрос, но после целого дня проб и ошибок из разных источников по интеграции KaTeX в мой статический сайт Jekyll (с дополнительным ограничением, что я использую страницы GitHub), шаги из эта запись в блоге помогла мне. Я решил воспроизвести его здесь ниже, потому что он отвечает на вопрос, другим пользователям он может быть полезен, а также потому, что блог нелегко найти (он был спрятан в разделе проблем в репозитории jekyll-katex GitHub и недоступен через поиск Google). ):

Автоматический рендеринг KaTeX с помощью Jekyll, который работает со страницами GitHub.

  1. Добавьте следующие строки в файл _config.yml:
kramdown:
  math_engine: katex
  1. Добавьте следующий фрагмент кода внутри тегов <head> в _includes/head.html, обращая особое внимание на отступы:
  <!--KaTeX-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
  <script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
  <script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js" integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"></script>
  <script>
      document.addEventListener("DOMContentLoaded", function() {
          renderMathInElement(document.body, {
              // ...options...
          });
      });
  </script>

Так что _includes/head.html выглядит так:

<head>

  ...

  <!--KaTeX-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
  <script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
  <script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js" integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"></script>
  <script>
      document.addEventListener("DOMContentLoaded", function() {
          renderMathInElement(document.body, {
              // ...options...
          });
      });
  </script>

</head>
  1. Чтобы использовать KaTeX в записи блога .md, вставьте katex: True. Например:
---
layout: post
title: KaTeX with Jekyll
katex: True
---
inline: $$f(x) = \int_{-\infty}^\infty \hat f(\xi)\,e^{2 \pi i \xi x} \,d\xi$$
display mode (centered):

$$f(x) = \int_{-\infty}^\infty \hat f(\xi)\,e^{2 \pi i \xi x} \,d\xi$$
  1. Все внутри знаков $$ теперь будет отображаться как KaTeX.
person microhaus    schedule 06.03.2021

Я это сделал! Однако я использовал не jekyll-katex плагин, а jekyll-katek-block. Я просто следовал инструкциям в readme. В основном нужны только следующие шаги:

  1. Поместите katex_block.rb в папку _plugins
  2. Храните katex.min.js в любом месте вашего веб-сайта. По умолчанию /public/js/katex.min.js, в противном случае вам придется изменить _config.yml добавление

    katex:
      path_to_js: "./your/path/to/katex/js"
    
  3. (почти необязательно) Ссылка katek.min.css и шрифты.

katex.min.js, katex.min.css и шрифты можно загрузить с страницы KaTeX GitHub.

Как я уже сказал, моей целью было запустить KaTeX с Jekyll, и этот метод работает. Однако, если кто-то еще сможет заставить jekyll-katex работать, поскольку это был первоначальный запрос, я отмечу его как принятый.

person gvgramazio    schedule 16.06.2018
comment
Я столкнулся с похожими проблемами. Работает ли для вас использование jekyll-katex-block вместо jekyll-katex? - person microhaus; 06.03.2021
comment
@microhaus кажется, ошибка была исправлена ​​позже, но я больше не пробовал и точно не знаю. - person gvgramazio; 06.03.2021

Что касается плагина jekyll-katex, похоже, я столкнулся с ошибкой новой версии из-за новых параметров конфигурации. Я опубликовал проблему в репозитории проекта на github, и скоро она будет исправлено. До тех пор кажется, что обходной путь (по мнению разработчика) должен состоять в том, чтобы добавить пустые параметры конфигурации в _config.yml:

katex:

Примечание: когда ошибка будет устранена, я обновлю этот ответ.

person gvgramazio    schedule 19.06.2018