martedì, luglio 24, 2007

Questo blog non è più mantenuto

Ora sono felice proprietario di un dominio tutto mio:


e di un blog pubblicato su wordpress:

lunedì, maggio 21, 2007

gedit: un editor per LaTeX

Fino a non molto tempo fa utilizzavo per la stesura dei documenti in LaTeX un programmino, derivato da Bluefish, un certo winefish, un editor di codice LaTeX puro, non sullo stile di LyX (non provo avversione per lui, ma è scritto in QT e finchè sono giovane e forte preferisco gli accrocchi GTK).

Winefish ha due caratteristiche che mi piacciono davvero tanto: con la pressione di un tasto crea il file pdf con pdflatex e con un altro lo visualizza con evince, quando si inizia a scrivere un comando LaTeX appaiono il possibile completamento.
Però gli manca una utilità che ritengo fondamentale: la correzione ortografica al volo. Eh, sì! Perchè trovo davvere un po' fastidioso trovare scritto in un documento a volte "perché" e a volte "perchè", e imbattermi in parole come "documetno".
Da una breve sbirciata sul forum del progetto (la richiesta era già stata fatta, meno male! perchè quando tento di scrivere in inglese sudo come un beduino del deserto a cammello), risulta che la funzionalità non verrà mai implementata perchè ritenuta troppo onerosa in termini di lavoro di programmazione.

Questa bella funzione della correzione ortografica al volo gedit, l'editor di testi predefinito di gnome, ce l'ha. Quindi perchè non sfruttarla e insegnare a gedit le cose che ancora non sa fare?

snipplet

Prima di tutto concentriamoci sui suggerimenti dei possibili comandi: snipplet è la soluzione più vicina disponibile al comportamento di winefish per il nostro problema. È necessario attivare il plugin dalle preferenze di gedit.

Il comportamento non è proprio lo stesso. In winefish si inizia a scrivere il comando, ad esempio \docu, e verrà proposto il possibile completamento \documentclass. Con gedit è possibile impostare un trigger, cioè un gruppo di lettere, cui verrà sostituito il comando LaTeX desiderato dopo la pressione del taasto TAB.

Ad esempio, nella finestra di configurazione di snipplet, si può aggiungere una nuova combinazione chiamata "Begin Document" per il gruppo LaTeX, inserendo come tab trigger "doc":
\\begin{document}
${1:Document body...}
\\end{document}

All'interno di un file con estensione .tex è possibile scrivere doc e premere TAB, quanto scritto verrà sostituito con:
\begin{document}
Document body...
\end{document}

"Document body..." sarà selezionato, in questo inizieremo a scrivere il contenuto dell'articolo nella posizione corretta.

Un altro possibile snippet è quello per la definizione della classe di documento. Si può creare una nuova voce nella configurazione di snippet chiamandola "Document Class" e impostando come tab trigger "dc":
\\documentclass[${1:a4paper, 12pt}]{${0:article}}

La scritta "dc" verrà sostituita, dopo avere premuto TAB, con:
\documentclass[a4paper, 12pt]{article}

in cui "a4paper, 12pt" è selezionato in modo da poterlo modificare; se si è contenti di "a4paper, 12pt", ma si vuole modificare "article" è sufficiente premere TAB e la selezione passerà alla scritta "article".

È possibile inserire quanti snippet si vuole e personalizzarli nei modi preferiti.


strumenti esterni

Da qualche versione gedit è distribuito con un altro plugin interessante: strumenti esterni, che
Esegue comandi esterni e script della shell.

Dopo averlo attivato dal pannello delle preferenze di gedit è possibile configurare le azioni esterne attraverso il menu Strumenti -> Strumenti esterni; le azioni sono il risultato di veri e propri shell-script, perciò è possibile usare qualsiasi programma disponibile sul sistema.

Per creare un pdf da un sorgente LaTeX ho aggiunto un'azione "Genera pdf da un documento LaTeX", con la descrizione "Genera un file pdf da un documento LaTeX con pdflatex" e la scorciatoia F11. I comandi per ottenere il risultato vanno inseriti nell'apposito spazio Comando/i (ma tu guarda!):
#!/bin/sh
cd $GEDIT_CURRENT_DOCUMENT_DIR
if file $GEDIT_CURRENT_DOCUMENT_NAME | grep "LaTeX 2e document text" > /dev/null 2>&1 ; then
pdflatex $GEDIT_CURRENT_DOCUMENT_NAME
else
echo "Not a Latex file"
fi

Questo script controlla con l'utilità file che il file sia effettivamente un sorgente LaTeX e poi genera il pdf con pdflatex.
Attenzione a impostare l'Input a Niente (l'accesso al file è ottenuto attraverso la variabile $GEDIT_CURRENT_DOCUMENT_NAME) e a redigere l'Output a Inserisci nel pannello di output o non potremo vedere eventuali errori o avvertimenti dello script.

