Ultimamente sto scrivendo moltissime relazioni per l’universita` (i cui impegni mi tengono, purtroppo, un po’ lontano dal blog) e in ogni relazione di argomento scientifico che si rispetti si avra` a che fare con dei dati e delle tabelle da inserire nelle relazioni.
Quando le tabelle sono molte i dati da inserire nelle stesse pure, a un certo punto viene a noia scrivere centinaia, se non migliaia di “&”, di “\hline”, eccetera.
Ora, visto che io ho l’abitudine di salvare i miei dati in files di testo semplice (non li processo mai con fogli di calcolo, a meno di non dover fare analisi piu` che banali) per darli in pasto a qualche programma C++ scritto ad-hoc, ho cercato dei modi “intelligenti” per convertire questi files in tabelle .tex. Ne ho trovati due: il primo l’ho escluso visto che prevede il passaggio da Excel (oltre a non amare moltissimo i prodotti Microsoft mi sembra uno spreco di risorse e di tempo passare attraverso Excel per convertire un file di testo in un altro file di testo) l’altro non sono riuscito a farlo funzionare (almeno non subito e stavo facendo questa cosa di sera, con tutte le buone intenzioni di andarmene a dormire il piu` presto possibile).
Allora mi sono armato del mio fedele Emacs su OSX e ho scritto uno script bash per convertire il file dei dati in un file sorgente .tex da includere nella mia relazione.
E` nato quindi dat2LateX e ho deciso di condividerlo con voi perche`, magari, anche qualcun altro puo` aver bisogno di fare questa cosa in modo semplice e veloce senza impazzire.
Lo script prende 5 argomenti:
- numero di colonne della tabella
- stile delle righe orizzontali (presenti oppure no)
- stile delle righe verticali
- file di dati da leggere
- file .tex da scrivere
Un esempio di generazione di tabella con due colonne con righe orizzontali tra le righe e righe verticali tra le colonne:
dat2LateX.sh 2 '\hline' '{|c|c|}' fileDati.dat fileTex.tex
ora un esempio per una tabella con due colonne senza righe orizzontali:
dat2LateX.sh 2 '' '{|c|c|}' fileDati.dat fileTex.tex
giusto per farvi notare la necessita` di inserire i due singoli apici per dare un argomento vuoto al posto del comando tex \hline. Insomma, non esistono (per ora) controlli sugli argomenti passati: bisogna sempre passarne 5 e devono essere “acconci” a seconda del risultato che si vuole ottenere.
Il file .tex ottenuto cosi` si deve inserire in un documento LateX con questa sintassi:
\begin{table}
\input{fileTex.tex}
\end{table}
Detto cio`, potete scaricare lo script da QUA e dargli i permessi di esecuzione con il comado:
chmod u+rx dat2LateX.sh
Lo script funziona sia su Linux che su OSX.







L’informatica come scienza e come gli scienziati gli si approcciano
In questo periodo sto seguendo molti corsi all’università, motivo per cui non sto scrivendo molto sul blog (sicuramente mi scuserete per questo). Due di questi corsi hanno a che fare con l’informatica e con la programmazione. Un altro corso simile l’ho seguito questo inverno e il fatto che questi tre corsi abbiano avuto professori diversi mi ha dato l’opportunità di rendermi conto come diversi scienziati (tutti questi professori sono ricercatori scientifici) si approccino in modo differente all’uso del calcolatore nella propria vita, ma, soprattutto, come questo modo di approcciarsi si rifletta su come e cosa insegnino agli studenti.
Per la cronaca il “tipo” di scienziati sono (ometto i nomi per rispetto delle persone -non mi piace parlare di privacy, in quanto i nomi, i loro curricula e le pubblicazioni sono liberamente disponibili sul web, basta fare qualche ricerca-, in ogni caso molti miei lettori conoscono bene almeno due su tre di questi personaggi): un fisico sperimentale, un fisico teorico e un informatico.
Ciò che ho notato in prima battuta è che ognuna di queste persone ha, ovviamente, una propria idea di cosa voglia dire utilizzare bene il computer e di quale sia il metodo di lavoro corretto. Quello che fa la maggior parte di loro è di tirare merda su ciò che a loro non piace e di esaltare all’infinito ciò che a loro piace. Ma faccio degli esempi, così capite meglio:
Lezione in aula informatica: uno studente chiede aiuto al professore, quest’ultimo arriva e la prima cosa che fa e mettere mano a mouse e tastiera e modifica alcune parti di codice come piacciono a lui, senza ascoltare la domanda. Oppure il professore, senza ascoltare la domanda inizia a dire allo studente di cambiare l’impostazione del codice. Ora, io sono più che convinto che il FORTRAN sia un potentissimo strumento, ma se sto programmando in C(++) ho tutto il diritto di utilizzare le potenzialità di tali linguaggi, senza dover “far finta” di vivere qualche decennio fa utilizzando solamente una differente sintassi. Per di più questi corsi sono corsi di laurea magistrale e già nella triennale c’è almeno un corso obbligatorio di programmazione (parlando del mio corso di laurea) dove lo studente impara a gestire certe cose del linguaggio.
Un altro studente chiede una mano al professore, gli fa vedere un plot fatto con $SOFTWARE. Il plot è corretto, ma lo studente ha un dubbio sulla teoria. Il professore vede il plot, dice che è sbagliato, tira fuori il notebook, e passa 15 minuti a tentare di fare il plot corretto utilizzando $ALTROSOFTWARE per poi rendersi conto di aver male interpretato una variabile della funzione, che il plot dello studente e quello suo erano corretti e si è finalmente deciso ad ascoltare la domanda. La risposta? “Sarà un problema di $SOFTWARE, dovrebbe funzionare!”.
Ora, questo post sta diventando una valvola di sfogo per vari episodi che sono capitati a me e a dei miei compagni a cui ho assistito, ma il concetto che volevo esprimere è che l’informatica è una scienza giovane, non siamo ancora arrivati al punto in cui molte cose sono accettate allo stesso modo dalla quasi totalità di chi si avvicina al campo (e forse mai ci arriveremo, se continuerà a evolversi così velocemente) il punto è che tra tutti questi chi ha ragione?
Ha ragione chi, al posto di perdere tempo a convincere il mondo che il modo che usa lui per fare le cose sia il migliore, sta zitto e fa le cose, come uno dei tre professori che non è protagonista di nessuno degli esempi qua sopra riportati che ringrazio per avermi insegnato molto più di tutti gli altri, anche se mi sono dovuto fare un discreto mazzo per superare il suo esame, ma ne è valsa la pena!
Condividi:
Mi piace: