// var info_versione="20140511 (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 // gli indici covarianti, metaforicamente femminili, sono // visualizzati in darkmagenta mentre quelli controvarianti // metaforicamente maschili sono visualizzati in blu. // Per il resto si usano le stesse regole esposte in: // http://www.elegio.it/mc2/convenzioni-proformule.html // //"; var yix11=xlt+"/i>"; var xsupx11=xlt+"sup style='color:blue'>"; var ysupx11=xlt+"/sup>"; var xsubx11=xlt+"sub style='color:darkmagenta'>"; var ysubx11=xlt+"/sub>"; var xsubbx11=xlt+"sub style='color:blue'>"; var ysubbx11=xlt+"/sub>"; var xsubux11=xlt+"sub>"+xlt+"u style='color:darkmagenta'>"; var ysubux11=xlt+"/u>"+xlt+"/sub>"; var xbx11=xlt+"b>"; var ybx11=xlt+"/b>"; var xsmallx11=xlt+"small>"; var ysmallx11=xlt+"/small>"; var ximpostatox11=-123456; var t45_57x11=new Array(128); var t48_57x11=new Array(128); var t65_90x11=new Array(128); var t97_123x11=new Array(128); var t48_123x11=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 knorx11=[ "?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?", "?","?"," ","!",'"',"#","$","%","&","'", "(",")","*","+",",","−",".","/","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 ksupx11=new Array(128); var ksubx11=new Array(128); var dksupx11=new Array(128); var dksubx11=new Array(128); var Dksupx11=new Array(128); var Dksubx11=new Array(128); // // Per vedere come trasforma le formule usare la vedohtmlformule() // function vedohtmlformule(){ if(xlt.charCodeAt(0)==60)xlt="<"; else xlt=String.fromCharCode(60); xix11=xlt+"i>"; yix11=xlt+"/i>"; // xsupx11=xlt+"sup style='color:blue'>"; ysupx11=xlt+"/sup>"; // xsubx11=xlt+"sub style='color:darkmagenta'>"; ysubx11=xlt+"/sub>"; // xsubbx11=xlt+"sub style='color:blue'>"; ysubbx11=xlt+"/sub>"; // xsubux11=xlt+"sub>"+xlt+"u style='color:darkmagenta'>"; ysubux11=xlt+"/u>"+xlt+"/sub>"; // xbx11=xlt+"b>"; ybx11=xlt+"/b>"; // xsmallx11=xlt+"small>"; ysmallx11=xlt+"/small>"; ximpostatox11=-123456; } // function impostatox11(regola){ var j,d,D; d=xbx11+"/"+ybx11; D=xbx11+":"+ybx11; for(j=0;128>j;j++){ t48_57x11[j]=false; t45_57x11[j]=false; t65_90x11[j]=false; t97_123x11[j]=false; t48_123x11[j]=false; ksupx11[j]=String.fromCharCode(j); ksubx11[j]=String.fromCharCode(j); dksupx11[j]=String.fromCharCode(j); dksubx11[j]=String.fromCharCode(j); Dksupx11[j]=String.fromCharCode(j); Dksubx11[j]=String.fromCharCode(j); } if(regola==0){ for(j=0;128>j;j++){ ksupx11[j]=xsupx11+ksupx11[j]+ysupx11; ksubx11[j]=xsubx11+ksubx11[j]+ysubx11; dksupx11[j]=xsupx11+d+dksupx11[j]+ysupx11; dksubx11[j]=xsubx11+d+dksubx11[j]+ysubx11; Dksupx11[j]=xsupx11+D+Dksupx11[j]+ysupx11; Dksubx11[j]=xsubx11+D+Dksubx11[j]+ysubx11; } } else { for(j=0;128>j;j++){ ksupx11[j]=xsubbx11+ksupx11[j]+ysubbx11; ksubx11[j]=xsubux11+ksubx11[j]+ysubux11; dksupx11[j]=xsubbx11+d+dksupx11[j]+ysubbx11; dksubx11[j]=xsubux11+d+dksubx11[j]+ysubux11; Dksupx11[j]=xsubbx11+D+Dksupx11[j]+ysubbx11; Dksubx11[j]=xsubux11+D+Dksubx11[j]+ysubux11; } } t45_57x11[45]=true; t45_57x11[46]=true; t45_57x11[47]=true; for(j=48;58>j;j++){t48_57x11[j]=true; t45_57x11[j]=true; t48_123x11[j]=true;} for(j=65;91>j;j++){t65_90x11[j]=true; t48_123x11[j]=true;} for(j=97;124>j;j++){t97_123x11[j]=true;t48_123x11[j]=true;} ximpostatox11=regola; } // // Se il primo argomento e' una Array, fa in modo da rendere // invisibile l'elemento 0 ossia la sorgente del testo // da convertire. // Altrimenti, se e' una stringa, la usa come identificatore // dell'oggetto che va convertito... // function convertox11(da,ad){ var j,p,r,s,o,ns,regola=0; dimax11=ax11.length; // alert(convertox11.arguments.length); if(convertox11.arguments.length > 2) regola=1; if(regola!=ximpostatox11) impostatox11(regola); for(j=0;dimax11>j;j++)ax11[j]=""; risax11=""; // if(Array.isArray(da)){ o=document.getElementById(da[0]); o.style.display="none";} else o=document.getElementById(da); // s=o.innerHTML; ns=s.length; p=0; for(j=0;ns>j;j++){ risax11+=ax11[p]; ax11[p]=s.charAt(j); switch(ax11[p]){ case "_": p=elaboro1x11(p); break; case "!": p=elaboro2x11(p); break; case "°": p=elaboro3x11(p); break; case "\u005c": p=elaboro3x11(p); break; case "§": p=elaboro4x11(p); break; case "|": p=elaboro4x11(p); break; case "^": p=elaboro5x11(p); break; default: p++;p=p%dimax11; } } for(j=p;p+dimax11>j;j++) risax11+=ax11[j%dimax11]; o=document.getElementById(ad); o.innerHTML=risax11; } // Radice quadrata del valore assoluto del determinante: var sqrtabsgx11="√"+xlt+ "span title='sqrt(abs(determinante))' "+ "style='text-decoration:overline; color:darkmagenta;'>|g|"+xlt+"/span>"; var sqrtduex11="√"+xlt+ "span title='sqrt(2)' "+ "style='text-decoration:overline;'>2"+xlt+"/span>"; var sqrttrex11="√"+xlt+ "span title='sqrt(3)' "+ "style='text-decoration:overline;'>3"+xlt+"/span>"; var sqrtcinquex11="√"+xlt+ "span title='sqrt(5)' "+ "style='text-decoration:overline;'>5"+xlt+"/span>"; // Simbolo di derivata parziale var derpartx11=xlt+"i title='part'>∂"+xlt+"/i>"; // Simbolo del Nabla var xnablax11= xlt+"i title='nabla'>∇"+xlt+"/i>"; // var libsimbx11=["Lib. simboli x11",xix11+yix11,"−", "α","β","γ","δ","ε", "ζ","η","θ","ι","κ", "λ","μ","ν","ξ","ο", "π","ρ","ς","σ","τ", "υ","φ","χ","ψ","ω", derpartx11,"$",sqrtabsgx11,"Α","Β", "Γ","Δ","Ε","Ζ","Η", "Θ","Ι","Κ","Λ","Μ", "Ν","Ξ","Ο","Π","Ρ", "∑","Σ","Τ","Υ","Φ", "Χ","Ψ","Ω",xnablax11,"_"]; var libximbx11=["Lib. simboli x11",xix11+yix11,"−", "α","β","γ","δ","ε", "ζ","η","θ","ι","κ", "λ","μ","ν","ξ","ο", "π","ρ","ς","σ","τ", "υ","φ","χ","ψ","ω", derpartx11,"$",sqrtabsgx11,"Α","Β", "Γ","Δ","Ε","Ζ","Η", "Θ","Ι","Κ","Λ","Μ", "Ν","Ξ","Ο","Π","Ρ", "∑","Σ","Τ","Υ","Φ", "Χ","Ψ","Ω",xnablax11,"_"]; var libzimbx11=["Lib. simboli x11",xix11+yix11,"∆", "∎","∏","∓","√","∛", "∜","∝","∞","≝","☚", "☛","☜","☝","☞","☟", "☠","☡","☢","☣","☤", "☥","☦","☧","☨","☩", "☪","$","♔","♕","♖", "♗","♘","♙","♚","♛", "♜","♝","♞","♟","♠", "♡","♢","♣","♤","♥", "♦","♧","♨","♩","♪", "♫","♬","♭","♮","_"]; var libsx11=[0,1,2,3,4,5,6,7,8,9]; // // Lo stile alternativo si ottiene scrivendo #$_ e si ripristina lo stile // standard scrivendo una seconda volta #$_ e poi, eventualmente di nuovo... // Se si usa una cifra da #0_ a #9_ si impone comunque uno stile alternativo // mentre lo stile standard si ripristina scrivendo poi #$_ . // In questo modo e' possibile usare un elevato numero di stili // alternativi che vanno configurati con la impostastilex11. // var nstilex11=1; function cambiostilex11(){ var j,k; if(arguments.length > 0){ k=arguments[0]; if(!Array.isArray(libsx11[k])){alert("Non array "+k); libsx11[k]=[]; for(j=0;libsimbx11.length>j;j++){libsx11[k][j]=libzimbx11[j];} } nstilex11=0; for(j=0;libsimbx11.length>j;j++){libsimbx11[j]=libsx11[k][j];} return; } nstilex11=(nstilex11+1)%2; if(nstilex11>0)for(j=0;libsimbx11.length>j;j++){libsimbx11[j]=libximbx11[j];} else for(j=0;libsimbx11.length>j;j++){libsimbx11[j]=libzimbx11[j];} } // // Per cambiare lo stile alternativo chiamare la seguente funzione // passandole un vettore di varie coppie di dati: // Numero del carattere e Stringa del nuovo simbolo. // Per esempio: // impostastilex11([[56,"\u003cb style='color:red'>PIPPO\u003c/b>"], // [2,"\u003cb style='color:red'>PLUTO\u003c/b>"]]). // // Oppure : // // impostastilex11([[56,sqrtcinquex11],[2,sqrtduex11],[3,sqrttrex11]]). // // Se si passa solo la coppia di dati viene modificata lo stile // alternativo di base, mentre se si passa un secondo argomento // rappresentato da un intero tra 0 e 9 si cambia la libreria // associata a quell'intero. // function impostastilex11(snuovo){ var j,k,h,sv=libzimbx11.length,sn=snuovo.length; if(arguments.length > 1){ h=arguments[1]%10; if(!Array.isArray(libsx11[k])){ libsx11[h]=[]; for(j=0;libsimbx11.length>j;j++){libsx11[h][j]=libzimbx11[j];} } for(j=0;sn>j;j++){ if(isNaN(snuovo[j][0])){alert("Errore in impostastile "+j);return;} else k=Math.min(sv-2,Math.max(2,snuovo[j][0])); libsx11[h][k]=snuovo[j][1]; } } else for(j=0;sn>j;j++){ // k= 3+(snuovo[j][0]+sv-2)%sv; if(isNaN(snuovo[j][0])){alert("Errore in impostastile "+j);return;} else k=Math.min(sv-2,Math.max(2,snuovo[j][0])); libzimbx11[k]=snuovo[j][1]; } } // function elaboro1x11(p){ // "_" var j,p0,p1,p2,ns,ns0,ss0; p1=p-1+dimax11; p1=p1%dimax11; p2=(p+1)%dimax11; p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0); // Se il carattere è preceduto da # usa il greco. if(ns0==35 ) { switch(ax11[p1]){ case "*": p2=sostituiscox11(libsimbx11[1],p0,p); break; case "-": p2=sostituiscox11(libsimbx11[2],p0,p); break; case "a": p2=sostituiscox11(libsimbx11[3],p0,p); break; // alfa case "b": p2=sostituiscox11(libsimbx11[4],p0,p); break; // beta case "c": p2=sostituiscox11(libsimbx11[5],p0,p); break; // gamma case "d": p2=sostituiscox11(libsimbx11[6],p0,p); break; // delta case "e": p2=sostituiscox11(libsimbx11[7],p0,p); break; // epsilon case "f": p2=sostituiscox11(libsimbx11[8],p0,p); break; // zeta case "g": p2=sostituiscox11(libsimbx11[9],p0,p); break; // eta case "h": p2=sostituiscox11(libsimbx11[10],p0,p); break; // theta case "i": p2=sostituiscox11(libsimbx11[11],p0,p); break; // iota case "j": p2=sostituiscox11(libsimbx11[12],p0,p); break; // kappa case "k": p2=sostituiscox11(libsimbx11[13],p0,p); break; // lambda case "l": p2=sostituiscox11(libsimbx11[14],p0,p); break; // mu case "m": p2=sostituiscox11(libsimbx11[15],p0,p); break; // nu case "n": p2=sostituiscox11(libsimbx11[16],p0,p); break; // xi case "o": p2=sostituiscox11(libsimbx11[17],p0,p); break; // omicron case "p": p2=sostituiscox11(libsimbx11[18],p0,p); break; // pi case "q": p2=sostituiscox11(libsimbx11[19],p0,p); break; // rho case "r": p2=sostituiscox11(libsimbx11[20],p0,p); break; // sigmaf case "s": p2=sostituiscox11(libsimbx11[21],p0,p); break; // sigma case "t": p2=sostituiscox11(libsimbx11[22],p0,p); break; // tau case "u": p2=sostituiscox11(libsimbx11[23],p0,p); break; // upsilon case "v": p2=sostituiscox11(libsimbx11[24],p0,p); break; // phi case "w": p2=sostituiscox11(libsimbx11[25],p0,p); break; // chi case "x": p2=sostituiscox11(libsimbx11[26],p0,p); break; // psi case "y": p2=sostituiscox11(libsimbx11[27],p0,p); break; // omega case "z": p2=sostituiscox11(libsimbx11[28],p0,p); break; case "$": p2=sostituiscox11(" ",p0,p); cambiostilex11(); break; case "0": p2=sostituiscox11(" ",p0,p); cambiostilex11(0); break; case "1": p2=sostituiscox11(" ",p0,p); cambiostilex11(1); break; case "2": p2=sostituiscox11(" ",p0,p); cambiostilex11(2); break; case "3": p2=sostituiscox11(" ",p0,p); cambiostilex11(3); break; case "4": p2=sostituiscox11(" ",p0,p); cambiostilex11(4); break; case "5": p2=sostituiscox11(" ",p0,p); cambiostilex11(5); break; case "6": p2=sostituiscox11(" ",p0,p); cambiostilex11(6); break; case "7": p2=sostituiscox11(" ",p0,p); cambiostilex11(7); break; case "8": p2=sostituiscox11(" ",p0,p); cambiostilex11(8); break; case "9": p2=sostituiscox11(" ",p0,p); cambiostilex11(9); break; case "@": p2=sostituiscox11(libsimbx11[30],p0,p); break; case "A": p2=sostituiscox11(libsimbx11[31],p0,p); break; case "B": p2=sostituiscox11(libsimbx11[32],p0,p); break; case "C": p2=sostituiscox11(libsimbx11[33],p0,p); break; case "D": p2=sostituiscox11(libsimbx11[34],p0,p); break; case "E": p2=sostituiscox11(libsimbx11[35],p0,p); break; case "F": p2=sostituiscox11(libsimbx11[36],p0,p); break; case "G": p2=sostituiscox11(libsimbx11[37],p0,p); break; case "H": p2=sostituiscox11(libsimbx11[38],p0,p); break; case "I": p2=sostituiscox11(libsimbx11[39],p0,p); break; case "J": p2=sostituiscox11(libsimbx11[40],p0,p); break; case "K": p2=sostituiscox11(libsimbx11[41],p0,p); break; case "L": p2=sostituiscox11(libsimbx11[42],p0,p); break; case "M": p2=sostituiscox11(libsimbx11[43],p0,p); break; case "N": p2=sostituiscox11(libsimbx11[44],p0,p); break; case "O": p2=sostituiscox11(libsimbx11[45],p0,p); break; case "P": p2=sostituiscox11(libsimbx11[46],p0,p); break; case "Q": p2=sostituiscox11(libsimbx11[47],p0,p); break; case "R": p2=sostituiscox11(libsimbx11[48],p0,p); break; // simbolo di Sommatoria case "S": p2=sostituiscox11(libsimbx11[49],p0,p); break; case "T": p2=sostituiscox11(libsimbx11[50],p0,p); break; case "U": p2=sostituiscox11(libsimbx11[51],p0,p); break; case "V": p2=sostituiscox11(libsimbx11[52],p0,p); break; case "W": p2=sostituiscox11(libsimbx11[53],p0,p); break; case "X": p2=sostituiscox11(libsimbx11[54],p0,p); break; case "Y": p2=sostituiscox11(libsimbx11[55],p0,p); break; case "Z": p2=sostituiscox11(libsimbx11[56],p0,p); break; case "#": p2=sostituiscox11(libsimbx11[57],p1,p); } } else { // altrimenti scrive il carattere in corsivo. switch(ax11[p1]){ case "*": p2=sostituiscox11("·",p1,p); break; case "-": p2=sostituiscox11("−",p1,p); break; case "#": p2=sostituiscox11("_",p1,p); break; default : { ns= ax11[p1].charCodeAt(0)%128; if( t48_123x11[ns] ){ ss=ax11[p1]; p0=p1; for(j=0;dimax11>j;j++){ p0=p0-1+dimax11;p0=p0%dimax11; ss0=ax11[p0]; ns0=ss0.charCodeAt(0)%128; if( t48_123x11[ns0] ) { ss = ax11[p0]+ss; p1=p0;} else break; } p2=sostituiscox11(xix11+ss+yix11,p1,p); } } } } return p2; } // function elaboro2x11(p){ // "!" var p0,p1,p2,ss,ns,ns0; p1=p-1+dimax11; p1=p1%dimax11; p2=(p+1)%dimax11; ss=ax11[p1]; ns=ss.charCodeAt(0)%128; if(t48_57x11[ns] ) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la cifra è preceduta da # la scrive in alto if(ns0==35 ) p2=sostituiscox11(ksupx11[ns],p0,p); else p2=sostituiscox11(ksubx11[ns],p1,p); } else if(t65_90x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la maiuscola è preceduta da # la scrive in basso if(ns0==35 ) p2=sostituiscox11(ksubx11[ns],p0,p); else p2=sostituiscox11(ksupx11[ns+32],p1,p); } else if( t97_123x11[ns]) p2=sostituiscox11(ksubx11[ns],p1,p); else if( ns==35) p2=sostituiscox11("!",p1,p); return p2; } // function elaboro3x11(p){ // "°" oppure "\" var p0,p1,p2,ss,ns,ns0; p1=p-1+dimax11; p1=p1%dimax11; p2=(p+1)%dimax11; ss=ax11[p1]; ns=ss.charCodeAt(0)%128; if(t48_57x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la cifra è preceduta da # la scrive in alto if(ns0==35 ) p2=sostituiscox11(dksupx11[ns],p0,p); else p2=sostituiscox11(dksubx11[ns],p1,p); } else if(t65_90x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la maiuscola è preceduta da # la scrive in basso if(ns0==35 ) p2=sostituiscox11(dksubx11[ns],p0,p); else p2=sostituiscox11(dksupx11[ns+32],p1,p); } else if( t97_123x11[ns]) p2=sostituiscox11(dksubx11[ns],p1,p); else if( ns==35) p2=sostituiscox11("°",p1,p); return p2; } // function elaboro4x11(p){ // "§" oppure "|" var p0,p1,p2,ss,ns,ns0; p1=p-1+dimax11; p1=p1%dimax11; p2=(p+1)%dimax11; ss=ax11[p1]; ns=ss.charCodeAt(0)%128; if(t48_57x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la cifra è preceduta da # la scrive in alto if(ns0==35 ) p2=sostituiscox11(Dksupx11[ns],p0,p); else p2=sostituiscox11(Dksubx11[ns],p1,p); } else if(t65_90x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la maiuscola è preceduta da # la scrive in basso if(ns0==35 ) p2=sostituiscox11(Dksubx11[ns],p0,p); else p2=sostituiscox11(Dksupx11[ns+32],p1,p); } else if( t97_123x11[ns] ) p2=sostituiscox11(Dksubx11[ns],p1,p); else if( ns==35) p2=sostituiscox11("§",p1,p); return p2; } // function elaboro5x11(p){ // "^" var j,p0,p1,p2,ss,ns,ss0,ns0; p2=(p+1)%dimax11; p1=p-1+dimax11; p1=p1%dimax11; ns=ax11[p1].charCodeAt(0)%128; ss=knorx11[ns]; if(t48_57x11[ns]) { p0=p1; for(j=0;dimax11>j;j++){ p0=p0-1+dimax11;p0=p0%dimax11; ss0=ax11[p0]; ns0=ss0.charCodeAt(0)%128; if(t45_57x11[ns0] ) { ss = knorx11[ns0]+ss; p1=p0;} else { if(ns0==35) p1=p0; break; } } p2=sostituiscox11(xsupx11+xsmallx11+" "+ysmallx11+ss+ysupx11,p1,p); } else if(t65_90x11[ns]) { p0=p1-1+dimax11;p0=p0%dimax11; ns0=ax11[p0].charCodeAt(0)%128; // Se la maiuscola è preceduta da # la scrive in alto if(ns0==35 ) p2=sostituiscox11(xsupx11+xsmallx11+ " "+ysmallx11+ss+ysupx11,p0,p); else p2=sostituiscox11(xsubx11+xsmallx11+" "+ ysmallx11+knorx11[ns+32]+ysubx11,p1,p); } else if( t97_123x11[ns] ) p2=sostituiscox11(xsupx11+ xsmallx11+" "+ysmallx11+ss+ysupx11,p1,p); else if( ns==35) p2=sostituiscox11("^",p1,p); return p2; } // function sostituiscox11(s,p1,p){ var j,r,pp,ns=s.length; pp=p1; for(j=0;dimax11>j;j++){ ax11[pp]=""; pp++;pp=pp%dimax11; if(pp==p) break; } ax11[p]=""; pp=p1; for(j=0;ns>j;j++){ risax11+=ax11[pp]; ax11[pp]=s.charAt(j); pp++;pp=pp%dimax11; } 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. // // ]]>_______________________________________________________________