Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e...

56
Numero 3 Aprile 2007 g u It A rs T E X nica Rivista italiana di T E XeL A T E X http://www.guit.sssup.it/arstexnica

Transcript of Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e...

Page 1: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Numero 3Aprile 2007

guIt

ArsTEXnicaRivista italiana di TEX e LATEX

http://www.guit.sssup.it/arstexnica

Page 2: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

TEXnic

aArsguIt – Gruppo Utilizzatori Italiani di TEXArsTEXnica è la pubblicazione ufficiale del guIt

Comitato di RedazioneMassimiliano Dominici – DirettoreClaudio BeccariFabiano BusdraghiRiccardo CampanaMassimo CaschiliGustavo CevolaniAndrea FedeliEnrico GregorioLapo MoriGianluca PignalberiOttavio RizzoEmiliano VavassoriEmanuele VicentiniRaffaele VitoloEmanuele Zannarini

ArsTEXnica è la prima rivista italiana dedicata aTEX, a LATEX ed alla tipografia digitale. Lo scopoche la rivista si prefigge è quello di diventare unodei principali canali italiani di diffusione di infor-mazioni e conoscenze sul programma ideato quasitrent’anni fa da Donald Knuth.

Le uscite avranno, almeno inizialmente, caden-za semestrale e verranno pubblicate nei mesi diAprile e Ottobre. In particolare, la seconda uscitadell’anno conterrà gli Atti del Convegno Annualedel guIt, che si tiene in quel periodo.

La rivista è aperta al contributo di tutti coloroche vogliano partecipare con un proprio artico-lo. Questo dovrà essere inviato alla redazione diArsTEXnica, per essere sottoposto alla valutazionedi recensori. È necessario che gli autori utilizzino laclasse di documento ufficiale della rivista; l’autoretroverà raccomandazioni e istruzioni più dettaglia-te all’interno del file di esempio (.tex). Tutto ilmateriale è reperibile all’indirizzo web della rivista.

Gli articoli potranno trattare di qualsiasi argo-mento inerente al mondo di TEX e LATEX e nondovranno necessariamente essere indirizzati ad unpubblico esperto. In particolare tutorials, rassegnee analisi comparate di pacchetti di uso comune,studi di applicazioni reali, saranno bene accetti, co-sì come articoli riguardanti l’interazione con altretecnologie correlate.

Di volta in volta verrà fissato, e reso pubblicosulla pagina web, un termine di scadenza per lapresentazione degli articoli da pubblicare nel nu-mero in preparazione della rivista. Tuttavia gli

articoli potranno essere inviati in qualsiasi momen-to e troveranno collocazione, eventualmente, neinumeri seguenti.

Chiunque, poi, volesse collaborare con la rivi-sta a qualsiasi titolo (recensore, revisore di boz-ze, grafico, etc.) può contattare la redazioneall’indirizzo:

[email protected] sul Copyright

Il presente documento e il suo contenuto è di-stribuito con licenza CC© Creative Commons 2.0di tipo “Non commerciale, non opere derivate. Èpossibile, riprodurre, distribuire, comunicare alpubblico, esporre al pubblico, rappresentare, ese-guire o recitare il presente documento alle seguenticondizioni:

BY:© Attribuzione: devi riconoscere il contribu-to dell’autore originario.

$\© Non commerciale: non puoi usarequest’opera per scopi commerciali.

=© Non opere derivate: non puoi alterare,trasformare o sviluppare quest’opera.

In occasione di ogni atto di riutilizzazione odistribuzione, devi chiarire agli altri i termini dellalicenza di quest’opera; se ottieni il permesso daltitolare del diritto d’autore, è possibile rinunciaread ognuna di queste condizioni.

Per maggiori informazioni:http://wwww.creativecommons.com

Associarsi a guIt

Fornire il tuo contributo a quest’iniziativa comemembro, e non solo come semplice utente, è unpresupposto fondamentale per aiutare la diffusionedi TEX e LATEX anche nel nostro paese. L’adesioneal Gruppo prevede un quota di iscrizione annualedi 25,00 e nel caso di persone fisiche o di 50,00 enel caso di Enti o Istituzioni.

IndirizziGruppo Utilizzatori Italiani di TEX :c/o Ufficio StatisticaScuola Superiore Sant’AnnaPiazza Martiri della Libertà 3356127 Pisa, Italia.http://[email protected] ArsTEXnica:http://www.guit.sssup.it/arstexnica/[email protected]

Codice ISSN 1828-2369

Stampata in ItaliaPisa: 15 Aprile 2007

Page 3: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnicaRivista italiana di TEX e LATEX

Numero 3, Aprile 2007

EditorialeMassimiliano Dominici . . . . . . . . . . . . . . . . . . . . . . . . . . 3Intervista a Frank MittelbachFrank Mittelbach, Gianluca Pignalberi, Dave Walden . . . . . . . . . . 4LATEX e la cesura delle parole in fin di rigaClaudio Beccari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13LATEXpedia: il futuro della documentazione su LATEXLapo Filippo Mori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Scrivere la tesi di laurea con LATEX2εLapo Filippo Mori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27La tipografia nel taschinoSalvatore Schirone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Gruppo Utilizzatori Italiani di TEX

Page 4: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein
Page 5: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Editoriale

Massimiliano Dominici

Il nuovo statuto del Gruppo UtilizzatoriItaliani di TEXNel corso dell’anno appena trascorso guIt ha cono-sciuto una notevole crescita. Il numero degli iscrittisi è ormai attestato su una cifra che si aggira attor-no al centinaio. Tra i membri sono presenti, oltrea singoli individui, anche alcune istituzioni, perle quali è stato necessario pensare una nuova fi-gura, con obblighi e diritti non necessariamentecoincidenti con quelli dei soci tradizionali.Questi cambiamenti hanno reso necessario ade-

guare gli strumenti di gestione del gruppo alle nuo-ve esigenze. Il processo di revisione dello statuto,cominciato subito dopo l’ultimo convegno annualee proseguito soprattutto nei primi mesi di questoanno, ha coinvolto l’intero staff del gruppo e si èconcluso con l’approvazione della nuova versione.Le novità sostanziali riguardano soprattutto i

rapporti “istituzionali” tra soci ordinari e sociamministrativi. La nuova situazione, che vede unnumero di iscritti più ampio che in passato, ha resopossibile, in particolare, il passaggio ad una formadi amministrazione del gruppo più partecipata.

Con il nuovo statuto i membri del Consiglio Di-rettivo (il vecchio staff amministrativo) vengono,infatti, eletti annualmente dall’Assemblea dei Socie permangono in carica per tre anni. Il ConsiglioDirettivo, elegge, tra i suoi membri aventi almenoun anno di anzianità, un Presidente (con compitidi rappresentanza legale e istituzionale e la facoltàdi conferire incarichi speciali sulla base di esigenzeche possono rendersi necessarie per il buon fun-zionamento del gruppo) un Vicepresidente e unTesoriere. Anch’essi permangono in carica per unperiodo di tre anni.L’Assemblea dei Soci ratifica inoltre il bilancio,

che viene presentato annualmente dal Tesoriere.I soci potranno consultare online, sul sito del

gruppo, una copia del nuovo statuto, per avere unavisione più dettagliata dei singoli articoli.

Gli articoli di questo numeroCome promesso sul primo numero, in questa terzauscita della rivista proponiamo una nuova inter-vista di Gianluca Pignalberi. Se la prima era giu-stamente dedicata al “padre” del TEX, Donald E.Knuth, in questa seconda intervista Gianluca Pi-gnalberi, insieme all’altro intervistatore, Dave Wal-den, dialoga con Frank Mittelbach, componentestorico del LATEX Project Team, che si occupa del-la manutenzione del kernel di LATEX2ε e dellosviluppo di LATEX3.

Il secondo articolo, di Claudio Beccari, è dedica-to ad un argomento spesso sottovalutato, ovvero ilcontrollo sulle modalità con le quali LATEX dividele parole in fin di riga. L’articolo, oltre ad indicarecome risolvere le più frequenti fonti di errore, èparticolarmente indicato a chi volesse approfondi-re la conoscenza dei meccanismi interni utilizzatida TEX per decidere in quale punto è possibilespezzare un vocabolo.Seguono due articoli di Lapo Mori. Nel primo,

apparso in traduzione inglese anche sul PracTEXJournal, l’autore presenta un progetto di docu-mentazione per LATEX, basato su una piattaforma“wiki” e volto a risolvere i problemi che affliggono,da una parte, la tipologia cartacea (rapida obso-lescenza, ecc.), dall’altra la tipologia elettronica(scarsa sistematicità, ecc.).

Il secondo articolo è la riproposta, in versioneaggiornata e corretta, di un intervento presentatodallo stesso Lapo Mori nel corso del secondo conve-gno annuale del guIt, tenutosi nell’ottobre del 2005.Trattandosi di un argomento (la stesura di una tesidi laurea con LATEX) i cui risvolti pratici incontranoun notevole interesse in un utente medio di TEX, èsembrato opportuno, anche in seguito all’ulterioreesperienza maturata nel periodo trascorso e all’in-terazione con gli utenti che hanno formulato nuoviinterrogativi e suggerito nuove soluzioni, ospitaresulla rivista la nuova versione di questo preziosotutorial.Lo sviluppo di TEX, e la sua diffusione, non di-

pendono soltanto dalla stesura di macro per svolge-re nuovi compiti, o gli stessi compiti in maniera piùefficiente, ma anche dall’implementazione di distri-buzioni pensate per permettere l’uso del program-ma su un particolare sistema operativo; oppure,come nel caso di OPS4guIt, la distribuzione creatada Salvatore Schirone, per avere il proprio sistematipografico sempre a portata di mano. Nell’ulti-mo articolo l’autore ci illustra questa distribuzionederivata da MiKTEX e “portabilizzata”, ovvero ade-guatamente modificata in modo da poter essere av-viata da una PenDrive USB su qualsiasi computeravente sistema operativo Windows (9x, ME, XP).

Infine, a partire da questo numero, ArsTEXnica ver-rà stampata su carta riciclata. È, da parte nostra,un doveroso contributo al rispetto dell’ambiente.Buona lettura.

. Massimiliano [email protected]

3

Page 6: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Intervista a Frank Mittelbach

Frank Mittelbach, Gianluca Pignalberi, Dave Walden

SommarioSia a Free Software Magazine (FSM, http://www.freesoftwaremagazine.com) che al TEX UsersGroup (TUG, http://www.tug.org) piace pubbli-care interviste. Recentemente, Gianluca Pignalberidi FSM e Dave Walden del TUG hanno entram-bi contattato Frank Mittelbach per intervistarlo.Anziché fare due interviste separate, Mittelbach,Pignalberi e Walden si sono accordati per un’inter-vista congiunta, in modo da soddisfare gli interessicomuni già condivisi da FSM e TUG.

AbstractFree Software Magazine (FSM, http://www.freesoftwaremagazine.com) and the TEX UsersGroup (TUG (http://www.tug.org/)) both liketo publish interviews. Recently, Gianluca Pignal-beri of FSM and Dave Walden of TUG both ap-proached Frank Mittelbach about interviewing him.Rather than doing two separate interviews, Mittel-bach, Pignalberi, and Walden decided on a com-bined interview in keeping with the mutual inter-ests already shared by FSM and TUG.

Dave Walden, cointervistatore: Frank, per piacere,inizia parlandoci un po’ di te e di come sei entratoin contatto con LATEX.

Frank Mittelbach, intervistato: Vivo con la miafamiglia a Magonza (Germania) dai primi anniOttanta, cioè per la maggior parte della mia vi-ta, finora. Oltre al mio hobby principale (l’artetipografica), che può veramente essere definito ilmio secondo lavoro, mi piace giocare a bei giochida tavola, ascoltare musica jazz e leggere (princi-palmente letteratura inglese). Professionalmentelavoro per la Electronic Data Systems, dove at-tualmente sono responsabile della concezione edell’implementazione di controlli remoti e gestionedi reti e sistemi distribuiti.

Quando ero studente di matematica e informati-ca all’Università Gutenberg di Magonza sono en-trato in contatto prima con TEX e poi con LATEX;questo ha contribuito al mio interesse per la com-posizione tipografica ed in particolare alla ricercasugli algoritmi per la composizione automatica dialta qualità.

Durante i miei giorni da studente, negli anni Ot-tanta, un amico riportò dall’università di Stanfordun nastro di sorgenti contenente qualcosa comeTEX 1.1 e notizie affascinanti sulla qualità del pro-gramma (fino ad allora scrivevamo le nostre tesibattendole a macchina, incollando a mano i simbo-

li o, come nel caso di alcune sofisticate macchineda scrivere IBM, cambiando la “palla” ogni duesecondi). Provò ad implementare il programmasul sistema Multics che avevamo all’università eci riuscì: quella era probabilmente la prima, senon l’unica, implementazione di TEX per questosistema.In questo modo fui introdotto a TEX e AMS-

TEX e scrissi il mio primo articolo, ottenendo unosplendido risultato. L’unico inconveniente fu che∑n

i=1 xiil nastro di Stanford conteneva solo font QuasiComputer Modern alla risoluzione di 200 dpi (esenza METAFONT), e l’unica stampante grafica cheavevamo a disposizione aveva una risoluzione di72 dpi. Quindi l’output che ottenevamo era grandecome la formula al centro di questo capoverso (opiù grande): stupendo per tappezzare le pareti,ma non proprio adatto ad una tesi da consegnare.Come risultato, il mio amico ha dovuto scrivere lasua tesi nel modo tradizionale, nonostante i suoisforzi.Qualche tempo dopo mi fu chiesto dal mio di-

partimento di installare una versione commercialedi TEX sui nostri PC nuovi fiammanti e di tenereuna serie di lezioni a studenti e professori su co-me usarlo. Questa distribuzione era provvista diLATEX 2.08 e una copia con rilegatura mobile delmanuale (che sarebbe diventato il libro di LeslieLamport su LATEX). LATEX, confrontato a PlainTEX, mi sembrava molto buono ma, purtroppo,

Figura 1: Frank Mittelbach

4

Page 7: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Intervista a Frank Mittelbach ArsTEXnica Nº 3, Aprile 2007

se usato per produrre un documento, si piantavadurante il caricamento dello “stile di documentoarticolo” a causa di mancanza di memoria su queiPC. Così il mio approccio a LATEX si fermò dopo lalettura del manuale, e fui costretto a sviluppare unmio pacchetto di macro che implementava concettianaloghi, richiedendo al contempo meno memoria.Un anno dopo fu possibile usare realmente LATEXnel dipartimento, ed ho ritirato il mio pacchetto.Questo esercizio iniziale mi ha dato una buona

visione dei concetti e dei meccanismi interni diun sistema come LATEX e mi ha in seguito per-messo di criticare costruttivamente certi aspetti diLATEX – cosa che forse ha spinto Leslie a passarmilo sviluppo e il mantenimento di LATEX.

Gianluca Pignalberi, cointervistatore: Molti dei no-stri lettori hanno familiarità con LATEX ma, perquelli che non lo fossero, puoi presentarglielo?FM: LATEX è un sistema di composizione non

interattivo che usa TEX o una delle sue varian-ti (ε-TEX, pdfTEX, Omega) come motore dicomposizione.

Il programma TEX (sviluppato dal prof. DonaldKnuth all’inizio degli anni Ottanta) è un motoredi composizione a basso livello programmabile, icui concetti e algoritmi forniscono una conoscenzadi microtipografia1 della più alta qualità in tem-pi, come quelli attuali, in cui questa conoscenza èin lento declino per via del fatto che sempre piùautori sono costretti a diventare grafici e tipogra-fi di se stessi, pur senza un’adeguata formazione.TEX è in special modo famoso per il suo eccellen-te algoritmo di interruzione di riga [correlato allasillabazione NdT ] e per le sue capacità di composi-zione di formule matematiche, entrambi insuperati,nonostante la libera disponibilità del programmae dei suoi algoritmi da oltre vent’anni.LATEX è un pacchetto di macro, scritto per il

motore TEX, che permette all’utente di astrarsidalle capacità di formattazione a basso livello diTEX fornendo interfacce di più alto livello, le qualipermettono all’autore di etichettare il testo con eti-chette logiche invece che procedurali (ad esempio,specificando che qualcosa è una lista o un paragra-fo, piuttosto che affermare che qualcosa dovrebbeessere composto con un carattere nero e dello spa-zio sopra e sotto). La vera trasformazione di unsorgente LATEX in un documento finito viene fattacon l’aiuto di “fogli di stile” e accomodamenti diconfigurazione che permettono cambiamenti ancheradicali dell’aspetto in maniera consistente, e senzatoccare o cambiare il sorgente2.

1. La microtipografia riguarda l’aspetto dettagliato dicaratteri e spaziature, ad esempio la crenatura (allargamen-to o restrizione dello spazio) tra le lettere, la generazionee il posizionamento delle legature, le interruzioni di riga,ecc. Per contro, la macrotipografia riguarda strutture piùgrandi, come il disegno di testate, liste o pagine.2. Be’, idealmente, ma si veda oltre.

Storicamente, LATEX è stato largamente influen-zato da un sistema chiamato Scribe (di Brian Reid).A sua volta, il concetto di etichetta logica di LATEXè stato abbastanza influente per i DTD dell’HTMLe dei vari SGML/XML, così come lo furono i suoiapprocci per convertire queste etichette logiche inuna rappresentazione visuale.Una delle differenze tra LATEX e molti altri ap-

procci simili è che il linguaggio LATEX è effettiva-mente a sviluppo comunitario: nuovi pacchetti cheaumentano (o modificano) le etichette e le funzionidi composizione appaiono continuamente, così cheormai LATEX offre soluzioni di composizione perquasi ogni argomento, pure tanto diversi quantocomposizione di giochi (come scacchi, go o paroleincrociate), formule chimiche o musica. Un’altradifferenza importante è che, sebbene LATEX abbiadivulgato il concetto di etichetta logica, fornisceanche dei modi per regolare finemente i risultati(essenzialmente fornendo interfacce verso l’etichet-tatura procedurale), accettando il fatto che nessu-na trasformazione automatica di etichette logichein rappresentazioni visuali può risolvere automa-ticamente tutti i problemi generati da restrizionifisiche del formato di output (come la larghezzadi una riga di testo o la dimensione della pagina).Mentre in alcune applicazioni questa regolazionefine non aggiunge valore (come nella pubblicazionedi contenuti di database, dove è richiesta la tota-le automazione), è cruciale per comporre libri earticoli di riviste di alta qualità.

GP: Quante persone fanno parte ufficialmente delLATEX Project? E. . . come definiresti il “LATEXProject”?

FM: Il team del LATEX Project è un gruppo dipersone abbastanza ristretto (in lento cambiamen-to), che badano al kernel di LATEX e ad un piccolonumero di pacchetti fondamentali che costituisco-no una solida base per una grossa quantità dipacchetti e aggiunte in costante evoluzione. For-nire e sorvegliare un nucleo stabile è un compitoimportante (sebbene non condiviso da molti) permantenere LATEX vivo come linguaggio di inter-scambio di documenti. Tra i membri che hannocomposto, o attualmente compongono, il team ri-cordiamo Javier Bezos, Johannes Braams, DavidCarlisle, Michael Downes, Denys Duchier, RobinFairbairns, Morten Høgholm, Alan Jeffrey, ThomasLotze, Chris Rowley, Rainer Schöpf, and MartinSchröder con vari gradi di coinvolgimento.

Storicamente il progetto è subentrato nel 1991 aLeslie Lamport per la manutenzione e lo sviluppodi LATEX 2.09. Fino ad allora il sistema era statodiviso in diverse varianti incompatibili, che spes-so proibivano la corretta elaborazione da parte diuna variante di LATEX di documenti creati con unaltro LATEX, sebbene l’indipendenza dai sistemifosse originariamente uno dei risultati importantidi LATEX come linguaggio di documentazione per la

5

Page 8: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Intervista a Frank Mittelbach

Figura 2: La home page del LATEX Project

comunità scientifica. Un altro risultato per il teamfu quello di correggere apparenti deficienze neiconcetti di LATEX 2.09. Il team ha trattato entram-be le questioni all’inizio degli anni Novanta conLATEX2ε, che ha fornito una piattaforma stabile econsolidata in grado di fornire ulteriori possibilitàdi sviluppo al di fuori del codice del kernel.Sebbene LATEX2ε curasse la maggior parte, se

non tutte, le deficienze trovate nel primo decenniodi uso di LATEX 2.09, si è originariamente pensatoche LATEX2ε sarebbe stato solo un passo inter-medio verso LATEX3. Ma, nel tempo, è diventatosempre più chiaro che le rimanenti questioni apertenon sarebbero potute essere adeguatamente risolteentro i limiti imposti da: a) TEX come motore dicomposizione, e b) nessuna modifica ai concettifondamentali realizzati dentro LATEX.

Come risultato, la maggior parte degli sforzi fat-ti negli anni recenti dai membri del team di LATEXè stata volta a ricercare le caratteristiche deside-rabili per i motori di formattazione sottostanti ea sviluppare linguaggi e concetti sperimentali perun’interfaccia alla composizione tipografica per igrafici, livello di astrazione largamente mancantedall’attuale LATEX (che attualmente richiede spessola programmazione in TEX).

Dunque, attualmente, una definizione del LATEXProject potrebbe essere che questo lavora per for-nire le fondamenta dei concetti e l’implementazio-ne di base di un nuovo sistema di composizionebasato sugli aspetti positivi di LATEX2ε (ad esem-pio, etichette logiche, estensibilità) ma, a livellodi codice, non necessariamente orientato a fornirecompatibilità. A livello di sintassi dei documen-ti la situazione è, ovviamente, differente, poichéil riuso dei documenti più vecchi è senz’altro unobiettivo importante. Ma, anche là, la principaleconcentrazione sarà sulla chiarezza dei concetti;come risultato, la compatibilità potrebbe essereristretta in determinati casi a fornire un supportoalla conversione automatica.

DW: Nel mondo di TEX hai lunghi precedenti dilavoro collaborativo, in special modo con Rainer

Schöpf, agli albori di LATEX. Deve proprio piacertiil lavoro collaborativo. Raccontaci qualcosa sui tuoiapprocci a questo metodo.

FM: In effetti mi piace collaborare; nel corso de-gli anni ho lavorato con successo con molte personediverse (su vari argomenti e in differenti campi).Per me, il valore principale della collaborazione stanella fase di sviluppo delle idee che, a mio parere,sono meglio elaborate nell’ambito di uno scambioaperto. La mia immagine mentale, in questo caso,è un gioco tipo il ping pong, che si sviluppa solose si reagisce direttamente a ciò che pensa l’av-versario e si prende la palla man mano che vienegiocata. La gente che ha lavorato con me sa che mipiacciono le sessioni disegnate alla lavagna bianca(ho bisogno di visualizzare lo svolgersi del gioco) ei metodi di brainstorming e delle mappe mentali.Ma sono anche fissato con i dettagli, e posso

impiegare molte energie e sforzi per finire veramen-te qualcosa (per soddisfazione personale), quandolo considero meritevole. La collaborazione a quellivello – dopo che il lavoro di sviluppo di concettoe progetto è terminato e il molto lavoro sul detta-glio comincia – assume normalmente una delle duepossibili forme: o mi relego il più possibile al ruolodi mentore e lascio lavorare gli altri alle implemen-tazioni vere e proprie, o metto così tante energiein un determinato compito che queste superano diun fattore grande il coinvolgimento degli altri. Ilmio motto è “Es gibt nichts Gutes, außer man tutes” (traduzione libera: Non verrà fatto niente dibuono finché non lo fai di “buzzo buono”) di ErichKästner che, almeno in tedesco [e in italiano NdT ],fa rima.Un sacco di collaborazione avviene necessaria-

mente per email (a causa dei diversi paesi in cuisi vive, ecc.), ma trovo estremamente prezioso in-terrompere questo metodo di lavoro, a intervalliirregolari, con incontri de visu per tirare fuori leidee e renderle concrete quel tanto che basta perandare avanti in semi-isolamento, con le sole emaile/o telefonate come mezzo di comunicazione “di-retta”. Ciò spiega anche perché la gran parte dellavoro fondamentale, associato a Rainer Schöpfe me, risale al tempo in cui eravamo entrambistudenti universitari e avevamo modo di avere re-golarmente scambi di idee davanti ad una lavagnabianca (bevendo galloni di tè).In generale ritengo che Frederick Brooks ha

ragione quando nel libro The Mythical Man-Month Brooks, Jr (1995) sostiene che, per av-viare un progetto software di successo, hai biso-gno di una squadra di persone relativamente pic-cola e strutturata, che sia responsabile di deci-dere il progetto finale. Un grande “comitato” diprogetto porta solo a cattivi risultati, per arri-vare a troppi compromessi tra fazioni differen-ti, o per l’incorporazione di concetti progettualiincompatibili.

6

Page 9: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Intervista a Frank Mittelbach ArsTEXnica Nº 3, Aprile 2007

GP: TEX è diffusamente considerato il miglior si-stema di composizione tipografica, ma i composi-tori professionisti sembrano preferire l’uso di soft-ware visuale commerciale. Perché consiglieresti lo-ro di usare LATEX invece di un altro sistema? O,al contrario, perché no?

FM: Non c’è dubbio che TEX abbia qualità supe-riori in un buon numero di campi rispetto ad altrisistemi di composizione (ad esempio, la qualitàdella divisione dei capoversi, o la presentazione diformule matematiche, ecc.), ma è stato progettatocome un programma di elaborazione batch e ciòimplica il non permettere l’interazione con l’utente.Nei sistemi di composizione WYSIWYG l’utentepuò fare correzioni visuali, che sono dunque mo-strate istantaneamente, mentre con TEX (o LATEX)devi modificare il tuo sorgente e poi riprocessarlo econtrollare che le tue correzioni abbiano prodottol’effetto desiderato.Specialmente nell’ultima fase della produzione

di un libro, la tendenza di TEX a raggiungere l’altaqualità solo per mezzo di cambiamenti non imme-diatamente chiari può veramente essere un difettoanziché un pregio (almeno se non consideri il per-ché e adatti il tuo metodo di lavoro). Per esempio,a causa dell’ottimizzazione globale della suddivi-sione dei capoversi, la rimozione di una singolaparola in un capoverso determinerà un completoriallestimento dell’intero capoverso. Ciò potrebbe,in realtà, rendere il capoverso addirittura una rigapiù lungo, se TEX decidesse che un posizionamentopiù lasco di tutte le righe produrrebbe la miglio-re soluzione possibile. Se ciò accadesse durante lacorrezione dei refusi all’ultimo minuto, in un do-cumento altrimenti ben formattato, sarebbe unabella seccatura.La maggior parte dei grafici e dei compositori

professionisti sono abituati a lavorare visivamentecon risposta e controllo immediati. Dunque, adessi, sistemi come LATEX sembrano difficili da ma-neggiare e non vedono benefici in questi modelli dilavoro estranei.

Se l’uso di LATEX sia consigliabile o meno dipendefortemente dal lavoro che si ha sotto mano, e larisposta è sempre dipendente dal contesto. In breve,suggerirei di usare LATEX o sistemi simili quandouno o più fattori tra i seguenti giochi un ruoloimportante nell’ambito del lavoro:

• preferenza dell’utente a pensare per strutturelogiche;

• allestimenti che richiedono consistenza;

• documenti che non hanno un allestimentointeramente definito o saranno presentatiparallelamente in diverse vesti;

