⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asciimathml.js

📁 数值计算方法网络课件系统是浙江大学过程装备与控制工程专业2001级本科生毕业设计成果。本系统采用ASP+ACCESS架构
💻 JS
📖 第 1 页 / 共 3 页
字号:
        if (!isIE && typeof symbol.codes != "undefined") {          for (i=0; i<result[0].childNodes.length; i++)            if (result[0].childNodes[i].nodeName=="mi" || result[0].nodeName=="mi") {              st = (result[0].nodeName=="mi"?result[0].firstChild.nodeValue:                              result[0].childNodes[i].firstChild.nodeValue);              var newst = [];              for (var j=0; j<st.length; j++)                if (st.charCodeAt(j)>64 && st.charCodeAt(j)<91) newst = newst +                  String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]);                else newst = newst + st.charAt(j);              if (result[0].nodeName=="mi")                result[0]=AMcreateElementMathML("mo").                          appendChild(document.createTextNode(newst));              else result[0].replaceChild(AMcreateElementMathML("mo").          appendChild(document.createTextNode(newst)),result[0].childNodes[i]);            }        }        node = AMcreateMmlNode(symbol.tag,result[0]);        node.setAttribute(symbol.atname,symbol.atval);        return [node,result[1]];      }    }  case BINARY:    str = AMremoveCharsAndBlanks(str,symbol.input.length);     result = AMparseSexpr(str);    if (result[0]==null) return [AMcreateMmlNode("mo",                           document.createTextNode(symbol.input)),str];    AMremoveBrackets(result[0]);    var result2 = AMparseSexpr(result[1]);    if (result2[0]==null) return [AMcreateMmlNode("mo",                           document.createTextNode(symbol.input)),str];    AMremoveBrackets(result2[0]);    if (symbol==AMroot || symbol==AMover) newFrag.appendChild(result2[0]);    newFrag.appendChild(result[0]);    if (symbol==AMfrac) newFrag.appendChild(result2[0]);    return [AMcreateMmlNode(symbol.tag,newFrag),result2[1]];  case INFIX:    str = AMremoveCharsAndBlanks(str,symbol.input.length);     return [AMcreateMmlNode("mo",document.createTextNode(symbol.output)),str];  case SPACE:    str = AMremoveCharsAndBlanks(str,symbol.input.length);     node = AMcreateElementMathML("mspace");    node.setAttribute("width","1ex");    newFrag.appendChild(node);    newFrag.appendChild(      AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));    node = AMcreateElementMathML("mspace");    node.setAttribute("width","1ex");    newFrag.appendChild(node);    return [AMcreateMmlNode("mrow",newFrag),str];  default:    str = AMremoveCharsAndBlanks(str,symbol.input.length);     return [AMcreateMmlNode(symbol.tag,        //its a constant                             document.createTextNode(symbol.output)),str];  }}function AMparseExpr(str) {  var symbol, sym1, sym2, node, result, i, underover, nodeList = [],  newFrag = document.createDocumentFragment();  do {    str = AMremoveCharsAndBlanks(str,0);    sym1 = AMgetSymbol(str);    result = AMparseSexpr(str);    node = result[0];    str = result[1];    symbol = AMgetSymbol(str);    if (symbol.ttype == INFIX) {      str = AMremoveCharsAndBlanks(str,symbol.input.length);      result = AMparseSexpr(str);      if (result[0] == null)        result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));      else AMremoveBrackets(result[0]);      str = result[1];      if (symbol == AMdiv) AMremoveBrackets(node);      if (symbol == AMsub) {        sym2 = AMgetSymbol(str);        underover = (sym1.ttype == UNDEROVER);        if (sym2 == AMsup) {          str = AMremoveCharsAndBlanks(str,sym2.input.length);          var res2 = AMparseSexpr(str);          AMremoveBrackets(res2[0]);          str = res2[1];          node = AMcreateMmlNode((underover?"munderover":"msubsup"),node);          node.appendChild(result[0]);          node.appendChild(res2[0]);          node = AMcreateMmlNode("mrow",node); // so sum does not stretch        } else {          node = AMcreateMmlNode((underover?"munder":"msub"),node);          node.appendChild(result[0]);        }      } else {        node = AMcreateMmlNode(symbol.tag,node);        node.appendChild(result[0]);      }      newFrag.appendChild(node);    }     else if (node!=undefined) newFrag.appendChild(node);  } while ((symbol.ttype != RIGHTBRACKET || AMnestingDepth == 0) &&            symbol!=null && symbol.output!="");  if (symbol.ttype == RIGHTBRACKET) {    if (AMnestingDepth > 0) AMnestingDepth--;    var len = newFrag.childNodes.length;    if (len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 &&      newFrag.childNodes[len-2].nodeName == "mo" &&      newFrag.childNodes[len-2].firstChild.nodeValue == ",") { //matrix      var right = newFrag.childNodes[len-1].lastChild.firstChild.nodeValue;      if (right==")" || right=="]") {        var left = newFrag.childNodes[len-1].firstChild.firstChild.nodeValue;        if (left=="(" && right==")" && symbol.output != "}" ||             left=="[" && right=="]") {        var pos = []; // positions of commas        var matrix = true;        var m = newFrag.childNodes.length;        for (i=0; matrix && i<m; i=i+2) {          pos[i] = [];          node = newFrag.childNodes[i];          if (matrix) matrix = node.nodeName=="mrow" &&             (i==m-1 || node.nextSibling.nodeName=="mo" &&             node.nextSibling.firstChild.nodeValue==",")&&            node.firstChild.firstChild.nodeValue==left &&            node.lastChild.firstChild.nodeValue==right;          if (matrix)             for (var j=0; j<node.childNodes.length; j++)              if (node.childNodes[j].firstChild.nodeValue==",")                pos[i][pos[i].length]=j;          if (matrix && i>1) matrix = pos[i].length == pos[i-2].length;        }        if (matrix) {          var row, frag, n, k, table = document.createDocumentFragment();          for (i=0; i<m; i=i+2) {            row = document.createDocumentFragment();            frag = document.createDocumentFragment();            node = newFrag.firstChild; // <mrow>(-,-,...,-,-)</mrow>            n = node.childNodes.length;            k = 0;            node.removeChild(node.firstChild); //remove (            for (j=1; j<n-1; j++) {              if (typeof pos[i][k] != "undefined" && j==pos[i][k]){                node.removeChild(node.firstChild); //remove ,                row.appendChild(AMcreateMmlNode("mtd",frag));                k++;              } else frag.appendChild(node.firstChild);            }            row.appendChild(AMcreateMmlNode("mtd",frag));            if (newFrag.childNodes.length>2) {              newFrag.removeChild(newFrag.firstChild); //remove <mrow>)</mrow>              newFrag.removeChild(newFrag.firstChild); //remove <mo>,</mo>            }            table.appendChild(AMcreateMmlNode("mtr",row));          }          node = AMcreateMmlNode("mtable",table);          if (typeof symbol.invisible == "boolean" && symbol.invisible) node.setAttribute("columnalign","left");          newFrag.replaceChild(node,newFrag.firstChild);        }       }      }    }    str = AMremoveCharsAndBlanks(str,symbol.input.length);    if (typeof symbol.invisible != "boolean" || !symbol.invisible) {      node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));      newFrag.appendChild(node);    }  }  return [newFrag,str];}function AMparseMath(str) {  var result, node = AMcreateElementMathML("mstyle");  if (mathcolor != "") node.setAttribute("mathcolor",mathcolor);  if (displaystyle) node.setAttribute("displaystyle","true");  if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);  AMnestingDepth = 0;  node.appendChild(AMparseExpr(str.replace(/^\s+/g,""))[0]);  node = AMcreateMmlNode("math",node);  if (mathfontfamily != "") {    var fnode = AMcreateElementXHTML("font");    fnode.setAttribute("face",mathfontfamily);    fnode.appendChild(node);    return fnode;  }  return node;}function AMstrarr2docFrag(arr, linebreaks) {  var newFrag=document.createDocumentFragment();  var expr = false;  for (var i=0; i<arr.length; i++) {    if (expr) newFrag.appendChild(AMparseMath(arr[i]));    else {      var arri = (linebreaks ? arr[i].split("\n\n") : [arr[i]]);      newFrag.appendChild(AMcreateElementXHTML("span").      appendChild(document.createTextNode(arri[0].      replace(/AMescape2/g,AMdelimiter2).replace(/AMescape1/g,AMdelimiter1))));      for (var j=1; j<arri.length; j++) {        newFrag.appendChild(AMcreateElementXHTML("p"));        newFrag.appendChild(AMcreateElementXHTML("span").        appendChild(document.createTextNode(arri[j].          replace(/AMescape2/g,AMdelimiter2).          replace(/AMescape1/g,AMdelimiter1))));      }    }    expr = !expr;  }  return newFrag;}function AMprocessNode(n, linebreaks) {  var mtch, str, arr;  if (n.childNodes.length == 0 && (n.nodeType!=8 || linebreaks) &&    n.parentNode.nodeName!="textarea" && n.parentNode.nodeName!="TEXTAREA" &&    n.parentNode.nodeName!="pre" && n.parentNode.nodeName!="PRE") {    str = n.nodeValue;    if (!(str == null)) {      str = str.replace(/\r\n\r\n/g,"\n\n");      if (doubleblankmathdelimiter) {        str = str.replace(/\x20\x20\./g," "+AMdelimiter1+".");        str = str.replace(/\x20\x20,/g," "+AMdelimiter1+",");        str = str.replace(/\x20\x20/g," "+AMdelimiter1+" ");      }      str = str.replace(/\x20+/g," ");      str = str.replace(/\s*\r\n/g," ");      mtch = false;      str = str.replace(new RegExp(AMescape2, "g"),              function(st){mtch=true;return "AMescape2"});      str = str.replace(new RegExp(AMescape1, "g"),              function(st){mtch=true;return "AMescape1"});      str = str.replace(new RegExp(AMdelimiter2regexp, "g"),AMdelimiter1);      arr = str.split(AMdelimiter1);      if (arr.length>1 || mtch) {        if (checkForMathML) {          checkForMathML = false;          var nd = AMisMathMLavailable();          AMnoMathML = nd != null          if (AMnoMathML && notifyIfNoMathML)             AMbody.insertBefore(nd,AMbody.childNodes[0]);        }        if (!AMnoMathML)          n.parentNode.replaceChild(AMstrarr2docFrag(arr,n.nodeType==8),n);      }    }  } else if (n.nodeName!="math")     for (var i=0; i<n.childNodes.length; i++)      AMprocessNode(n.childNodes[i], linebreaks);}var AMbody;var AMnoMathML = false;function translate() {  AMinitSymbols();  AMbody = document.getElementsByTagName("body")[0];  AMprocessNode(AMbody, false);  if (isIE) { //needed to match size and font of formula to surrounding text    var frag = document.getElementsByTagName('math');    for (var i=0;i<frag.length;i++) frag[i].update()  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -