<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>AsciiMath Formula Input</title> <script type="text/javascript" src="../../../popups/popup.js"></script> <script type="text/javascript" src="../ASCIIMathML.js"></script> <link rel="stylesheet" type="text/css" href="../../../popups/popup.css" /> <style type="text/css"> /* <![CDATA[ */ #outputNode,#inputText,#mathml { padding:5px; background-color:white; width:98%; height:200px; font-size:1.3em; border: 1px solid darkgrey; overflow:auto; } #clickInput { width:100%; border-collapse:collapse; background-color: white; text-align:center; } #clickInput td { border: thin solid gray; cursor:pointer; font-size:1.1em; } h3 { font-size:1.6em; } /* ]]> */ </style> <script type="text/javascript"> // <![CDATA[ // START - Added for compatibility with ASCIIMathML 2.0 var AMtranslated = false; // Next 2 functions copied from ASCIIMathML 1.4.7 function AMcreateElementXHTML(t) { if (isIE) return document.createElement(t); else return document.createElementNS("http://www.w3.org/1999/xhtml", t); } function AMinitSymbols() { var texsymbols = [], i; for (i=0; i<AMsymbols.length; i++) if (AMsymbols[i].tex) texsymbols[texsymbols.length] = {input:AMsymbols[i].tex, tag:AMsymbols[i].tag, output:AMsymbols[i].output, ttype:AMsymbols[i].ttype}; AMsymbols = AMsymbols.concat(texsymbols); AMsymbols.sort(compareNames); for (i=0; i<AMsymbols.length; i++) AMnames[i] = AMsymbols[i].input; } // END - Added for compatibility with ASCIIMathML 2.0 window.resizeTo(500, 300); var showasciiformulaonhover = false; if (typeof Xinha == "undefined") Xinha = window.opener.Xinha; function i18n(str) { return (Xinha._lc(str, 'Equation')); } function set (string) { var inputField = document.getElementById("inputText"); inputField.value += string; preview(); inputField.focus(); return false; } function preview() { if (document.getElementById("inputText") != '') { var str = document.getElementById("inputText").value; var outnode = document.getElementById("outputNode"); var newnode = AMcreateElementXHTML("div"); newnode.setAttribute("id","outputNode"); outnode.parentNode.replaceChild(newnode,outnode); outnode = document.getElementById("outputNode"); var n = outnode.childNodes.length; for (var i = 0; i < n; i++) outnode.removeChild(outnode.firstChild); outnode.appendChild(document.createTextNode("`"+str+"`")); AMprocessNode(outnode,true); } } function Init() { __dlg_translate('Equation'); __dlg_init(); var param = window.dialogArguments; var cfg = param["editor"].config; mathcolor = cfg.Equation.mathcolor; mathfontfamily = cfg.Equation.mathfontfamily; translate(); var inputField = document.getElementById("inputText"); if (param["editedNode"] && param["editedNode"].tagName.toLowerCase() == 'span') { var formula = param["editedNode"].getAttribute("title").replace(/^`*(.*?)`*$/m,"$1"); if (!formula) formula = param["editedNode"].innerHTML.replace(/^`*(.*?)`*$/m,"$1"); inputField.value = formula; preview(); } else inputField.value = ''; inputField.focus(); } function onOK() { var param = { "editedNode":window.dialogArguments.editedNode, "formula" : document.getElementById("inputText").value }; __dlg_close(param); return false; } function onCancel() { __dlg_close(null); return false; } function translate() { if (!AMtranslated) { // run this only once AMtranslated = true; AMinitSymbols(); AMprocessNode(document.getElementById("clickInput"),true); preview(); } } window.onload = Init; function AMnode2string(inNode,indent) { // thanks to James Frazer for contributing an initial version of this function var i, str = ""; if(inNode.nodeType == 1) { var name = inNode.nodeName.toLowerCase(); // (IE fix) str = "\r" + indent + "<" + name; for(i=0; i < inNode.attributes.length; i++) if (inNode.attributes[i].nodeValue!="italic" && inNode.attributes[i].nodeValue!="" && //stop junk attributes inNode.attributes[i].nodeValue!="inherit" && // (mostly IE) inNode.attributes[i].nodeValue!=undefined && inNode.attributes[i].nodeName[0] != '-' ) str += " "+inNode.attributes[i].nodeName+"="+ "\""+inNode.attributes[i].nodeValue+"\""; if (name == "math") str += " xmlns=\"http://www.w3.org/1998/Math/MathML\""; str += ">"; for(i=0; i<inNode.childNodes.length; i++) str += AMnode2string(inNode.childNodes[i], indent+" "); if (name != "mo" && name != "mi" && name != "mn") str += "\r"+indent; str += "</" + name + ">"; } else if(inNode.nodeType == 3) { var st = inNode.nodeValue; for (i=0; i<st.length; i++) if (st.charCodeAt(i)<32 || st.charCodeAt(i)>126) str += "&#"+st.charCodeAt(i)+";"; else if (st.charAt(i)=="<" && indent != " ") str += "<"; else if (st.charAt(i)==">" && indent != " ") str += ">"; else if (st.charAt(i)=="&" && indent != " ") str += "&"; else str += st.charAt(i); } return str; } function showMathML() { var math = document.getElementById("outputNode").getElementsByTagName("math")[0]; if (math) math.parentNode.innerHTML = '<pre>'+Xinha.htmlEncode(AMnode2string(math,''))+'</pre>'; } // ]]> </script> </head> <body class="dialog"> <div class="title">AsciiMath Formula Input</div> <!-- Table modified from CharacterMap for ASCIIMathML by Peter Jipsen HTMLSource based on HTMLArea XTD 1.5 (http://mosforge.net/projects/htmlarea3xtd/) modified by Holger Hees Original Author - Bernhard Pfeifer novocaine@gmx.net --> <table id="clickInput"> <tr> <td colspan="3" class="character" title="(x+1)/(x-1)" onclick="set('(x+1)/(x-1)')">`(x+1)/(x-1)`</td> <td colspan="2" class="character" title="x^(m+n)" onclick="set('x^(m+n)')">`x^(m+n)`</td> <td colspan="2" class="character" title="x_(mn)" onclick="set('x_(mn)')">`x_(mn)`</td> <td colspan="2" class="character" title="sqrt(x)" onclick="set('sqrt(x)')">`sqrt(x)`</td> <td colspan="3" class="character" title="root(n)(x)" onclick="set('root(n)(x)')">`root(n)(x)`</td> <td colspan="2" class="character" title=""text"" onclick="set('"text"')">`"text"`</td> <td colspan="2" class="character" style="cursor:default"></td> </tr><tr> <td colspan="2" class="character" title="dy/dx" onclick="set('dy/dx')">`dy/dx`</td> <td colspan="3" class="character" title="lim_(x->oo)" onclick="set('lim_(x->oo)')">`lim_(x->oo)`</td> <td colspan="3" class="character" title="sum_(n=1)^oo" onclick="set('sum_(n=1)^oo')">`sum_(n=1)^oo`</td> <td colspan="3" class="character" title="int_a^bf(x)dx" onclick="set('int_a^bf(x)dx')">`int_a^bf(x)dx`</td> <td colspan="3" class="character" title="[[a,b],[c,d]]" onclick="set('[[a,b],[c,d]]')">`[[a,b],[c,d]]`</td> <td colspan="2" class="character" title="((n),(k))" onclick="set('((n),(k))')">`((n),(k))`</td> </tr><tr> <td class="character" title="*" onclick="set('*')">`*`</td> <td class="character" title="**" onclick="set('**')">`**`</td> <td class="character" title="//" onclick="set('//')">`//`</td> <td class="character" title="\\" onclick="set('\\\\')">`\\`</td> <td class="character" title="xx" onclick="set('xx')">`xx`</td> <td class="character" title="-:" onclick="set('-:')">`-:`</td> <td class="character" title="@" onclick="set('@')">`@`</td> <td class="character" title="o+" onclick="set('o+')">`o+`</td> <td class="character" title="ox" onclick="set('ox')">`ox`</td> <td class="character" title="o." onclick="set('o.')">`o.`</td> <td class="character" title="sum" onclick="set('sum')">`sum`</td> <td class="character" title="prod" onclick="set('prod')">`prod`</td> <td class="character" title="^^" onclick="set('^^')">`^^`</td> <td class="character" title="^^^" onclick="set('^^^')"><span style="font-size:larger">`∧`</span></td> <td class="character" title="vv" onclick="set('vv')">`vv`</td> <td class="character" title="vvv" onclick="set('vvv')"><span style="font-size:larger">`∨`</span></td> </tr><tr> <td class="character" title="!=" onclick="set('!=')">`!=`</td> <td class="character" title="<=" onclick="set('<=')">`<=`</td> <td class="character" title=">=" onclick="set('>=')">`>=`</td> <td class="character" title="-<" onclick="set('-<')">`-<`</td> <td class="character" title=">-" onclick="set('>-')">`>-`</td> <td class="character" title="in" onclick="set('in')">`in`</td> <td class="character" title="!in" onclick="set('!in')">`!in`</td> <td class="character" title="sub" onclick="set('sub')">`sub`</td> <td class="character" title="sup" onclick="set('sup')">`sup`</td> <td class="character" title="sube" onclick="set('sube')">`sube`</td> <td class="character" title="supe" onclick="set('supe')">`supe`</td> <td class="character" title="O/" onclick="set('O/')">`O/`</td> <td class="character" title="nn" onclick="set('nn')">`nn`</td> <td class="character" title="nnn" onclick="set('nnn')"><span style="font-size:larger">`∩`</span></td> <td class="character" title="uu" onclick="set('uu')">`uu`</td> <td class="character" title="uuu" onclick="set('uuu')"><span style="font-size:larger">`∪`</span></td> </tr><tr> <td class="character" title="and" onclick="set('and')">`and`</td> <td class="character" title="or" onclick="set('or')">`or`</td> <td class="character" title="not" onclick="set('not')">`not`</td> <td class="character" title="=>" onclick="set('==>')">`=>`</td> <td class="character" title="if" onclick="set('if')">`if`</td> <td class="character" title="<=>" onclick="set('<=>')">`<=>`</td> <td class="character" title="AA" onclick="set('AA')">`AA`</td> <td class="character" title="EE" onclick="set('EE')">`EE`</td> <td class="character" title="_|_" onclick="set('_|_')">`_|_`</td> <td class="character" title="TT" onclick="set('TT')">`TT`</td> <td class="character" title="|--" onclick="set('|--')">`|--`</td> <td class="character" title="|==" onclick="set('|==')">`|==`</td> <td class="character" title="-=" onclick="set('-=')">`-=`</td> <td class="character" title="~=" onclick="set('~=')">`~=`</td> <td class="character" title="~~" onclick="set('~~')">`~~`</td> <td class="character" title="prop" onclick="set('prop')">`prop`</td> </tr><tr> <td class="character" title="int" onclick="set('int')">`int`</td> <td class="character" title="oint" onclick="set('oint')">`oint`</td> <td class="character" title="del" onclick="set('del')">`del`</td> <td class="character" title="grad" onclick="set('grad')">`grad`</td> <td class="character" title="+-" onclick="set('+-')">`+-`</td> <td class="character" title="oo" onclick="set('oo')">`oo`</td> <td class="character" title="aleph" onclick="set('aleph')">`aleph`</td> <td class="character" title="quad" onclick="set('quad')">`quad`</td> <td class="character" title="diamond" onclick="set('diamond')">`diamond`</td> <td class="character" title="square" onclick="set('square')">`square`</td> <td class="character" title="|__" onclick="set('|__')">`|__`</td> <td class="character" title="__|" onclick="set('__|')">`__|`</td> <td class="character" title="|~" onclick="set('|~')">`|~`</td> <td class="character" title="~|" onclick="set('~|')">`~|`</td> <td class="character" title="<x>" onclick="set('<x>')">`<x>`</td> <td class="character" title="/_" onclick="set('/_')">`/_`</td> </tr><tr> <td class="character" title="uarr" onclick="set('uarr')">`uarr`</td> <td class="character" title="darr" onclick="set('darr')">`darr`</td> <td class="character" title="larr" onclick="set('larr')">`larr`</td> <td class="character" title="->" onclick="set('->')">`->`</td> <td class="character" title="|->" onclick="set('|->')">`|->`</td> <td class="character" title="harr" onclick="set('harr')">`harr`</td> <td class="character" title="lArr" onclick="set('lArr')">`lArr`</td> <td class="character" title="rArr" onclick="set('rArr')">`rArr`</td> <td class="character" title="hArr" onclick="set('hArr')">`hArr`</td> <td class="character" title="hata" onclick="set('hat')">`hata`</td> <td class="character" title="ula" onclick="set('ul')">`ula`</td> <td class="character" title="dota" onclick="set('dot')">`dota`</td> <td class="character" title="ddota" onclick="set('ddot')">`ddota`</td> <td class="character" title="veca" onclick="set('vec')">`veca`</td> <td class="character" title="bara" onclick="set('bar')">`bara`</td> <td class="character" title=":." onclick="set(':.')">`:.`</td> </tr><tr> <td class="character" title="NN" onclick="set('NN')">`NN`</td> <td class="character" title="ZZ" onclick="set('ZZ')">`ZZ`</td> <td class="character" title="QQ" onclick="set('QQ')">`QQ`</td> <td class="character" title="RR" onclick="set('RR')">`RR`</td> <td class="character" title="CC" onclick="set('CC')">`CC`</td> <td class="character" title="bba" onclick="set('bb')">`bba`</td> <td class="character" title="bbba" onclick="set('bbb')">`bbba`</td> <td class="character" title="cca" onclick="set('cc')">`cca`</td> <td class="character" title="fra" onclick="set('fr')">`fra`</td> <td class="character" title="sfa" onclick="set('sf')">`sfa`</td> <td class="character" title="tta" onclick="set('tt')">`tta`</td> <td colspan="4" class="character" title="stackrel(->)(+)" onclick="set('stackrel(->)(+)')">`stackrel(->)(+)`</td> <td class="character" title="upsilon" onclick="set('upsilon')">`upsilon`</td> </tr><tr> <td class="character" title="alpha" onclick="set('alpha')">`alpha`</td> <td class="character" title="beta" onclick="set('beta')">`beta`</td> <td class="character" title="gamma" onclick="set('gamma')">`gamma`</td> <td class="character" title="Gamma" onclick="set('Gamma')">`Gamma`</td> <td class="character" title="delta" onclick="set('delta')">`delta`</td> <td class="character" title="Delta" onclick="set('Delta')">`Delta`</td> <td class="character" title="epsi" onclick="set('epsi')">`epsi`</td> <td class="character" title="zeta" onclick="set('zeta')">`zeta`</td> <td class="character" title="eta" onclick="set('eta')">`eta`</td> <td class="character" title="theta" onclick="set('theta')">`theta`</td> <td class="character" title="Theta" onclick="set('Theta')">`Theta`</td> <td class="character" title="iota" onclick="set('iota')">`iota`</td> <td class="character" title="kappa" onclick="set('kappa')">`kappa`</td> <td class="character" title="lambda" onclick="set('lambda')">`lambda`</td> <td class="character" title="Lambda" onclick="set('Lambda')">`Lambda`</td> <td class="character" title="mu" onclick="set('mu')">`mu`</td> </tr><tr> <td class="character" title="nu" onclick="set('nu')">`nu`</td> <td class="character" title="pi" onclick="set('pi')">`pi`</td> <td class="character" title="Pi" onclick="set('Pi')">`Pi`</td> <td class="character" title="rho" onclick="set('rho')">`rho`</td> <td class="character" title="sigma" onclick="set('sigma')">`sigma`</td> <td class="character" title="Sigma" onclick="set('Sigma')">`Sigma`</td> <td class="character" title="tau" onclick="set('tau')">`tau`</td> <td class="character" title="xi" onclick="set('xi')">`xi`</td> <td class="character" title="Xi" onclick="set('Xi')">`Xi`</td> <td class="character" title="phi" onclick="set('phi')">`phi`</td> <td class="character" title="Phi" onclick="set('Phi')">`Phi`</td> <td class="character" title="chi" onclick="set('chi')">`chi`</td> <td class="character" title="psi" onclick="set('psi')">`psi`</td> <td class="character" title="Psi" onclick="set('Psi')">`Psi`</td> <td class="character" title="omega" onclick="set('omega')">`omega`</td> <td class="character" title="Omega" onclick="set('Omega')">`Omega`</td> </tr> </table> <form action="javascript:void(0);"> <table style="width: 100%;border:none"> <tr> <td style="width:50%">Input</td><td style="width:50%"><input type="button" onclick="showMathML()" style="float:right;font-size:10px" value="Show MathML" /><span>Preview</span></td> </tr> <tr> <td> <textarea id="inputText" onkeyup="preview()"></textarea> </td> <td> <div id="outputNode"></div> <textarea id="mathml" style="display:none"></textarea> </td> </tr> <tr><td colspan="2"> <span>Based on ASCIIMathML by </span><a href="http://www.chapman.edu/~jipsen" onclick="window.open(this.href,'_blank','');return false;">Peter Jipsen</a>, <a href="http://www.chapman.edu" onclick="window.open(this.href,'_blank','');return false;">Chapman University</a><br /> <span>For more information on AsciiMathML visit this page: </span><a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html" onclick="window.open(this.href,'_blank','');return false;">http://www1.chapman.edu/~jipsen/mathml/asciimath.html</a></td></tr> </table> <div id="buttons"> <script type="text/javascript"> // <![CDATA[ if (Xinha.is_ie) document.write('<span style="color:red;float:left">'+i18n('Attention Internet Explorer users: Please note that there is no WYSIWYG representation of the formula in the editor!<br />You might wish to use <a href="http://www.mozilla.com" onclick="window.open(this.href,\'_blank\');return false;">Mozilla Firefox</a> instead.')+'</span>'); // ]]> </script> <button type="submit" name="ok" onclick="return onOK();">OK</button> <button type="button" name="cancel" onclick="return onCancel();">Cancel</button> </div> </form> </body> </html>