• documenti che richiedono suddivisione incapoversi di alta qualità;

• documenti che contengono molta matematica;

• contenuto prodotto automaticamente (adesempio, proveniente da database);

• materiale corposo.

D’altro canto, i seguenti fattori fanno penderel’ago della bilancia verso l’uso di un sistema visuale(di buona qualità!):

• preferenza dell’utente a pensare per strutturevisive;

• utente non del tutto a suo agio a lavorare conlinguaggi di programmazione (un front-enddi alto livello per TEX, ad esempio LATEX oConTEXt, aiuta, ma. . . );

• allestimenti che richiedono più flessibilità vi-suale che consistenza (ad esempio, le intesta-zioni sono disegnate una per una in base aglioggetti vicini);

• allestimenti che richiedono che il testo scorraintorno a forme arbitrarie (TEX non è statoprogettato per questo);

• allestimenti che cambiano la misura orizzon-tale da colonna a colonna;

• materiale non corposo.

Quello che realmente fa la differenza può variarein base alle circostanze. Per esempio, in The LATEXCompanion Mittelbach e Goossens (2004), coni suoi circa 1000 esempi nel testo, è stato un enormevantaggio poter riallestire l’aspetto degli esempisenza modificarli individualmente.

DW: C’è qualche relazione tra TUG, DANTE, oqualsiasi altro TEX Users Group e il LATEX Project,e come i vari gruppi di utenti potrebbero mantenerela vitalità di TEX e dei suoi derivati?FM: La relazione tra il LATEX Project e i TEX

Users Group può probabilmente essere ben descrit-ta come lasca e informale. Diverse attività del teamdi progetto sono state supportate, in un modo onell’altro, da un gruppo di utenti (ad esempio,fornendo spazi di incontro ad un convegno). Co-munque, la maggior parte delle attività del team hacontato su risorse diverse, come il supporto delloZDV (il laboratorio di calcolo dell’Università Gu-tenberg di Magonza), pagamenti dei diritti di TheLATEX Companion, e in piccola parte contributi deisingoli utenti. La maggiore alleanza con un gruppodi utenti è stata probabilmente lo sviluppo di unmodello per un insieme di caratteri matematici,per cui il gruppo di utenti francese ha finanziatouno studente per tre mesi per lavorare con me suquesto argomento. Il risultato di questo lavoro Zie-gler (1994) sta finalmente portando alcuni frutti,dato che è stato d’aiuto per lo sviluppo del fontSTIX.

7

Page 10: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Intervista a Frank Mittelbach

Comunque, i gruppi di utenti sono estremamen-te importanti per progetti come il LATEX Project,in quanto forniscono una struttura di ricerca percontatti e discussioni faccia a faccia in convegnie pubblicazioni su rivista. Non può essere sotto-stimato questo aspetto di fornire un ambiente diricerca. E, se il gruppo di utenti non fosse più ingrado di fornirla, si potrebbe arrivare anche allamorte della comunità. Certamente mi piace (e sonosicuro piaccia anche ad altri) lo scambio fruttuosoche è possibile solo in questa struttura.

È difficile rispondere alla domanda su che cosa igruppi di utenti possano fare a lungo termine persostenere la vitalità di TEX e i suoi derivati – sfor-tunatamente, non sono sicuro che gli stessi gruppidi utenti sopravvivano a lungo termine. Il ruolodelle organizzazioni di utenti è cambiato negli ulti-mi venti anni. All’inizio, solo ottenere un sistemaTEX installato era lo sforzo principale, e i gruppidi utenti erano formati da persone interessate adaiutarsi reciprocamente, a scambiarsi conoscenze eidee, e a supportare lo sforzo di sviluppo. Allora ilruolo dei gruppi di utenti era piuttosto chiaro e ilbeneficio per ogni membro era immediatamente vi-sibile, ad esempio, ottenere informazioni altrimentinon disponibili, avere aiuto, ecc.

Col passare del tempo, l’accesso alle installazioniTEX e ai suoi accessori (come pacchetti LATEX, ecc.)è drasticamente cambiato – le moderne installazio-ni sono preimpacchettate, il software è disponibilein grandi archivi, e c’è molta documentazione dispo-nibile. Come risultato, il tipico utente TEX/LATEXnon ha bisogno di capire i meccanismi sottostantie (sfortunatamente) non è più interessato a parte-cipare al loro sviluppo – gli utenti sono cambiatimolto: da membri di un gruppo di persone con in-teressi simili che partecipano attivamente, eccitatedalla possibilità di fare composizione tipografica dialta qualità, a utenti finali di un “prodotto finito”che diventano molto tristi se il prodotto non faesattamente ciò che gli utenti vogliono che faccia.Per questo nuovo tipo di utenti i gruppi di utentinon giocano un ruolo importante poichè, in questomomento, i gruppi di utenti non hanno risorse peraiutare fattivamente le persone nei loro problemi.

Ciò è in qualche modo ironico, dato che sono statiperlopiù i membri dei gruppi di utenti ad iniziaretutti quei cambiamenti che ora sembrano condurrealla fine della missione dei gruppi di utenti e dellaragione di esistere agli occhi dell’utente tipo.In teoria, penso che il modo migliore in cui i

gruppi di utenti possano aiutare attualmente sialavorare nelle seguenti aree:

• assumere e fornire le risorse che mantenganoil “prodotto” vivo e ben mantenuto;

• fornire un forum adatto per la comunità disviluppo;

• ottenere e gestire fondi di ricerca;

• attrarre nuovi utenti per allargare la base.

Sfortunatamente, nessuno di questi obiettivi èfacilmente raggiungibile. Ci sarebbe bisogno dicapitali (e risorse) consistenti, oltre quelli già adisposizione dei gruppi, e non è chiaro come ciò,come un charter, potrebbe attrarre abbastanzamembri nuovi, che potrebbero dunque dividersiquei costi. Dopotutto, alla maggior parte delle per-sone il “prodotto” e il suo supporto sembra esseredisponibile gratis, così, il pensiero degli utenti at-tuali è: “Perché pagare una (sostanziale) quotaassociativa periodica, quando tutto quello di cui siha bisogno è di collegarsi a Internet e porre unadomanda su comp.text.tex o scaricare qualchesoftware dal CTAN? Io non vado a quei convegnia cui ‘loro’ partecipano, dunque, perché dovrei ‘fi-nanziarli?’ ” Sarebbe necessario contrastare questopensiero e far capire alla gente perché i gruppi diutenti sono, nonostante tutto, benèfici per loro;ma, sfortunatamente, molte persone approfittanodi un pasto gratis se possono, senza considerare leconseguenze.

GP: Il tuo progetto ha generato una licenza: laLATEX Project Public License. Grazie alle ultimemodifiche ad essa, LATEX può veramente essere con-siderato un vero software libero. Come questo fattoha incrementato la diffusione di questo strumento?FM: Ad essere onesti, ho sempre considerato e

tuttora considero LATEX vero software libero, indi-pendentemente dalla licenza sotto cui era distribui-to in passato o è distribuito ora. Il termine “libero”ha significati decisamente diversi per persone di-verse, e non sono necessariamente d’accordo conl’idea di alcune persone che la loro libertà di potercambiare arbitrariamente le cose senza restrizionidovrebbe essere considerata un bene più impor-tante del diritto di altri ad ottenere quello che siaspettano quando usano un certo prodotto.

LATEX non è semplicemente un prodotto per unsingolo utente, ma un linguaggio usato per la co-municazione di informazioni e uno dei punti più im-portanti è che permette di elaborare un documentoin posti diversi con risultati identici, a patto chesia usata la stessa versione di LATEX. Questa è unacaratteristica su cui la gran parte della comunitàfa affidamento, così la LPPL (LATEX Project PublicLicense) originale LATEX3 Project Team (2003)diceva, in breve: fate qualunque cosa vogliate delfile X ma, se lo cambiate, (per esempio modifica-te il suo comportamento nel sistema) cambiateglinome in qualcos’altro, cosicché le persone che siaffidano alla caratteristica della comunicazione diLATEX non siano affette dalle vostre modifiche.

Tecnicamente, questo permetteva qualunque mo-difica e cambiamento desiderati, ma dava agli uten-ti di LATEX la scelta informata se usare o menouna versione modificata con i propri documenti. Inalcuni casi, ciò avrebbe comportato alcuni sforzi

8

Page 11: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Intervista a Frank Mittelbach ArsTEXnica Nº 3, Aprile 2007

Figura 3: The LATEX Companions: il box set definitivo

extra alle persone impegnate nelle modifiche, manel complesso ritengo che fornisse una buona viadi mezzo tra chi pensa che “libero” significhi il pro-prio diritto di cambiare a piacimento e chi pensadi avere diritto ad un mezzo di comunicazione diinformazioni affidabile.Comunque, alcuni sviluppatori nella comunità

del software libero pensano che questa sempliceregola restringa troppo i loro diritti (non potendocambiare le cose a piacimento, inclusi modi chenascondano le modifiche agli utenti finali – purnon essendo questa l’intenzione) e così è iniziatauna discussione sul fatto o meno che questa regolarenda il software non libero – il principale ostacoloper molti era il requisito di cambiare i nomi incaso di cambiamento dei contenuti. Chiaramente,questo requisito è abbastanza diverso da quelli im-posti dalla maggior parte delle licenze di softwarelibero, ma queste licenze sono state scritte con inmente un modello di software abbastanza diverso(quello in cui l’attenzione è rivolta a componenti disoftware individuali, in cui le differenze tra versioniusate in posti diversi non inficiano l’usabilità delsoftware)3. Ma, poiché non eravamo interessati adimporre un cambiamento di nome fine a se stesso(anche se pensiamo ancora che medi adeguatamen-te tra i diversi bisogni), ho intavolato una lungadiscussione con i legali di Debian e, come risul-

3. Per una discussione sul perché riteniamo che qualcosacome la GPL non sia un buon modello di licenza per ilinguaggi liberi, che è uno degli aspetti di LATEX, si vedaLATEX3 Project Team (1995).

tato, abbiamo tirato fuori una nuova licenza cheha ammorbidito tali requisiti, preservando ancorail bisogno di stabilità e affidabilità della comuni-tà. Essenzialmente, ritengo che la nuova licenzasia migliore in molte parti (e sono molto gratoad alcune persone dello staff legale di Debian peraverci aiutato ad ottenere il miglioramento), maè anche, forse inutilmente, più complessa di comesarebbe potuta essere in altre parti. Nel mondo diTEX, la licenza originale tentava di codificare quel-lo che era il comportamento standard e accettato,cioè, quando modificavi o miglioravi un pacchet-to, lo chiamavi in modo diverso cosicché i vecchidocumenti sarebbero stati compilati come atteso,mentre i nuovi potevano usare delle caratteristicheestese o cambiate, ed entrambi sarebbero potuticoesistere.Così, la licenza ha incrementato la diffusione

degli strumenti? Per come è concepito il mondo diTEX, direi di no, dato che anche la licenza originalegià codificava banalmente quello che la maggiorparte della gente riteneva un buon modello per ilsoftware nel dominio di TEX. Riferendoci al mon-do più grande del software libero in generale, lemodifiche hanno probabilmente aiutato la gente acapire che LATEX e amici sono anche software “li-bero” e hanno fornito una base comune per capireche i diversi requisiti d’uso possono aver bisogno didiverse interpretazioni di “libero” per essere utili.GP: Sei (sei stato, o sarai) coinvolto in altriprogetti di software libero?FM: La risposta dipende, probabilmente, dalla

definizione dei termini “progetto” e “coinvolgimen-to”. Molti dei miei attuali interessi sono più dinatura teorica e non necessariamente condurran-no al software, o almeno non a software alla cuiimplementazione parteciperò direttamente; queiprogetti a cui parteciperò più volentieri possonoessere etichettati sotto il titolo generico di sviluppodi TEX/LATEX. Per esempio, un paio di settimanefa Hàn Thê Thành (lo sviluppatore di pdfTEX),Morten Høgholm e io abbiamo trascorso un pro-duttivo fine settimana a casa mia a lavorare sualcune idee per la composizione a griglia4; quindi,sebbene non parteciperò all’implementazione, c’è eci sarà coinvolgimento in progetti esterni a LATEX.E, chissà, dato che nella mia vita professionale svol-go tutt’altro lavoro, forse anche quello condurràun giorno verso un pacchetto di software libero oun altro in quell’area.DW: Tu, più di altri, hai scritto circa il bisognodi andare oltre le limitazioni di TEX, suggerendoapprocci avanzati. Nella tua biografia su The LATEXCompanion Mittelbach e Goossens (2004) dicidi voler lavorare all’accorpamento di estensioni co-me Omega ed ε-TEX come base per un reale LATEX3.4. La composizione a griglia descrive allestimenti ba-

sati su un’invisibile griglia sottostante, che vincola ilposizionamento (e la dimensione) degli oggetti.

9

Page 12: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Intervista a Frank Mittelbach

Ovviamente, hai un percorso record nel realizzareprogetti TEXosi grandi e complessi. Intravedi di ve-nire coinvolto in qualcosa come il progetto exTEXo nell’inizio del tuo progetto di implementazione abasso livello per un miglioramento di TEX?

FM: Quando ho scritto E-TEX: Guidelines for fu-ture TEX extensions Mittelbach (1990) nel 1990,il tempo non era ancora maturo per migliorareTEX e molte persone hanno considerato veramenteun affronto a Don il fatto che avessi suggerito checi potesse essere qualcosa da migliorare nel suoprodotto (ricordo, per esempio, pubbliche fantasti-cherie circa strane teorie di un oscuro e sconosciutotipografo tedesco. Be’, quelle “strane teorie” misono state suggerite da nessun altro che HermannZapf che, sebbene tedesco, non può essere precisa-mente chiamato sconosciuto, meno che mai oscuro).Comunque, sia come sia, quello che stavo sfidandoin quell’articolo era la qualità di composizione alivello di microtipografia. In ogni caso, dato cheTEX era tecnicamente molto meglio di qualunquealtra cosa all’epoca, la mia sfida fu probabilmenteprematura, e ci è voluto circa un decennio primache fossero condotti i primi veri esperimenti a quellivello e le cose avanzassero in quel campo (pergran parte con lo sviluppo di versioni sperimentalidi pdfTEX, ma anche codice sperimentale di altri,come Matthias Clasen).

Discutendo dei miglioramenti a TEX bisogna di-stinguere tre aree fortemente disgiunte. La primaè l’area del linguaggio di programmazione e delfatto che questo linguaggio è incompleto e, percerti compiti, difficile da usare (o, come qualcu-no afferma, una porcheria). A quel livello (sen-za divergere dai paradigmi fondamentali di TEX),estensioni come ε-TEX, e per certi versi Omega,hanno tentato di semplificare la programmazionefornendo le primitive mancanti che colmassero leovvie lacune del linguaggio base. Ma, dato che talifunzionalità aggiuntive semplificavano solo la vi-ta al programmatore senza migliorare realmentei risultati della composizione e le funzionalità di(quasi) tutte le nuove primitive potevano essere ot-tenute con qualche sforzo extra nel linguaggio base,abbiamo deciso di evitarle nello sviluppo di LATEX,dato che il loro uso avrebbe dato come risultatouna versione di LATEX che avrebbe funzionato solosu una piccola frazione delle installazioni, senzaalcun vantaggio significativo per l’utente. Il LATEXProject, insieme a persone di ConTEXt ed ε-TEX,si è veramente sforzato per produrre una defini-zione di sintassi arricchita per ε-TEX Carlisle(1998) che pensavamo avrebbe fornito abbastanzabenefici per passare ad un successore di TEX cheimplementasse questo set esteso. Tristemente, pocotempo dopo questa proposta, il lavoro su ε-TEXsi è veramente interrotto e niente di tutto ciò fumai implementato. Ciononostante, qualcosa è cam-biato da allora: la base installata di installazioni

abilitate ad ε-TEX è cresciuta oltre la massa cri-tica (largamente grazie a pdfTEX che includevale estensioni ε-TEX) cosicché, qualche tempo fa,il LATEX Project ha annunciato ufficialmente chebaserà le future versioni di LATEX su questo setesteso di primitive – ed ha recentemente inizia-to a produrre realmente codice facente uso di diqueste caratteristiche estese (sebbene ancora so-lo al di fuori del codice del kernel). In sostanza,non abbiamo mai voluto allontanarci dall’esserein grado di far girare LATEX appena spacchettatosu una larga base di interpreti installati e abbia-mo ritenuto ciò più importante di un linguaggiodi programmazione potenzialmente più semplice omeglio ingegnerizzato che quasi nessuno potrebbeutilizzare5. Così, invece di provare semplicementead influenzare il linguaggio TEX estendendolo, io ealcuni altri nel progetto LATEX abbiamo lavoratoanche dall’interno sviluppando il “linguaggio diprogrammazione sperimentale LATEX” Carlisleet al. (1997). Questo è stato fatto su molti prototi-pi (il primo realizzato già nel 1993 o giù di lì). Laversione corrente è qualcosa che pensiamo possaessere usato con successo ed abbiamo comincia-to a fornire i primi pacchetti pubblici in questolinguaggio LATEX3 Project Team.

La seconda area è quella che ha a che fare con iproblemi di microtipografia, cioè quelli a cui eroprincipalmente interessato quando esponevo le de-ficienze di TEX in Mittelbach (1990). In questaarea il mio coinvolgimento era largamente confinatoa dare inizio al lavoro per altri.

La terza area è quella che si interessa delle que-stioni generalmente aperte e irrisolte della tipogra-fia digitale, come i modelli per la rappresentazionedel materiale logico Mittelbach (1997) e con-tenuti visuali Rowley e Mittelbach (1997), letrasformazioni tra rappresentazione visuale e lo-gica mediante metodi automatici che forniscanocomunque la più alta qualità in accordo ad unametrica definita Mittelbach e Rowley (1992),per dare alcuni esempi. Parte di questa ricerca ècapire e codificare le regole tipografiche e sviluppa-re concetti e algoritmi che possano essere guidatida regole parametrizzate, ad esempio per produrreun posizionamento mobile di alta qualità.Intravedo di iniziare il mio personale progetto

di implementazione a basso livello per migliorareTEX? Quasi certamente no, ma intravedo di essere(di nuovo) coinvolto negli sviluppi correntementein atto e spero di unire alcuni di questi sviluppi.Se questo avverrà in un progetto come exTEX o

5. Ho imparato che questo è un fattore critico quandoabbiamo provato ad introdurre LATEX2ε nel 1994, il qualerichiedeva l’installazione dei font codificati T1 (per esempio,font contenenti caratteri con segni diacritici). Il passaggio alnuovo sistema è quasi fallito perché gli utenti statunitensinon vedevano alcun vantaggio in un sistema contenente tuttiquei caratteri inutili, necessari solo agli europei. Abbastanzafortunatamente, LATEX2ε aveva altri benefici che hannoprevalso per tutti gli utenti, ma è stato per un pelo.

10

Page 13: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Intervista a Frank Mittelbach ArsTEXnica Nº 3, Aprile 2007

pdfTEX è decisamente irrilevante. In questo mo-mento ci sono ancora molte questioni irrisolte ed èancora tempo di esperimenti (che possono avvenirecontemporaneamente in diversi progetti), ma unobiettivo importante sarebbe riunire i vari svilup-patori per parlarsi delle loro idee e dei concettidietro le idee.

GP: Hai citato due sistemi operativi verso cui èstato portato LATEX e sappiamo che gira su diversiOS liberi e non liberi (sia commerciali che no). Chetipo di sistemi e programmi usi principalmente? Eperché?

FM: Per essere precisi, LATEX è interpretato, dun-que non è un software che abbia bisogno di essereportato verso alcun sistema; LATEX gira ovunqueTEX sia stato portato – e TEX, per quanto ne so, èstato portato più o meno su tutti i sistemi operati-vi mai esistiti (con l’eccezione di qualcosa simile aPalm OS); ad esempio, io l’ho usato su Mainframe,VMS, Unix, Multics e Windows.

Uso sia sistemi operativi liberi che commerciali;molto dipende dall’ambiente e dal compito sotto-mano. A casa uso principalmente Linux con VM-ware per accedere ad alcuni programmi disponibilisolo per Windows. Sul mio portatile la situazioneè inversa: lì gira XP nativo e uso cygwin per unambiente a linea di comando decente con tutti ivantaggi di un buon sistema Unix. Il mio editorpreferito è Emacs, che uso praticamente su ognipiattaforma. Mi piace strutturare le cose usandole mappe mentali e per questo l’unico programmaveramente buono che ho trovato è commerciale egira solo sotto Windows – è una delle ragioni percui questi giorni uso Windows regolarmente6.

Nel mondo professionale, in cui mi guadagno davivere, il sistema operativo predominante è Win-dows, e nel mondo dei server troverai varianti com-merciali di Unix, ma anche un numero crescentedi server Linux.Quello che uso dipende molto dal lavoro sotto-

mano: per qualcuno, come la gestione di progetti,il mondo Windows offre semplicemente gli stru-menti migliori; in altri, il software libero (che girasu OS liberi o commerciali) offre migliore qualità ocaratteristiche altrimenti non disponibili. Esempipotrebbero essere Perl, Apache, CVS, subversione altri.

DW: Ricordo Knuth dire che scrivere The TEXbookha portato a centinaia di modifiche a TEX, perchéera costretto a spiegare le cose al lettore e, quandonon ci riusciva, cambiava il programma. Tu haiscritto una certa quantità di libri e sei stato unosviluppatore importante. Il tuo lavoro come autoreha influenzato il tuo lavoro come sviluppatore, oviceversa?

6. Ho recentemente riprovato il programma libero free-mind ed è stato molto migliorato, per cui la cosa puòcambiare ancora.

FM: Penso che Don abbia assolutamente ragionenel fare quest’affermazione: penso che sia estrema-mente prezioso combinare lo sviluppo del software(in realtà qualunque cosa) con lo scriverne in qual-che forma. Provare a spiegare ad altri le funzioni e iconcetti dietro una creazione aiuta molto a scoprirese qualcosa funzionerà in pratica o no. Se non puoispiegarlo, o se la spiegazione risulta orribilmentecomplicata, allora c’è qualcosa di fondamentalmen-te sbagliato nella tua creazione e dovresti tornareal tavolo da disegno.È molto importante qui non fermarsi alla sem-

plice documentazione delle funzioni o delle vocidei menu (sebbene sia un inizio), ma provare real-mente a documentare il ciclo d’uso e le ragioniper cui si farebbero le cose in un modo o in unaltro. Abbastanza spesso (sia con software liberoche commerciale), si trova solo documentazionerudimentale che racconta che esistono questa equest’altra caratteristica, ma non spiega mai per-ché si vorrebbe usare quella caratteristica in primaistanza. Quel tipo di documentazione, sebbene ne-cessaria, non ti aiuta a migliorare il tuo strumento(e, abbastanza spesso, sembra che tali caratteri-stiche siano state implementate solo perché eranofacili da aggiungere, senza fornire alcun beneficioreale).

Quindi sì, documentare le idee e i flussi di lavoroè sempre stato per me parte integrante dello svi-luppo e/o del miglioramento del mio software, cosìcome del software altrui. In The LATEX Compa-nion Mittelbach e Goossens (2004), per esem-pio, buona parte di ciò che descrivo è softwaresviluppato da altri e il processo di provare a spiega-re come usarlo e trovare buoni esempi d’uso porta,in molti casi, a miglioramenti nella sintassi o nellecaratteristiche dopo averne discusso con gli autori.Di conseguenza, il mio consiglio agli sviluppa-

tori è di provare sempre ad autodocumentare leproprie creazioni, o almeno trovare qualcuno chelo faccia per loro (partendo dall’inizio dello svilup-po!), e valutare le scoperte di questo processo: nerisulteranno notevoli miglioramenti al prodotto.DW: Grazie molte, Frank, per aver trovato il tempodi fare quest’intervista con noi. I tuoi approfondi-menti su TEX, LATEX e lo sviluppo e la diffusione disistemi complessi in un ambiente di elaborazionedistribuito sono affascinanti. Credo che i letto-ri dell’Angolo delle Interviste del TUG sarannod’accordo.E grazie a te, Gianluca, per aver accettato di

farmi condividere quest’intervista con te. È statoun piacere lavorare con te.GP: Grazie, Frank, per aver dato ai lettori di FreeSoftware Magazine un saggio molto ben spiegatosu un importante pezzo di software libero. Inoltre,la tua spiegazione sulla LPPL ha chiarito alcunipunti oscuri di un precedente articolo Pignalberi(2005). E grazie a te, Dave, per avermi dato la

11

Page 14: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Intervista a Frank Mittelbach

possibilità di fare quest’intervista congiunta, che èmolto più interessante di un’intervista “normale”.FM: Grazie, Dave e Gianluca, per aver condottoquest’intervista nel modo in cui lo è stata. Mi è pia-ciuto vederla svilupparsi domanda dopo domanda;nonostante il tempo che ha richiesto (colpa mia) eil fatto che viviamo distanti, mi è sembrato di fareun’intervista faccia a faccia che, penso, sia comedoveva essere.

Note e licenzaLa presente intervista è apparsa in origine su TUGInterview’s Corner e Free Software Magazine nº 12.L’articolo è © 2006 degli autori, ed è rilasciato conla seguente licenza: “Sono permesse la copia e ladistribuzione verbatim del presente articolo conogni mezzo e senza pagamento di diritti d’auto-re soltanto se la presente nota è parte integran-te dell’articolo”. Traduzione a cura di GianlucaPignalberi.

Riferimenti bibliograficiLATEX3 Project Team. «The LATEX ProjectCVS Repository». Disponibile su http://www.latex-project.org/cgi-bin/cvsweb/.

— (1995). «Modifying LATEX». Disponibile contutte le distribuzioni LATEX.

— (2003). «The LATEX Project Public License(Version 1.3)». Disponibile su http://www.latex-project.org/lppl/.

Brooks, Jr, F. P. (1995). The MythicalMan-Month; Essays on Software Engineering.Addison-Wesley, Boston, Massachusetts, 2ªedizione.

Carlisle, D. (1998). «Notes on the Oldenburgε-TEX/LATEX3/ConTEXt meeting». Disponibilesu http://www.latex-project.org/papers/etex-meeting-notes.pdf.

Carlisle, D., Rowley, C. e Mittelbach, F.(1997). «The LATEX3 Programming Language—a proposed system for TEX macro programming».TUGboat, 18 (4), pp. 303–308. Disponibilesu http://www.tug.org/TUGboat/Articles/tb18-4/tb57rowl.pdf.

Mittelbach, F. (1990). «E-TEX: Guidelines forFuture TEX Extensions». TUGboat, 11 (3), pp.337–345. Disponibile su http://www.tug.org/TUGboat/Articles/tb11-3/tb29mitt.pdf.

— (1997). «Language Information in StructuredDocuments: Markup and rendering—Concepts

and problems». In International Symposium onMultilingual Information Processing. Tsukuba,Japan, pp. 93–104. Articolo invitato. Ripubblica-to su TUGboat 18(3):199–205, 1997.Disponibilesu http://www.tug.org/TUGboat/Articles/tb18-3/tb56lang.pdf.

Mittelbach, F. e Goossens, M. (2004). TheLATEX Companion. Tools and Techniques forComputer Typesetting. Addison-Wesley, Boston,Massachusetts, 2ª edizione. With JohannesBraams, David Carlisle, and Chris Rowley.

