与Jekyll一起使用MathJax

我有一个Jekyll的博客,我想用MathJax,因为我想能够input类似于

$$\sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6}$$ 

在我的markdown文件中,并用MathJax生成正确的LaTeXexpression式,就像在math.stackexchange中做的一样 。

什么是最简单的方法来做到这一点? 目前我在我的目录中有jsmath.js (GitHub gist)文件,我想我可以有一个简单的文件名为mathjs在我的_includes目录中的行

 <script src="path/to/jsmath.js></script> 

并将其包含在每个post中

 {% include mathjs %} 

但这似乎并没有工作 – 当我运行jekyll --server – 服务器页面生成,但没有任何内容是可见的。

我正在以正确的方式进行吗? 有没有更好的方式与Jekyll一起使用MathJax?

当然你可以和Jekyll一起使用mathjax。 为了得到这个工作,请确保

  1. 如果你正在用markdown写你的post,你的markdown解释器不会锤击你的mathjaxinput。 我发现保护它的最好方法就是始终将显示math放在<div>元素和内联math元素中,大多数减价解释器将单独放置。
  2. javascript行是否正确显示在html源代码中? 我发现指向mathjax CDN更容易,更快,而不是提供自己的副本。 尝试使用该行

    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

(这些configuration选项允许你使用更多的tex符号来启动你的math环境,比如\begin{equation}等)。

也许你的jsmath.js脚本存在一些问题; CDN版本将更快,可能更可靠。 (我在每个页面的页脚都有javascript的加载,但是当然,如​​果你不想在不需要的时候加载javascript的话,你的策略也是有意义的。)

如果您给我们一个链接到您的博客,我们可以帮助更多? 您可以在我的博客上看到一些示例(如果有帮助,也可以链接到github上的Jekyll安装程序)。

如果你对发布过程有足够的控制权(比如你正在运行Jekyll),一个简单的解决scheme是将markdownparsing器切换到支持TeX的parsing器。 例如,使用kramdown :

 gem install kramdown 

_config.ymlmarkdown行更改为

 markdown: kramdown 

并添加类似的东西

 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 

_layouts/default.html 。 现在,您可以简单地用$$标记任何math中的post 。

我写了一篇有关设置MathJax的博客: Latex Math Magic

实质上,你必须停止Markdown与MathJax搞混了。

我结束了使用代码块,这对我工作得很好。 所以在写东西之前至less使用4个空格,或者使用尖锐的符号: ` ; 不幸的是MathJax默认跳过<code>标签,因为它不想转换它不应该的代码。

因此,在你的主布局文件的某个地方,你必须添加一些JavaScript代码:

 MathJax.Hub.Config({ tex2jax: { skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] } }); 

此外,我们必须告诉MathJax忽略非乳胶代码块或普通代码块:

 MathJax.Hub.Queue(function() { var all = MathJax.Hub.getAllJax(), i; for(i=0; i < all.length; i += 1) { all[i].SourceElement().parentNode.className += ' has-jax'; } }); 

就他而言,我们所有的胶乳代码块都将在其类名中包含has-jaxstring。 因此,我们可以在我们的CSS表格中应用一些简单的样式,给它自己的样式。

 code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;} 

可能不是最好的方法,但它在过去几年的博客工作,我从来没有遇到任何进一步的问题。

你可以试试我的静态博客生成器: Jekyde 。 Jekyde与Jekyll很相似,但是它很好地处理了Markdown文件中的LaTeX。 你只需要把你的公式放在$ … $和$$ … $$。 另外Jekyde在LaTeX预览版的浏览器中包含一个Markdown编辑器。

如果您使用kramdown作为降价风格,那很容易。 Kramdown内置了对mathjax支持。

  1. 在默认布局的</head>标记之前添加。

     <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js? config=TeX-AMS-MML_HTMLorMML"></script> 
  2. _config.yml设置为true,在markdown: kramdown行。

     mathjax: true 
  3. 完成。 重新使用Mathjax

    • 内联,使用\( ... \)
    • 请使用\[ ... \]

      唯一需要注意的是使用markdown时反斜杠的转义,所以分隔符分别变为\\( ... \\)\\[ ... \\]

  4. 下面是MathJaxembedded式渲染示例 \\( 1/x^{2} \\) ,这里是一个块渲染: \\[ \frac{1}{n^{2}} \\]

我在我的博客上使用这个。

Interesting Posts