Archivio

Archivio per 29 novembre 2009

Abilitare sintassi LaTeX su Mediawiki

29 novembre 2009 Alberto Nessun commento

Ciao a tutti, chi di voi non ha mai avuto sul proprio spazio web un motore wiki? chi di voi ha mai voluto abilitare la sintassi LaTeX su questo spazio?

Forse quasi nessuno… in ogni caso volevo scrivere qui i passi che si devono fare per abilitare la sintassi LaTeX in un motore wiki. Questo abilitazione vi consente di inserire direttamente nella pagina delle formule scritte nel linguaggio LaTeX, noto ai matematici, per scrivere delle formule con la giusta formattazione. LaTeX è, di fatto, lo standard de facto per la scrittura di articoli scientifici di matematica, fisica, informatica, etc.
Questa la configurazione server/wiki su cui è stato testato:

  • Server su servizio di hosting gratuito (altervista)
  • MediaWiki 1.15.1 (motore opensource con il quale viene fatta girare Wikipedia)

Nel mio caso dato che il server non è gestito direttamente da me, io posso solo uplodare file e installare applicativi per il web (drupal, joomla, wordpress, MediaWiki, dokuwiki…) non mi è consentito di installare il compilatore LaTeX, quindi per poter fare il rendering delle formule è necessario appoggiarsi su un servizio esterno che faccia il rendering per me e poi mi mandi il risultato. Sul sito di MediaWiki ho trovato questo tutorial: LaTeX on a shared host, che come si legge

It is possible to run LaTeX under a shared host. It might not be beautiful, but it works. If you wish to do this, be aware that this is not an official hack.

In effetti le formule non sono bellissime da vedere ma almeno ho delle formule scritte come si comanda. Come si legge nella pagina io sono nel caso

If you don’t have CGI support, use a public mimeTeX server

I passi da fare sono i seguenti

  • Andare sul server e prendere il file $WikiPath/includes/Math.php, dove $WikiPath è il path della vostra installazione. Alla fine del file c’è questa funzione php:

    public static function renderMath( $tex, $params=array() ) {
    global $wgUser;
    $math = new MathRenderer( $tex, $params );
    $math->setOutputMode( $wgUser->getOption('math'));
    return $math->render();
    }

    a questa funzione si deve aggiungere il percorso del servizio che farà il rendering delle formule per voi e che poi vi manderà il risultato. I percorsi che potete inserire sono:

    http://www.forkosh.dreamhost.com/mimetex.cgi

    http://www.forkosh.dreamhost.com/mathtex.cgi


    la riga da aggiungere è la seguente:

    return '< img class="tex" src="percorso_che_volete?' . rawurlencode($tex) . '" alt="LaTeX: ' . htmlspecialchars($tex) . '">';

    al posto di percorso_che_volete dovete mettere uno dei due, la funzione quindi diventerà:

    public static function renderMath( $tex, $params=array() ) {
    return '< img class="tex" src="percorso_che_volete?' . rawurlencode($tex) . '" alt="LaTeX: ' . htmlspecialchars($tex) . '">';
    global $wgUser;
    $math = new MathRenderer( $tex, $params );
    $math->setOutputMode( $wgUser->getOption('math'));
    return $math->render();
    }

    nella riga che ho aggiunto si deve togliere lo spazio tra return '< e img class="tex", che ho dovuto mettere altrimenti mi veniva restituita una formula, ricordatevi di tenere il ? dopo l'url

    Quando avete fatto le modifiche prendete il file e rimettetelo sul server sovrascrivendo quello precedente

  • Prendete il file $WikiPath/LocalSettings.php e abilitate la sintassi LaTeX andando a cercare la righe

    ## If you have the appropriate support software installed
    ## you can enable inline LaTeX equations:
    $wgUseTeX = false;

    cambiandole in

    ## If you have the appropriate support software installed
    ## you can enable inline LaTeX equations:
    $wgUseTeX = true;

    anche in questo caso prendete il file, rimettelo sul server sovrascrivendo quello vecchio.
  • A questo punto potete introdurre le forumle LaTeX scrivendo nel codice della pagina

    < latex>
    formula
    < /latex>

    Anche in questo caso dovete togliere lo spazio tra < e latex (anche per il tag di chiusura) che ho dovuto mettere altrimenti non avreste visto il tag.

Spero che questo possa tornare utile a qualcuno.

Ciao Alberto

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
Categorie:LaTeX, Notizie Tag: