在Jekyll上有支持MathJax的Markdown解析器吗?

13
我使用基于Jekyll的博客,并需要一个Markdown解析器,它不会破坏我的Mathjax表达式(例如,将b_t - b_{t-1}解释为b<em>t - b</em> t - 1)。 Mathjax和markdown在math.stackechange.com和mathoverflow.net上相处得很好。一些解析器还需要双重转义开始/结束方程符号\\(,而其他解析器似乎不需要。 不太完美的解决方案: Redcarpet2有一个选项no_intra_emphasis,可以避免字母之间的下划线被破坏,因此b_t没问题,但仍然会破坏b_{t-1}
有一个Jekyll插件可以让您使用液体语法,例如{% m}%开始一个方程,但这意味着该文件不再是纯Markdown编写的,因此无法移植到其他环境中。
那么,是否有其他Markdown解释器可以放入Jekyll中并获得愉悦的体验?如果没有,其他人找到了哪些解决方法?
2个回答

12

Markdown不会处理块级HTML标记中的任何内容,因此简单地将Mathjax语法包装在<div></div>中即可保护Mathjax语法,无论解释器如何。这样可以避免必须转义Mathjax开头和结尾的命令,例如\((行内)和\[(展示)。感谢Github上的@lsegal指出了这一点。


3
使用 <span> 标签表示行内数学公式。 - huon
1
@dbaupp 不行,span标签不起作用,正如你在cboettig的github问题中所讨论的那样:https://github.com/tanoku/redcarpet/issues/130。但是我已经让Redcarpet工作了一段时间,可以看到我的回复。 - oblitum
我后来发现,在Pandoc中使用mathjax模式(其中方程式由$内联和$$显示分隔,就像原始TeX一样,并在mathjax模式下呈现为\(\[)是最可靠的。配置说明在这里:http://www.carlboettiger.info/README.html - cboettig

2

是的,有一个叫做kramdown的东西,我已经配置过了,并在我的博客中解释了。我还发现可以使用语法\\( some math \\)让Redcarpet接受内联数学公式。它将输出\( math \)到MathJax。无论如何,我更喜欢kramdown,因为它声称支持LaTeX。


尽管我还没有成功地使用kramdown实现代码块的围栏,但我们当然可以通过液态标签来解决这两个问题。但是这样一来,源代码就不再是任何一种markdown格式了。 - cboettig
@cboettig 我也没能用Redcarpet实现它,就像我在那里解释的那样。我使用2.1.1版本时得到了一个带有围栏代码块的空白屏幕,不知道原因。而且我还没有深入解决它... - oblitum
4
你的博客链接无效。 - sunnyrjuneja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接