Mittelbach, F. e Rowley, C. (1992). «Thepursuit of quality: How can automated type-setting achieve the highest standards of crafttypography?» In EP92—Proceedings of Elec-tronic Publishing, ’92, International Conferenceon Electronic Publishing, Document Manipula-tion, and Typography, Swiss Federal Instituteof Technology, Lausanne, Switzerland, April 7–10, 1992, a cura di C. Vanoirbeek e G. Co-ray. Cambridge University Press, New York, pp.261–273.

Pignalberi, G. (2005). «The LATEX ProjectPublic License». Free Software Magazine,(7), pp. 52–54. Disponibile su http://www.freesoftwaremagazine . com / free _ issues /issue_07/tex_license/.

Rowley, C. A. e Mittelbach, F. (1997).«Application-independent representation of mul-tilingual text». In Europe, Software + the Inter-net: Going Global with Unicode: Tenth Interna-tional Unicode Conference, March 10–12, 1997,Mainz, Germany, a cura di Unicode Consor-tium. The Unicode Consortium, San Jose, CA.Disponibile su http://www.latex-project.org/papers/unicode5.pdf.

Ziegler, J. (1994). «Technical report on mathfont encoding (version 2)». Technical report,LATEX3 project. Disponibile su CTAN: info/ltx3pub/l3d007.*.

. Frank MittelbachLATEX [email protected]

. Gianluca PignalberiFree Software [email protected]

. Dave [email protected]

12

Page 15: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEX e la cesura delle parole in fin di riga

Claudio Beccari

SommarioQuesto articolo è destinato a spiegare come fa ilsistema TEX a comporre i capoversi, all’occorrenzadividendo in sillabe le parole in fin di riga.Questo articolo serve per fornire le indicazioni

necessarie per capire certi funzionamenti strani delcompilatore LATEX (in realtà dell’interprete TEX)quando sembra rifiutarsi di spezzare le righe inmodo adeguato. L’errore, se c’è, è sempre umano,ahimè, e deriva dall’insufficiente comprensione delfunzionamento della macchina che in questo casoè TEX.

AbstractThis tutorial explains how TEX (the program) type-sets paragraphs, possibly by hyphenating words atline breaks.This tutorial should explain LATEX’s (actually

TEX’s) strange beheavior in certain circumstanceswhen apparently refuses to correctly break lines.If there is some error, unfortunately this is alwaysa human one, and it is due to an insufficient un-derstanding of TEX’s procedures and algorithms.

1 Composizione dei capoversiTEX forma i capoversi leggendo dal file sorgentela sequenza di lettere, parole, spazi, comandi, ec-cetera, per formare una lunga riga che contienetutto il capoverso1. Nel momento in cui questalunga riga è pronta, TEX ha già eseguito tutte lemacro e i comandi che riguardano il capoverso stes-so; in particolare ha già eseguito le scelte dei font,l’inserzione dei caratteri, compresi quelli a cui ilcompositore accede per mezzo di comandi, ha inse-rito i richiami di nota e le espressioni matematichein linea, eccetera.

Generalmente questa lunga riga va spezzata in ri-ghe della giustezza specificata per quel determinatocapoverso, che potrebbe trovarsi nel testo princi-pale, o dentro una lista, o dentro una minipageo una \parbox. Le giustezze cambiano quindi aseconda della posizione del capoverso, ma che lagiustezza sia pari a \textwidth, a \linewidth, a\columnwidth o ad un altro valore non ha nessunaimportanza; resta il fatto che la lunga riga deve

1. Si ricorda che in italiano si chiama capoverso quelloche in inglese si chiama paragraph; e in italiano si chiamaparagrafo quello che in inglese si chiama section. Bisognaevitare di confondere i concetti.

essere spezzata in parti più corte tutte della stessalunghezza, tranne l’ultima riga del capoverso.

TEX cerca di trovare dapprima le divisioni dellariga in parti senza dividere in sillabe le parole infin di riga, inserisce la gomma elastica negli spaziinterparola e attribuisce un coefficiente di meri-to al risultato basandolo sul calcolo di quanto hadovuto allargare o restringere ogni riga parziale:il coefficiente di merito, o meglio di demerito, sichiama badness o bruttezza. Se questa bruttezzaè inferiore ad un certo valore specificato nel filedi classe con cui si sta componendo (il parametro\pretolerance), bene, la divisione è fatta e il ca-poverso così formato dalle diverse righe parzialiviene aggiunto alla pagina che si sta componen-do, prima di attivare l’algoritmo per spezzare lapagina; via via che questa pagina va riempiendo-si, viene determinata la sua “bruttezza” in base aquanto bisogna allargare o restringere la gommaverticale per raggiungere l’altezza della gabbia dicomposizione e poi, quando questa bruttezza è mi-nima, si taglia via la parte superiore insieme allenote e agli oggetti flottanti di cui si è già tenutoconto e si accoda questo materiale al file DVI oPDF che si sta componendo.Tuttavia, ritornando al capoverso, se nessuna

divisione in righe parziali, fra le tante divisionipossibili, della lunga unica riga riesce a dare unabruttezza inferiore a \pretolerance, allora TEXriprende la lunga unica riga e cerca le divisionispezzando alcune parole in fin di riga; per ognidivisione in sillabe, cioè per ogni cesura eseguitain fin di riga, alla riga viene associata una pena-lità che fa aumentare la bruttezza. Se due righeconsecutive hanno subito la cesura viene aggiuntaun’altra penalità; se la penultima riga del capover-so ha subito la cesura si aggiunge ancora un’altrapenalità. Di tutte queste penalità si tiene contoinsieme ai coefficienti di allargamento o restringi-mento delle varie righe parziali per determinare labruttezza complessiva per le varie possibili sceltedelle cesure. Viene scelto quell’insieme di cesu-re che produce la minima bruttezza. Se questascelta produce un bruttezza inferiore ad un secon-do parametro \tolerance specificato nel file diclasse, bene, il capoverso viene accodato così divi-so in righe alla scatola 255, altrimenti TEX fa unterzo tentativo con una tolleranza maggiore, macomunque emette un messaggio di avvertimentosegnalando la riga peggiore della prescelta divisio-ne in righe e produce i vari messaggi di overfullhbox o di underfull hbox; le righe (hbox) troppo

13

Page 16: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEX e la cesura delle parole in fin di riga

piene fuoriescono dal margine destro e ne vienecomunicato l’ammontare solo se supera la quanti-tà specificata con il parametro \hfuzz. Le righetroppo vuote, cioè contenenti troppo spazio bianco,sono state riempite di colla che ha dovuto essereallungata troppo contribuendo in modo sostanzialealla bruttezza del capoverso; per queste righe vie-ne comunicata la bruttezza, solo se è superiore alparametro \hbadness specificato nel file di classe.Generalmente \hfuzz è dell’ordine di grandezzadi un punto tipografico, circa un terzo di millime-tro. La bruttezza che passa senza messaggi sulloschermo è dell’ordine di qualche centinaio; unabruttezza di 10 000 per TEX significa “bruttezzainfinita”.È evidente che per comporre bene TEX deve

avere le condizioni migliori per farlo; con righepiù lunghe di 100mm la possibilità di dividerebene il capoverso è praticamente assicurata in ognicaso scrivendo in italiano, purché non si usinofont della famiglia a spaziatura fissa, per i quali lacesura è interdetta. In italiano si riesce a comporreabbastanza bene fino a giustezze di circa 30mm,ma ovviamente la cosa dipende molto dal contenutodel capoverso; in altre lingue giustezze così piccolegenerano una quantità di avvertimenti di overfulle underfull hbox. È quindi chiaro che la capacitàdi giustificare bene le righe di un capoverso dipendemolto dall’efficienza dell’algoritmo di divisione insillabe oltre che dalle regole grammaticali di ognilingua.

2 Le parole del file sorgenteIl programma TEX non conosce la lingua con cuista componendo; riesce a distinguere le parole conregole euristiche abbastanza semplici:

1. una parola è una sequenza di lettere; una let-tera è un segno di un font al quale è statoattribuito il codice di categoria2 11 o 12 eal quale è associato un codice di lettera mi-nuscola (ritorneremo su questi concetti frapoco);

2. la sequenza di lettere è composta tutta con lostesso font;

3. la sequenza di lettere comincia dopo unospazio (colla) o dopo un segno di categoria 12;

4. la sequenza di lettere finisce con il primo ca-rattere o con il primo oggetto diverso da unalettera, sia esso uno spazio, un segno di in-terpunzione, un comando, una scatola, dellamatematica, o qualsiasi altra cosa diversa dauna lettera;

2. Per una chiara spiegazione dei codici di categoria cisi può riferire all’articolo di Gregorio (2006), oltre cheall’immancabile TEXbook di Knuth (1984).

5. dopo la fine di quella che TEX ha identificatocome una sequenza di lettere, TEX non rico-mincia ad esaminare altre sequenze di oggetti(token, in gergo TEX) finché non trova di nuovoun valido inizio di sequenza di lettere.

In generale non è così scontato che una sequenzadi lettere che per noi è una parola lo sia anche perTEX. Per esempio, la parola “elettricità” è comple-tamente una parola se il font di uscita è codificatocon la codifica T13 o equivalente, ma la parolache TEX riconosce è solamente “elettricit” se stalavorando con la codifica OT1, perché la rappresen-tazione interna della ‘à’ è data da “elettricit\‘a”ovverosia “elettricit\accent18a”; il comandoper collocare l’accento termina la sequenza di let-tere che TEX crede che sia una parola. In definitivacon la codifica T1 TEX riesce a trovare le possibiliposizioni delle separazioni delle sillabe “e-let-tri-ci-tà”, mentre con la codifica OT1 ne perde unae nel caso riesce a dividere la parola “elettricità”solo con la possibile divisione “e-let-tri-cità”.

In francese la cosa è ancora più critica; la parola“électricité” è divisibile in “é-lec-tri-ci-té” con lacodifica T1, ma non è divisibile per niente con lacodifica OT1, perché dopo il primo comando perl’accento, TEX non trova un altro possibile iniziodi parola se non con l’inizio della parola successiva.Va notato che negli esempi riportati sopra si

sono indicati i possibili punti di cesura secondo leregole grammaticali. In tipografia le regole di divi-sione devono rispettare sia le regole grammaticali,sia le regole di buona composizione tipografica,secondo la quale non si va mai a capo in fin diriga lasciando nella riga una sillaba troppo cor-ta o rimandando alla riga successiva una sillabatroppo corta. Per ogni lingua è definito un valoreper ciascuno dei due parametri \lefthyphenmine \righthyphenmin; per l’inglese e il francese essivalgono rispettivamente 2 e 3; per l’italiano essivalgono 2 e 2; per il greco 1 e 1; questi numerirappresentano il numero di lettere minimo accet-tabile per la sillaba a sinistra della prima cesuratipografica e, rispettivamente, a destra dell’ultimacesura tipografica. Di fatto, se avendo in vigore lacodifica T1, si dessero i comandi

\showhyphens{elettricità}\showhyphens{électricité}

3. Qui si da per scontato che i lettore abbia un minimodi conoscenza delle codifiche OT1 e T1 per i caratteri latiniche vengono usati dal sistema TEX. La vecchia codifica OT1corrisponde a font che contengono solo 128 segni (codificaa 7 bit) e quindi non può contenere le lettere accentate,ma produce l’uscita mediante comandi di basso livello chesovrappongono il segno dell’accento al segno della lettera.La codifica T1 (codifica a 8 bit) contiene 256 segni che com-prendono la quasi totalità dei segni accentati che si usanonelle lingue europee, quindi l’uscita è prodotta direttamen-te con i segni accentati e senza acrobazie per sovrapporrel’accento sulla lettera da accentare.

14

Page 17: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEX e la cesura delle parole in fin di riga ArsTEXnica Nº 3, Aprile 2007

LATEX fornirebbe sullo schermo e nel file .log leinformazioni seguenti

Underfull \hbox (badness 10000)in paragraph at lines 146--146

[] \T1/cmr/m/n/10.95 elet-tri-ci-tà

\hbox(7.54149+0.0)x16383.99998,glue set 8998.3789 []

Underfull \hbox (badness 10000)in paragraph at lines 148--148

[] \T1/cmr/m/n/10.95 élec-tri-cité

\hbox(7.54149+0.0)x16383.99998,glue set 8998.3789 []

Il comando \showhyphens compone il suo argo-mento dentro una scatola orizzontale di lunghezzapari a 16384 punti (circa 5m) e ovviamente lascatola risulta quasi vuota e infinitamente malcomposta (badness 10000) per cui viene emessoil messaggio di avvertimento e le informazioni rela-tive alla scatola mal composta con il suo contenutodiviso in sillabe come TEX lo farebbe. Si vede chia-ramente che in italiano è persa la prima possibilecesura grammaticale, perché lascerebbe a sinistraun sillaba di una sola lettera. Analogamente peril francese vengono perse sia la prima sia l’ultimacesura grammaticale, perché le sillabe a sinistrae a destra conterrebbero meno caratteri di quan-to specificato dai parametri \...hyphenmin validiper il francese.

Grazie al fatto che in italiano gli accenti obbliga-tori cadono solamente sulla vocale terminale delleparole tronche, la convenzione tipografica non pro-duce effetti molto diversi con le codifiche OT1 oT1; in francese, al contrario, l’effetto con la codificaOT1 sarebbe devastante.Va notato che per l’italiano le regole di silla-

bazione sono state create assumendo i valori di\...hyphenmin entrambi pari a 1, ma le imposta-zioni nel file di descrizione della lingua italianali mettono entrambi a 2. Nessuno vieterebbe alcompositore di assegnare i valori unitari ai dueparametri suddetti, ma certamente la sua compo-sizione sarebbe soggetta a critiche estetiche nonindifferenti.

3 I codici di categoriaI codici di categoria, in particolare i codici 11 e 12si riferiscono rispettivamente alle lettere dell’alfa-beto e ai segni di interpunzione. Le impostazionidi LATEX sono tali che se viene invocato il pacchettofontenc con l’opzione T1, sono dichiarate letterenon solo le 26 lettere minuscole e le 26 lettere ma-iuscole dell’alfabeto latino, ma anche tutte le lorovarianti con tutti i possibili segni diacritici oltre aisegni speciali che compaiono in varie lingue, come

per esempio ß, ŋ, ð, đ, þ. A ogni lettera minuscolaè associato il codice della corrispondente letteramaiuscola e viceversa, così che possano essere ese-guite le trasformazioni da maiuscolo a minuscolo eviceversa mediante i comandi \MakeUppercase e\MakeLowercase.

Tuttavia il codice di lettera minuscola è un requi-sito essenziale per considerare un carattere comefacente parte di una parola. Anche i segni di in-terpunzione possono avere associato il codice dilettera minuscola, sebbene a prima vista non sicapisca bene a che cosa possa servire. Serve sem-plicemente a TEX per stabilire se quel segno puòalterare la divisione in sillabe oppure no. Le regoledevono quindi tenere conto della presenza di que-sti segni considerandoli come parti integranti dellaparola da dividere in sillabe.Non è che ci siano tanti segni di questo gene-

re. Lo scrivente è al corrente che solo l’italiano,il francese e il catalano usano l’apostrofo con ilsignificato di elisione di una vocale. In questo casouna parola in senso lato come “bell’accoglienza” èdivisibile in sillabe dopo l’apostrofo se e solo se l’a-postrofo ha associato il codice di lettera minuscola(un valore qualunque non negativo, e tanto valeallora che questo valore coincida con l’indirizzodell’apostrofo nella polizza dei caratteri in uso).Si noti che se l’apostrofo non fosse associato alsuo valore di lettera minuscola, l’esempio propostosopra troverebbe TEX incapace di dividere in sil-labe “bell’accoglienza”, perché l’unica parola chericonoscerebbe sarebbe “bell”, divisibile gramma-ticalmente in “bel-l”, ma l’ultima sillaba a destrasarebbe troppo corta. Dichiarando che l’apostro-fo, pur mantenendo la categoria 12 di segno nonletterale, ha associato un codice di lettera minusco-la, TEX riconosce “bell’accoglienza” come un’unicaparola e deve conoscere le regole di divisione per pa-role composte anche di apostrofi. La sua divisione,con queste regole, è pertanto “bel-l’ac-co-glien-za”;come si vede, queste regole impediscono di andarea capo dopo l’apostrofo: questa pratica è comune-mente accettata in tipografia, anche se si chiudeun occhio quando si compone in colonne moltostrette; tuttavia TEX così come è configurato sirifiuta categoricamente di eseguire una operazionedel genere.

4 I pattern di sillabazioneLe regole grammaticali di divisione in sillabe va-riano ovviamente da lingua a lingua: per l’italianosono molto semplici; in francese esse sono un po’più complesse. Per l’inglese sono estremamentecomplesse da eseguire a macchina perché dipendo-no dalla accentazione e parole omografe risultanodivise in sillabe differentemente a seconda di comevengono pronunciate: si pensi che record (verbo)e record (sostantivo) vengono pronunciate rispet-tivamente recòrd e rècord; le divisioni in sillabe

15

Page 18: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEX e la cesura delle parole in fin di riga

diventano pertanto rispettivamente re-cord e rec-ord; lo stesso succede per parole come analysespronunciato anàlyses (plurale del sostantivo analy-sis) o analýses (terza persona singolare del verboto analyse); inoltre le regole di sillabazione perla varietà americana sono diverse da quelle dellavarietà britannica.

In tedesco sono complessissime a causa delleparole composte, dove la cesura non può non caderenei punti di giunzione delle parole componenti epuò provocare anche un cambio di ortografia.

Tenuto conto del fatto che l’algoritmo di divi-sione in sillabe viene invocato da TEX molto fre-quentemente, è necessario che queste regole sianoformulate in modo che TEX le possa consultare conla massima rapidità.

Frank Liang era studente a Stanford quandoKnuth stava producendo la prima versione del pro-gramma TEX; egli svolse la sua tesi di master sullasillabazione mediante calcolatore, Liang (1983);il suo problema era quello di trovare una strut-tura dati molto rapida da esplorare e sviluppòuna struttura nuova che risultò particolarmenteefficace. La sua tesi è accessibile alla lettura dimolte persone che abbiano una minima conoscenzadell’informatica, o meglio della “computer scien-ce”: anche se perdono qualche dettaglio teorico, lalettura è affascinante.

Il metodo di scrittura delle regole di Liang sibasa sui pattern; questi sono frammenti di paro-la che contengono le informazioni per inserire ovietare una cesura fra le lettere che compongonoil frammento. Usare i frammenti di parola rendel’elenco delle cesure permesse o vietate molto piùcompatto che non un intero dizionario di paroledivise in sillabe; inoltre questo insieme di fram-menti può essere messo dentro una struttura datiadeguata per la ricerca rapida dei frammenti.

Ciò richiede che sia creata la lista dei patterne che questa sia predigerita da TEX in modo chela struttura dati sia già pronta quando TEX lavoraper la composizione.

Il primo punto può essere eseguito con il pro-gramma patgen, mentre il secondo è quell’aspettodelicato che sfugge alla maggior parte degli utentidel sistema TEX, cioè che questa predigestione èsvolta nel momento in cui si crea il file di forma-to con estensione .fmt o .efmt. Spesso gli utentisi lamentano dicendo: “Ho caricato il pacchettobabel con l’opzione italian, ma poi LATEX dividele sillabe in modo sbagliato”. Certo, ciò succedeperché TEX non trova nel file di formato le regole disillabazione nella struttura dati con i pattern perl’italiano, perché il responsabile del sistema, di soli-to il proprietario o l’amministratore del computer,si è dimenticato di creare o ricreare il formato.

4.1 Il file di formato contiene i pattern disillabazione

Le varie distribuzioni del sistema TEX contengonomeccanismi vari per creare il file di formato; allafin fine il tutto si riduce a eseguire il programmainitex specificando come input il nome del file dicui si vuole predigerire il contenuto e creare il filedi formato.

Lanciando initex sul file latex.ltx viene crea-to il formato latex.fmt; un file di configurazionespecifica per quali lingue siano da incorporare ipattern; molte delle ultime distribuzioni del siste-ma TEX predigeriscono in fase di installazione tuttii pattern di tutte le lingue di cui esistono i corri-spondenti file di pattern. MiKTEX ha un comodoprogramma di configurazione con interfaccia gra-fica che consente di marcare le lingue desideratee di eseguire la creazione dei file di formato conpochi click su appositi bottoni.Ogni volta che si cambia l’insieme delle lingue

bisogna ricreare i file di formato; la prima volta chesi installa la distribuzione del sistema TEX bisognacreare il file di formato o almeno bisogna verificareche il file di default creato durante l’installazionecontenga le regole di sillabazione per tutte le lingueche interessano, altrimenti bisogna ritornare sullaconfigurazione, eseguire le modifiche necessarie e,infine, ricreare i file di formato.Per essere sicuri che il proprio sistema TEX

sia correttamente configurato anche per l’italianobasta creare il semplice file sorgente seguente

% file sillabazione.tex\documentclass{minimal}\usepackage[italian]{babel}\begin{document}\showhyphens{equazione}\end{document}

Lanciando la compilazione di questo brevissi-mo file non si produce nessuna pagina in uscitama si ottiene sullo schermo (e nel file .log) quelloche LATEX pensa sia la divisione in sillabe corretta;se sullo schermo appare equa-zio-ne, l’italianoè ben configurato anche come sillabazione; se sul-lo schermo appare equ-a-zione la divisione insillabe corrisponde alla lingua di default, cioè al-l’inglese. Bisogna quindi rivedere la questione dellaconfigurazione e procedere alla creazione del nuovoformato.

4.2 Come funzionano i patternI pattern, dunque, sono dei frammenti di parola(scritti in lettere minuscole) dove sono indicati ipossibili punti dove la divisione in sillabe è consen-tita oppure è vietata. Questi punti sono indicatimediante cifre da 0 a 9 intercalate alle lettere:le cifre dispari consentono la cesura in quel pun-to, mentre le cifre pari la vietano; la cifra zero èsottintesa e quindi non viene quasi mai indicata

16

Page 19: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEX e la cesura delle parole in fin di riga ArsTEXnica Nº 3, Aprile 2007

b e l l ’ a c c o g l i e n z ab 0 e 0 l 0 l 0 ’ 0 a 0 c 0 c 0 o 0 g 0 l 0 i 0 e 0 n 0 z 0 a

1 l 0 0 ’ 2 1 c 0 1 g 0 1 n 01 l 0 1 c 0 1 l 0 1 z 0

2 l 0 l 0 2 c 0 c 0 0 g 2 l 0 2 n 0 z 0

b 0 e 2 l 1 l 0 ’ 2 a 2 c 1 c 0 o 1 g 2 l 0 i 0 e 2 n 1 z 0 a

bel-l’ac-co-glien-za

Tabella 1: Processo di divisione in sillabe mediante i pat-tern della lingua italiana; la seconda riga della tabella con-tiene i codici di default, tutti valori nulli a sinistra e a destradi ogni lettera.

esplicitamente. Se ad una parola si applicano di-versi pattern e fra due lettere un pattern indica unvalore mediante una cifra e fra le stesse due lettereun altro pattern indica un diverso valore, prevaleil valore più grande.Nella tabella 1 è indicata la serie di pattern

che si applica alla parola “bell’accoglienza”, intesada TEX come un’unica parola, mentre noi umanisappiamo che si tratta di due parole fra le quali èintervenuta l’elisione.

Dalla tabella si può osservare, esaminando ogniriga dall’alto al basso, la parola iniziale seguita daivari pattern che si trovano nel file ithyph.tex e checontengono frammenti della parola da dividere insillabe: i pattern sono incolonnati insieme ai valorinumerici che informano sulla possibilità di inserireo l’obbligo di non inserire una cesura; in questomodo è agevole controllare colonna per colonnaqual è il valore numerico più alto e definire quindil’intera parola con tutti i valori numerici intercalati.In corrispondenza dei valori finali dispari è possibileinserire la cesura, per cui il risultato finale riportatonell’ultima riga è perfettamente coincidente conquanto insegna la grammatica.

4.3 La creazione dei patternPer usare il programma patgen, creato da Lianga questo scopo, sarebbe necessario disporre di unelenco di parole con le divisioni in sillabe già se-gnate; Liang ha fatto questo lavoro per l’ingleseusando circa 25 000 parole e ha ottenuto per lalingua inglese della varietà americana poco menodi 4800 pattern. Riapplicando questi pattern all’e-lenco delle 25 000 parole ha constatato che il 90%di queste risultavano divise in modo corretto. Il chela dice lunga sulla difficoltà di dividere in sillabele parole inglesi.Il programma TEX accetta anche un elenco

di eccezioni dato come argomento al comando\hyphenation:

\hyphenation{〈lista delle eccezioni〉}

dove la lista delle eccezioni è costituita dall’elen-co delle parole scritte in lettere minuscole e coni trattini indicanti le cesure lecite. In italiano sipotrebbero per esempio inserire nella lista le parole

composte che si desidera dividere etimologicamen-te invece che foneticamente come la grammaticaconsente e suggerisce:

\hyphenation{su-per-in-dut-to-resu-per-in-dut-to-rima-cro-istru-zio-nema-cro-istru-zio-ni}

Per l’americano la lista delle eccezioni contieneora molte centinaia di parole e la rivista TUGboatpubblica gli aggiornamenti regolarmente; l’elencoaggiornato si trova sempre negli archivi ctan.

Per l’italiano lo scrivente ha inizialmente creatouna lista di pattern usando solo la grammaticae ha controllato la correttezza delle cesure su unelenco di parole appositamente creato per eseguirequesto controllo; dopo pochi aggiornamenti il fileithyph.tex, che accompagna ogni distribuzionedel sistema TEX, è rimasto praticamente inalteratoe contiene circa 320 pattern con il livello più altodi consenso/proibizione di eseguire la cesura chearriva alla cifra 4.Successivamente ha avuto a disposizione una

versione del programma patgen accompagnato daistruzioni per l’uso abbastanza decifrabili ed haprovato a verificare i suoi pattern alla luce dellostesso elenco di parole appositamente costruito.I pattern ottenuti sono stati marginalmente innumero maggiore e il massimo livello di consenso/proibizione arriva a 5. Tutto questo conferma labontà del programma patgen che arriva quasi afare altrettanto bene di quello che può fare unapersona istruita.Nella tabella 2 si riporta solo l’elenco dei pat-

tern tratto dal file ithyph.tex per eseguire qual-che commento; il lettore interessato può avere adisposizione per la lettura l’intero file che è conte-nuto nella sua distribuzione del sistema TEX. Cisi ricordi solamente che nei pattern il punto segnal’inizio o la fine di una parola.Si nota che l’intero contenuto della tabella di

pattern è racchiuso fra le parentesi graffe; in questomodo eventuali definizioni o assegnazioni di valorirestano confinate al gruppo e non si propaganooltre.

Infatti si assegna subito all’apostrofo il valore dilettera minuscola:

\lccode‘\’=‘\’

Le lettere lc stanno per le iniziali di “lower ca-se”; la scrittura ‘\’ si riferisce al codice numericodel segno ’; con l’assegnazione indicata nel file siattribuisce come codice di lettera minuscola all’a-postrofo il suo stesso codice. L’apostrofo continuaa essere una “non lettera” con codice di categoriapari a 12, ma con il codice di minuscola non ne-gativo esso è considerato da TEX parte di quellestringhe che lui considera parole.

