Robitex's Blog

Ideas in the web

Un simpatico effetto funzionale in LuaTeX


La domanda

A volte capita di chiedersi all’improvviso se l’idea che ci è appena balenata in mente può effettivamente esser realizzata.

Stavo esaminando alcune caratteristiche di LuaTeX quando una domanda è sorta spontanea: è possibile creare una macro che accetti una funzione matematica scritta dall’utente e la esegua su un argomento anch’esso variabile?

Si tratta quindi di far eseguire una funzione matematica definita sul momento, in pieno stile functional.

La macro dovrebbe accettare due argomenti: il primo è la funzione da usare e il secondo l’argomento numerico su cui eseguire il calcolo:

\applyfun{<funzione>}{<numero>}

Nel documento troveremo poi il risultato cercato. La cosa interessante è che il primo parametro della macro, la funzione, è concettualmente simile al secondo argomento essendo entrambi dei valori.

Per esempio, vorremmo poter scrivere:

Il quadrato di 10 è \applyfun{function (x) return x*x end}{10}!

LuaTeX della famiglia TeX

LuaTeX è un motore di composizione tipografico della gloriosa famiglia TeX. Questi programmi compilano un file di testo scritto dall’utente per fornire il corrispondente documento pdf.

Nel file di testo — detto sorgente — si adopera una sorta di linguaggio istruendo il programma alla gestione di sommari, riferimenti incrociati, titoli, eccetera.

In molti paesi opera un TUG, un TeX User Group. In Italia è attivo da 15 anni il GuIT Gruppo di utilizzatori Italiani di TeX, il cui sito può darvi tutte le informazioni necessarie.

Dimenticavo di dirvi che il sistema TeX è stato uno dei primi esempi di software libero, perciò siete ancor più liberi di usarlo per scrivere i vostri documenti.

La risposta

Ebbene la risposta è positiva! Si, è possibile e se non ci credete compilate con LuaTeX il codice seguente:

% luatex

% definizione della macro
\def\applyfun#1#2{%
\directlua{
local fun = #1
tex.sprint(fun(#2))
}}

Experimental!

\applyfun{function (x) return math.log(x)+10 end}{12}

Ok.

Il quadrato di $\pi$ vale
\applyfun{function (x) return x*x end}{3.14159}.

End job.
\bye

E mi raccomando, non provate a farlo con Word o LibreOffice…
Alla prossima.
R.

TeXStudio: inserire la data corrente


Perché data e ora?

Una delle cose che mi mancavano in TeXStudio era la possibilità d’inserire nel sorgente LaTeX la data e l’ora corrente con una semplice combinazione di tasti. Questa funzionalità mi permette di tracciare molto semplicemente l’evoluzione temporale del documento e di misurare il tempo che ho impiegato per scriverne una data porzione.

Infatti, in un sorgente LaTeX è possibile inserire dei commenti tramite il carattere di percentuale: tutto quello che vi compare dopo verrà ignorato dal compositore tipografico in fase di compilazione.

Una stringa di timestamp potrebbe per esempio essere:

% 12/06/2015 :: 11:35:32 ::

Come vedete il timestamp è preceduto dal carattere di commento del simbolo percentuale seguito dalla data e dall’ora. Sarebbe un tantino noioso inserirlo a mano digitandolo da tastiera nella finestra dell’editor per di più quando il tempo stringe e la relazione va consegnata🙂

Per chi non ha mai sentito il termine LaTeX, ho l’onere di provocare io questo evento e di indirizzarvi naturalmente al sito del TeX User Group nazionale — il GuIT — per trarne ulteriori informazioni.

Scripting in TeXStudio

Pur preferendo l’essenzialità di uno shell editor per LaTeX come TeXWorks, ultimamente ho cominciato a usare TeXStudio per le sue numerosissime feature. Tra queste vi è la possibilità di associare una combinazione di tasti all’esecuzione di uno script in Javascript come recita il manuale.

Questo post vi spiega come realizzarlo.

Al lavoro con le macro in Javascript

Innanzi tutto si apre la finestra di modifica delle macro che vedete qui sotto (da menù: Macro -> Modifica macro):

TeXStudio macro window

TeXStudio macro window

Si preme il tasto + per inserirne una nuova e dopo averne specificato il nome basta scrivere il codice nella rispettiva finestra inserendo obbligatoriamente nella prima riga il testo “%SCRIPT”. Questa chiave farà in modo che TeXStudio interpreti il codice seguente come codice Javascript.

Per inserire testo possiamo avvalerci del metodo insertText() dell’oggetto editor. Facciamo una prova con questo primo script:

%SCRIPT

editor.insertText("% testo inserito via macro :-)")

Adesso, tornati alla finestra principale di TeXStudio possiamo eseguire lo script con la combinazione di tasti “Shift + F1” se abbiamo inserito la macro nella posizione 1. Aprendo il menù macro dovremo vedere tra le voci quella nuova di prova con l’indicazione della combinazione di tasti associata.

A questo punto è solo questione di trovare le funzioni Javascript per la data: Date() e di fare un po’ di prove con i metodi dell’oggetto. Ovviamente non è mia intenzione approfondire il linguaggio Javascript ma solo scrivere il codice per l’inserimento automatico del timestamp secondo un formato personalizzato mostrato precedentemente.
Prima di mostrarvi il codice completo vi saluto.
R.

%SCRIPT
var dt = new Date()
var y = dt.getFullYear()
var m = dt.getMonth() + 1
if (m < 10) { m = "0" + m}

var d = dt.getDate()
var s1 = "% " + d + "/" + m + "/" + y

var hour = dt.getHours()
var min = dt.getMinutes()
if (min<10) {min = "0"+min}
var sec = dt.getSeconds()
if (sec<10) {sec = "0" + sec}
var s2 = " :: " + hour + ":" + min + ":" + sec

editor.insertText(s1 + s2 + " :: ")

Rust 1.0

Libre Office: punto o virgola decimale?


Import dialog

Dialogo importazioni dati CSV

Ciao. Se ci troviamo a importare un file dati in un foglio di calcolo di Libre Office, per esempio attraverso un file CSV — comma separated values — è facile imbattersi nel “problema della virgola”.

Il problema della virgola

Questo inconveniente deriva dall’opposto uso del separatore decimale tra il mondo anglosassone e quello europeo continentale. La prima convenzione fa uso del punto e la seconda fa uso della virgola.
Quando importiamo un numero con il separatore è il punto — per esempio 95.50 — e la nostra versione di Libre Office è localizzata in italiano, esso è interpretato come testo.
La cella del foglio di calcolo così importata non potrà essere immediatamente utilizzata nelle formule.
In questa situazione gli utenti si arrangiano come possono con un cerca/sostituisci o con le più disparate formule.

Soluzione semplice

Ho scoperto che il problema della virgola si può risolvere in un istante e molto semplicemente.
Nel dialogo d’importazione che vi ho riportato sopra, basta infatti sostituire il tipo della colonna con i numeri con separatore decimale ‘.’ da ‘Standard’ a ‘Inglese US’, come vedete nell’immagine seguente.

Mi son sempre chiesto a cosa servisse il tipo di colonna ‘Inglese US’. Adesso lo so😉

Import dialog and column type

Dialogo d’importazione con cambio di tipo colonna

Saluti.
R.

Rust prossimo alla versione 1.0


Ci siamo. Manca poco.


                        (  ) (@@) ( )  (@)  ()    @@
                   (@@@)
               (    )
            (@@@@)
          (   )
      ====        ________                ___________
  _D _|  |_______/        \__I_I_____===__|_________|
   |(_)---  |   H\________/ |   |        =|___ ___|
   /     |  |   H  |  |     |   |         ||_| |_||
  |      |  |   H  |__--------------------| [___] |
  | ________|___H__/__|_____/[][]~\_______|       |
  |/ |   |-----------I_____I [][] []  D   |=======|
__/ =| o |=-~~\  /~~\  /~~\  /~~\ ____Y___________|
 |/-=|___|=O=====O=====O=====O   |_____/~\___/
  \_/      \__/  \__/  \__/  \__/      \_/

rust_10_scheduling_the_trains
1.0-Timeline
R.

#pertornareliberi


Carrara, alluvione 2014

Questa canzone mi fa venire i brividi
I miei compaesani belli come il sole
La speranza per il futuro
per #pertornareliberi

…e magari ci aiutate, grazie.

Devo dire che…


Devo dire che WordPress è ora molto più bello di quando ho cominciato a scrivere…
Così scrivo questo post solamente perché questa in cui scrivo è la nuova interfaccia così 2.0 che non potevo non scrivere…
Ciao

Quello che non ti aspetti


Giorno dopo giorno

Sappiamo sempre quello che succederà. Semplicemente perché quello che accadrà dovrebbe assomigliare a quello che è già accaduto prima.

Non è forse un’estrapolazione, è paura del cambiamento unita al beneficio dovuto all’economia dell’abitudine.

Fino a che un fatto qualsiasi che non ti aspetti, anche banale come l’avviso di Microsoft della cessazione del supporto per Windows XP, sorprende perché finora non era accaduto niente di simile.

Una sorpresa, come tante che accadono, e che è dimostrazione di quanto siamo invece in errore. Ogni giorno. Quello che non è mai accaduto accade proprio per ricordarci che il futuro non è l’illusione che vive nei nostri desideri o pensieri.

Il futuro è qualcosa che non si conosce e realizzare quello che ci siamo ripromessi sembra un fatto incredibile, il futuro è qualcosa che nutre la nostra vita indipendentemente da come lo immaginiamo, ogni giorno.

endxp20140314

Invito all’autocostruzione del computer


Tempo di cambiamenti nella dotazione hardware casalinga.

Foto della scheda madre nella fase di montaggio iniziale subito dopo aver alloggiato il processore.

Spesso adotto delle soluzioni software ‘fai da te’ in cui vari programmi vengono assemblati per ottenere il risultato finale: formati personalizzati, script ad hoc, fogli di calcolo, LaTeX, database, ecc.

Le soluzioni artigianali danno soddisfazione, e si mantiene il controllo dell’elaborazione dei dati, così ho adottato lo stesso principio per costruire un nuovo computer desktop.

Fino ad ora mi era capitato di montare un nuovo drive o sostituire moduli di memoria RAM, ma non avevo mai realizzato un computer a partire dai componenti, rimaneva un progetto, un sogno, così l’ho realizzato all’improvviso, semplicemente parlando in famiglia del monitor troppo grande sulla scrivania…

Vantaggi

I vantaggi dell’auto-costruzione sono molti. Il primo tra tutti è che è possibile progettare una configurazione che si adatta perfettamente alle proprie necessità, ed inoltre si risparmia circa il 25% (almeno così ho valutato nel mio caso).

Ho scelto di sacrificare la sezione grafica del PC per irrobustire le prestazioni: ottimo processore, ottimi moduli RAM, ottimo drive SSD, così il PC si avvia in circa 10 secondi e le applicazioni sono subito a disposizione per lavorare.
Grande velocità e prontezza.

Svantaggi

Uno solo: serve un po’ di tempo per informarsi, leggere la documentazione tecnica, fare l’ordine dei componenti ed effettuare il montaggio.

Work log assemblaggio

Gli esperti del sito di PCSilenzioso mi hanno dato una mano per progettare la macchina, celermente, con competenza e simpatia.

Ho postato l’intero work-log sia dell’assemblaggio dei componenti sia dell’installazione del sistema operativo, nella sezione Progetti del sito in questo thread.

Buon assemblaggio!
R.

Sono passato a Precise…


Improvvisamente ho deciso di fare il passaggio da Ubuntu 10.04 Lucid alla nuova LTS Precise 12.04.

La mia titubanza derivava dal sospetto che il mio vecchio PC non sopportasse la nuova versione soprattutto per le prestazioni lato grafica. Tuttavia ormai in Lucid parecchi pacchetti non ricevevano più aggiornamenti, così ho decido per il salto.

Tutto sommato, Precise ha mantenuto le stesse prestazioni che avevo in Lucid. Più precisamente… l’avvio con Unity delle attività è più lento ma una volta avviati i programmi mi sembrano addirittura più veloci.

Ho riportato una schermata del nuovo Desktop qui sotto…
Alla prossima.
R.

Ubuntu Precise 12.04 Desktop Screenshot

Ubuntu Precise 12.04 Desktop Screenshot

%d blogger cliccano Mi Piace per questo: