Вы находитесь на странице: 1из 27

Alessandro Agansati e Massimiliano Dominici A LTEX per lingegnere

Appunti dal seminario tenuto al Politecnico di Milano.

A Alessandro Agansati e Massimiliano Dominici, L TEX per lingegnere, Appunti dal seminario tenuto al Politecnico di Milano, aprile 2009.

Indice
1 Introduzione 2 Codici 3 Strumenti per la graca 3.1 3.2 Concetti fondamentali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmi esterni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.3 3.4 3.5 3.6 3.7 Inkscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gimp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MathWorks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LS DYNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abaqus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Catia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Altri programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conversione di le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 5 5 6 6 6 6 7 7 7 7 8 8 9 9 11 14 15 17 17

Stampante vettoriale per Ms Windows . . . . . . . . . . . . . . . . . . . . . . .


A Estensioni grache di L TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PSTricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

pgf/Tik z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Plugin per Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PSfrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Presentazioni 4.1 Beamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iii

Elenco delle gure


2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Esempio di codice Python formattato. . . . . . . . . . . . . . . . . . . . . . . . Schermata di Inkscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schermata di Gimp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finestra di dialogo per la stampa in Simulink. . . . . . . . . . . . . . . . . . . . Aggiungere una stampante virtuale. . . . . . . . . . . . . . . . . . . . . . . . . Curve tracciate con PSTricks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graci matematici con PSTricks. . . . . . . . . . . . . . . . . . . . . . . . . . . Costruzione geometrica con Tik z. . . . . . . . . . . . . . . . . . . . . . . . . . . Diagramma di usso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Onda sinusoidale salvata in Matlab. . . . . . . . . . . . . . . . . . . . . . . . . 4 6 6 7 8 10 11 12 13 14 14 15 16 18 19

3.10 Onda sinusoidale creata con matlab2tikz. . . . . . . . . . . . . . . . . . . . . . 3.11 Graco disegnato con pgfplotsa partire da dati ottenuti con Matlab. . . . . . . 3.12 Immagine annotata con psfrag. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 Esempio minimale per la classe beamer. . . . . . . . . . . . . . . . . . . . . . . Diapositive con beamer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Capitolo 1

Introduzione
Questo libretto nasce come materiale didattico utile a ripercorrere i principali concetti esamiA nati durante il seminario L TEX per lingegnere, laddove questi non siano esaurientemente A trattati nella guida di riferimento (L TEX per limpaziente di Lorenzo Pantieri [4]) ed ha il solo ed unico scopo di impedire che quanto esposto vada nel dimenticatoio. Questi appunti, devono quindi essere intesi solo come un supplemento alla guida di riferimento sopra menzionata, con specico riferimento ad alcuni dei problemi che lingegnere incontra nel corso della stesura di un documento tecnico. Gli argomenti trattati sono tre: inserimento e formattazione di frammenti di codice, strumenti e tecniche per la gestione delle immagini e creazione di presentazioni. Per forza di cose la trattazione non potr essere approfondita, rimandando in ogni caso alla documentazione dei pacchetti, di norma reperibile insieme ad essi. In questa introduzione vogliamo per segnalare alcuni lavori che possono rappresentare utili occasioni di approfondimento. Relativamente al primo capitolo, dedicato al trattamento dei frammenti di codice, segnaliamo una sintetica guida di Lorenzo Pantieri sul pacchetto listings [5] e larticolo di Gianluca PignalA beri apparso sul numero 6 della rivista ArsTEXnica sulla composizione in L TEX di grammatiche informatiche [7]. Per il secondo capitolo, sulla gestione delle immagini, possiamo consigliare la lettura dellarticolo di Klaus Hppner apparso sul PracTEX Journal [3]: si tratta di una rassegna breve ma molto chiara dei principali problemi legati allinclusione dei vari formati e delle soluzioni che possibile adottare per evitarli. Importante anche larticolo di De Marco [2], apparso sempre sul numero 6 di ArsTEXnica: in esso viene spiegato come ottenere una perfetta omegeneit tipograca tra illustrazioni e testo, usando diverse tecniche.
A Inne per il terzo capitolo, dove si parla di presentazioni con L TEX, si pu consultare il capitolo 12 del manuale di Claudio Beccari [1], che rimane una lettura imprescindibile anche per gli altri argomenti.

Gli altri riferimenti di carattere generale sono reperibili nella bibliograa della guida di riferimento.

Capitolo 2

Codici
Pu capitare di dover riportare allinterno di una relazione o di una tesi il codice relativo allimplementazione di un preogramma, di una procedura o di uno script. In questi casi, dove bene che spazi e rientri vengano conservati esattamente come si trovano nel le sorgente, in modo da riprodurre fedelmente il listato, e caratteri speciali come #, \ o $ devono essere interpretati in maniera letterale e non secondo il signicato che assumono per linterprete A A L TEX, necessario servirsi di comandi e ambienti appositi, deniti dal kernel di L TEX o da altri pacchetti.
A Il kernel di L TEX fornisce il comando \verb e lambiente verbatim, ma questi orono solo un supporto rudimentale, che, ad esempio, non comprende levidenziazione della sintassi. Bisogna ricorrere, quindi, a pacchetti specici e, in particolare, a listings che il pi sosticato.

listings riconosce numerosi linguaggi di programmazione, dei quali in grado di evidenziare la sintassi. Oltre a TEX (ovviamente), possiamo citare C, C++, Java, Fortran, Matlab, Perl, Python, ecc. Per ogni linguaggio possibile che siano deniti diversi dialetti, se esistenti. Per A esempio per TEX vengono riconosciuti i dialetti L TEX e Plain TEX, per C++ i dialetti ANSI, GNU, ISO, Visual, e cos via per altri linguaggi. Come si vede nellesempio di gura 2.1, possibile selezionare il linguaggio desiderato, assegnandolo come valore alla chiave language, nel comando \lstset. Questo comando contiene tutte le impostazioni, sotto forma di una lista di coppie key = value . Per mezzo di queste si pu cambiare lo stile delle parole chiave, dei commenti, delle stringhe di caratteri normali, dei numeri di riga, il colore di sfondo, la cornice ecc. Il codice di pagina 15 un esempio di ci che si pu ottenere. Le impostazioni denite con \lstset sono globali, valgono cio per tutti gli esempi di codice del documento. Per fare in modo che rimangano locali allambiente corrente devono essere inserite nellargomento opzionale dellambiente stesso. Nel nostro esempio abbiamo scelto di evidenziare, solo nel codice corrente, oltre alle parole chiave della sintassi, la variabile fname in tutte le sue occorrenze, con un colore rosso. Il codice contenuto allinterno dellambiente lstlistings, ma nei casi in cui la lunghezza del codice notevole, oppure si dispone gi del le sorgente, possibile usare il comando lstinputlisting, che prende come argomento obbligatorio il nome del le che contiene il codice. possibile anche inserire frammenti di codice in corpo, cio allinterno del testo, con il comando \lstinline, anzi labbiamo gi fatto! bene per non abusare troppo di frammenti di codice in corpo, come per le formule, perch spezzano il usso del discorso e creano problemi di impaginazione. Se una formula, o del codice, sono lunghi, vanno messi assolutamente fuori corpo.

A L TEX per lingegnere

1 2

\lstset{language=Python,basicstyle=\small,columns=fullflexible} \begin{lstlisting}[emph={fname},emphstyle=\color{red}] 3 #!/usr/local/bin/python


4

# Python Rename File 1.0 # Author: Douglas Palovick 7 # License: GPL http://www.gnu.org/licenses/gpl.txt
5 6 8

import re, os rxin = raw_input(enter a regex to search for:\n) 11 foo = re.compile(rxin) 12 newname = raw_input(enter a new base name:\n) 13 a = 0 14 for fname in os.listdir(os.getcwd()): 15 allowed_name = re.compile(rxin).match 16 if allowed_name(fname): 17 # newfname = string.lower(re.sub(foo, 18 # , fname)) 19 # b = (newname + str(a)) 20 a += 1 21 c = os.path.splitext(fname) 22 b = (newname + str(a) + c[1]) 23 os.rename(fname, b) 24 \end{lstlisting}
9 10 1 2

#!/usr/local/bin/python

# Python Rename File 1.0 # Author: Douglas Palovick 5 # License: GPL http://www.gnu.org/licenses/gpl.txt
3 4 6

import re, os rxin = raw_input(enter a regex to search for:\n) 9 foo = re.compile(rxin) 10 newname = raw_input(enter a new base name:\n) 11 a = 0 12 for fname in os.listdir(os.getcwd()): 13 allowed_name = re.compile(rxin).match 14 if allowed_name(fname): 15 # newfname = string.lower(re.sub(foo, 16 # , fname)) 17 # b = (newname + str(a)) 18 a += 1 19 c = os.path.splitext(fname) 20 b = (newname + str(a) + c[1]) 21 os.rename(fname, b)
7 8

Figura 2.1: Esempio di codice Python formattato.

Capitolo 3

Strumenti per la graca


3.1 Concetti fondamentali

In una relazione, oltre ai dati inseriti in forma numerica importante riportare anche i risultati a livello graco, poich permettono una comprensione immediata dei risultati, e una chiara discriminazione di condizioni. Tuttavia inserire solo immagini non serve, anzi spesso si sentono frasi del tipo: metto pi immagini che fanno pagine. Niente di pi errato! Chi legge il documento comprende bene se i graci inseriti hanno senso oppure appesantiscono inutilmente la trattazione. Tuttavia anche inserire le immagini correttamente pu non bastare, infatti unimmagine rimane comunque uno strumento di comunicazione, deve quindi essere la pi esplicativa possibile, aiutare il lettore a cogliere il punto principale. Questo pu essere fatto aggiungendo etichette, e oggetti graci, ma anche mantenendo limmagine nella sua pi alta qualit; infatti spesso risulta utile ingrandire un graco per poter apprezzare determinati comportamenti.
A Per essere in grado di ottenere delle buone illustrazioni con L TEX necessario conoscere in anticipo alcuni concetti fondamentali sui vari formati delle immagini digitali. Possiamo innanzi tutto distinguere due categorie principali: immagini vettoriali e immagini bitmap.

Nelle immagini vettoriali, gli oggetti sono deniti mediante una rappresentazione interna di tipo relazionale matematico, possono quindi essere scalate o trasformate senza perdere di denizione su qualsiasi dispositivo, si tratti di uno schermo o di una stampante. I formati vettoriali sono particolarmente indicati per graci, schemi o disegni geometrici. Alcuni esempi di formati vettoriali sono eps, pdf, svg. Le immagini bitmap invece, sono costituite da una matrice di punti colorati e vincolati ad una risoluzione, con leetto di sgranare se resi ad una risoluzione maggiore. Questo tipo di formato trova il suo campo di applicazione nelle foto o nei disegni. Allinterno della categoria delle immagini bitmap, possiamo fare unulteriore distinzione tra formati che prevedono una compressione senza perdita di dati e formati che usano una compressione con perdita di dati (lossy). Questi ultimi sfruttano alcune particolarit della percezione visiva umana per ottenere immagini di taglia pi ridotta senza apprezzabile perdita di informazione da parte dellosservatore. Alcuni esempi di formati bitmap sono tiff (non lossy), png (sia lossy che non lossy), jpeg (lossy).
A L TEX accetta solo alcuni degli innumerevoli formati di immagini e c una dierenza a seconda A del tipo di compilatore che si usa. L TEX vero e proprio, infatti accetta solo ed esclusivamente A immagini in eps, mentre pdfL TEX accetta immagini in pdf, png, jpeg. A meno, quindi, di A altre esigenze particolari, si consiglia di usare pdfL TEX se devono essere incluse delle immagini in formato bitmap. Altrimenti possibile convertire le immagini jpeg o png in formato eps tramite programmi di graca tradizionali come gimp o Photoshop, oppure tramite utilit

A L TEX per lingegnere

di conversione da riga di comando, come quelle fornite da ImageMagick, che permettono di automatizzare il compito. Naturalmente va da s che il le trasformato non di tipo vettoriale, ma rimane bitmap; questa trasformazione resa necessaria solo per la corretta compilazione del documento. Per quanto riguarda la problematica dellinclusione di unimmagine allinterno di un documenA to L TEX e della gestione delle gure come oggetti mobili rimandiamo alla guida di riferimento. Qui sotto ci occuperemo dellinterazione con programmi esterni in grado di esportare immaA gini in qualche formato e delle funzionalit graca native che L TEX ore tramite estensioni aggiuntive.

3.2

Programmi esterni

Per programmi esterni intendiamo quei programmi non strettamente necessari alla compilazione del documento, ma che permettono di raggiungere risultati di elevata qualit tipograca, nel produrre immagini, oppure che sono di uso comune tra gli strumenti informatici impiegati dallingegnere. Alcuni di questi sono gi contenuti in alcuni sistemi operativi, altri invece vanno installati successivamente, altri ancora sono disponibili solo per alcune piattaforme. Ci riferiremo, quando possibile a programmi open source, e, naturalmente, prenderemo in considerazione A solo gli aspetti che riguardano linterazione con L TEX.

3.2.1

Inkscape

Questo programma (gura 3.1) analogamente a Adobe Illustrator permette di creare immagini vettoriali in modo abbastanza semplice. Dopo aver realizzato limmagine non ci rimane che salvarla in formato eps.

3.2.2

Gimp

Gimp1 un programma di fotoritocco (gura 3.2) come Adobe Photoshop e permette di modicare immagini non vettoriali.

Figura 3.1: Schermata di Inkscape.

Figura 3.2: Schermata di Gimp.

3.2.3

MathWorks

Per esportare una gura generata con Matlab2 , bisogna scegliere dal men della stessa: File Save as. . . . Qui va scelto il nome e lestensione Files of Type: e scegliere EPS le (*.eps).
1. Graphics Image Manipulator Program 2. Esempi provati con la versione (R2007a).

A L TEX per lingegnere

Per salvare gli schemi a blocchi realizzati con Simulink3 dobbiamo invece aprire la nestra di stampa (gura 3.3): File print. . . .

Figura 3.3: Finestra di dialogo per la stampa in Simulink.

La casella Paper type la possiamo anche lasciare sul formato di default visto che noi andremo a salvare limmagine come le vettoriale, e quindi gi compreso di bounding box. Anche il paper orientation ritengo sia inutile visto che possiamo posizionare a nostro piacimento le gure A allinterno di L TEX; quello che davvero importa il form Device option, il quale va riempito con lopzione -depsc24. Dopodich spuntiamo la casella Send to: File e premiamo il bottone Save.
A Matlab permette anche lesportazione di immagini in formati nativi di L TEX (pgf/Tik z), come descritto nella sezione 3.6.1.

3.2.4

LS DYNA

Per salvare5 limmagine in formato vettoriale scegliamo: File Print to le, qui segliamo lestensione ps (PSIMAGE), e lopzione RGB/HD.

3.2.5

Abaqus

Per salvare6 il risultato in formato vettoriale basta semplicemente scegliere: File Print File e segliere naturalmente lopzione PS/EPS

3.2.6

Catia

Purtroppo per quanto riguarda Catia V5R17 non disponibile nessuna stampante vettoriale, sar dunque necessario crearla ex novo dal sistema operativo (vedi 3.3).

3.2.7

Altri programmi

Nel caso in cui il programma al quale stiamo lavorando non preveda lopzione nativa per il salvataggio dei le vettoriali, possiamo fare riferimento alla stampante PostScript di sistema (sezione 3.3).
3. 4. 5. 6. Versione 6.6. Stampa un le eps level 2 a colori. Per maggiori info digitare help print nella Command Window. Prova eettuta sulla versione LS-DYNA 971R7600.129. Prova eettuata sulla versione 6:5-1.

A L TEX per lingegnere

(a)

(b)

(c)

(d)

Figura 3.4: Aggiungere una stampante virtuale.

3.2.8

Conversione di le

A Nel caso in cui sia necessario includere, compilando con L TEX, le sia di tipo non vettoriale che vettoriale, occorre trasformare questultimi in eps. Per farlo possiamo utilizzare Gimp, il quale dopo averli aperti ci consente di salvarli con estensione eps. Naturalmente va da s che il le trasformato non di tipo vettoriale, ma rimane bitmap; questa trasformazione resa necessaria solo per la corretta compilazione del documento.

3.3

Stampante vettoriale per Ms Windows

Nel caso in cui il programma al quale stiamo lavorando non preveda lopzione nativa per il salvataggio dei le vettoriali, o semplicemente non stiamo lavorando su un programma di questo genere (ad esempio fotoritocco) c comunque la possibilit di riuscire a salvare in formato eps. possibile creare nel sistema operativo una stampante di tipo PostScript per salvare il nostro lavoro alla massima qualit.

