mathjax中的多行文本用于android

时间:2015-08-21 02:59:53

标签: javascript android mathjax

我有一个带有mathjax的项目android,我在这里找到了android的代码mathjax cs.jsu.edu/wordpress/?p=585

我将代码更改为与我的项目一致,现在它正在工作,但是当全宽时,mathjax不会自动多行文本

我的代码:

WebView w = (WebView) findViewById(R.id.webview);
            String data = "x=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a} I LOVE ANDROID";
            mmltoggle=false;

            w.loadUrl("javascript:document.getElementById('mmlout').innerHTML='';");
            w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\["
                       +doubleEscapeTeX(data)+"\\\\]';");
            w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");

输出:

i.stack.imgur.com/z7iyl.png

(文字中的非空格"我喜欢ANDROID"以及当全宽时,mathjax中的文字不是自动多行)

我想输出:

i.stack.imgur.com/egJh0.png

我试过\ u00A0和"〜"但是文字不是多行的。

请帮助,谢谢!

p / s:老兄,我的英语不好

1 个答案:

答案 0 :(得分:1)

MathJax使用MathML作为其内部格式,而在MathML中,方程断点仅发生在<mo>(数学运算符)和<mspace>(数学空间)元素。您提供的“文本”仅包含<mi>个元素,因此不包含有效的断点。

您可以定义

\def\allowbreak{\mmlToken{mo}{}}

然后使用

data = "x=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a} I LOVE \allowbreak ANDROID";

但你仍然不会得到单词之间的空格,而基础MathML在语义上并不正确。

为什么你还要在数学中加入这个文本?这不应该只是简单的HTML文本而不是数学吗?也许你的数据应该是

data = "\\[x=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a}\\] I LOVE ANDROID";

并且您不会在代码中自动添加分隔符。