Un'altro script molto utile serve a visualizzare il documento pdf ottenuto in un visualizzatore pdf. Il nuovo strumento l'ho chiamato "Visualizza pdf di questo documento LaTeX", la sua descrizione è "Visualizza il pdf creato con pdflatex da un documento LaTeX" e la sua scorciatoia è "SHIFT+F11". Lo script controlla che il file sia un sorgente LaTeX e che sia stato compilato in precedenza con pdflatex, in caso contrario non fa nulla e ritorna l'appropriato avvertimento:
#!/bin/bash
cd $GEDIT_CURRENT_DOCUMENT_DIR
if file $GEDIT_CURRENT_DOCUMENT_NAME | grep "LaTeX 2e document text" > /dev/null 2>&1 ; then
PDF_NAME=${GEDIT_CURRENT_DOCUMENT_NAME%.*}.pdf
if [ -e $PDF_NAME ] ; then
evince $PDF_NAME &
else
echo "The pdf document doesn't exist"
fi
else
echo "Not a Latex file"
fi

Anche per questo script è necessario impostare l'Input a Niente e l'Output a Inserisci nel pannello di output.

Questo è tutto...
Ciao, ClaudioT.

mercoledì, novembre 22, 2006

PDF nel browser senza Adobe Acrobat Reader

Subito una domanda... perché non installare il reader di Adobe?
La mia risposta è questa: perché Acrobat Reader per Linux è qt, sul portatile non ho installato le librerie qt nè ho intenzione di installarle per ora, perché le qt hanno bisogno di un tema per apparire belle (e i temi già pacchettizzati mi chiedono di installare KDE che non voglio), perché le applicazioni qt sono poco integrate in GNOME, perché GNOME ha già un suo bel visualizzatore pdf-gs-dvi che si chiama evince e che fa quel che mi serve senza funzioni che non utilizzo (avanti e indietro di una pagina, inizio e fine documento, cerca nel testo...).
Innanzitutto bisogna installare il plugin per firefox mozplugger, disponibile sui repositories di Ubuntu (si porterà dietro m4, se non è installato).
Questo plugin non fa altro che lanciare un'altra applicazione e incastrarla nella finestra di firefox. Mozplugger gestisce un sacco di formati: audio, video, documenti di qualsiasi tipo... decisamente troppa roba per le mie esigenze.
Perciò editiamo il file /etc/mozpluggerrc in modo da fargli maneggiare solo i formati che vogliamo noi: pdf, gs e dvi.
Il file di configurazione è diviso in sezioni; commentiamo con il simbolo # posto a inizio riga tutte le linee della sezione ### MPlayer, ### Totem, ### OpenOffice, e ### GV, ma non la sezione ### Acrobat Reader: non abbiamo il reader installato, ma questa sezione contiene delle opzioni utili anche per le altre applicazioni che possono essere usate per visualizzare i pdf. Lasceremo non commentata, oltre alla sezione ### Acrobat Reader, anche la sezione ### Helpers.
A seguire c'è l'elenco dei tipi MIME che il plugin può supportare. Commentiamo tutti i plugin della sezione ### Video ### e della sezione ### Audio ###. A me piace usare il plugin per mozilla (e firefox) di totem, una alternativa altrettanto valida è il plugin per mplayer (mplayerplug-in).
Nella sezione ### Documents ### ho commentato tutte le linee tranne quelle relative a questi tre tipi MIME:
application/pdf:pdf:PDF file
application/x-pdf:pdf:PDF file
text/pdf:pdf:PDF file
text/x-pdf:pdf:PDF file

application/x-dvi:dvi:DVI file

application/x-postscript:ps:PostScript file
application/postscript:ps:PostScript file

Il plugin dovrà appunto gestire solo files pdf, dvi, e postscript.
L'ultimo cambiamento che ho effettuato è stato quello di modificare la linea repeat noisy swallow(evince) fill: evince "$file" in repeat noisy swallow(evince) fill: evince -w "$file" e di aggiungerla al tipo MIME che non l'aveva (application/x-dvi:dvi:DVI file). L'opzione -w serve per eseguire evince come pre-visualizzatore (in parole spicce, non fa vedere la barra dei menu).

Prima di avviare firefox (ma soprattutto se l'avete già avviato prima di sistemare il file mozpluggerrc) entrate nella directory .mozilla/firefox all'interno della vostra home e cancellate il file pluginreg.dat.

Ecco che ora posso visualizzare i pdf e i ps nel browser:


Per fare una prova si può semplicemente eseguire una ricerca in google con linux filetype:pdf e linux filetype:ps.
Ciao, ClaudioT.