A L TEX per lingegnere

Riportiamo la procedura per gli ultimi7 sistemi operativi Microsoft. Aggiungi stampante Avanti Stampante locale collegata al computer (togliere la spunta su: Rileva e installa stampante plug and Play automaticamente) Avanti Utilizza la porta seguente: dal men a tendina scegliere FILE: (stampa su le) come in gura 3.4a Avanti, nella nuova nestra di dialogo scegliere come stampante Generale, e come modello MS Publisher Color Printer, dopodich ancora Avanti Nome stampante Avanti Stampare pagina di prova? No Avanti Fine. Ora cliccare con il tasto destro sulla stampante aggiunta e scegliere propriet Preferenze di stampa, nella nuova nestra di dialogo (gura 3.4c) scegliere in Opzione PostScript formato EPS, e alla voce Metodo ICM Graco. Ora per poter salvare le vettoriali anche da programmi che non lo permettono baster scegliere dal men di stampa la stampante appena creata, e stampando verr presentata la nestra di dialogo (gura 3.4d) per salvare il le.

3.4

A Estensioni grache di L TEX

Un problema che spesso si pone con gure importate dallesterno lomogeneit tipograca con il resto del documento. Se la gura comprende etichette o legende, queste saranno, di norma, in un carattere diverso da quello del documento e, se limmagine viene scalata, anche le dimensioni del carattere sono di conseguenza scalate, senza che lutente abbia nessun controllo su questo processo, senza ritoccare limmagine originale. Vi sono alcuni metodi per ovviare a questo inconveniente, ma rimane comunque comodo poter disporre di funzioni grache integrate in A L TEX, con la possibilit di gestire le caratteristiche tipograche della gura in armonia con il resto del documento.
A L TEX supporta, n dalla sua nascita alcune limitate funzioni grache, tramite lambiente picture. Queste funzioni, tuttavia sono insucienti a gestire graci e illustrazioni di elevata qualit. Nel corso del tempo sono state quindi sviluppate nuove estensioni con capacit grache sempre pi avanzate. Qui ne prenderemo in considerazione solo due, le pi avanzate.

3.5

PSTricks

Lestensione graca pi potente e essibile sicuramente PStricks, grazie alla sua capacit A di includere codice PostScript allinterno di un documento L TEX. Proprio questo suo ricorso A a costrutti PostScript, fa s che per usarlo direttamente con pdfL TEX sia necessario qualche accorgimento in pi e luso di pacchetti aggiuntivi. Di norma, quindi, bene scegliere, come catena di compilazione, quella che passa attraverso dvi e Postscript, per terminare, eventualmente, con pdf. Oltre a fornire un nucleo di comandi per gestire le operazioni basilari, PStricks permette laccesso ad una vasta libreria di funzioni per tracciare graci, disegni geometri in 2D o 3D, o oggetti predeniti per i campi di applicazione pi disparati (ottica, esperimenti di chimica, ingegneria civile, ecc.). Ci limiteremo qui a fornire alcuni accenni relativi ai comandi di base commentando un paio di esempi, data la vastit del materiale (il manuale di oltre 300 pagine. . . ). Nel primo esempio (gura 3.5), tracceremo alcune curve e una griglia di riferimento sullo sfondo. Notiamo subito che il codice relativo alla gura racchiuso nellambiente pspicture, il quale si incarica anche di impostare le dimensioni della gura (il bounding box, tra parentesi tonde, specicato in termini di vertice destro superiore, mentre il vertice destro inferiore assunto essere il punto di coordinate (0,0)) e alcune opzioni (in questo caso lattivazione della griglia di sfondo).
7. Windows 2000 e Windows XP.

A L TEX per lingegnere

10

\begin{pspicture}[showgrid=true](3,3) \pscurve[showpoints=true,linecolor=red,% 3 linestyle=dashed](0,0)(2,2.5)(3,0) 4 \pscurve[linecolor=green,curvature=1 0.1 -1](0,0)(2,2.5)(3,0) 5 \pscurve[linecolor=blue,curvature=1 0.1 2](0,0)(2,2.5)(3,0) 6 \rput[lC]{-105.7}(2,2.5){\psset{linewidth=0.2pt,linecolor=red} 7 \psline[linestyle=dashed](0,-1)(0,1) 8 \psline[linestyle=dashed](0,0)(1.5,0) 9 \psarc(0,0){0.25}{0}{90}} 10 \rput[lC]{-90}(2,2.5){\psset{linewidth=0.2pt,linecolor=green} 11 \psline[linestyle=dashed](0,-1)(0,1) 12 \psline[linestyle=dashed](0,0)(1.5,0) 13 \psarc(0,0){0.25}{0}{90}} \uput[45](0,0){A} 14 \uput[180](3,0){B}\uput[90](2,2.5){C} 15 \end{pspicture}
1 2

C
2

A
0 1 2

Figura 3.5: Curve tracciate con PSTricks.