Seguono poi come argomento di \pattern tuttii pattern per l’italiano: si comincia dall’apostrofo

17

Page 20: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEX e la cesura delle parole in fin di riga

Tabella 2: I pattern per la lingua italiana

%%%%%%%%%%%%%%%%%%%% file ithyph.tex%{\lccode‘\’=‘\’ % Apostrophe has its own lccode

% so that it is treated as a letter%>> 1998/04/14 inserted grouping%

\patterns{ % After the Garzanti dictionary:.a3p2n % a-pnea, a-pnoi-co,....anti1 .anti3m2n.bio1.ca4p3s.circu2m1.di2s3cine.fran2k3.free3.narco1.opto1.orto3p2.para1.poli3p2.pre1.p2s.sha2re3.tran2s3c .tran2s3d .tran2s3f .tran2s3l .tran2s3n

.tran2s3p .tran2s3r .tran2s3t.su2b3lu .su2b3r.wa2g3n.wel2t1a1ia a1ie a1io a1iu a1uo a1ya 2at.e1iu e2wo1ia o1ie o1io o1iu’21b 2bb 2bc 2bd 2bf 2bm 2bn 2bp 2bs 2bt 2bv b2l b2r 2b. 2b’. 2b’’1c 2cb 2cc 2cd 2cf 2ck 2cm 2cn 2cq 2cs 2ct 2cz 2chh c2h 2chb ch2r 2chn

c2l c2r 2c. 2c’. 2c’’ .c21d 2db 2dd 2dg 2dl 2dm 2dn 2dp d2r 2ds 2dt 2dv 2dw 2d. 2d’. 2d’’ .d21f 2fb 2fg 2ff 2fn f2l f2r 2fs 2ft 2f. 2f’. 2f’’1g 2gb 2gd 2gf 2gg g2h g2l 2gm g2n 2gp g2r 2gs 2gt 2gv 2gw 2gz 2gh2t

2g. 2g’. 2g’’1h 2hb 2hd 2hh hi3p2n h2l 2hm 2hn 2hr 2hv 2h. 2h’. 2h’’1j 2j. 2j’. 2j’’1k 2kg 2kf k2h 2kk k2l 2km k2r 2ks 2kt 2k. 2k’. 2k’’1l 2lb 2lc 2ld 2l3f2 2lg l2h 2lk 2ll 2lm 2ln 2lp 2lq 2lr 2ls 2lt 2lv 2lw

2lz 2l. 2l’. 2l’’1m 2mb 2mc 2mf 2ml 2mm 2mn 2mp 2mq 2mr 2ms 2mt 2mv 2mw 2m. 2m’. 2m’’1n 2nb 2nc 2nd 2nf 2ng 2nk 2nl 2nm 2nn 2np 2nq 2nr 2ns 2nt 2nv 2nz n2g3n

2nheit. 2n. 2n’ 2n’’1p 2pd p2h p2l 2pn 3p2ne 2pp p2r 2ps 3p2sic 2pt 2pz 2p. 2p’. 2p’’1q 2qq 2q. 2q’. 2q’’1r 2rb 2rc 2rd 2rf r2h 2rg 2rk 2rl 2rm 2rn 2rp 2rq 2rr 2rs 2rt rt2s3 2rv 2rx

2rw 2rz 2r. 2r’. 2r’’1s2 2shm 2s3s s4s3m 2s3p2n 2stb 2stc 2std 2stf 2stg 2stm 2stn 2stp 2sts 2stt 2stv 2sz 4s.

4s’. 4s’’1t 2tb 2tc 2td 2tf 2tg t2h t2l 2tm 2tn 2tp t2r 2ts 3t2sch 2tt 2tv 2tw t2z

2tzk 2tzs 2t. 2t’. 2t’’1v 2vc v2l v2r 2vv 2v. 2v’. 2v’’1w w2h wa2r 2w1y 2w. 2w’. 2w’’1x 2xt 2xw 2x. 2x’. 2x’’y1ou y1i1z 2zb 2zd 2zl 2zn 2zp 2zt 2zs 2zv 2zz 2z. 2z’. 2z’’ .z2}} % Pattern end\endinput

18

Page 21: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEX e la cesura delle parole in fin di riga ArsTEXnica Nº 3, Aprile 2007

isolato, ma guardando più avanti si ritrova l’apo-strofo alla fine delle parole, dove svolgerebbe lafunzione di virgolette; i pattern con gli apostrofiin funzione di virgolette sono necessari per evitareche le virgolette vadano a capo da sole, lasciandola parola italiana alla fine della riga precedenteimmediatamente seguita dalla lineetta di cesura.È chiaro che questo sarebbe un modo ridicolo digestire la cosa, mentre trattando l’apostrofo comeuna lettera comune e inserendo i codici pari neces-sari per interdire le cesure si risolve il problema inmodo semplicissimo.

La lista contiene poi le divisioni di prefissi e pre-fissoidi; la grammatica consente di eseguire la cesu-ra in modo fonetico per qualunque parola, tuttaviadivisioni come “su-blu-na-re”, “tran-sna-zio-na-le”,che la grammatica consente, sarebbero difficili daleggere. Per altro la grammatica consente anchela divisione etimologica, quindi le divisioni indot-te dai pattern specificati saranno “sub-lu-na-re” e“trans-na-zio-na-le”.

Si nota l’assenza di qualunque pattern che con-sideri vocali isolate o considerate a coppie; per levocali isolate bastano i valori nulli di default, men-tre per i dittonghi veri o per le coppie di vocali sisono lasciati i codici nulli (e quindi non sono statiindicati) per evitare di spezzare fra vocali. È veroche “au” può formare un dittongo e quindi sarebbeinseparabile, tuttavia esso è un dittongo solo sela vocale ‘u’ non è tonica; ma TEX non conosce lapronuncia dell’italiano e quindi è meglio lasciaresempre la coppia “au” indivisa. Si perderà qualchepossibile cesura, ma per il lettore la lettura saràcertamente agevolata: in questo modo egli troveràla divisione “bau-le” invece di “ba-u-le” e non sitroverà mai la parola divisa dopo la ‘a’.Compaiono invece i trittonghi, i gruppi di tre

vocali che si pronunciano con un’unica emissionedi voce: avremo così, per esempio, le divisioni “a-iuo-la”4 e “ma-ieu-ti-ca”.

Con questa decisione non ci sono problemi a chei pattern trattino correttamente anche le vocaliaccentate sia in posizione terminale, come nelleparole tronche, sia quando ricevono una accenta-zione facoltativa, come quando si vogliono distin-guere parole altrimenti omografe quali “séguito” e“seguito”5.

Seguono poi i pattern che riguardano le conso-nanti, per le quali bisogna distinguere le liquide ele nasali dalle altre; bisogna gestire correttamen-te la ‘s’ impura, caratteristica della sola lingua

4. Di fatto solamente “aiuo-la” perché la prima sillabagrammaticale è troppo corta; tuttavia se la parola è precedu-ta dall’articolo o da una preposizione articolata, il trittongoriappare: la sillabazione di “l’aiuola” diventa “l’a-iuo-la”.

5. La grammatica consente l’accento facoltativo solo sulleparole sdrucciole o con l’accento ancora più arretrato. Nonconsente l’accento sulle parole piane, perché quella è laposizione di default, tuttavia consente l’accentazione delleparole piane per distinguerne il tono come in “cólto” e“còlto”.

italiana fra le varie lingue romanze. Bisogna trat-tare la ‘w’ e la ‘y’ in modo ragionevole; bisognaprevedere gruppi di consonanti non presenti nel-le parole italiane in senso stretto ma derivate daradici straniere. In questo modo, sebbene la gram-matica non dica niente al riguardo, vengono divisecorrettamente parole come maxwelliano, newyorke-se, leishmaniosi, lewisite, wahhabbita. . . ma ancheparole italiane dalla grafia insolita, come Santhiào Thiene.

5 Perché TEX talvolta non divide insillabe?

Talvolta TEX si “rifiuta” di eseguire le necessariecesure pur non essendone impedito dal tipo di fontusato; si ricorda, infatti, che il font a spaziaturafissa non consente la divisione in sillabe.I motivi possono essere diversi, ma spesso si

tratta di errori di composizione; per esempio cisi scorda di lasciare lo spazio fra una parola e lasusseguente o la precedente espressione matematicain linea: se il segno di dollaro è adiacente allaparola, TEX non divide in sillabe, ma quasi semprela mancanza dello spazio è un errore di battitura,e quindi la “colpa” non è di TEX.Ma ci sono tre situazioni subdole che il compo-

sitore stenta a riconoscere. Una situazione si haquando la parola segue un cambiamento di font,specialmente se eseguito mediante una dichiarazio-ne. Un’altra situazione si ha quando alla parolaè “appesa” una nota, o meglio, il richiamo di no-ta; quest’ultimo infatti è composto dal comando\footnote o da \footnotemark alzando il con-trassegno mediante il meccanismo degli esponentimatematici oppure mediante la manipolazione di“scatole”. La terza situazione si ha quando la pa-rola è composta mediante elementi separati daltrattino.In quest’ultimo caso TEX non divide in sillabe

né la prima né la seconda parola legate dal tratti-no, ma divide solo in corrispondenza del trattino.Questo comportamento è ragionevole, ma talvolta,con parole lunghe, sarebbe desiderabile consentirela cesura anche nel primo o nel secondo moncone.Siccome il problema si incontra in quasi tutte lelingue, la prima cosa da fare è leggere il file ditesto che descrive quanto si è realizzato per quellaparticolare lingua; il pacchetto babel è corredatoda un file per ogni lingua che riesce a gestire.

Per l’italiano basta fare precedere il doppio api-ce al trattino, scrivendo, quindi, "- al posto delsemplice trattino, e la cesura viene abilitata inqualunque punto della parola composta.

Negli altri casi la soluzione è semplice ma apparecome un “dirty trick”, per chiamarlo col nome cheKnuth stesso ha attribuito a questi “sporchi trucchi”dedicando loro addirittura l’appendice D del suoTEXbook, Knuth (1984).

Basta inserire un grumetto di colla di larghezza

19

Page 22: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEX e la cesura delle parole in fin di riga

nulla prima o, rispettivamente, dopo l’oggetto cheimpedisce la sillabazione. Nello stesso tempo sidesidera che TEX non vada a capo in corrispondenzadi questo grumetto di colla, specialmente nel casoche esso sia collocato fra la parola e il richiamo dinota.La soluzione migliore, secondo lo scrivente, è

quello di usare una breve macro come la seguente

\newcommand*{\hz}{%\nobreak\hskip 0pt\relax}

così da usarla in situazioni del tipo

