MathJax 在 android 中不工作
MathJax Not working in android
我正在尝试在 android 中使用 MathJax 库,但肯定没有成功。
我想显示一些可以在文本中间的复杂数学公式(如数学推导)
这个 link 肯定不可用了
http://cs.jsu.edu/wordpress/?p=498
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.webkit.WebView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
WebView w;
private String doubleEscapeTeX(String s) {
String t = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\'')
t += '\';
if (s.charAt(i) != '\n')
t += s.charAt(i);
if (s.charAt(i) == '\')
t += "\";
}
return t;
}
private int exampleIndex = 0;
private String getExample(int index) {
return getResources().getStringArray(R.array.tex_examples)[index];
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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", "");
// Here is my added code.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String s = getExample(exampleIndex++);
if (exampleIndex > getResources().getStringArray(
R.array.tex_examples).length - 1)
exampleIndex = 0;
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
w.loadUrl("javascript:document.getElementById('math').innerHTML='\\["
+ doubleEscapeTeX("\int_{-\infty}^{\infty} e^{-x^2}\, dx = \sqrt{\pi}"+ "\\]';"));
w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
}
}, 1000);
}
}
我在 LogCat 得到这个:
[INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: (1)
提前致谢
我浪费了一天的时间才看完答案所以花点时间写答案
这是根据@Neoh 在此 link Display Good-looking Math Formula in Android
中给出的解决方案
注意我最初犯的错误:不要复制资产文件夹中的 ASSESTS.ZIP 文件,而是复制资产文件夹中的 MathJax 文件夹。
在此之后,您可能会遇到无缘无故给出 ResourceNotFoundException 的问题,并且您可能认为代码中缺少某些内容,但它不像 that.Its Android buildToolVersion 21.0 中的错误。 1 我能够追踪到它 有一个非常有用的解决方案可以帮助我注意到这一点并解决这个问题
感谢@Neoh 和@Riley C 的解决方案和帮助
我正在尝试在 android 中使用 MathJax 库,但肯定没有成功。 我想显示一些可以在文本中间的复杂数学公式(如数学推导) 这个 link 肯定不可用了 http://cs.jsu.edu/wordpress/?p=498
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.webkit.WebView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
WebView w;
private String doubleEscapeTeX(String s) {
String t = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\'')
t += '\';
if (s.charAt(i) != '\n')
t += s.charAt(i);
if (s.charAt(i) == '\')
t += "\";
}
return t;
}
private int exampleIndex = 0;
private String getExample(int index) {
return getResources().getStringArray(R.array.tex_examples)[index];
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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", "");
// Here is my added code.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String s = getExample(exampleIndex++);
if (exampleIndex > getResources().getStringArray(
R.array.tex_examples).length - 1)
exampleIndex = 0;
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
w.loadUrl("javascript:document.getElementById('math').innerHTML='\\["
+ doubleEscapeTeX("\int_{-\infty}^{\infty} e^{-x^2}\, dx = \sqrt{\pi}"+ "\\]';"));
w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
}
}, 1000);
}
}
我在 LogCat 得到这个:
[INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: (1)
提前致谢
我浪费了一天的时间才看完答案所以花点时间写答案
这是根据@Neoh 在此 link Display Good-looking Math Formula in Android
中给出的解决方案注意我最初犯的错误:不要复制资产文件夹中的 ASSESTS.ZIP 文件,而是复制资产文件夹中的 MathJax 文件夹。
在此之后,您可能会遇到无缘无故给出 ResourceNotFoundException 的问题,并且您可能认为代码中缺少某些内容,但它不像 that.Its Android buildToolVersion 21.0 中的错误。 1 我能够追踪到它 有一个非常有用的解决方案可以帮助我注意到这一点并解决这个问题
感谢@Neoh 和@Riley C 的解决方案和帮助