I comandi che troviamo allinterno dellambiente pspicture, sono di tre tipi: impostazioni: \psset; posizionamento: \rput, \uput; tracciamento: \pscurve, \psline, \psarc. Le impostazioni date con \psset sono globali rispetto al gruppo corrente, ma possono essere sovrascritte dallargomento opzionale di comandi come \pscurve, \psline e \psarc, come si pu vedere a riga 7 e 8 del codice. Queste impostazioni, che siano date con \psset o nellargomento opzionale dei vari comandi, riguardano colore, spessore, tipo di tratto delle linee, ma anche parametri specici ai singoli comandi, come vedremo in seguito. \psline traccia segmenti o spezzate (aperte o chiuse), a seconda del numero di punti, espressi in termini di coordinate racchiuse tra parentesi tonde, che seguono il comando. Nel nostro caso abbiamo solo segmenti. \pscurve traccia una curva (aperta o chiusa) per interpolazione tra i punti che la seguono. La curvatura pu essere manipolata tramite lopzione curvature, come si vede alle righe 4 e 5. \psarc(x, y){r}{}{} traccia un arco di cerchio con centro nel punto di coordinata (x, y), con raggio r, a partire dallangolo no allangolo . Ci rimangono da esaminare i comandi di posizionamento. \rput{}{ obj }(x, y){r} posiziona loggetto o gli oggetti obj nel punto di coordinata (x, y) ruotandolo di un angolo . Tutto ci relativamente al punto di riferimento delloggetto, che di norma il centro del rettangolo che lo racchiude, ma il cui valore di default pu essere sovrascritto nellargomento opzionale, come in riga 6, dove il punto di riferimento preso nel punto di mezzo del lato sinistro del rettangolo.

A L TEX per lingegnere

11

\begin{pspicture}(0,-2)(7,3) \psset{plotpoints=1000} 3 \psaxes{->}(0,0)(0,-2)(7,3) 4 \psPlot[linecolor=green]{0}{7}{sqrt(x)} 5 \psPlot[linecolor=red]{0}{7}{x^0.4} 6 \psPlot[linecolor=blue]{0}{7}{sin(-x*180/3.1415)} 7 \psplot{0}{7}{x neg 180 mul 3.1415 div cos} 8 \end{pspicture}
1 2

2 1 0 1 1 2
Figura 3.6: Graci matematici con PSTricks.

\uput simile a \rput, ma pu prendere un ulteriore argomento che indica la distanza a cui loggetto deve essere posto, rispetto alle coordinate specicate (questo argomento opzionale non sfruttato nellesempio di gura 3.5). Questa possibilit lo rende particolarmente adatto al posizionamento di etichette relativamente a nodi predeniti. PSTricks particolarmente indicato per tracciare graci di funzioni, a partire da insiemi di dati o direttamente tramite espressioni matematiche. Tuttavia, in questultimo caso, la notazione da usare la Reverse Polish Notation, che quella accettata dal linguaggio PostScript. Questo pu rendere un po dicoltosa, e sicuramente pi complicata, la scrittura delle funzioni stesse. x RadtoDeg sin x div sta, ad esempio per sinx . PSTricks fornisce anche comandi x per esprimere facilmente, in termini di parametri, funzioni particolari come ad esempio le polinomiali, tuttavia rimane il fatto che espressioni arbitrarie sono un po scomode da trattare. Per rimediare a questo inconveniente si pu usare il pacchetto pst-inxplot, che permette luso della pi usuale notazione inssa. Se ne pu vedere un esempio nella gura 3.6.

3.6

pgf/Tik z

pgf/Tik z consente di sfruttare sia macro di basso livello pgf (per modiche molto dettagliate), che macro di alto livello Tik z (basate su pgf). Per utilizzarlo basta caricare il pacchetto tikz. Va notato che pur essendo possibile usare pgf/Tik z con qualsiasi compilatore, non tutte le A sue funzionalit sono supportate a meno che non si usi pdfL TEX. Anche in questo caso, come nel caso di PStricks, ci limiteremo a commentare alcuni esempi che illustrino le caratteristiche di base del programma. Il primo esempio (gura 3.7) mostra un tipico metodo di costruzione geometrica con Tik z. Si noter, innanzitutto, che il codice relativo alla gura racchiuso allinterno dellambiente tikzpicture. Nellargomento opzionale possibile specicare una serie di parametri che modicano laspetto della gura. In questo caso, abbiamo riscalato la gura di un fattore 1.5. Allinterno dellambiente tikzpicture vanno inserite una serie di istruzioni che consentono il

A L TEX per lingegnere

12

\begin{tikzpicture}[scale=1.5] \draw [<->,thick] (0,2) node (yaxis) [above] {$y$} 3 |- (3,0) node (xaxis) [right] {$x$}; 4 \draw (0,0) coordinate (a_1) -- (2,1.8) coordinate (a_2); 5 \draw (0,1.5) coordinate (b_1) -- (2.5,0) coordinate (b_2); 6 \coordinate (c) at (intersection of a_1--a_2 and b_1--b_2); 7 \draw[dashed] (yaxis |- c) node[left] {$y$} 8 -| (xaxis -| c) node[below] {$x$}; 9 \fill[red] (c) circle (2pt); 10 \end{tikzpicture}
1 2

Figura 3.7: Costruzione geometrica con Tik z.

