jektex 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +35 -23
- data/lib/jektex/jektex.rb +11 -12
- data/lib/jektex/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daa553320105731fb20840fc40d211a73f576f6847b8b3de0019d72313ac0c97
|
4
|
+
data.tar.gz: 4479c3dc694c196845460e4ed63263ad5bb900ed9b3a42fe68e4900001dfccda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42333a3f6325918d8e1da7c6dd983c3f8404d10b2ae84449076ba768846793ec992af35e6962ebde5c3ae2619dfc2f4c3211370d9c75f6f6883707fbdf355c03
|
7
|
+
data.tar.gz: 24849a110d4ac120fcccab47f357d0c74ae8f7d640dbcd21c7741dc7cf88096aaef6afe088b99a486fe9589e6f67afa13703f09f395ad5c157f6b3ee542c8672
|
data/README.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
Jekyll plugin for blazing fast server side cached LaTeX rendering with support of macros.
|
3
3
|
Enjoy comfort of latex and markdown without cluttering your site with bloated javascript.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Features
|
6
6
|
- Renders LaTeX formulas during Jekyll rendering
|
7
|
-
- Works without any javascript
|
7
|
+
- Works without any javascript on clients side
|
8
8
|
- Is faster than any other server side Jekyll latex renderer
|
9
9
|
- Supports user defined global macros
|
10
10
|
- Has I/O efficient caching system
|
@@ -13,12 +13,13 @@ Enjoy comfort of latex and markdown without cluttering your site with bloated ja
|
|
13
13
|
- Does not interfere with Jekyll workflow and project structure
|
14
14
|
- Marks invalid syntax in document
|
15
15
|
- Prints location of invalid expression during rendering
|
16
|
+
- Tags places within the rendered documents with syntax errors
|
16
17
|
|
17
18
|
## Usage
|
18
19
|
|
19
20
|
### Notation
|
20
21
|
**Inline formula**
|
21
|
-
Put formula between two pairs of
|
22
|
+
Put formula between two pairs of dolar signs (`$$`) inside of paragraph.
|
22
23
|
|
23
24
|
```latex
|
24
25
|
Lorem ipsum dolor sit amet, consectetur $$e^{i\theta}=\cos(\theta)+i\sin(\theta)$$
|
@@ -26,12 +27,12 @@ adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq
|
|
26
27
|
```
|
27
28
|
|
28
29
|
**Display formula**
|
29
|
-
Put formula between two pairs of
|
30
|
+
Put formula between two pairs of dolar sings (`$$`) and surround it by two empty lines.
|
30
31
|
```latex
|
31
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
32
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
32
33
|
incididunt ut labore et dolore magna aliqua.
|
33
34
|
|
34
|
-
$$
|
35
|
+
$$ \left[ \frac{-\hbar^2}{2\mu}\nabla^2 + V(\mathbf{r},t)\right] \Psi(\mathbf{r},t) $$
|
35
36
|
|
36
37
|
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex
|
37
38
|
ea commodo consequat.
|
@@ -39,9 +40,8 @@ ea commodo consequat.
|
|
39
40
|
|
40
41
|
_Why Jektex does not use conventional single `$` for inline formulas and double `$$` for
|
41
42
|
display mode?
|
42
|
-
|
43
|
-
|
44
|
-
markdown parser than hacking kramdown to behave differently._
|
43
|
+
This is how [kramdown](https://kramdown.gettalong.org/)(Jekyll's markdown parser) works
|
44
|
+
so I decided to respect this convention. It makes this plugin more consistent and universal._
|
45
45
|
|
46
46
|
### Macros
|
47
47
|
You can define global macros in your `_config.yml` file:
|
@@ -49,35 +49,47 @@ You can define global macros in your `_config.yml` file:
|
|
49
49
|
```yaml
|
50
50
|
# Jektex macros
|
51
51
|
jektex-macros:
|
52
|
-
|
53
|
-
|
52
|
+
- ["\\Q", "\\mathbb{Q}"]
|
53
|
+
- ["\\C", "\\mathbb{C}"]
|
54
54
|
```
|
55
55
|
|
56
|
+
### Cache control
|
57
|
+
|
58
|
+
**Clearing cache**
|
59
|
+
To clear cached expressions you have to delete `.jektex-cache` directory in your
|
60
|
+
project directory.
|
61
|
+
|
62
|
+
**Disabling cache**
|
63
|
+
You can disable caching with `disable_disk_cache = false` in `_config.yml`.
|
64
|
+
|
56
65
|
## Installation
|
66
|
+
This plugin is available as a [RubyGem](https://rubygems.org/gems/jektex).
|
57
67
|
|
58
|
-
|
68
|
+
**Using bundler**
|
59
69
|
Add `jektex` to your `Gemfile` like this:
|
60
70
|
|
61
|
-
```
|
71
|
+
```ruby
|
62
72
|
group :jekyll_plugins do
|
63
|
-
|
73
|
+
gem "jektex"
|
64
74
|
end
|
65
75
|
```
|
66
76
|
|
67
77
|
and run `bundle install`
|
68
78
|
|
69
|
-
|
70
|
-
Just run `gem install jektex`
|
71
|
-
file:
|
72
|
-
```
|
73
|
-
plugins:
|
74
|
-
- jektex
|
79
|
+
**Without bundler**
|
80
|
+
Just run `gem install jektex`
|
75
81
|
|
82
|
+
**After installation**
|
83
|
+
Add jektex to your plugin list in your `_config.yml` file:
|
84
|
+
```yaml
|
85
|
+
plugins:
|
86
|
+
- jektex
|
76
87
|
```
|
77
88
|
|
78
|
-
|
79
|
-
Do not forget to add `katex.min.css` to you html head:
|
89
|
+
and do not forget to add `katex.min.css` to you html head:
|
80
90
|
```html
|
81
91
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css" integrity="sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ" crossorigin="anonymous">
|
82
92
|
```
|
83
|
-
It is much better practice to download css file and loaded as an asset from your server directly.
|
93
|
+
It is much better practice to download **css** file and loaded as an asset from your server directly.
|
94
|
+
You can find more information on [KaTeX's website](https://katex.org/docs/browser.html).
|
95
|
+
|
data/lib/jektex/jektex.rb
CHANGED
@@ -14,11 +14,11 @@ $count_newly_generated_expressions = 0
|
|
14
14
|
$cache = nil
|
15
15
|
$disable_disk_cache = false
|
16
16
|
|
17
|
-
def convert(
|
18
|
-
# convert HTML
|
19
|
-
post = HTMLEntities.new.decode(
|
20
|
-
post = post.gsub(/(\\\()((.|\n)*?)(?<!\\)\\\)/) { |m| escape_method($1, $2,
|
21
|
-
post = post.gsub(/(\\\[)((.|\n)*?)(?<!\\)\\\]/) { |m| escape_method($1, $2,
|
17
|
+
def convert(page)
|
18
|
+
# convert HTML entities back to characters
|
19
|
+
post = HTMLEntities.new.decode(page.output.to_s)
|
20
|
+
post = post.gsub(/(\\\()((.|\n)*?)(?<!\\)\\\)/) { |m| escape_method($1, $2, page.path) }
|
21
|
+
post = post.gsub(/(\\\[)((.|\n)*?)(?<!\\)\\\]/) { |m| escape_method($1, $2, page.path) }
|
22
22
|
return post
|
23
23
|
end
|
24
24
|
|
@@ -47,7 +47,7 @@ def escape_method( type, string, doc_path )
|
|
47
47
|
# create the cache directory, if it doesn't exist
|
48
48
|
begin
|
49
49
|
# render using ExecJS
|
50
|
-
@result = KATEX.call("katex.renderToString", string,
|
50
|
+
@result = KATEX.call("katex.renderToString", string,
|
51
51
|
{displayMode: @display, macros: $global_macros})
|
52
52
|
rescue SystemExit, Interrupt
|
53
53
|
# save cache to disk
|
@@ -70,14 +70,14 @@ end
|
|
70
70
|
|
71
71
|
def print_stats
|
72
72
|
print " LaTeX: " +
|
73
|
-
($count_newly_generated_expressions).to_s +
|
74
|
-
" expressions rendered (" + $cache.size.to_s +
|
73
|
+
($count_newly_generated_expressions).to_s +
|
74
|
+
" expressions rendered (" + $cache.size.to_s +
|
75
75
|
" already cached) \r"
|
76
76
|
$stdout.flush
|
77
77
|
end
|
78
78
|
|
79
|
-
Jekyll::Hooks.register :
|
80
|
-
|
79
|
+
Jekyll::Hooks.register :pages, :post_render do |page|
|
80
|
+
page.output = convert(page)
|
81
81
|
end
|
82
82
|
|
83
83
|
Jekyll::Hooks.register :site, :after_init do |site|
|
@@ -91,7 +91,7 @@ Jekyll::Hooks.register :site, :after_init do |site|
|
|
91
91
|
if $global_macros.size == 0
|
92
92
|
puts " LaTeX: no macros loaded"
|
93
93
|
else
|
94
|
-
puts " LaTeX: " + $global_macros.size.to_s + " macro" +
|
94
|
+
puts " LaTeX: " + $global_macros.size.to_s + " macro" +
|
95
95
|
($global_macros.size == 1 ? "" : "s") + " loaded"
|
96
96
|
end
|
97
97
|
|
@@ -115,7 +115,6 @@ end
|
|
115
115
|
Jekyll::Hooks.register :site, :post_write do
|
116
116
|
# print new line to prevent overwriting previous output
|
117
117
|
print "\n"
|
118
|
-
puts
|
119
118
|
# check if caching is enabled
|
120
119
|
if $disable_disk_cache == false
|
121
120
|
# save cache to disk
|
data/lib/jektex/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jektex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Černý
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: execjs
|