/** * 依赖jquery,需要放置在jquery后面 */ /** MathJax核心库配置对象(默认) */ window.MathJax = { options: { ignoreHtmlClass: "ig", renderActions: { addMenu: [0, "", ""], }, menuOptions: { settings: {assistiveMml: false} } }, loader: { load: ["[tex]/all-packages"] }, tex: { /* packages: { "[+]": ["color"], "[+]": ["boldsymbol"], "[+]": ["physics"], "[+]": ["mhchem"], "[+]": ["cancel"], "[+]": ["ams"], "[+]": ["amscd"], "[+]": ["unicode"], "[+]": ["bbox"], "[+]": ["noerrors"], "[+]": ["newcommand"] }, */ inlineMath: [ //["$", "$"], //["\\(", "\\)"], ], displayMath: [ //["$$", "$$"], //["\\[", "\\]"] ] }, svg: { // displayAlign: 'left', scale: '1.2', displayIndent: '0' }, startup: { ready: function(){ try { if (MathJax.version === "3.0.5") { var SVGWrapper = MathJax._.output.svg.Wrapper.SVGWrapper; var CommonWrapper = SVGWrapper.prototype.__proto__; SVGWrapper.prototype.unicodeChars = function (text, variant) { if (!variant) variant = this.variant || "normal"; return CommonWrapper.unicodeChars.call(this, text, variant); }; } MathJax.startup.defaultReady(); mathJaxCustomStyle(); mathJaxLatex2Svg(); asyncMathJaxLatex2Svg(); }catch(err){ console.log(err); } }, typeset: false } }; function mathJaxLatex2Svg() { try { $(document).ready(function () { //$('img.ans-latex-moudle,img.ans-edrawmath-moudle,img.ans-formula-moudle').each(function () { $('img.ans-latex-moudle,img.ans-formula-moudle').each(function () { var module = 'latex'; if($(this).hasClass('ans-edrawmath-moudle')){ module = 'edrawmath'; } if($(this).hasClass('ans-formula-moudle')){ module = 'formula'; } tex2SvgAction(this,module); }); // $('span.latex-formula').each(function () { // sourceTex2SvgAction(this); // }); }); } catch (err) { console.log(err); } } function mathJaxTex2svg(data) { try { if (!data) { return ''; } var svg = MathJax.tex2svg(data, {}); svg = tex2SvgErrorCheck(data, svg); return svg; } catch (err) { console.log(err); return ''; } } function sourceTex2SvgAction(span) { try { var me = span; var data = $(me).text(); if (!data) { return; } var svg = MathJax.tex2svg(data, {}); svg = tex2SvgErrorCheck(data, svg); if (svg && svg != '') { $(svg).attr('latex-formula',escape(JSON.stringify(data))); $(me).replaceWith(svg); } } catch (err) { console.log(err); } } function tex2SvgAction(img,module) { try { var me = img; var data = $(me).attr('data'); if(!data){ //console.log(me); return; } data = JSON.parse(unescape(data)); if(module == 'formula'){ data = data.formula; data = formulaRemoveDollars(data); } var svg = ''; if(data.indexOf(' 0){ svg = ''; } //var svg = MathJax.tex2svg(data, {}); if(svg && svg != ''){ $(me).replaceWith(svg); } //$(me).after(svg); } catch (err) { console.log(err); } } function formulaRemoveDollars(str) { if(!str){ return str; } var result = ''; for (var i = 0; i < str.length; i++) { if (str[i] === '$' && str[i - 1]!== '\\') { result += ''; } else { result += str[i]; } } return result; } // 去掉 '\[{}\]'标记 function edrawMathReplaceBracket(str) { if (str.indexOf('\\[{') == 0) { str = str.slice(3); } if (str.indexOf('}\\]') == str.length - 3) { str = str.slice(0, -3); } return str; } function tex2SvgErrorCheck(data, svg) { try { if ($(svg).find('g[data-mml-node="merror"]').length > 0) { var errorSvg = '无效公式'; console.log('tex2Svg error:' + $(svg).text()); console.log(data); console.log('\r\n'); return errorSvg; } return svg; } catch (err) { console.log(err); return errorSvg; } } function asyncMathJaxLatex2Svg() { try { $(document).ajaxSuccess(function (event, xhr, settings) { mathJaxLatex2Svg(); }); } catch (err) { console.log(err); } } function mathJaxCustomStyle() { var style = document.createElement('style'); style.type = 'text/css'; style.id = '_MJX-SVG-styles'; var css = 'mjx-container[jax="SVG"][display="true"]{display: inline !important;margin1: 0 !important;}mjx-container svg{max-width:100%;}'; style.appendChild(document.createTextNode(css)); document.head.appendChild(style); } // 不直接替换掉图片,图片隐藏掉,在图片后边插入一个svg function tex2SvgActionAppend(img,module) { try { var me = img; var data = $(me).attr('data'); if(!data){ //console.log(me); return; } data = JSON.parse(unescape(data)); if(module == 'formula'){ data = data.formula; } var svg = ''; if(data.indexOf(''); $(newLatexContainer).attr("contenteditable", "false"); $(svg).appendTo(newLatexContainer); var newSpan = $('\u200B') // $("
").appendTo(newDiv); $(newLatexContainer).insertAfter(me); $(newSpan).insertAfter(newLatexContainer); } //$(me).after(svg); } catch (err) { console.log(err); } }