torstai 29. syyskuuta 2016

Verkkodokumentit ja matematiikan kaavat

Matemaattisten kaavojen sisällyttäminen verkkodokumentteihin ei vielä nykyäänkään ole ongelmatonta, vaikka vuosien kuluessa on moniakin ratkaisuja esitetty.  Kirjoittamisessa on kaksi päävaihtoehtoa: symbolien poimiminen valikosta tai kaavan koodaaminen tavallisilla kirjoittuvilla merkeillä. Tämän jälkeen tarvitaan jokin ohjelma (jota käyttäjä ei välttämättä näe), jolla kaavasta muodostetaan dokumenttiin liitettävä kuva tai jolla tarvittavat fontit liitetään dokumenttiin.

Tavalliselle käyttäjälle ehkä helpoimmin omaksuttava kirjoittamistapa on jokin valikoita käyttävä kaavaeditori. Jos kirjoitettavaa on vähän enemmän, kaavojen koodaaminen on nopeampaa, mutta aloituskynnys on korkeampi. Ammattimatemaatikot yleensä koodaavat kaavat käyttäen LaTeX-järjestelmää; ks. esim.  https://www.latex-project.org/ tai tekemääni LaTeX-opasta http://matta.hut.fi/matta/latexopas/.

Tarve kaavojen littämiseen sähköisiin dokumentteihin on lisääntymässä.  Matematiikan ylioppilaskokeen muuttuminen sähköiseksi keväällä 2019 edellyttää yksinkertaista ja helposti ymmärrettävää ratkaisua kaavojen kirjoittamiseen.  Valintaa ei helpota se, että sillä on kytköksensä kokeessa käytettäviin laskentaohjelmistoihin. Sama ongelma on sähköisissä oppimateriaaleissa, mikäli ne ovat muutakin kuin sähköisiä sivunkääntöympäristöjä.

Tähän blogiin olen kirjoittanut kaavat LaTeXilla koodaamalla (esimerkiksi http://simokivela.blogspot.fi/2016/08/kokeellisen-matemaatikon-painajainen.html). Seuraavassa kuvaan, miten tämä on tehty.

LaTeX on erittäin monipuolinen ja paljon erilaisia laajennuksia sisältävä järjestelmä dokumenttien — yksittäisistä kaavoista kirjoihin — kirjoittamiseen. Sen avulla voidaan hallita kaavojen kirjoittamisen ohella kuvien liittäminen tekstiin, sisäiset ja ulkoiset linkitykset, sisällysluettelot ja hakemistot, haluttaessa myös viivakuvioiden piirtäminen (väreineen), nuotit, šakkilaudan kuvat jne.

Muutamien kaavojen kirjoittaminen verkkodokumenttiin (kuten tähän blogiin) ei kuitenkaan edellytä syvällistä LaTeXin koristeluihin ja kummallisuuksiin perehtymistä. Ainoa tieto, joka tarvitaan, on tavallisten matemaattisten kaavojen koodaus. Tekstirivillä olevat kaavat (inline-kaavat) sijoitetaan merkkien $\backslash(\,...\,\backslash)$ väliin (tai $ \$\,...\,\$ $), erillisillä kaavariveillä olevat (display-kaavat) merkkien $\backslash[\,...\,\backslash]$ väliin. Kaiken tämän olen kirjoittanut muun tekstin sekaan.

Koodin muuntaminen dokumentissa näkyviksi kaavoiksi perustuu MathJax-ohjelmistoon (https://www.mathjax.org/), joka otetaan käyttöön liittämällä verkkodokumenttiin (HTML-dokumenttiin) muutaman rivin skriptimäärittely. Minulla on Googlen blogiympäristössä (Malli → Muokkaa HTML-koodia) blogin koodin <head>-osioon lisättynä seuraavat rivit:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax:
  {inlineMath: [['$\$ $','$\$ $'], ['$\backslash\backslash($','$\backslash\backslash)$']]}});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?
  config=TeX-AMS-MML_HTMLorMML">
</script>

MathJax-ohjelmisto haetaan tässä osoitteesta http://cdn.mathjax.org/mathjax/latest/.  Config-rivi ilmaisee, että tekstirivillä olevat kaavat (inline-kaavat) voidaan sulkea joko merkkien $ \$\,...\,\$ $ tai $\backslash(\,...\,\backslash)$ sisään. MathJax-ohjelmisto on mahdollista asentaa myös omalle palvelimelle tai omalle koneelle, jolloin verkkoyhteyttä ei tarvita.

Kaavojen koodeja voi katsella klikkaamalla  valmiissa dokumentissa hiiren kakkosnäppäimellä kaavaa (esimerkiksi blogipostauksessani), jolloin näkyviin tulee valikko. Tästä voi valita nähtäväksi esimerkiksi kaavan tekemiseen tarvitun koodin (Show Math As → TeX Commands). Muitakin vaihtoehtoja on. Valikon avulla voi myös tehdä asetuksen, jolla kaavan saa suurennettuna (Math Settings → Zoom Trigger → ...). Tämä on suureksi avuksi, jos esimerkiksi kaavan pienikokoisia indeksejä on vaikeata erottaa.

3 kommenttia:

tfmatik kirjoitti...

Hyvä - ja perin tarpeellinen ohje!

tfmath kirjoitti...

Löysin muuten yhden ratkaisun tuohon että saa LaTeXin renderöitymään myös mobiilissa. (Ongelmana on että työpöytäversio ja mobiiliversio näyttäisi käyttävän eri html-headeria.) Kun menee Bloggerissa Malli -> Mobiililaite (klikkaa ratasta) -> Valitse mobiilimalli (Omavalintainen) -> Tallenna. Tämän pitäisi generoida mobiiliinheaderi työpöytäversion pohjalta ja mathjaxin asettelut sitä myötä.
Lähde: https://kristerw.blogspot.fi/2016/07/using-mathjax-in-blogger.html

Simo Kivelä kirjoitti...

Tehty. Kiitos!