markdown-preview.vim icon indicating copy to clipboard operation
markdown-preview.vim copied to clipboard

不支持mathjax

Open jimmy9065 opened this issue 10 years ago • 18 comments

想请教以下对md文件的解析是在哪个部分完成的?目前似乎不支持mathjax显示数学公式

jimmy9065 avatar Feb 21 '16 21:02 jimmy9065

@jimmy9065 md文件的解析时在浏览器端实现的,使用的时marked库,如果要支持mathjax应该加个解析库就行了

iamcco avatar Feb 22 '16 04:02 iamcco

所以是在statics的script里添加一个js和html里添加对应语句就可以了吗?

jimmy9065 avatar Feb 22 '16 04:02 jimmy9065

@jimmy9065 刚看了一下marked里面的issues,貌似不支持mathjax,不过有相关的pull requests,要支持的话估计要修改部分marked代码,比如这里code

iamcco avatar Feb 22 '16 05:02 iamcco

@jimmy9065 好吧,看漏了,marked支持~~自定义~~

iamcco avatar Feb 22 '16 06:02 iamcco

试了下没效果,不知道这个自定义要怎么作?

jimmy9065 avatar Feb 22 '16 08:02 jimmy9065

@jimmy9065 忽略我上面说的自定义:cry:,再次看错了,那是一个fork,不过可以看这里,这里有个marked+mathjax配合使用的例子,具体就是先使用mathjax处理,在使用marked处理,我试着增加mathjax支持,但是发现mathjax好大,整个mathjax有十多二十M,不清楚里面到底可以精简到多小,作为一个markdown预览插件,为了支持mathjax增加这么大体积我觉得太大了,我比较倾向于创建另一个辅助插件增加支持mathjax,按需下载

iamcco avatar Feb 22 '16 15:02 iamcco

试过这个吗?link

jimmy9065 avatar Feb 23 '16 04:02 jimmy9065

我也想要mathjax支持, 插件不错啊, 用来写数学博客完全秒杀其他编辑器. 目前我都是用stackedit, 没有vim的编辑方便. 但是支持mathjax自动预览. 而且经过我建议stackedit的插件支持_部分渲染_, 结果真的可以...

总之, mathjax其实是支持在线渲染的, 基本的东西只需要两行, 一行是mathjax cdn(这个就是一行js script), 一行是mathjax config(这个也可以不要, 使用默认不方便而已). 不用使用离线版.

我最近在更新我写的WP插件, 它除了自动根据页面是否有数学公式决定是否加载MathJax渲染脚本, 还会翻译部分latex命令. 例如title, author, tableofcontents, itemize等等.

欢迎交流!

vanabel avatar Nov 12 '16 02:11 vanabel

@vanabel 我本地测了一下,参考的是官方例子,还是可行的。

不知道有什么更好的建议?或者是有代码例子吗?我对 mathjax 不大熟悉,我有时间的话可以添加这个特性,非常欢迎pr 😄 。

iamcco avatar Nov 14 '16 08:11 iamcco

不知你具体指什么例子, mathjax就是用来渲染数学公式的, 写数学用的latex, 数学公式部分mathjax完全可以正常渲染. 现在N多网站都用了, 例如ams math, arxiv, 等著名的数学站点. 甚至各个数学博客都是用mathjax渲染的.

如果是如何将mathjax整合到real time preview的话, 我决定也许可以参考stackedit的源码, 这个好像也是公开的. 其实我没做过实时渲染, 都是写好后, 刷新渲染数学.

vanabel avatar Nov 14 '16 11:11 vanabel

@vanabel 通过我上面说的那个例子可以做到实时渲染,其实我就想问的是是否有更好的方法,因为我不熟悉MathJax,如果没有的话用上面的方法也是可行的,目前的问题就是怎么引入MathJax,如果只是cdn的话,体验还是不好,因为每次都要在线加载,并且体积也挺大的,加载还有点慢,而且没网的时候用不了这是不大能接受的。

