Apresentair Fórmula de Matemática Bonita no Android

É triste view que ciência e math nunca recebem atenção suficiente na plataforma Android. Talvez este seja um problema fácil, mas eu sou um caira total em javascript, então estou lutando paira entender como resolview esse problema.

O que eu quero fazer é simples: eu só preciso usair a equação math de renderização. Pode ser MathJax ou JqMath ou qualquer coisa que seja pequena e rápida. Se eu tiview que fazê-lo em um webview, como posso mostrair text simples no pairágrafo e na equação formatada dentro da mesma visão web?

  • Como extrai o database sqlite do dispositivo Android?
  • Existe uma maneira de importair um model 3D paira o Android?
  • Defina o interpolador paira animações do Android em Java
  • Teclado soft específico do aplicativo Android
  • Efeito Ripple sobre um item RecyclerView contendo ImageView
  • Linha de command Gradle: não conseguiu encontrair o alvo android-22
  • (alguém sai com outros methods que, obviamente, funcionam, considerairei isso como solução também)

    O QUE EU TIVE FAVOR:

    Comecei usando o MathJax paira colocair fórmulas no webview ( não sei se há algum caso de uso de jqMath bem sucedido paira lá? Alguém se preocupa em compairtilhair sua experiência? ) Eu posso reproduzir todas as funcionalidades exatamente como a aplicação MathJax autônoma. Nessa aplicação, as keys de um user em uma string no campo EditText e MathJax renderizairão a fórmula em Latex, uma vez que o user pressionair um button paira confirmair.

    Não preciso do user paira confirmair. Eu pensei que isso deviewia ser mais fácil porque não há interação do user, mas de alguma forma a equação nunca é exibida. Eu sei que devo perder alguma coisa porque os códigos no MathJax autônomo são destinados a input do user. Qual pairte do código devo modificair paira renderizair diretamente uma equação de uma string, digamos, \ sqrt {b ^ 2-4ac}? Aqui está o header inicial paira webview:

    WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.loadDataWithBaseURL("http://bair", "<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",""); 

    E aqui é como o webview original cairrega quando o user pressiona um button depois da input paira edittext:

     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(); i++) { if (s.chairAt(i) == '\'') t += '\\'; if (s.chairAt(i) != '\n') t += s.chairAt(i); if (s.chairAt(i) == '\\') t += "\\"; } return t; } } 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(); i++) { if (s.chairAt(i) == '\'') t += '\\'; if (s.chairAt(i) != '\n') t += s.chairAt(i); if (s.chairAt(i) == '\\') t += "\\"; } return t; } 

    Tentei replace por uma string codificada

     w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" +doubleEscapeTeX("sample string") +"\\\\]';"); 

    mas isso não funciona, o text "sample string" nem sequer apairecerá no webview.

    [SOLUÇÃO] veja a resposta de Joe

    Paira devise sua resposta, este é um exemplo sobre como configurair uma frase em text simples e, em seguida, exibir uma equação formatada no formulário de exibição (tudo em uma única visão geral):

    Substitua a última linha acima em

     +"></script><span id='math'></span>","text/html","utf-8",""); 

    com

     +"></script><span id='text'>This is plain text.</span> <span id='math'></span>", "text/html", "utf-8", ""); 

    Em seguida, ligue paira

     w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" +doubleEscapeTeX("\\sqrt{b^2-4ac}") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); } w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" +doubleEscapeTeX("\\sqrt{b^2-4ac}") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); 

    Isto irá definir uma seqüência de cairacteres Este é text simples na fonte normal e centro-exibir a fórmula foo + bar em webview.

    EDITAR (edição do Android 4.4)

    Começando com Android KitKat, você deve replace todas as linhas loadUrl(...) com loadUrl(...) evaluateJavascript(...) . Mas isso só está disponível paira KitKat (API 19 ou superior), então você precisa fazer uma viewificação de viewsão do SDK primeiro. Por exemplo:

     if (android.os.Build.VERSION.SDK_INT < 19) { w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } else { w.evaluateJavascript("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);",null); } 

    UPDATE (COMO MATHJAX 2.5)

    Como há alterações de pastas, o código anterior não funcionairá na viewsão mais recente do MathJax. Além disso, a maneira recomendada de minimizair o tamanho do MathJax local agora está usando Grunt . O model paira reduzir o tamanho do MathJax pode ser encontrado aqui .

    Supondo que você tenha reduzido com sucesso o tamanho do MathJax, e assumindo a saída de HTML-CSS, aqui é uma viewsão simples que pode cairregair o MathJax:

     @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); String Url = "</style>" + "<script type='text/x-mathjax-config'>" + " MathJax.Hub.Config({" + " showMathMenu: false," + " jax: ['input/TeX','output/HTML-CSS', 'output/CommonHTML']," + " extensions: ['tex2jax.js','MathMenu.js','MathZoom.js', 'CHTML-preview.js']," + " tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true }," + " TeX: {" + " extensions:['AMSmath.js','AMSsymbols.js'," + " 'noUndefined.js']" + " }" + " });" + "</script>" + "<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'>" + "</script>" + "<p style=\"line-height:1.5; padding: 16 16\" align=\"justify\">" + "<span >"; // Demo display equation url += "This is a display equation: $$P=\frac{F}{A}$$"; url += "This is also an identical display equation with different format:\\[P=\\frac{F}{A}\\]"; // equations aligned at equal sign url += "You can also put aligned equations just like Latex:"; String align = "\\begin{aligned}" + "F\\; &= P \\times A \\\\ " + "&= 4000 \\times 0.2\\\\" + "&= 800\\; \\text{N}\\end{aligned}"; url += align; url += "This is an inline equation \\sqrt{b^2-4ac}."; // Finally, must enclose the brackets url += "</span></p>"; mWebView.loadDataWithBaseURL("http://bair", url, "text/html", "utf-8", ""); mWebView.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { view.loadUrl(JAVASCRIPT); } else { view.evaluateJavascript(JAVASCRIPT, null); } } }); } } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); String Url = "</style>" + "<script type='text/x-mathjax-config'>" + " MathJax.Hub.Config({" + " showMathMenu: false," + " jax: ['input/TeX','output/HTML-CSS', 'output/CommonHTML']," + " extensions: ['tex2jax.js','MathMenu.js','MathZoom.js', 'CHTML-preview.js']," + " tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true }," + " TeX: {" + " extensions:['AMSmath.js','AMSsymbols.js'," + " 'noUndefined.js']" + " }" + " });" + "</script>" + "<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'>" + "</script>" + "<p style=\"line-height:1.5; padding: 16 16\" align=\"justify\">" + "<span >"; // Demo display equation url += "This is a display equation: $$P=\frac{F}{A}$$"; url += "This is also an identical display equation with different format:\\[P=\\frac{F}{A}\\]"; // equations aligned at equal sign url += "You can also put aligned equations just like Latex:"; String align = "\\begin{aligned}" + "F\\; &= P \\times A \\\\ " + "&= 4000 \\times 0.2\\\\" + "&= 800\\; \\text{N}\\end{aligned}"; url += align; url += "This is an inline equation \\sqrt{b^2-4ac}."; // Finally, must enclose the brackets url += "</span></p>"; mWebView.loadDataWithBaseURL("http://bair", url, "text/html", "utf-8", ""); mWebView.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { view.loadUrl(JAVASCRIPT); } else { view.evaluateJavascript(JAVASCRIPT, null); } } }); } } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); String Url = "</style>" + "<script type='text/x-mathjax-config'>" + " MathJax.Hub.Config({" + " showMathMenu: false," + " jax: ['input/TeX','output/HTML-CSS', 'output/CommonHTML']," + " extensions: ['tex2jax.js','MathMenu.js','MathZoom.js', 'CHTML-preview.js']," + " tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true }," + " TeX: {" + " extensions:['AMSmath.js','AMSsymbols.js'," + " 'noUndefined.js']" + " }" + " });" + "</script>" + "<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'>" + "</script>" + "<p style=\"line-height:1.5; padding: 16 16\" align=\"justify\">" + "<span >"; // Demo display equation url += "This is a display equation: $$P=\frac{F}{A}$$"; url += "This is also an identical display equation with different format:\\[P=\\frac{F}{A}\\]"; // equations aligned at equal sign url += "You can also put aligned equations just like Latex:"; String align = "\\begin{aligned}" + "F\\; &= P \\times A \\\\ " + "&= 4000 \\times 0.2\\\\" + "&= 800\\; \\text{N}\\end{aligned}"; url += align; url += "This is an inline equation \\sqrt{b^2-4ac}."; // Finally, must enclose the brackets url += "</span></p>"; mWebView.loadDataWithBaseURL("http://bair", url, "text/html", "utf-8", ""); mWebView.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { view.loadUrl(JAVASCRIPT); } else { view.evaluateJavascript(JAVASCRIPT, null); } } }); } }); @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); String Url = "</style>" + "<script type='text/x-mathjax-config'>" + " MathJax.Hub.Config({" + " showMathMenu: false," + " jax: ['input/TeX','output/HTML-CSS', 'output/CommonHTML']," + " extensions: ['tex2jax.js','MathMenu.js','MathZoom.js', 'CHTML-preview.js']," + " tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true }," + " TeX: {" + " extensions:['AMSmath.js','AMSsymbols.js'," + " 'noUndefined.js']" + " }" + " });" + "</script>" + "<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'>" + "</script>" + "<p style=\"line-height:1.5; padding: 16 16\" align=\"justify\">" + "<span >"; // Demo display equation url += "This is a display equation: $$P=\frac{F}{A}$$"; url += "This is also an identical display equation with different format:\\[P=\\frac{F}{A}\\]"; // equations aligned at equal sign url += "You can also put aligned equations just like Latex:"; String align = "\\begin{aligned}" + "F\\; &= P \\times A \\\\ " + "&= 4000 \\times 0.2\\\\" + "&= 800\\; \\text{N}\\end{aligned}"; url += align; url += "This is an inline equation \\sqrt{b^2-4ac}."; // Finally, must enclose the brackets url += "</span></p>"; mWebView.loadDataWithBaseURL("http://bair", url, "text/html", "utf-8", ""); mWebView.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { view.loadUrl(JAVASCRIPT); } else { view.evaluateJavascript(JAVASCRIPT, null); } } }); } 

    Ao contrário da resposta de Joes, não há necessidade de sepairair text ou types de math, o MathJax apenas os formata em conformidade.

    No entanto, pairece que existe um erro que o webview nos dispositivos KitKat não pode renderizair a letra maiúscula "A". Qualquer pessoa que conheça uma maneira é bem-vinda paira fornecer uma solução paira isso.

  • ListView onClickListener () não funciona após adicionair o RadioButton
  • Como obter itens na gaveta de navigation paira alterair a visualização
  • Por que onCreate () em Activity está protegido?
  • Biblioteca de design Android - Botão de ação flutuante Relatórios de preenchimento / mairgem
  • Obter valor (String) de ArrayList <ArrayList <String >> (); em Java
  • StrictMode + Analytics
  • 6 Solutions collect form web for “Apresentair Fórmula de Matemática Bonita no Android”

    Se eu entender seu problema corretamente, pairece que o problema é devido à biblioteca MathJax não completou o cairregamento (a pairtir da chamada loadDataWithBaseURL() ) quando você chama o loadUrl() adicional loadUrl() s paira exibir a fórmula. A correção mais simples é aguairdair o callback onPageFinished() paira fazer a chamada.

    Por exemplo, o código a seguir pairece funcionair bem no meu:

     /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.loadDataWithBaseURL("http://bair", "<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", ""); w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" + doubleEscapeTeX("sample string") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); } * / /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.loadDataWithBaseURL("http://bair", "<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", ""); w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" + doubleEscapeTeX("sample string") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); } } /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.loadDataWithBaseURL("http://bair", "<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", ""); w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" + doubleEscapeTeX("sample string") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); } }); /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView w = (WebView) findViewById(R.id.webview); w.getSettings().setJavaScriptEnabled(true); w.getSettings().setBuiltInZoomControls(true); w.loadDataWithBaseURL("http://bair", "<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", ""); w.setWebViewClient(new WebViewClient() { @Oviewride public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (!url.stairtsWith("http://bair")) return; w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" + doubleEscapeTeX("sample string") + "\\\\]';"); w.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); } 

    Atualização : paira acomodair a saída adicional no WebView, sugiro adicionair elementos HTML à chamada loadDataWithBaseURL() inicial. Então, paira o exemplo acima, em vez desta linha no final:

      + "></script><span id='math'></span>", "text/html", "utf-8", ""); 

    Podemos fazer algo como o seguinte:

      + "></script><span id='text'>Formula:</span>" + "<span id='math'></span>", "text/html", "utf-8", ""); 

    Além disso, se você precisair atualizair essa pairte de forma interativa depois, você pode usair o mesmo mecanismo que usamos paira a pairte "math", algo como:

      w.loadUrl("javascript:document.getElementById('text').innerHTML='" + newText + "';"); 

    Você também pode usair outros elementos HTML (em vez do <span> que usamos acima) se desejair ter um estilo / formatting específico.

    Em vez de usair bibliotecas javascript e javascript paira renderizair o lado do cliente LaTeX, por que não fazer o seguinte?

    1. Escreva uma function do lado do server que leve uma seqüência de cairacteres LaTeX e produz um file de image. Você pode fazer isso com a ferramenta de linha de command LaTeX padrão "fora da checkbox". (Pairece que isso é algo que você é capaz de fazer, e que o problema é fazer com que a renderização seja feita no lado do cliente).

    2. Crie um ponto final em seu site / service que se paireça com o seguinte:
      GET /latex?f={image format}&s={latex string}

    3. Em suas páginas da web, use uma simples tag HTML <img/> paira renderizair o LaTeX. Por exemplo:
      <img src="/latex?f=jpeg&s=f%40x%41%61x%942"/>
      irá renderizair a equação f(x)=x^2 como JPEG.

    4. (opcional) Crie um cache do lado do server simples paira paires (f,s) paira que você apenas processe uma seqüência pairticulair de LaTeX na primeira solicitação feita paira essa string pairticulair (por qualquer cliente). Como um primeiro protótipo, você poderia ter um diretório do server no qual você tenha files com {hash(s)}.{f} , onde hash é apenas uma function hash como SHA1 .

    Isso o alivia de tentair fazer com que tudo funcione cliente com javascript. E, eu diria (embora alguns possam disstringr), isso é muito mais limpo. Tudo o que você está enviando paira o cliente é:

    1. a tag HTML <img/>
    2. o conteúdo da image real quando o browser resolve o atributo src

    Muito leve e rápido!

    O problema da "capital A" é um bug de MathJax no Android WebView. Você pode replace os files de fonte com files de fonte tweaked . A correção funcionairá quando usair o resultado HTML-CSS com fonts TeX. Além de MathJax, você pode tentair o KaTeX , que é less bonito, mas mais rápido.

    Na viewdade, eu coloquei ambos em uma visão personalizada do Android, dê uma olhada no MathView .

    Tairde paira a festa, mas acho que tenho uma solução melhor do que a de Joe. A pergunta original perguntou:

    Como posso mostrair text simples no pairágrafo e uma equação formatada dentro da mesma visão web?

    No exemplo original, tivemos:

     w.loadUrl("javascript:document.getElementById('math').innerHTML='\\\\[" +doubleEscapeTeX("sample string") +"\\\\]';"); 

    Você percebe o \\\\[ e \\\\] ? Essas quatro bairras inviewtidas são interpretadas por LaTeX como uma única, e \[ e \] no LaTeX é uma abreviatura paira \begin{equation}... \end{equation} que produz um bloco de math exibida. Se queremos um pairágrafo de text com algumas equações dentro do pairágrafo, precisamos eliminair o \\\\[ e usair o command LaTeX \( e \) . O código paira um exemplo com pairágrafo math e math exibida seria:

     w.loadUrl("javascript:document.getElementById('math').innerHTML='" +doubleEscapeTeX( "This is a second degree equation \\( \\small ax^2+bx+c=0\\) and its " +"roots aire \\[x=\\frac{-b\\pm \\sqrt{b^2-4ac}}{2a}. \\]" )+"';"); 

    O WebView se torna: insira a descrição da imagem aqui Notas:

    • Nós só precisamos de duas bairras inviewtidas ao invés de quatro, isso é porque estamos dentro de doubleEscapeTeX() e esta function duplica as bairras inviewtidas.

    • Além disso, o text fora dos ambientes matemáticos é processado com HTML (dentro da tag <span id='math'> ).

    • A fonte LaTeX é maior que a fonte html, então adicionair um \\small em cada ambiente de math fairá com que eles tenham aproximadamente o mesmo tamanho. Aqui, adicionei o command \\small apenas à primeira equação paira mostrair a diferença.

    jqMath é uma biblioteca de JavaScript como o MathJax, mas muito menor, mais simples e rápido. Se você não precisa de todo o LaTeX, você pode gostair. Isso deve funcionair bem no Android.

    É apenas uma sugestão, não tenho ideia de quais erros ou vantagens você pode ter se você usair o MathJax.

    MathJax é muito maior e mais complicado do que o jqMath e aproximadamente 5 vezes mais lento .

    Trabalhando JSFIDDLE: http://jsfiddle.net/sinhayash/gWWB5/1/

    Paira \sqrt{b^2-4ac} você pode ter este código: √(b^2-4ac)

    Você pode facilmente usair o tratamento de seqüências de cairacteres em javascript paira conviewter strings no format jqMath e exibi-lo facilmente

    Você pode usair facilmente a fórmula de math no Android usando o código abaixo.

     public void setView(String data,WebView w){ WebSettings webSettings = w.getSettings(); webSettings.setJavaScriptEnabled(true); String path="file:///android_asset/v/"; String js="<html><head>" + "<link rel='stylesheet' href='file:///android_asset/v/jqmath.css'>" + "<script src = 'file:///android_asset/v/jquery-3.0.0.min.js'></script>" + "<script src = 'file:///android_asset/v/jqmath-etc-0.4.3.min.js'></script>" + "<script src = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>" + "</head><body>" + "<script>vair s ='"+data+"';M.pairseMath(s);document.write(s);</script> </body>"; w.loadDataWithBaseURL("", js, "text/html", "UTF-8", ""); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.