令人遗憾的是,在Android平台上,科学和数学从未得到足够的重视.也许这是一个简单的问题,但我在javascript中是一个完全的家伙,所以我很难理解如何解决这个问题.
我想做的很简单:我只需要使用渲染数学方程.它可以是MathJax或JqMath或任何小而快的东西.如果我必须在webview中执行此操作,如何在同一webview中的段落和格式化方程式中显示纯文本?
(任何人都提出其他显然有效的方法,我会认为这也是解决方案)
我做了什么:
我开始使用MathJax将公式放入webview(如果有任何成功的jqMath用例,我不知道吗?有人愿意分享他们的经验吗?)我可以重现所有功能,就像独立的MathJax应用程序一样.在该应用程序中,用户将字符串键入EditText字段,一旦用户按下按钮进行确认,MathJax将在Latex中呈现公式.
我不需要用户确认.我认为这应该更容易,因为没有用户交互,但不知何故方程式永远不会显示.我知道我必须遗漏一些东西,因为独立MathJax中的代码用于用户输入.我应该修改哪部分代码直接从字符串中呈现方程,比如说\ sqrt {b ^ 2-4ac}?这是webview的初始标题:
WebView w = (WebView) findViewById(R.id.webview);
w.getSettings().setJavaScriptEnabled(true);
w.getSettings().setBuiltInZoomControls(true);
w.loadDataWithBaseURL("http://bar", "<script type='text/x-mathjax-config'>"
+"MathJax.Hub.Config({ showMathMenu: false, "
+"jax: ['input/TeX','output/HTML-CSS'], "
+"extensions: ['tex2jax.js'], "
+"TeX: { extensions: ['AMSmath.js','AMSsymbols.js',"
+"'noErrors.js','noUndefined.js'] } "
+"});</script>"
+"<script type='text/javascript' "
+"src='file:///android_asset/MathJax/MathJax.js'"
+"></script><span id='math'></span>","text/html","utf-8","");
Run Code Online (Sandbox Code Playgroud)
以下是用户在输入edittext后按下按钮时加载原始webview的方式:
WebView w = (WebView) findViewById(R.id.webview);
EditText e = (EditText) findViewById(R.id.edit);
w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\["
+doubleEscapeTeX(e.getText().toString())
+"\\\\]';");
w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
private static String doubleEscapeTeX(String s) {
String t="";
for (int i=0; i < s.length(); …Run Code Online (Sandbox Code Playgroud)