如何从TinyMCE的fMath编辑器插件获取MathML / Latex代码?

时间:2017-06-06 08:22:36

标签: javascript jquery math tinymce tinymce-4

我需要使用TinyMCE编辑器,但我还需要能够编辑数学方程式和公式。我在TinyMCE安装中添加了FMath编辑器插件。

是的它可行,我可以添加方程式,但方程式生成 img 标签, src 包含 blob:http url ,这意味着,图像存在于浏览器内存中,并在浏览器关闭后被删除。

是的,有几个技巧如何使用AJAX的blob img标签做一些事情,但问题是,我希望能够将我编辑的文本加上数学方程式保存在数据库中。

我认为最好的方法是在数据库中保存等式的MathML / Latex表示。障碍是,FMath编辑器的文档很差,所以我不知道如何获得这个生成的MathML / Latex代码。

那我怎么能这样做,是否有一些FMath函数,getMathML()代码......?

通过TinyMCE访问插件API的问题很热烈?

2 个答案:

答案 0 :(得分:1)

我开发了自定义插件解决方案,请看一下: https://github.com/Axel186/mathsymbols-tinymce-plugin

它使用MathJax渲染字体。它是免费的并且拥有麻省理工学院的许可证。

看看我的其他插件,您可能有兴趣使用数学函数生成一些图表或图形。

答案 1 :(得分:0)

如果您在TinyMCE插件文件夹中检查了FMath的plugin.min.js,它会在TinyMCE创建的iframe中加载一个html页面OnlyEditor.html。这个html页面包含如下的getter函数:

<script type="text/javascript">

    var e1 = $("#editor1").mathEditor({ width: 1000, height: 400 }),
        mathml = null;

    e1.mathEditor("setSaveCallback", clientSaveMethod);

    function clientSaveMethod(){
        // get info from editor ex: get image
        console.dir(e1.mathEditor("getMathML", "UNICODE", "true"));
    }

    function getMathML(){
        return e1.mathEditor("getMathML", "UNICODE", "true");
    }

    function getBlobOrUrl(returnFunc){
        return e1.mathEditor("getBlobOrUrl", returnFunc, "UNICODE", "true");
    }

    function setMathML(mathml){
        e1.mathEditor("setMathML", mathml);
    }

    function getImage(){
        return e1.mathEditor("getImage","png");
    }

    function getMathMLToLoad(){
        return null;
    }

    // autoload used in tinyMCE editor - do not delete
    if (window.parent !== null && window.parent.getMathMLToLoad !== null) {
        mathml = window.parent.getMathMLToLoad();

        if (mathml !== null) {
            e1.mathEditor("setMathML", mathml);
        }
    }
</script>

因此getMathML()以xml格式返回原始MathML。 getImage()返回生成的图像的blob地址/数据。您还可以使用setMathML(mathml)将FMath编辑器设置为加载特定公式。