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 funktiossalatex
.aDisplay
määrittelee, että näytetäänkö kaava leipätekstinä vai omana block-sisältönään. Vaihtoehdottrue
taifalse
.- Oma asetus
true
eli kaikki kaavat ovat block-sisältöä.
- Oma asetus
aRLT
määrittelee, onko lukemissuunta oikealta vasemmalle. Vaihtoehdottrue
taifalse
.- Oma asetus
false
eli lukemissuunta on vasemmalta oikealle.
- Oma asetus
aThrowExceptionOnError
määrittelee, tuleeko virheilmoitus, jos LaTeX-koodin muokkaamisessa MathML-koodiksi tapahtuu virhe. Vaihtoehdottrue
taifalse
.- Oma asetus
false
eli en halua erillisiä virheilmoituksia.
- Oma asetus
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ä:
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.