MathJax не работает в Android без ошибок - PullRequest
0 голосов
/ 19 марта 2019

Я следовал инструкциям отсюда Показать красивую математическую формулу в Android

Когда я запускаю код, я получаю \[\sqrt{b^2-4ac}\], отображаемое на моем устройстве Android с этим ("\\sqrt{b^2-4ac}") в качестве ввода. Я перепробовал все ... это все тот же вывод.

Я пытался удалить + "src='file:///android_asset/MathJax/MathJax.js'" из моего кода. Но когда я запускаю код, он все равно выполняется без ошибок. Это означает, что путь к коду не работает ...

Это мой код:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    final WebView w = findViewById(R.id.webview);
    w.getSettings().setJavaScriptEnabled(true);
    w.getSettings().setBuiltInZoomControls(true);
    w.getSettings().setDomStorageEnabled(true);
    w.getSettings().setAllowFileAccess(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='text'>This is plain text.</span> <span id='math'></span>", "text/html", "utf-8", "");
    w.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (!url.startsWith("http://bar")) return;
            w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\["
                    + doubleEscapeTeX("\\sqrt{b^2-4ac}") + "\\\\]';");
            w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
        }
    });



}

private static 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;
}

}

Project_Structure

Пожалуйста, помогите, спасибо.

...