N.B. questo documento è ancora un poco disorganizzato.
Oggi nei computer esistono moltissimi formati testuali,
molti dei quali complessi, proprietari, illeggibili dalle persone e difficilmente
convertibili in altri formati. Si è nel marasma più totale.
L'Html e suoi sviluppi stanno emergendo come uno dei principali e più
diffusi. C'è la necessità di arrivare a uno o pochi formati
testuali. Ma i testi devono assolvere a molti scopi, e chi scrive un romanzo,
un articolo su una rivista raffinata, una tesi di analisi numerica o di
chimica, chi deve fare una pagina pubblicitaria sul Web, ecc, hanno tutti
esigenze differenti.
Ma non bisogna dimenticare che il Web ha diffusione
mondiale e usare troppi standard potrebbe creare problemi. Inoltre occorre
pensare non solo ai molti sitemi di computer che esistono oggi, ma anche
a quelli che esisteranno in futuro. Non è una richiesta esosa pretendere
che fra quaranta anni si possa continuare a leggere doscumenti scritti
oggi. Ben pochi fra i file oggi in uso saranno correntemente utilizzabili
nel 2040 o oltre. Io penso che un testo scritto correttamente in Html sarà
leggibile, almeno da convertitori, per almeno altri venti anni. Oggi usare
formati diversi dal Txt ASCII a 7 bit non garantisce di essere leggibili
a lunga scadenza. Mentre i libri di Gutemberg sono ben leggibili e lo stesso
vale per le ben più antiche tavolette di argilla (Vedi La conservazione
dei documenti digitali, di Jeff Rothenberg, Le Scienze n. 319,
marzo 1995).
La generazione di formule in Html è molto
importante. Occorre uno standard a larga diffusione, altrimenti in futuro
sarà molto difficile leggere testi elettronci scritti in questi
anni. La situazione mi sembra un poco paradossale pensando che sono i ricercatori,
fisici, che hanno creato il WWW, ed ancora oggi non c'è un modo
decente per pubblicare formule. A meno di usare Ps, Ddf, ecc.
Non è male cercare di scrivere in un formato
di file leggibile per almeno altri venti anni. Un modo per rendere longevo
un formato di file è utilizzare l'Ascii a 7 bit e definire i comandi
nel file che siano leggibili da una persona. L'Html è fatto in tale
modo. I file Doc del Word 97 no. Tale restrizione ha il difetto di rendere
il file meno sintetico, ma ha il vantaggio che in caso di necessità
sono sufficienti un editor di testi per scrivere e leggere il file. Ciò
fa sì che almeno una parte del contenuto possa essere leggibile
anche a lunga scadenza, da persone prive di manuali del formato file.
Oggi esistono vari metodi per scrivere formule in
un documento leggibile da computer. Ma quasi tutti hanno dei difetti. Secondo
me un metodo ideale deve essere massimamente standard e diffuso, deve essere
sintetico e privo di ridondanze inutili per una persona, deve essere comprensibile
alla lettura in inglese con un editor Ascii anche a costo della massima
sintetiticità (anche se in un formato per computer fosse esprimibile
con la metà o un terzo di bit), e deve essere estendibile e elastico
in modo da poter essere usato negli infiniti campi della matematica, fisica,
chimica, ecc, presenti sul pianeta, anche del futuro a medio termine (diciamo
100 anni).
(Il fatto è che nessuno dei maggiori produttori
di browser sente che la necessità di scrivere formule è molto
diffusa. Per la maggior parte delle persone testo lampeggiante o scorrevole
è più importante).
Inventare tale formato non è uno scherzo.
Anche perchè si hanno interessi contrastanti. Da una parte si vuole
che sia molto sintetico e leggibile da chiunque in inglese, dall'altra
si vuole che con esso sia possibile esprimere qualsiasi formula, in base
ai propri gusti tipografici. Si possono volere caratteri di colore, forma,
font, dimensione differenti. Si può desiderare inventare nuovi simboli
e nuove disposizioni di simboli, di inserire collegamenti ipertestuali
e una cera interattività. I formati oggi esistenti rispettano quasi
tutte queste richieste, ma nessuno contemporaneamente. In particolare non
è facile con nessun formato definire nuovi simboli e nuovi modi
di comporli (forse è possibile in TEX, non
lo conosco a sufficienza, vedi più avanti).
(I formati testuali più longevi per fare ciò
sono una descrizione in inglese in Ascii della formula, allegata ad una
bitmap binaria di dimensioni definite nel testo (ad esempio un Pbm), che
mostri le formule. Il tutto non è utilizzabile facilmente da un
computer, ma lo è da una persona, e si presume che le persone cambino
più lentamente dei computer.)
Per rendere il formato compatto e comprensibile occorre che contenga
quasi solo la semantica della formula, espressa in inglese. Ciò
ha lo svantaggio di non poter definire un formalismo e un modo di visualizzazione
personali. Formati come il TEX sono quasi semantici,
cioè producono formule eseguibili da un computer, con lo svantaggio
di avere un sintassi complessa, che richiede un manuale per essere capita.
Sono comunque sufficientemente elastici dal punto di vista tipografico.
Metodi come MathML (vedi oltre) sono quasi illeggibili
da una persona, nonostante siano scritti in Ascii, perchè adatti
per una lettura e scrittura automatiche. Sono anche estremamente logorroici.
Metodi come EzMath o Minse
(realizzato in locale) sono comprensibili o quasi, e sufficientemente sintetici,
ma impongono un formato specifico di visualizzazione, a meno che in precedenza
non si riesca a definirne un'altro.
Penso che un formato ideale per formule non esista, o sia molto difficile
da ideare. Più modestamente, un formato che rispetti le mie richieste
può essere simile al seguente:
(2) Un secondo metodo consisterebbe nel poter inserire tag Html all'interno della formula. La formula dovrebbe essere solo semantica, e i tag potrebbero essere omessi del tutto. Letta con un browser Html che non supporta il formato di formule, si vedrebbe la formula esatta per esteso in inglese, con le caratteristiche testuali volute; visualizzata con un editor Ascii mostrerebbe interruzioni dovute alle Tag, ma dovrebbe rimanere leggibile (basta ignorarle).
Esempio:
Reso graficamente (lo sfondo dovrebbe adattarsi automaticamente a quello
della pagina):
Nel file Html apparirebbe come:
<Es><FONT FACE="Arial,Helvetica"><FONT COLOR="#FF6666">DER</FONT>x(</FONT><FONT FACE="Comic Sans MS"><FONT COLOR="#FFFF99">f</FONT></FONT><FONT FACE="Arial,Helvetica">(x))<FONT COLOR="#3366FF">=</FONT><FONT COLOR="#FF6666">LIM</FONT>(n,0,(</FONT><FONT FACE="Comic Sans MS"><FONT COLOR="#FFFF99">f</FONT></FONT><FONT FACE="Arial,Helvetica">(x+h)-</FONT><FONT FACE="Comic Sans MS"><FONT COLOR="#FFFF99">f</FONT></FONT><FONT FACE="Arial,Helvetica">(x))/h)</FONT></Es>
In effetti è un bel pastone, quasi illeggibile. Dal punto di
vista semantico l'interprete ignorerebbe tali tag., ne terrebbe di conto
solo nella visualizzazione di colori, font, link, e dimensioni relative
a quella di default. Ad esempio
(3) Specifiche semantiche aggiuntive si potrebbero
mettere prima della formula, dopo il tag <Es> iniziale, forse all'interno
di un tag specifico, oppure in un commento Html <--...-->. All'interno
di tale commento la sintassi potrebbe essere esperessa con tag o con comandi
più sintetici.
Una formula completa contiene tre
tipi di informazioni:
F = Semantica della Formula,
S = definizioni di nuove forme grafiche, semantiche e strutture,
C = Informazioni extra su colori, font, link, interattività.
Esistono molte combinazioni di impaccamento di tale informazione, la lista completa è la seguente:
Ecco una rassegna dei metodi disponibili al momento per la creazione
di formule in documenti per computer, possibilmente leggibili sul Web.
d(n)
|
+ u(n) |+ +-----+
x(n) ---------O---+---O------| Q
|-----+------ y(n)
- | | + +-----+
|
| | -
+ |
| +------------O---------+
|
|
| +------+ |
+----| h(m) |----+
+------+
2
f
w w'
| 1 - 1/w' |
========================================================
0 (0kHz)
0 1
0 (-inf dB)
1/8T (6kHz) pi/4T
exp(-j pi/4) 0.5 ( -3 dB)
1/6T (8kHz) pi/3T
exp(-j pi/3) 1 (
0 dB)
1/4T (12kHz) pi/2T
exp(-j pi/2) 2 ( +3 dB)
1/2T (24kHz) pi/T
-1 4
( +6 dB)
w=2pi/T
T
/
2
----- | | 1 - 1/w' |
dw = 2
2pi /
w=0
K
-----
K \
k K!
-k
(1 - 1/z) =
> (-1) ----------- z
/ (K-k)!
k!
-----
k=0
K
-----
\ k-1
K! -k
= 1 - > (-1)
----------- z
/
(K-k)! k!
-----
k=1
In Html (2.0 ?) sono presenti vari strutturatori di testo e qualche elemento grafico, come la linea orizzontale:
e la tabella:
|
|
|
|
|
|
|
Il problema è che tale metodo non è
comunque massimamente elastico, e inoltre richiede un mucchio di tentativi
e di tempo per creare una formula e per modificarla. (forse una volta presa
l'abitudine si può fare un pochino più in frettta) e di non
generare formule eseguibili.
Questo metodo ha il vantaggio di essere abbastanza standard e di produrre
formule incluse nel file Html. Inoltre con accortezza si può cambiare
i colori e stili di caratteri, ecc. (a differenza di metodi di visualizzazione
grafica automatica di formule, come l'Equation Writer della calcolatrice
HP48SX e credo il visualizzatore del Mathematica).
Il metodo basato su Html è a bassa tecnologia,
con tutti i pregi e difetti di ciò. Fra i pregi c'è la semplicità,
infatti non servono plug-in o estenzioni da centinaia di KB, e la libertà
di fare le cose come uno vuole (nessuno costringe a rappresentare le formule
in un dato modo).
Questo metodo dovrebbe essere usato quando possibile, al posto di immagini
o di metodi non standard.
Questo metodo è piuttosto robusto, infatti
praticamente tutti i browser caricano immagini in Gif (meno in Png, come
questa, che è più compressa). Inoltre l'immagine è
stampabile senza problemi (a differenza di formule prodotte da applet o
altro), benchè si vedano i pixel. La formula sarà visibile
nella stessa maniera esatta da tutti.
Questa immagine è binaria, ma se non si accetta
una certa perdita qualitativa, si possono usare immagini a 16 toni di grigio
o più. Il problema del colore di fondo differente può essere
parzialmente risolto con una Gif trasparente.
Per pagine Html a massima diffusione, con una o
poche formule complesse questo metodo è fra i più adatti,
almeno finchè non diventerà standard una estenzione dell'Html
per scrivere formule.
Un'altro difetto di questo metodo è che la formula non è
"testo", per cui per poterla copiare in altri documenti o per poterla usare
usare, va ricopiata in un'altro formato.
Chi non può visualizzare immagini è nei guai. Questo
problema potrebbe essere risolto in parte come ho fatto quì, mettendo
nell'Alt della immagine la formula stessa trascritta in Ascii in qualche
modo leggibile (ho usato la sintassi della HP48SX sum è il segno
di sommatoria). Questo fa sì che chi ha solo l'html possa comunque
leggere la formula. Infatti un problema delle immagini è che esse
sono esterne al testo. Questo è spesso un vantaggio, ad esempio
permette di mantenere i file Html corti e editabili a mano, e inoltre permette
di aggiungere facilmente altri formati grafici leggibili dai browser, ma
fa sì che un testo con formule rese in questa maniera sia una raccolta
di un testo e di anche centinaia di minuscole immagini. Tali immagini occupano
complessivamente parecchio spazio, e la frammentazione del tutto può
portare a perdere qualche pezzetto. Vedi un esempio di spezzone di articolo:
Floyd-Steinberg Dithering and 3D-Dithering have one important feature: precious error distribution.
If original voxel intensity
is
and dithered voxel intensity of the same
voxel is
, we can defined, that
.
On the image is the one possibility of distribution of this error information.
This possibility of error diffusion we can describe via this equations:
A
is convolutory matrix with
size
. But almost m and n are
odd integers. Undithered intensity
we can
describe from dithered intensity
as:
Matrix A is an normal convolutory matrix. With good result I used these matrixes:


Questo metodo mantiene la libertà del metodo
testuale, ma in pratica richiede anche un editor grafico di formule, da
cui poter copiare l'immagine, e/o un editor grafico, come il Paint Shop.
(in teoria si possono fare solo usando tale programma, ma si richiede troppa
pazienza e tempo).
(Molto del seguente materiale è un riassunto-traduzione dalle
pagine del progetto MINSE: http://www.lfw.org/math/top.html,
vedi oltre)
Esistano sistemi come LaTeX2HTML,
Hyperlatex,
e altri, che permettono di generare automaticamente file Html con formule-immagini
allegate. Ma tale operazione a me sembra semi-folle, a meno che non si
abbia già un grosso documento TEX.
Ci sono vari difetti nell'uso di tali metodi:
E' stato inventato anche un altro metodo per l'inserimento
di formule come immagini Gif in documenti Html.
Per usarlo si scrive la semantica delle formule nel documento Html,
in maniera piuttosto sintetica e abbastanza semplice. Prima e dopo la formula
si pongono due Tag <SE> e </SE> non standard, che stanno a significare
Structured
Espression. Ecco un brano di Html, per esempio:
...
<SE>
'deriv(f(x),x)='lim('quot(f(x+h)-f(x),h),h .approach 0)
</SE>
...
Letto con un browser appare identico:
Per visualizzare le formule si deve accedere alla rete e inserire la
URL di un server, seguita dall'indirizzo della nostra pagina.
Verrà mostrata un'altra pagina che contiene
il testo della nostra, è che ha al posto delle nostre formule lo
spazio per immagini Gif che il browser carica dallo stesso server. tale
server genera al volo le formule in forma grafica, perchè nella
loro Url c'è codificata tutta l'informazione contenuta nelle formula.
Nonostante tali Url siano arcane, l'utente può ignorarle e conservare
solo la versione originale della pagina.
Tale metodo, chiamato è chiamto MINSE Project:
http://www.lfw.org/math/top.html
(Email autore: Ping).
Indirizzo pagina script: http://wheat.uwaterloo.ca/cgi-bin/kryee/nph-pmpm.cgi
Tale servizio pubblico é in funzione dal 2 Giugno '96, ed è
quindi piuttosto stabile.
Da notare che le formule sono esperesse in semantica, non nel modo
in cui devono essere mostrate. C'è in pratica l'indipendenza dal
medium su cui verrano rese. Queste pagine di formule possono essere visualizzate
da molti, ma chi non ha browser grafici può chiedere di avere una
visualizzazione testuale delle formule.
Ad esempio la formula precedente verrà mostrata come Gif:
Oppure come testo:
Qusto mezzo, indipendente dal media, è stato chiamato dall'autore (Ping) Polimedia. C'è uno studio sperimentale, chiamato ASTER, per la resa delle formule in audio. Esse vengono trasmesse come file audio sintetizzati, per i non vedenti. Tali formule potrebbero essere rese anche in maniera leggibile per altri programmi, come Maple o TEX, dato che la semantica della formula è conservata.d f(x + h) - f(x) ---- f(x) = lim ----------------- dx h -> 0 h
<APPLET CODEBASE=../../bin CODE=WebEQ.class HEIGHT=25 WIDTH=20 ALIGN=top> <PARAM NAME=size VALUE=18> <PARAM NAME=color VALUE=0xffffff> <PARAM NAME=line1 VALUE="Ω"></APPLET>Con Minse sarebbe bastato
<se> ?Omega? </se>In pagine fitte di formule le chiamate a WebEQ la trasformato in pantano interminabile.
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo>-</mo>
<mi>b</mi>
<mo>±</mo>
<msqrt>
<mrow>
<msup>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>-</mo>
<mn>4</mn>
<mi>a</mi>
<mi>c</mi>
</mrow>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
E' piuttosto diffiicile apprendere a scrivere formule
a mano con questo metodo, ma in linea di principio sembra possibile. Un
editor è però quasi indispensabile. (La Geometry Technologies
produce
il pacchetto WebEQ (http://www.webeq.com)
che contiene applet per scrittura formule (vedi più avanti), un
editor java di MathML tanto lento su un P75 da essere inutilizzabile, e
un wizard per conversioni varie, che richiede JRE (Java Runtime
Envirionment)). Anche l'editor EzMath può
produrre MathML.
Questo metodo pare essere sufficientemente elastico
e libero, e permette di inserire formule nel file Html stesso, ma si vede
che la formula è quasi illeggibile con un editor Ascii (per cui
consiglio di inserire un commento Html con la formula in testo leggibile)
e occupa molto spazio, quasi tanti byte quanto la stessa formula come immagine
grafica in Png. Ciò è abbastanza grave, ma non è tragico.
Questo formato comprende tag semantiche e tag per la forma grafica.
Il pacchetto WebEQ su menzionato permette di utilizzare WebTeX: un linguaggio simile al Tex. (ma non esattamnte standard!). Esempio (con macro):
<applet codebase="classes" code="webeq.Main"width=500
height=100>
<param name=macros value="\define{\plusN}[1]{+
{#1}}">
<param name=eq value="y \plusN{35} = x \plusN{z
- w}">
</applet>
Produce l'output:
y + 35 = x + z - w
Esso viene interpretato da una applet piuttosto robusta
di circa 340KB. Il linguaggio TeX (o simili) è piuttosto complesso
e pesante da usare. Ma forse tale complessità è necessaria,
visto quanto complesse possono essere certe formule. Con questa variante
del TeX si può fare praticamente tutto! formule molto strane, link
web, descrizioni di parti della formula, colori, modifica dimensioni caratteri
al volo, interattività.
Gli autori dicono che ci sono problemi a stampare una applet. Io ho
visto che è possibile farlo in IE4, ma forse non in Netscae4. (Questo
è un difetto terribile! E' poco utile avere un testo con delle formule
e non poterlo stampare).
Le espressioni scritte in Tex potrebbero facilmente
essere eseguite, quasi come quelle di una calcolatrice Hp, o quelle del
Mathematica.
Le formule in MathML viste nel §5.1
non credo siano eseguibili facilmente, sembra solo un linguaggio che descrive
l'aspetto di un testo.
Riassumendo, i pregi e difetti di questo metodo, che pare essere uno dei più potenti disponibili al momento:
Pregi:
Io potrei gradire una versione più semplice e piccola, senza
possibilità di rescaling di font, senza link web, e interattività,
ma installabile come una plug-in minuscola, veloce e gratuita.
Ecco qualche altro esempio che richiede per funzionare la versione
2.0:
Flipping Coins: A Bernoulli Process
The probability of k
successes in n trials of a Bernoulli process is given by the following
formula:
Here, the event E
consists of outcomes where exactly k heads occur in n flips
of a fair coin.
Puntando il mouse su ogni termine se ne ottiene una descrizione. Nota che cliccando col tasto destro si ottine una finestra per specificare le dimesioni del font.
Qui io ho fornito la formula in tre modi diffrenti,
per chi ha supporto Java e le applet webeq stesse, le utilizza per mostrare
la formula interattiva. Chi ha il Java non funzionante o disattivato vede
una immagine identica (è una Gif binaria ottenuta grabbando l'output
stesso della applet). Chi non può visualizzare neppure le immagini
ha nel campo ALT dell'immagine la formula scritta in Ascii piano. Con questo
metodo le formule sono lente da scrivere, ma si risolvono diversi problemi.
Il tag aggiuntivo che chiama la Gif e il campo ALT non occupano molto spazio,
spesso solo una riga.
N.B.: se la l'immagine della formula non si vede, ma le immagini sono
abilitate, disattivare l'esecutore Java e ricaricare la pagina).
Questo è lo spezzone del file html che ha prodotto questa figura:
<APPLET ARCHIVE="webeq.zip" CODE="webeq.Main" WIDTH=510
HEIGHT=130>
<PARAM NAME=size VALUE=36>
<PARAM NAME=color VALUE="#ffffff">
<PARAM NAME=eq VALUE=" \statusline{Probability
of event E: Get exactly k heads in n coin flips.} {\fghilight{#00bbbb}{P(E)}}
= \statusline{Number of ways to get exactly k heads in n coin flips}
{\fghilight{#ff6600}{\left( \binom{n}{k} \right)}} \statusline{Probability
of getting heads in one flip} {\fghilight{#ff6600}{p}}^ {\statusline{Number
of heads}{\fghilight{#ff6600}{k}}} \statusline{Probability of getting
tails in one flip} {\fghilight{#ff6600}{(1-p)}}^{ \statusline{Number of
tails}{\fghilight{#ff6600}{n-k}}}">
<IMG SRC="Bernoulli_0077_19981228.gif"
ALT="P(E) = CoefficienteBinomiale(n,k)
* p^k * (1-p) ^(n-k)" NOSAVE HEIGHT=130 WIDTH=510>
</APPLET>
per un totale di circa 800 byte. Il codice che specifica la formula stessa è piuttosto piccolo (sono state inserite anche informazioni inerattive).
Per chi ha EzMath 1.1 si può vedere la stessa, in soli 84 byte:
<embed type=text/ezmath width=213 height=54 alt="P(E)=
vector(n,k) p^k (1-p)^{n-k}">
(Nota che non sono state inserite formule testo o immagini
per browser che non possiedono la plug-ing, nè spiegazioni, inoltre
il coefficiente binomiale non è ancora presente fra le funzioni
disponibili, per cui ho dovuto inserirlo come vettore. Dato che questa
formula non è già più semantica ho evitato di specificare
function
all'inizio.)
Un altro esempio:
A cross product formula
We can compute the cross
product of a pair of vectors with the determinant
Codice relativo WebEQ nel file Html:
<APPLET CODE="webeq.Main" ARCHIVE="webeq.zip" WIDTH="250"
HEIGHT="190">
<PARAM NAME=size VALUE=18><PARAM NAME=color
VALUE="#ffffff">
<PARAM NAME=eq VALUE="\mathbf{V}_1 \times \mathbf{V}_2
= \left|\array{
\arrayopts{\equalrows{false}}
\mathbf{i}
& \mathbf{j}
& \mathbf{k} \\
\frac{\partial X}{\partial u}
& \frac{\partial Y}{\partial u} & 0
\\
\frac{\partial X}{\partial v}
& \frac{\partial Y}{\partial v} & 0
} \right| ">
<IMG SRC="CrossProduct_0077_19981228.gif"
ALT="V1 Cross V2 =
| Tabella3x3((i, j, k),( derivata (X, u), derivata (Y, u), 0
),(derivata (X, v),
derivata (Y, v), 0 ) ) |"
NOSAVE HEIGHT=190 WIDTH=250> </APPLET>
In EZmath:
<embed type=text/ezmath width= 230 height=150
alt="vector V sub 1 cross vector V sub 2 =
det {
bold i,
bold j,
bold k;
partial derivative
of X wrt u, partial derivative of Y wrt u,
0;
partial derivative
of X wrt nu, partial derivative of Y wrt nu, 0
}">
(Nota che ancora non contiene formule testo o immagini
per browser che non possiedono la plug-ing)
Vedi http://www.w3.org/People/Raggett/EzMath/
by Dave Raggett Email:
<dsr@w3.org>, da cui ho tratto e tradotto
parte delle seguenti notizie.
EzMath è una plug-in per Netscape di dimensioni
ragionevoli (circa 107KB). Non sono riuscito a farla funzionare con IE3
(benchè forse si possa modificando le chiamte come ActiveX). Essa
vine chiamata in maniera simile a MathEQ, ma ci sono alcune differenze.
La formula può contenere solo la semantica e qualche informazione
su dimensione e stile dei caratteri, integrate. In base alla mia tassonomia
è una variante del metodo 4: FC2
(vedi).
La notazione è semantica ed è simile
a come si leggono le formule ad alta voce in inglese, con qualche abbreviazione.
ecco un esempio:
Nell'Html:
<embed type="text/ezmath" width= 81 height=55
alt="partial derivative of f wrt x times partial
derivative of x wrt t = partial derivative of f wrt t">
Come Viene:
Incluso nel pacchetto totalmente freeware c'è
un (veloce) editor di 119KB circa, con esempi incorporati. esso può
produrre anche MathML in uscita. Uno dei difetti
dell'EzMath è che se si deve ripetere molte volte una formula o
uno spezzone, non si può inserirla in un file esterno chiamato molte
volte. Comunque non è troppo grave, si può mettere un riferimanto
alla formula nel testo.
Ecco un confronto fra vari metodi. La formula può essere scritta
in Html col seguente codice:
<CENTER><TABLE CELLSPACING=0 CELLPADDING=0
>
<TR>
<TD>
<DIV ALIGN=right><TABLE ALIGN=LEFT >
<TR>
<TD ALIGN=CENTER VALIGN=CENTER NOWRAP>NMSE = </TD>
<TD ALIGN=CENTER NOWRAP><FONT SIZE=-2> </FONT>
<TABLE CELLSPACING=0 CELLPADDING=0 >
<TR>
<TD ALIGN=CENTER VALIGN=BOTTOM><FONT SIZE=-1>J-1</FONT></TD>
<TD ALIGN=CENTER VALIGN=BOTTOM><FONT SIZE=-1>K-1</FONT></TD>
<TD> </TD>
</TR>
<TR ALIGN=CENTER>
<TD>
<CENTER><FONT FACE="symbol"><FONT SIZE=+3>å</FONT></FONT></CENTER>
</TD>
<TD>
<CENTER><FONT FACE="symbol"><FONT SIZE=+3>å</FONT></FONT></CENTER>
</TD>
<TD VALIGN=CENTER>[G(j,k) - G'(j,k)]<SUP><FONT
SIZE=-2>2</FONT></SUP></TD>
</TR>
<TR>
<TD VALIGN=TOP>
<CENTER><FONT SIZE=-1>j = 2</FONT></CENTER>
</TD>
<TD VALIGN=TOP>
<CENTER><FONT SIZE=-1> k = 2</FONT></CENTER>
</TD>
<TD></TD>
</TR>
</TABLE>
<HR NOSHADE>
<TABLE BORDER=0 CELLPADDING=0 >
<TR>
<TD ALIGN=CENTER VALIGN=BOTTOM><FONT SIZE=-1>J-1</FONT></TD>
<TD ALIGN=CENTER VALIGN=BOTTOM><FONT SIZE=-1>K-1</FONT></TD>
<TD> </TD>
</TR>
<TR ALIGN=CENTER>
<TD>
<CENTER><FONT FACE="symbol"><FONT SIZE=+3>å</FONT></FONT></CENTER>
</TD>
<TD>
<CENTER><FONT FACE="symbol"><FONT SIZE=+3>å</FONT></FONT></CENTER>
</TD>
<TD VALIGN=CENTER>[G(j,k)]<SUP><FONT SIZE=-2>2</FONT></SUP></TD>
</TR>
<TR>
<TD VALIGN=TOP>
<CENTER><FONT SIZE=-1>j = 2</FONT></CENTER>
</TD>
<TD VALIGN=TOP>
<CENTER><FONT SIZE=-1> k = 2</FONT></CENTER>
</TD>
<TD></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE></DIV>
</TD>
</TR>
</TABLE></CENTER>
oppure in MathML:
<reln>
<eq/>
<apply>
<times/>
<ci>N</ci>
<ci>M</ci>
<ci>S</ci>
<ci>E</ci>
</apply>
<apply>
<over/>
<apply>
<sum/>
<lowlimit>
<cn>2</cn>
</lowlimit>
<uplimit>
<apply>
<minus/>
<ci>J</ci>
<cn>1</cn>
</apply>
</uplimit>
<bvar>
<ci>j</ci>
</bvar>
<apply>
<sum/>
<lowlimit>
<cn>2</cn>
</lowlimit>
<uplimit>
<apply>
<minus/>
<ci>K</ci>
<cn>1</cn>
</apply>
</uplimit>
<bvar>
<ci>k</ci>
</bvar>
<apply>
<power/>
<mfence>
<apply>
<minus/>
<apply>
<times/>
<ci>G</ci>
<mfence>
<ci>j</ci>
<ci>k</ci>
</mfence>
</apply>
<apply>
<times/>
<ci>G</ci>
<ci>'</ci>
<mfence>
<ci>j</ci>
<ci>k</ci>
</mfence>
</apply>
</apply>
</mfence>
<cn>2</cn>
</apply>
</apply>
</apply>
<apply>
<sum/>
<lowlimit>
<cn>2</cn>
</lowlimit>
<uplimit>
<apply>
<minus/>
<ci>J</ci>
<cn>1</cn>
</apply>
</uplimit>
<bvar>
<ci>j</ci>
</bvar>
<apply>
<sum/>
<lowlimit>
<cn>2</cn>
</lowlimit>
<uplimit>
<apply>
<minus/>
<ci>K</ci>
<cn>1</cn>
</apply>
</uplimit>
<bvar>
<ci>k</ci>
</bvar>
<apply>
<power/>
<mfence>
<apply>
<times/>
<ci>G</ci>
<mfence>
<ci>j</ci>
<ci>k</ci>
</mfence>
</apply>
</mfence>
<cn>2</cn>
</apply>
</apply>
</apply>
</apply>
</reln>
Oppure in EzMath:
<embed type="text/ezmath" fontsize="small" bgcolor="#C0C0C0"
width=249 height=111 alt="
NMSE = sum from j=2 to J-1 of ( sum from k=2
to K-1 of ( [G(j,k) - G'(j,k)]^2 ) ) /
sum from j=2 to J-1 of ( sum from k=2 to K-1 of ( [G(j,k)]^2 ) )
">
Cosi resa da EzMath:
Questa formula richiede approssimativamente:
<body bgcolor=white><embed type="text/ezmath" width=425 height=426 alt="equ 1:det(a sub 11,a sub 12;a sub 21,a sub 22)=a sub 11 a sub 22- a sub 21 a sub 12,equ 2:limit as x tends to infinity of integral from 0 to x wrt y of {e^y^2}=sqrt pi/2,equ 3:a^m/a^n=either a^{m-n} when m>n or 1 when m=n or 1/a^{n-m} when m<n,equ 4:s sub infinity = limit as n tends to infinity of {a sub 1 (1-r^n)}/{1-r}=a sub 1/{1-r},equ 5:function f(x)=a sub 0/2+ sum from n=1 to infinity of (a sub n cos{n pi x}/L+b sub n sin{n pi x}/L)">
Questa è l'immagine risultante in Png:
Il tutto occupa solo 524 byte nell'Html, 319 byte compresso con ACB,
l'immagine in Png occupa 1782 byte, 1338 compressa in Pic Minerva. La visualizzazione
è quasi istantanea sul mio P75.
Altra prova. Vedi uno spezzone di articolo con formule realizzate con Png, e vedi il risultato in EzMath: ArticoloParte 0082 19990102 .
EzMath è un programma ancora giovane, ed ha ancora varie limitazioni e bug. Nonostante ciò ritengo che sia il miglior metodo fra quelli disponibili (se non si devono fare formule troppo complesse).
Alcuni pregi e difetti di EzMath rispetto a MathEQ:
'P(E)=COMB(n,k)*p^k*(1-p)^(n-k)'
La visualizzazione grafica di questa formula sarebbe
potuta essere simile a quella mostrata col WebEQ, ma in realtà le
parentesi del coefficiente binomiale sono sostituite da COMB( , )
stesso.
Mathematica 3.0 avrebbe prodotto una formula perfetta.
Questo metodo richiede un interprete piuttosto sveglio, per risolvere
i problemi di visulizzazione. Il difetto prinicipale di questa sintassi
è che è assolutamente non libera, e molto poco elastica.
Comunque per formule semplici è ottima, veloce da apprendere, ed
estremamente compatta.
In teoria si potrebbe estendere l'Html per poter inserire formule in
questo modo:
<EQUATION> P(E) = COMB(n,k) * p^k * (1-p)^(n-k) </EQUATION>
o qualcosa di simile.
Si potrebbe perfino estendere l'Html con due linguaggi
differenti, uno complesso per formule interattive e molto complesse, e
uno simile a quello appena mostrato per formule semplici, che non richiede
di specificare sfondi, dimensioni di applet, ecc.
[l'idea 3 è uno sviluppo di questa]
(in italiano) anche abbreviando, e non mi sembra necessario scrivere, come in EzMath:
sum from i=1 to 39 of (x^2)
Che dà problemi con le parentesi e gli spazi.
Minse è più sintetico di EzMath, ma anche leggermente
più criptico, e sono richiesti vari caratteri extra.
Ecco una definizione visualizzata col EzMath:
Ed ecco un confronto della stessa definizione scritta in vari formati:
EzMath: deriv wrt x f(x)= limit as n tends to 0 of {{f(x+h)-f(x)}/h}
Minse: 'deriv(f(x),x)='lim('quot(f(x+h)-f(x),h),h .approach 0)
Possibile1: sx(f(x))=LIM(n,0,(f(x+h)-f(x))/h)
Possibile2: DERx(f(x))=LIM(n,0,(f(x+h)-f(x))/h)
Possibile3: DERx(f(x))=LIM(n->0,(f(x+h)-f(x))/h)
Possibile4: derivatax(f(x))=limite(n->0,(f(x+h)-f(x))/h)
Possibile5: derivata(f(x),x)=limite(n->0,(f(x+h)-f(x))/h)
Possibile6: derivata(f(x)/x)=limite(n->0,(f(x+h)-f(x))/h)
Possibile7: derivata(f(x),x)=limite(n,0,(f(x+h)-f(x))/h)
Le ultime sono possibili sintassi alternative (in
italiano). Io penso che una sintassi giusta potrebbe essere simile a queste.
Da notare che la sinteticità è importante, ma non deve mai
andare a scapito della chiarezza. Si possono accettare anche sintassi due
volte più prolisse di altre, pur che siano chiare.
Riassumendo, penso che uno dei migliori metodi per
inserire formule in documeti Html sarebbe metterli come testo Html compreso
fra due Tag, come ho mostrato in un esempio. Tali
formule sarebbero leggibili anche senza la plug-in. Potrebbero essere modificabili
all'interno dell'editor Html. Sarebbero sufficientemete sintetiche e chiare.
Volendo si poptrebbero modificare font, colori e stili dei caratteri all'interno
dell'editor Html, con semplicità. Se non lo si facesse le formule
verrebbero comunque ben rese dalla plug-in, e sarebbero ancora più
sintetiche e modificabili da un semplice editor testuale. Varianti di visualizzazione
o metodi del tutto diversi di mostrare una formula potrebbero essere espressi
prima della formula, anche una sola volta nel documento Html, in maniera
abbastanza semplice. Tali informazioni extra dovrebbero/potrebbero essere
messe fra o dentro le Tag che indicano la formula. (occorre fare prove
e esperimenti per vedere quale è la soluzione migliore).
Questa rappresentazione sarebbe a "fisarmonica":
elementare e telegrafica per formule scritte da persone poco esperte o
per casi normali, e completa e potente per i casi particolari e sofisticati.
(E se si mettesse insieme testi, formule e semplici disegni
vettoriali, come diagrammi con poche linee?
Talvolta è necessario mettere tutto insieme, anche
bitmap, riscalate e ritagliate. Per far ciò occorrono sistemi pittosto
elastici...)