tracciamento degli oggetti. Il comando \draw traccia un percorso attraverso una serie di coordinate, specicate di norma da una coppia di valori tra parentesi tonde.8 Le coordinate sono collegate da un connettore che indica il tipo di linea con cui si vogliono unire i punti. Esempi tipici di tali connettori sono: -- (segmento di retta, riga 4), |- o -| (due segmenti perpendicolari, righe 3, 7, 8), oppure .. (un tratto di curva di Bzier, non visibile nellesempio). Oltre alle coordinate il comando \draw accetta delle parole chiave come node o coordinate. node (righe 1 e 2) serve a contrassegnare (eventualmente) un punto tramite un nome di riferimento (yaxis e xaxis, tra parentesi tonde) e a inserire un etichetta ($y$ e $x$ tra parentesi grae) il cui piazzamento relativo al punto cui si riferisce pu essere specicato da unopzione tra parentesi quadrate (above o right nellesempio precedente). coordinate si limita a contrassegnare un punto con un nome di riferimento che pu essere riusato in seguito (righe 4 e 5). Inne \draw accetta anche una serie di opzioni (quelle racchiuse tra parentesi quadrate immediatamente dopo il comando, riga 2) che servono a specicare alcuni parametri, quale lo spessore della linea, la presenza di frecce o altri tipi di terminatori alle estremit, il colore, ecc. Nel nostro caso, nel codice di righe 2 e 3 i punti di coordinate (0,2) e (3,0) vengono uniti tramite una spezzata composta da due segmenti perpendicolari, con tratto spesso (thick) e terminante ad entrambe le estremit con una freccia. I punti estremi vengono marcati e contrassegnati con le etichette $y$ e $x$. In pratica abbiamo tracciato gli assi cartesiani di un diagramma. Vengono poi tracciati due segmenti (alle righe 4 e 5) rispettivamente tra i punti (0,0) e (2,1.8) (0,1.5) e (2.5,0). Ognuno di questi punti marcato, in modo che il suo valore possa essere facilmente riutilizzato. Infatti i punti cos marcati ci servono per determinare lintersezione dei due segmenti. Questo viene fatto, allinterno dellistruzione \coordinate, che serve a denire la posizione di un punto, tramite la parola chiave intersection e lespressione che segue (riga 6). Anche il punto cos ottenuto viene marcato per essere riutilizzato in seguito ((c)). Adesso, alle righe 7 e 8, tracciamo, con linea tratteggiata (opzione dashed), i due segmenti
8. Se non specicata ununit di misura, viene implicitamente assunto che lunit sia 1 cm.

A L TEX per lingegnere

13

\tikzstyle{format} = [draw, thin, fill=blue!20] \tikzstyle{medium} = [ellipse, draw, thin, fill=green!20, minimum height=2.5em] 3 \begin{tikzpicture}[node distance=3cm, auto,>=latex,thick] 4 \path[->] node[format] (tex) {.tex file}; 5 \path[->] node[format, right of=tex] (dvi) {.dvi file} 6 (tex) edge node {\TeX} (dvi); 7 \path[->] node[format, right of=dvi] (ps) {.ps file} 8 node[medium, below of=dvi] (screen) {screen} 9 (dvi) edge node {dvips} (ps) 10 edge node[swap] {xdvi} (screen); 11 \path[->] node[format, right of=ps] (pdf) {.pdf file} 12 node[medium, below of=ps] (print) {printer} 13 (ps) edge node {ps2pdf} (pdf) 14 edge node[swap] {gs} (screen) 15 edge (print); 16 \path[->] (pdf) edge (screen) 17 edge (print); 18 \path[->, draw] (tex) -- +(0,1) -| node[near start] {pdf\TeX} (pdf); 19 \end{tikzpicture}
1 2

pdfTEX .tex le TEX .dvi le dvips .ps le ps2pdf .pdf le

xdvi

gs

screen

printer

Figura 3.8: Diagramma di usso.

di perpendicolare dal punto c agli assi. In questo caso possiamo usare, al posto di coordinate esplicite, delle espressioni simboliche. In particolare, lespressione (yaxis |- c) indica il punto di intersezione tra lasse y e la perpendicolare ad esso passante per c, e analogamente lespresione (xaxis -| c) indica il punto di intersezione tra lasse x e la perpendicolare ad esso passante per c. Da ultimo contrassegnamo il punto c con un pallino rosso. Questo ci permette di esplorare due nuove istruzioni: il comando \fill e la parola chiave circle. \fill analogo a \draw, ma accetta solo percorsi chiusi e, invece di tracciarne il contorno, ne riempie larea racchiusa (in questo caso di rosso). circle una scorciatoia per esprimere un percorso circolare, in questo caso di raggio 2 pt. Esistono altre scorciatoie simili, ad esempio rectangle che traccia un rettangolo, avente come vertici opposti il punto corrente e quello specicato immediatamente dopo. Va notato che ogni singola istruzione deve terminare con un punto e virgola. Nellesempio di gura 3.8 possiamo vedere come sia semplice, con Tik z, disegnare un diagramma di usso, sfruttando le funzionalit della direttiva node. In questo caso abbiamo predenito due stili diversi. Il primo, format (riga 1), verr usato per tracciare nodi di forma rettangolare (default), con cornice sottile e riempiti di azzurro. Il secondo, medium (righe 2-3), serve a tracciare nodi di forma ellittica, con cornice sottile, riempiti di verde chiaro e con altezza

A L TEX per lingegnere

14
Ondasinusoidale

Onda sinusoidale 1 0.8 0.6 0.4 ampiezza (v) 0.2 0 0.2 0.4 0.6 0.8 1 0 1 2 3 tempo (s) 4 5 6

0.5

ampiezza(v)

0.5

3 tempo(s)

Figura 3.9: Onda sinusoidale salvata in Matlab.

Figura 3.10: Onda sinusoidale creata con matlab2tikz.

minima di 2.5 em. Tra le impostazioni globali della gura abbiamo scelto una distanza tra i nodi di 3 cm, il posizionamento automatico dellancoraggio dei nodi, uno stile particolare per le frecce e linee spesse. La direttiva node acetta un primo argomento tra parentesi quadrate che serve a sovrascrivere le impostazioni di default, per applicare, ad esempio uno stile (format o medium) o a consentire un ancoraggio diverso da quello predenito (right of, below of, mentre swap scambia tra loro lestremit destra e quella sinistra). Il secondo argomento, tra parentesi tonde il nome di riferimento del nodo, che pu cos essere usato in altre espressioni senza far ricorso alle sue coordinate esplicite. Inne il terzo argomento, tra parentesi grae, letichetta del nodo. I nodi sono connessi tramite la direttiva edge e il percorso eettivo tracciato da \path. Si noti che, a riga 18, una delle coordinate del percorso specicata in termini di uno spostamento relativo a quella corrente. Per tracciare il diagramma di gura 3.8 stato inoltre necessario caricare due librerie aggiuntive di Tik z, con il comando \usetikzlibrary{arrows,shapes} nel preambolo.

