xiangming / landscape-plus

针对中国大陆地区对hexo官方主题landscape进行优化。
http://xiangming.github.io/landscape-plus/
MIT License
510 stars 107 forks source link

MathJax数学公式有bug #70

Closed cfdtlee closed 9 years ago

cfdtlee commented 9 years ago

你好,我是landscape-p的使用者,我在编辑公式时发现简单的公式没有问题,但是公式一长,比如下面这样就会出问题,显示不了公式。公式应该没错,因为我在Mou中编辑的时候显示是正常的。请问这个应该在哪块修改?

$$
J \left( \theta_0, \theta_1 \right) =  \frac{1} {2m}\sum\_{k=1}^m{ \left( h_\theta \left( x^ \left( i \right) \right) - y^\left( i \right) \right)^2}
$$
xiangming commented 9 years ago

MathJax来自这条PRhttps://github.com/xiangming/landscape-plus/pull/35,你先看看能不能解决?

@Svtter 能帮忙看下这个问题?

Svtter commented 9 years ago

@cfdtlee

最近在比赛,机器上没有环境。如果急用,你可以尝试修改一下[./layout/_partial/mathjax.ejs] 中代码,更换cdn尝试下。

cfdtlee commented 9 years ago

恩恩,我试试

pakchoi commented 9 years ago

我也遇到了同样的问题。。

Svtter commented 9 years ago

@cfdtlee

你好,不知你是否解决了问题?

问题的原因是hexo会先使用marked编译一次,之后才会使用mathjax编译。因此,在使用时,在下划线前添加\防止出错。此外,还有{之前,使用\\{替代,更不容易出错。

例如你的公式写成

$$
J \left( \theta\_0, \theta\_1 \right) =  \frac{1} {2m}\sum\_{k=1}^m{ \left( h\_\theta \left( x^ \left( i \right) \right) - y^\left( i \right) \right)^2}
$$

就不会出问题了。

@pakchoi 是否也出现了类似的问题?可以详细说明下吗?

pakchoi commented 9 years ago

@Svtter 估计问题也是出在这里。。有没有比较严格的表达式编辑器推荐啊?

$ d(i,\quad j)\quad =\quad \sqrt [ p ]{ { ({ x }_{ i1 }-{ x }_{ j1 }) }^{ p }+{ ({ x }_{ i2 }-{ x }_{ j2 }) }^{ p }+...+{ ({ x }_{ il }-{ x }_{ jl }) }^{ p } } $

Svtter commented 9 years ago

@pakchoi

若想成功解析应为

$ d(i,\quad j)\quad =\quad \sqrt [ p ]{ { ({ x }{ i1 }-{ x }{ j1 }) }^{ p }+{ ({ x }{ i2 }-{ x }{ j2 }) }^{ p }+...+{ ({ x }{ il }-{ x }{ jl }) }^{ p } } $

并非是表达式编辑器的问题。hexo的markdown编译器会将_理解为斜体的标识,因此编译过程中会出现<em>元素,所以妨碍的mathjax的解析。请使用转义符来解决这个问题。

pakchoi commented 9 years ago

@Svtter 嗯嗯,我懂你的意思。但是所有的表示式都这么改很浪费时间啊。我在想有没有现成的编辑器来处理这类问题。目前看比较简单的方法还是写个vim脚本来执行会方便点。

cfdtlee commented 9 years ago

@Svtter 原理如此,按你说的改就可以了,有了数学公式瞬间高大上了,谢谢哈!