Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
441 views
in Technique[技术] by (71.8m points)

jekyll - How to support latex in GitHub-pages?

I use jekyll to write post and show it in GitHub-pages. My source file is written with markdown.

How can I insert formula into the markdown file?

I don't want to save the formula into an image and load the image in markdown file. I actually want to write latex formula in markdown file directly.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Since resources online have changed regarding this question, here's an update on supporting LateX with GitHub Pages.

Note that the closest to Latex rendering without exporting as images and natively supporting it on your Jekyll site would be to use MathJax.

MathJax is actually recommended in Jekyllrb docs for math support, with Kramdown, it also converts it from LaTeX to PNG, more details on it here at the Kramdown documentation

Option 1: Write your equation in MathURL and embed it.

You could write the equation with MathURL, then generate a url that permanently points to the equation, and display this in an <iframe> tag. However, this will stop working if MathURL goes offline.

Option 2: Implement jsMath

jsMath will allow almost LateX like syntax and will be supported in your blog if you have set it up correctly, there is extensive documentation on this.

Option 3: Mathjax (by far the easiest in my opinion)

Many sites have mentioned that Mathjax is considered a successor of jsMath, and is much easier to implement with Jekyll. MathJax is also used by mathematics.stackexchange.com too!

  • Step 1: Have your site load the script in sites where you want to display math. (usually done in the header)

  • Optional: Check your markdown parser in _config.yml. redcarpet or kramdown is suggested in this example. Certain parsers like discount will interfere with the syntax but I have a solution below.

  • Step 2: Write your equations.

Quoting this tutorial by Gaston Sanchez:

MathJax does not have the exactly same behavior as LaTeX. By default, the tex2jax preprocessor defines the LaTeX math delimiters, which are (...) for in-line math, and [...] for displayed equations. It also defines the TeX delimiters $$...$$ for displayed equations, but it does not define $...$ as in-line math delimiters.

Read the documentation on the syntax for more details.

  • Note: Using the raw liquid tag to ensure Markdown parsers do not interfere with MathJax syntax.
  • While you could escape backslashes (e.g. \[ frac{1}{n^{2}} \])to ensure they are parsed properly, as described by Chistopher Poole's tutorial, this is not always intuitive and looks complicated. A simpler solution would be to use the raw liquid tag to ensure the text is ignored by the Markdown processor and directly output as a static html. This is done with {% raw %}and also {% endraw %}

Here is a code sample:

 {% raw %}
  $$a^2 + b^2 = c^2$$ --> note that all equations between these tags will not need escaping! 
 {% endraw %}

Lastly also ensure that the fonts support displaying LateX as some have issues like font size being too small. Alternatively here are some additional methods like Google Charts and MathML discussed in the latex StackExchange sister site.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...