与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。 为了得到这个工作,请确保
- 如果你正在用markdown写你的post,你的markdown解释器不会锤击你的mathjaxinput。 我发现保护它的最好方法就是始终将显示math放在
<div>
元素和内联math元素中,大多数减价解释器将单独放置。 -
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.yml
的markdown
行更改为
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
支持。
-
在默认布局的
</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>
-
在
_config.yml
设置为true,在markdown: kramdown
行。mathjax: true
-
完成。 重新使用Mathjax
- 内联,使用
\( ... \)
, -
请使用
\[ ... \]
。唯一需要注意的是使用markdown时反斜杠的转义,所以分隔符分别变为
\\( ... \\)
和\\[ ... \\]
。
- 内联,使用
-
下面是MathJaxembedded式渲染示例
\\( 1/x^{2} \\)
,这里是一个块渲染:\\[ \frac{1}{n^{2}} \\]
。
我在我的博客上使用这个。