iamcco avatar Nov 15 '16 03:11 iamcco

@vanabel mathjax 解压后 180 多 M,测试的时候我发现如果加载配置是config=TeX-AMS-MML_HTMLorMML的话,只加载了下面的几个文件:

config/TeX-AMS-MML_HTMLorMML.js
https://cdn.mathjax.org/mathjax/contrib/a11y/accessibility-menu.js
jax/output/HTML-CSS/jax.js
jax/output/HTML-CSS/fonts/STIX/fontdata.js

是不是可以减少一些体积?比如字体文件 130 多 M,测试的时候发现并没有加载字体文件。还有就是这个配置文件参数,最通用的是哪一个?

iamcco avatar Nov 16 '16 04:11 iamcco

我一般比较常用的是SVG的配置, 但是好像说对低版本IE的兼容性不是很好. 一般用你给的配置就挺通用的. 然后给定配置后可以精简字体的, 例如精简Mathjax就针对 Jekyll精简后大约只有1.7M. 同时这里有个如何精简的教程也可以参考.

vanabel avatar Nov 16 '16 08:11 vanabel

MathJax 加载使用了一个通用的配置 TeX-AMS-MML_HTMLorMML,MathJax 的体积减小为 10 M 左右,还是有些大,鉴于不是所有人都需要这个功能,所以把 MathJax 显示数学公式部分拆分为 mathjax-support-for-mkdp 插件,需要预览数学公式的话需要安装这个插件。

Plug 'iamcco/mathjax-support-for-mkdp'
Plug 'iamcco/markdown-preview.vim'

有时间更新插件后试试能不能用:)

iamcco avatar Nov 19 '16 14:11 iamcco

我发现联网的话, 不用mathjax-support-for-mkdp. 本地测试完全正常. 不过如果真涉及到写数学的话, 大家不知道怎么处理数学的定理环境? 是不是可以尽量保持latex源码(像mathjax一样可以\begin{equation}...\end{equation}), 我期望能够:

  1. 快速输入\begin{thm}[thmname]...\end{thm}}等(自动补全, 也许用UltiSnap自定义?)
  2. 自动渲染成标准的定理格式(<div class='thm'><span class='thm-h'>thmname</span><em>...</em></div>)

vanabel avatar Nov 21 '16 01:11 vanabel

不用 mathjax-support-for-mkdp 也可以?不科学啊,你是不是自己修改过 index.html 自己添加过 cdn 那个 script ?

不过如果真涉及到写数学的话, 大家不知道怎么处理数学的定理环境? 是不是可以尽量保持latex源码(像mathjax一样可以\begin{equation}...\end{equation}), 我期望能够: 快速输入\begin{thm}[thmname]...\end{thm}}等(自动补全, 也许用UltiSnap自定义?) 自动渲染成标准的定理格式 (<div class='thm'><span class='thm-h'>thmname</span><em>...</em></div>)

由于我对写这些数学公式也不是太懂,这个定理环境是什么?还有后面这个渲染成标准的定理格式和现在的区别是啥?

iamcco avatar Nov 21 '16 03:11 iamcco

  1. 我没有修改过index.html, 联网情况下不用mathjax support plugin是正常的逻辑, 请考虑保留或开发;
  2. 定理环境是写各种定理的latex environment, 可以参考latex share的例子
  3. 如果不手动渲染的话, mathjax会认为是标准的数学环境, 但是实际上没有mathjax定义相应的渲染(也许是要加载mathjax宏包?amsthm?), 这会导致渲染不成功. 一个常见的办法是手动替换成标准的html+css. 不过此时需要注意的是定理的引用与自动编号问题.

PS. 关于3, 以前在stackedit写过一个issure也许可以参考.

vanabel avatar Nov 21 '16 05:11 vanabel

@vanabel 不好意思,最近太忙了,忘了回复了。我大致看了一下你提到的issue,貌似就是把相关的替换为对应的标签,这个我有时间在看看怎么搞吧。

iamcco avatar Nov 28 '16 06:11 iamcco