Siirry pääsisältöön

TeXZillan käyttäminen Eleventyllä

Julkaistu Aiheet: Suomeksi, Matematiikka, MathML, LaTeX.

Esitietovaatimukset:

  • ymmärrys HTML-sivujen tekemisestä Eleventyllä (englanniksi)
  • ymmärrys LaTeX-koodin kirjoittamisesta
  • ymmärrys yksinkertaisten pakettien käyttämisessä web-sovelluksissa.

Paketin asennus ja käyttöönotto

Asenna TeXZilla projektiisi kommennolla npm install texzilla. Sitten lisää paketti käyttöön .eleventy.js-tiedostossasi (tai muun nimisessä config-tiedostossa):

const TeXZilla = require("texzilla");

module.exports = function (eleventyConfig) {
eleventyConfig.addFilter("math", (latex) => {
return TeXZilla.toMathMLString(latex, true, false, false);
});

.toMathMLString-metodin käyttö kuvaillaan TeXZillan GitHub-sivuilla (englanniksi):

TeXZilla.toMathMLString = function(aTeX, aDisplay, aRTL, aThrowExceptionOnError)

  • aTex on itse LaTeX-kaava, joka on yllä olevassa funktiossa latex.
  • aDisplay määrittelee, että näytetäänkö kaava leipätekstinä vai omana block-sisältönään. Vaihtoehdot true tai false.
    • Oma asetus true eli kaikki kaavat ovat block-sisältöä.
  • aRLT määrittelee, onko lukemissuunta oikealta vasemmalle. Vaihtoehdot true tai false.
    • Oma asetus false eli lukemissuunta on vasemmalta oikealle.
  • aThrowExceptionOnError määrittelee, tuleeko virheilmoitus, jos LaTeX-koodin muokkaamisessa MathML-koodiksi tapahtuu virhe. Vaihtoehdot true tai false.
    • Oma asetus false eli en halua erillisiä virheilmoituksia.

Filtterin käyttö

Filtterin käyttö onnistuu tuttuun tapaan kirjoittamalla ensin LaTeX-koodilla matemaattinen lauseke, jonka haluaa MathML-koodiksi.

{{ "\\frac{1}{\\sqrt{2}}" | math | safe }}

Erikoisuutena on, että LaTeX-koodissa täytyy olla kaksoiskenoviivat. Esimerkiksi \\sqrt{}. Tämän lisäksi pitää käyttää myös filtteriä safe, joka vie tekstin sellaisenaan filtterille. Muuten ei saada oikeaa lopputulosta.

Lopputulos

Kaiken tämän työn jälkeen voidaan kirjoittaa matematiikan kaavoja MathML-koodilla Eleventyllä: 12.\frac{1}{\sqrt{2}}.

Jatko

Tämä ei ole suoraviivaisin tapa saada matemaattista sisältöä Eleventyllä, mutta se on ihan hyvä alku. Parhaimmillaan haluaisin, että voin kirjoittaa LaTeX-koodia sellaisenaan tekstin sekaan miettimättä, mitä filtteriä käytän. Nyt minun pitäisi tehdä vielä erikseen filtteri, joka tekee kaavoista leipätekstin sekaan sopivia tekstejä.

Siinä olisi omat haasteensa, joten palaan siihen myöhemmin.