jekyll-t4j 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 373ef8ace0a1a10dc58cbc1bcb3eb0441cf66894ad27b3a30c87dc2fef6f669d
4
- data.tar.gz: a3397303ce58f5b728608e65a2c28ca9eca192d73a6bb9a0dffe243bc8ea2862
3
+ metadata.gz: 4f7546786489dba969477bac00c45f4e89d15fefe3f875e2567b725d86c81673
4
+ data.tar.gz: 8145c980e01d7bae20bf611957a61073602789c07f070248c9c85465b241ddaa
5
5
  SHA512:
6
- metadata.gz: 802513ceba69d9729273fa2928b70c7011bf8bd5f9f0756ba89b0d10bb43f8266c27152a3ed1d926f29af41c42e55fbeae6dffdc1bc4c47f33ff10dde08b3a01
7
- data.tar.gz: e3fd8c11ed01a7f25e68d323ac86e4d698e2c2de598c89e8b999d3f8889be0ed9c37b3620f64cd28a9eee926fd37f97daede90b906bf42d807118fa57949b3bf
6
+ metadata.gz: 363df4ceb85c4e053571d6593b87009c1c79a404cb109d16f85a3f2b1325e3155bb86c0eb18f0b4780741d390994069b6608fc326fd73915c8fc58c4c84b3821
7
+ data.tar.gz: be623b5331e9e492f6484db617290c8c0f05416040613fb90da3e6dd7794dcf8b75d948a480809fa56da7b31888c4f13eaa286ea6a6a1dc17476b47962a09a5f
data/README.md CHANGED
@@ -1,12 +1,18 @@
1
1
  # Jekyll::T4J
2
2
 
3
- jekyll-t4j is a plugin integrating Jekyll with your local TeX distribution. It enables Jekyll to cope with LaTeX code in your site. If you find MathJax or KaTeX can not cover your needs to write complex articles(i.e. LaTeX using chemfig), this plugin may help you a lot.
3
+ jekyll-t4j is a Jekyll plugin providing (nearly) full support of LaTeX.
4
+
5
+ - **Comprehensive**: support almost all packages, including tikz, chemfig, etc.
6
+ - **Fast**: employ KaTeX to boost speed. Use cache, bulk rendering.
7
+ - **Server side rendering**: all stuffs are done in server.
8
+
9
+ T4J integrates Jekyll with your local TeX distribution, so you need to have either [MikTeX](https://miktex.org/) or [Tex Live](https://tug.org/texlive/) installed.
4
10
 
5
11
  Feel free to write any LaTeX! 🎉
6
12
 
7
- ## Usage
13
+ ## Getting Started
8
14
 
9
- We start by a simple instance, write a post `2023-02-04-hello-latex.md` and fill it with:
15
+ Let's start by a simple instance, write a post `2023-02-04-hello-latex.md` and fill it with:
10
16
 
11
17
  ```
12
18
  ---
@@ -15,14 +21,16 @@ title: Hello LaTeX
15
21
  date: 2023-02-04 14:53:32 +0800
16
22
  ---
17
23
 
18
- This is an inline math $$r=\sqrt{x^2+y^2}$$.
24
+ This is an inline math $r=\sqrt{x^2+y^2}$.
19
25
 
20
26
  $$\chemfig{*6((--[::-60]HO)-=(-O-[:30])-(-OH)=-=)}$$
21
27
 
22
28
  And this is vanillyl alcohol.
23
29
  ```
24
30
 
25
- Then, open your `_config.yml` file and write:
31
+ As you can see, its usage is the same as KaTeX or MathJax, but we only allow delimiters `$...$`, `$$...$$`, `\(...\)`, `\[...\]`.
32
+
33
+ Because we use the chemfig package, so open your `_config.yml` file and write:
26
34
 
27
35
  ```yaml
28
36
  t4j:
@@ -32,23 +40,13 @@ t4j:
32
40
 
33
41
  Finally, build your site, complete!
34
42
 
35
- ### Configuire
36
-
37
- As shown above, you can configuire jekyll-t4j via `_config.yml`. Here is the template:
38
-
39
- ```yaml
40
- t4j:
41
- packages:
42
- - pkgA
43
- - pkgB[xxx] # 'xxx' is the option passed to 'pkgB'
44
- - pkgC
45
- ```
43
+ You can learn more about T4J [here](https://github.com/crow02531/jekyll-t4j/wiki).
46
44
 
47
45
  ## Installation
48
46
 
49
47
  First of all, you need to have a TeX distribution. Just download and install [MikTeX](https://miktex.org/) or [Tex Live](https://tug.org/texlive/).
50
48
 
51
- Then, install jekyll-t4j just as other Jekyll plugins. Add this line to your application's Gemfile:
49
+ Then, install jekyll-t4j like other Jekyll plugins. Add this line to your application's Gemfile:
52
50
 
53
51
  ```ruby
54
52
  gem 'jekyll-t4j'
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tmpdir"
4
+ require "open3"
5
+
6
+ module Jekyll::T4J
7
+ module Engine
8
+ @@_dvisvgm_tex_ = File.join(__dir__, "dvisvgm.tex")
9
+
10
+ def self.dvisvgm_raw(snippet)
11
+ dvisvgm_raw_bulk([snippet])[0]
12
+ end
13
+
14
+ def self.dvisvgm_raw_bulk(snippets)
15
+ # setup: create 'content.tex'
16
+ pwd = Dir.mktmpdir
17
+ File.write "#{pwd}/content.tex", <<~HEREDOC
18
+ \\documentclass{article}
19
+ #{Jekyll::T4J.cfg_pkgs}
20
+ \\input{#{@@_dvisvgm_tex_}}
21
+ \\begin{document}
22
+ \\pagenumbering{gobble}
23
+ \\begingroup#{snippets.join("\\endgroup\\newpage\\begingroup")}\\endgroup
24
+ \\end{document}
25
+ HEREDOC
26
+
27
+ shell = ->(cmd) {
28
+ log, s = Open3.capture2e(cmd, :chdir => pwd)
29
+ raise log if not s.success?
30
+ }
31
+
32
+ # call 'latex' to compile: tex->dvi
33
+ shell.("latex -halt-on-error -quiet content")
34
+ shell.("latex -halt-on-error -quiet content")
35
+ # call 'dvisvgm' to convert dvi to svg(s)
36
+ shell.("dvisvgm -n -e -p 1- -v 3 content")
37
+
38
+ # fetch results
39
+ results = []
40
+ if snippets.size == 1 then
41
+ results << File.read("#{pwd}/content.svg")
42
+ else
43
+ for i in 1..snippets.size
44
+ results << File.read("#{pwd}/content-#{i.to_s}.svg")
45
+ end
46
+ end
47
+
48
+ # return
49
+ results
50
+ ensure
51
+ FileUtils.remove_entry pwd if pwd
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,8 @@
1
+ \usepackage{amsmath}
2
+ \usepackage{amssymb}
3
+
4
+ \let\OLDLATEX\LaTeX
5
+ \let\OLDTEX\TeX
6
+ \renewcommand{\LaTeX}{\text{\OLDLATEX}}
7
+ \renewcommand{\TeX}{\text{\OLDTEX}}
8
+ % TODO: elimiate the difference between katex and latex.