jekyll-katex 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/README.md +32 -23
- data/Rakefile +12 -4
- data/bin/console +4 -3
- data/gems.locked +19 -12
- data/gems.rb +2 -0
- data/jekyll-katex.gemspec +11 -8
- data/lib/{jekyll/katex.rb → jekyll-katex.rb} +4 -2
- data/lib/jekyll-katex/configuration.rb +41 -0
- data/lib/jekyll-katex/lib_root.rb +7 -0
- data/lib/jekyll-katex/version.rb +7 -0
- data/lib/jekyll/tags/katex.rb +12 -7
- metadata +28 -13
- data/bin/setup.sh +0 -7
- data/lib/jekyll/katex/lib_root.rb +0 -5
- data/lib/jekyll/katex/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97204d37eda949470ffafeaedfc8341aabf81615f48f97a8ac0f5d4c0dd4fa7c
|
4
|
+
data.tar.gz: bffedf65d7f5fd45b8ed2d19edb1f6da9c33bc2b5efc3782d75edd541797601f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e86b908ba3bc9695603facd44919aaf8844b58a5554b3577c94b1728364fafd50cc6206c5c870d26c5f4c32fc5cc3dbab27222ab0c34b994dfc4b7c1b188b7a
|
7
|
+
data.tar.gz: 39309615a67795675f4dc9e3ab4138d1a9822eeafb9d892a24ee4ff0c072e0b556722c4e4acfbb33197f6b976527550881dea40e09ea65f34f1e04756712ae93
|
data/.rubocop.yml
ADDED
data/README.md
CHANGED
@@ -6,35 +6,49 @@ KaTeX is a library for rending math on the web using LaTeX, similar to MathJax.
|
|
6
6
|
KaTeX differs from MathJax in that it displays faster rendering speed and renders to pure HTML rather than PNGs.
|
7
7
|
There are various resources in benchmarking and comparing their performance, for more info, [start here](https://khan.github.io/KaTeX/).
|
8
8
|
|
9
|
-
Comes packaged with KaTeX
|
9
|
+
Comes packaged with KaTeX `0.9.0` but you can specify a different version in your Jekyll `_config.yml` (see below).
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
13
13
|
### Bundler (recommended)
|
14
14
|
|
15
|
-
In your Jekyll project, add
|
15
|
+
1. In your Jekyll project, add the plugin to your `_config.yml`, e.g.:
|
16
16
|
|
17
|
-
```
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
```yaml
|
18
|
+
plugins:
|
19
|
+
- jekyll-katex
|
20
|
+
```
|
21
|
+
|
22
|
+
2. Add `jekyll-katex` to your `gems.rb`/`Gemfile` plugin block:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
group :jekyll_plugins do
|
26
|
+
gem 'jekyll-katex'
|
27
|
+
end
|
28
|
+
```
|
22
29
|
|
23
|
-
Once done, execute `bundle install`.
|
30
|
+
Once done, execute `bundle install`. For more information, see [here](https://jekyllrb.com/docs/plugins/).
|
24
31
|
|
25
|
-
|
32
|
+
3. Add KaTeX CSS and Fonts. Follow the installation instructions on the [KaTeX README](https://github.com/Khan/KaTeX).
|
33
|
+
You can skip including the `.js` file unless you want to do client-side in-browser rendering, as well.
|
26
34
|
|
27
|
-
|
35
|
+
Put the following (adjusting for your version) in your page headers:
|
28
36
|
|
29
|
-
|
30
|
-
|
37
|
+
```html
|
38
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.0-alpha/dist/katex.min.css" integrity="sha384-BTL0nVi8DnMrNdMQZG1Ww6yasK9ZGnUxL1ZWukXQ7fygA1py52yPp9W4wrR00VML" crossorigin="anonymous">
|
39
|
+
```
|
31
40
|
|
32
|
-
|
41
|
+
## Configuration
|
33
42
|
|
34
|
-
|
43
|
+
Supported configuration values, shown with default values:
|
35
44
|
|
36
|
-
```
|
37
|
-
|
45
|
+
```yml
|
46
|
+
katex:
|
47
|
+
js_path: "{{ Gem::lib_path }}/assets/js" # Path used to search for katex.min.js
|
48
|
+
rendering_options:
|
49
|
+
# Default KaTeX rendering options. See https://github.com/Khan/KaTeX#rendering-options
|
50
|
+
throw_error: true # throwOnError - set to false if you want rendering to output error as text rather than a build error
|
51
|
+
error_color: "#cc0000" # errorColor
|
38
52
|
```
|
39
53
|
|
40
54
|
## Usage
|
@@ -57,16 +71,11 @@ c = \pm\sqrt{a^2 + b^2}
|
|
57
71
|
|
58
72
|
## Development
|
59
73
|
|
60
|
-
### Getting Started
|
61
|
-
|
62
74
|
```bash
|
63
|
-
|
75
|
+
$ bundle install
|
76
|
+
$ rake build
|
64
77
|
```
|
65
78
|
|
66
|
-
### TODOs
|
67
|
-
|
68
|
-
1. Better stand-alone packaging of KaTeX - specific KaTeX version shouldn't need to depend on this plugin
|
69
|
-
|
70
79
|
## Contributing
|
71
80
|
|
72
81
|
Feel free to open issues and pull requests.
|
data/Rakefile
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
2
4
|
|
3
5
|
task default: :build
|
4
6
|
|
@@ -7,10 +9,16 @@ task :js_i do
|
|
7
9
|
cp 'node_modules/katex/dist/katex.min.js', 'lib/assets/js/katex.min.js'
|
8
10
|
end
|
9
11
|
|
10
|
-
task build: [
|
12
|
+
task build: %i[js_i] do
|
11
13
|
sh 'gem', 'build', 'jekyll-katex.gemspec'
|
12
14
|
end
|
13
15
|
|
14
|
-
task
|
15
|
-
|
16
|
+
task clobber: [:clean] do
|
17
|
+
rm_rf Rake::FileList.new('*.gem')
|
18
|
+
end
|
19
|
+
|
20
|
+
task :stylecheck do
|
21
|
+
sh 'bundle', 'exec', 'rubocop', '--auto-correct'
|
16
22
|
end
|
23
|
+
|
24
|
+
task release: :stylecheck
|
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'jekyll-katex'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "jekyll/katex"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start
|
data/gems.locked
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jekyll-katex (0.
|
4
|
+
jekyll-katex (0.2.0)
|
5
5
|
execjs (~> 2.7)
|
6
6
|
jekyll (~> 3.8)
|
7
7
|
|
@@ -14,17 +14,18 @@ GEM
|
|
14
14
|
colorator (1.1.0)
|
15
15
|
concurrent-ruby (1.0.5)
|
16
16
|
diff-lcs (1.3)
|
17
|
+
docile (1.3.1)
|
17
18
|
em-websocket (0.5.1)
|
18
19
|
eventmachine (>= 0.12.9)
|
19
20
|
http_parser.rb (~> 0.6.0)
|
20
21
|
eventmachine (1.2.7)
|
21
22
|
execjs (2.7.0)
|
22
|
-
ffi (1.9.
|
23
|
+
ffi (1.9.25)
|
23
24
|
forwardable-extended (2.6.0)
|
24
25
|
http_parser.rb (0.6.0)
|
25
26
|
i18n (0.9.5)
|
26
27
|
concurrent-ruby (~> 1.0)
|
27
|
-
jekyll (3.8.
|
28
|
+
jekyll (3.8.3)
|
28
29
|
addressable (~> 2.4)
|
29
30
|
colorator (~> 1.0)
|
30
31
|
em-websocket (~> 0.5)
|
@@ -41,6 +42,7 @@ GEM
|
|
41
42
|
sass (~> 3.4)
|
42
43
|
jekyll-watch (2.0.0)
|
43
44
|
listen (~> 3.0)
|
45
|
+
json (2.1.0)
|
44
46
|
kramdown (1.17.0)
|
45
47
|
liquid (4.0.0)
|
46
48
|
listen (3.1.5)
|
@@ -55,9 +57,8 @@ GEM
|
|
55
57
|
forwardable-extended (~> 2.6)
|
56
58
|
powerpack (0.1.1)
|
57
59
|
public_suffix (3.0.2)
|
58
|
-
rainbow (
|
59
|
-
|
60
|
-
rake (10.5.0)
|
60
|
+
rainbow (3.0.0)
|
61
|
+
rake (12.3.1)
|
61
62
|
rb-fsevent (0.10.3)
|
62
63
|
rb-inotify (0.9.10)
|
63
64
|
ffi (>= 0.5.0, < 2)
|
@@ -75,11 +76,11 @@ GEM
|
|
75
76
|
diff-lcs (>= 1.2.0, < 2.0)
|
76
77
|
rspec-support (~> 3.7.0)
|
77
78
|
rspec-support (3.7.1)
|
78
|
-
rubocop (0.
|
79
|
+
rubocop (0.56.0)
|
79
80
|
parallel (~> 1.10)
|
80
|
-
parser (>= 2.
|
81
|
+
parser (>= 2.5)
|
81
82
|
powerpack (~> 0.1)
|
82
|
-
rainbow (>= 2.2.2, <
|
83
|
+
rainbow (>= 2.2.2, < 4.0)
|
83
84
|
ruby-progressbar (~> 1.7)
|
84
85
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
85
86
|
ruby-progressbar (1.9.0)
|
@@ -90,7 +91,12 @@ GEM
|
|
90
91
|
sass-listen (4.0.0)
|
91
92
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
92
93
|
rb-inotify (~> 0.9, >= 0.9.7)
|
93
|
-
|
94
|
+
simplecov (0.16.1)
|
95
|
+
docile (~> 1.1)
|
96
|
+
json (>= 1.8, < 3)
|
97
|
+
simplecov-html (~> 0.10.0)
|
98
|
+
simplecov-html (0.10.2)
|
99
|
+
unicode-display_width (1.4.0)
|
94
100
|
|
95
101
|
PLATFORMS
|
96
102
|
ruby
|
@@ -98,9 +104,10 @@ PLATFORMS
|
|
98
104
|
DEPENDENCIES
|
99
105
|
bundler (~> 1.16)
|
100
106
|
jekyll-katex!
|
101
|
-
rake (~>
|
107
|
+
rake (~> 12.3)
|
102
108
|
rspec (~> 3.7)
|
103
|
-
rubocop (~> 0.
|
109
|
+
rubocop (~> 0.56.0)
|
110
|
+
simplecov (~> 0.16)
|
104
111
|
|
105
112
|
BUNDLED WITH
|
106
113
|
1.16.2
|
data/gems.rb
CHANGED
data/jekyll-katex.gemspec
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
|
5
|
-
require 'jekyll
|
7
|
+
require 'jekyll-katex/version'
|
6
8
|
|
7
9
|
Gem::Specification.new do |spec|
|
8
10
|
spec.name = 'jekyll-katex'
|
@@ -10,8 +12,8 @@ Gem::Specification.new do |spec|
|
|
10
12
|
spec.authors = ['Jerry Lin']
|
11
13
|
spec.email = 'linjer@gmail.com'
|
12
14
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
+
spec.summary = 'Jekyll plugin for easy KaTeX math server-side rendering.'
|
16
|
+
spec.description = 'Adds a liquid tag you can use to do server-side rendering of latex math using KaTeX'
|
15
17
|
spec.homepage = 'https://github.com/linjer/jekyll-katex'
|
16
18
|
spec.license = 'MIT'
|
17
19
|
|
@@ -24,17 +26,18 @@ Gem::Specification.new do |spec|
|
|
24
26
|
# end
|
25
27
|
|
26
28
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } <<
|
27
|
-
|
29
|
+
spec.bindir = 'bin'
|
28
30
|
spec.executables = []
|
29
31
|
spec.require_paths = ['lib']
|
30
32
|
|
31
|
-
spec.required_ruby_version = '>= 2.
|
33
|
+
spec.required_ruby_version = '>= 2.5.1'
|
32
34
|
|
33
|
-
spec.add_runtime_dependency 'jekyll', '~> 3.8'
|
34
35
|
spec.add_runtime_dependency 'execjs', '~> 2.7'
|
36
|
+
spec.add_runtime_dependency 'jekyll', '~> 3.8'
|
35
37
|
|
36
38
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
37
39
|
spec.add_development_dependency 'rake', '~> 12.3'
|
38
40
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
39
41
|
spec.add_development_dependency 'rubocop', '~> 0.56.0'
|
42
|
+
spec.add_development_dependency 'simplecov', '~> 0.16'
|
40
43
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'jekyll'
|
2
4
|
|
3
|
-
require 'jekyll
|
4
|
-
require 'jekyll
|
5
|
+
require 'jekyll-katex/version'
|
6
|
+
require 'jekyll-katex/lib_root'
|
5
7
|
require 'jekyll/tags/katex'
|
6
8
|
|
7
9
|
Liquid::Template.register_tag('katex', Jekyll::Tags::Katex)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'jekyll'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module Katex
|
7
|
+
# For holding configuration values specific to the jekyll-katex plugin
|
8
|
+
class Configuration
|
9
|
+
LOG_TOPIC = 'Katex Configuration:'
|
10
|
+
CONFIG_DEFAULTS = {
|
11
|
+
js_filename: 'katex.min.js',
|
12
|
+
js_path: File.join(Jekyll::Katex::LIB_ROOT, 'assets/js/'),
|
13
|
+
rendering_options: {
|
14
|
+
throw_error: true,
|
15
|
+
error_color: '#cc0000'
|
16
|
+
}
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
JEKYLL_CONFIG = Jekyll.configuration['katex']
|
20
|
+
|
21
|
+
def self.js_path
|
22
|
+
js_filename = JEKYLL_CONFIG['js_filename'] || CONFIG_DEFAULTS[:js_filename]
|
23
|
+
js_path = JEKYLL_CONFIG['js_path'] || CONFIG_DEFAULTS[:js_path]
|
24
|
+
|
25
|
+
katex_js = Dir.glob("#{js_path}/**/#{js_filename}").first
|
26
|
+
if katex_js.nil?
|
27
|
+
raise RuntimeError, 'Could not find KaTeX javascript file using provided configuration.'
|
28
|
+
end
|
29
|
+
Jekyll.logger.info LOG_TOPIC, "Found KaTeX js at: #{katex_js}"
|
30
|
+
katex_js
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.global_rendering_options
|
34
|
+
{
|
35
|
+
throwOnError: JEKYLL_CONFIG['throw_error'] || CONFIG_DEFAULTS[:throw_error],
|
36
|
+
errorColor: JEKYLL_CONFIG['error_color'] || CONFIG_DEFAULTS[:error_color]
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/jekyll/tags/katex.rb
CHANGED
@@ -1,25 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'execjs'
|
4
|
+
require 'jekyll-katex/configuration'
|
2
5
|
|
3
6
|
module Jekyll
|
4
7
|
module Tags
|
8
|
+
# Defines the custom Liquid tag for compile-time rendering of KaTeX math
|
9
|
+
# {% katex %}
|
10
|
+
# <latex math>
|
11
|
+
# {% endkatex %}
|
5
12
|
class Katex < Liquid::Block
|
6
|
-
|
7
|
-
|
13
|
+
LOG_TOPIC = 'Katex Block:'
|
14
|
+
KATEX ||= ExecJS.compile(File.open(Jekyll::Katex::Configuration.js_path).read)
|
8
15
|
|
9
16
|
def initialize(tag_name, markup, tokens)
|
10
17
|
super
|
11
|
-
@tokens = tokens
|
12
18
|
@markup = markup
|
13
|
-
|
19
|
+
@tokens = tokens
|
14
20
|
@display = markup.include? 'display'
|
15
|
-
@katex = ExecJS.compile(open(KATEX_JS_PATH).read)
|
16
21
|
end
|
17
22
|
|
18
23
|
def render(context)
|
19
24
|
latex_source = super
|
20
|
-
|
25
|
+
rendering_options = Jekyll::Katex::Configuration.global_rendering_options.merge({ displayMode: @display })
|
26
|
+
KATEX.call('katex.renderToString', latex_source, rendering_options)
|
21
27
|
end
|
22
28
|
end
|
23
29
|
end
|
24
30
|
end
|
25
|
-
2
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-katex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerry Lin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: execjs
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: jekyll
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.56.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.16'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.16'
|
97
111
|
description: Adds a liquid tag you can use to do server-side rendering of latex math
|
98
112
|
using KaTeX
|
99
113
|
email: linjer@gmail.com
|
@@ -102,20 +116,21 @@ extensions: []
|
|
102
116
|
extra_rdoc_files: []
|
103
117
|
files:
|
104
118
|
- ".gitignore"
|
119
|
+
- ".rubocop.yml"
|
105
120
|
- ".ruby-version"
|
106
121
|
- ".travis.yml"
|
107
122
|
- LICENSE.txt
|
108
123
|
- README.md
|
109
124
|
- Rakefile
|
110
125
|
- bin/console
|
111
|
-
- bin/setup.sh
|
112
126
|
- gems.locked
|
113
127
|
- gems.rb
|
114
128
|
- jekyll-katex.gemspec
|
115
129
|
- lib/assets/js/katex.min.js
|
116
|
-
- lib/jekyll
|
117
|
-
- lib/jekyll
|
118
|
-
- lib/jekyll
|
130
|
+
- lib/jekyll-katex.rb
|
131
|
+
- lib/jekyll-katex/configuration.rb
|
132
|
+
- lib/jekyll-katex/lib_root.rb
|
133
|
+
- lib/jekyll-katex/version.rb
|
119
134
|
- lib/jekyll/tags/katex.rb
|
120
135
|
- package.json
|
121
136
|
- yarn.lock
|
@@ -131,7 +146,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
146
|
requirements:
|
132
147
|
- - ">="
|
133
148
|
- !ruby/object:Gem::Version
|
134
|
-
version: 2.
|
149
|
+
version: 2.5.1
|
135
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
151
|
requirements:
|
137
152
|
- - ">="
|
data/bin/setup.sh
DELETED