繁体   English   中英

如何使用JavaScript切换MathJax渲染与代码?

[英]how to toggle MathJax render vs code with javascript?

如何使用JavaScript在MathJax方程的呈现视图和纯文本/代码视图之间切换显示?

例如,如何在下面的示例中获取按钮以在显示此按钮之间切换方程式:

$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$

以及运行代码段时呈现的方程式?

 var btn = document.getElementById("math-toggle"); btn.onclick = function(event) { // Toggle Math rendering here using MathJax API? alert("moo!"); }; 
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>MathJax example</title> <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/latest.js?config=TeX-MML-AM_CHTML" async> </script> </head> <body> <button id="math-toggle">Toggle Math</button> <p> Equation: $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$ </p> </body> </html> 

一种方法(使用MathJax API)将是使用PlainSource输出并重新渲染。

根据情况,可能更容易在应用程序中进行跟踪(例如,仅获取MathJax创建的脚本标签的内容)。

由于用于TeX的定界符仅在预处理阶段起作用(并且可由用户配置),因此需要附加逻辑来进行跟踪。

 var btn = document.getElementById("math-toggle"); btn.onclick = function(event) { if (!btn.checked) { MathJax.Hub.Queue(["setRenderer", MathJax.Hub, "CommonHTML"]); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); } else { MathJax.Hub.Queue(["setRenderer", MathJax.Hub, "PlainSource"]); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); } }; 
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>MathJax example</title> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/latest.js?config=TeX-MML-AM_CHTML"> </script> </head> <body> <input id="math-toggle" type="checkbox" name="mathjax-switch" > <label id="mathjax-switch">Replace with plain text source</label> <p> Equation: $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$ </p> </body> </html> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM