// LIBRERIA DI FUNZIONI E COSTANTI PER USARE SIMBOLOGIA MATEMATICA
// IN UNA PAGINA WEB.
// a cura di Giovanni Nicco
// USO:
// la funzione ww() ammette un numero qualsiasi di stringhe-argomento
// esempio ww("ciao"," come ", "stai?"); viene stampato "ciao come stai?"
// al fine di usare particolari caratteri, questi sono stati memorizzati in alcune
// variabili il cui nome si richiama vagamente al linguaggio latex
// es. ww(exist,"x",inset,"A",bar,"x",ge,"1")
// consente di scrivere : simbolo di esistenza x incluso in A tale che x >= 1
// in particolare per risparmiare virgolette, simboli quali x,y,z,a,b,c con
// relative maiuscole sono state dichiarate con un valore uguale al loro
// nome in modo che si puo' anche scrivere:
// es. ww(exist,x,inset,A,bar,x,ge,1)
// wlc() ha uso analogo ma forza la scrittura in una unica linea (necessaria a
// causa del rimando a capo automatico che html impone all'apertura di una tabella
// usata per costruzioni grafiche come le frazioni.
// esempio la somma di due frazioni:
// wlc(frac(1,2),frac(1,3))
// wl() è simile ma forza l'allineamento in basso (utile per le potenze)
// es wl(pow("a+b",2),eq,pow(a,2),p,2,a,b,p,pow(b,2))
//
// Le funzioni l, lc non stampano ma costruiscono una stringa in linea contenente gli
// argomenti: possono servire nel caso si vada costruendo una espressione che solo
// alla fine andrà stampata.
// es ww(l(agBig,mat31(lc(x,p,y,eq,frac(1,3),p,frac(2,3))," ",lc(x,m,y,eq,frac(1,3),t,frac(2,3)) )
function ww(){w(compattaABvC("","",arguments,""))}// stampa tutte le stringhe-argomenti passate
function wl(){w(l(arguments))}; // idem ma forzatamente in linea
function wlc(){w(lc(arguments))}; // idem ma centrata (utile per le frazioni)
function w(x){document.writeln(x)} // stampa semplice
function l(){return compattaABvC("
")} //restituisce in linea
function lc(){return compattaABvC("")}// idem centrata verticalmente
function fontChar(f,c){ return ""+String.fromCharCode(c)+""}
var p="+",t="*",m="-",d=":"; // operatori aritmetici
var x="x",y="y",z="z",a="a",b="b",c="c",d="d";e="e",o="o";A="A",B="B",C="C",D="D"; // variabili
var sx=" x ",sy=" y ",sz=" z ",sa=" a ",sb=" b ",sc=" c ",se=" e ",so=" o ";sA=" A ",sB=" B ",sC=" C "; // variabili con spazio
var comma=",";eq="=";bar="|"; // simboli comunque accessibili da tastiera
var ag="{",cg="}",aq="[",cq="]",at="(",ct=")"; // parentesi (a)perte e (c)hiuse
var s=" ",sp=s+s;spa=s+s+s;spac=s+s+s+s;space=s+s+s+s+s; // spazi più o meno lunghi
// abbreviazioni di comandi html
var hr="
";var br="
"
var pp=".
"; // punto e a capo
var pc=".
"; // punto e a capo
var ac="
"; // a capo
var phi =fontChar("Symbol",106);
// LETTERE GRECHE MINUSCOLE*****************
var alpha =fontChar("Symbol",97);
var beta =fontChar("Symbol",98);
var gamma =fontChar("Symbol",103);
var delta =fontChar("Symbol",100);
var epsilon =fontChar("Symbol",101);
var varepsilon =fontChar("Symbol",101);
var zeta =fontChar("Symbol",86);
var eta =fontChar("Symbol",104);
var theta =fontChar("Symbol",113);
var vartheta =fontChar("Symbol",74);
var iota =fontChar("Symbol",105);
var kappa =fontChar("Symbol",107);
var lambda =fontChar("Symbol",108);
var mu =fontChar("Symbol",109);
var nu =fontChar("Symbol",110);
var xi =fontChar("Symbol",121);
var pi =fontChar("Symbol",112);
var varpi =fontChar("Symbol",118);
var rho =fontChar("Symbol",114);
var varrho =fontChar("Symbol",114);
var sigma =fontChar("Symbol",115);
var tau =fontChar("Symbol",116);
var upsilon =fontChar("Symbol",117);
var phi =fontChar("Symbol",102);
var varphi =fontChar("Symbol",106);
var chi =fontChar("Symbol",99);
var psi =fontChar("Symbol",102);
var omega =fontChar("Symbol",119);
// LETTERE GRECHE MAIUSCOLE*****************
var Gamma =fontChar("Symbol",71);
var Delta =fontChar("Symbol",68);
var Theta =fontChar("Symbol",81);
var Lambda =fontChar("Symbol",76);
var Xi =fontChar("Symbol",88);
var Pi =fontChar("Symbol",80);
var Sigma =fontChar("Symbol",115);
var Upsilon =fontChar("Symbol",161);
var Phi =fontChar("Symbol",70);
var Psi =fontChar("Symbol",89);
var Omega =fontChar("Symbol",87);
// SIMBOLI MATEMATICI **********************
var ast =fontChar("Symbol",42);
var biimp =fontChar("Symbol",219);
var bigtriangledown =fontChar("Symbol",209);
var bullet =fontChar("Symbol",83);
var cap =fontChar("Symbol",199);
var cdot =fontChar("Symbol",215);
var circ =fontChar("Symbol",176);
var cong =fontChar("Symbol",64);
var cross =fontChar("Symbol",180);
var cup =fontChar("Symbol",200);
var diamond =fontChar("Symbol",224);
var div =fontChar("Symbol",184);
var dot =fontChar("Symbol",215);
var exists =fontChar("Symbol",36);
var empty =fontChar("Symbol",198);
var forall =fontChar("Symbol",34);
var inset =fontChar("Symbol",206);
var leq =fontChar("Symbol",163);
var mid =fontChar("Symbol",239);
var mp =fontChar("Symbol",177);
var nabla =fontChar("Symbol",209);
var neq =fontChar("Symbol",185);
var notinset =fontChar("Symbol",207);
var pm =fontChar("Symbol",177);
var root =fontChar("Symbol",214);
var star =fontChar("Symbol",42);
var subset =fontChar("Symbol",204);
var subseteq =fontChar("Symbol",205);
var sum =fontChar("Symbol",229);
var t =fontChar("Symbol",215);
var times =fontChar("Symbol",180);
var vee =fontChar("Symbol",218);
var wedge =fontChar("Symbol",217);
// PARENTESI GRANDI **************
var atUP = fontChar("Symbol",230);var atMIDDLE = fontChar("Symbol",231);
var atBOTTOM = fontChar("Symbol",232);var ctUP = fontChar("Symbol",246);
var ctMIDDLE = fontChar("Symbol",247);var ctBOTTOM = fontChar("Symbol",248);
var atBig= mat31(atUP,atMIDDLE,atBOTTOM)
var ctBig= mat31(ctUP,ctMIDDLE,ctBOTTOM)
var aqUP = fontChar("Symbol",233);var aqMIDDLE = fontChar("Symbol",234);
var aqBOTTOM = fontChar("Symbol",235);var cqUP = fontChar("Symbol",249);
var cqMIDDLE = fontChar("Symbol",250);var cqBOTTOM = fontChar("Symbol",251);
var aqBig = mat31(aqUP,aqMIDDLE,aqBOTTOM)
var cqBig = mat31(cqUP,cqMIDDLE,cqBOTTOM)
var agUP = fontChar("Symbol",236);var agMIDDLE = fontChar("Symbol",237);
var agBOTTOM = fontChar("Symbol",238);var cgUP = fontChar("Symbol",252);
var cgMIDDLE = fontChar("Symbol",253);var cgBOTTOM = fontChar("Symbol",254);
var agBig = mat31(agUP,agMIDDLE,agBOTTOM)
var cgBig = mat31(cgUP,cgMIDDLE,cgBOTTOM)
var intUP = fontChar("Symbol",243);var agMIDDLE = fontChar("Symbol",237);
var intOTTOM = fontChar("Symbol",244);var cgUP = fontChar("Symbol",252);
var intMIDDLE = fontChar("Symbol",245);var cgBOTTOM = fontChar("Symbol",254);
var intBig = mat31(agUP,agMIDDLE,agBOTTOM)
var intLittle = fontChar("Symbol",242);var agMIDDLE = fontChar("Symbol",237);
// **********************************************
function pow(a,b){ return a+""+b+"" }
// FUNZIONI A NUMERO DI ARGOMENTI VARIABILE
function toVett(){return arguments}
function compatta(x){var s="";for(var i=0;i","",arguments,"")} // compatta con prefisso, infisso e suffisso
function mat31(a,b,c){ // restituisce 3 dati incolonnati
return ""
}
function red(){return compattaABvC("","",arguments,"")}
function frac(num,den){ return mat31(num,"
",den)} // frazione
function overline(x){
return ""
}
function tex(x){
while(x.match(/(!overline{)([^}]*)(})/)){x=x.replace(/(!overline{)([^}]*)(})/g,"")}
while(x.match(/(!frac{)([^}]*)(}{)([^}]*)(})/)){x=x.replace(/(!frac{)([^}]*)(}{)([^}]*)(})/g,"")}
while(x.match(/([^\^])(\^)(\{)(\w*)(\})/)!=null){x=x.replace(/([^\^])(\^)(\{)(\w*)(\})/,"$1$4")}//exp{}{}
while(x.match(/([^\^])(\^)(\w*)/)!=null) {x=x.replace(/([^\^])(\^)(\w*)/,"$1$3")}//exp 1 chr
while(x.match(/([^\_])(\_)(\{)(\w*)(\})/)!=null){x=x.replace(/([^\_])(\_)(\{)(\w+)(\})/,"$1$4")}//ped {}{}
while(x.match(/([^\_])(\_)(\w)([^\{])/)!=null){x=x.replace(/([^\_])(\_)(\w)([^\{])/,"$1 $3 $4")}// ped 1 chr
x=x.replace(/\/\//g,"
");// "//" break line
x=x.replace(/!Abar/g,""+String.fromCharCode(256)+"");
x=x.replace(/!alpha/g,""+String.fromCharCode(97)+"");
x=x.replace(/!beta/g,""+String.fromCharCode(98)+"");
x=x.replace(/!chi/g,""+String.fromCharCode(99)+"");
x=x.replace(/!delta/g,""+String.fromCharCode(100)+"");
x=x.replace(/!epsilon/g,""+String.fromCharCode(101)+"");
x=x.replace(/!psi/g,""+String.fromCharCode(102)+"");
x=x.replace(/!gamma/g,""+String.fromCharCode(103)+"");
x=x.replace(/!eta/g,""+String.fromCharCode(104)+"");
x=x.replace(/!iota/g,""+String.fromCharCode(105)+"");
x=x.replace(/!phi/g,""+String.fromCharCode(106)+"");
x=x.replace(/!kappa/g,""+String.fromCharCode(107)+"");
x=x.replace(/!lambda/g,""+String.fromCharCode(108)+"");
x=x.replace(/!mu/g,""+String.fromCharCode(109)+"");
x=x.replace(/!nu/g,""+String.fromCharCode(110)+"");
x=x.replace(/!pi/g,""+String.fromCharCode(112)+"");
x=x.replace(/!theta/g,""+String.fromCharCode(113)+"");
x=x.replace(/!rho/g,""+String.fromCharCode(114)+"");
x=x.replace(/!sigma/g,""+String.fromCharCode(114)+"");
x=x.replace(/!tau/g,""+String.fromCharCode(116)+"");
x=x.replace(/!omega/g,""+String.fromCharCode(119)+"");
// simboli matematici
x=x.replace(/!biimp/g,""+String.fromCharCode(219)+"");
x=x.replace(/!cap/g,""+String.fromCharCode(199)+"");
x=x.replace(/!cong/g,""+String.fromCharCode(64)+"");
x=x.replace(/!cross/g,""+String.fromCharCode(180)+"");
x=x.replace(/!cup/g,""+String.fromCharCode(200)+"");
x=x.replace(/!empty/g,""+String.fromCharCode(198)+"");
x=x.replace(/!integral/g,""+String.fromCharCode(0x222B)+"");
x=x.replace(/!forall/g,""+String.fromCharCode(34)+"");
x=x.replace(/!exists/g,""+String.fromCharCode(36)+"");
x=x.replace(/!notinset/g,""+String.fromCharCode(207)+"");
x=x.replace(/!inset/g,""+String.fromCharCode(206)+"");
x=x.replace(/!leq/g,""+String.fromCharCode(163)+"");
x=x.replace(/!root/g,""+String.fromCharCode(214)+"");
x=x.replace(/!subset/g,""+String.fromCharCode(204)+"");
x=x.replace(/!subseteq/g,""+String.fromCharCode(205)+"");
x=x.replace(/!wedge/g,""+String.fromCharCode(217)+"");
x=x.replace(/!dot/g,""+String.fromCharCode(215)+"");
return(x);
}
//function tex2html(x){
// var vett=x.split("\n");
// var result="";
// for(var i=0;i<=vett.length-1;i++){
// if(vett[i].match(/(@)(\w*)/)){
// vett[i]=vett[i].replace(/(@)(\w*)/,"$2");
// eval(vett[i])
// }
// else{
// result+=tex(vett[i]);
// document.f1.compiled.value=result;
// }
// }
// w(result);
//}