3.6.1

Plugin per Matlab

I graci prodotti da Matlab, se salvati in formato vettoriale, vanno benissimo, tuttavia esistono plugin che permettono di esportare limmagine come codice Tik z in modo da poter compiere successive manipolazioni sullimmagine di partenza. In alternativa possibile esportare gli array di dati in un le e far creare il graco a Tik z; vediamo qualche esempio. In gura 3.9 A riportiamo la funzione sinusoidale ottenuta da Matlab e inserita in L TEX come immagine. Una volta creata la gura in Matlab possibile, tramite il plugin matlab2tikz,9 salvare le gure come codice Tik z il quale ci consentir di rappresentarle in modo personalizzato, ma sopratutto utilizzando i medesimi caratteri del documento. Il programma per funzionare10 richiede anche il pacchetto pgfplots. Il risultato visibile in gura 3.10. Naturalmente ha poco senso utilizzare questo plugin per realizzare qualcosa che gi sappiamo fare con la massima semplicit in Matlab. Vediamo allora unaltra possibilit che ci mette a disposizione Tik z. Produrre un graco completamente personalizzato partendo addirittura dai vettori! Dal codice dellesempio riportato in gura 3.11 osserviamo come il vettore deve essere salvato come *.dat, le altre opzioni risultano tutte abbastanza intuitive; purtroppo il manuale di
9. http://www.win.ua.ac.be/~nschloe/content/matlab2tikz. 10. Fare sempre riferimento al le readme del programma.

A L TEX per lingegnere

15

1 2 3 4 5 6 7 8 9

Codice 3.1: Codice per generare il le con i vettori.

% Esempio Matlab per produrre un file contente i due vettori % per disegnare la sinusoide x=0:0.01:2pi; % definizione del vettore ascissa y=sin(x); % definizione funzione ordinata data=([x;y]).;% i dati devono essere dei vettori colonna

save array.dat ascii double data % salvo il vettore con precisione 16bit

\begin{tikzpicture}[scale=.75] \begin{axis}[xlabel=tempo (s), ylabel=ampiezza (t)] 3 \addplot[color=blue,thick] plot file {immagini/file/array.dat}; 4 \legend{$\sin(x) = \int -\cos(x)$} 5 \end{axis} 6 \end{tikzpicture}
1 2

1 0.5 ampiezza (t) 0 0.5 1 0 2

sin(x) =

cos(x)

4 tempo (s)

Figura 3.11: Graco disegnato con pgfplotsa partire da dati ottenuti con Matlab.

Tik z/pgf lungo ben 684 pagine, sarebbe impossibile e ingiusto tentare di spiegare in queste poche righe come utilizzarlo. Vale sempre la solita formula: sperimenta con il computer !

3.7

PSfrag

A Per terminare questa rassegna delle funzionalit grache interne a L TEX accenniamo brevemente al pacchetto psfrag, che getta un ponte tra le gure importate e lo sfruttamento delle A capacit tipograche di L TEX. La losoa che sta alla base del funzionamento di psfrag la sostituzione di etichette segnaposto inserite nella gura importata al momento della sua creaA zione, con il contenuto reale delletichetta, composto da L TEX al momento della compilazione. Come si pu dedurre dal nome del pacchetto, esso funziona solo con gure PostScript, ma non indispensabile che limmagine originale sia vettoriale, suciente importarla in un editore di graca vettoriale come Inkscape per fare le modiche necessarie, ovvero linserimento dei segnaposto.

Il procedimento descritto porta al risultato mostrato nella gura 3.12. Come si vede dal codice che la precede, e che quello usato per eettuare la sostituzione dei segnaposti, loperazione semplice e il comando \psfrag molto essibile, no ad accettare, per esempio, comandi di PSTricks, allinterno del materiale di sostituzione.

A L TEX per lingegnere

16

\psfrag{P1}{% \rput(0,0){\textsf{Trailing edge}} \rput(0,0){\psline{->}(0,-0.2)(.75,-.9)} } \psfrag{P2}{% \rput(0,0){\textsf{Leading edge}} \rput(0,0){\psline{->}(0,-0.2)(-1.3,-1.2)} } \includegraphics[width=.5\textwidth]{airfoil}

Leading edge

Trailing edge

Figura 3.12: Immagine annotata con psfrag.

Ci pu tornare utile per inserire, oltre al semplice testo, anche elementi graci, come frecce, gure geometriche, ecc. Nel nostro caso abbiamo sfruttato il codice PSTricks per collegare le etichette ai punti cui si riferiscono tramite frecce indicatrici. Limmagine volutamente ingrandita per mostrare, mediante la sgranatura, che conserva il carattere di immagine bitmap, anche se salvata in eps.

Capitolo 4

Presentazioni
A L TEX pu essere procuamente usato anche per preparare diapositive da proiettare. Consente di ottenere una presentazione ben strutturata e dallaspetto non troppo invadente. Teoricamente possibile attivare tutte le transizioni tra una diapositiva e laltra che pdf supporta, in pratica questo pu richiedere operazioni non semplicissime. Tuttavia le transizioni pi comuni sono ben supportate nel linguaggio di alto livello. Lo stesso discorso valido per linserimento di le audio e video o linterazione con programmi esterni. Esamineremo nei dettagli solo uno di questi pacchetti, beamer, mentre ci limiteremo a citare alcuni degli innumerevoli altri: prosper, HA-prosper e powerdot, che compongono una famiglia di prodotti molto usati e, specialmente gli ultimi due, orono degli stili predeniti molto leggeri, nonch la possibilit di congurarli come si vuole; pdfscreen, pi focalizzato sulle barre di navigazione e la possibilit di inserire pulsanti per i collegamenti ipertestuali; PPower4, corredato di un postprocessore che svolge il lavoro di inserire pause e transizioni tra una diapositiva e laltra.