... capoverso\hz\footnote{Si ricorda ...

Non è il caso di inserire \hz prima di ogni nota,ma se si dovesse trovare non giustificata qualcheparola per la presenza del richiamo di nota, allorain seconda battuta si può inserire \hz solo primadi quella nota.

Analogamente se una parola non risultasse giusti-ficata dopo un cambiamento di font, basta premet-tere \hz alla parola (lasciando uno spazio subitodopo, spazio che TEX usa solo per capire dove fi-nisce la macro) e il problema è risolto. Si noti chesi ha un cambiamento di font implicito all’iniziodi ogni capoverso e all’inizio del testo introdottoda \item in una lista. Normalmente la prima pa-rola di un capoverso o di un \item non richiede lasillabazione, ma se si sta componendo in colonnestrette e/o la parola è molto lunga, allora anchein quel caso conviene cominciare il capoverso ol’\item con \hz.Non è opportuno usare il comando

\allowhyphens del pacchetto babel, anchese scrivendo in italiano quel pacchetto viene

sempre richiamato, perché esso non inserisce ilgrumetto di colla quando è in vigore la codificaT1, quella che si dovrebbe sempre usare quando sicompone in italiano.

6 ConclusioneQuesto breve tutorial in merito alla sillabazionedovrebbe essere riuscito a spiegare sia come faTEX ad eseguire la cesura delle parole in fin diriga, sia l’importanza di includere i pattern disillabazione di una data lingua nel file di formatodel programma che si intende usare, sia, infine, checosa fare per consentire l’esecuzione della cesuraanche quando TEX ne è impedito dalle sue regolestringenti per isolare la sequenza di lettere checostituisce una parola.

Riferimenti bibliograficiGregorio, E. (2006). «Codici di categoria». Ar-sTEXnica – Rivista italiana di TEX e LATEX,(2).

Knuth, D. E. (1984). The TEXbook. AddisonWesley Publ. Co., Reading, Mass.

Liang, F. (1983). Word Hy-phen-a-tion by Com-put-er. Tesi di Laurea, Stanford University. Latesi originale è stata scandita e resa disponibilenel sito del TEX Users Group; http://www.tug.org/docs/liang/liang-thesis-hires.pdf.

. Claudio Beccari

20

Page 23: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEXpedia: il futuro della documentazione su LATEX

Lapo Filippo Mori

Sommario

La documentazione è un fattore molto importanteper il successo di software open source perché neinfluenza la diffusione. Chi inizia a studiare LATEX,e anche l’utente intermedio, si lamenta spesso del-la documentazione: è difficile trovare una risorsaaggiornata, completa e ben strutturata. Questoarticolo analizza tutti i tipi di risorsa su LATEX,evidenziando vantaggi e svantaggi, per poi propor-ne un nuovo tipo: un’enciclopedia online e opencontent, LATEXpedia.

Abstract

Software documentation is a very important suc-cess factor for open source software because itbolsters its diffusion. People who start learningLATEX and even intermediate users often complainabout LATEX documentation: it is hard to find anupdated, complete and well structured resource.This article evaluates advantages and disadvan-tages of the different sorts of resources for LATEXdocumentation available and proposes a new kindof documentation source: a free-content, web-basedenciclopedia, LATEXpedia.

1 Introduzione

La documentazione di un programma è molto im-portante, soprattutto se open source, in quantoessa influenza la sua diffusione e il suo sviluppo,quindi il suo successo. Se il miglior programmaha una documentazione scarsa, non attrae nuoviutenti e il numero degli sviluppatori resta basso.

Spesso mi chiedono quale sia la migliore guida olibro per imparare LATEX e io ho sempre difficoltàa rispondere; questo fa pensare che la documen-tazione su LATEX abbia un problema e, se è così,è necessario trovare una soluzione. Essendo unamministratore del forum di guIt (Gruppo Uti-lizzatori Italiani di TEX) e l’autore di due guideMori (2005, 2007), ho maturato nel tempo un’ideapersonale delle debolezze e dei punti di forza dellerisorse di informazione disponibili su LATEX mafino ad adesso non sono mai riuscito a trovare unasoluzione.

In questo articolo analizzo le risorse attualmentedisponibili e i motivi del loro cattivo funzionamen-to, per poi proporre una nuova soluzione a questoimportante problema: LATEXpedia.

2 Il problema2.1 Troppe risorseLavorando sulla bibliografia di una guida di livel-lo intermedio sulla scrittura di tesi di laurea conLATEX Mori (2005, 2007) mi sono reso conto diquante risorse siano disponibili.1 Una delle bel-lezze di LATEX, così come degli altri programmiopen source, è che è stato oggetto di molte guidee libri. Questo significa che un utente avanzato,ogni volta che si presenta un nuovo problema, puòconfidare su una letteratura enorme e trovare lasoluzione allo stesso problema o a uno simile inpochi minuti. Per un principiante significa che, alladifficoltà intrinseca allo studio di un nuovo linguag-gio, si aggiunge quella di trovare buone fonti sucui studiare. Un occhio esperto riesce a capire ve-locemente se vale la pena leggere una guida o no,ma al principiante sembrano tutte uguali.

2.2 ObsolescenzaNon solo le risorse sono troppe, ma spesso sonoanche in contraddizione. Alcune sono state scrit-ti diversi anni fa e le informazioni che riportanosono obsolete e in contrasto con guide più moder-ne. LATEX, essendo un programma open source, ècostantemente aggiornato e decine di nuovi pac-chetti vengono scritti ogni anno. A causa dellapoca coordinazione tra gli autori dei pacchetti, tal-volta essi sono incompatibili. In questo scenarioè molto importante che le guide siano aggiornateregolarmente.

Come può un principiante sapere qual è la solu-zione giusta di un problema se non sa nemmenoquali sono le risorse da scartare?

2.3 Serve un nuovo tipo di risorsaIl vero problema è che nessuna delle risorse dispo-nibili è perfetta. Analizziamo dunque ogni tipo dirisorsa, identificandone i lati positivi e negativi,con lo scopo di proporne un nuovo tipo.

2.3.1 LibriI libri, ad esempio Beccari (1991); Diller (1999);Goossens et al. (1995, 1997); Grätzer (1999,2000); Hahn (1993); Higham e Griffiths (1997);Knuth (1992); Kopka e Daly (1995); Lamport(1994a), sono un eccellente punto di partenza perimparare LATEX perché sono, per loro natura, com-pleti. Sfortunatamente, i principianti di solito siavvicinano al nuovo linguaggio leggendo le guide

1. Si vedano per esempio i riferimenti bibliograficiriportati nei par. 2.3.1 e 2.3.2.

21

Page 24: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEXpedia: il futuro della documentazione su LATEX

che sono disponibili gratuitamente su internet. Ilibri sono spesso acquistati da utenti intermedi che,dopo aver imparato le basi su queste guide e tro-vato LATEX adeguato alle loro esigenze, decidonodi studiarlo più sistematicamente e comprano unlibro.Di solito un libro viene scritto da pochi autori

e, essendo solitamente lungo, richiede un grandeimpegno specifico (impegno per autore). Per questoil time-to-market è di almeno un anno e il numerodi nuove edizioni è generalmente molto basso; ilibri sono dunque destinati a divenire obsoleti.

In teoria un libro potrebbe divenire l’unica risor-sa per LATEX con una soluzione a tutti i problemirilevanti; tuttavia il numero degli autori deve rima-nere basso per ridurre i problemi di coordinazionee quindi un progetto del genere richiederebbe annie, nel frattempo, la maggior parte del materialediventerebbe obsoleta.

Suggerimenti per LATEXpedia.La nuova risorsa deve:

1. essere gratuita in modo da essere invitanteanche per i principianti;

2. coinvolgere molte persone ed essere rila-sciata in parti prima della sua conclu-sione (altrimenti il time-to-market diventatroppo lungo e gran parte del lavoro vienerovinato dall’obsolescenza).

2.3.2 GuideTra le varie risorse, le guide sono senza dubbiole più numerose. Su internet sono disponibili siaguide generiche per principianti Baudoin (1998);Flynn (2005); Gregorio (2006); Oetiker et al.(2006); The Tutorial Team (2000); Trettine Fenn (2006) che guide su argomenti specificiquali tabelle Carusillo (2005); Caucci e Spa-daccini (2005); Fear (2005); Mori (2006); Voß(2003b), figure Caucci e Spadaccini (2005); Da-ly (1998); Hutchinson (2005); Reckdahl (1997);Voß (2003b), font Carusillo (2006); Lehman(2004), matematica American MathematicalSociety (1995); Voß (2003a), creazione di fi-le pdf Pratesi et al. (2003); Talbot (2004),tanto per citarne alcuni. Questi riferimenti sonoquelli che di solito suggerisco, tuttavia una ra-pida ricerca su internet ne fornirebbe molti al-tri Caon (2003); Carusillo (2004); Cecchi-ni (1996); Dowty (2002); Electronic Publi-shing Unit (2001); Gonzato (2003); Green-berg (2006); Lamport (1994b); Love (1997);Murri (2000); Tonti (1998); Warbrick (2002);Wilkins (1995).

Caratteristiche comuni.Come si può facilmente immaginare le guide, datoil loro numero, si differenziano molto per contenu-to, stile, lunghezza e livello di dettaglio; è tuttavia

possibile identificare alcune caratteristiche comuni.Essendo più corta di un libro, una guida o co-pre molti argomenti poco dettagliatamente oppurepochi argomenti con maggiore dettaglio. Questosignifica che, a differenza di un libro, è improbabileche una sola guida sia sufficiente per imparare ausare LATEX. Nonostante che le guide richiedanoun impegno specifico inferiore rispetto a un libro(questo spiega la loro numerosità), anch’esse hannouna tendenza all’obsolescenza.

Ognuno usa LATEX per fare cose diverse e quindiè improbabile che la guida scritta da poche perso-ne possa affrontare i problemi di tutti. Scrivendouna guida Mori (2005, 2006, 2007), ho sempreposto l’accento sui problemi che avevo trovato fi-no quel momento da utente LATEX; alcuni utentiincontrano gli stessi problemi, ma molti altri han-no esigenze differenti quindi sarebbe meglio cheil maggior numero di persone possibile contribui-sca a una guida. Sfortunatamente è molto difficilecoordinare la scrittura di un documento con moltiautori: la coordinazione assorbirebbe più risorsedella scrittura stessa.

Suggerimenti per LATEXpedia.

La nuova risorsa deve:

1. coprire con sufficiente dettaglio moltiargomenti in modo da poter essere usataper imparare LATEX senza il bisogno di altrerisorse.

2. essere scritta da molte persone in modoche gli argomenti siano molti e vari.

2.3.3 Forum

Con l’uso sempre più diffuso di internet, i forumsono diventati molto popolari. Per quanto riguardaLATEX è necessario ricordare il gruppo di Usenetsu LATEX2 e il forum di guIt.3

Cattive notizie.

Quando gli utenti esperti sono sufficientemente nu-merosi, la risposta ai topic è generalmente moltoveloce e il forum funziona da help center. Il proble-ma principale dei forum è che gli utenti LATEX piùesperti di solito spendono la maggior parte del lorotempo per rispondere a domande elementari chespesso sono già state affrontate in topic precedenti.Lo staff del forum di guIt ha definito alcune regoledi condotta (netiquette) per intervenire su questoproblema. Nonostante un buon motore di ricerca eun database di oltre duemila topic, i nuovi utenticontinuano a fare sempre le stesse domande e gliamministratori continuano a indirizzarli verso to-pic precedenti o, peggio ancora, a fornire le stesserisposte.

2. http://groups.google.com/group/comp.text.tex3. http://guit.sssup.it/phpbb/index.php

22

Page 25: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEXpedia: il futuro della documentazione su LATEX ArsTEXnica Nº 3, Aprile 2007

Quando un problema è già stato affrontato, gliutenti sono indirizzati verso questo. Sfortunata-mente, spesso la risposta non è contenuta in unsolo topic, ma in diversi.

Un altro problema dei forum è che le informazio-ni contenute, per quanto enormi, non sono struttu-rate. Secondo me questo è il principale svantaggiodei forum: non possono essere usati come stru-mento didattico perché le informazioni sono cosìsparse che la loro ricerca richiede più tempo delloro studio.

Buone notizie.D’altro canto, un forum è probabilmente la risorsadi informazioni più aggiornata dato che gli utentipossono commentare i nuovi pacchetti e le nuovefunzioni praticamente in tempo reale: ogni utentepuò creare un nuovo topic in qualche minuto equesto è immediatamente disponibile per l’interacomunità.Un’altra caratteristica unica dei forum è la ca-

pacità di coinvolgere gli utenti. Quando un utentetrova il forum utile, è probabile che in futuro aiutialtri utenti. In questo modo la conoscenza non ècreata solo da pochi esperti ma da una base semprepiù grande. Ovviamente, gli esperti, che sono spes-so gli amministratori del forum, controllano che leinformazioni fornite dagli altri siano corrette.

Suggerimenti per LATEXpedia.La nuova risorsa deve:

1. permettere agli utenti intermedi di con-tribuire allo sviluppo del progetto altrimen-ti la crescita è troppo lenta e gli utenti conpiù esperienza spendono tutto il loro tem-po in attività di basso livello invece che incoordinazione.

2. essere strutturata in modo da poter essereusata come strumento didattico dagli utentiprincipianti e intermedi.

2.3.4 Liste di faqSu internet sono disponibili numerose faq (Fre-quently Asked Questions). Queste contengono uncerto numero di domande che possono sorgere usan-do LATEX e le corrispondenti risposte. Di solito ilmateriale non è strutturato e quindi difficilmentepuò essere usato da un principiante che ha bisognodi essere guidato. Le faq sono spesso sviluppatein base al feedback degli utenti, tuttavia il numerodi persone che mantiene queste liste è solitamentebasso e quindi sono sviluppate e aggiornate lenta-mente. Il principale svantaggio di una faq rispettoa un forum è che gli utenti non possono fare do-mande direttamente e il processo di aggiornamentoè molto più lento.Tra le faq sul LATEX merita ricordare la “UK

List of TEX Frequently Asked Questions”. È man-tenuta dal tug (TEX Users Group) inglese ed è

disponibile sia in formato html4 che in formatopdf Fairbairns (2005); contiene molte informa-zioni, è abbastanza strutturata e viene aggiornataregolarmente. Nonostante questi meriti, non puòessere usata da principianti e gli aggiornamentisono molto più lenti di un forum.

Suggerimenti per LATEXpedia.La nuova risorsa deve:

1. essere aggiornata velocemente in base alfeedback degli utenti.

2. essere ben strutturata come un libro inmodo da poter sia essere usata per cercare unargomento specifico (come una faq o un fo-rum) sia essere letta dall’inizio alla fine (comeun libro o una guida).

3. essere disponibile sia in formato htmlche pdf .

3 La soluzioneLa soluzione è un’enciclopedia su LATEX basatasu un motore Wiki5 a cui tutti possano contri-buire; il nome naturale per il progetto è dunqueLATEXpedia.6

L’idea di un’enciclopedia su LATEX non è nuova.Denis Roegel e Jean-Michel Antoine nel 1995 hannocreato “LATEX Navigator: A LATEX Enciclopedia”7

che è ospitata da loria (Laboratoire Lorrain deRecherche en Informatique et ses Applications),un centro di ricerca francese in informatica. Tutta-via qui proponiamo di andare molto oltre: seguirel’esempio di Wikipedia.

Wikipedia8 è un’enciclopedia in rete, a contenu-to libero e multilingue, lanciata nel gennaio 2001da Larry Sanger e Jimmy Wales. Wikipedia fu ini-zialmente pensata come complemento a Nupedia,9enciclopedia defunta nel 2003. Nupedia è scom-parsa perché era scritta solo da esperti (diversiordini di grandezza meno numerosi degli autori diWikipedia) e perché il processo di revisione di ogniarticolo era molto complicato: questi due aspettifondamentali rendevano la crescita dell’enciclope-dia troppo lenta. Wikipedia usa un motore pergenerare la grafica10 che permette di scrivere mate-matica con la sintassi di LATEX: questo sicuramenteaiuterebbe gli autori di LATEXpedia a preparare gliesempi e potrebbe anche essere sfruttato per con-vertire automaticamente l’intera enciclopedia in

4. http://www.tex.ac.uk/cgi-bin/texfaq2html5. http://en.wikipedia.org/wiki/Wiki_software6. Wiki + encyclopedia = Wikipedia e analogamente

LATEX + encyclopedia = LATEXpedia.7. http://tex.loria.fr/index.html8. http://www.wikipedia.org/ e http://en.wikipedia.

org/wiki/Wikipedia:Introduction9. http://en.wikipedia.org/wiki/Nupedia10. http : / / en . wikipedia . org / wiki / Wikipedia :

Manual _ of _ Style _ (mathematics) e http : / / meta .wikimedia.org/wiki/Help:Formula

23

Page 26: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEXpedia: il futuro della documentazione su LATEX

un file LATEX per rilasciare periodicamente unaversione pdf di LATEXpedia.

Sicuramente scrivere un’enciclopedia richiedemolto impegno, ma anche la manutenzione di unforum richiede molto lavoro da parte degli ammi-nistratori. Questo lavoro sarebbe certamente inve-stito meglio in un progetto di lunga durata, conottime prospettive e immediatamente disponibilecome LATEXpedia.

3.1 VantaggiLATEXpedia raccoglie i vantaggi delle altre risorse ene aggiunge di nuovi. Ricordiamo i principali dieci:

1. Il numero di persone che contribuisco-no al progetto è illimitato. L’esperienzadi Wikipedia ci insegna che spesso gli utentiche utilizzano l’enciclopedia contribuiscono alprogetto e quindi il numero di persone che vilavorano cresce continuamente.

2. La varietà degli argomenti affrontati èenorme. A differenza di ogni altra risorsa(a eccezione dei forum), il numero di utentiche contribuiscono a LATEXpedia è enorme eognuno di essi porta alla luce i problemi che hatrovato nella sua esperienza di utente LATEX.Quando invece il numero degli autori è basso,il contenuto della risorsa non può coprire ognipossibile applicazione del LATEX.

3. Il lavoro è distribuito tra utenti con dif-ferenti capacità. Tutte le altre risorse sonosviluppate solo da utenti esperti, mentre tuttigli altri (intermedi e principianti) beneficianoe basta del loro lavoro. Con LATEXpedia ognu-no può contribuire e quindi gli esperti possonoconcentrare le loro energie sulla revisione dellavoro svolto dagli altri e sulla strutturazionedel progetto. Una migliore distribuzione dellavoro permette al progetto di crescere moltopiù velocemente.

4. L’accesso al progetto è gratuito. Nono-stante che LATEXpedia sia completa come unlibro (o meglio), è gratuita e quindi allettanteanche per chi si avvicina per la prima volta aLATEX.

5. Un potente motore di ricerca aiuta atrovare gli argomenti. Come su un forum,gli utenti possono usare un motore di ricercaper trovare i singoli argomenti.

6. Il progetto è ben strutturato. Come unlibro o una guida e a differenza di una listadi faq, LATEXpedia può essere letta dall’inizioalla fine, il che è particolarmente importanteper principianti. Questo è anche utile quandoun utente intermedio sta cercando la soluzionedi un problema particolare: se non sa di precisol’argomento, per lui sarebbe difficile trovarlo

con un motore di ricerca ma la stessa strutturadi LATEXpedia può aiutarlo a capire cosa stacercando.

7. La documentazione diventa immediata-mente disponibile. Tutte le altre risorse (aeccezione dei forum) richiedono un certo las-so di tempo tra l’inizio della scrittura e lapubblicazione della prima edizione (dalla piùlenta alla più veloce abbiamo i libri, le guidee le liste di faq). In questo progetto il mate-riale diventa immediatamente disponibile alpubblico, evitando il rischio dell’obsolescenza.

8. Lo sviluppo del progetto è continuo. Adifferenza dei libri e delle guide, il proget-to LATEXpedia continua fino a quando sonosviluppati LATEX e i suoi pacchetti.

9. Il processo di revisione è veloce. Il pro-cesso di revisione, condotto sia da esperti cheda utenti intermedi, è veloce perché ognunopuò operare indipendentemente (in parallelo)quando ha tempo da dedicare al progetto.

10. Il progetto è disponibile sia in versionepdf che html. Mentre la versione html èaggiornata in tempo reale, la versione pdfpuò essere pubblicata periodicamente. Questosegue l’esempio di successo di “UK List of TEXFrequently Asked Questions”.

3.2 Dalla teoria alla pratica3.2.1 Con un forumDato che molti tug hanno un forum, quest’ul-timi potrebbero essere usati per lo sviluppo diLATEXpedia. Vediamo brevemente quale sia il fun-zionamento di un forum e come questo possa esseremodificato per sviluppare un’enciclopedia.

Quando un utente apre un nuovo topic e proponeuna domanda a cui è già stato risposto sul forum,gli amministratori o un altro utente riportano illink del topic precedente. Spesso il topic precedenterisponde solo in parte alla domanda e quindi nuovipezzi di informazione vengono aggiunti al topic. Seinvece il problema presentato è nuovo, si apre unanuova discussione.Questa dinamica può essere leggermente modi-

ficata per sviluppare un’enciclopedia. Quando unutente ha un problema, lo espone sul forum. Sela soluzione è già disponibile su LATEXpedia, gliamministratori riportano il link alla relativa pagi-na nell’enciclopedia e chiudono il topic. Se inveceil problema è nuovo o non è completamente af-frontato su LATEXpedia, la discussione sul forumcontinua. Quando ottiene la soluzione, l’utente creauna pagina di LATEXpedia con la descrizione delproblema e la sua soluzione (oppure aggiunge lenuove informazioni a una pagina preesistente sul-l’argomento). Gli amministratori spostano quindi

24

Page 27: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

LATEXpedia: il futuro della documentazione su LATEX ArsTEXnica Nº 3, Aprile 2007

il topic in una sezione del forum riservata ai pro-blemi risolti e aggiungono un link a LATEXpedia.Nel frattempo verificano anche che la pagina del-l’enciclopedia contenga informazioni corrette e siaposizionata nella giusta sezione (ovvero verificano ilrispetto della struttura dell’opera). In questo modol’utente che riceve l’aiuto può ripagare la comuni-tà collaborando alla scrittura dell’enciclopedia edeventualmente riportando anche esempi di codice.LATEXpedia è l’unico tipo di documentazione a cuipossono contribuire anche i principianti.

3.2.2 Senza un forumNonostante che la presenza di un forum velocizzi ilprocesso, LATEXpedia può anche essere sviluppatasenza: quando un utente non trova la soluzione a unproblema sull’enciclopedia, crea una nuova paginadove spiega il problema. Gli utenti che conosconola soluzione modificano quella pagina fornendoun esempio. Gli esperti verificano la correttezzadella soluzione e posizionano la pagina nella giustasezione di LATEXpedia.

4 ConclusioniLa natura multilingua di Wikipedia è uno dei suoiprincipali pregi. LATEX è già un progetto multilin-gua con decine di tug sparsi per il mondo. Lo svi-luppo di LATEXpedia gioverebbe sicuramente dellacollaborazione tra tug e, al tempo stesso, lavoraresu un progetto comune rafforzerebbe i legami trai tug. Quindi vorrei concludere incoraggiando glialtri tug a unirsi a guIt in questa nuova avventura.

RingraziamentiVorrei ringraziare tutti i membri di guIt che hannocontribuito allo sviluppo di questa idea e hanno of-ferto il loro aiuto per realizzarla, in particolare San-dro Allemanni, Daniele Avitabile, Gustavo Cevola-ni, Massimiliano Dominici, Maurizio Himmelmanned Emiliano Vavassori.

Riferimenti bibliograficiAmerican Mathematical Society (1995).AMS-LATEX User’s Guide. www.dd.chalmers.se/latex/Docs/PDF/amsldoc.pdf.

Baudoin, M. (1998). Impara LATEX (...e met-tilo da parte). http://www.mat.uniroma1.it/centro-calcolo/manuali/impara_latex.pdf.

Beccari, C. (1991). LATEX, Guida a un sistemadi editoria elettronica. Hoepli.

Caon, D. (2003). LATEX: manuale di base. www.guit.sssup.it/downloads/man_base.pdf.

Carusillo, L. (2004). LATEX.

— (2005). Le tabelle in LATEX. http://www.webalice.it/lgcrsll/pgl/latex/Tabelle.pdf.tar.gz.

— (2006). I caratteri in LATEX.

Caucci, L. e Spadaccini, M. (2005). Gestione diFigure e Tabelle con LATEX. http://www.guit.sssup.it/downloads/fig_tut.pdf.

Cecchini, R. (1996). Guida locale all’uso delLATEX. www.fi.infn.it/pub/tex/doc/latexu.pdf.

Daly, P. W. (1998). Graphics and Colour withLATEX. http://tex.loria.fr/graph-pack/grf/grf.pdf.

Diller, A. (1999). LATEX Line by Line: Tipsand Techniques for Document Processing. JohnWiley & Sons.

Dowty, D. (2002). Introductory LATEX Tuto-rial. www.ling.ohio-state.edu/events/lcc/tutorials/intro-latex.pdf.

Electronic Publishing Unit (2001). Begin-ner’s LATEX. UCC Computer Centre. 158.110.32.35/LATEX/beginlatex.pdf.

Fairbairns, R. (2005). The UK TEX FAQ.http://www.ctan.org/tex-archive/help/uk-tex-faq/letterfaq.tex.

Fear, S. (2005). Publication quality tables inLATEX. http://www.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf.

Flynn, P. (2005). A beginner’s introduction totypesetting with LATEX. http://www.tug.org/tex-archive/info/beginlatex/.

Gonzato, G. (2003). LATEX for Word Proces-sor Users. tug.ctan.org/tex-archive/info/latex4wp/latex4wp.pdf.

Goossens, M., Mittelbach, F. e Samarin, A.(1995). The LATEX Companion. Addison-Wesley.

Goossens, M., Rahtz, S. e Mittelbach, F.(1997). The LATEX Graphics Companion: Illu-strating Documents with TEX and PostScript.Addison-Wesley.

Grätzer, G. (1999). First Steps in LATEX.Springer Verlag.

— (2000). Math into LATEX. Birkhauser.

Greenberg, H. J. (2006). A Simplified Intro-duction to LATEX. www.cs.usask.ca/~wew036/latex/simplified-intro/latex.pdf.

25

Page 28: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 LATEXpedia: il futuro della documentazione su LATEX

Gregorio, E. (2006). LATEX: Breve guida ai pac-chetti di uso più comune. profs.sci.univr.it/~gregorio/breveguida.pdf.

Hahn, J. (1993). LATEX for Everyone: A ReferenceGuide and Tutorial for Typesetting DocumentsUsing a Computer. Prentice Hall.

Higham, D. J. e Griffiths, D. F. (1997). Lear-ning LATEX. Society for Industrial and AppliedMathematics.

Hutchinson, I. (2005). Graphics for Inclusion inElectronic Documents. silas.psfc.mit.edu/elec_fig/elec_figures.pdf.

Knuth, D. (1992). The TEXbook. Addison-Wesley.

Kopka, H. e Daly, P. (1995). A Guide toLATEX – Document Preparation for Beginnersand Advanced Users. Addison-Wesley.

Lamport, L. (1994a). LATEX: A Document Pre-paration System, User’s Guide and ReferenceManual. Addison-Wesley.

— (1994b). LATEX2ε: The macro package for TEX.

Lehman, P. (2004). The Font Installation Gui-de. http://www.ctan.org/tex-archive/info / Type1fonts / fontinstallationguide /fontinstallationguide.pdf.

Love, T. (1997). Advanced LATEX. people.csail.mit.edu/custo/FTP/latex_tutorial.pdf.

Mori, L. F. (2005). «Scrivere la tesi di laureacon LATEX2ε». In Proceedings del guItmeeting2005. guIt (Italian TEX Users Group), Pisa, Italy,pp. 69–92. www.guit.sssup.it/guitmeeting/2005/articoli/mori.pdf.

— (2006). «Tabelle su LATEX2ε: pacchetti e metodida utilizzare». Ars TEXnica, (2), pp. 31–47.

— (2007). «Scrivere la tesi di laurea con LATEX2ε».Ars TEXnica, (3).

Murri, R. (2000). Introduzione a LATEX: Scriverein LATEX con teTEX ed Emacs su GNU/Linux.http://poisson.phc.unipi.it/~battiston/murripublichtml/lpratico/lpratico.pdf.

Oetiker, T., Partl, H., Hyna, I. e Schlegl,E. (2006). The Not So Short Introduction toLATEX2ε. www.ctan.org/tex-archive/info/lshort/english/lshort.pdf.

Pratesi, M., Latini, M. e Antonecchia,M. (2003). LATEX–PDF–Howto. http ://www.telug.it/marco/LaTeX-PDF-HOWTO/LaTeX-PDF-HOWTO-1.1.1.pdf.

Reckdahl, K. (1997). Using Imported Gra-phics in LATEX2ε. http://www.ctan.org/tex-archive/info/epslatex.pdf.

Talbot, N. (2004). Creating a PDF documentusing PDFLATEX. http://theoval.cmp.uea.ac.uk/~nlct/latex/pdfdoc/pdfdoc-a4.pdf.

The Tutorial Team (2000). On-line Tutorialon LATEX. Indian TEX Users Group. http://www.tug.org.in/tutorials.html.

Tonti, E. (1998). Il LATEX mediante esempi.www.dic.univ.trieste.it/perspage/tonti/MANUALI/latex.pdf.

Trettin, M. e Fenn, J. (2006). An essential guideto LATEX2ε usage: Obsolete commands and pac-kages. http://www.ctan.org/tex-archive/info/l2tabu/english/l2tabuen.pdf.

Voß, H. (2003a). Mathmode. www.ctan.org/tex-archive / info / math / voss / mathmode /Mathmode.pdf.

— (2003b). Rotating Text, Tabulars and Images.http://perce.de/LaTeX/rotating.pdf.

Warbrick, J. (2002). Essential LATEX. www.sci.usq.edu.au/staff/robertsa/LaTeX/Others/essential.pdf.

Wilkins, D. R. (1995). Getting Started with LATEX.www.copernicus.org/guidelines/GSWLaTeX.pdf.

. Lapo Filippo MoriDepartment of Mechanical Enginee-ring, Northwestern University, Evan-ston 60208 IL, [email protected]

26

Page 29: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε

Lapo Filippo Mori∗

SommarioLo scopo del presente articolo è fornire gli stru-menti per scrivere una tesi di laurea utilizzandoLATEX2ε. Tale obiettivo è conseguito analizzando iproblemi tipici incontrati durante la stesura dellatesi e le possibili soluzioni; si pone particolare atten-zione ai pacchetti da usare nelle varie circostanze.I singoli argomenti non vengono approfonditi neidettagli ma si rimanda, ove necessario, alla lettera-tura specifica o ad i manuali dei pacchetti suggeriti.

AbstractThe goal of this article is to provide the tools towrite a thesis with LATEX2ε. The article analyzesthe problems that are usually encountered whilewriting a thesis and their solution; a particularemphasis is on the packages to use in each case.The topics are not examined in deep and, whennecessary, the reader is referred to specific litera-ture or to the manual of the suggested packages.

PremessaIl presente articolo non è una guida alla scritturaper tesi di laurea,1 bensì spiega come utilizzareLATEX2ε per scriverla. La filosofia seguita è quelladi non approfondire i vari temi nei dettagli (per iquali si rimanda a manuali specifici), ma di trattareil più vasto numero di argomenti e di indicare lesoluzioni che l’autore ritiene migliori. La sceltadei contenuti deriva in primo luogo dall’esperienzadell’autore ed in secondo dai numerosi interventiriguardanti tesi di laurea presenti sul forum delguIt (Gruppo Utilizzatori Italiani di TEX),2 cheresta sempre un valido riferimento per tutte letematiche trattate nel presente documento.

∗Ringrazio in primo luogo Fabiano Busdraghi che hacollaborato alla scrittura del par. 4, Massimiliano Dominiciche ha curato gli aspetti relativi ai sistemi Linux e UNIXnel par. 4.1.2 e Riccardo Campana che ha curato gli aspettirelativi alla piattaforma Macintosh nel par. 6.1.4. Ringrazioinoltre tutti coloro che mi hanno consigliato durante lastesura e la revisione di questo documento, ed in particolareClaudio Beccari, Gustavo Cevolani, Massimo Guiggiani,Maurizio Himmelmann, Lorenzo Pantieri ed Emiliano Va-vassori: senza il loro eccellente contributo questo articolonon avrebbe mai raggiunto la forma attuale.

1. Sono attualmente disponibili numerose guide alla scrit-tura sia per tesi di laurea di tipo generico Eco (1977);Lesina (1994) che specifiche per tesi di laurea scientificheMatricciani (2000, 2003).2. Il forum del guIt è raggiungibile al seguente indirizzo

http://www.guit.sssup.it/forum/.

Il testo presume che il lettore conosca già i ru-dimenti di LATEX2ε, ovvero che abbia letto unadelle numerose guide di base disponibili gratui-tamente in rete American Mathematical So-ciety (1995); Baudoin (1998); Flynn (2005);Gregorio (2006); Oetiker et al. (2000); TheTutorial Team (2000); Voß (2003a) oppureun manuale cartaceo Beccari (1991); Diller(1999); Goossens et al. (1995); Grätzer (1999,2000); Hahn (1993); Higham e Griffiths (1997);Knuth (1992); Kopka e Daly (1995); Lamport(1994). Per alcuni argomenti (ad esempio figuree tabelle) si rimanda alla lettura di testi specificied in generale si invitano gli utenti a consultare lefonti Web presentate nel par. 7. Ogniqualvolta sicita un pacchetto, non si fornisce una descrizionecompleta del suo funzionamento, per la quale sirimanda al relativo manuale,3 ma si analizzano leopzioni più importanti e se ne suggerisce l’utilizzo.

1 La documentclassPer una tesi di laurea è consigliabile utilizzare laclasse book. Nelle opzioni della classe, oltre alla di-mensione del font di base (10pt, 11pt o 12pt)4 e aquella del foglio (tipicamente a4paper), è possibilescegliere:

• se avere un documento fronte-retro (twoside)o solo fronte (oneside),

• se collocare la prima pagina dei capitoli su fac-ciate destre (openright) o indifferentemente(openany).

Si suggerisce di utilizzare la classe book invece diquella report in quanto la prima prevede tre coman-di (\frontmatter, \mainmatter e \backmatter)5

che controllano il formato del numero di paginae la numerazione dei capitoli. Nel frontmatter lepagine sono numerate con i numeri romani minu-scoli (i, ii, iii, ecc.) ed i capitoli non sono nume-rati (come se si utilizzasse il comando asteriscato\chapter*{}). Nel mainmatter le pagine sono nu-merate con numeri arabi (la numerazione riparteda 1) e i capitoli sono anch’essi numerati con cifrearabe. Nel backmatter le pagine sono numerate

3. La maggioranza dei pacchetti per LATEX è accompa-gnata da un manuale che ne descrive l’utilizzo e spessopresenta degli esempi. La posizione del manuale dipendedalla distribuzione TEX che si usa ma in generale esso sitrova in una sottocartella di /texmf/doc.4. Per avere una buona leggibilità su fogli A4 è

consigliabile usare un font di base di dimensione 11 pt.5. Per l’uso di tali comandi si rimanda al par. 3.

27

Page 30: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

come nel mainmatter (la numerazione prosegue daquesta) ma i capitoli non sono numerati.

Si consiglia inoltre di utilizzare l’opzione fronte-retro (twoside) in quanto:

• si dimezza lo spreco di fogli di carta,6

• è possibile usare testatine differenziate perpagine sinistre e destre,

• i libri sono scritti in questo modo (e dunqueci si aspetta che chi legge la tesi sia abituatoa questo layout).

Se ad esempio si vuole avere la tesi con dimensio-ne del corpo 11 pt, stampata fronte-retro su fogliA4, con collocazione della prima pagina dei capitolisu facciate destre, dovremo usare il comando\ documentclass [11pt ,a4paper ,twoside ,%

openright ]{ book}

Alternativamente può essere utilizzata la clas-se memoir che risulta particolarmente flessibile epermette di personalizzare molti aspetti del docu-mento (testatine, titoli capitoli, note, indici, ecc.)senza dover caricare altri pacchetti; si rimanda alladocumentazione della classe per i dettagli.

2 Organizzazione dei filesLa gestione di documenti articolati come un libroo una tesi di laurea può diventare complessa edunque è auspicabile suddividere il testo in piùfile. LATEX2ε permette di avere un main file cheviene compilato ed in cui sono richiamati glialtri file con i comandi \include e \input. Ilcomando \input{nomefile} permette il nesting,ovvero rende possibile richiamare un file chene richiama a sua volta un altro. Il comando\include{nomefile} non permette il nesting,ma inserisce un \clearpage prima del testo checontiene e permette di utilizzare il comando\includeonly{nomefile1,nomefile2,...}per inserire solo i file specifica-ti tra parentesi. Quando si usa\includeonly{nomefile1,nomefile2,...}vengono compilati solamente i file tra parentesigraffe ed i contatori (numeri di pagina, numeri dinote, ecc.) non vengono aggiornati.

3 Sezioni della tesiL’organizzazione della tesi di laurea è argomen-to dei manuali di scrittura Eco (1977); Lesina6. Un comportamento comune a molti laureandi con-

siste nell’usare qualunque strumento tipografico possibileper aumentare il numero di pagine della tesi (allargando imargini, aumentando la dimensione del font, aumentandol’interlinea, inserendo molte figure, stampando solo fronte,ecc.). Tralasciando il fatto che la qualità dei contenuti è piùimportante della quantità, spesso questi espedienti produ-cono dei risultati tipografici pessimi. Si consiglia dunque diconcentrarsi sui contenuti e lasciar perdere l’impostazionetipografica (a questo pensa il LATEX) ed in particolare ilnumero di pagine prodotto.

(1994); Matricciani (2000, 2003) ed in particolarmodo della normativa ISO relativa alla presentazio-ne dei rapporti scientifici e tecnici 5966 (1989). Inquesto paragrafo si propone una possibile strutturaper la tesi e si affrontano le problematiche relativead ogni sezione.Una tesi può in generale presentarsi con la

seguente struttura:7

• Il frontespizio◦

• La dedica*◦

• Il sommario*◦

• I ringraziamenti*◦

• Gli indici◦

• I simboli e lenotazioni*

• La prefazione*

frontmatter

• I capitoli interni

• Le appendici*

}mainmatter

• La bibliografia

• L’elenco degliacronimi*

• L’indice analitico*

backmatter

3.1 Il frontespizioLa struttura ed il contenuto del frontespizio sonogeneralmente imposti dalla facoltà presso cui lalaurea è conseguita, dunque è necessario crearload hoc. Spesso il frontespizio è costituito da duepagine, una in cui compare solo il nome del candi-dato ed un’altra in cui è presente anche quello deirelatori e dei correlatori, accanto ai quali vengo-no apposte le rispettive firme. Per la creazione diqueste pagine si faccia riferimento ai comandi stan-dard del LATEX2ε Beccari (1991); Diller (1999);Flynn (2005); Goossens et al. (1995); Grätzer(1999); Knuth (1992); Kopka e Daly (1995);Lamport (1994); Oetiker et al. (2000). Alcunispunti su come impostare il codice per generare ilfrontespizio sono disponibili in rete.8Per ottenere il logo dell’università sullo sfondo,

