Numero 13 Aprile 2012 ArsT Xnica RivistaE italiana di T X e LAT X E E

g It u http://www.guit.sssup.it/arstexnica Chiunque, poi, volesse collaborare con la rivi- sta a qualsiasi titolo (recensore, revisore di boz- nica ze, grafico, etc.) può contattare la redazione X all’indirizzo: TE [email protected]. A Nota sul Copyright guIt – Gruppo Utilizzatori Italiani di TEX Il presente documento e il suo contenuto è di- rs stribuito con licenza c Creative Commons 2.0 di ArsTEXnica è la pubblicazione ufficiale del guIt tipo “Non commerciale, non opere derivate”. È possibile, riprodurre, distribuire, comunicare al Comitato di Redazione pubblico, esporre al pubblico, rappresentare, ese- Gianluca Pignalberi – Direttore guire o recitare il presente documento alle seguenti Renato Battistin, Claudio Beccari condizioni: Marco Buccino, Riccardo Campana, b Massimo Caschili, Gustavo Cevolani Attribuzione: devi riconoscere il contributo Massimiliano Dominici, Andrea Fedeli dell’autore originario. Tommaso Gordini, Enrico Gregorio e Non commerciale: non puoi usare quest’ope- Carlo Marmo, Lapo Mori ra per scopi commerciali. Antonello Pilu, Ottavio Rizzo Gianpaolo Ruocco, Emmanuele Somma d Non opere derivate: non puoi alterare, Enrico Spinielli, Emiliano Vavassori trasformare o sviluppare quest’opera. Emanuele Vicentini, Raffaele Vitolo In occasione di ogni atto di riutilizzazione o distribuzione, devi chiarire agli altri i termini della ArsTEXnica è la prima rivista italiana dedicata a licenza di quest’opera; se ottieni il permesso dal TEX, a LATEX ed alla tipografia digitale. Lo scopo che la rivista si prefigge è quello di diventare uno titolare del diritto d’autore, è possibile rinunciare dei principali canali italiani di diffusione di infor- ad ognuna di queste condizioni. mazioni e conoscenze sul programma ideato quasi Per maggiori informazioni: trent’anni fa da . http://www.creativecommons.org Le uscite avranno, almeno inizialmente, caden- za semestrale e verranno pubblicate nei mesi di Aprile e Ottobre. In particolare, la seconda uscita Associarsi a guIt dell’anno conterrà gli Atti del Convegno Annuale Fornire il tuo contributo a quest’iniziativa come del guIt, che si tiene in quel periodo. membro, e non solo come semplice utente, è un La rivista è aperta al contributo di tutti coloro presupposto fondamentale per aiutare la diffusione che vogliano partecipare con un proprio artico- di TEX e LATEX anche nel nostro paese. L’adesione lo. Questo dovrà essere inviato alla redazione di al Gruppo prevede una quota di iscrizione annuale ArsTEXnica, per essere sottoposto alla valutazione diversificata: 30,00 e soci ordinari, 20,00 (12,00) di recensori. È necessario che gli autori utilizzino la e studenti (junior), 75,00 e Enti e Istituzioni. classe di documento ufficiale della rivista; l’autore troverà raccomandazioni e istruzioni più dettaglia- Indirizzi te all’interno del file di esempio (.). Tutto il Gruppo Utilizzatori Italiani di T X: materiale è reperibile all’indirizzo web della rivista. E c/o Ufficio Statistica Gli articoli potranno trattare di qualsiasi argo- Scuola Superiore Sant’Anna mento inerente al mondo di T X e LAT X e non E E Piazza Martiri della Libertà 33 dovranno necessariamente essere indirizzati ad un 56127 Pisa, Italia. pubblico esperto. In particolare tutorials, rassegne http://www.guit.sssup.it e analisi comparate di pacchetti di uso comune, [email protected] studi di applicazioni reali, saranno bene accetti, co- sì come articoli riguardanti l’interazione con altre Redazione ArsTEXnica: tecnologie correlate. http://www.guit.sssup.it/arstexnica/ Di volta in volta verrà fissato, e reso pubblico [email protected] sulla pagina web, un termine di scadenza per la presentazione degli articoli da pubblicare nel nu- Codice ISSN 1828-2369 mero in preparazione della rivista. Tuttavia gli articoli potranno essere inviati in qualsiasi momen- Stampata in Italia to e troveranno collocazione, eventualmente, nei Pisa: 15 Aprile 2012 numeri seguenti. ArsTEXnica Rivista italiana di TEX e LATEX Numero 13, Aprile 2012

Editoriale Gianluca Pignalberi ...... 3 Graphviz e TikZ Claudio Fiandrino ...... 4 Ancora sugli strumenti per grecisti classici Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal ...... 11 LATEX e le lingue romanze alpine Claudio Beccari ...... 17 Scrivere un pacchetto per LATEX3 Il pacchetto kantlipsum Enrico Gregorio ...... 24 e TEX TUG ...... 30

Gruppo Utilizzatori Italiani di TEX

Editoriale

Gianluca Pignalberi

Avete il primo numero del 2012 di ArsTEXnica Editrice Cafoscarina. Un rappresentante dell’edi- tra le mani. Lo avete ricevuto con ragionevole trice ha contattato il guIt per cercare un esperto puntualità. Contiene pochi articoli di notevole di TEX per convertire il formato originale del libro qualità. (TEX) nel più adeguato LATEX e produrre conte- Ripercorriamo tutti gli avvenimenti interni ed stualmente la nuova edizione (la settima italiana). esterni al guIt che ci hanno condotto a questo Il guIt è formato da ottimi elementi ed è in grado numero. di catalizzare la richiesta di esperti di TEX e delle Durante il guItmeeting2011 tutti hanno posto tecnologie derivate da parte del mondo editoriale. l’attenzione sulla necessità di lavorare al sito nuo- Spero solo che finalmente decolli la sezione Lavoro vo. È stato costituito un comitato web coordinato presente sul nuovo sito. da Roberto Giacomelli e questo ha lavorato be- Arriviamo ai contenuti della rivista che vi ac- ne, riempiendo in breve tempo il sito di contenuti. cingete a leggere. Abbiamo detto pochi articoli. . . Ancora in questi giorni (siamo alla fine di mar- vedrete. zo) Roberto e i suoi collaboratori stanno testando Apre il numero Claudio Fiandrino col suo Gra- altre funzionalità di Joomla! per aggiungere ca- phviz e TikZ. L’autore espone le tecniche per tra- ratteristiche necessarie al sito e all’associazione. sformare i grafi scritti nel linguaggio di Graphviz in Insomma, con calma ma metodicamente il guIt sta figure TikZ. Non c’è bisogno di dire che Graphviz effettuando la migrazione dei contenuti dal vecchio aumenta infinitamente la velocità di ottenimento sito, ormai pressoché dismesso, al nuovo. dei grafi essendo un programma dedicato con un All’inizio dell’anno, con la pubblicazione di suo linguaggio di descrizione. L’esportazione ver- Edizioni Critiche. Guida alla composizione con so il formato TikZ ne aumenta anche la qualità il proprio computer, ha visto la luce la collana tipografica. TEXnologie. L’editrice CompoMat di Silvia Ma- L’ormai affiatato trio Pignalberi, Schirone e Leal schio ha assunto l’onere di pubblicare una collana propone un’integrazione del precedente articolo di testi perlopiù inediti dedicati a TEX. Mi pa- dedicato ai grecisti classici. Sciolgono alcuni ar- re superfluo dire che tutto il libro è composto in gomenti dati per irrisolti proponendo le soluzioni LATEX, copertina compresa (tranne il codice a bar- presenti sul ctan relative proprio a quei problemi. re, ahimè). La copertina è riprodotta di seguito. Claudio Beccari contribuisce al numero con un

1 A “copertina” — 2012/2/1 — 11:10 — page 1 — #1 articolo sull’estensione di LTEX alle lingue roman- ze usate nelle regioni alpine. Tralasciando la com-

.La,G inleiEiin rtce–Giaal opszoecni rpi computer proprio il con composizione alla Guida – Critiche Edizioni Pignalberi G. Leal, J. pletezza e l’erudizione dell’articolo sul versante In questa collana: Jerónimo Leal, nato a Madrid nel 1961, è professore di Storia della Chiesa Antica e Patrologia presso lalinguistico Pontificia Università (una perla tutta da leggere), l’articolo 1. Edizioni Critiche Edizioni Critiche TEXnologie della Santa Croce e direttore del Guida alla composizione Dipartimento di Storiaè fruibiledella Chiesa. per la moltitudine di contenuti: gestione con il proprio computer Collabora inoltre come professore invitato nell’Istituto Patristico Augustinianum di A La stesura di un’edizione critica è un compito lungo e fonte di innumerevoli controlli. Roma. È autore deldelle libro Actas latinas lingue de da parte di LTEX, descrizione della Automatizzare il piú possibile le operazioni permette un notevole risparmio del numero di Jerónimo Leal Gianluca Pignalberi mártires africanos (Ciudad Nueva, Fuentes controlli da effettuare. Un filologo e un informatico guidano il lettore verso l’obiettivo automatizzazione. Patrísticas, Madrid 2009), e di diversi articoli Questo manuale è rivolto principalmente ai filologi e ai grecisti classici e insegna come per la rivista ArsTElinguaXnica. Dal 2004 organizza e file di pattern, proposta di integrazione usare X LE ATEX, un potente linguaggio di impaginazione tipografica, per impaginare e tiene annualmente un Corso di edizione facilmente delle edizioni critiche ineccepibili dal punto di vista tipografico e della coerenza critica al computer (CeT X) nella sede della numerazione del testo e degli apparati. Gli autori espongono la loro esperienza siaE in babel che in polyglossia. nell’utilizzo del programma spiegando numerosi casi reali e mostrano la potenza e la dell’Università della Santa Croce. Circa un versatilità del linguaggio evidenziando proprio gli automatismi di numerazione e di centinaio di professori universitari e riferimento. ricercatori hanno seguitoL’ultimo il corso finora. Nel articolo del numero segna il “ritorno” Tutti i programmi usati sono liberi e gratuiti e la loro affidabilità è attestata da oltre 2011 anche la Facoltà di Diritto Canonico trent’anni di sviluppo continuo e da una comunità mondiale di decine di migliaia di utenti tra cui docenti e studenti universitari, case editrici, professionisti, semplici appassionati, San Pio X di Venezia ha ospitato il corso del enti pubblici e privati. professor Leal. in attività (se mai si è fermato) di Enrico Grego-

Gianluca Pignalberi, nato a Cori (LT) nel 1972, è un informatico.rio. DopoL’editor la laurea in incaricato dell’articolo lo ha definito, Scienze dell’Informazione è stato borsista applicativo pressoverosimilmente il CASPUR, docente a a ragione, uno dei primi vagiti ita- contratto alla Sapienza, collaboratore-giornalista tecnico per A Infomedia e Edizioniliani Master, programmatore di LTEX3. Enrico ci spiega come scrivere un e impaginatore TEX per Free Software Magazine. Ora svolge le attività di A commerciante, insegnantepacchetto a contratto e per LTEX3. Il pacchetto in questione impaginatore TEX. È attualmente vicepresidente del gèuIt (Gruppokantlipsum Utilizzatori che io ho scoperto per caso (dovevo Italiani di TEX) e ne dirige la rivista ArsTEXnica. effettuare dei test di impaginazione) proprio pochi giorni prima di ricevere l’articolo. Non aggiungo altro per non togliere ulteriore tempo alla lettura. Alla prossima.

Al pubblico AC 25,00 Edizioni CompoMat TEXnologie . Gianluca Pignalberi g dot pignalberi at Alla fine di febbraio è uscito in libreria Microe- alice dot it conomia di Hal . Varian, edito dalla Libreria

3 Graphviz e TikZ

Claudio Fiandrino

Sommario 2 Installazione

Graphviz è un potente software per disegnare grafi. Python è già disponibile con l’installazione pre- Questo articolo proverà a spiegare come esportare definita di (web, d); in caso contrario è in maniera semplice tali grafi in figure TikZ. sufficiente digitare da terminale: sudo apt-get install python Abstract Per installare pyparsing (web, c) e dot2tex (web, a) converrà usare uno strumento estremamente Graphviz is a very powerful tool to draw graphs. comodo, easy_install: This article tries to explain how to export such graphs as a TikZ picture in a very simple way. sudo apt-get install python-setuptools I comandi per installare pyparsing e dot2tex sono Premessa rispettivamente: Ubuntu 11.04 sarà il sistema operativo di riferi- sudo easy_install pyparsing mento nell’articolo. Tutti i comandi per l’instal- e lazione e la creazione del codice TikZ saranno impartiti dal terminale. Le istruzioni sono mol- sudo easy_install dot2tex to semplici e chi ha poca dimestichezza con ta- Graphviz (web, b) necessita di una lunga lista di le strumento trova comunque in rete alcune gui- pacchetti: graphviz, graphviz-doc, graphviz-dev, de introduttive molto ben curate. A tale propo- libgraphviz-dev, libgraphviz-perl, libgv-lua, libgv- sito, si riporta http://wiki.ubuntu-it.org/ perl, libgv-php5, libgv-guile, libgv-python, libgv- AmministrazioneSistema/RigaDiComando. ruby, libgv-tlc, libgv-ocaml. I suddetti possono essere installati con il solito comando: 1 Introduzione sudo apt-get install

La creazione di grafi con Graphviz avviene me- I pacchetti LATEX Preview e TikZ/PGF sono sup- diante un linguaggio specifico, chiamato dot, la portati dalle distribuzioni TEX Live e MiKTEX. È cui sintassi è davvero semplice ed intuitiva. La consigliabile l’uso di TEX Live; una guida che ne sezione 3 ne darà una breve introduzione. L’uso illustra l’installazione su Ubuntu è (Gregorio, di Graphviz è largamente diffuso per analizzare, 2010). creare ed utilizzare i grafi. Un esempio pratico è la creazione di nodi di rete per simulare attacchi 3 Introduzione al linguaggio dot di pirati informatici (Zhang e Wu, 2008). Il software che elabora il linguaggio dot creando Il codice 1 mostra un esempio di grafo realizzato il relativo codice TikZ si chiama dot2tex e permette con dot. di ottenere anche il codice per PGF e PSTricks. I seguenti programmi sono requisiti fondamentali Codice 1: il primo esempio. per dot2tex: digraph G { 1->2 [label="1/2"]; • python, versione 2.4 o successive; 2->3 [label="1/2"]; 3->1 [label="1/2"]; } • pyparsing versione 1.4.8 (raccomandata) o successive; Il grafo G è composto da tre nodi e tre archi; • Graphviz. dichiarato con la parola chiave digraph, tutto il codice che lo definisce deve essere racchiuso fra Sono anche richiesti i pacchetti LATEX Preview e { }. È evidente l’assenza di dichiarazioni: i nodi TikZ/PGF. Nella sezione 2 saranno illustrati i pas- e gli archi vengono creati direttamente. Una ri- si per installare velocemente tutti i componen- ga di codice finisce sempre con “;”. Il simbolo -> ti mentre nella sezione 4 sarà preso in esame il caratterizza l’arco che unisce due nodi. In questo funzionamento di dot2tex. caso l’arco ha una direzione, ma è possibile anche

4 ArsTEXnica Nº 13, Aprile 2012 Graphviz e TikZ definire archi senza direzione. Gli archi possono I due comandi compileranno il file .tex creato avere un’etichetta o meno; l’etichetta deve essere in precedenza e mostreranno il risultato, qui inserita fra parentesi quadre con la parola chiave riportato nella figura 1, con il visualizzatore label. L’esempio mostrato dal codice 1 (Il primo di pdf indicato. esempio) sarebbe notevolmente più semplice sen- za etichette, come mostra il codice 2 (Il primo esempio semplificato). 1

Codice 2: il primo esempio semplificato. digraph G { 1/2 1->2->3->1; } 2 1/2

Per scrivere il codice del grafo è necessario creare un file con estensione .dot: qualsiasi editor di testo 1/2 può andare bene; gli esempi qui riportati sono stati creati con gedit. Ulteriori informazioni sono reperibili sul sito 3 con la documentazione ufficiale: http://www. graphviz.org/Documentation.php Figura 1: il primo esempio 4 Come funziona Il documento LATEX creato nel punto 4 è com- Per ottenere il codice di una figura non esiste un co- pleto: utilizza la classe article, ha un proprio pre- mando standard funzionale in ogni caso. A seconda ambolo ed è composto da una sola pagina in cui dell’obbiettivo alcuni comandi sono più funziona- viene inserita l’immagine. li rispetto ad altri: per esempio, i comandi circo È possibile esportare molto facilmente la figura e neato producono un risultato diverso a partire copiando il codice, ma bisogna fare attenzione a dallo stesso codice. copiare anche i pacchetti e le librerie scritti nel 4.1 Il primo esempio preambolo e necessari alla figura. In questo caso: La procedura che descrive la realizzazione del pri- \usepackage{tikz} mo esempio è valida anche per tutti gli altri ed è \usetikzlibrary{snakes,arrows,shapes} la seguente: 1. Creare una directory di nome ex1 sul desktop. 4.2 Le opzioni sul tipo di codice 2. Creare all’interno di tale cartella un file nomi- Il comando dot2tex permette di ottenere: nato ex1.dot in cui incollare il codice mostrato fpgf nel codice 1 (Il primo esempio). • il codice PGF – opzione ;

3. Aprire il terminale (fare click sul pulsante • il codice TikZ – opzione ftikz; Applicazioni della dashboard, quindi digitare terminale nel campo cerca) e scrivere: • il codice PSTricks – opzione fpst. cd Desktop/ex1/ In generale, non specificare un’opzione fa sì che la per spostarsi all’interno della directory. figura sia scritta in PGF. Tuttavia, il medesimo risultato è ottenibile digitando: 4. Creare il file .tex attraverso il comando: dot2tex --preproc ex1.dot\ dot2tex -fpgf ex1.dot > ex1_pgf.tex | dot2tex > ex1.tex La generazione del codice TikZ avviene con: Il carattere \, usato qui per esigenze tipografi- dot2tex -ftikz ex1.dot > ex1_tikz.tex che, serve comunque a far capire al terminale che il comando è stato spezzato su più righe mentre il seguente comando: e l’invio dopo \ non indica l’esecuzione del comando. dot2tex -fpst ex1.dot > ex1_pst.tex

5. Digitare: è necessario per ottenere un’immagine PSTricks. pdflatex ex1.tex I comandi riportati possono essere applicati evince ex1.pdf anche al primo esempio.

5 Claudio Fiandrino ArsTEXnica Nº 13, Aprile 2012

_ Codice 3: il secondo esempio. fornisce invece un errore perché il carattere è un carattere speciale. digraph G { Il secondo metodo che permette di specificare a_1->b_2 [label="1/2"]; b_2->c_3 [label="1/2"]; delle etichette per i nodi è più pesante di quello c_3->a_1 [label="1/2"]; visto ora in quanto è necessario scrivere più righe di } codice nel file .dot per ottenere lo stesso risultato. Ha però il grande vantaggio di essere indipendente dalle opzioni precedentemente elencate. Il motivo è molto semplice: grazie alla parola chiave texlbl, 4.3 Le opzioni sulle etichette dei nodi l’opzione da utilizzare viene definita a priori nel Si consideri il codice mostrato in codice 3 (Il file .dot quindi è indispensabile scrivere più righe secondo esempio). di codice. La procedura indicata nella sezione 4.1 implica Il codice 4 (Una variante del secondo esem- che il file ex2.dot sia presente in una directory pio) riporta la variante del secondo esempio con di nome ex2 nel desktop. Dal codice evinciamo le modifiche illustrate. In questo caso è sufficiente come sia facile assegnare un’etichetta ad un nodo: è sufficiente inserirla all’atto di creazione dell’arco Codice 4: una variante del secondo esempio. (un secondo metodo sarà analizzato più avanti). Esistono tre opzioni per caratterizzare l’output: digraph G { 1 [texlbl="$a_1$"]; • in modalità matematica (opzione tmath) 2 [texlbl="$b_2$"]; l’etichetta sarà inserita fra $ $; 3 [texlbl="$c_3$"]; 1->2 [label="1/2"]; • in modalità verbatim (opzione tverbatim) l’in- 2->3 [label="1/2"]; terprete farà sì che i caratteri speciali di LATEX 3->1 [label="1/2"]; vengano riconosciuti; }

• in modalità raw (opzione traw) la label non viene processata in alcun modo; se sono pre- digitare senti caratteri speciali è possibile incorrere in dot2tex ex2.dot > ex2.tex errori. per creare il file ex2.tex ed ottenere il risultato Il comando: mostrato nella figura 2a. dot2tex -tmath ex2.dot > ex2.tex 4.4 Personalizzare le etichette genera il risultato mostrato nella figura 2a, diverso È possibile personalizzare il colore delle etichette da quello riportato in figura 2b ottenuto invece attraverso la parola chiave lblstyle. Più in genera- con: le, è possibile introdurre tutti i comandi standard usati in TikZ. La modifica del file ex2.dot come dot2tex -tverbatim ex2.dot > ex2.tex riportato nel codice 5 (Il secondo esempio con label rossa) e l’immissione del comando: dot2tex ex2.dot > ex2.tex a 1 a_1 genera il risultato mostrato nella figura 3.

1/2 1/2 Codice 5: il secondo esempio con label rossa. digraph G { 1 [texlbl="$a_1$", lblstyle="red"]; b2 1/2 b_2 1/2 2 [texlbl="$b_2$"]; 3 [texlbl="$c_3$"]; 1->2 [label="1/2"]; / 1 2 1/2 2->3 [label="1/2"]; 3->1 [label="1/2"]; } c3 c_3

(a) label opzione (b) label opzione La modifica del codice 5 riportata nel codice 6 tmath tverbatim (Il secondo esempio con comandi TikZ) il- Figura 2: esempi con le diverse opzioni label lustra come è possibile introdurre altri comandi TikZ. Il comando: Come prima, il comando: dot2tex -traw ex2.dot > ex2.tex dot2tex ex2.dot > ex2.tex

6 ArsTEXnica Nº 13, Aprile 2012 Graphviz e TikZ

a1 a1

1/2 1/2

b2 1/2 b2 1/2

1/2 1/2

c3 c3

Figura 3: il secondo esempio con label rossa Figura 4: il secondo esempio con comandi TikZ

Codice 6: il secondo esempio con comandi TikZ. Codice 7: il terzo esempio. digraph G { digraph G { 1 [texlbl="$a_1$",lblstyle="red"]; node [style="fill=green!20"]; 2 [texlbl="$b_2$",lblstyle="red"]; 1->2 [label="1/2"]; 3 [texlbl="$c_3$",lblstyle="red"]; 2->3 [label="1/2"]; 1->2 [label="1/2", 3->1 [label="1/2"]; lblstyle="rounded corners, 3 [shape=rectangle, fill=blue!20,rotate=30"]; style="fill=cyan!20,draw=blue"] 2->3 [label="1/2", } lblstyle="rounded corners, fill=blue!20"]; 3->1 [label="1/2", È utile mostrare come la compilazione del codi- lblstyle="rounded corners, fill=blue!20, below=0.1cm"]; ce 7 mediante i comandi TikZ o PGF faccia otte- } nere due risultati diversi. Le opzioni da utilizzare sono quelle descritte nella sottosezione 4.2: dot2tex -ftikz ex3.dot > ex3.tex genera il risultato mostrato nella figura 4. dot2tex ex3.dot > ex3_pgf.tex 4.5 Personalizzare i nodi Le figure 5a e 5b mostrano tale diversità, no- La personalizzazione dei nodi può avvenire nostante entrambe presentino lo stesso fattore caratterizzandone: di scala (non sono chiare le motivazioni di tale comportamento). • la forma:

· circonferenza; · 1 ellisse; 1 · rettangolo; 1/2 • i colori: 1/2

· dei bordi; 2 1/2 2 1/2 · del riempimento;

• i font. 1/2 1/2 La parola chiave style e il contestuale uso dei co- mandi usuali di TikZ consentono di personalizzare 3 3 i colori e il font. La forma viene definita, invece, con (a) opzione ftikz (b) opzione fpgf la parola chiave shape. L’esempio ex3.dot illustra tali caratteristiche attraverso il codice 7 (Il terzo Figura 5: esempi delle le diverse opzioni di output esempio). C’è da notare che le impostazioni date con la parola chiave node diventano le impostazioni Si ipotizzi sia necessario caratterizzare diversi di default; possono comunque essere cambiate per tipi di nodi in un grafo, ad esempio una rete di un singolo nodo. sensori in un’area geografica che monitori la tempe-

7 Claudio Fiandrino ArsTEXnica Nº 13, Aprile 2012

ratura oppure una rete di antenne accese e spente. D Colorando in modo diverso i nodi sarebbe possibile visualizzare immediatamente quali antenne sono attive oppure quali sensori misurano un aumento della temperatura. Risolvere questo problema caratterizzando i no- B C di come fatto in precedenza sarebbe poco prati- co. L’impostazione di default unica implicherebbe di dover agire manualmente per modificare i no- di del secondo tipo. Questo problema non viene A affrontato nella documentazione ufficiale, anche se è opinione dell’autore che rivesta notevole im- Figura 6: il quarto esempio comando circo portanza. La soluzione proposta utilizza la paro- la chiave d2tfigpreamble; il codice 8 (Il quarto D esempio) riporta un esempio in cui viene illustrato tale metodo.

Codice 8: il quarto esempio. digraph G { B C d2tfigpreamble=" \tikzstyle{cold}=\ [draw=blue!50, very thick,fill=blue!20], \tikzstyle{hot}=\ [draw=red!50, very thick,fill=red!20]"; A A [style="cold"]; B [style="cold"]; Figura 7: il quarto esempio opzione styleonly C [style="hot"]; D [style="hot"]; A->B->D; È facile intuire che il motivo di tale differenza è A->C->D; dovuto all’opzione styleonly. Infatti, se l’opzione D->C; è assente, il codice TikZ che definisce un nodo è: D->B->A; B->B [topath="loop left"]; \node (A) at (108.21bp,19.5bp) C->B; [draw,ellipse,cold] {A}; } Quando invece l’opzione è attiva il codice è:

\node (A) at (108.21bp,19.5bp) È molto importante notare la sintassi: entrambe [ cold ] {A}; le definizioni degli stati sono racchiuse fra doppi apici; è necessario inserire un backslash prima della In ultimo, il comando: parola chiave tikzstyle e prima di definire le ca- ratteristiche del nodo fra [ ]. Inoltre, come succede neato -Txdot ex4.dot |\ per TikZ, i vari comandi devono essere separati da dot2tex -ftikz --styleonly > ex4.tex una virgola. Naturalmente è possibile definire anche più di genera il grafo visibile nella figura 8. due stati con questo metodo. Rimane da analizzare come comandi diversi di D Graphviz generino risultati diversi partendo dal medesimo esempio. Il comando: B circo -Txdot ex4.dot |\ dot2tex -ftikz > ex4.tex A C genera il grafo riportato nella figura 6. Utilizzando invece il comando: Figura 8: il quarto esempio comando neato circo -Txdot ex4.dot |\ dot2tex -ftikz --styleonly > ex4.tex Il confronto tra le figure 6 e 8 fa dedurre che il comando circo è preferibile per i grafi con to- e seguendo sempre la procedura illustrata nella sot- pologie circolari perché utilizza un algoritmo che tosezione 4.1 il risultato ottenuto, riportato nella posiziona i nodi a dofferenza di neato. Il manuale figura 7, sarà diverso. di Graphviz conferma l’osservazione.

8 ArsTEXnica Nº 13, Aprile 2012 Graphviz e TikZ

4.6 Personalizzare gli archi inserendo la libreria decorations e il codice relativo Esistono due metodi per personalizzare gli ar- alla forma dell’arco. È sufficiente individuare la chi: mediante la sintassi edge[style="..."] oppure parte di codice giusta: attraverso la parola chiave topath. \draw [->,snake=zigzag] (C) -- (A); Il codice 9 (Il quinto esempio) analizza il \draw [->,snake=snake] (A) -- (D); primo approccio. Il codice 10 (Il sesto esempio) permette invece l’analisi del metodo che fa uso della parola chiave Codice 9: il quinto esempio. topath. digraph G { d2tfigpreamble=" \tikzstyle{cold}=\ [draw=blue!50, Codice 10: il sesto esempio. very thick,fill=blue!20], digraph G { \tikzstyle{hot}=\ [draw=red!50, d2tfigpreamble=" very thick,fill=red!20]"; \tikzstyle{cold}=\ [draw=blue!50, A [style="cold"]; very thick,fill=blue!20], B [style="cold"]; \tikzstyle{hot}=\ [draw=red!50, C [style="hot"]; very thick,fill=red!20]"; D [style="hot"]; A [style="cold"]; edge [style="snake=zigzag"]; B [style="cold"]; A->B->D->C->A; C [style="hot"]; edge [style="snake=snake"]; D [style="hot"]; A->D; A->B->D->C->A[topath="bend left=20"]; C->B; A->C->D->B->A[topath="bend left=20"]; } B->B [topath="loop left"]; }

Si noti come la sintassi che caratterizza l’arco deve essere inserita prima del codice di definizione. Questo esempio è diverso dal precedente poiché Il risultato grafico mostrato nella figura 9 è stato mostra una proprietà diversa: non viene cambiata ottenuto con il comando: la forma dell’arco ma l’angolazione di partenza ed arrivo dell’arco dai/nei nodi. Entrambi gli approcci circo -Txdot ex5.dot |\ permettono l’uso dei classici comandi TikZ essendo, dot2tex -ftikz -s > ex5.tex pertanto, equivalenti. È dunque possibile inserirli contemporaneamente nello stesso codice. D Il comando: circo -Txdot ex6.dot |\ dot2tex -ftikz > ex6.tex

permette di ottenere il risultato riportato nella B C figura 10.

D

A

Figura 9: il quinto esempio B C

L’opzione -s deve essere specificata per poter riconoscere i percorsi di tipo snake. Il comando \usetikzlibrary{snakes} A richiede la libreria di TikZ snakes, obsoleta e re- centemente sostituita da decorations. Questo è il Figura 10: il sesto esempio motivo per cui le forme selezionabili sono poche. Es- sere vincolati a una libreria obsoleta non permette neanche l’uso di opzioni estremamente interessanti 5 Considerazioni finali come pre/post length. Queste permettono di perso- nalizzare il punto di inizio e fine del cambiamento Questa sezione cercherà di rispondere alla domanda di forma dell’arco. Ovviamente è possibile editare “perché non scrivere il codice del grafo direttamente il codice TikZ in un secondo momento, ad esempio con TikZ?”

9 Claudio Fiandrino ArsTEXnica Nº 13, Aprile 2012

Non esiste una risposta univoca. I vantaggi del • permette di ottenere la stessa qualità di TikZ metodo illustrato sono evidenti quando occorra grazie alla possibilità di personalizzare gli stati importare in un documento dei grafi con un certo attraverso i preamboli. numero di nodi ed archi. Se invece il grafo ha due o tre nodi è forse più conveniente scrivere diretta- 6 Conclusioni mente il codice TikZ. La figura 11 è un esempio di questo tipo e raffigura una semplice catena di Mar- Questo articolo ha analizzato un metodo per espor- kov. Il sorgente è riportato in codice 11 (grafo tare grafi creati con Graphviz in immagini prodotte composto con TikZ). con codice TikZ, PGF e PSTricks. Dopo aver illustrato come installare i programmi necessari, sono stati presentati numerosi esempi 1/3 (codice e risultato grafico) per discutere i punti di 2 1 forza e di debolezza del metodo. 0 1 3 2 L’articolo non è esaustivo perché ha discusso so- lo gli aspetti di base dei comandi introdotti e non 1/2 ha preso in considerazione il pacchetto dot2texi. In teoria, grazie all’ambiente dot2tex, l’uso del Figura 11: un esempio di grafo composto direttamente con pacchetto dovrebbe essere preferibile al metodo TikZ illustrato in questo articolo: il codice dot viene inserito nell’ambiente citato e produce automatica- mente la figura. Le compilazioni fatte sugli esempi Codice 11: un grafo composto direttamente con TikZ. tratti dal manuale di dot2texi danno sempre un \begin{tikzpicture}[-latex,auto, errore in corrispondenza della linea di apertura node distance=4cm,on grid,semithick, dell’ambiente, errore che comunque non pregiudica state/.style={circle, draw, l’ottenimento del grafo finale, seppur leggermente top color=white, diverso da quanto riportato nel citato manuale. bottom color=cyan!20, cyan, circular drop shadow,text=blue, minimum width=1cm}] Riferimenti bibliografici % Nodes (a). «dot2tex». URL http://www.fauskes.net/ \node[state] (A) {$0$}; code/dot2tex/. \node[state] (B) [ right=of A] {$1$}; % Edges (b). «Graphviz». URL http://www.graphviz. \path (A) edge [loop left] org/Download.php. node{$\dfrac{2}{3}$} (A); \path (B) edge [loop right] (c). «Pyparsing». URL http://pyparsing. node{$\dfrac{1}{2}$} (B); wikispaces.com/. \path (B) edge [bend left=25] node[below]{$1/2$} (A); (d). «Python». URL http://www.python.org/. \path (A) edge [bend right=-25 ] node[above]{$1/3$} (B); Gregorio, E. (2010). «Installare TEX live 2010 \end{tikzpicture} su ubuntu». ArsTEXnica, (10), pp. 7–13. URL http://www.guit.sssup.it/arstexnica/. C’è da notare, contrariamente a quanto neces- Zhang, T. e Wu, C. (2008). «Network se- sario col codice dot, la necessità di indicare la curity analysis based on security status spa- posizione dei nodi e che la sintassi del codice è leg- ce». Web-Age Information Management. URL germente più complicata. Si può quindi affermare http://ieeexplore.ieee.org/xpl/freeabs_ che il linguaggio dot: all.jsp?arnumber=4597065. • è più intuitivo;

• non richiede di posizionare manualmente i . Claudio Fiandrino nodi perché lo fa autonomamente in ba- http : / / claudiofiand rino . se al comando usato (quindi all’algoritmo altervista.org opportuno); claudio dot fiandrino at gmail dot com

10 Ancora sugli strumenti per grecisti classici

Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal

Sommario Contrariamente a quanto affermato in Pignal- beri et al. (2011) anche X LAT X è in grado di L’articolo esamina due argomenti lasciati aperti nel E E comporre un testo greco traslitterato, basta usare nostro precedente Introduzione agli strumenti per il pacchetto lgreek (Levy e Murphy, 2010). grecisti classici, segnatamente la traslitterazione di Il manuale a esso relativo mostra un documento testi greci con X LAT X e la composizione parallela E E minimale: nel preambolo c’è solo \documentclass di testi con traduzione a fronte. Verranno date una e l’inclusione del pacchetto lgreek. Quindi c’è il o più soluzioni per ognuno dei due argomenti. corpo del documento. Qui il testo da comporre in greco è distinto dal testo normale perché è racchiu- Abstract so nell’ambiente greek. Tutto il testo al di fuori di This paper inspects two topics left unsolved in questo ambiente viene composto coi caratteri latini. our previous one, Introduzione agli strumenti per La corrispondenza tra caratteri latini e greci è la grecisti classici, namely the transliteration of Greek stessa data nell’articolo Pignalberi et al. (2011) texts with X LE ATEX and the composition and the e non la ripeteremo. translation with parallel text into another language. Nella sezione “Accents and Breathings”2 del One or more solutions to both topics will be given. manuale citato troviamo le regole da seguire per ottenere accenti e spiriti corretti e troviamo an- che un errore che evidenzieremo a breve. Questa 1 Introduzione è la traduzione letterale della sezione di nostro interesse: Nel nostro precedente articolo Introduzione agli strumenti per grecisti classici (Pignalberi et al., Per ottenere un accento acuto, grave o 2011) abbiamo descritto alcuni metodi e strumenti circonflesso su una vocale digita rispetti- per comporre i testi tipici dei filologi, in partico- vamente ’, ‘ o ~ prima della vocale. Per lare dei grecisti. Non siamo stati però in grado di ottenere uno spirito aspro o dolce digita fornire i metodi per trattare il greco traslitterato < o > prima della vocale (o rho) e di ogni A con X LE TEX e per ottenere le note a piè di pagina suo eventuale accento. Per ottenere uno posizionate correttamente nei documenti con testi iota sottoscritto digita | dopo la vocale. paralleli su due colonne. Una dieresi è rappresentata da ", e se Durante la stesura del libro Leal e Pignalbe- è accompagnata da un accento essa può ri (2012) e l’elencazione dei pacchetti necessari stare prima o dopo l’accento stesso. per comporre la tesi di dottorato dal titolo prov- visorio «La “Città di vita” di Matteo Palmieri Per esempio, >en >arq\~h| >\~hn

1. Il dottorando Fabrizio Crasta sta lavorando alla te- 2. I lettori con scarse conoscenze di greco antico trovano si la cui discussione è prevista per maggio 2013 presso un’interessante introduzione ai segni diacritici dell’alfabeto l’Università di Firenze. greco in Wikipedia (2012).

11 Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal ArsTEXnica Nº 13, Aprile 2012

In principio era il Verbo, il Verbo era presso Dio e il Verbo era Dio. >En ‚rq¬ ªn å Lìgos, kaÈ å Lìgos ªn präs tän Jeìn, kaÈ Jeäs ªn å Lìgos.

Figura 1: Il primo versetto del Vangelo di Giovanni ottenuto mediante traslitterazione e composto con X LE ATEX e lgreek

L’errore menzionato sta nel secondo capoverso 7 della traduzione. Il manuale dà erroneamente un 8 ; Class "letter" consists of testo traslitterato con il carattere di escape prima letters and characters della tilde. Mentre il comando \~ genera l’accento denoting accents circonflesso in LATEX, ciò non è più vero col pac- 9 ; in order to cope with "sigma chetto in esame. Se compiliamo l’esempio proposto finalis", i.e., A-Z a-z ‘ ’ > otteniamo un errore proprio in corrispondenza del- < ~ le sequenze \~. Leggendo attentamente il primo 10 ; we don’t need the double quote capoverso di Levy e Murphy (2010) qui tradotto because it goes only after a non troviamo affermata da nessuna parte la ne- vowel cessità di far precedere la tilde da \, tutt’altro. 11 UniClass[letter] = ( U+0041..U Togliamo il backslash e la compilazione va a buon +005A U+0061..U+007A U+0060 U fine e l’accento viene posto correttamente. +0027 U+003E U+003C U+007E ) Il codice relativo al primo versetto del Vangelo 12 di Giovanni è il seguente: 13 14 ; ligatures from Knuth’s 1 \ documentclass { minimal } original CMR 2 15 U+002D U+002D <> U+2013 ; -- -> 3 \ usepackage { lgreek } en dash 4 16 U+002D U+002D U+002D <> U+2014 ; 5 \ begin { document } --- -> em dash 6 In principio era il Verbo, il 17 Verbo era presso Dio 18 ; Greek (according to C. Beccari 7 e il Verbo era Dio. conventions) 8 19 9 \ begin { greek } 20 ; ( -1) 10 >En >arq~h| >~hn U+2019 ; APOSTROPHE ~hn 11 pr‘os t‘on Je’on, ka‘i Je‘os >~ Bisogna poi convertire il file col comando hn

12 ArsTEXnica Nº 13, Aprile 2012 Ancora sugli strumenti per grecisti classici

13 \addfontfeature{Mapping= 1. bisogna aprire l’ambiente paracol dopodi- asciitogreek}} ché. . . 14 {\ end {otherlanguage}} 2. . . . è sufficiente scrivere il testo della prima 15 \ newenvironment {transgreek*} colonna e le eventuali note a piè di pagina. 16 {\ catcode ‘\~=12 \ begin { % otherlanguage*}{greek} 3. Al termine del testo bisogna usare un comando 17 \addfontfeature{Mapping= indicante il cambio di colonna. . . asciitogreek}} 18 {\ end {otherlanguage*}} 4. . . . seguito dal testo della successiva colonna. 19 20 \ newcommand {\texttransgreek}{\ 5. Reiteriamo il procedimento dal passo 3 fin begingroup quando, dopo aver scritto il testo dell’ultima 21 \ catcode ‘\~=12 \ colonna, . . . innertexttransgreek} 6. . . . chiudiamo l’ambiente paracol. 22 \ newcommand *{\ innertexttransgreek}[1]{ % Diamo un esempio breve ma non banale in cui 23 \ begin {transgreek*}#1\ end { riproduciamo due stralci di bibbie con traduzione transgreek*}\ endgroup } a fronte e relative annotazioni. Gli stralci sono 24 posti su quattro colonne parallele. Le prime due 25 \ begin { document } colonne riproducono i primi cinque versetti del 26 \textitalian Vangelo di Giovanni e le relative note così come 27 In principio era il Verbo, il compaiono in Merk e Barbaglio (1993), le altre Verbo era presso Dio due colonne riproducono invece lo stesso brano ma 28 e il Verbo era Dio. tratto da Nestle et al. (1984). Possiamo vedere il 29 risultato nella figura 3. 30 \ begin {transgreek} A pagina 15 vediamo il codice necessario a rea- 31 >En >arq~h| ~>hn hn corrispondenze tra il passo di ae e la riga o le 32 pr‘os t‘on Je’on, ka‘i Je‘os ~> righe del sorgente. Lo stesso codice fornisce inoltre hn

13 Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal ArsTEXnica Nº 13, Aprile 2012

In principio era il Verbo, il Verbo era presso Dio e il Verbo era Dio. Ἐν ἀρχῇ ἦν ὁ Λόγος, καὶ ὁ Λόγος ἦν πρὸς τὸν Θεόν, καὶ Θεὸς ἦν ὁ Λόγος.

Figura 2: Il solito brano ottenuto per traslitterazione tramite una mappa realizzata ad hoc

Tabella 1: Tabella delle corrispondenze tra le righe del Nakashima, H. (2011). Package paracol: Yet Ano- sorgente alla pagina 15 e l’algoritmo qui chiamato ae ther Multi-Column Package to Typeset Columns in Parallel. Passo di ae Righe del codice 1 27 Nestle, E., Nestle, E. e Aland, K. (a cura di) 2 28–44 (1984). Novum Testamentum Graece et Lati- 3 45, 63, 73 ne. Deutsche Bibelgesellschaft, Stuttgart, 26ª 4 46–62, 64–72, 74-95 edizione. 6 96 Pignalberi, G., Schirone, S. e Leal, J. (2011). «Introduzione agli strumenti per grecisti classici». A nica parallele. Il pacchetto lgreek risolve completamente rsTEX , (11). il primo problema così come lo risolve ridefinire Robertson, W. e Hosny, K. (2011). The fontspec una mappa, mentre il pacchetto paracol risolve il package. problema del posizionamento delle note comune ai pacchetti parallel e ledpar. paracol consente la Wikipedia (2012). «Segni diacritici dell’alfabe- presenza di più di due colonne parallele sulla stessa to greco». URL http://it.wikipedia.org/ pagina. L’esempio a corredo dell’ultima soluzione wiki/Segni_diacritici_dell%27alfabeto_ fornisce un metodo semplice ma efficace, sebbe- greco. ne non completamente automatico, per numerare tutti i versetti della Bibbia e le eventuali relative note. . Gianluca Pignalberi g dot pignalberi at alice dot Riferimenti bibliografici it Leal, J. e Pignalberi, G. (2012). Edizioni . Salvatore Schirone Critiche. Guida alla composizione con il pro- schirone at gmail dot com prio computer.TEXnologie. CompoMat, Rieti, . Jerónimo Leal Italia. Dipartimento di Storia della Chiesa Pontificia Università Levy, S. e Murphy, T. (2010). Using Greek Fonts della Santa Croce with LAT X. E Piazza Sant’Apollinare 49 Merk, A. e Barbaglio, G. (a cura di) (1993). 00186 Roma Nuovo Testamento. Greco e italiano. EDB, jleal at pusc dot it Bologna, terza edizione.

1In principio era il Verbo, il 1Ἐν ἀρχῇ ἦν ὁ Λόγος, καὶ 1In principio erat Verbum, 1Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ Verbo era presso Dio e il Verbo ὁ Λόγος ἦν πρὸς τὸν Θεόν, καὶ et Verbum erat apud Deum, et ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ era Dio. 2Egli era in principio Θεὸς ἦν ὁ Λόγος. 2οὗτος ἦν ἐν Deus erat Verbum. 2Hoc erat in θεὸς ἦν ὁ λόγος. 2οὖτος ἦν ἐν presso Dio: 3tuo è stato fao ἀρχῇ πρὸς τὸν θεόν. 3πάντα principio apud Deum. 3Omnia ἀρχῇ πρὸς τὸν θεόν. 3πάντα

per mezzo di lui, e senza di lui δι᾽ αὐτοῦ ἐγένετο, καὶ χωρὶς per ipsum facta sunt, et sine ip- δι᾽ αὐτοῦ ἐγένετο, καὶ χωρὶς niente è stato fao di tuo ciò αὐτοῦ ἐγένετο οὐδὲ ἓν ὃ γέ- so factum est nihil; quod fac- αὐτοῦ ἐγένετο οὐδὲ ἕν :. ὃ che esiste. 4In lui era la vita e γονεν. 4ἐν αὐτῷ ζωὴ ἦν, καὶ tum est 4in ipso vita erat, et vi- γέγονεν:1 4ἐν αὐτῶ ζωὴ ⌜ἦν, la vita era la luce degli uomi- ἡ ζωὴ ἦν τὸ φῶς τῶν ἀνθρώ- ta erat lux hominum, 5et lux in καὶ ἡ ζωὴ ἦν τὸ φῶς 2τῶν 5 5 5 ni; la luce splende nelle tene- πων. καὶ τὸ φῶς ἐν τῇ σκοτίᾳ tenebris lucet, et tenebrae eam ἀνθρώπων \. καὶ τὸ φῶς ἐν bre, ma le tenebre non l’hanno φαίνει, καὶ ἡ σκοτία αὐτὸ οὐ non comprehenderunt. τῇ σκοτίᾳ φαίνει, καὶ ἡ σκο- accolta. κατέλαβεν. τία αὐτὸ οὐ κατέλαβεν.

1presso tr (altra) rivolto a (cf. anche v. 2) | tr e Dio era il Verbo // e + art (= Iddio)… 3tr senza di lui fu faa neppure una 1και2 + LW Ny cosa sola (P75) ] …fu fao niente (P66 3ουδε εν Taae sycp ar gg sa Val vg) / punteggiatura: qui si chiude la Thph Hipp] ουδεν S* D 1s 139 71 Thdot frase (P75 e prob P66, Nestle-Aland) | Ωρl Eusl | ἕν. Taein C* LW D Θ e a b f  ∗ tr di tuo ciò che è stato fao ] (come ff q syci sa Naass Val Her Thdot Thph 3 ουδεν P66ℵ D f 1 pc; Ir | : †- inizio frase) ciò che… // ciò + però Ptol Iρ Cl Ωρ Eus Ath Tert Hil Amb et:1. ℵc (Θ) Ψ 050c f 1.13M syp.h bo ¦ ∗ 4In lui era ] …è | la vita era ] …è | Aug LG | o + δε b syc Naass Iρ Ef(Val) txt P75c CDLWs 050 pc b vgs syc degli uomini > 4ην1] εστιν Ta1 S D a b c f ff z vgl sa; Ir Tert Cl Or (sine interp. vl incert. ∗ 5splende ] splendeva | tr nella tene- syc sa Naass Val Thdotl Ιρ Cll Aug | P66.75∗ℵ A B Δ 063 al) bra, ma la tenebra non l’ha compresa ] ην2] εστιν Ta b sycp sa | τ. ανθρ. > B* 4⌜εστιν ℵ D it sa?; Clpt Ormss ¦ - Ws 2 ∗ …non l’ha vinta 5εφαινεν Ef | κατελαβεν] vicit Ef | B

Figura 3: Vangelo secondo Giovanni, versetti 1–5. Da sinistra a destra il testo è in italiano, in greco (testo e note tratti da Merk e Barbaglio (1993)), in latino e in greco (testo e note tratti da Nestle et al. (1984)). La parte greca di quest’ultimo testo fa ampio uso dei segni di interpunzione inclusi nella tabella Unicode 2E00–2E7F (Supplemental Punctuation). Tali glifi non sono compresi in alcuno dei font usati per realizzare gli esempi. Li abbiamo approssimati al meglio delle nostre capacità con i comandi visibili alle righe 16–22 del sorgente alla pagina 15

14 ArsTEXnica Nº 13, Aprile 2012 Ancora sugli strumenti per grecisti classici

1 \documentclass[a4paper]{article} 2 3 \usepackage{fontspec} 4 \setmainfont[Mapping=tex-text]{PalatinoLinotype } 5 \usepackage{polyglossia} 6 \setmainlanguage{italian} 7 \setotherlanguage{greek} 8 \setotherlanguage{latin} 9 \usepackage{ledmac} 10 \usepackage{paracol} 11 \usepackage{latexsym} 12 \usepackage{amssymb} 13 \usepackage{relsize} 14 \usepackage[body={20cm,12cm}]{geometry} 15 16 \newcommand{\cmexchar}{\usefont{OMX}{cmex}{m}{n}\selectfont\char} 17 \newcommand{\rasm}{$\ulcorner$} 18 \newcommand{\lsb}{\raisebox{1.5ex}{\textsmaller[4]{\cmexchar'70}}\hskip-.1em} 19 \newcommand{\rsb}{\hskip-.1em\raisebox{1.5ex}{\textsmaller[4]{\cmexchar'71}}} 20 \newcommand{\rs}{$^\Box$} 21 \newcommand{\lrob}{\rotatebox{30}{\footnotesize\textbackslash}} 22 \newcommand{\rd}{\raisebox{.25ex}{.}} 23 \newcommand\blindfootnote{\footnotemark} 24 25 \begin{document} 26 \thispagestyle{empty} 27 \begin{paracol}{4} 28 \footnote{\emph{presso} tr(altra)rivoltoa(cf.anchev.2)| tre Dioerail 29 Verbo//e + art(=~Iddio) \ldots}InprincipioerailVerbo,ilVerboerapresso 30 DioeilVerboeraDio. 31 \blindfootnote{}EglierainprincipiopressoDio: 32 \footnote{trsenzadiluifufattaneppureunacosasola 33 (P\textsuperscript{75})] \ldots{}fufattoniente(P \textsuperscript{66} vg)/ 34 punteggiatura:quisichiudelafrase 35 (P\textsuperscript{75} e probP \textsuperscript{66}, Nestle-Aland)|trdi 36 tuttociòcheèstatofatto](comeiniziofrase)ciòche \ldots{} //ciò $+$ 37 però}tuttoèstatofattopermezzodilui,esenzadiluinienteèstatofatto 38 dituttociòcheesiste. 39 \footnote{\emph{Inluiera } ] \ldots{}è | \emph{lavitaera } ] \ldots{}è | 40 \emph{degliuomini } \textgreater{}}Inluieralavitaelavitaeralaluce 41 degliuomini; 42 \footnote{\emph{splende} ] splendeva|trnellatenebra,malatenebranon 43 l'hacompresa] \ldots{}nonl'havinta }lalucesplendenelletenebre,male 44 tenebrenonl'hannoaccolta. 45 \switchcolumn 46 \begin{greek}[variant=ancient] 47 \footnote{και\textsuperscript{2} $+$ LWNy }Ἐνἀρχῇἦνὁ Λόγος,καὶὁΛόγοςἦν 48 πρὸςτὸνΘεόν,καὶΘεὸςἦνὁ Λόγος. 49 \blindfootnote{}οὗτοςἦνἐνἀρχῇπρὸςτὸνθεόν. 50 \footnote{ουδεενTa \textsuperscript{ae} sycparggsaValThphHipp]ουδενS* 51 D 1\textsuperscript{s} 139~71~ThdotΩρ \textsuperscript{l} 52 Eus\textsuperscript{l} | ἕν.Ta \textsuperscript{ein} C*LWD Θ e a b f ffq 53 sycisaNaassValHerThdotThphPtolIρClΩρEusAthTertHilAmbAugLG| o 54 $+$ δεb sycNaassIρEf(Val) }πάνταδι᾽αὐτοῦἐγένετο,καὶχωρὶςαὐτοῦἐγένετο 55 οὐδὲἓνὃ γέγονεν. 56 \footnote{ην\textsuperscript{1}] εστινTa \textsuperscript{1} S D a b c f ffz 57 vg\textsuperscript{l} sycsaNaassValThdot \textsuperscript{l} Ιρ 58 Cl\textsuperscript{l} Aug|ην \textsuperscript{2}] εστινTab sycpsa| τ. 59 ανθρ. \textgreater{} B*}ἐναὐτῷζωὴἦν,καὶἡζωὴἦντὸφῶςτῶνἀνθρώπων. 60 \footnote{εφαινενEf| κατελαβεν]vicitEf }καὶτὸφῶςἐντῇσκοτίᾳφαίνει,καὶ 61 ἡ σκοτίααὐτὸοὐκατέλαβεν. 62 \end{greek} 63 \switchcolumn 64 \begin{latin} 65 \blindfootnote{}InprincipioeratVerbum,etVerbumeratapudDeum,etDeus 66 eratVerbum. 67 \blindfootnote{}HoceratinprincipioapudDeum. 68 \blindfootnote{}Omniaperipsumfactasunt,etsineipsofactumestnihil; 69 quodfactumest 70 \blindfootnote{}inipsovitaerat,etvitaeratluxhominum, 71 \blindfootnote{}etluxintenebrislucet,ettenebraeeamnoncomprehenderunt. 72 \end{latin} 73 \switchcolumn 74 \begin{greek}[variant=ancient] 75 \blindfootnote{}Ἐνἀρχῇἦνὁ λόγος,καὶὁλόγοςἦνπρὸςτὸνθεόν,καὶθεὸς

15 Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal ArsTEXnica Nº 13, Aprile 2012

76 ἦν ὁ λόγος. 77 \blindfootnote{}οὖτος ἦν ἐν ἀρχῇ πρὸς τὸν θεόν. 78 \footnote{\lsb ουδεν $\mathfrak{P^{66}} \aleph^*$ D 79 \emph{f}$^\mathfrak{1}$ \emph{pc}; Ir | \textsuperscript{:} \dag{} - 80 \emph{et}$^{:\mathfrak{1}}$. $\aleph^{\mathrm{c}}$ (Θ) Ψ 81 050\textsuperscript{c} \emph{f}$^\mathfrak{1.13} \mathfrak{M}$ 82 sy\textsuperscript{p.h} bo \textbrokenbar{} \emph{txt} 83 $\mathfrak{P}^{\mathfrak{75}c}$ CDL 84 W\textsuperscript{s} 050$^*$ \emph{pc} b vg\textsuperscript{s} 85 sy\textsuperscript{c} sa; Ir Tert Cl Or (\emph{sine interp. vl incert.} 86 $\mathfrak{P^{66.75{\mathsmaller{\mathsmaller{*}}}}} \aleph^*$ A B Δ 063 87 \emph{al})}πάντα δι᾽ αὐτοῦ ἐγένετο, καὶ χωρὶς αὐτοῦ ἐγένετο \lsb οὐδὲ 88 ἕν\rsb\textsuperscript{:}. ὃ\linebreak γέγονεν$^{:\mathfrak{1}}$ 89 \footnote{\rasm εστιν $\aleph$ D it sa?; Cl\textsuperscript{pt} 90 Or\textsuperscript{mss} \textbrokenbar{} -W\textsuperscript{s} | 91 \rs{}B$^*$}ἐν αὐτῶ ζωὴ \rasm ἦν, καὶ ἡ ζωὴ ἦν τὸ φῶς \rs{}τῶν\linebreak 92 ἀνθρώπων\lrob\rd{} 93 \blindfootnote{}καὶ τὸ φῶς ἐν\linebreak τῇ σκοτίᾳ φαίνει, καὶ ἡ σκοτία αὐτὸ οὐ 94 κατέλαβεν. 95 \end{greek} 96 \end{paracol} 97 \end{document}

16 LATEX e le lingue romanze alpine

Claudio Beccari

Sommario liche che rappresentano le varietà di una lingua “comune”, il romancio dei Grigioni, che è stata rico- LAT X può gestire molte lingue, attualmente 74 più E struita a tavolino e che per legge è ufficiale in tutti diverse varianti. Alcune delle lingue gestibili da i rapporti fra i cittadini e il governo cantonale e LAT X sono usate da poche persone, altre da milioni. E con quello federale. Questo articolo vorrebbe essere un primo passo Esisterebbero anche le lingue ticinese, lombarda verso l’estensione di LATEX alle lingue romanze usate nelle regioni alpine d’Europa. e piemontese, di cui non parlerò in questo articolo, ma arrivando alle Alpi occidentali abbiamo ancora Abstract il franco-provenzale e l’occitano. Il franco-provenzale è poco conosciuto e spesso LATEX is used to typeset in a variety of languages: viene confuso con il provenzale, ma è parlato da at the time of writing, it can handle 74 different lan- decine di migliaia di parlanti in tre nazioni: in guages (plus many variants), some of them used by Italia dal Piemonte occidentale e in tutta la Valle very few people, some by millions. At the moment, d’Aosta; in Svizzera nel Vallese; in Francia ad est there are no facilities for typesetting documents in delle Alpi nella Savoia, nel Delfinato e nella Franca the various more or less official Alpine Romance Contea. languages. This paper would be a first step in order L’occitano si estende su un territorio vastissimo, to extend the LATEX language capabilities to the che comprende il sud ovest del Piemonte, tutta various romance languages that are being used by la Francia meridionale per arrivare fino alla Val large communities in the European Alps. d’Aran in Spagna. Probabilmente l’occitano, fra queste lingue romanze minoritarie è quella parlata 1 Introduzione dal maggior numero di persone. Le Alpi sono una barriera naturale fra varie nazio- Fra le lingue citate l’occitano e il franco- ni, ma non lo sono state per le popolazioni che le provenzale hanno avuto uno sviluppo diverso dal hanno attraversate portando di qua e di là delle francese da una parte e dall’italiano dall’altra e Alpi le loro tradizioni, i loro costumi e specialmen- sotto certi aspetti grammaticali assomigliano più te le loro lingue. Gli stessi antichi romani hanno al francese e al catalano, mentre le lingue romanze conquistato le regioni alpine annettendo i territo- minoritarie della Svizzera sud orientale e dell’Italia ri e le popolazioni autoctone e, successivamente, nord orientale hanno avuto uno sviluppo assolu- estendendo loro la cittadinanza romana. In questo tamente staccato da ogni influenza dell’italiano modo la lingua del potente divenne anche la lingua come, sotto certi aspetti, hanno avuto invece le del sottomesso, come purtroppo è successo nei se- lingue ticinese, lombarda e piemontese. La diffe- coli fino ai giorni nostri; questo ha fatto estinguere renza sostanziale è che la formazione del plurale le antiche lingue autoctone, ma ha trasferito molte dei nomi e degli aggettivi in italiano e nelle lingue delle loro caratteristiche nelle nuove lingue che si minoritarie dell’areale italiano avviene mutando la sono formate. vocale finale, se detti nomi ed aggettivi finiscono Ora procedendo da est a ovest sull’arco delle con una vocale, mentre nelle lingue romanze che ac- Alpi si parlano diverse lingue romanze che hanno comunano i grigionesi, i ladini del Trentino – Alto avuto riconoscimenti ufficiali come il romancio in Adige, e i friulani formano il plurale con l’aggiun- Svizzera, o come il friulano nella regione autonoma ta della ‘s’. Tolta questa caratteristica particolare Friuli – Venezia Giulia e il ladino delle regioni devo dire che tutte le lingue romanze citate, dal Trentino – Alto Adige e del Veneto. Le province friulano all’occitano, sono comprensibili per una autonome di Trento e di Bolzano hanno stabilito persona di cultura e di lingua madre italiana, e i leggi particolari per il plurilinguismo che viene ceppi “ladini” da una parte, e “occitani” dall’altra praticato nei loro territori; immagino che anche la appaiono come varietà di due lingue principali. regione Veneto e la provincia di Belluno abbiano Certamente come persona di formazione tecnico- provveduto nello stesso modo. scientifica non ho molto da dire su queste lingue, Nel canton Grigioni in Svizzera c’è un marcato salvo che riesco a leggerle tutte, comprendendo il plurilinguismo che comprende non solo una comu- 90% delle parole e ne riconosco delle similitudini nità maggioritaria di lingua tedesca, circa il 68%, che vanno al di là degli areali dove sono sviluppate. e una comunità di lingua italiana di circa il 10%, In Italia esiste una legge dello Stato che tutela ma anche una varietà di parlate romanze non ita- le lingue minoritarie. In Italia sono numerosissime:

17 Claudio Beccari ArsTEXnica Nº 13, Aprile 2012 oltre a quelle citate sopra, si va dallo sloveno, al regionale, benché sia parlato da un numero molto tedesco, che nella provincia di Bolzano ha lo status più grande di persone; in secondo luogo perché di lingua ufficiale accanto all’italiano, al francese, mi sono dovuto occupare di problemi di sillabazio- che in Valle d’Aosta ha lo status di lingua uffi- ne per le lingue che usano l’elisione degli articoli ciale accanto all’italiano, alle lingue dei Walser e delle preposizioni articolate quando precedono del Piemonte e della Valle d’Aosta, al catalano una parola che comincia per vocale; infatti per di Alghero, all’albanese arbaresh in molte regioni conoscenza diretta fino a poco tempo fa conoscevo del sud, al grecanico, al croato, e probabilmente solo l’italiano, il francese, il catalano e il roman- ne ho dimenticata qualcuna. In Calabria esiste cio come lingue che usavano questa particolarità persino un’enclave occitana nella zona di Guardia grafica; ora so che questo uso riguarda di fatto Piemontese, la cui lingua prende il nome di gardiol. tutte le lingue romanze tranne il portoghese, lo Come ho detto, però, solo il tedesco e il francese spagnolo/castigliano e il rumeno. In terzo luogo hanno uno status ufficiale. la grafia del romancio non fa uso di consonanti A livello regionale o provinciale tutte le regio- con diacritici e per questo mio primo approccio ni che insistono sull’arco alpino in Italia hanno alle lingue romanze alpine questa caratteristica mi provveduto alla emanazione di leggi che hanno torna molto utile. Infine ho una grande simpatia valorizzato le lingue locali. In Piemonte esistono per la Svizzera e i suoi abitanti di ogni lingua e leggi regionali che forniscono supporto alla conser- parlata, e ammiro questa loro capacità di convive- vazione delle lingue locali e in particolare la Giunta re malgrado le differenze linguistiche che riescono Regionale ha avanzato una petizione all’unesco a superare, perché quando ci si vuol capire, ci si per il riconoscimento dell’occitano come patrimo- capisce con la buona volontà; nonostante le diffe- nio culturale dell’umanità. In Tentino – Alto Adige renze hanno un senso della cittadinanza e dello esistono disposizioni delle due provincie autonome Stato dal quale noi abbiamo molto da imparare. per il supporto al ladino della Val Gardena (Bz) Li ammiro perché nella loro Confederazione hanno e delle Val di Non e Val di Fassa (Tn); in Friuli – realizzato l’Unità nella diversità, che sarebbe il Venezia Giulia esiste sia una legge regionale, sia motto dell’Unione Europea, ma che noi cittadini quella della provincia di Udine per il sostegno al dell’Unione non abbiamo ancora sentito come no- friulano. Della Svizzera ho già detto e il romancio stro. Per questi motivi sentimentali, ho quindi dato ufficiale (rumantsch grischun) è riconosciuto come la preferenza al romancio. lingua federale. Con il romancio mi sono trovato inizialmente In questo articolo mi riferirò al romancio sviz- in difficoltà ad applicare il piccolo strumento di zero (chiamato ladino in alcuni dei sotto areali correzione per superare i problemi dell’elisione vo- A dei Grigioni) e al friulano (chiamato anche ladino calica quando ho scoperto che LTEX ancora non orientale); questa scelta riduttiva dipende dal fatto è in grado di gestire il romancio; perciò mi sono che solo il rumantsch grischun e il furlan hanno dovuto creare l’intera struttura per la gestione di per legge una grafia ufficiale e riconosciuta dalle questa lingua. autorità locali; ma ricordiamo che, a parte la grafia di queste lingue, i parlanti possono comprendersi 2 Fonemi e grafemi del romancio reciprocamente con maggiore o minore facilità. Il romancio si scrive con l’alfabeto latino e l’uso Le differenze di grafia sono sostanziali; il ruman- degli accenti grave e acuto su alcune vocali. L’insie- tsch ha molti suoni rappresentati mediante trigrafi me di fonemi e grafemi è mostrato nella tabella 1, o tetragrafi imprestati dal tedesco, come si vede con i fonemi rappresentati mediante i caratteri ipa anche nel nome stesso della lingua dove compaiono (International Phonetic Alphabet)1. “tsch” e “sch” con il medesimo valore fonetico che Come si vede la grafia del romancio non è stretta- hanno in tedesco. Il furlan invece ha una grafia più mente fonetica, me le differenze rispetto alla grafia simile a quella della lingua italiana, sia pure con puramente fonetica sono molto simili a quelle del- l’uso della ‘ç’ e di alcuni digrafi, che non compaiono l’italiano e riguardano principalmente la pronuncia in italiano come “cj” e “gj”, oltre all’uso diffusis- della ‘c’ e della ‘g’ diversa a seconda che siano se- simo dell’accento circonflesso per distinguere le guite dalle vocali ‘e’ e ‘i’ oppure dalle altre vocali. vocali lunghe che in furlan hanno una rilevanza semantica. 1. Con pdflatex i fonemi ipa sono accessibili mediante il Riduco ulteriormente il campo di azione: mi oc- pacchetto tipa,(Fukui, 2004) fornito di una discreta docu- cuperò solamente del rapporto fra il romancio e mentazione; sfortunatamente questi caratteri, disegnati in LAT X, ma mi riprometto di affrontare questa te- accordo con la famiglia dei font , possono E essere usati solo con questi font e non sono usabili con il matica anche per altre lingue alpine. Perché questa font Latin Modern di questo articolo. Non è un problema scelta riduttiva? eseguire gli adattamenti necessari, ma certamente è una Per alcuni motivi, alcuni validi, altri molto meno: cosa che non mi sarei aspettato. Con X LE ATEX e LuaLATEX, che usano i caratteri OpenType, i grafemi sono tutti diret- in primo luogo perché il romancio è una lingua na- tamente accessibili, sempre che il font di testo scelto come zionale, mentre il friulano ancora ha rilevanza solo “main font” ne sia dotato.

18 ArsTEXnica Nº 13, Aprile 2012 LATEX e le lingue romanze alpine

Tabella 1: Corrispondenza fra fonemi e grafemi 3.1 La divisione in sillabe In primo luogo il file di formato per ogni mark-up Fonemi IPA Grafemi deve contenere le regole di sillabazione per ogni a, A, a:, @ a,à lingua da gestire. I file di formato sono file creati e, e:, E, E: e, è, é apposta su ogni macchina al momento dell’instal- i, i: i, ì lazione del sistema TEX, oppure ricreati dall’am- O, O: o, ò ministratore della macchina, che contengono tutto o, o:, u, u: u il mark-up, le configurazioni, le regole di sillabazio- aI ai ne delle varie lingue, e molto altro, direttamente aU au tradotti nel formato interno di ciascun motore di i@ ie composizione, in modo che il grosso delle funzioni jeU ieu che servono per comporre con i programmi del wa, wa:, u:A ua sistema TEX siano già immediatamente utilizzabili, k c, q senza bisogno di tradurle daccapo ogni volta che kw qu si lancia uno di questi programmi. tS, c, ch, tg Le regole di sillabazione sono costituite da fram- ttS tsch menti di parole, chiamati pattern, che contengono X ch una sola lettera, due lettere, tre lettere, eccetera, g, dZ g, gh dove a sinistra e a destra di ogni lettera è segna- L gl, gli ta una cifra che indica con il valore pari che la ñ gn cesura in quella posizione è vietata, mentre con h h il valore dispari è permessa; ogni cifra passa la s s, ss sua informazione specifica mediante il suo valore, ts z quindi 0 indica una blanda proibizione di dividere z s mentre 1 indica un blando consenso alla divisione; S s, sch i corrispondenti valori 8 e 9 indicano la massima Z s, sch proibizione o il massimo consenso a dividere. Se in StS stg una parola divisa in pattern se ne trovano alcuni j i, j che contengono alcune lettere nella stessa sequenza b b e contengono cifre diverse, prevale il valore della d d cifra più alta: per esempio, prendiamo il caso della f f ‘s’ pura e impura in italiano che non può mai essere l l divisa da quanto segue a meno che non si tratti m m di un’altra ‘s’ oppure che sia la seconda di due ‘s’ n n seguita da un’altra consonante (per esempio mass- p p mediologo); ecco allora che ci sarà un pattern ‘1m’ r r che dice che si può dividere prima della ‘m’, e un v v altro pattern ‘1s2’ che dice si può dividere prima della ‘s’ ma non dopo; poi c’è ‘2s3s’ per consentire la divisione della doppia ‘s’, ma c’è anche ‘s4s3m’ per dividere correttamente questa parola italiana Anche il suono della ‘c’ palatale viene rappresenta- composta con una radice inglese. Nel nesso ‘ssm’ to in modo diverso a seconda che sia all’inizio, al i pattern di una lettera consentirebbero la cesura centro o alla fine della parola. Ma tutto sommato solo prima della prima ‘s’ ma non prima della ‘m’, le differenze rispetto all’italiano non sono moltissi- perché il pattern della ‘s’ vieta di dividere dopo la me; molte dipendono dal fatto che le terminazioni ‘s’ stessa; i pattern con due lettere consentirebbe- consonantiche delle parole sono molto frequenti. ro la cesura solo fra le due ‘s’, mentre il pattern con tre lettere vieta la cesura fra le due ‘s’ ma Pertanto questa grafia può dare qualche proble- la consente fra la ‘s’ e la ‘m’; in definitiva, met- mino per la sillabazione (vedi più avanti), ma non tendo assieme i vari pattern i codici numerici di dà nessun problema per scrivere un testo con una sillabazione corrisponderebbero a 2s4s3m e questa tastiera svizzera o italiana. è la regola finale che consente la cesura solo fra la seconda ‘s’ e la ‘m’.

A Questo è il meccanismo, ma è facile immagina- 3 Come LTEX gestisce le lingue re che per dividere in sillabe una intera lingua ci vogliano moltissimi pattern; per l’italiano ne oc- LATEX, come anche gli altri mark-up del sistema corrono circa 330 e virtualmente non producono TEX, da X LE ATEX, a ConTEXt a LuaTEX, gestisce mai errori di sillabazione; per l’inglese americano le lingue in due modi distinti. ne occorrono un po’ meno di 5000 ma circa il 10%

19 Claudio Beccari ArsTEXnica Nº 13, Aprile 2012 delle cesure di tutte le parole americane sarebbe- tosto ampio, ma nemmeno con le lingue scandinave ro divise in modo scorretto2 (parole di Liang e o germaniche o slave; non parliamo delle lingue Knuth); per il tedesco ne occorrono un numero che si compongono con alfabeti diversi da quello enorme che supera le 10 000 unità. Perché LATEX latino. possa fare il suo lavoro per bene con questi grandi Oggigiorno le distribuzioni ridotte del sistema numeri di pattern è necessario che i pattern stessi TEX spesso fanno disperare i principianti perché siano memorizzati nel file di formato in strutture non riescono a ottenere le cesure in fin di riga in dati molto rapide da scorrere per la loro ricerca modo corretto anche se hanno caricato babel con con i rispettivi valori numerici; per questo motivo l’opzione di lingua giusta. Solo con le distribuzio- essi devono essere predigeriti una volta per tutti ni complete si hanno le cesure giuste per tutte da una versione “vergine” del motore di compo- le lingue che il sistema riesce a gestire; in caso sizione (oggi quasi sempre pdftex, oppure xetex o contrario bisogna essere capaci di ricreare i file di ) per assemblarli in strutture chiamate hash formato con i pattern delle lingue che interessa perché LATEX le possa analizzare con la massima usare; questa è una operazione non difficile, ma rapidità. Assemblati gli hash di ogni lingua, il pro- delicata, e richiede di procedere in modi diversi gramma associa loro un numero univoco da legare a seconda della distribuzione del sistema TEX di al nome della lingua che verrà usato da babel o da cui si dispone, a seconda che si vogliano creare i polyglossia per selezionare le regole giuste per ogni formati per il motore pdftex oppure per xetex op- lingua. pure per luatex; spesso le distribuzioni dispongono di opportuni programmi di configurazione con i 3.2 La lingua nella tipografia quali l’operazione diventa più semplice; tuttavia In secondo luogo LATEX deve provvedere a scrivere queste operazioni esulano dall’argomento di questo le parole fisse nella lingua giusta, deve scegliere articolo. l’hash giusto per la lingua selezionata, deve rea- lizzare le strutture tipografiche particolari di ogni 4 File di descrizione della lingua e lingua: un semplice esempio: in italiano si possono file di pattern usare le virgolette alte o quelle uncinate, ma non deve essere lasciato nessuno spazio fra le virgolette La funzione descrittiva della lingua esposta nella e quanto esse racchiudono: “parola” o «parola»; in sezione precedente è svolta da (generalmente un francese si usano solo le virgolette uncinate con solo) file con estensione .ldf. Invece i pattern pos- uno spazio fra ognuna di esse e il loro contenuto: sono richiedere diversi file, diversi perché devono « mot »; in tedesco si usano sia quelle a forma di essere usati solo con font aventi codifiche del ti- piccole virgole diritte alte o basse, ma quelle di po T1, oppure con codifiche UNICODE; c’è modo apertura sono al piede, non sono alzate: „Wort”, di costruire file che soddisfino entrambe le esigen- oppure quelle uncinate a rovescio, rispetto a quello ze, ma la predisposizione dei pattern è piuttosto che si fa in Italia, e senza spazio: »Wort«. complessa. Inoltre babel e polyglossia sono in grado di distin- 4.1 Il file di descrizione della lingua guere alcune varietà ortografiche, come per esempio in tedesco gennaio si chiama Januar, mentre in I file .ldf per babel hanno il nome formato con austriaco si chiama Jänner. quello della lingua e con l’estensione indicata. I file Questi sono pochi esempi, ma ovviamente le per polyglossia hanno il nome formato agglutinando tradizioni tipografiche nazionali sono molto diverse il nome della lingua con il prefisso gloss-; il nome anche fra nazioni che usano la stessa lingua. I della lingua è solitamente il nome in inglese e in pacchetti babel e polyglossia tengono conto di tutte lettere minuscole; per il romancio avremo perciò i queste varianti e della selezione delle lingue. file romansh.ldf e gloss-romansh.ldf. Un punto importante: i pattern non sono caricati La funzione del file .ldf nei due casi è sostan- da babel o da polyglossia; questo pacchetto sceglie zialmente la stessa, ma mentre con babel la lingua solo fra gli hash già presenti nel file di formato e se è una opzione per il pacchetto, con polyglossia que- non ne trova nessuno associato alla lingua specifica, sto è un file di estensione autonomo che permette usa la sillabazione americana che, evidentemente, di definire alcuni comandi con i quali precisare le non ha nulla a che vedere con la sillabazione delle singole lingue da usare nel documento specifican- lingue romanze, tanto per citarne un gruppo piut- done mediante opzioni anche alcune particolarità che sono disponibili grazie all’uso dei font Open- 2. Le regole di sillabazione dell’inglese americano tengono Type. Non scenderò in questi dettagli; mi limiterò conto dell’accento tonico delle parole: il nome rècord e il verbo to recòrd hanno la stessa ortografia ma diversi accenti a descrivere il file romansh.ldf che contiene le de- tonici (che in inglese non si scrivono); a causa di questo finizioni importanti e assolutamente necessarie in fatto le divisioni sillabiche sono rispettivamente rec-ord e ogni file di questo genere. re-cord;LATEX conosce l’ortografia, ma non la pronuncia quindi se divide correttamente una delle due parole sbaglia 1 \LdfInit{romansh}{captionsromansh}% l’altra. In inglese le parole omografe ma non omofone sono 2 \ifx\l@romansh\@undefined moltissime, quindi LATEX si trova in grande difficoltà. 3 \@nopatterns{romansh}%

20 ArsTEXnica Nº 13, Aprile 2012 LATEX e le lingue romanze alpine

4 \adddialect\l@romansh\l@italian\fi lievissimo perfezionamento. 5 \addto\captionsromansh{% Le successive righe dalla 5 alla 27 definiscono 6 \def\prefacename{Prefaziun}% tutte le parole fisse che compaiono nei titolini o 7 \def\refname{Bibliografia}% 8 \def\abstractname{Recapitulaziun}% in certi ambienti; ho preso questi nomi dal voca- 9 \def\bibname{Index bibliografic}% bolario tedesco–romancio, messo a disposizione on 10 \def\chaptername{Chapitel}% line dalla Lia Rumantscha (la Lega Romancia, una 11 \def\appendixname{Appendix}% istituzione grigionese per la promozione del ruman- 12 \def\contentsname{Tavla dal cuntegn}% tsch grischun); in parte ho preso queste traduzioni 13 \def\listfigurename{Tavla da las figuras}% 14 \def\listtablename{Tavla da las tabellas}% da libri in romancio che ho trovato in rete. 15 \def\indexname{Register da materias}% La data in romancio è definita nelle righe da 28 a 16 \def\figurename{Figura}% 34; come si vede ci vuole l’articolo plurale prima dei 17 \def\tablename{Tabella}% numeri dei giorni superiori a 1, mentre per il primo 18 \def\partname{Part}% del mese è necessario indicare l’ordinale secondo 19 \def\enclname{Agiunta(s)}% 20 \def\ccname{Copiaa}% la tradizione tedesca, cioè con la cifra seguita dal 21 \def\headtoname{A}% punto ma senza articolo (non lo si scrive ma viene 22 \def\pagename{pagina}% detto a voce quando si parla: l’emprim da schaner 23 \def\seename{vesair}% 2012 ). 24 \def\alsoname{vesair era}% Le righe da 35 a 44 impostano alcuni parame- 25 \def\proofname{Demonstraziun}% 26 \def\glossaryname{Glossari}% tri per la sillabazione; la sillaba iniziale e quella 27 }% finale non devono contenere meno di due caratteri; 28 \def\dateromansh{% siccome moltissime parole romance terminano con 29 \def\today{\ifcase\day\or 1.\else gruppi di consonanti, tocca ai pattern provvedere 30 ils~\number\day\fi~da~\ifcase\month\or a che l’ultima sillaba contenga almeno una vocale. 31 schaner\or favrer\or mars\or avrigl\or matg\or 32 zercladur\or fanadur\or avust\or settember\or Inoltre sono impostate le penalità per le righe 33 october\or november\or december\fi\space vedove e le righe orfane; il valore 3000 è abbastanza 34 \number\year}}% alto ma non infinito, per cui le righe orfane e vedove 35 \providehyphenmins{\CurrentOption}{\tw@\tw@} potranno essere presenti ma pdflatex cercherà di 36 \addto\extrasromansh{% evitarle con sufficiente determinazione. Il valore 37 \babel@savevariable\clubpenalty 38 \babel@savevariable\widowpenalty enorme assegnato a \finalhyphendemerits serve 39 \babel@savevariable\@clubpenalty per evitare che la penultima riga di un capoverso 40 \clubpenalty3000\widowpenalty3000% subisca la cesura in fin di riga; in questo modo 41 \@clubpenalty\clubpenalty}% l’ultima riga di un capoverso non comincia (quasi) 42 \addto\extrasromansh{% mai con una frazione di parola. 43 \babel@savevariable\finalhyphendemerits 44 \finalhyphendemerits50000000}% Infine le righe da 45 a 50 impostano e disimpo- 45 \addto\extrasromansh{% stano la condizione per la quale l’apostrofo possa 46 \lccode‘’=‘’ }% essere considerato come parte di una parola in ro- 47 \addto\noextrasromansh{% mancio e non lo sia più quando si cambia lingua. 48 \lccode‘’=0 }% 49 \ldf@finish{romansh}% Le ultime due righe completano le impostazioni 50 \endinput per il romancio e finiscono il file; dopo \endinput potrebbe esserci scritta qualunque cosa, ma que- Credo che siano opportuni alcuni commenti. In- sta parte del file non verrebbe nemmeno letta dal nanzi tutto la prima linea di codice serve per motore di composizione. l’inizializzazione, ma fra le altre cose definisce \captionsromansh che serve a babel tra l’altro 4.2 I file per la sillabazione per controllare se il file sia già stato caricato. I file per generare gli hash di sillabazione so- Le righe da 2 a 4 verificano se esista un hash no tre: loadhyph-rm.tex, hyph-quote-rm.tex e collegato alla lingua romancia; se un tale hash non hyph-rm.tex; rm è la sigla del romancio secondo esistesse, sarebbe necessario comunque dare un le norme iso; anche gli altri file destinati allo stes- significato al comando \l@romansh associandolo so scopo per le altre lingue hanno i tre file con i all’hash di un’altra lingua come se ne fosse una nomi strutturati nello stesso modo, salvo che rm è varietà. Io ho preferito associarlo all’hash dell’ita- sostituito da it per i file destinati all’italiano, de liano, perché sulla mia macchina lavoro con una per i file destinati al tedesco, eccetera3. distribuzione completa del sistema TEX; se questo file fosse usato in una distribuzione di base, non 3. Ci sono alcune eccezioni, ma in sostanza questa è la convenzione generale per dare un nome ai file dei pattern. è detto che l’hash collegato all’italiano sia stato Invece in greco, per esempio, esiste loadhyph-grc.tex per generato, e quindi una associazione come quella caricare i pattern per il greco classico validi se si usano i font che ho fatto io potrebbe dare origine ad errori; codificati con la codifica di default LGR; mentre esiste un per evitarli sarebbe necessario eseguire un altro altro file che carica i corrispondenti pattern se si usano i font codificati in “BETA code”; le due codifiche si distinguono test; data la provvisorietà di questa descrizione perché nella prima i segni diacritici sono premessi alle lettere della lingua romancia ho preferito omettere questo a cui si riferiscono, mentre con la seconda i segni diacritici

21 Claudio Beccari ArsTEXnica Nº 13, Aprile 2012

Il primo file carica gli altri due quando si devono • Ogni consonante semplice o digrafo o trigrafo creare o ricreare i file di formato, al momento di o tetragrafo seguito da una vocale o da un generare gli hash per la sillabazione, non durante dittongo o un trittongo fa sillaba con la vocale la composizione di un particolare testo. Il secondo che segue. Analogamente non si dividono altri contiene le impostazioni per la codifica dell’apo- gruppi che formano “suoni semplici” (di fatto strofo (ma potrebbe contenere anche altre macro sono quasi tutti digrafi, trigrafi e tetra grafi): di utilità per scrivere i pattern); infine il terzo file ch, tg, gl, gn, qu, sch, stg, tsch e, nei toponimi, contiene i pattern veri e propri. s-ch, dsch. Ho provato innanzi tutto a non generare il for- • Le consonanti doppie si dividono fra le due mato con i pattern per il romancio ed ho usato sillabe adiacenti. quelli italiani al loro posto come indicato nel para- grafo precedente. Mediante un mio programmino • Due consonanti diverse si dividono fra le sil- per scrivere tutte le parole di un testo spezzate in labe adiacenti se la coppia di consonanti non sillabe, ho verificato come funzionassero i pattern può trovarsi all’inizio di una parola romancia; italiani per il romancio; evidentemente c’erano de- più precisamente, in presenza di un gruppo gli errori ma erano relativamente pochi; quasi tutti di due o più consonanti la divisione va fat- riguardavano le terminazioni consonantiche singo- ta lasciando a destra della cesura il massimo lari e plurali del romancio, visto che in italiano numero di consonanti che possano trovarsi normalmente tutte le parole terminano con una all’inizio di una parola. vocale e quindi l’italiano, in teoria, non dovrebbe prevedere pattern per parole terminanti in conso- • La regola precedente implica quindi che a de- nante4. Questi erano errori evidenti perché l’ultima stra della cesura si può cominciare con bl, cl, “sillaba” trovata dal motore di composizione, non fl, pl, vl, br, cr, dr, fr, gr, pr, tr, vr, ma non era una sillaba secondo la grammatica, in quanto si può lasciare a destra della cesura dl, sl, tl, non conteneva nemmeno una vocale; anche gli al- sl, sr; non dispongo di un pledari (dizionario) tri pochi errori erano tali da isolare una “sillaba” romancio, quindi non so se esistano delle pa- priva di vocali. role che cominciano per sl, sr, che invece in Sono inoltre riuscito a trovare in rete la Gram- italiano esistono; quindi i relativi pattern de- matica per l’instrucziun dal rumantsch grischun, vono essere aggiustati a seconda della lingua; molto completa e ben fatta e lì ho trovato le regole per esempio pasler si divide fra la ‘s’ e la ‘l’. per la divisione grammaticale in sillabe; sono molto In tutti gli altri casi, anche se una consonan- simili a quelle per l’italiano finché sono enunciate te è seguita da una liquida, l, r, la divisione a parole, ma diventano specifiche per il romancio avviene fra le due consonanti, al contrario del- in molti dettagli che hanno richiesto molte modifi- l’italiano; per esempio il nome della Svizzera, che e correzioni rispetto ai pattern italiani, come Svizra si divide fra la ‘z’ e la ‘r’. descrivo più sotto. Le regole sono le seguenti: • La ‘s’ seguita da una delle consonanti o digrafi c, d, p, t, tg non consente la cesura dopo la • Ogni sillaba contiene una vocale o un dittongo ‘s’. o un trittongo; in romancio le vocali posso- no essere accentate; i dittonghi e i trittonghi • I prefissi si dividono etimologicamente al con- sono solamente ai, au, ie, ia, iu, ui, uo, ieu, trario dell’italiano dove la sillabazione foneti- uai. Con lo stesso concetto dei pattern per ca è sempre lecita, anche se non è vietata la l’italiano ho scritto i pattern per il roman- sillabazione etimologica; bisogna però tenere cio evitando di esplicitare le vocali, cosicché, presente se dopo la preposizione-prefisso la eventualmente, non vengono divisi alcuni iati, parola che segue comincia con una consonante ma non vengono commessi errori dividendo o con una vocale; nel primo caso la cesura ca- gruppi vocalici dove non è consentito. de fra la preposizione e la parola, mentre nel secondo caso si fa lo stesso solo se la parola sono aggiunti dopo la lettera a cui si riferiscono. Altri pattern greci invece di gr contengono la sigla el. esiste anche isolata. Per esempio il prefisso 4. Questa leggenda metropolitana sopravvive da tempo ex nella parola examinar non viene diviso eti- immemorabile; certo la stragrande maggioranza delle parole mologicamente perché la parola aminar non termina in vocale, questo è vero, ma l’italiano accetta non esiste isolata. Dunque per poter eseguire le di- solo l’elisione ma anche l’apocope che può lasciare le parole monche e quindi anche terminanti in consonante; inoltre visioni etimologiche bisogna avere il dizionario esistono una quantità di termini scientifici e tecnici, sportivi, a disposizione, cosa che LATEX non può fare. architettonici, medici, eccetera che terminano in consonante o perché prestiti assimilati da lingue straniere, o perché • Nello stesso modo occorre eseguire la divisione nati così come voci dotte greche o latine (straniere fino ad etimologica nelle parole composte evitando di un certo punto, almeno quelle latine); esiste certamente dividere le parole componenti; questo LAT X lo almeno una parola italiana che termina con ciascuna delle E 21 consonanti dell’alfabeto latino! E i pattern per l’italiano consente inserendo a mano il comando per la prevedono tutte queste terminazioni consonantiche. cesura facoltativa \-, comando che impedisce

22 ArsTEXnica Nº 13, Aprile 2012 LATEX e le lingue romanze alpine

la divisione negli altri punti della stringa che 5 Conclusione costituisce la parola composta. Conto di inviare i file di gestione del Romancio ai due team che si occupano di sillabazione e di • È consigliato di non dividere gli iati, ma la descrizione delle lingue; un team si occupa di babel divisione è consentita nella divisione di parole e l’altro di polyglossia; con il secondo team credo composte, come extra-ordinari, co-operativa, che non ci sano problemi di sorta; con il primo, eccetera. In questi casi i pattern per il roman- invece, credo che ce ne saranno, perché a me appare cio che ho predisposto prevedono la divisione inattivo: non so se sia solo una impressione mia o al margine della separazione delle due parole se si tratti di un fatto concreto. componenti, ma non ne impediscono la divi- Chiaramente sarebbe desiderabile che il sistema sione. Se necessario, si può intervenire a mano T X sia in grado di gestire il romancio nel giro con \-. E di poche settimane, invece che fra qualche anno; ma bisogna rimettersi alle tempistiche del lavoro • Le necessità tipografiche, non la grammatica, volontario dei membri dei due team. richiedono di non dividere dopo la prima sil- Per me è stato un esercizio molto interessante laba o prima dell’ultima sillaba di una parola e mi ha dato la possibilità di arricchire le mie se questa prima o ultima sillaba è formata da conoscenze linguistiche in campi che non avrei una sola vocale. mai pensato di esplorare; la descrizione in questo articolo, benché il romancio sia solo una curiosità • È vietato andare a capo dopo l’apostrofo, per la maggior parte dei lettori italiani, ha un esattamente come in italiano. valore didattico perché permette di rendersi meglio conto di chi fa che cosa fra i vari elementi che Con queste regole ben esplicitate nella gramma- costituiscono il sistema T X. tica romancia, (Caduff et al., 2009), ho creato i E pattern per il romancio semplicemente prendendo i pattern per l’italiano che già facevano abbastan- Riferimenti bibliografici za bene i loro lavoro all’interno delle parole e ho Braams, J. (2011). Babel, a multilingual package aggiunto i pattern specifici del romancio, correg- for use with LATEX’s standard document clas- gendo eventualmente quelli dell’italiano, quando ses. TUG. Leggibile con texdoc babel nella erano in contrasto con le regole enunciate sopra. I distribuzione TeX Live. pattern totali sono saliti a 378, una cinquantina in più di quelli per l’italiano. Ho rigenerato i file di Caduff, R., Caprez, U. N. e Darms, G. (2009). formato e sulla mia macchina ora posso scrivere in Grammatica per l’instrucziun dal rumantsch romancio senza problemi. grischun. Seminari da rumantsch da l’Unive- Ecco ora un breve testo in romancio tratto dalla sitad da Friburg. Dipartament da lingugatgs suddetta Grammatica5: e litteraturas romanas, Friburg, CH. URL http : / / www . unifr . ch / rheto / documents / En rumantsch n’èn las reglas da comma Gramminstr.pdf.

betg uschè strictas sco p.ex. en tudestg. Charette, F. (2011). Polyglossia: a Babel replace- Sco regla generala vala: nua ch’ins vul far E ment for X LATEX. TUG. Leggibile con texdoc ina pausa en la frasa, mett’ins ina comma. polyglossia nella distribuzione TeX Live. L’at- La comma è en rumantsch per ordinari il tuale versione è affidata alla manutenzione di segn d’ina pitschna pausa e betg il segn Arthur Reutenauer. d’ina disposiziun sintactica sco en tudestg. Las reglas da comma dependan damai pli Fukui, R. (2004). TIPA manual. Graduate School ferm da quai ch’ins vul exprimer. Ellas of Humanities and Sociology, Tokyo Universi- han surtut la funcziun d’inditgar la melo- ty, Tokyo. Leggibile con texdoc tipa nella dia, il ritmus e las pausas ed èn tras quai distribuzione TeX Live. in agid per chapir meglier il text. Tuttina n’è il diever da la comma betg arbitrar; i Liang, F. M. (1983). Word Hy-phen-a-tion by dat er contexts, nua ch’ella è fixa. Com-puter. Tesi di Dottorato, Department of Computer Science, Stanford, CA. URL www.tug. 5. In romancio le regole della virgola non sono così strin- org/docs/liang/liang-thesis.pdf. genti come in tedesco. Come regola generale vale la seguente: dove si vuol fare una pausa nella frase mettiamo una virgola. La virgola in romancio serve per indicare il segno di una piccola pausa e non il segno di una costruzione sintattica . Claudio Beccari come in tedesco. Le regole della virgola dipendono di più Villarbasse da ciò che si vuole esprimere; esse hanno soprattutto la claudio dot beccari at gmail funzione di indicare la melodia, il ritmo e le pause con le quali capire meglio il testo. Tuttavia l’uso della virgola non dot com è arbitrario; ci sono dei contesti dove la virgola è fissa.

23 Scrivere un pacchetto per LATEX3 Il pacchetto kantlipsum

Enrico Gregorio

Sommario 2 I pacchetti lipsum e kantlipsum Qualche anno fa il pacchetto permise di evi- Il pacchetto kantlipsum viene usato come pretesto lipsum per illustrare alcune tecniche di programmazione tare di inventarsi testi fasulli per scrivere esempi o con il linguaggio LAT X3. esaminare pagine complete. Il comando \lipsum E compone sette capoversi di finto latino, il famoso Lorem ipsum dolor sit amet che è in uso fra i ti- Abstract pografi da lungo tempo. Con \lipsum[1-150] si compongono tutti i capoversi che sono a disposizio- The kantlipsum package is used as pretext to il- ne, ma naturalmente è possibile anche sceglierne lustrate some programming techniques with the di meno o uno solo con \lipsum[2] o quello che A si vuole (spesso uso il secondo che è più corto del LTEX3 language. primo). Un difetto di lipsum è che il testo pseudolatino 1 Introduzione non si comporta bene con le regole di sillabazione dell’inglese, producendo spesso divisioni di riga No, LATEX3 non è ancora uscito. Ma è già disponi- imperfette e relative overfull box. bile e in uno stato piuttosto avanzato il livello più Il libro Dive into Python include un programmi- basso, quello della programmazione. Uno dei criteri no scritto in Python che produce capoversi in stile che guidano gli sviluppatori è infatti la divisione kantiano, imitando un programma per Mac OS dei più netta possibile fra i vari livelli: programmazio- tempi andati. Per la precisione, il primo sviluppa- ne, produzione di interfacce con l’utente e livello tore aveva cercato di imitare lo stile della Kritik utente. Alla fine i documenti LATEX3 non saranno der reiner Vernunft, cioè la “Critica della ragion tanto diversi dagli attuali, ma tutti i comandi come pura”, uno dei più famosi trattati di Immanuel \section saranno ridefiniti in termini di struttu- Kant. re del livello intermedio che a loro volta saranno L’idea di usare questo programmino per produr- basate sul livello più basso. re testo fittizio circolava già e ne ho colto l’occasio- L’esperienza di LATEX 2ε permetterà di definire ne per esercitarmi nella nuova sintassi di LATEX3. Il meglio tutti i comandi per gli utenti, evitando primo passo è stato di produrre un po’ di capoversi, le acrobazie che hyperref o altri pacchetti devono per ora sono 164; ne vediamo un esempio: eseguire per intervenire su comandi definiti quando, per esempio, degli ipertesti non si aveva la minima As any dedicated reader can clearly see, idea. the Ideal of practical reason is a represen- Con il livello intermedio completo non saran- tation of, as far as I know, the things in no più necessari pacchetti come titlesec, caption themselves; as I have shown elsewhere, the o geometry, perché le interfacce di accesso ai ti- phenomena should only be used as a canon toli, alle didascalie o alle impostazioni di pagina for our understanding. The paralogisms of saranno molto più maneggevoli di ora. O forse ci practical reason are what first give rise to sarà titlesec3 che avrà un compito più facile, po- the architectonic of practical reason. As will tendosi appoggiare a un’interfaccia notevolmente easily be shown in the next section, reason più semplice da gestire. would thereby be made to contradict, in view of these considerations, the Ideal of practical Il livello più basso, quello della programmazione, reason, yet the manifold depends on the phe- è molto diverso dall’attuale, ma anche molto più nomena. Necessity depends on, when thus ricco: non si deve inventare l’acqua calda ogni volta; treated as the practical employment of the forse a prezzo di scottarsi all’inizio. never-ending regress in the series of empiri- Nel pacchetto che descriveremo viene solo sfio- cal conditions, time. Human reason depends rata la superficie della ricca dotazione di funzioni on our sense perceptions, by means of ana- messe a disposizione da LATEX3. La distribuzio- lytic unity. There can be no doubt that the ne contiene la descrizione commentata di tutte le objects in space and time are what first give funzioni nel file interface3.pdf. rise to human reason.

24 ArsTEXnica Nº 13, Aprile 2012 Il pacchetto kantlipsum

La sintassi è del tutto simile a quella di lipsum. \DeclareOption { par } { • \kant produce i primi sette capoversi; \cs_set:Nn \kgl_star: { \c_space_tl } • \kant[3] produce il capoverso numero 3; \cs_set:Nn \kgl_nostar: • \kant[11-42] produce i capoversi dal numero { \par } 11 al numero 42. } \DeclareOption{ nopar } Se si usa la variante asterisco \kant* (con l’e- { ventuale argomento facoltativo come prima) non \cs_set:Nn \kgl_star: ci saranno interruzioni di capoverso alla fine di { \par } ciascun pezzo. \cs_set:Nn \kgl_nostar: In realtà si può scambiare il significato delle due { \c_space_tl } varianti dando l’opzione nopar al caricamento di } kantlipsum, esattamente come accade in lipsum. Il \DeclareOption{ numbers } nuovo pacchetto ha un’altra opzione, numbers, che { appiccica all’inizio di un capoverso il numero, in \cs_set:Nn \kgl_number:n modo da poter controllare meglio l’effetto: { #1\nobreakspace 2 • Let us suppose that the noumena \textbullet\nobreakspace have nothing to do with necessity, since } knowledge of the Categories is a posteriori. Hume tells us that the transcendental unity } of apperception can not take account of the \cs_new_eq:NN \kgl_number:n \use_none:n discipline of natural reason, by means of an- \ExecuteOptions { par } alytic unity. As is proven in the ontological \ProcessOptions \scan_stop: manuals, it is obvious that the transcenden- tal unity of apperception proves the valid- Già si vede qualcosa di bizzarro. La prima cosa ity of the Antinomies; what we have alone da sapere è che nell’ambiente di programmazione been able to show is that, our understand- di LATEX3 gli spazi sono ignorati, quindi possono ing depends on the Categories. It remains essere usati con generosità senza rischi. Se si desi- a mystery why the Ideal stands in need of dera un vero spazio, al suo posto si scrive ~, come reason. It must not be supposed that our vedremo poi nella sezione sui messaggi. faculties have lying before them, in the case L’altra cosa strana sono i nomi dei comandi. In of the Ideal, the Antinomies; so, the tran- LAT X3 ogni comando dice qualcosa di sé già nel scendental aesthetic is just as necessary as E our experience. By means of the Ideal, our nome. Per esempio, \c_space_tl dice di sé che sense perceptions are by their very nature è una costante e che è di tipo ‘token list’. Non è contradictory. altro che la vecchia conoscenza \space. Non si può usare ~ là perché comunque TEX ignora gli spazi sarebbe il risultato di \kant[2] con quell’opzione. espliciti dopo i nomi di comandi. I comandi propri di kantlipsum contengono tut- 3 Cominciamo con LATEX3 ti il prefisso kgl (per ‘Kant generator lipsum’) che è propriamente il nome del modulo. Per esem- Vediamo la struttura di un pacchetto che usi la pio, \cs_set:Nn fa parte del modulo cs (‘con- A sintassi di LTEX3. L’inizio richiede il caricamento trol sequences’). La convenzione non è seguita in di expl3 e l’annuncio del pacchetto: modo rigorosissimo: le costanti ‘universali’ come \RequirePackage{expl3} \c_space_tl non hanno nome di modulo. Il suf- \GetIdInfo$Id: kantlipsum.dtx fisso finale è diverso: _tl e :Nn. Un suffisso come 0.5 2011-12-05 12:00:00Z Enrico $ il primo è riservato a variabili e costanti; un suf- {Dummy text in Kantian style} fisso che comincia con i due punti è riservato alle \ProvidesExplPackage funzioni. {\ExplFileName}{\ExplFileDate} LATEX3 cerca di distinguere rigorosamente tra {\ExplFileVersion}{\ExplFileDescription} variabili e funzioni; una variabile (o una costante) contiene un dato, una funzione esegue un certo È simile a \ProvidesPackage; il comando compito. Il compito di \cs_set:Nn è di definire \GetIdInfo permette di evitare di dover scrive- un’altra funzione. Il suffisso dice che tipo di ar- re le informazioni su versione, data e così via in gomenti prende la funzione. Nel caso specifico N più posti. indica un argomento di tipo ‘macro’ mentre n in- Le opzioni possono ancora essere dichiarate come dica una lista di token tra graffe (che può essere nel modo tradizionale, è probabile che LATEX3 ne anche, secondo le regole sintattiche di TEX, un solo definisca uno leggermente diverso. token). La riga

25 Enrico Gregorio ArsTEXnica Nº 13, Aprile 2012

\cs_set:Nn \kgl_star: { \c_space_tl } di conflitti. È ancora aperta la questione di quali saranno impiegabili ancora al livello utente; pro- definisce \kgl_star: come una funzione senza ar- babilmente parecchie, se non si vuole che molti gomenti, la cui azione è di inserire uno spazio. In documenti richiedano pesanti interventi per essere A LTEX tradizionale avremmo scritto adattati alla nuova versione. Ma c’è molto tempo \newcommand*{\kgl@star}{\space} per pensarci. Notiamo che in LATEX3 il carattere @ non ha l’u- 4 Messaggi so a cui molti sono abituati; come separatore per indicare comandi del livello più basso si usa La sezione successiva del pacchetto definisce i infatti _. messaggi di errore o di avviso. Una sorpresa si ha con \msg_new:nnn {kantlipsum} \cs_set:Nn \kgl_number:n {how-many} { {The~package~provides~paragraphs~ #1\nobreakspace 1~to~#1.~Values~outside~this~ \textbullet\nobreakspace range~will~be~ignored.} } \msg_new:nnnn {kantlipsum} {already-defined} La funzione \kgl_number:n è quella che produce il {Control~sequence~#1~already~defined.} numero, se viene scelta l’opzione numbers, oppure {The~control~sequence~#1~is~ non fa nulla. La definizione tradizionale sarebbe already~defined,~I’ll~ignore~it} stata A ogni messaggio viene associato un nome; vedre- \newcommand*{\kgl@number}[1]{% mo più avanti come vengono usati. Si noti che gli #1~\textbullet~} spazi vanno indicati con ~ ed eventuali fine riga con \\ (non serve più \MessageBreak); ma i messaggi Un momento! Dov’è indicato il numero di argo- vengono mandati a capo in modo automatico e un menti nella nuova? Lo dice semplicemente il nome \\ serve raramente. della funzione: \kgl_number:n è una funzione che Il primo sarà un messaggio informativo (solo tre prende un argomento e \cs_set:Nn prima di tut- argomenti); il secondo di errore, perché ha i due to esamina il nome della funzione da definire e ne tipici modi di avvisare l’utente: corto e lungo (che imposta la definizione in modo opportuno. si legge premendo h). I messaggi possono leggere I due punti appaiono solo nelle funzioni e ciò che fino a quattro argomenti, in questo caso ciascuno segue è la firma (in inglese signature) della funzione ne ha uno. stessa. Indica il numero e il tipo degli argomenti della funzione: n sta per un normale argomento 5 Dichiarazioni di variabili e costan- tra graffe, N per un unico token simbolico. Alla fine della serie di opzioni c’è la riga ti Una delle raccomandazioni degli sviluppatori è di \cs_new_eq:NN \kgl_number:n \use_none:n dichiarare in anticipo le variabili e le costanti da che sarebbe stata usare in seguito. In questo pacchetto dichiariamo due variabili numeriche e una sequenza: \let\kgl@number\@gobble \int_new:N \l_kgl_start_int La differenza fra le famiglie di funzioni \cs_set e \int_new:N \l_kgl_end_int \cs_new è che quelle del secondo tipo controllano \seq_new:N \g_kgl_pars_seq che il nome della funzione da definire non abbia già \seq_gput_right:Nx \g_kgl_pars_seq un significato; inoltre le funzioni \cs_new agiscono {This~is~the~Kant~lipsum~generator.} globalmente, mentre le \cs_set solo localmente. Come si vede dal suffisso, \cs_new_eq:NN prende Si tratta di due variabili intere (contatori, nel gergo come argomenti due funzioni; eq sta per ‘equiva- usuale) e una sequenza, cioè una lista indicizzabile lent’: la prima è quella da definire, che viene resa di elementi. Le sequenze cominciano da zero, perciò equivalente alla seconda. Propriamente sostituisce la inizializziamo con un elemento fasullo. \global\let, in questo caso non c’è differenza. Dopo il classico \ProcessOptions c’è 6 Comandi per l’utente \scan_stop:, che è la vecchia conoscenza Qui faremo tesoro delle funzionalità di xparse \relax, cioè una funzione non espandibile che che permette facilmente di definire comandi con non fa nulla. Segue \RequirePackage{xparse}, varianti e con argomenti facoltativi. niente di strano. Un’altra caratteristica di LATEX3 è che rinomina \NewDocumentCommand{\kant} tutte le primitive di TEX, minimizzando il rischio {s >{\SplitArgument{1}{-}}O{1-7} }

26 ArsTEXnica Nº 13, Aprile 2012 Il pacchetto kantlipsum

{ \group_begin: e \group_end: sono le vecchie \group_begin: conoscenze \begingroup e \endgroup. \IfBooleanTF{#1} Il pacchetto definisce anche \kantdef; lo { lasciamo da parte, per ora. \cs_set_eq:NN \kgl_par: \kgl_star: } 7 Funzioni interne { \cs_set_eq:NN \kgl_par: \kgl_nostar: Definiamo ora le funzioni che servono per la mec- } canica delle macro a livello utente. La prima è \kgl_process:nn #2 \kgl_process:nn. \kgl_print: \cs_new:Nn \kgl_process:nn \group_end: { } \int_set:Nn \l_kgl_start_int {#1} \IfNoValueTF{#2} Con s dichiariamo che il comando \kant ha una { \int_set:Nn \l_kgl_end_int {#1} } variante asterisco e con O che ha un argomento facoltativo. La presenza dell’asterisco rende vero { \int_set:Nn \l_kgl_end_int {#2} } } il condizionale \IfBooleanTF{#1}. Lo scopo è di definire \kgl_par: equivalente a \kgl_star: op- Il suo scopo è di esaminare ciò che c’era nell’argo- pure a \kgl_nostar:. Questi ultimi riceveranno mento facoltativo dato a \kant che sarà della for- una definizione più avanti. ma {42}{\NoValue} o {11}{42};LATEX3 si trova L’argomento opzionale ha, come valore di de- davanti uno fra fault, 1-7. Nel caso non si voglia dare un valore di default, si può indicare l’argomento con o e, in \kpg_process:nn {42}{\NoValue} tal caso, l’assenza dell’argomento opzionale rende \kpg_process:nn {11}{42} vero il condizionale \IfNoValueTF{#2} (qui, per- In ogni caso la variabile (intera) ché l’argomento è il secondo nella lista). In genere \l_kgl_start_int viene impostata al valo- un argomento opzionale viene indicato nel secondo re dato dal primo argomento. La variabile argomento di \NewDocumentCommand con la sola o \l_kgl_start_int viene impostata allo stesso o con O{...}; in questo caso, però, diciamo anche valore nel primo caso, al secondo argomento a LAT X3 di spezzare in corrispondenza del trattino E altrimenti. (se c’è) quello che viene passato come argomento: Sistemate le variabili, vediamo com’è definita questa è la funzione di >{\SplitArgument{1}{-}} la funzione \kgl_print:. Prima definiamo una che indica come va massaggiato l’argomento che funzione ausiliaria segue. Nei tre casi possibili, ciò che verrà visto realmente come #2 è: \cs_new:Nn \kgl_use:n { • se l’argomento facoltativo non è {1}{7} \kgl_number:n {#1} espresso e quindi LAT X usa quello di default; E \seq_item:Nn \g_kgl_pars_seq {#1} • {42}{\NoValue} se si dà come argomento } facoltativo [42] (o un altro numero qualsiasi; Essenzialmente è ‘stampa il capoverso kantiano con il numero dato come argomento’. La funzione • {11}{42} se si dà \kant[11-42]. \kgl_number:n stampa il numero (se è stata data Lo stesso accade con \kant*, naturalmente. Il l’opzione numbers) oppure ingoia l’argomento e primo argomento di \SplitArgument dice quanti poi accede all’elemento con il dato numero della gruppi di parentesi graffe vogliamo (uno in più sequenza contenente i capoversi kantiani. di quanto scritto) e il secondo qual è il token che \cs_new:Nn \kgl_print: usiamo come separatore; nel primo gruppo va la { parte dell’argomento fino al primo trattino, nel se- \prg_stepwise_function:nnnN condo tutto il resto. Se non c’è trattino, il secondo {\l_kgl_start_int} gruppo conterrà \NoValue. {1} Nel primo caso le variabili intere {\l_kgl_end_int} \l_kgl_start_int e \l_kgl_end_int ven- \kgl_use:n gono impostate a 1 e 7; nel secondo caso viene } chiamata la funzione \kgl_process:nn che ha due argomenti. Al termine viene eseguita la La funzione fa avviare un ciclo. Il primo argomen- funzione \kgl_print:. Tutto ciò in un gruppo to di \prg_stepwise_function:nnnN è il valore per mantenere locali i significati assegnati alle iniziale, il secondo è il passo, il terzo è il valore funzioni e i valori alle variabili. Naturalmente finale, il quarto la funzione da eseguire, che deve

27 Enrico Gregorio ArsTEXnica Nº 13, Aprile 2012 prendere un argomento. Per esempio, se i valori have shown elsewhere, the phenomena fossero 2 e 5, il risultato sarebbe equivalente alla ... successione di comandi Human reason depends on our sense perceptions, by means of analytic unity. \kgl_use:n {2} \kgl_use:n {3} There can be no doubt that the objects \kgl_use:n {4} \kgl_use:n {5} in space and time are what first give e quindi verrebbero stampati i capoversi kantiani rise to human reason.} dal 2 al 5. Naturalmente \kgl_print:n non è strettamen- haltri 163 capoversi similii te necessaria: il codice avrebbe potuto essere in- serito direttamente nella definizione di \kant. Ma \group_end: gli sviluppatori di LATEX3 insistono nel chiedere ai programmatori di spezzare il codice in moduli \msg_info:nnx{kantlipsum}{how-many} più piccoli e facilmente controllabili. I calcolato- { ri moderni non sono molto rallentati da queste \int_eval:n espansioni in più e la chiarezza è certamente un {\seq_length:N \g_kgl_pars_seq - 1} traguardo importante. } Ultima funzione: quella che definisce i capoversi. Apriamo un gruppo e, per comodità, facciamo tor- \cs_new:Nn \kgl_newpara:n nare lo spazio al suo significato usuale, per non { dover scrivere ~ al suo posto nel testo. L’effetto di \seq_gput_right:Nn \g_kgl_pars_seq ciascuna delle funzioni \kgl_newpara:n è di ag- { #1 \kgl_par: } giungere successivamente i capoversi alla sequenza } \g_kgl_pars_seq. L’elemento numero 1 sarà Il capoverso, dato come argomento, viene inse- As any dedicated reader can clearly see, rito come nuovo elemento della sequenza globa- ... le che li conterrà tutti, con l’aggiunta alla fi- give rise to human reason.\kgl_par: ne di \kgl_par:. È facilissimo per la funzio- L’azione di \kgl_par: è di emettere un comando ne \kgl_use:n accedere ai vari elementi della \par se si è con l’opzione par, uno spazio altrimenti sequenza. (ma la logica è rovescia se il tutto è prodotto con Questo non sarebbe stato possibile in LATEX 2ε, \kant*). dove il concetto di sequenza non è presente. Non Alla fine emettiamo un messaggio informativo volendo definirsi tutta l’infrastruttura, si sarebbe (solo nel file log): \msg_info:nnx prende come potuto ovviare definendo, come fa lipsum, tante argomenti i due indicativi del messaggio definito macro contenenti i vari capoversi. Per automatizza- all’inizio e un terzo argomento (espanso) che verrà re la faccenda si sarebbe potuto usare un contatore inserito al posto di #1 nel messaggio. Dobbiamo e definire le macro con nomi come \kgl@1, \kgl@2 fare un piccolo calcolo perché la lunghezza della e così via. Vediamo come: sequenza comprende anche l’elemento 0. \@tempcnta=\z@ \def\kgl@newpara#1{% 9 Il comando mancante \advance\@tempcnta\@ne C’è un altro comando, definito più o meno solo \expandafter\def\csname kgl@% per fare un esempio. Un utente del forum chiese \number\@tempcnta\endcsname{% come poter definire una macro che si espandesse a #1\kgl@par}% uno dei capoversi di lipsum. Perciò in kantlipsum è } prevista la funzione. Illeggibile. \NewDocumentCommand{\kantdef}{mm} { 8 I capoversi \group_begin: Il codice prosegue con la definizione delle frasi \cs_set_eq:NN \kgl_number:n \use_none:n kantiane. \cs_set_eq:NN \kgl_par: \prg_do_nothing: \cs_if_exist:NTF #1 \group_begin: { \char_set_catcode_space:n {‘\ } \msg_error:nnx { kantlipsum } \kgl_newpara:n {As any dedicated reader { already-defined } can clearly see, the Ideal of practical { \token_to_str:N #1 } reason is a representation of, as far as } I know, the things in themselves; as I {

28 ArsTEXnica Nº 13, Aprile 2012 Il pacchetto kantlipsum

\cs_new:Npx #1 { \kgl_use:n {#2} } quindi non ha il suffisso che dice quanti argo- } menti prende. Dunque dobbiamo specificarlo co- \group_end: me tutto ciò che va da \pippo alla graffa aperta: } niente, quindi non ci sono argomenti. Ricordiamo Usiamo ancora le funzionalità di xparse, definendo che \kgl_use:n {1} contiene \kgl_number:n e il comando con due argomenti obbligatori, indicati \kgl_par:, ma siccome ne abbiamo neutralizzato con mm (‘mandatory’). Si apre un gruppo e lì si le azioni, queste funzioni spariranno e resterà solo ridefiniscono \kgl_number:n come \use_none:n il testo. (cioè ingoiare l’argomento) e \kgl_par:n come Di fatto \cs_new:Npx è semplicemente \prg_do_nothing:, sinonimo di ‘non fare nul- \long\xdef con in più il controllo che il comando la’, ma espandibile (è il vecchio \@empty). A dato come primo argomento non sia definito. questo punto entra in azione un condizionale: Una piccola annotazione: abbiamo dovuto co- \cs_if_exist:NTF controlla se il token dato co- struirci il messaggio di errore perché ancora non me primo argomento è definito e se lo è esegue ci sono tutte le interfacce utente e se usassimo il secondo argomento, altrimenti il terzo. Perciò, semplicemente \cs_new:Npx avremmo un errore se dicessimo \kantdef{\kant}{1}, ovviamente sa- ma il comando sarebbe ridefinito comunque. remmo nel ramo ‘vero’ e si avrebbe il messaggio di errore che il comando è già definito e il secon- do argomento sarebbe ignorato. Se invece diciamo . Enrico Gregorio \kantdef{\pippo}{1} (e supponiamo che \pippo Dipartimento di Informatica non sia definito), verrà eseguito Università di Verona Enrico dot Gregorio at univr \cs_new:Npx \pippo { \kgl_use:n {1} } dot it Qui usiamo un tipo ancora diverso di \cs_new. Infatti \pippo è un comando a livello utente e

29 Font e TEX

TUG∗

Per principio TEX può usare qualunque font test*.tex) per ulteriori esempi di output e uso. di cui abbia le metriche (larghezza dei caratteri, In breve: crenatura. . . ) e le forme (al momento, in genere PostScript Type 1, TrueType oppure OpenType). \usepackage{mathptmx} Un paio1 di articoli notevoli sui concetti basilari % times roman, including math % (where possible) dei font e dell’uso in LATEX: \usepackage{mathpazo} • Essential NFSS, di Sebastian Rahtz; % palatino, including math • Font selection in LATEX, di Walter Schmidt; % (where possible) • LATEX 2ε font selection reference, del LATEX \usepackage{helvet} % team. I font TEX Gyre realizzati da GUST Typefoundry Per informazioni aggiuntive di ogni tipo: estendono i 35 font PostScript di base a molti altri caratteri, analogamente alle estensioni del Latin • la nostra breve pagina di installazione dei font; Modern al Computer Modern. • la pagina di sezione dei font del TEX Web Resources; Saggi di font • domande relative ai font nelle TEX FAQ; • Free Font Resources for Free and Open Source I font seguenti coprono la composizione di un’am- Operating Systems di Stephen Hartke; pia varietà di lingue e alfabeti, così come della • pagina dei font di Nelson Beebe; maggior parte della matematica. Sono disponibili • articoli sui font in TUGboat. documenti con saggi di font che mostrano come appaiono: La questione delle licenze dei font è tuttora ogget- to di interminabili dibattiti e fonte di controversie. • A Survey of Free Math Fonts di Stephan Hart- I font liberamente disponibili elencati oltre sono ke mostra la maggior parte delle famiglie libere rilasciati sotto una certa varietà di licenze; alcune per testo e matematica disponibili all’uso con licenze comunemente usate per i font sono elencate TEX; separatamente. • LATEX Font Catalogue di Palle Jørgensen del DK-TUG ha brevi esempi della maggior par- Computer Modern: Entrando nello specifico, il te dei font tipicamente disponibili con le primo e ancora prevalente font nel mondo di installazioni di LATEX; T X è Computer Modern, sviluppato da Do- E • Mathematikschriften für LATEX di Wal- nald Knuth usando il suo originale programma ter Schmidt mostra molte combinazioni , distribuito insieme a TEX. testo/matematica, sia libere che non; Altri Modern: Sono state create delle varianti di • Free sampler di Peter Flynn mostra Computer Modern che comprendono virtual- molti dei font inclusi in TEX Live e in altre mente lettere e simboli di tutte le altre lingue distribuzioni; basate sull’alfabeto latino. Tali caratteri sono • Fonts in ConTEXt di Hans Hagen mostra esem- stati anche convertiti in font PostScript Ty- pi di testo dei font comuni (la maggior parte pe 1, ecc. Latin Modern e cm-super sono due liberi, alcuni commerciali) e come specificarli collezioni notevoli in quest’area. in ConTEXt; PostScript di base: TEX supporta anche i 35 font • Typographical comparison document di Hans standard PostScript: Times Roman, Helvetica, Hagen mostra i font di TEX a grande dimen- , Palatino e altri (URW++ ha gentil- sione in aggiunta alle informazioni contestuali mente donato questi font al pubblico nel 1996, e alle mini-biografie dei progettisti. e li ha anche resi disponibili sotto la LPPL nel 2009. Gli originali licenziati GPL sono disponibili sul sito ). Font nelle distribuzioni TEX Questi font sono inclusi nelle installazioni standard Fate riferimento alla documentazione psnfss2e di TEX come TEX Live e MiKTEX e pronti da usare. per l’uso in LATEX, e a test1.tex (e gli altri • Altri font dal GUST Typefoundry: Antyk- ∗Traduzione a cura di Gianluca Pignalberi, revisione di Massimiliano Dominici. wa Toruńska, Antykwa Półtawskiego, Cyklop, 1. In realtà ne vengono elencati tre [NdT] Iwona, Kurier;

30 ArsTEXnica Nº 13, Aprile 2012 Font e TEX

• Arkandis Digital Foundry ha creato diversi impediscono l’inclusione nelle distribuzioni libere font liberi con le sembianze di , di TEX: Bodoni e altri. I file di supporto a (LA)TEX sono disponibili per la maggior parte dei casi; • e di URW, origina- • Bitstream ha donato la famiglia di font Vera riamente rilasciati come parte di GhostPCL. (uno slab , un sans serif simil-Frutiger e Altri font della medesima provenienza possono un monospaziato) al pubblico. La versione acquisire il supporto a TEX in futuro; • LuxiMono di Bigelow & Holmes, una variante sensibilmente migliorata per TEX è chiamata Bera. La variante arev serve specialmente per monospaziata di . le presentazioni; Lo script getnonfreefonts semplifica l’in- • Bitstream ha anche disegnato il carattere stallazione di questi font e altri. Provate Charter, un serif liberamente disponibile; getnonfreefonts --help. • di Victor Gaultney. Gentium fa parte del SIL’s font project; Font commerciali • I font della includono GFS Artemisia, Baskerville, Bodoni, Complutum, Altri font standard per la normale composizione Didot, NeoHellenic, Porson e Solomos. Tutti di testo (Baskerville, Bodoni e altri) sono sfortuna- supportano il greco, la maggior parte supporta tamente non liberi (al momento della stesura, per anche il latino; quanto ne sappiamo). Se siete interessati ad aiuta- • è un font monospaziato che sup- re la produzione di più font liberi fate riferimento porta la maggior parte degli alfabeti latini e alla pagina web GNU Font Utilities e all’articolo di inteso per essere massimamente compatibile TUGboatMaking outline fonts from bitmap images con Computer Modern typewriter; come punti di partenza, e fateci sapere. • Libertine è una famiglia libera di font con Font commerciali eccellenti sono disponibili tra- un’ampia varietà di forme e il supporto di mite molte aziende. Sfortunatamente quelle con- diversi alfabeti (inclusi latino, cirillico, greco trollate (Adobe, Bitstream e altre) hanno prezzi ed ebraico); alti per una libreria di font (migliaia di dollari). I • I font matematici complementari a Garamond, prezzi per singolo font sono altrettanto alti. C’è e Charter sono disponibili presso il una quantità di collezioni gratuite disponibili, di Math Design project; differente qualità e legalità, ma poiché nessuna di • Il font Utopia serif è stato donato da Adobe. esse è legalmente utilizzabile ovunque nel mondo, L’eccellente collezione Fourier-GUT è basata il TUG non può, a malincuore, raccomandare spe- su Utopia. cificamente alcuna di esse. I font commerciali non hanno di solito il supporto a TEX, cioè i file .tfm, Font liberi solo True/OpenType ma molte metriche sono disponibili su CTAN; fa- te riferimento a Walter Schmidt’s collection e a Tali font non hanno la versione Type 1 e quindi so- MinionPro TEX support. no più facilmente utilizzabili con X TE EX e LuaTEX Un font commerciale che possiamo raccomanda- (alcuni dei font precedenti e successivi hanno anche re è MathTime Pro 2 di Michael Spivak, distribuito le versioni OpenType e/o TrueType). Sono tutti da Personal TEX, Inc. Questo ha la piena integrazio- inclusi nelle principali distribuzioni di TEX. ne dei caratteri Times Roman per la composizione matematica con T X, basata sui progetti originali. • GNU FreeFont fornisce le varianti serif, sans E Può essere usato con ogni implementazione di T X serif e monospaziate a supporto di un’ampia E che supporti i font virtuali. varietà di caratteri; Infine, la famiglia di font Lucida, pur restando • The STIX Project ha rilasciato i font matema- sotto licenza proprietaria, è disponibile tramite il tici OpenType per Unicode. Questo articolo su TUG, sia nella versione Type 1 che OpenType. STIX di Barbara Beeton spiega alcuni dietro le quinte e problemi; • XITS è un derivato esteso di STIX sviluppato Supportare lo sviluppo dei font liberi da Khaled Hosny. Il TUG amministra il finanziario del Libre Font Fund, che supporta lo sviluppo dei font liberi Per rimanere in argomento, l’articolo OpenType (come in libertà, alias libre) e software correlati. Math Illuminated di Ulrik Vieth confronta det- Le donazioni al fondo sono fortemente apprezzate! tagliatamente i parametri dei font OpenType e matematici di TEX. . TUG Alcuni font non liberi www.tug.org/fonts Pochi ulteriori font sono disponibili per l’uso gene- rale dei privati ma hanno alcune restrizioni che ne

31 Questa rivista è stata stampata presso Braille gamma S.r.l., Cittaducale (RI) su carta Revive 100 uncoated natural 80 g distribuita da Polyedra.

o r

i t

a

I

z

t

z

a

i

l l

i

i

a

t

n U

i

d g It o i u p p T u EX ? G r

2012

Nono convegno nazionale su TEX, LATEX e tipografia digitale Napoli, 27 ottobre 2012 Centro Congressi Federico II

Call for Paper

Sabato 27 ottobre 2012 a Napoli, presso il Centro Congressi dell’Università degli Studi di Napoli Federico II, si terrà il nono Convegno annuale su TEX, LATEX e tipografia digitale organizzato dal Gruppo Utilizzatori Italiani 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 disponibili all’indirizzo:

http://www.guitex.org/home/meeting o possono essere richieste all’email:

[email protected] ArsTEXnica Numero 13, Aprile 2012

3 Editoriale Gianluca Pignalberi 4 Graphviz e TikZ Claudio Fiandrino 11 Ancora sugli strumenti per grecisti classici Gianluca Pignalberi, Salvatore Schirone, Jerónimo Leal 17L ATEX e le lingue romanze alpine Claudio Beccari 24 Scrivere un pacchetto per LATEX3 Il pacchetto kantlipsum Enrico Gregorio 30 Font e TEX TUG

2 0 0 1 3

9 771828 236001