4.1

Beamer

Il programma pi comunemente usato, in questo campo Beamer. Beamer corredato da molti stili predeniti che coprono molte esigenze in fatto di estetica o di struttura del documento. Lutente pu inoltre denirsi in proprio stili personalizzati o modicare quelli preesistenti. Se la prima operazione richiede conosce pi approfonite del pacchetto, la seconda invece alla portata anche di utenti meno esperti. Beamer una classe di documento e va quindi usata al posto della classe article o book. Nella gura 4.1 riportato il codice di una presentazione minimale. Potete provare a riscriverlo su un le .tex e compilarlo per vedere il risultato. Una presentazione, in Beamer, strutturata in frame, che corrispondono, sommariamente, ad una serie di diapositive concernenti lo stesso materiale. Nel primo frame troviamo il titolo della presentazione, composto in maniera usuale. Nel secondo abbiamo inserito lindice, e il titolo del frame lo dice esplicitamente (riga 17). Il terzo frame presenta del materiale suddiviso su pi diapositive, in particolare gli elementi dellelenco, nella colonna di sinistra, verranno scoperti uno alla volta, dal momento che abbiamo passato allambiente itemize lopzione [<+->]. Nella seconda colonna, invece, vediamo applicato alle immagini un uso diverso dello specicatore <...>. In questo caso, infatti abbiamo indicato esplicitamente su quale diapositiva del frame deve apparire luna o laltra immagine. Inne, nellultimo frame mostrato un testo incorniciato e fornito di titolo. Lambiente che lo genera, block, particolarmente indicato per visualizzare teoremi, denizioni, o formule di una certa importanza. La diapositiva introdotta con una transizione speciale, \transboxin, che la fa comparire a partire dai quattro vertici dello schermo. 17

A L TEX per lingegnere

18

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

\documentclass{beamer} \usepackage{graphicx} \usepackage[T1]{fontenc} \usetheme{Warsaw} \author{A. Utore} \title{Esempio minimo per \textsf{beamer}} \institute{i Poli\TeX nici} \begin{document} \begin{frame} \titlepage \end{frame} \begin{frame} \frametitle{Indice} \tableofcontents \end{frame} \section{Scoprire le carte\dots} \begin{frame} \frametitle{Uno alla volta\dots} \begin{columns} \begin{column}{.48\textwidth} \begin{itemize}[<+->] \item Scopriamo \item unelemento \item della lista \item alla volta \end{itemize} \end{column} \begin{column}{.48\textwidth} \includegraphics<1,3>[width=.5\textwidth]{rose} \includegraphics<2,4>[width=.5\textwidth]{tiger} \end{column} \end{columns} \end{frame} \section{Cornici} \begin{frame} \transboxin<1> \frametitle{Teoremi e definizioni} \begin{block}<1>{Teorema} In un triangolo rettangolo il quadrato costruito su un cateto \e equivalente al rettangolo avente per dimensioni lipotenusa e la proiezione di quel cateto sullipotenusa. \end{block} \end{frame} \end{document} Figura 4.1: Esempio minimale per la classe beamer.

A L TEX per lingegnere

19
Scoprire le carte. . . Cornici

Scoprire le carte. . . Cornici

Uno alla volta. . .

Esempio minimo per beamer


Scopriamo A. Utore
i PoliTEXnici

unelemento della lista

March 31, 2009

A. Utore

Esempio minimo per beamer

A. Utore

Esempio minimo per beamer

Figura 4.2: Diapositive con beamer.

Una volta compilate, le diapositive sono corredate di elementi, posizionati in questo caso nella testatina e nel pi di pagina, in grado di facilitare la navigazione allinterno della presentazione. Nella gura 4.2 vediamo come appaiono due diapositive. La classe beamer ore altre funzionalit, ma quelle qui mostrate sono le principali, insieme alla possibilit di scegliere temi che mostrino, nella testatina, o su una barra laterale, la struttura della presentazione e il suo avanzamento progressivo. Il tema scelto per lesempio uno dei pi comuni, ma ve ne sono altri, alcuni pi e alcuni meno intrusivi, sia come scelta di colori, sia come ingombro degli elementi di navigazione. E, come detto in precedenza, c sempre la possibilit di personalizzare il tutto.

Bibliograa
A [1] Claudio Beccari. Introduzione allarte della composizione tipograca con L TEX. http:// www.guit.sssup.it/downloads/GuidaGuIT.pdf, 2007. A [2] Agostino De Marco. Gestione avanzata delle gure in L TEX. ArsTEXnica, (6):1027, Ottobre 2008. A [3] Klaus Hppner. Strategies for including graphics in L TEX documents. PracTEX Journal, (3), 2005. A [4] Lorenzo Pantieri. L TEX per limpaziente. http://www.lorenzopantieri.net/LaTeX_ files/LaTeXimpaziente.pdf, 2009. A [5] Lorenzo Pantieri. Larte di scrivere codici con L TEX. http://www.lorenzopantieri. net/LaTeX_files/Codici.pdf, 2009. A [6] Lorenzo Pantieri. Larte di scrivere con L TEX. LaTeX_files/ArteLaTeX.pdf, 2009.

http://www.lorenzopantieri.net/

[7] Gianluca Pignalberi e Enrico Bini. LaTeX e grammatiche. ArsTEXnica, (6):7685, Ottobre 2008.

21

Похожие интересы