// var info_versione="20090705 (libreria proformule - Giampaolo Bottoni)"; // // Libreria per la scrittura di formule matematiche in HTML. // Variante della libreria convenzioni-proformule.txt posta in rete // all'indirizzo http://www.elegio.it/mc2/convenzioni-proformule.txt // In questa versione non si fa uso del carattere .lt. che causa problemi // di incompatibilitā se usato in HTML. // Per il resto si usano le stesse regole esposte in: // http://www.elegio.it/mc2/convenzioni-proformule.html // var risa="",dima=70; var a= new Array(dima); var xlt=String.fromCharCode(60); // questo corrisponde al carattere .lt. var xi=xlt+"i>"; var yi=xlt+"/i>"; var xsup=xlt+"sup>"; var ysup=xlt+"/sup>"; var xsub=xlt+"sub>"; var ysub=xlt+"/sub>"; var xsubu=xlt+"sub>"+xlt+"u>"; var ysubu=xlt+"/u>"+xlt+"/sub>"; var xb=xlt+"b>"; var yb=xlt+"/b>"; var xsmall=xlt+"small>"; var ysmall=xlt+"/small>"; var ximpostato=-123456; var t45_57=new Array(128); var t48_57=new Array(128); var t65_90=new Array(128); var t97_123=new Array(128); var t48_123=new Array(128); // // La libreria č facilmente modificabile in modo che vengano // visualizzati i caratteri latini standard ma qualsiasi tipo // di carattere unicode o qualsiasi stringa. Indici e pedici // possono servire solo da soprannomi delle stringhe che si // desidera visualizzare. // var knor=[ "?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?", "?","?"," ","!",'"',"#","$","%","&","'", "(",")","*","+",",","−",".","/","0","1", "2","3","4","5","6","7","8","9",":",";", "<","=",">","?","@","A","B","C","D","E", "F","G","H","I","J","K","L","M","N","O", "P","Q","R","S","T","U","V","W","X","Y", "Z","[","?","]","^","_","`","a","b","c", "d","e","f","g","h","i","j","k","l","m", "n","o","p","q","r","s","t","u","v","w", "x","y","z","{","?","}","~","?"]; var ksup=new Array(128); var ksub=new Array(128); var dksup=new Array(128); var dksub=new Array(128); var Dksup=new Array(128); var Dksub=new Array(128); // function impostato(regola){ var j,d,D; d=xb+"/"+yb; D=xb+":"+yb; for(j=0;128>j;j++){ t48_57[j]=false; t45_57[j]=false; t65_90[j]=false; t97_123[j]=false; t48_123[j]=false; ksup[j]=String.fromCharCode(j); ksub[j]=String.fromCharCode(j); dksup[j]=String.fromCharCode(j); dksub[j]=String.fromCharCode(j); Dksup[j]=String.fromCharCode(j); Dksub[j]=String.fromCharCode(j); } if(regola==0){ for(j=0;128>j;j++){ ksup[j]=xsup+ksup[j]+ysup; ksub[j]=xsub+ksub[j]+ysub; dksup[j]=xsup+d+dksup[j]+ysup; dksub[j]=xsub+d+dksub[j]+ysub; Dksup[j]=xsup+D+Dksup[j]+ysup; Dksub[j]=xsub+D+Dksub[j]+ysub; } } else { for(j=0;128>j;j++){ ksup[j]=xsub+ksup[j]+ysub; ksub[j]=xsubu+ksub[j]+ysubu; dksup[j]=xsub+d+dksup[j]+ysub; dksub[j]=xsubu+d+dksub[j]+ysubu; Dksup[j]=xsub+D+Dksup[j]+ysub; Dksub[j]=xsubu+D+Dksub[j]+ysubu; } } t45_57[45]=true; t45_57[46]=true; t45_57[47]=true; for(j=48;58>j;j++){t48_57[j]=true; t45_57[j]=true; t48_123[j]=true;} for(j=65;91>j;j++){t65_90[j]=true; t48_123[j]=true;} for(j=97;124>j;j++){t97_123[j]=true;t48_123[j]=true;} ximpostato=regola; } function converto(da,ad){ var j,p,r,s,o,ns,regola=0; dima=a.length; // alert(converto.arguments.length); if(converto.arguments.length > 2) regola=1; if(regola!=ximpostato) impostato(regola); for(j=0;dima>j;j++)a[j]=""; risa=""; o=document.getElementById(da); s=o.innerHTML; ns=s.length; p=0; for(j=0;ns>j;j++){ risa+=a[p]; a[p]=s.charAt(j); switch(a[p]){ case "_": p=elaboro1(p); break; case "!": p=elaboro2(p); break; case "°": p=elaboro3(p); break; case "§": p=elaboro4(p); break; case "^": p=elaboro5(p); break; default: p++;p=p%dima; } } for(j=p;p+dima>j;j++) risa+=a[j%dima]; o=document.getElementById(ad); o.innerHTML=risa; } // function elaboro1(p){ // "_" var j,p0,p1,p2,ns,ns0,ss0; p1=p-1+dima; p1=p1%dima; p2=(p+1)%dima; p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0); // Se il carattere č preceduto da # usa il greco. if(ns0==35 ) { switch(a[p1]){ case "*": p2=sostituisco(xi+yi,p0,p); break; case "-": p2=sostituisco("−",p0,p); break; case "a": p2=sostituisco("α",p0,p); break; // alfa case "b": p2=sostituisco("β",p0,p); break; // beta case "c": p2=sostituisco("γ",p0,p); break; // gamma case "d": p2=sostituisco("δ",p0,p); break; // delta case "e": p2=sostituisco("ε",p0,p); break; // epsilon case "f": p2=sostituisco("ζ",p0,p); break; // zeta case "g": p2=sostituisco("η",p0,p); break; // eta case "h": p2=sostituisco("θ",p0,p); break; // theta case "i": p2=sostituisco("ι",p0,p); break; // iota case "j": p2=sostituisco("κ",p0,p); break; // kappa case "k": p2=sostituisco("λ",p0,p); break; // lambda case "l": p2=sostituisco("μ",p0,p); break; // mu case "m": p2=sostituisco("ν",p0,p); break; // nu case "n": p2=sostituisco("ξ",p0,p); break; // xi case "o": p2=sostituisco("ο",p0,p); break; // omicron case "p": p2=sostituisco("π",p0,p); break; // pi case "q": p2=sostituisco("ρ",p0,p); break; // rho case "r": p2=sostituisco("ς",p0,p); break; // sigmaf case "s": p2=sostituisco("σ",p0,p); break; // sigma case "t": p2=sostituisco("τ",p0,p); break; // tau case "u": p2=sostituisco("υ",p0,p); break; // upsilon case "v": p2=sostituisco("φ",p0,p); break; // phi case "w": p2=sostituisco("χ",p0,p); break; // chi case "x": p2=sostituisco("ψ",p0,p); break; // psi case "y": p2=sostituisco("ω",p0,p); break; // omega case "z": p2=sostituisco(xlt+"em title='part'>∂"+xlt+"/em>",p0,p); break; case "A": p2=sostituisco("Α",p0,p); break; case "B": p2=sostituisco("Β",p0,p); break; case "C": p2=sostituisco("Γ",p0,p); break; case "D": p2=sostituisco("Δ",p0,p); break; case "E": p2=sostituisco("Ε",p0,p); break; case "F": p2=sostituisco("Ζ",p0,p); break; case "G": p2=sostituisco("Η",p0,p); break; case "H": p2=sostituisco("Θ",p0,p); break; case "I": p2=sostituisco("Ι",p0,p); break; case "J": p2=sostituisco("Κ",p0,p); break; case "K": p2=sostituisco("Λ",p0,p); break; case "L": p2=sostituisco("Μ",p0,p); break; case "M": p2=sostituisco("Ν",p0,p); break; case "N": p2=sostituisco("Ξ",p0,p); break; case "O": p2=sostituisco("Ο",p0,p); break; case "P": p2=sostituisco("Π",p0,p); break; case "Q": p2=sostituisco("Ρ",p0,p); break; case "R": p2=sostituisco("∑",p0,p); break; // simbolo di Sommatoria case "S": p2=sostituisco("Σ",p0,p); break; case "T": p2=sostituisco("Τ",p0,p); break; case "U": p2=sostituisco("Υ",p0,p); break; case "V": p2=sostituisco("Φ",p0,p); break; case "W": p2=sostituisco("Χ",p0,p); break; case "X": p2=sostituisco("Ψ",p0,p); break; case "Y": p2=sostituisco("Ω",p0,p); break; case "Z": p2=sostituisco(xlt+"em title='nabla'>∇"+xlt+"/em>",p0,p); break; case "#": p2=sostituisco("_",p1,p); } } else { // scrive il carattere in corsivo. switch(a[p1]){ case "*": p2=sostituisco("·",p1,p); break; case "-": p2=sostituisco("−",p1,p); break; case "#": p2=sostituisco("_",p1,p); break; default : { ns= a[p1].charCodeAt(0)%128; if( t48_123[ns] ){ ss=a[p1]; p0=p1; for(j=0;dima>j;j++){ p0=p0-1+dima;p0=p0%dima; ss0=a[p0]; ns0=ss0.charCodeAt(0)%128; if( t48_123[ns0] ) { ss = a[p0]+ss; p1=p0;} else break; } p2=sostituisco(xi+ss+yi,p1,p); } } } } return p2; } // function elaboro2(p){ // "!" var p0,p1,p2,ss,ns,ns0; p1=p-1+dima; p1=p1%dima; p2=(p+1)%dima; ss=a[p1]; ns=ss.charCodeAt(0)%128; if(t48_57[ns] ) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la cifra č preceduta da # la scrive in alto if(ns0==35 ) p2=sostituisco(ksup[ns],p0,p); else p2=sostituisco(ksub[ns],p1,p); } else if(t65_90[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la maiuscola č preceduta da # la scrive in basso if(ns0==35 ) p2=sostituisco(ksub[ns],p0,p); else p2=sostituisco(ksup[ns+32],p1,p); } else if( t97_123[ns]) p2=sostituisco(ksub[ns],p1,p); else if( ns==35) p2=sostituisco("!",p1,p); return p2; } // function elaboro3(p){ // "°" var p0,p1,p2,ss,ns,ns0; p1=p-1+dima; p1=p1%dima; p2=(p+1)%dima; ss=a[p1]; ns=ss.charCodeAt(0)%128; if(t48_57[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la cifra č preceduta da # la scrive in alto if(ns0==35 ) p2=sostituisco(dksup[ns],p0,p); else p2=sostituisco(dksub[ns],p1,p); } else if(t65_90[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la maiuscola č preceduta da # la scrive in basso if(ns0==35 ) p2=sostituisco(dksub[ns],p0,p); else p2=sostituisco(dksup[ns+32],p1,p); } else if( t97_123[ns]) p2=sostituisco(dksub[ns],p1,p); else if( ns==35) p2=sostituisco("°",p1,p); return p2; } // function elaboro4(p){ // "§" var p0,p1,p2,ss,ns,ns0; p1=p-1+dima; p1=p1%dima; p2=(p+1)%dima; ss=a[p1]; ns=ss.charCodeAt(0)%128; if(t48_57[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la cifra č preceduta da # la scrive in alto if(ns0==35 ) p2=sostituisco(Dksup[ns],p0,p); else p2=sostituisco(Dksub[ns],p1,p); } else if(t65_90[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la maiuscola č preceduta da # la scrive in basso if(ns0==35 ) p2=sostituisco(Dksub[ns],p0,p); else p2=sostituisco(Dksup[ns+32],p1,p); } else if( t97_123[ns] ) p2=sostituisco(Dksub[ns],p1,p); else if( ns==35) p2=sostituisco("§",p1,p); return p2; } // function elaboro5(p){ // "^" var j,p0,p1,p2,ss,ns,ss0,ns0; p2=(p+1)%dima; p1=p-1+dima; p1=p1%dima; ns=a[p1].charCodeAt(0)%128; ss=knor[ns]; if(t48_57[ns]) { p0=p1; for(j=0;dima>j;j++){ p0=p0-1+dima;p0=p0%dima; ss0=a[p0]; ns0=ss0.charCodeAt(0)%128; if(t45_57[ns0] ) { ss = knor[ns0]+ss; p1=p0;} else { if(ns0==35) p1=p0; break; } } p2=sostituisco(xsup+xsmall+" "+ysmall+ss+ysup,p1,p); } else if(t65_90[ns]) { p0=p1-1+dima;p0=p0%dima; ns0=a[p0].charCodeAt(0)%128; // Se la maiuscola č preceduta da # la scrive in alto if(ns0==35 ) p2=sostituisco(xsup+xsmall+" "+ysmall+ss+ysup,p0,p); else p2=sostituisco(xsub+xsmall+" "+ysmall+knor[ns+32]+ysub,p1,p); } else if( t97_123[ns] ) p2=sostituisco(xsup+xsmall+" "+ysmall+ss+ysup,p1,p); else if( ns==35) p2=sostituisco("^",p1,p); return p2; } // function sostituisco(s,p1,p){ var j,r,pp,ns=s.length; pp=p1; for(j=0;dima>j;j++){ a[pp]=""; pp++;pp=pp%dima; if(pp==p) break; } a[p]=""; pp=p1; for(j=0;ns>j;j++){ risa+=a[pp]; a[pp]=s.charAt(j); pp++;pp=pp%dima; } return pp; } // // Fine della libreria per la realizzazione di formule. // Trascrivere questa libreria in altri documenti quando appunto si // desidera realizzare formule scrivendo in modo veloce. // // _________________________________________________________________