MathJAX, czyli jak wykorzystać LaTeX na… stronie internetowej
Ostatnio przeglądając strony matematyczne, natknąłem się na dość ciekawy „ficzer”. Jeżeli kiedykolwiek chciałeś znaleźć sposób na reprezentację wzorów matematycznych na swoim serwisie internetowym, to jest to notka dla Ciebie. Takie coś umożliwia AJAX-owa biblioteka MathJAX zamieniająca kod napisany w języku LaTeX na piękne wzory matematyczne.
Niewątpliwą zaletą powyższego projektu jest to, że skrypt można nie tylko standardowo pobrać i go rozpakować w katalogu strony (kilkunastomegowa paczka), ale także można podlinkować się pod serwer CDN. Ta druga opcja może okazać się prywatna dla osób prowadzących blogi w serwisach, które nie pozwalają na instalację zewnętrznych skryptów. Wszystko wygląda podobnie jak w przypadku jQuery. Projekt jest dystrybuowany na licencji Apache 2.0, ale aby korzystać z dobrodziejstwa serwera CDN trzeba się zapoznać z warunkami użytkowania. Wszystko jest opisane tu.
Po wstawieniu odpowiedniego kodu <script … /> w sekcji <meta> możemy korzystać z dobrodziejstw projektu. W miejscu, w którym chcemy, aby ukazały się nasze wzory matematyczne wstawiamy na przykład (odpowiednik w TeX $):
<script type=”math/tex; mode=display”>S = { X: X notin X }</script>
lub jeżeli chcemy, aby wzór był w tej samej linii co tekst (odpowiednik $):
<script type=”math/tex”>frac{n}{n} cdot frac{n-1}{n} cdot ldots cdot frac{n-k+1}{n} = frac{n!/(n-k)!}{n^k}</script>
Możemy także skonfigurować MathJAX w ten sposób, aby tekst pojawiający między $ lub $ był interpretowany jako kod LaTeX. Na stronie projektu można znaleźć dokumentację oraz sample i kilka tutoriali. Poza językiem LaTeX można także korzystać z języka MathML.
Komu ta biblioteka się nie spodoba? Okazuje się, że… puryści ślęczący godzinami nad unikaniem wszystkich błędów wytkniętych im przez W3C Validator mogą być lekko rozczarowani. Dlaczego? Skorzystajmy ze środowiska cases, którego nieodłącznym elementem jest znak & i przeprowadźmy walidację. Dlatego mimo, że staram się przestrzegać tego standardu to stosując się zdrowym rozsądkiem ignoruję takie coś ; )