come in fig. 1(a) a fronte, può essere utilizzato ilpacchetto eso-pic e definito il comando\ newcommand \ AlCentroPagina [1]{ %

\ AddToShipoutPicture *{\ AtPageCenter {%\ makebox (0 ,0){\ includegraphics %[ width =0.9\ paperwidth ]{#1}}}}}

7. Il simbolo * contraddistingue le sezioni facoltativementre ◦ indica che le sezioni non devono essere presentinell’indice.8. http : / / zoonek . free . fr / LaTeX / LaTeX _ samples _

title/0.html

28

Page 31: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

(a) (b)

Figura 1: Esempio di frontespizio.

che si usa così\ AlCentroPagina {nome_logo}

I puntini su cui fare la firma (vedi fig. 1(b))possono essere ottenuti con il comando \dotfill.

Il pacchetto titling permette di modificare il type-setting prodotto con il comando \maketitle, maspesso il frontespizio di una tesi di laurea differiscetroppo da quello prodotto dalle classi standard edè quindi necessario ridefinirlo completamente.

3.2 La dedicaLa dedica, ove presente, può assumere le più svaria-te forme a seconda dei gusti dell’autore. Di solito(vedi ad esempio la fig. 2 nella pagina seguente) ècostituita da una riga allineata a destra ad esempiocon il comando\ begin { flushright }...\end{ flushright }

La posizione verticale della riga nella pagina puòessere scelta a piacere e per controllarla risultaparticolarmente conveniente l’uso di una coppiadi comandi \vspace{\stretch{...}}. In questomodo è infatti possibile impostare il rapporto tralo spazio che precede la dedica e quello che segue.Se ad esempio si vuole che lo spazio che segue siail doppio di quello che precede, è possibile usare icomandi\ null \ vspace {\ stretch {1}}...\ vspace {\ stretch {2}}\ null

3.3 Il sommarioIl sommario o abstract viene generato conl’ambiente\ begin { abstract }...\end{ abstract }

che è definito nelle classi article e report. Se siutilizza la classe book è necessario inserire nel pre-ambolo la definizione di tale ambiente (si riportala definizione presente nella classe report)9

\ usepackage { fancyhdr }\ pagestyle { empty }

\ newenvironment { abstract }%{\ cleardoublepage \ null \ vfill \ begin { center }%\ bfseries \ abstractname \end{ center }}%

{\ vfill \ null }

Per le tesi di laurea in italiano è spesso richiestoche sia presente anche la traduzione inglese dell’ab-stract. Utilizzando il pacchetto babel è possibile se-lezionare la lingua per le due versioni dell’abstractin modo che sia effettuata la corretta sillabazionedelle parole e che sia caricato in automatico il cor-retto titolo del sommario. Dopo aver richiamato ilpacchetto nel preambolo con il comando\ usepackage [english , italian ]{ babel }

è sufficiente inserire i sommari come segue\ begin { abstract }... versione del sommario in italiano ...

9. Per l’utilizzo del pacchetto fancyhdr si rimanda alpar. 6.2.1.

29

Page 32: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

Figura 2: Esempio di dedica.

\end{ abstract }

\ selectlanguage { english }%\ begin { abstract }... English version of the abstract ...\end{ abstract }\ selectlanguage { italian }%

Il risultato è riportato in fig. 3 nella paginasuccessiva.

3.4 Gli indiciGli indici di solito sono posizionati subito dopo ilsommario nel seguente ordine:

• indice

• elenco delle figure

• elenco delle tabelle

• altri elenchi

e vengono prodotti automaticamente da LATEX2εcon i comandi\ tableofcontents\ listoffigures\ listoftables

Per creare elenchi di oggetti flottanti personaliz-zati (ad esempio listati di programmi, algoritmi,ecc.) si faccia riferimento al pacchetto float ed airelativi comandi \newfloat e \listof. Per modi-ficare il layout degli indici è possibile utilizzare ilpacchetto tocloft.

3.5 I simboli e le notazioni

Talvolta risulta opportuno far precedere al testodella tesi un elenco dei simboli e delle notazioniutilizzate. A questo scopo può essere utilizzatoil pacchetto nomencl che genera l’elenco automa-ticamente per mezzo del programma MakeIndex.Alternativamente è possibile creare manualmentel’elenco ad esempio utilizzando l’ambiente tabular.In fig. 4 nella pagina 32 si riporta un esempio..

3.6 Le appendici

Le appendici sono dei normali capitoli la cui nu-merazione è però in lettere latine. LATEX2ε per-mette di crearle semplicemente con il coman-do \chapter{...} preceduto da \appendix; sesi hanno più appendici, \appendix deve essererichiamato solo una volta. Si riporta un esempio:...\ mainmatter\ include { capitolo 1}\ include { capitolo 2}\ include { capitolo 3}

\ appendix\ include { appendice 1}\ include { appendice 2}...

3.7 L’indice analitico

L’indice analitico può essere creato in automaticoper mezzo del pacchetto makeidx e del program-ma MakeIndex. Nel preambolo deve essere presen-te anche il comando \makeindex. Per bilanciarele colonne dell’ultima pagina dell’indice analiticoè sufficiente inserirlo all’interno di un ambientemulticols.10 A questo scopo è possibile ridefinirel’ambiente theindex con il seguente codice\let\ orgtheindex \ theindex\let\ orgendtheindex \ endtheindex\def\ theindex {%

\def\ twocolumn {\ begin { multicols }{2}} %\def\ onecolumn {}%\ clearpage\ orgtheindex

}\def\ endtheindex {%

\end{ multicols }%\ orgendtheindex

}

3.8 La bibliografia

Così come l’indice analitico, anche la bibliografiapuò essere gestita in modo automatico da LATEX2ε.Essa può essere creata manualmente per mezzodell’ambiente thebibliography, tuttavia è altamentepreferibile l’utilizzo del programma BibTEX chepermette di separare il contenuto dei riferimentibibliografici (archiviati in appositi databases .bib)e la loro formattazione (gestita da stili .bst). Ilfile .bst sono semplici file di testo e possono es-sere creati manualmente, tuttavia si consiglia di

10. Deve essere caricato il pacchetto multicol.

30

Page 33: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

(a) (b)

Figura 3: Esempio di abstract in doppia lingua.

utilizzare software dedicati alla gestione delle bi-bliografie: tra questi uno dei migliori è JabRef11

che gira su Java VM e quindi funziona su tutte lepiattaforme (Windows, Linux and Mac OS X); perMac OS X si segnala BibDesk.12

Un pacchetto particolarmente utile per la gestio-ne della bibliografia è costituito da natbib, che èaccompagnato da una esaustiva guida ed al qua-le si può affiancare lo stile natbib_ita.bst perbibliografie in italiano.13 Qualora sia necessarioinserire degli indirizzi di siti web nella bibliografiaè consigliabile l’utilizzo del pacchetto url. Il coman-do \url{} offerto da tale pacchetto è una formadi \verb che permette l’a capo in corrispondenzadi certi caratteri che tipicamente compaiono de-gli indirizzi web ed email (ad esempio / e .). Unesempio di utilizzo è presente a pagina 43.

La distribuzione standard di LATEX e il pacchettonatbib offrono numerosi stili bibliografici (file .bst),tuttavia esiste un modo facile e veloce di crearsiuno stile personalizzato: il programma makebst,disponibile su CTAN.14 È sufficiente compilare conLATEX il file makebst.tex e rispondere in modointerattivo alle domande. Alla fine viene creato unfile .dbj che va rinominato .tex e compilato conLATEX per ottenere il .bst.

11. http://jabref.sourceforge.net/12. http://bibdesk.sourceforge.net/13. natbib_ita.bst è scaricabile da http://www.guit.

sssup.it/downloads/natbib_ita.zip.14. http://www.ctan.org/

Per far comparire la bibliografia nell’indice(\tableofcontents) è necessario utilizzare il co-mando \addcontentsline. Il seguente codice vi-sualizza i riferimenti bibliografici con lo stile plain,aggiunge all’indice la sezione (nel caso di una tesiè un capitolo) della bibliografia e richiama il da-tabase tesibib.bib; si noti che viene utilizzatoil comando \bibname per rendere il nome dellabibliografia dipendente dalla lingua utilizzata.15

\ cleardoublepage\ bibliographystyle { plain }\ refstepcounter { chapter }\ addcontentsline {toc }{ chapter }{\ bibname }\ bibliography { tesibib }

4 Gli oggetti4.1 Le figureLe figure sono uno degli argomenti trattati più este-samente dalle guide; esistono anche guide Cauccie Spadaccini (2005); Daly (1998); Reckdahl(1997) e libri Goossens et al. (1997) interamentededicati all’argomento e a cui si rimanda il lettoreper ogni approfondimento. I problemi incontratidagli utenti LATEX2ε durante l’inserimento di fi-gure sono generalmente di due tipi. Una parte deiproblemi derivano dalle figure in sé, ovvero dalfile che si cerca di inserire in un documento (ver-rà trattato nel par. 4.1.1), mentre un altro tipo15. Con l’opzione italian di babel \bibname produ-

ce “Bibliografia” mentre con l’opzione english produce“Bibliography”.

31

Page 34: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

Figura 4: Esempio di elenco dei simboli.

di problemi, totalmente distinto dal precedente, èquello degli oggetti flottanti (e verrà trattato nelpar. 4.3).

4.1.1 Formati

Esistono due grandi classi di figure, le immaginivettoriali e le immagini bitmap. Le prime sonodescritte da forme e possono essere scalate e/o de-formate senza perdere definizione; sono soprattuttoadatte per i grafici e per gli schemi. Le secondesono matrici di pixel colorati e sono adatte per lefotografie.La prima cosa da fare è produrre figure nel for-

mato più adatto per i propri scopi. È inutile salvaregrafici o schemi in .jpeg per poi convertirli in .eps,in quanto la conversione di un’immagine bitmap in.eps include semplicemente il file bitmap in una“cornice” .eps senza migliorare in alcun modo laqualità. È inutile anche fare la conversione opposta,da file vettoriale a bitmap, perché in questo modosi perdono le informazioni sulla geometria conte-nuta nella figura e quindi si abbassa la qualità delfile.Il parametro più importante di un .eps sono i

Bounding Box (BB), che determinano la taglia ef-fettiva dell’immagine e che servono a LATEX2ε percalcolare lo spazio da riservare alla figura. Ideal-mente i BB dovrebbero essere al limite massimodel contenuto dell’immagine, ma spesso i program-mi di grafica lasciano grandi bordi bianchi attornoalla figura disegnata. Questo porta spesso a grandiconfusioni, perché di fatto LATEX2ε sta lasciandoalla figura lo spazio corretto, ma visivamente partedi questo è utilizzato per il bordo bianco, quindila figura appare troppo piccola, non centrata, coneccessivi margini verticali, etc. La prima cosa daverificare è quindi che il nostro programma di gra-fica generi degli .eps con BB corretti. Per farlobasta aprire la figura con Ghostview e attivarela visualizzazione dei BB. Se questi non sono cor-

retti bisogna cercare di configurare correttamenteil programma di grafica, ma il problema non haniente a che vedere con LATEX2ε. Nel caso si abbiauna o due figure con BB errati questi si possonocorreggere a mano aprendo il file .eps con qualun-que editor di testo e modificando i valori dei BB,che si trovano facilmente in una delle prime righe.Se però il problema riguarda molti file bisognacercare di correggerlo all’origine. Ulteriori dettaglisull’utilizzo delle figure con PDFLATEX2ε e sullaconversione da file .eps a .pdf sono riportati nelpar. 5.2.

4.1.2 Pacchetti utiliPer inserire le figure è necessario caricare il pacchet-to graphicx, della cui guida si consiglia la lettura.Per ottenere sottofigure (vedi ad esempio la fig. 1nella pagina 29) è necessario caricare il pacchettosubfig.16

In casi semplici non è necessario ricorrere a que-st’ultimo pacchetto visto che all’interno degli am-bienti figure e table si può mettere più di un graficoo di una tabella. Se si hanno quindi due o più figureche possono essere raggruppate insieme, scrivendo\ begin { figure }[ tb]

\ includegraphics [ width =0.3\ textwidth ]{ fig:a}\ caption { didascalia :a}\ label {fig:a}\ hspace {4 em}\ includegraphics [ width =0.3\ textwidth ]{ fig:b}\ caption { didascalia :b}\ label {fig:b}

\end{ figure }

In questo modo si riduce il numero di oggettiflottanti e se ne facilita l’inserimento.Al fine di mantenere ordine nei file sorgenti, è

consigliabile raccogliere tutte le figure in una opiù sottocartelle; se ad esempio tali sottocartellesi chiamano dir_1 e dir_2, è sufficiente inserirenel preambolo\ graphicspath {{ dir _1/} ,{ dir _2/}}

16. Tale pacchetto sostituisce il pacchetto subfigure cheè stato dichiarato obsoleto dal suo stesso autore.

32

Page 35: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

L’argomento di \graphicspath può essere relativoalla cartella dove si trova il file .tex che vienecompilato (come nell’esempio precedente), oppurepuò essere un percorso assoluto,17 come ad esempio\ graphicspath {{c:/ documenti /tesi/ immagini /}}

La formattazione delle didascalie può essere con-venientemente controllata con il pacchetto cap-tion. Un utile lettura sull’argomento è Caucci eSpadaccini (2005).

4.2 Le tabelleCosì come per le figure, anche per le tabelle esi-stono guide specifiche a cui si rimanda per ogniapprofondimento Mori (2006).

Per migliorare la spaziatura dell’ambiente tabularstandard è possibile utilizzare il pacchetto ctable,mentre se si vogliono colorare le righe o le colonne ènecessario caricare il pacchetto xcolor con l’opzionetable. Nel caso di tabelle di grandi dimensioni èpossibile:

• ridurre la dimensione della tabella effettuan-do una scalatura, ad esempio con i seguenticomandi:\ begin { center }

\ resizebox {0.95\ textwidth }{!}{ %\ begin { tabular }...\end{ tabular }}

\end{ center }

• ruotare la tabella di 90° con il pacchettorotating,18

• spezzare la tabella su più pagine con ilpacchetto supertabular.

4.3 Controllo degli oggetti flottantiSpesso gli utenti si lamentano del fatto cheLATEX2ε sposti le figure (e in generale gli oggettiflottanti) lontano dal punto in cui vengono inserite.Nella maggioranza dei casi questo è dovuto ad unutilizzo erroneo delle opzioni di posizionamentodegli oggetti flottanti. Nel presente testo si vuoleenfatizzare che alcune scelte devono essere presenella fase di stesura del testo (par. 4.3.1) mentrealtre sono riservate, quando necessarie, alla fase direvisione (par. 4.3.2).

4.3.1 Cosa fare durante la stesura del testoIn primo luogo bisogna accettare il fatto che seLATEX2ε sposta un oggetto flottante è perché lospazio è fisicamente insufficiente, o per considera-zioni estetiche. Per esempio LATEX2ε non metteràmai una figura seguita da un titolo di sezione e

17. Si noti che su sistemi Linux o UNIX il percorso asso-luto va specificato per esteso, dato che l’espansione della til-de non funziona: \graphicspath{{/home/lapo/documenti/tesi / immagini/}}, quindi, e non \graphicspath{{~ /documenti/tesi/immagini/}}.18. Altre tecniche per ruotare immagini e tabelle sono

indicate in Voß (2003b).

da un cambio pagina, ma preferirà stampare lasezione e poi la figura, oppure se aggiungiamo unoggetto flottante in fondo ad una pagina, LATEX2εè obbligato a spostarlo almeno nella pagina succes-siva. Se lo spazio è insufficiente, è inutile cercaredi forzare LATEX2ε a mettere l’oggetto flottantein tale posizione: se lo spazio fisico non c’è, nonpossiamo inventarlo.Per fortuna con un minimo di accortezza

LATEX2ε fa un ottimo lavoro. Per prima cosa èopportuno utilizzare sempre il posizionamento au-tomatico evitando di aggiungere \clearpage ocomandi simili: in fase di redazione dovremmo soloconcentrarci sui contenuti e non sull’impaginazione.In generale i posizionamenti fatti a mano interfe-riscono con la complessa routine di LATEX2ε peril posizionamento degli oggetti flottanti e porta-no a risultati peggiori rispetto a quelli di default.Seguendo le semplici indicazioni che seguono, ilposizionamento automatico mantiene gli oggettiflottanti vicini al punto di inserimento ed inoltreevita che l’utente si preoccupi continuamente delposizionamento dei float, lasciando più tempo perlavorare sui contenuti.Una delle origini dei problemi lamentati è l’u-

tilizzo eccessivo dell’opzione [h] (che chiede diposizionare la figura nel punto dove compare nelcodice): gli oggetti flottanti vengono spesso inseriticon l’opzione [htbp] o peggio [h!t]. In genera-le si pensa che questa opzione sia la migliore permantenere gli oggetti flottanti vicino al punto diinserimento. In realtà può funzionare bene soloquando gli oggetti inseriti sono molto piccoli (doveper piccolo si intende con un’altezza molto inferio-re rispetto all’altezza del corpo del testo). Il modomigliore per utilizzare le opzioni di posizionamentoè quello di domandarsi in primo luogo se l’ogget-to flottante sarà abbastanza piccolo per stare inuna pagina di testo o se avrà bisogno di una pa-gina tutta per sé. Nel primo caso lo introdurremoquindi con un’opzione di posizionamento [tb], nelsecondo con [p]. Se non ci sono oggetti flottantiin sospeso, nel primo caso LATEX2ε potrà spostarel’oggetto subito prima del punto di inserzione (cosache non può fare se si usa [h] prima di [t]) o nellapagina immediatamente successiva. Usando invece[p] per i grossi oggetti flottanti, questi verrannoimmediatamente stampati in una pagina dedicata,e non verrano spostati alla fine del capitolo comesuccede con [tbp]. Basta sfogliare un qualunquetesto ben impaginato per accorgersi che le figuresono introdotte proprio in questo modo: in genera-le all’inizio o alla fine della pagina, in una paginaintera se sono grandi, raramente nel corpo del testose sono davvero piccole. Alcuni utenti sono infasti-diti dal fatto che alcuni oggetti flottanti appaianoprima del testo in cui sono citati (ad esempio unafigura in alto nella pagina in cui è citata): perrisolvere questo problema è possibile utilizzare il

33

Page 36: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

pacchetto flafter che impedisce agli oggetti flottantidi apparire prima della loro definizione nel testo.

Infine è utile ricordare che LATEX2ε riesce a po-sizionare tutte le figure in modo corretto solo se ilrapporto

testofigure

è sufficientemente alto. Da questo segue che è au-spicabile (per altro non solo per fini tipografici)scrivere qualche cosa di interessante piuttosto cheriempire le lacune con immagini! Se tale rapportoè troppo basso, può accadere che la compilazionesi interrompa e venga restituito il seguente errore! LaTeX Error : Too many unprocessed floats .

Questo è dovuto al fatto che LATEX2ε ha una certaquantità di memoria dedicata al posizionamento de-gli oggetti flottanti; se troppi oggetti si accumulanodurante la compilazione tale memoria può esaurirsiFairbairns (2005). Per risolvere questo problemaè possibile utilizzare il pacchetto placeins che defini-sce il comando \FloatBarrier che non può essereoltrepassato dagli oggetti flottanti e quindi imponeil posizionamento di tutti quelli che sono ancorain memoria. Nel caso che il documento presentidei posti dove possa essere inserita un’interruzionedi pagina, conviene utilizzare \clearpage. Talecomando, oltre a creare un’interruzione di pagi-na, impone il posizionamento di tutti gli oggettiflottanti ancora in memoria in modo analogo a\FloatBarrier. Il pacchetto morefloats aumentail numero di oggetti flottanti che possono esseremantenuti in memoria durante la compilazione da18 a 36. Talvolta alcune riviste richiedono che nellebozze tutte le figure e tabelle siano riportate allafine del documento: per fare questo in automaticoè possibile utilizzare il pacchetto endfloat.

Se tutto ciò non fosse sufficiente, nella fase prece-dente la stampa, e solamente allora, è possibile in-tervenire manualmente come spiegato nel paragrafoseguente.

4.3.2 Cosa fare durante la revisione del testoNella fase che precede la stampa può essere ne-cessario intervenire manualmente per correggereil posizionamento degli oggetti flottanti (quali adesempio le figure e le tabelle). A questo riguardoesistono numerosi pacchetti, di cui i più utili sonocostituiti da float, che permette di forzare il posi-zionamento dell’oggetto nel punto in cui è situatoil relativo ambiente per mezzo dell’opzione H, eda placeins, che permette di mettere delle barriereinvalicabili per gli oggetti flottanti con il comando\FloatBarrier.

TEX mette a disposizione parametri checontrollano gli oggetti flottanti:

\setcounter{topnumber}{...} massimo nu-mero di float in posizione t per ognipagina

\def\topfraction{...} massima frazione dipagina per i float in posizione t per ognipagina

\setcounter{bottomnumber}{...} massimo nu-mero di float in posizione b per ognipagina

\def\bottomfraction{...} massima frazionedi pagina per i float in posizione b per ognipagina

\setcounter{totalnumber}{...} massimo nu-mero di float nella stessa pagina

\setcounter{dbltopnumber}{...} massimo nu-mero di float grandi nella stessa pagina

\def\textfraction{...} minima frazione dipagina per il testo

\def\floatpagefraction{...} minima frazio-ne di pagina per i float in posizionep

\def\dbltopfraction{...} massima frazionedi pagina per i float a piena pagina incomposizione a due colonne in posizione t

\def\dblfloatpagefraction{...} minima fra-zione di pagina per i float a piena pagina incomposizione a due colonne in posizione p

5 Compilare il codice5.1 Scelta del formatoIl codice LATEX può essere compilato per ottenerein output file DeVice-Independent (.dvi) oppure fi-le Portable Document Format (.pdf).19 Entrambii formati hanno pro e contro ed in genere vengo-no utilizzati con scopi differenti. Il .dvi permettela ricerca diretta (facendo doppio click sul codiceall’interno dell’editor, il programma di visualizza-zione del .dvi trova il rispettivo output) ed inversa(facendo doppio click all’interno del programma divisualizzazione del .dvi, il cursore viene posizio-nato sul rispettivo codice all’interno dell’editor),molto utili in fase di elaborazione della tesi. Tut-tavia la maggioranza dei visualizzatori di .dvinon visualizzano correttamente gli effetti di co-mandi che modificano le figure quali \resizebox e\rotatebox20 ed inoltre non sfruttano il pacchet-to microtype (vedi il par. 5.2). Il .pdf, invece, purnon offrendo la ricerca diretta ed inversa,21 visua-lizza correttamente tutti gli effetti del pacchetto

19. In realtà una terza opzione è costituita dai filePostScript (.ps) ma questi sono stati di fatto soppiantatidal formato .pdf e sono quindi sconsigliati.20. Le versioni di YAP (visualizzatore di .dvi di

MiKTEX) successive alla 2.5 risolvono questi problemi.21. Su macchine Macintosh che usano la distribuzione

MacTeX, la ricerca è eseguibile in entrambi i sensi anchesu file .pdf.

34

Page 37: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

graphicx, sfrutta il pacchetto microtype, è un for-mato molto diffuso anche tra coloro che non usanoLATEX, permette di sfruttate i riferimenti iperte-stuali forniti dal pacchetto hyperref, e permette direstringere l’accesso al documento per mezzo dipassword.22

In definitiva si consiglia di usare il .dvi durantela stesura della tesi ed il .pdf per la stampa e perla distribuzione della tesi in formato elettronico.

5.2 Creazione di PDFLa creazione di un PDF può essere effettuata indifferenti modi, di cui i principali sono:

• la conversione di un file .dvi o .ps attraversoGhostscript,

• la compilazione diretta del sorgente .tex conPDFLATEX2ε.

Senza entrare nei dettagli, per i quali si riman-da a testi specifici come Pratesi et al. (2003);Talbot (2004), per sfruttare appieno le poten-zialità del formato PDF23 è necessario utilizzarePDFLATEX2ε che è presente in tutte le più im-portanti distribuzioni di LATEX2ε ed è gestito daiprincipali editor di testo dedicati al LATEX2ε.La differenza fondamentale tra le due proce-

dure consiste nel formato delle immagini inseri-te con il comando \includegraphics: mentre laconversione da file .dvi o .ps utilizza gli stes-si file .eps che servono per la compilazione del.dvi, PDFLATEX2ε richiede file .pdf (se vetto-riali) oppure .jpg o .png (se bitmap).24 Volendoutilizzare PDFLATEX2ε, è dunque necessario effet-tuare una conversione preliminare dei file .eps in.pdf; questa può essere convenientemente effet-tuata con Ghostscript per mezzo dell’interfacciagrafica eps2pdf.25

Se si prevede di compilare sia con LATEX2εche con PDFLATEX2ε è consigliabile non spe-cificare l’estensione dei file grafici caricati da\includegraphics; volendo ad esempio inseri-re il file figura_01.eps, è necessario creare ilfigura_01.pdf con eps2pdf e poi inserire nel testo\ includegraphics { figura _01}

22. È possibile limitare l’accesso al file, limitarne la stam-pa (impedirla, oppure consentirla solo a bassa risoluzione)e limitarne le modifiche (estrazione di testo, estrazione oeliminazione di pagine, ecc.).23. Il formato PDF permette di utilizzare l’ipertesto, i

bookmark e i thumbnail che non vengono prodotti nellaconversione a partire da file .dvi o .ps.24. Per i dettagli riguardo ai formati delle figure si

rimanda al par. 4.1.1.25. eps2pdf è un’interfaccia grafica per Windows di-

sponibile su CTAN (http://www.ctan.org/tex-archive/support/eps2pdf/). Su Linux esiste una omonima procedu-ra scritta in sh ed anche la procedura epstopdf: entrambeoperano da linea di comando. Tutti i programmi citati azio-nano GhostScript per effettuare la conversione da .eps a.pdf.

Così facendo, quando si compila con LATEX2ε vie-ne caricato il file figura_01.eps, mentre quandosi compila con PDFLATEX2ε viene caricato il filefigura_01.pdf.Per abilitare i riferimenti ipertestuali all’inter-

no del file PDF26 è necessario caricare il pac-chetto hyperref. Per approfondire come utilizza-re font TrueType con TEX (LATEX) e PDFTEX(PDFLATEX) si consiglia di visitare il sito http://www.radamir.com/tex/ttf-tex.htm. Si consi-glia inoltre di utilizzare il pacchetto microtype chemigliora il riempimento delle righe abilitando:

• la font expansion: espande secondo l’as-se orizzontale i caratteri per ottenere unriempimento ottimale della riga;

• la character protrusion: permette che certicaratteri sporgano leggermente a fine riga(tipicamente segni di punteggiatura e trattini).

Per utilizzare queste due modalità, è sufficien-te caricare il pacchetto senza specificare alcunaopzione\ usepackage { microtype }

6 Pacchetti utili6.1 La lingua italiana6.1.1 Norme tipograficheIn italiano la maggioranza delle regole tipografichenon sono universali e vincolanti, ma dipendonopiuttosto da convenzioni e abitudini o dal gustodell’autore. Nonostante questo, è importante chel’autore della tesi conosca quali sono le principali“norme” tipografiche italiane. Cevolani (2006) neoffre una sintesi e, per ogni regola, mostra comeapplicarla in LATEX.

6.1.2 La sillabazionePer attivare la sillabazione italiana e caricare inomi delle sezioni27 in lingua italiana, è necessa-rio caricare il pacchetto babel con l’opzione perl’italiano per mezzo del comando\ usepackage [ italian ]{ babel }

L’utilizzo di babel è necessario per avere la sillaba-zione italiana ma non sufficiente in quanto serveanche che il file ithyph.tex sia attivato (riferirsi almanuale della distribuzione LATEX2ε che si usa).28

LATEX2ε sillaba correttamente quasi tutte le pa-role italiane, tuttavia esistono casi in cui si uti-lizzano nomi propri oppure parole rare; in questa

26. Anche alcuni visualizzatori di file .dvi supportano iriferimenti ipertestuali.27. Ad esempio sommario, bibliografia, indice, ecc.28. A titolo di esempio si riporta la procedura per attivare

il file ithyph.tex su MiKTeX: dal pannello “languages” su“MiKTeX options” attivare la voce “italian – ithyph.tex” epoi rigenerare il file di formato con ”Update Formats” nellafinestra “General”.

35

Page 38: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

eventualità, se la sillabazione tentata da LATEX2εnon è soddisfacente, è possibile suggerirla con ilcomando \hyphenation (va posizionato nel pre-ambolo): si devono scrivere le parole sillabate traparentesi graffe, separate da uno spazio, come nelseguente esempio\ hyphenation {sil -la -ba -zio -ne sim -pa -ti -ca}

Il precedente comando può anche essere utilizzatoquando si vuole che alcune parole non venganosillabate: è sufficiente scriverle senza trattini comenel seguente esempio\ hyphenation { MATLAB Mathematica }

Tale comando può anche essere utilizzato per for-zare una sillabazione particolare; se ad esempio sivuole che la parola “melograno” sia spezzata tra“melo” e “grano” e non in altri punti, è sufficientescrivere:\ hyphenation {melo - grano }

Se la parola in questione compare una sola volta,è possibile suggerirne la sillabazione direttamentenel testo con \-; avremo ad esempiosil\-la\-ba\-zio\-ne

Vale la pena di segnalare che con l’opzioneitalian di babel il carattere " è attivo e serveper svolgere una serie di funzioni, tra le quali:

• introdurre una possibile cesura disabilitandole altre cesure “troppo vicine” ma consentendola sillabazione di entrambi i monconi della pa-rola; per esempio dispepsia viene divisa natu-ralmente in di-spep-sia mentre dis"pepsiaviene divisa in dis-pep-sia;

• andare a capo negli URL e nelle parole compo-ste in cui i componenti sono separati da unabarra; input"/output spontaneamente nonsarebbe divisibile ma con il segno " lo diventa,e lo diventano i singoli monconi.

A conclusione di questo paragrafo, è doveroso ri-cordare che gli interventi manuali sulla sillabazionedovrebbero sempre essere fatti nella fase di revisio-ne che precede immediatamente la stampa. Spessoè preferibile riformulare una frase che dà luogoad un errore di overfull piuttosto che imporreparticolari sillabazioni.

6.1.3 Il rientro sulla prima riga

I libri italiani contemporanei generalmente nonhanno il primo capoverso dopo il titoletto di se-zione rientrato, tuttavia alcuni autori preferisconoavere tale rientro. Per attivare il rientro sulla primariga di ogni sezione, sottosezione, ecc. è necessariocaricare il pacchetto indentfirst, in quanto la con-venzione anglosassone (di default su LATEX2ε) nonlo prevede. Si veda la fig. 5 a fronte.

6.1.4 Caratteri accentatiSu LATEX2ε i caratteri accentati possono essereintrodotti con i comandi standard29 \‘{e}, \’{e},ecc. oppure direttamente da tastiera è, é, ecc. senel preambolo si carica il pacchetto inputenc con laappropriata codifica. Le opzioni di tale pacchettodipendono dall’editor che si sta usando. [ansinew]va usato con la maggioranza degli editor su Windo-ws (tra cui WinEdt e TEXnik Center); [latin1] o[latin9] con la maggioranza degli editor su piat-taforme Linux, UNIX, e Mac OS X; [applemac]su macchine Macintosh con sistema operativo pre-cedente all’OS X e su OS X stesso a seconda dellacodifica utilizzata nell’editor;30 [utf8x] è accet-tabile solo con editor adeguati, che lo consentonocome opzione, tra cui Kile su Linux e TEXShop suMac OS X.

6.2 Il layout6.2.1 Le testatine ed i piè di paginaPer personalizzare testatine e piè di pagina è pos-sibile usare il pacchetto fancyhdr. Per una tesi èprobabile che si abbiano impostazioni differentia seconda della sezione e dunque è convenientedefinirsi alcuni comandi che modifichino testatinee piè di pagina; un esempio per frontmatter emainmatter potrebbe essere:\ newcommand {\ fncyfront }{%

\ fancyhead [RO ]{{\ footnotesize \ rightmark }}\ fancyfoot [RO ]{\ thepage }\ fancyhead [LE ]{\ footnotesize {\ leftmark }}\ fancyfoot [LE ]{\ thepage }\ fancyhead [RE ,LO ]{}\ fancyfoot [C]{}\ renewcommand {\ headrulewidth }{0.3 pt }}

\ newcommand {\ fncymain }{%\ fancyhead [RO ]{{\ footnotesize \ rightmark }}\ fancyfoot [RO ]{\ thepage }\ fancyhead [LE ]{{\ footnotesize \ leftmark }}\ fancyfoot [LE ]{\ thepage }\ fancyfoot [C]{}\ renewcommand {\ headrulewidth }{0.3 pt }}

da utilizzare nel seguente modo\ pagestyle { fancy }\ fncyfront\ frontmatter...\ fncymain\ mainmatter

La definizione di tali comandi è differente a se-conda che il testo sia fronte-retro (twoside) o solofronte (oneside).

Utilizzando l’opzione openright è possibile ave-re una pagina bianca alla fine del capitolo; per

29. Per i comandi standard si faccia riferimento a Pakin(2003).

30. [applemac] corrisponde alla codifica MacOSRoman,o Mac occidentale, di default sul Mac sia OS 9 che OS X.Tuttavia è possibile utilizzare anche altre codifiche, a secon-da dell’editor utilizzato. Per esempio TEXShop permette disalvare file in qualunque codifica (MacOSRoman di default,ma anche Latin1, Latin9, Unicode, e tutte le altre). Lacodifica può essere impostata nelle preferenze dell’editor.Se su piattaforma Macintosh si usa software di derivazione*nix, come Emacs, di solito i file vengono salvati con codifica[latin1].

36

Page 39: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

(a) senza pacchetto indentfirst

(b) con pacchetto indentfirst

Figura 5: Rientro sulla prima riga.

37

Page 40: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

evitare che in questa pagina siano presenti testa-tine o piè di pagina, è sufficiente aggiungere nelpreambolo i seguenti comandi\ makeatletter\def\ cleardoublepage {\ clearpage \ if@twoside\ ifodd \ c@page\ else \ hbox {}\ thispagestyle { empty }\ newpage\ if@twocolumn \ hbox {}\ newpage \fi\fi\fi}\ makeatother

In alternativa a fancyhdr è possibile usare ncc-fancyhdr. Tale pacchetto offre gli stessi strumentidi fancyhdr ma ne risolve alcuni problemi.

6.2.2 Il layout della paginaMolto di frequente i regolamenti di facoltà richiedo-no un layout della pagina differente da quello pro-dotto di default dalle classi di LATEX2ε ed è dunquenecessario modificarlo. Il primo modo per inter-venire è l’utilizzo di comandi interni del LATEX2ε,quali \textwidth, \oddsidemargin, ecc., tutta-via questa strada è sconsigliabile per molte ra-gioni Fairbairns (2005); Trettin (2005). Unamigliore soluzione è costituita da pacchetti rigi-di, come layaureo,31 che sono di facile utilizzo32

ma che lasciano all’utente una scarsa possibilitàdi personalizzare il layout. Nel caso in cui il lay-out prodotto dai pacchetti rigidi non soddisfi leesigenze, è possibile utilizzare il pacchetto geome-try che è completamente configurabile. Nel casoche siano necessari degli interventi locali a pagi-ne o a paragrafi è possibile utilizzare il pacchettochngpage.Per rilegare la tesi può essere conveniente indi-

care sulle pagine dove tagliare il foglio; questo puòessere agevolmente realizzato utilizzando in coppiai pacchetti geometry e crop. Si veda ad esempio lafig. 6 nella pagina successiva.

Di default LATEX2ε cerca di coprire interamentel’altezza della pagina e, ove necessario, inseriscedegli spazi aggiuntivi tra i capoversi oppure dilatagli spazi tra le voci degli elenchi puntati e così via.Se si vuole disattivare questa impostazione ed ave-re dello spazio bianco a piè di pagina quando nonsi riesce a coprirla tutta, è sufficiente aggiungerenel preambolo il comando \raggedbottom. Il com-portamento di default è invece dovuto al comando\flushbottom. Per migliorare la copertura dellepagine è possibile permettere che siano spezzatiambienti matematici di tipo display aggiungendoal preambolo il comando \allowdisplaybreaks.

È conveniente non modificare il comportamentodi default di LATEX2ε fino a quando non si arri-va alla versione definitiva del testo (che precedeimmediatamente la stampa). Solo in questa fase è

31. In aggiunta a layaureo, esistono altri pacchetti rigidi,tra cui widemargins, a4 e a4wide, ma se ne sconsiglia l’utilizzoperché essi sono obsoleti e circolanti in versioni fra loroincompatibili.

32. Il pacchetto layaureo, invece, incorpora due modalitàdi layout (con e senza l’opzione big) e permette anche digestire comodamente lo spazio per la rilegatura per mezzodel comando binding.

possibile intervenire modificando il posizionamentodegli oggetti flottanti (vedi il par. 4.3), oppure in-tervenendo con i comandi appena citati. Prima dimodificare le impostazioni di LATEX2ε è convenien-te provare ad effettuare piccole modifiche al testoche spesso sono sufficienti per risolvere i problemie permettono di ottenere layout più eleganti.

6.2.3 L’interlineaSpesso i regolamenti di facoltà impongono un’inter-linea differente da uno (di default su LATEX2ε). Permodificare l’interlinea del documento esistono piùstrade (si veda al riguardo Trettin (2005)), tutta-via la più indicata consiste nel caricare il pacchettosetspace. Tale pacchetto fornisce tre interlinee pre-definite richiamate con i comandi \singlespacing(interlinea singola), \onehalfspacing (interlinea1,5) e \doublespacing (interlinea doppia); se ènecessaria un’interlinea differente, è sufficiente uti-lizzare il comando \linespread{...}: tra paren-tesi graffe va il numero che rappresenta il fattoredi scala per l’avanzamento di riga.

6.3 Lo stile6.3.1 I fontsIn primo luogo è consigliabile utilizzare l’encodingT1 che rappresenta il nuovo standard di codificadei caratteri di LATEX2ε; tale codifica non è ancorala predefinita solo per motivi di compatibilità conle versioni di LATEX precedenti a LATEX2ε ma puòessere attivata per mezzo del comando\ usepackage [T1]{ fontenc }

L’utilizzo di tale encoding può dare luogo a pro-blemi di visualizzazione di file PDF su versioni diAdobe Acrobat precedenti alla 6; in particolare puòaccadere che i font appaiano sgranati Fairbairns(2005). La soluzione di questo problema è fornitadalla famiglia di font cm-super; i font di tale fami-glia sono PostScript Type 1 con praticamente lastessa forma dei font cm e tc, ma con molte mi-gliorie in termini di qualità di typesetting, tra cuiil supporto per set di caratteri non-ASCII.33 Permaggiori dettagli su questa famiglia si rimanda,oltre che alla relativa documentazione, a Lehman(2004). Nel caso che la tesi sia di tipo scientifico,è conveniente abilitare i font matematici fornitidall’AMS con il comando\ usepackage { amsfonts }

A questo conviene aggiungere anche\ usepackage { amsmath }

che fornisce svariate estensioni per il miglioramen-to della struttura informativa e della stampa didocumenti che contengono formule matematiche.Per modificare la dimensione del font, in aggiuntaai comandi standard,34 è utile il pacchetto relsize33. http://en.wikipedia.org/wiki/ASCII34. tiny, scriptsize, footnotesize, small, normalsize,

large, Large, LARGE, huge e Huge.

38

Page 41: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

Figura 6: Esempio di segni per il taglio del foglio.

che consente di assegnare dimensioni relative con icomandi \smaller e \larger.Gli utenti LATEX che provengono da software

What-You-See-Is-What-You-Get (WYSIWYG),35

per lo meno all’inizio, sentono l’esigenza di cambia-re font. Questo fenomeno è probabilmente dovutoal fatto che i software WYSIWYG hanno una resatipografica talmente scarsa che l’utente insoddi-sfatto prova a migliorarla cambiando font. Il mioconsiglio è di utilizzare i font che LATEX caricadi default, ovvero la famiglia Computer Modernsviluppata dallo stesso inventore del TEX, DonaldKnuth. Se si vuole a tutti i costi cambiare font, èbene ricordare che è necessario scegliere quattrofamiglie (Serif, Sans-serif, Typewriter e i font perla matematica) che formino una buona combina-zione. A tale proposito, è importante ricordare chei font, tranne alcune eccezioni,36 non hanno tutti isimboli necessari per la matematica e quindi nonpossono essere usati se non nel testo. Per cam-biare font è possibile caricare uno dei numerosipacchetti dedicati come pxfonts, mathpazo, courier,eulervm, literat, lucida, pandora, mathptmx, helvet,courier, kerkis, kmath, qpxmath, qtxmath. In alter-nativa all’uso dei pacchetti, è possibile installarefont seguendo le istruzioni di Lehman (2004). Unelenco dei font disponibili è riportato sul sito delTUG olandese.37

6.3.2 Il titolo dei capitoliPer personalizzare il formato dei titoli dei capitoliè possibile utilizzare il pacchetto fncychap. In fig. 8nella pagina 41 è mostrato il formato standarddei capitoli prodotto dalla classe book, mentre in35. http://en.wikipedia.org/wiki/WYSIWYG36. Il TUG danese ospita una pagina in cui sono riportati

tutti i font che supportano la matematica (http://www.tug.dk/FontCatalogue/mathfonts.html).37. http://www.tug.dk/FontCatalogue/

fig. 7 nella pagina successiva è stato utilizzato ilcomando\ usepackage [ Lenny ]{ fncychap }

In alternativa anche il pacchetto quotchap permet-te di personalizzare i titoli dei capitoli, seppuroffrendo molte meno opzioni del precedente.

6.3.3 ListePer personalizzare il tipo di numerazione negliambienti enumerate è possibile utilizzare l’omonimopacchetto enumerate che permette di modificare lostile del contatore38 e del simbolo delimitatore.39

6.3.4 I “mini indici”Quando i capitoli hanno una struttura particolar-mente complessa, può essere conveniente riportarenella pagina iniziale l’indice del capitolo (vedi adesempio la fig. 7 nella pagina seguente). Questi “mi-ni indici” possono essere prodotti automaticamentecon il pacchetto minitoc.

6.3.5 Le epigrafiTalvolta si vogliono inserire epigrafi nella paginainiziale dei capitoli. Per farlo è possibile utilizzareil pacchetto epigraph; un esempio è riportato infig. 8 nella pagina 41.

6.3.6 Le noteLATEX2ε produce di default un layout delle note dialta qualità; esistono tuttavia alcuni accorgimentiper modificarlo, quando lo si ritenga strettamentenecessario. Il pacchetto footmisc fornisce molti con-trolli sulle note tra cui la possibilità di forzare le

38. È possibile ottenere numeri arabi (1,2,3,. . . ), numeriromani maiuscoli (I,II,III,. . . ) e minuscoli (i,ii,iii,. . . ), letterelatine maiuscole (A,B,C,. . . ) e minuscole (a,b,c,. . . ).39. È possibile scegliere qualunque carattere come

delimitatore ottenendo ad esempio 1), 1., 1 –,. . .

39

Page 42: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

Figura 7: Esempio di “mini indice”.

note al fondo della pagina40 con l’opzione bottom;si veda la fig. 9 nella pagina 42.Per impedire che le note vengano spezzate su

più pagine è sufficiente assegnare al parametro dipenalità un valore molto elevato, ad esempio\ interfootnotelinepenalty =10000

mentre per controllare la dimensione della zonaassegnata alle note a piè di pagina si può usare ilcomando\ dimen \ footins =2 cm

6.4 La matematica

6.4.1 I simboli “speciali”

Intendendo con “simboli speciali” tutti quelli chenon sono inseribili direttamente dalla tastiera, ènecessario distinguere tra quelli matematici e quellinon matematici: per i primi dovrebbe essere suffi-ciente caricare i simboli dell’AMS con il pacchettoamssymb; per tutti gli altri simboli sono necessaripacchetti appositi che possono essere facilmenteidentificati grazie a Pakin (2003).

40. Normalmente LATEX2ε unisce le note con l’ultimariga della pagina e dunque su pagine non piene non si hannole note a fondo pagina.

6.4.2 Rappresentazione dei numeriUn pacchetto molto utile per la rappresentazione dinumeri è numprint. Tra le funzioni di tale pacchettosi ricordano l’inserimento di un separatore ogni trecifre per le migliaia e l’approssimazione automatica.Ad esempio\ numprint {2.742647826672E -01}

produce2, 743 · 10−01

6.4.3 Unità di misuraPer evitare di formattare a mano le unità di misuraè consigliabile l’utilizzo del pacchetto SIunits. Adesempio\ unita {32 ,1}{\ micro \ metre }

produce32, 1 µmSi ricordi che se si utilizza l’opzione italian dibabel, è necessario usare l’opzione italian anchesu SIunits; se si usa il pacchetto amssymb, è neces-sario usare l’opzione squaren su SIunits perché ilcomando square viene già definito dal precedente.

6.4.4 Altri pacchettiPer evidenziare gli ambienti matematici può essereutilizzato il pacchetto empheq. Per la personalizza-

40

Page 43: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

Figura 8: Esempio di epigrafe.

zione degli ambienti “tipo teorema” è necessarioil pacchetto theorem. Il pacchetto xfrac permetteinvece di scrivere correttamente le frazioni nel testoe nel testo matematico (ad esempio: 5⁄7).6.4.5 Sistema di equazioniTalvolta si ha la necessità di raggruppare un siste-ma di equazioni con una parentesi graffa. A questoscopo è possibile definire un nuovo ambiente\ newenvironment { sistema }

{\ left \ lbrace \ begin { array }{@{} l@ {}}}{\ end{ array }\ right .}

Ad esempio il seguente codice\[\ begin { sistema }x_1=\ sigma _b^2 -\ sigma _a\\x_2=\ sigma _a^2 -\ sigma _b\end{ sistema }\]

produce {x1 = σ2

b − σax2 = σ2

a − σb6.5 Gli acronimiLa gestione degli acronimi può essere efficacemen-te gestita con il pacchetto acronym; tra le altrecose, tale pacchetto genera automaticamente i rife-rimenti ipertestuali tra acronimi nel testo e la lorodefinizione all’interno dell’elenco degli acronimi.Un esempio di elenco degli acronimi è riportato infig. 10 nella pagina 43.6.6 Codici ed algoritmiL’inserimento di codici all’interno della tesi è facil-mente realizzabile con il pacchetto verbatim; peravere un controllo più vasto della formattazionedel codice è possibile utilizzare il pacchetto listingsche riconosce numerosi linguaggi di programmazio-ne. In alternativa può essere utilizzato il pacchettofancyvrb, che è però meno flessibile.

Per la formattazione di algoritmi sono invececonsigliabili i pacchetti algorithm e algpseudocode:il primo genera degli oggetti flottanti mentre ilsecondo no.

6.7 Riferimenti incrociatiIn molti casi è comodo usare contemporaneamentei comandi \ref e \pageref per riferisi a figure etabelle, specialmente quando ci sono più paginetra il riferimento e l’oggetto. Per questo, alcuniutenti utilizzano comandi come\ newcommand {\ fullref }[1]{ %

\ref {#1} a pagina ~\ pageref {#1}}

che semplifica la scrittura del riferimento. Tuttavia,non sapendo a priori dove sia posizionato l’oggettoa cui ci si riferisce, utilizzando un comando delgenere può capitare che il \pageref punti alla pa-gina stessa dove si trova il riferimento producendoun risultato insoddisfacente.Per rendere automatica la scrittura dei riferi-

menti completi è possibile utilizzare il pacchettovarioref che introduce il comando \vref da usarsinello stesso modo del comune \ref. Tale pacchettofunziona in parallelo a babel e quindi si adatta allalingua utilizzata nel testo. Ad esempiosi veda la fig .~\ vref{f5}

produce, a seconda di dove viene posizionata lafigura, qualcosa del tiposi veda la fig. 3.1 nella pagina successivaoppuresi veda la fig. 3.1 a pagina 24Per quanto riguarda invece il riferimento ad

equazioni, è consigliabile utilizzare il coman-do \eqref{...} al posto di (\ref{...}). Adesempio

41

Page 44: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

(a) con opzione bottom

(b) senza opzione bottom

Figura 9: Posizione delle note.

42

Page 45: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

Figura 10: Esempio di elenco degli acronimi.

grazie all ’eq .~\ eqref {e2}

produce qualcosa del tipograzie all’eq. (3.6)

6.8 Revisione del codiceIn fase di revisione del codice è molto utile, oltread un’attenta lettura del file di .log, l’utilizzo deipacchetti refcheck e showkeys che controllano l’uti-lizzo dei \label e dei \ref. In aggiunta a questi èanche conveniente abilitare l’opzione draft per ladocumentclass: in questo modo i punti in cui iltesto sborda dai margini verranno evidenziati condelle barre nere.

7 Siti utiliIn aggiunta alle guide ed ai manuali citati nellabibliografia (vedi pag. 43 e seguenti), sono disponi-bili sul Web una serie di risorse utili per risolvere iproblemi incontrati durante l’utilizzo di LATEX2ε.Riferimento primario per la comunità italiana

di utenti LATEX è il sito del Gruppo UtilizzatoriItaliani di TEX (guIt)41 che ospita anche un forumsull’argomento.42

Google, accanto al motore di ricerca tradiziona-le,43 ne mette a disposizione anche uno dedicatoal LATEX44. Certamente utili sono il newsgroupUsenet inglese comp.text.tex45 e quello italianoit.comp.software.tex.46

Altro link di interesse è costituito da the Com-prehensive TeX Archive Network (CTAN)47 che

41. http://www.guit.sssup.it/42. http://www.guit.sssup.it/forum/43. http://www.google.com/44. http://directory.google.com/Top/Computers/

Software/Typesetting/TeX/LaTeX/45. http://groups.google.com/group/comp.text.tex46. http : / / groups . google . it / group / it . comp .

software.tex47. http://www.ctan.org/

ospita gran parte del materiale su LATEX disponi-bile in rete ed è dotato di un motore di ricerca.Sarovar48 è un catalogo molto completo di pacchet-ti e programmi legati a TEX e LATEX. Permettesvariati tipi di ricerca, in particolare è estremamen-te utile la lista “topical” quando non si conosceil nome di un pacchetto ma solo “quello che devefare”.Molte università ed istituti di ricerca ospitano

delle guide all’uso di LATEX che generalmente sonopensate per neofiti. Si ricordano quella dell’Uni-versità di Cambridge,49 quella dell’Università diNottingham (principalmente sul setup del siste-ma)50 quella dell’Università di Helsinki,51 quelladella Emory University,52 ed infine quelle dell’I-stituto Nazionale di Fisica Nucleare (INFN).53 Sisegnala inoltre che David R. Wilkins ha reso dispo-nibile in formato html il suo libro Getting Startedwith LATEX.54

Riferimenti bibliografici5966, U. I. (1989). Documentazione – Presenta-zione dei rapporti scientifici e tecnici.

American Mathematical Society (1995).AMS-LATEX User’s Guide. www.dd.chalmers.se/latex/Docs/PDF/amsldoc.pdf.

48. http://texcatalogue.sarovar.org/49. http : / / www-h . eng . cam . ac . uk / help / tpl /

textprocessing/50. http://www.cs.nott.ac.uk/TSG/manuals/latex/

intro/51. http : / / www . physics . helsinki . fi / ~tfo _ www /

instr/latex-guide.html52. http://www.emerson.emory.edu/services/latex/

latex2e/latex2e_toc.html53. http://www.fi.infn.it/pub/tex/doc/html/latex.

html e http://www.pi.infn.it/latex-intro/LaTeX.html54. http : / / www . maths . tcd . ie / ~dwilkins /

LaTeXPrimer/

43

Page 46: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 Scrivere la tesi di laurea con LATEX2ε

Baudoin, M. (1998). Impara LATEX (...e met-tilo da parte). http://www.mat.uniroma1.it/centro-calcolo/manuali/impara_latex.pdf.

Beccari, C. (1991). LATEX, Guida a un sistemadi editoria elettronica. Hoepli.

Carusillo, L. (2005). Le tabelle in LATEX. http:/ / www . webalice . it / lgcrsll / pgl / latex /Tabelle.pdf.tar.gz.

Caucci, L. e Spadaccini, M. (2005). Gestione diFigure e Tabelle con LATEX. http://www.guit.sssup.it/downloads/fig_tut.pdf.

Cevolani, G. (2006). «Norme tipografiche perl’italiano in LATEX». ArsTEXnica, (1), pp. 29–42.

Daly, P. (1998). Graphics and Colour with LATEX.http://tex.loria.fr/graph-pack/grf/grf.pdf.

Diller, A. (1999). LATEX Line by Line: Tipsand Techniques for Document Processing. JohnWiley & Sons.

Eco, U. (1977). Come si fa una tesi di laurea.Bompiani, Milano.

Fairbairns, R. (2005). The UK TEX FAQ.http://www.ctan.org/tex-archive/help/uk-tex-faq/letterfaq.tex.

Fear, S. (2005). Publication quality tables inLATEX. http://www.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf.

Flynn, P. (2005). A beginner’s introduction totypesetting with LATEX. http://www.tug.org/tex-archive/info/beginlatex/.

Gini, R. (2004). Generazione automatica di tabellecon LATEX e Stata. http://www.guit.sssup.it/downloads/dispensa_gini.pdf.

Goossens, M., Mittelbach, F. e Samarin, A.(1995). The LATEX Companion. Addison-Wesley.

Goossens, M., Rahtz, S. e Mittelbach, F.(1997). The LATEX Graphics Companion: Illu-strating Documents with TEX and PostScript.Addison-Wesley.

Grätzer, G. (1999). First Steps in LATEX.Springer Verlag.

— (2000). Math into LATEX. Birkhauser.

Gregorio, E. (2006). LATEX: Breve guida ai pac-chetti di uso più comune. profs.sci.univr.it/~gregorio/breveguida.pdf.

Hahn, J. (1993). LATEX for Everyone: A ReferenceGuide and Tutorial for Typesetting DocumentsUsing a Computer. Prentice Hall.

Higham, D. e Griffiths, D. (1997). Lear-ning LATEX. Society for Industrial and AppliedMathematics.

Knuth, D. (1992). The TEXbook. Addison-Wesley.

Kopka, H. e Daly, P. (1995). A Guide toLATEX – Document Preparation for Beginnersand Advanced Users. Addison-Wesley.

Lamport, L. (1994). LATEX: A Document Pre-paration System, User’s Guide and ReferenceManual. Addison-Wesley.

Lehman, P. (2004). The Font Installation Gui-de. http://www.ctan.org/tex-archive/info / Type1fonts / fontinstallationguide /fontinstallationguide.pdf.

Lesina, R. (1994). Il nuovo manuale di stile. Guidaalla redazione di documenti, relazioni, articoli,manuali, tesi di laurea. Zanichelli, Bologna.

Matricciani, E. (2000). La tesi scientifica.Paravia, Torino.

— (2003). Fondamenti di comunicazione tecnico-scientifica. Apogeo, Milano.

Mori, L. F. (2006). «Tabelle su LATEX2ε: pacchet-ti e metodi da utilizzare». ArsTEXnica, (2), pp.31–47.

Oetiker, T., Partl, H., Hyna, I. e Schle-gl, E. (2000). Una (mica tanto) breve in-troduzione a LATEX2ε. http://www.ctan.org / tex-archive / info / lshort / italian /itlshort.pdf.

Pakin, S. (2003). The Comprehensive LATEX Sym-bol List. http://www.ctan.org/tex-archive/info/symbols/comprehensive/symbols-a4.pdf.

Pratesi, M., Latini, M. e Antonecchia,M. (2003). LATEX–PDF–Howto. http ://www.telug.it/marco/LaTeX-PDF-HOWTO/LaTeX-PDF-HOWTO-1.1.1.pdf.

Reckdahl, K. (1997). Using Imported Gra-phics in LATEX2ε. http://www.ctan.org/tex-archive/info/epslatex.pdf.

Talbot, N. (2004). Creating a PDF documentusing PDFLATEX. http://theoval.cmp.uea.ac.uk/~nlct/latex/pdfdoc/pdfdoc-a4.pdf.

The Tutorial Team (2000). On-line Tutorialon LATEX. Indian TEX Users Group. http://www.tug.org.in/tutorials.html.

44

Page 47: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Scrivere la tesi di laurea con LATEX2ε ArsTEXnica Nº 3, Aprile 2007

Trettin, M. (2005). Elenco dei “peccati” de-gli utenti di LATEX2ε. http://www.tug.org / tex-archive / info / l2tabu / italian /l2tabuit.pdf.

Voß, H. (2003a). Mathmode. www.ctan.org/tex-archive / info / math / voss / mathmode /Mathmode.pdf.

— (2003b). Rotating Text, Tabulars and Images.http://perce.de/LaTeX/rotating.pdf.

. Lapo Filippo MoriDepartment of Mechanical Enginee-ringNorthwestern UniversityEvanston IL [email protected]

45

Page 48: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

La tipografia nel taschinoPresentazione del sistema OPS4guIt

Salvatore Schirone

SommarioOPS4guIt è un sistema LATEX portatile per PenDri-ve USB utilizzabile sul sistema operativo Windows(9x, ME, XP) e ottenibile gratuitamente e in for-mato aperto dalla rete. OPS4guIt permette di averesempre a portata di mano un sistema LATEX com-pleto e funzionante, e quindi di ricompilare i nostrisorgenti su qualsiasi macchina, anche se sprovvistadi un’installazione LATEX. In questo articolo pre-sento per la prima volta OPS4guIt, descrivendonela struttura, l’installazione e la personalizzazione.

AbstractOPS4guIt is an opensource portable USB LATEX sys-tem for Windows (9x, ME, XP), freely availablefrom internet. OPS4guIt provides a fully workingLATEX system always at hand, so that one can com-pile its own source .tex files on every computer.In the present article I will introduce OPS4guIt forthe first time, and I will describe its structure andhow to install and customize it.

1 Presentazione di OPS4guIt

Chi usa il sistema LATEX per scrivere i propridocumenti conosce bene alcuni problemi che sipresentano nell’uso intensivo di questo programma:

• l’installazione di un sistema LATEX completoè relativamente complessa e occupa qualchecentinaio di megabyte sul disco del calcolatore;

• anche per questo motivo, macchine diversehanno spesso installazioni diverse, o ne sonocompletamente sprovviste, di conseguenza, ri-sulta a volte impossibile ricompilare e gestire ipropri documenti su architetture diverse dallapropria;

• il sistema TEXLive, un sistema LATEX com-pleto multipiattaforma utilizzabile da cdromè scomodo perché il supporto non riscrivibi-le ci costringe all’uso di un altro supporto(floppy, PenDrive USB ecc.) per i sorgentie gli eventuali pacchetti aggiuntivi utilizza-ti, inoltre tale sistema non è aggiornabile senon a condizione di rimasterizzare una nuovaversione (su un nuovo CD vergine).

Manca quindi, allo stato attuale, una versionedi LATEX realmente e comodamente portatile, chepermetta di avere a portata di mano sia i propri

documenti sia un sistema LATEX funzionante anchesu macchine differenti. OPS4guIt nasce esattamenteper rispondere a questa esigenza.La soluzione più comoda e semplice è quella di

poter avere tutto ciò che ci occorre racchiuso al-l’interno di una pen-drive USB: il sistema LATEXgià configurato, diversi suoi strumenti (tra cui vi-sualizzatori, editor, ecc. . . ) e i nostri documentida compilare, con la possibilità di aggiornare la di-stribuzione, proprio grazie al fatto che il supportoUSB è scrivibile.1

L’installazione di un sistema LATEX su PenDriveUSB potrebbe sembrare semplice e scontata da rea-lizzare, tuttavia richiede un’analisi molto attenta inmerito al software da installare sul supporto USB,così da confezionare una versione completamenteportatile dell’intero sistema LATEX. Il suo sviluppoè stato difficile, soprattutto per via della strutturatanto complessa del software in questione, poichérisulta strettamente legato alla macchina su cuideve funzionare.

Il caso che, a mio avviso, si verifica più di frequen-te è quello di trovarsi occasionalmente a lavoraresu di una macchina con sistema operativo Windo-ws, dunque naturalmente priva di una qualunquedistribuzione LATEX. A questo proposito mi sonodedicato alla realizzazione di una distribuzione por-tatile funzionante (per ora) solo su tale sistemaoperativo.L’esperienza che ho maturato nell’ambito della

preparazione di sistemi per programmi portatili inquesti ultimi due anni, mi ha portato alla realizza-zione di oPenSuite, ovvero di una versione specificadella mia suite per LATEX.L’occasione mi si è presentata dopo aver sco-

perto l’esistenza di un how-to scritto da Alexan-der Grahn (Grahn, 2006), poi tradotto per guItda Stefano Caglio. Grahn spiegava come “porta-bilizzare” LATEX, rendendo disponibile un set discript batch per la configurazione della distribuzio-ne MiKTEX. Mi sono subito messo all’opera e ilrisultato è OPS4guIt

2:

1. Abbiamo bisogno di una PenDrive di almeno 512 MB,cosa che oggigiorno non è certo un problema, vista l’ampiadiffusione e il costo contenuto di PenDrive con capacitàpari o superiori ad 1GB.2. La suite è prelevabile dal mio sito personale: http:

//www.schirone.it e il logo della suite è stato realizzatoda Massimo Caschili.

46

Page 49: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

La tipografia nel taschino ArsTEXnica Nº 3, Aprile 2007

OPS4guIt2 La storia di OPS4guIt

È opportuno fare un breve excursus che inquadrii termini della questione, chiarendo innanzituttocosa si intende per “programma portatile”, e cosasono le PenSuite e nella fattispecie, oPenSuite (chiè interessato solamente all’utilizzo di OPS4guIt, puòpassare direttamente alla sezione successiva).

2.1 Come creare programmi portatiliI programmi per Windows sono quasi sempre distri-buiti in forma di pacchetti autoinstallanti (ovverodistribuiti sotto forma di un unico file, spesso chia-mato Setup.exe). Questo significa che durante lasua installazione, e spesso in modo poco trasparen-te per l’utente, il pacchetto provvede a copiare unaserie di file in cartelle diverse del nostro filesysteme a scrivere o modificare chiavi nel file registro diconfigurazione di Windows. Un programma porta-tile, invece, di solito viene distribuito o in formad’archivio tipo zip, oppure in forma d’archivio au-toestraente (con estensione .exe). L’estrazione deifiles dall’archivio fa sì che tutti i files necessari alprogramma (eseguibili, librerie dll, file di configu-razione, risorse varie, ecc. . . ) vengano salvati all’in-terno di una cartella. L’esecuzione del programmaavviene lanciando l’eseguibile principale, che di soli-to porta il nome del programma, 〈programma〉.exe.Un programma con queste caratteristiche è por-tatile e può essere avviato direttamente da unaPenDrive USB.

I programmi opensource, di solito, vengono rila-sciati contemporaneamente sia sotto forma d’archi-vio, che sotto forma di pacchetto autoinstallante.Tuttavia, quando disponiamo solo del pacchettod’installazione di un programma, renderlo portatilenon è un’operazione semplice; poi, se non si dispo-ne dei file sorgenti,3 tale operazione si può rivelareaddirittura impossibile. Utilizzando particolari soft-ware, in grado di estrarre i file del programma dalfile .exe del pacchetto d’installazione, si possonofare dei tentativi. Un software di questo genere,attualmente tra i più efficaci, è Universal Extrac-tor. Il programma permette di saltare l’operazioned’installazione sul PC del pacchetto software chevogliamo rendere portatile, e ne estrae tutti i filecome se l’autoinstallante fosse un normale archiviocompresso.

Il procedimento illustrato finora non basta a ren-dere portatile un pacchetto software, poiché biso-gna capire se il programma, in fase d’installazione,scrive o modifica una qualche chiave nel registrodi configurazione di Windows. Per scoprirlo si pos-sono usare alcuni programmi di monitoraggio, tra

3. Sono i file racchiusi al’interno del pacchettoautoinstallante.

i quali spicca RegMon.4 Contemporaneamente, ov-vero sempre durante la sua fase d’installazione, ènecessario scoprire se il programma salva dei da-ti in cartelle particolari del filesystem, come adesempio in:

C:\Documents and Settings\[user]\Dati applicazioni

e a tal fine ci vengono in aiuto altri programmi dimonitoraggio, come ad esempio FileMon5.Esistono alcuni piccoli eseguibili detti launcher

che sono in grado grado di salvare nella stessa car-tella del programma le rispettive chiavi di registroe i dati dell’utente. Uno tra questi è Reg Rapper.6Attualmente, il progetto più completo e avan-

zato di launcher è in grado di far funzionare unprogramma e di salvare nella relativa cartella idati e le sue chiavi di registro, così da rendere ilprogramma stesso portatile al 100%. Si tratta diX-Launcher, presente su WinPenPack.com. Que-sto launcher è ormai in grado di “portabilizzare”una gran quantità di programmi; il suo utilizzo èreso difficile dalla sintassi particolare che occorreconoscere per impostarlo adeguatamente, dunque,prima di ogni altra cosa, bisogna analizzare beneil programma che si desidera rendere portatile.7

2.2 Nasce oPenSuite

Il fatto di poter disporre di svariati programmi por-tatili non è sufficiente da sé a realizzare una buonadistribuzione portatile, poiché occorre anche unqualche sistema di supporto che consenta di gestirein modo pratico e comodo tali programmi: lanciarlidirettamente dalla PenDrive, configurarli in basealle nostre esigenze, aggiornarli all’ultima versio-ne disponibile, ecc. . . Queste operazioni vengonogestite da un cosiddetto software launcher. La ge-stione di tale programma e la composizione di unacollezione di programmi portatili, che può esseread esempio base o plus, è quello che noi chiamiamoPenSuite. Attualmente esistono diversi progetti at-tivi (italiani e non) che offrono gratuitamente unasuite di programmi portatili per PenDrive8. A mioavviso, il miglior progetto italiano e supportato daun’ampia comunità di utenti e sviluppatori, è ilgià citato WinPenPack.com.9

4. http://www.microsoft.com/technet/sysinternals/utilities/regmon.mspx5. http://www.microsoft.com/technet/sysinternals/

FileAndDisk/Filemon.mspx6. http://www.portasoft.org/e107/page.php?4.7. Per questo paragrafo mi sono servito ampiamente

delle ricerche fatte da Andrea Luparia: http://www.lupo73.altervista.org.8. Tra i più rilevanti segnaliamo: WinInizio PenSui-

te (http : / / pensuite . wininizio . it / ita / index . php),MozUp (http://www.mozillaitalia.it/mozup/), Porta-bleApps.com (http://portableapps.com/); per una re-censione cfr. (http://www.lupo73.altervista.org/pro.htm).9. http://www.winpenpack.com.

47

Page 50: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 La tipografia nel taschino

La quasi totalità delle suite esistenti si basano sulauncher proprietari, gratuiti, ma non opensource,quindi difficilmente personalizzabili e ricompila-bili dagli utenti. Solo recentemente l’autore dellauncher di WinPenPack ne ha reso disponibileil sorgente, ma la sua ricompilazione è risultataalquanto problematica e la documentazione moltoscarsa.10 Nella ricerca di un progetto totalmenteopensource mi sono imbattuto in FramaKey,11 unprogetto francese che sta portando avanti l’idea diuna suite composta rigorosamente da programmiopensource ed è proprio a questo eccellente pro-getto che mi sono ispirato nella realizzazione dellamia suite. In un primo momento ho contribuito di-rettamente alla sua localizzazione italiana, poi misono distaccato con un mio fork, cioè una versionemodificata, perché, malgrado girasse intorno unaattiva comunità, lo sviluppo dei programmi era edè molto indietro rispetto ad altri progetti ancheitaliani; inoltre la comunità è risultata prevalen-temente francese e non ho trovato il conforto dialtri collaboratori italiani. In questo ultimo anno,oPenSuite si è evoluto modificando molti aspettidella FramaKey, divenendo di fatto un progettocompletamente indipendente. La versione attuale,ancora in fase beta, è la 0.6.

Frequentando diversi forum sui siti di supportoalle varie suite, ho conosciuto Andrea Luparia,che ha sviluppato una sua suite in concomitanzacon il mio progetto. Attualmente mi avvalgo dellasua collaborazione nella portabilizzazione dei variprogrammi, e si sta valutando insieme l’ipotesi digiungere ad una fusione dei nostri due progetti.12

Il nome “oPenSuite” contiene in se stesso la de-finizione e la finalità del progetto: una suite di pro-grammi portatili per supporti rimovibili, PenDrive,completamente opensource13 e particolarmente per-sonalizzabile ed estendibile dall’utente. L’obiettivodi oPenSuite è di dare agli utenti la massima liber-tà di personalizzazione e adattamento. Per questola suite viene rilasciata solo nella versione basecon tre programmi essenziali: il browser Firefox,l’editor Notepad++ e l’utilità di archiviazione 7zip.Gli eventuali programmi aggiuntivi possono essereprelevati da altre fonti, dal momento che il miocompito principale è quello di aggiornare la suite

10. Si tratta di un ottimo launcher, ASuite (http://www.salvadorsoftware.com/)11. http://www.framakey.org.12. L’accordo è ancora in fase di discussione poiché vi

sono alcune diversità d’opinione in merito ai software dadistribuire: per me la suite dovrebbe essere completamenteopensource, mentre Andrea Luparia, pur adottando unlauncher opensource, preferisce inserire anche programmicon licenze proprietarie freeware.13. I programmi OpenSource, comunemente chiamati

anche FreeSoftware, con una accentuazione più filosofica chetecnica, non sono da confondersi con i programmi freeware.Questi ultimi, benché siano rilasciati gratuitamente perl’utilizzo privato, non possono essere modificati (non sidispone del codice sorgente), e possono essere ridistribuitisolo a particolari e restrittive condizioni poste dall’autore.

e di sviluppare/localizzare particolari programmitra cui, appunto, MiKTEX.oPenSuite, nei suoi contenuti testuali e multime-

diali, viene rilasciata sotto licenza Creative Com-mons, “Attribuzione – Condividi allo stesso modo2.5 Italia”, mentre i programmi da cui dipendemantengono le loro licenze originali e sono elencatiqui di seguito:

AeTrayMenu14 Una piccola ma potente appli-cazione che permette di inserire nella traybardi Windows un menù flessibile e configurabi-le, dal quale è possibile lanciare le applica-zioni portatili. Viene rilasciata sotto licenzaCreative Commons Public Domain;

SplashStart15 Programma di avvio della suitecon un semplice splash screen. Utilizza un file.ini per la configurazione ed è distribuitosotto licenza GPL;

TiddlyWiki16 Un Wiki contenuto in una unicapagina. Distribuito sotto licenza BSD;

NSIS17 Programma utilizzato per la compilazionedell’installer della suite e distribuito sotto laCommon Public License.

È proprio grazie alla disponibilità dei sorgenti eall’ampia libertà garantita da queste licenze che èstato possibile realizzare OPS4guIt.

2.3 Il MiKTEX portatileLa versione portatile di MiKTEX, ops-MiKTEX èbasata sugli script batch18 messi a disposizione daGrahan. Tali script19 permettono sostanzialmentedi:

• inizializzare MiKTeX, Ghostscript e GSviewsul dispositivo USB (init.bat);

• configurare ed aggiornare MikTEX (mo.bat empm.bat);

• ripristinare tutte le configurazioni del PCospitante (reset.bat).

Per rendere portatile MiKTEX è stato neces-sario installare su di un PC la sua distribuzionepiù aggiornata (prelevabile dal sito ufficiale delprogetto20) in versione “leggera”, accompagnatodai programmi accessori Ghostscript e GSview. Ilprocedimento completo è illustrato qui di seguito.

Una volta creata la cartella ops-miktex, si crea-no al suo interno due nuove sotto-cartelle: texmf

14. http://www.xs4all.nl/~broekroo/aetraymenu.15. http : / / cdbrowserkit . sourceforge . net /

SplashStart/SplashStart.html16. http://www.tiddlywiki.com, nella traduzione di

Maurizio Pollio, http://pollio.maurizio.googlepages.com/MiniGuidaTiddlyWiki.html.17. http://nsis.sourceforge.net.18. Uno script batch è un vero e proprio programma

costituito da linee di comando passate all’interprete shelldi DOS (= script), in una determinata sequenza (= batch).19. Per approfondimenti visitare la pagina: http://www.

guit.sssup.it/installazione/drive.php.20. http://www.miktex.org.

48

Page 51: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

La tipografia nel taschino ArsTEXnica Nº 3, Aprile 2007

e localtexmf. texmf è la cartella dove andremoa copiare tutto ciò che è contenuto nella cartellaprincipale della nostra distribuzione MiKTEX, chepotrebbe essere, ad esempio

C:\Program Files\MiKTeX 2.5

La cartella localtexmf servirà a contenere ul-teriori pacchetti aggiuntivi, creati da terze par-ti, come ad esempio arstexnica di guIt, che houtilizzato per comporre questo articolo. Tuttii file batch devono essere nuovamente copia-ti nella root della cartella ops-miktex, assie-me all’utility propria di Windows reg.exe (ver-sione 3.0), reperibile nella cartella di sistemac:\WINDOWS\system32. A ciò occorre aggiungerele cartelle relative alle installazioni di Ghostscripte GSview: gs e Ghostgum. Una impostazionefondamentale riguarda lo script versions.bat,che deve contenere le esatte versioni dei pro-grammi MiKTEX, Ghostscript e GSview, nelle ri-spettive variabili: MiKTEX_VERSION, GS_VERSION eGSVIEW_VERSION.Per agevolare l’esecuzione dei tre script fonda-

mentali, è stata approntata una interfaccia grafica,con wxbasic21, un compilatore basic che sfrutta lelibrerie wx. L’idea è stata presa da un articolo diJerónimo Leal (Leal, 2006). Sono bastate pochelinee di codice per ottenere un discreto pannellodi controllo (cfr. Figura 2). Il sorgente e il compi-latore sono inseriti nella cartella src della suite, adisposizione di chi lo volesse modificare e ricompila-re, così da espanderne le funzioni o semplicementemigliorare l’aspetto grafico.

Infine, per rendere il tutto più funzionale e pra-tico, è stato inserito nella suite l’editor Texma-ker, anch’esso avviabile dal Pannello di Control-lo. Grazie alla sua semplicità e leggerezza nonha richiesto nessun intervento di portabilizzazione.L’ultima fase del lavoro ha riguardato la compres-sione e l’archiviazione della cartella del progetto,ops-miktex.

3 Usare OPS4guIt

3.1 Installazione e usoÈ molto semplice installare e utilizzare OPS4guIt e,come prima cosa, occorre prelevare il pacchettoops4guitInstaller_base-0.1.0.0-it.exe dalsito dell’autore. L’operazione potrebbe richiede-re alcuni minuti, a seconda del tipo di connessioneche si sta utilizzando, poiché si tratta di un archiviodi ben 84.69MB. Il “doppio click” sull’eseguibileavvia la procedura d’installazione e si viene subitoinformati del fatto che il pacchetto è distribuitonei termini della licenza Creative Commons e cheper poter proseguire, occorre accettare tali ter-mini. Successivamente viene chiesto di indicare ilsupporto USB sul quale si desidera installare la

21. http://wxbasic.sourceforge.net/

Figura 1: Menu tasto sinistro

suite (è possibile installarla anche in una cartel-la del nostro disco locale). Lo script dell’installerNSIS completerà la procedura d’installazione e,giunto al termine, ci chiederà se vorremo avviarel’applicazione.Successivamente, grazie ad un sistema di auto-

run, ogni qualvolta inseriremo la pen-drive nellaporta usb del computer ci apparirà uno splashscreen che ci pregherà di attendere qualche se-condo. Trascorso questo tempo, nella traybar delDesktop di Windows troveremo l’icona OPS4guIt,dalla quale potremo lanciare le varie applicazionied applicare alla suite le nostre personalizzazioni.

Con il tasto sinistro del mouse, potremo accedereal menu contestuale principale (cfr. Figura 1), checonsente di avviare le varie applicazioni, esplorarela cartella dei documenti portatili o accedere ancheai documenti presenti sul computer ospitante.Le due voci del del menù Informazioni consen-

tono di consultare rispettivamente il manuale ge-nerale di oPenSuite e quello specifico di OPS4guIt,all’interno del browser predefinito (X-Firefox). En-trambi i manuali possono essere contestualmentemodificati e aggiornati grazie a Tiddlywiki. Sele-

Figura 2: Pannello di controllo OPS4guIt

49

Page 52: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnica Nº 3, Aprile 2007 La tipografia nel taschino

Figura 3: Texmaker

zionando Esci, termina l’esecuzione di OPS4guIt. Inaggiunta, dallo stesso menù potremo disporre ditutti gli strumenti messi a disposizione dalla suitee avviare tutti gli eventuali programmi che avremoinstallato durante la nostra fase di personalizzazio-ne. In particolare, potremo consultare rapidamentealcuni tutorial e manuali distribuiti dal guIt.La sezione LaTeX conduce alla configurazione

vera e propria della nostra distribuzione TEX por-tatile e, selezionando la voce MiKTeX, ne appare ilpannello di configurazione (cfr. Figura n. 2). Il pul-sante Start avvia, all’interno di una finestra DOS,lo script di configurazione generale di MiKTEX. Altermine dell’operazione, se il processo avrà avutosuccesso, avremo a disposizione il nostro sistemaMiKTEX pronto per l’uso. Attraverso il pulsan-te Opzioni potremo effettuare diverse operazionidi configurazione, oppure installare altre estensio-ni per MiKTEX (packages). Il pulsante Texmakeravvierà l’omonimo editor (cfr. Figura n. 3), chepotrà essere configurato ulteriormente attraversole sue impostazioni di configurazione. Texmakerpuò anche essere avviato dal menù principale dellasuite. Quando avremo terminato il lavoro, dovre-mo ricordarci di arrestare il sistema tipograficopremendo il pulsante Stop. Ciò avvierà lo scriptreset.bat che riporterà tutte le impostazioni delregistro di sistema allo stato iniziale, così da nonlasciare alcuna traccia fastidiosa dei programmiappena utilizzati sul computer ospitante e senzacompromettere le impostazioni di una eventualedistribuzione MiKTEX preesistente nel sistema.

3.2 Personalizzazioneun click Con il tasto destro del mouse (cfr. Figuran. 4) si accede ad un altro menu dal quale pos-siamo gestire tutti i parametri di configurazionedella suite, accedere al prompt di DOS e ad altreinformazioni supplementari.Selezionando la voce Edita menu, si avvia

l’editor Notepad++ con il file

Framakey/FramaLauncher/FramaLauncher.ini

Figura 4: Menu tasto destro

precaricato al suo interno. Agendo su questo file sipossono aggiungere e/o modificare le voci di menù(cfr. Figura n. 5). La sintassi da seguire è abba-stanza intuitiva e le varie sezioni sono ampiamentecommentate, dunque è sufficiente dare uno sguardoagli esempi già pronti per poi tentare di scrivere leproprie voci. Per fare un esempio, se si desiderasseutilizzare anche l’editor Vim, per scrivere i proprisorgenti LATEX, e lo si volesse far ‘convivere’ conTexmaker, dovremmo, prima di tutto, prelevarel’archivio dell’applicazione GVim Portable dall’in-dirizzo http://portablegvim.sourceforge.nete poi estrarne i file, ponendoli nella cartella Appsdella nostra suite. Successivamente ci accertere-mo dell’esatto percorso in cui si venisse a trovarel’eseguibile principale dell’applicazione,

Apps/GVimPortable/GVimPortable.exe

indi creeremo la relativa voce del menù comespiegato nei passi seguenti.

1. Avvieremo l’editor di configurazione e con iltasto destro del mouse selezioneremo la voceEdita menu.

2. Ci sposteremo alla sezione [Menu.Left] e, incoda alla parte di codice il cui commento si ri-ferisce alla sottosezione LaTeX, aggiungeremoil seguente blocco di codice:

Type: item; Caption: "GVimPortable";

Figura 5: Configurazione del menu

50

Page 53: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

La tipografia nel taschino ArsTEXnica Nº 3, Aprile 2007

Action: run;FileName: "%Apps%\GVimPortable\GVimPortable.exe";Glyph: 26

La sintassi è particolarmente intuitiva, infattisi può notare esser composta da una serie dicoppie del tipo <elemento>: <valore>;22:Type:item annuncia che ci si appresta ad

aggiungere o modificare una voce dimenù;

Caption:<nome> specifica il nome della voceche apparirà scritto nel menù;

Action:run si riferisce all’azione da eseguire,in questo caso si tratta di avviare (run)una applicazione;

FileName:<eseguibile> specifica il percor-so e il nome dell’eseguibile associatoall’applicazione che si desidera avviare;

Glyph:<n> è il numero identificativo dell’ico-na associata al programma.

Per inserire l’icona di Vim nel suddetto menù,occorre agire sul fileFramakey\Fra...er\FramaLauncher.bmp

Bisogna aprirlo con un editor grafico e copiar-vi al suo interno l’icona prescelta in formatobmp (e su sfondo rosa) entro uno dei riquadriliberi di coda. La posizione della nuova iconasarà associata ad un numero che identificheràproprio il valore di Glyph.

3. Salveremo il file e chiuderemo l’editor.4. Per rendere efficaci le modifiche appena appor-

tate, aggiorneremo il sistema con un sempliceclick destro del mouse su Aggiorna menu.

5. Infine, nel caso in cui avessimo commessoun errore di sintassi, riceveremmo un avvi-so immediato e dovremmo riaprire l’editor percorreggerlo.

A questo punto, nel menù della suite, dovrem-mo trovare la nuova voce per poter avviare Vim.Se volessimo personalizzare questo editor, così dapoterlo utilizzare al meglio con LATEX, potremmoprelevare il plugin adatto da http://vim-latex.sourceforge.net/index.php e seguire le istruzio-ni per la sua installazione. In particolare, durante laprocedura d’installazione del plugin, ogni qualvoltavenga fatto riferimento alla cartella ~/vimfiles,per la nostra suite dovremo riferirci alla cartellaApps/GVimPortable/App/vim/vim70

Il menù a scomparsa, visualizzabile col tasto de-stro del mouse, contiene un elenco di collegamentiutili a siti internet, che possono essere ampliati omodificati a piacimento dall’utente. La voce Info22. Il punto e virgola, che segue ciascuna voce, è

necessario.

menu mostra una finestra con informazioni relati-ve ad AeTrayMenu, ovvero il launcher della tray-bar, mentre Aiuto menu ne fornisce l’help in linea.Prompt di Dos esegue il comando cmd.exe, chemette a disposizione dell’utente la console di MS-DOS. Esci ha la stessa funzione del suo omonimocomando, attivabile col tasto sinistro del mouse.

4 Sviluppo futuro e ringraziamentiLo sviluppo del core del sistema dipenderà essen-zialmente dall’evoluzione che avrà – e se l’avrà,oPenSuite. La todolist,23 comunque, è la seguente:

• implementare altri strumenti complementaria LATEX;

• inserire anche Emacs come editor alternativoa Texmaker ;

• aggiungere altri manuali del guIt;• sviluppare il manuale wiki della suite;• migliorare la grafica e il pannello di controllo.

Tutti gli utenti sono invitati a partecipare alprogetto così da sostenerne lo sviluppo futuro. Ciòpuò essere fatto in vari modi, ad esempio scrivendoall’autore per segnalare eventuali errori, chiederel’aggiunta di nuove funzioni, oppure aggiornandoil manuale LATEX attraverso TiddlyWiki. Più diret-tamente, è possibile partecipare al progetto anchetentando di personalizzare e sviluppare autonoma-mente la suite e mettendo a disposizione di tuttigli utenti il proprio lavoro, tramite il forum didiscussione raggiungibile dal sito dell’autore.

Si ringraziano in particolare:

• Massimo Caschili per il logo OPS4guIt;• Andrea Luparia per la fattiva colaborazione a

oPenSuite;• Stefano Caglio per la trduzione di Grahn;• gli amici del guIt per tutto il resto.

Riferimenti bibliograficiGrahn, A. (2006). «Miktex+ghostscript-+gsview+usb-drive-howto». http://www.ctan.org / tex-archive / documentation / MiKTeX +Ghostscript+GSview+USB-drive-HOWTO.txt.

Leal, J. (2006). «Esperienze didattiche conLATEX». ArsTEXnica, (2), pp. 71–74. URL http://www.guit.sssup.it/arstexnica.php.

. Salvatore Schironehttp;//[email protected]

23. In gergo informatico, dall’inglese, è l’elenco deicompiti di cui ci si deve ancora occupare.

51

Page 54: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

Questa rivista è stata stampatasu carta ecosostenibile Steinbeis Vision

prodotta dalla cartiera tedescaSteinbeis Temming Papier GmbH & Co.

Page 55: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

2007

G r u

p po

Uti

li

zzatoriItalia

ni

di

TEX ?

Igut

Quarto convegno nazionale su TEX, LATEXe tipografia digitale

Pisa, 13 ottobre 2007Aula Magna, Scuola Superiore Sant’Anna

Call for Paper

Sabato 13 ottobre 2007 presso l’Aula Magna della Scuola Superiore Sant’Anna di Pisa si terrà ilquarto Convegno annuale su TEX, LATEX e tipografia digitale organizzato dal Gruppo UtilizzatoriItaliani di TEX. Il Convegno sarà un momento di ritrovo e di confronto per la comunità LATEX italiana,tramite una serie di interventi atti sia a contribuire all’arricchimento sia a supportarne lo sviluppo.Maggiori informazioni sul Convegno e sulle modalità di presentazione degli interventi sono disponibiliall’indirizzo:

http://www.guit.sssup.it/guitmeeting/2007/

Page 56: Numero 3 Aprile 2007 - guit.sssup.it · tecnologie correlate. Di volta in volta verrà ssato, e reso pubblico ... edeivariSGML/XML,cosìcomelofuronoisuoi approcciperconvertirequesteetichettelogichein

ArsTEXnicaRivista italiana di TEX e LATEX

Numero 3, Aprile 2007

3 EditorialeMassimiliano Dominici

4 Intervista a Frank MittelbachFrank Mittelbach, Gianluca Pignalberi, Dave Walden

13 LATEX e la cesura delle parole in fin di rigaClaudio Beccari

21 LATEXpedia: il futuro della documentazione su LATEXLapo Filippo Mori

27 Scrivere la tesi di laurea con LATEX 2εLapo F. Mori

46 La tipografia nel taschinoSalvatore Schirone