mercoledì 24 ottobre 2012

AUCTeX: parsing automatico di tutti i pacchetti LaTeX presenti nel sistema

Fra le miriadi di funzioni disponibili in AUCTeX, il pacchetto per Emacs per la composizione di documenti *TeX, c'è la possibilità di effettuare il parsing automatico di tutti i pacchetti *TeX presenti nel proprio sistema. La comodità di questa funzione è che Emacs in questo modo conoscerà tutti i comandi (e relativa sintassi: numero di opzioni e argomenti) definiti da tutti i pacchetti analizzati. Quando in un sorgente LaTeX caricherete uno dei pacchetti analizzati, in Emacs sarà possibile utilizzare C-c RET o C-c C-m per inserire i comandi conosciuti (e Emacs vi proporrà anche il giusto numero di opzioni e argomenti obbligatori). Purtroppo non sono tutte rose e fiori, all'inizio ho detto un'imprecisione: non va bene per tutti i pacchetti, infatti l'analisi sintattica dà il meglio di sé con pacchetti non troppo complicati e AUCTeX attualmente non è in grado di comprendere la sintassi di LaTeX3. Quindi per questi pacchetti i risultati non saranno quelli attesi.

Si può fare questo (mezzo) prodigio utilizzando i comandi TeX-auto-generate e TeX-auto-generate-global. La prima funzione, eseguibile dentro Emacs con M-x TeX-auto-generate, richiede l'inserimento del file di stile di classe *TeX da analizzare (oppure della cartella in cui cercare ricorsivamente questi file) e della cartella in cui andare a salvare le informazioni (per default il valore della variabile TeX-auto-private che per default dovrebbe valere "~/.emacs.d/auctex/auto").

Il secondo comando, eseguibile dentro Emacs con M-x TeX-auto-generate-global, analizza tutti i file presenti nelle cartelle elencate nella variabile TeX-macro-global e salva le informazioni nella cartella indicata dalla variabile TeX-auto-global (che dovrebbe valere "/var/lib/auctex/emacsXX", con al posto di XX il numero di versione di Emacs). La variabile TeX-macro-global deve contenere il percorso delle cartelle in cui sono presenti, ricorsivamente, i pacchetti *TeX in uso. Quindi una buona idea è quella di inserire nell'elenco, per esempio, la cartella /usr/local/texlive/2012/texmf-dist/tex/ o qualunque sia la cartella contenente i file di stile e di classe. Poiché generalmente la cartella in cui Emacs scriverà le informazioni (/var/lib/auctex/emacsXX in maniera predefinita) è una cartella di sistema, non accessibile in scrittura all'utente corrente se non è amministratore, è necessario eseguire questa funzione dentro una sessione di Emacs avviato con i permessi di amministratore. In alternativa si può semplicemente eseguire da terminale il seguente comando:
sudo emacs -batch -f TeX-auto-generate-global
che esegue il comando, con i permessi di amministratore, senza aprire una nuova finestra di Emacs. Può essere utile eseguire questo comando ogni volta che si aggiorna AUCTeX o che vengono aggiornati i pacchetti della propria distribuzione *TeX. Si noti, però, che l'operazione può richiedere diversi minuti e un elevato consumo della CPU (Emacs deve leggere, interpretare e scrivere alcune migliaia di file), anche se le esecuzioni della funzione successive alla prima (se sono cambiati solo pochi pacchetti e non è stato aggiornato AUCTeX) richiederanno un tempo sensibilmente minore.

sabato 6 ottobre 2012

[Risolto] cannot connect to X server :0

A differenza di GNOME, in KDE non è possibile avviare applicazioni grafiche direttamente con sudo. Infatti, se in KDE si prova a eseguire con sudo un'applicazione grafica da utilizzare con i permessi di amministratore, si potrà ricevere un messaggio di errore di questo tipo
$ sudo kate
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
No protocol specified
kate: cannot connect to X server :0
La soluzione è semplice: basta utilizzare kdesudo (assicurarsi di aver installato il pacchetto omonimo) al posto del solo sudo:
$ kdesudo kate


Aggiornamento (20/06/2013): come detto, bisogna utilizzare kdesudo per eseguire con i permessi di amministratore qualsiasi applicazione grafica, compreso il programma di installazione della distribuzione TeX Live scaricata dal sito http://www.tug.org/texlive/. Provando a eseguire lo script di installazione con sudo al posto di kdesudo si otterrebbe il seguente messaggio d'errore
$ sudo ./install-tl -gui
No protocol specified
perl/Tk unusable, cannot create main window.
Error message from creating MainWindow:
  couldn't connect to display ":0" at /usr/lib/perl5/Tk/MainWindow.pm line 53.
Tk::MainWindow->new() at ./install-tl line 339

Continuing in text mode...
Quindi il comando corretto da utilizzare è invece
$ kdesudo -- ./install-tl -gui
Il doppio trattino dopo kdesudo serve per specificare che è finito l'elenco delle opzioni di kdesudo, il resto dell'argomento deve essere trattato come comando da eseguire, altrimenti -gui verrebbe interpretata come opzione di kdesudo invece che dello script install-tl.

[Risolto] Il volume di sistema in KDE è agganciato a quello di VLC

Non sono riuscito a trovare un'espressione migliore per descrivere il problema: alzando il volume di VLC aumenta anche il volume di sistema, in KDE. Per la precisione, il volume di sistema è sempre maggiore o uguale a quello di VLC. In realtà non è un problema né di KDE (si presenta anche negli altri ambienti desktop) né di VLC (si presenta anche con gli altri programmi, per esempio l'ho riscontrato in Dragon Player), ma di una configurazione predefinita poco felice di PulseAudio. È facile imbattersi in questo problema usando KDE perché questo ambiente desktop usa in maniera predefinita PulseAudio. Nel manuale del demone di configurazione di Pulseaudio (man pulse-daemon.conf) si legge
flat-volumes=  Enable  'flat' volumes, i.e. where possible let the sink
volume equal the maximum of the volumes of the inputs connected to  it.
Takes a boolean argument, defaults to yes.
Per risolvere il problema bisogna modificare il file /etc/pulse/daemon.conf con il proprio editor di testo preferito e con i diritti di amministratore. Per esempio, volendo usare Kwrite per aprire il file si può dare il seguente comando nel terminale
kdesudo kwrite /etc/pulse/daemon.conf
Dopo di ciò si deve impostare la variabile flat-volumes al valore no, per inibire il comportamento descritto nel manuale. Nel file dovrebbe essere già presente la riga
; flat-volumes = yes
In questo caso, togliere il simbolo di commento ; e cambiare il valore della variabile da yes a no. Se la riga precedente non è presente, aggiungete semplicemente da qualche parte la riga
flat-volumes = no
Dopo aver salvato e chiuso il file, per concludere bisogna riavviare Pulseaudio da terminale con il comando
pulseaudio --kill && pulseaudio --start

Ho trovato questa soluzione qui: https://wiki.archlinux.org/index.php/PulseAudio_%28Italiano%29#Il_livello_del_volume_si_alza_ogni_volta_che_una_nuova_applicazione_viene_avviata.

sabato 29 settembre 2012

Massimizzare la finestra di GNU Emacs in KDE

Nell'ambiente desktop KDE, la finestra dell'interfaccia grafica GTK+ di Emacs non viene massimizzata correttamente, come mostrato nella figura a lato. (Per integrare per bene le applicazioni GTK+ in KDE si può consultare questa guida.) Per risolvere questo inconveniente bisogna fare clic sulla barra del titolo di Emacs e aprire AvanzateImpostazioni specifiche per applicazione.... Nella scheda Dimensioni e posizione impostare la voce Rispetta le restrizioni geometriche su Imponi e dopo di che premere Ok. In questo modo viene aggiunta semplicemente una striscia bianca per coprire la regione "scoperta", ma almeno viene eliminato il "fastidio" di vedere parte del desktop dietro una finestra che dovrebbe essere massimizzata.




L'impostazione precedente può essere creata "manualmente" andando in Impostazioni di sistemaRegole delle finestre e nella scheda Regole delle finestre creare una nuova regola facendo clic sul pulsante Nuovo... posto sulla destra. Nella finestra che si aprirà, scrivere una descrizione chiara nel campo omonimo della scheda Corrispondenza delle finestre (la descrizione che si ottiene con la procedura "automatica" descritta sopra è "Impostazioni dell'applicazione di emacs") e nel campo Classe di finestra selezionare Esattamente e aggiungere il valore emacs23 emacs (o l'eventuale numero di versione di Emacs utilizzata).

Ho trovato questo workaround qui: http://forum.kde.org/viewtopic.php?f=111&t=94122.

Attivare il blocco numeri all'avvio di KDE

All'avvio dell'ambiente desktop potrebbe succedere che il tasto blocco numeri (anche noto come blocco numerico o num lock) del tastierino numerico sia disattivato. Per accenderlo automaticamente andare in Impostazioni di sistemaDispositivi di immissione, scheda Tastiera e poi nella scheda Hardware selezionare Acceso nel campo Bloc Num all'avvio di KDE.

venerdì 28 settembre 2012

Gestire il touchpad in KDE

Per l'ambiente desktop KDE 4 esiste un programma per la gestione del touchpad dei computer portatili chiamato synaptiks. Tuttavia questo potrebbe non essere installato in maniera predefinita dalle varie distribuzioni, per esempio non mi sembra che Debian lo installi automaticamente. Per ottenerlo dai repository ufficiali di Debian e Ubuntu bisogna installare il pacchetto kde-config-touchpad. Da terminale si può dare il comando
sudo apt-get install kde-config-touchpad
Una volta installato sarà possibile gestire le impostazioni del touchpad da Impostazioni di sistemaDispositivi di immissione, scheda Touchpad, oppure nella sezione Accessori sotto la voce Touchpad management / synaptiks di un menu di avvio di applicazioni come Kickoff o Lancelot.