首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jekyll上运行KaTeX?

在Jekyll上运行KaTeX?
EN

Stack Overflow用户
提问于 2018-06-16 18:38:47
回答 3查看 1.6K关注 0票数 3

有几天我试图在静态的Jekyll网站上使用KaTeX而不是MathJax。我在网上尝试了很多建议,但都没有成功。最后一个是杰基尔-凯特克斯插件。我遵循了自述中的所有步骤。

这是我现在的Gemfile

代码语言:javascript
复制
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中的相关部分

代码语言:javascript
复制
markdown: kramdown
theme: minima
plugins:
  - jekyll-feed
  - jekyll-katex

当我运行bundle exec jekyll serve时,我会收到以下错误:

代码语言:javascript
复制
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)>'

任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-16 22:29:40

我做到了!然而,我使用的不是jekyll-katex插件,而是jekyll-katek-block。我只是遵循了它的自述文件中的指令。基本上所需的步骤是:

  1. katex_block.rb放在_plugins文件夹中
  2. katex.min.js存储在您的网站的任何地方。默认为/public/js/katex.min.js,否则必须修改_config.yml添加 path_to_js:"./your/path/to/katex/js“
  3. (几乎可选)链接katek.min.css和字体。

katex.min.jskatex.min.css和字体可以从KaTeX GitHub页面下载。

正如我所说的,我的目的是使用Jekyll运行KaTeX,这个方法可以工作。但是,如果其他人能够使jekyll-katex工作,因为它是最初的请求,我会将其标记为已接受。

票数 1
EN

Stack Overflow用户

发布于 2021-03-06 22:28:53

自从OP提出这个问题以来,已经有一段时间了,但是经过了一整天不同来源关于将KaTeX集成到我的Jekyll静态站点(加上我使用GitHub页面的附加约束)的尝试和错误之后,这篇博客文章的步骤让它对我起了作用。我决定在下面复制它,因为它回答了这个问题,其他用户可能会觉得它很有用,而且因为这个博客不容易找到(它被埋在jekyll-katex GitHub回购的问题部分,无法通过谷歌搜索访问):

用Jekyll自动呈现KaTeX,它可以处理GitHub页面.

  1. 将以下行添加到_config.yml文件中:
代码语言:javascript
复制
kramdown:
  math_engine: katex
  1. <head>标记中添加_includes/head.html中的以下代码片段,注意缩进:
代码语言:javascript
复制
  <!--KaTeX-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
  <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
  <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/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看起来像:

代码语言:javascript
复制
<head>

  ...

  <!--KaTeX-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
  <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
  <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/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。例如:
代码语言:javascript
复制
---
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。
票数 4
EN

Stack Overflow用户

发布于 2018-06-19 10:06:16

关于jekyll-katex插件,由于新的配置选项,我似乎在新版本的bug中遇到过。我在项目的github回购上发布了一个问题,它很快就会被修复。在此之前,解决方案(根据开发人员的说法)似乎应该是在_config.yml中添加一个空配置选项。

代码语言:javascript
复制
katex:

备注:,当错误被解决时,我会更新这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50890702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档