venerdì 5 marzo 2010

Inserire formule latex nelle immagini create con Inkscape

A volte, quando si scrive un articolo scientifico, si guarda anche all'eleganza e all'aspetto delle cose. Tra i fattori che contribuiscono all'eleganza espositiva in un articolo, quello al quale io tengo di più è la coerenza nello stile. Se nel corpo del testo utilizzo un particolare font per un simbolo o una formula, ci tengo che lo stesso font venga utilizzato anche nelle figure e nelle tabelle in cui quel simbolo o quella formula viene richiamata. Se, per quanto riguarda le tabelle, questo risultato è semplice da ottenere (dato che le tabelle si realizzano comunque in latex), per le figure si potrebbe anche uscire pazzi.

Solitamente, per realizzare le figure da inserire nei miei articoli, utilizzo Inkscape. La versione che ho attualmente installata sulla mia Sabayon è la 0.47. In questa versione, non risulta attivo il supporto al randering di formule latex all'interno delle immagini. Questo strumento è invece utilissimo proprio per ottenere il risultato suddetto. Inserendo direttamente nell'immagine il codice latex utilizzato nel corpo del testo, siamo assolutamente certi che la formula o il simbolo saranno perfettamente uguali anche nell'immagine che stiamo creando. Ci sono due metodi per inserire in Inkscape questa nuova funzionalità.

Il primo metodo, che è quello che io ho utilizzato finora, consiste nel ricompilare Inkscape con la USE flag postscript attivata. E' inoltre necessario ricompilare pstoedit con la USE flag plotutils attivata e python con la USE flag tk attivata:
$ sudo echo media-gfx/inkscape postscript >> /etc/portage/package.use
$ sudo echo media-gfx/pstoedit plotutils  >> /etc/portage/package.use
$ sudo echo dev-lang/python tk >> /etc/portage/package.use
$ sudo emerge python && emerge inkscape
Fatto ciò, riavviando Inkscape, troveremo la nuova voce "Latex formula" nel menu Extension->Render. Cliccandoci, si aprirà una finestra nella quale potremo inserire il nostro codice latex. Inkscape provvederà a farne il rendering e a inserire la formula o il simbolo definito nell'immagine in forma vettoriale. Da quel momento in poi, potremo manipolarla come un qualunque altro oggetto della nostra immagine.

Uno dei problemi di questo approccio è che non è possibile modificare la formula latex ,una volta che questa è stata inserita. Dobbiamo cancellare e rifare tutto da capo. Il secondo metodo che vi propongo risolve anche questo problema e consiste semplicemente nell'installare una estensione di Inkscape, di nome TexText, che trovate qui. Scaricate l'ultima versione del pacchetto, scompattate il suo contenuto in ~/.config/inkscape/extensions e assicuratevi sempre di aver compilato pstoedit con la USE flag plotutils attivata. In questo caso, riavviando Inkscape, troverete una nuova voce TexText nel menu Extension, dal quale inserire il vostro codice latex. L'oggetto ottenuto dal rendering può essere modificato selezionandolo e richiamando nuovamente la funzionalità TexText. Meglio di così?