Using jsMath in MoinMoin with ReStructuredText

This is not a typical post for this blog, but it was just convenient to put the following here. Feel free to skip this post if you are reading this blog for the normal content and haven't gotten here by searching for just this.

I spent a few hours at work today researching how best to add math (displayed equations) support to the docutils ReStructuredText parser for use with the MoinMoin wiki engine. I put my findings up here for the search engines to pick up in case more people need this.

The best solution today seems to be jsMath. It is more versatile than the various LaTeX -> dvi -> png solutions (and easier to set up). It is also much better supported than MathML.

Docutils, which is the library used by MoinMoin to render ReStructuredText to html, does not yet support math natively (as of version 0.6). Fortunately it can easily be extended with new directives. The only thing you need to do is add the following code to a Python file that is executed while rendering your wiki pages. The theme module is a good place, just stick the following at the bottom of your theme's .py file:

# LaTeX support
from docutils.parsers.rst import directives, roles
from docutils import nodes

def latex_directive(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine):
    latex = '\n'.join(content)
    return [nodes.raw('', '\\['+latex+'\\]', format='html')]

latex_directive.content = 1
directives.register_directive('latex', latex_directive)

def latex_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
    latex = rawtext.split('`')[1].replace('\\\\','\\')  # Restore escaped backslashes
    return [nodes.raw(rawtext, '\\('+latex+'\\)', format='html')], []

roles.register_canonical_role('latex', latex_role)

This is a bit of a hack as it uses the old style function-as-directive model, but hey, it works, and I did not even know of docutils directives until today, so working is most definitely a big plus :-) It is based on this, but simplified a whole lot due to using jsMath to render the LaTeX equations.

You also need to include

<script type="text/javascript" src="/path/to/jsMath/easy/load.js"></script>

somewhere in your html code. I put it in the page header with an ugly hack by adding the script to the output around line 680 of MoinMoin/theme/__index__.py. It can (and should) probably go in your theme's .py file somewhere so that it does not disappear when MoinMoin is upgraded. I did not bother to do this for testing purposes, though.

Now you can write :latex:`e^{i\pi} + 1 = 0` in your wiki pages and it should be rendered to \(e^{i\pi} + 1 = 0\) in the final output (which seems like a small change, but believe me, it is easier this way then double backslashing the LaTeX code in the wiki page. You can also have displaymath equations with the following syntax:

.. latex::   e^{quation} g_{oes} = here

which is turned into

\[ e^{quation} g_{oes} = here \]

The \( ... \) and \[ ... \] is picked up by jsMath and turned into beautiful equations (depending on field of work and definition of beautiful ;-) ). For non-javascript enabled browsers the code is left as is, so the equation can still be deciphered by LaTeX savvy readers. See here for examples of what jsMath can do.

So, in the end it was fairly easy to get good looking math support in MoinMoin. Hopefully docutils will come with jsMath support in the future. The new upcoming 0.5 version of Sphinx seems to do, and it is based on docutils and ReST. Shinx is a new documentation power tool for Python developers. Highly recommended to make documenting code a bit more fun.

Comments are disabled on this article due to problems with spam. Somehow spammers believe that link-spamming this page with praise for the article will send them lots of readers or google-points or something ...

Tagged as: LaTeX MoinMoin Python ReStructuredText English

The God of Small Things - Arundhati Roy

The God of Small Things er en fortelling om forbudt kjærlighet, om oppvekst og det å være barn, om varme, frodige India, og om hvordan noen få dager en gang for lenge siden kan forme livet og dagen i dag. Historien blir fortalt i begge ender, fra begynnelsen i barndommen til hovedpersonen Rahel og broren Estha, der «det forferdelige» som det hele tiden hintes om til slutt skjer, og fra slutten der Rahel kommer tilbake til India for å møte broren igjen.

Fortellingen kunne vært en kjærlighetshistorie, hadde det ikke vært for de eldgamle lovene om hvem som kan være glad i hvem, og hvor mye, som Roy skriver. Den handler om overklasse og underklasse, om kastesystemet og religion. Historien kunne på tross av det ødeleggende samfunnssystemet vært en historie om en noenlunde lykkelig barndom, hvis ikke familien det handlet om var en gammel og stolt familie, opphøyet fra samfunnet rundt, og dermed pil råtten. Jeg synes boka til tider er litt slitsom å lese siden store deler av persongalleriet i så liten grad viser empati. Det at boka ender der historien begynner, med en enkel kjærlighetshistorie, redder i stor grad helhetsinntrykket for meg.

Arundhati Roy vant den prestisjetunge Booker–prisen i 1997 for The God of Small Things. I følge noen er den altså utrolig bra. I følge meg er den helt grei. Det som trekker opp er i stor grad språket i boka som er veldig rikt og morsomt å lese i seg selv, uavhengig av handlingen. Hvorfor kan ikke alle forfattere være så flinke til å skrive, og ikke bare til å dikte fortelling?

Fjellet

Man kan ikke bare lese bøker på fjellet, særlig ikke når værgudene er i godlune

Tagged as: Arundhati Roy Bøker India

Slam - Nick Hornby

Slam handler om en ung gutt på 16 år, Sam, som plutselig får livet sitt snudd opp ned. Han ender opp med mye mer ansvar og problemer enn selv hans store helt Tony Hawk kan hjelpe ham med. Ikke det at Tony ikke hjelper til altså — sjelden har en gutteromsplakat hatt en større birolle i en bok.

Hornbys beste bok er etter min, og sikkert mange andres mening, High Fidelity. Han er inne på noe av den samme her. Han skriver om en ung mann (eller gutt i begynnelsen av denne boka) som er veldig inne i en del av ungdomskulturen, denne gangen skating. Man skjønner at forfatteren kan mer om musikk enn skating, og kanskje mer om det å være noen og tjue kontra seksten, men boka funker ganske bra likevel. Definitivt bedre enn det jeg har lest av Hornby siden jeg leste High Fidelity, selv om den kanskje ikke er helt på høyde.

Park Guel

Velkomsthilsen til turistene i Barcelona, en av Europas beste skatebyer i følge en amerikaner jeg traff på toget.

Tagged as: Bøker Nick Hornby

Sommerferie / Master of Science

Jeg er endelig ferdig med masteroppgaven og klar for en lang sommerferie. Livet er bra og blir bedre — nesten nede på hvilepuls igjen nå. Jeg er tilbake på gutterommet etter å ha flyttet fra Trondheim i helga. Det var vemodig å skulle forlate byen, men egentlig bare slitsomt når dagen kom. Utrolig bra å få hjelp fra pappa med flyttelasset.

For deg som måtte være utrolig interessert i emnet Væskebevegelse i tank koplet til skipsbevegelser så kan du se på den ferdige oppgaven her. Vann-vittig bra, om enn noe langdryg, video fra simulering kan dessuten sees under.

For oss andre som (i alle fall for øyeblikket) er mer interessert i ferie enn hydrodynamikk så blir det for min del 25 dager interrail f.o.m. onsdag, og så norgesferie/leilighetsjakt i Oslo. Begynner ikke å jobbe før langt ute i august, altså skikkelig lang ferie. Digg!

By popular request (les Øyvind spurte). Sannsynligvis en film det ikke går to av på dusinet på YouTube ...

Tagged as: Ferie Skole Sloshing Tormod Trondheim

Hang Drum

Kom over et et kult alternativt instrument, Hang Drum, på YouTube (via reddit). Mulig mye av det som som er spilt inn med det høres ganske likt ut, men videoen under synes i alle fall jeg var flott å slappe av til. Utrolig hva folk får til.

La du merke til billigvarianten av støydemping via kreativ bruk av eggekartonger?

Tagged as: Hang Drum Musikk reddit YouTube