Licencja Creative Commons

Autorem poniższego opracowania jest dr Piotr A. Dybczyński z Instytutu Obserwatorium Astronomiczne UAM w Poznaniu.


Kilka słów o ASCIIMathML


`d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h`

Wyświetlenie ładnego wzoru matematycznego na stronie www jest nietrywialne. Dotąd najczęściej po prostu wklejało się obrazki. Od 1995 roku rozwijany jest język MathML dzięki któremu stopniowo rosną możliwości umieszczania treści matematycznych na stronach www. Dziś nowsze przeglądarki potrafią już wyświetlić matematyczne "krzaczki".

Składnia tego języka jest jednak dość kłopotliwa i w praktyce wymaga jakiegoś dedykowanego edytora. Stąd powstał pomysł opracowania prostszego zapisu wzorów, przy pomocy zwykłego tekstu ASCII.

Peter Jipsen z Chapman University zaproponował sposób zapisu wzorów i opracował w 2004 skrypt w Javie do jego przetłumaczenia na MathML.

Ponieważ taki sposób zapisu wzorów zyskał popularność a język MathML jest sukcesywnie wprowadzany przez W3C do standardu więc Peter rozwija swój pomysł, dodając nowe funkcjonalności, jak np. interpretowanie klasycznej notacji LaTeX-owej.

Więcej na stronie domowej projektu ASCIIMathML.

Niezależnie opracowano zestaw skryptów w Javie, który potrafi poprawnie wyświetlać wzory matematyczne na dowolnej przeglądarce. To projekt MathJax. Można ten silnik Javy zainstalować na swoim serwerze www lub po prostu na stronie odwołać się do skryptu udostępnianego sieciowo w ramach usługi typu "Content Delivery Network".

Od wersji 2.0 silnik MathJax wyposażony został w możliwość bezpośredniego czytania i interpretowania składni ASCIIMathML, co upraszcza ogromnie całe zagadnienie. W najprostszej wersji na swojej stronie umieszczamy odwołanie do skryptu MathJax dostępnego przez CDN i po prostu wplatamy w HTML polecenia ASCIIMathML.

W wielu miejscach na portalach edukacyjnych czy naukowych silnik MathJax jest domyślnie uaktywniany w nagłówkach stron i dokładnie takie rozwiązanie proponuje autor dodatku do PmWiki: AMmathjax. Na serwerze z którego oglądasz tę stronę silnik MathJax jest zainstalowany lokalnie i aktywowany domyślnie w nagłówkach wszystkich stron PmWiki.

Efekt? Po wpisaniu na edytowanej stronie PmWiki:


{$ a = sum sqrt x AA $}

{$ +-sqrt(n) x^2 or a_(m n) or a_{m n} or (x+1)/y or sqrtx$}

{$ sin alpha $}

Example: Solving the quadratic equation. Suppose a {$x^2+b x+c=0$} and {$a!=0$}. We first divide by {$a$} to get {$x^2+b/a x+c/a=0$} Then we complete the square and obtain {$x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0$}. The first three terms factor to give {$(x+b/(2a))^2=(b^2)/(4a^2)-c/a$}. Now we take square roots on both sides and get {$x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a)$}. Finally we move the {$b/(2a)$} to the right and simplify to get the two solutions: {$x_(1,2)=(-b+-sqrt(b^2-4a c))/(2a)$}

(Przykład zaczerpnięty ze strony: http://www1.chapman.edu/~jipsen/mathml/asciimath.html)

dostajemy na ekranie:

` a = sum sqrt x AA `

` +-sqrt(n) x^2 or a_(m n) or a_{m n} or (x+1)/y or sqrtx`

` sin alpha `

Example: Solving the quadratic equation. Suppose a `x^2+b x+c=0` and `a!=0`. We first divide by `a` to get `x^2+b/a x+c/a=0` Then we complete the square and obtain `x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0`. The first three terms factor to give `(x+b/(2a))^2=(b^2)/(4a^2)-c/a`. Now we take square roots on both sides and get `x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a)`. Finally we move the `b/(2a)` to the right and simplify to get the two solutions: `x_(1,2)=(-b+-sqrt(b^2-4a c))/(2a)`


Więcej przykładów i opis syntaktyki ASCIIMathML:


Licencja Creative Commons