37
EMIL - Manuale Introduttivo a L A T E X Ernesto Miro

EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

EMIL - Manuale Introduttivo a LATEX

Ernesto Miro

Page 2: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Quest’opera di Gasparotto Matteo e stata rilasciata con licenza Creative Commons

Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia

Per leggere una copia della licenza visita il sito web

http://creativecommons.org/licenses/by-nc-sa/3.0/it/

o spedisci una lettera a

Creative Commons171 Second Street, Suite 300, San Francisco

California, 94105USA

Page 3: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Indice

Introduzione iii

1 Diagrammi con Tikz 11.1 Generalita e primi passi . . . . . . . . . . . . . . . . . . . . 21.2 Diagrammi, diagrammi e ancora diagrammi . . . . . . . . . 5

1.2.1 piano02.tex . . . . . . . . . . . . . . . . . . . . . . . 71.2.2 piano03.tex . . . . . . . . . . . . . . . . . . . . . . . 91.2.3 piano04.tex . . . . . . . . . . . . . . . . . . . . . . . 111.2.4 quadrato01.tex . . . . . . . . . . . . . . . . . . . . . 131.2.5 quadrato02.tex . . . . . . . . . . . . . . . . . . . . . 151.2.6 cerchio01.tex . . . . . . . . . . . . . . . . . . . . . . 171.2.7 cerchio02.tex . . . . . . . . . . . . . . . . . . . . . . 191.2.8 funzione01.tex . . . . . . . . . . . . . . . . . . . . . 211.2.9 funzione02.tex . . . . . . . . . . . . . . . . . . . . . 23

1.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

i

Page 4: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente
Page 5: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Introduzione

Parafrasando un celebre detto, al Mondo ci sono solo due tipi di persone:quelli che conoscolo LATEX e quelli che non lo conoscono. Se state leg-gendo queste righe probabilmente fate parte della seconda categoria, maavete tutto l’intenzione di passare alla prima, quindi seguitemi, \chapterdopo \chapter, ed imparerete a conoscere uno dei migliori programmi divideoscrittura mai concepiti.

Per iniziare vi propongo questa gustosa favola, opera di ChristopheGrandsire (autore di un bel manuale su METAFONT), che vi illustrerabrevemente la genesi di LATEX, chi sia l’inventore di questo linguaggio eperche abbia avuto tanto successo.

In principio era il TEX

“C’era una volta (leggi : alla fine degli anni Settanta) un Gran-de Mago alla Scuola di Magia Bianca di Stanford (leggi : unprofessore di Computer Science alla Stanfor University) chia-mato Donald Ervin Knuth (leggi : Donald Ervin Knuth). Que-sto Grande Mago era intento a revisionare il secondo volumedel suo Libro di Incantesimi di Magia Bianca (leggi : il secondovolume della sua opera The Art of Computer Programming).Aveva appena ricevuto le bozze del lavoro, realizzate graziea nuovi incantesimi di scrittura (leggi : nuovi sistemi di video-scrittura computerizzata) e ne era rimasto talmente disgustatoche lancio immediatamente un incantesimo di fuoco per ridurle

iii

Page 6: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

in cenere (leggi : non era contento del risultato). La qualita eradecisamente inferiore a quella dell’edizione del primo volume.

Essendo un Grande Mago, penso di essere in grado di faremeglio, quindi studio a fondo tutto cio che riguardasse l’Artedella Scrittura (leggi : le regole della tipografia) e, poiche nontrovo nulla che gli consentisse di riprodurre i simboli Erme-tici che utilizzava quotidianamente (leggi : non trovo caratte-ri per riprodurre i simboli matematici), anche tutto cio chetrovo sull’Arte della Calligrafia (leggi : il design di caratteritipografici).

Immagino che sei mesi di lavoro sarebbero stati sufficienti perlo scopo, ma in realta ci vollero piu di dieci anni, grazie an-che all’aiuto di numerosi maghi e stregoni che, avendo dovutoaffrontare gli stessi problemi, elessero il Grande Mago Knuthloro Salvatore (leggi : erano troppo pigri per cominciare il lavo-ro per conto loro e ritennero fosse piu facile aiutare qualcunoa completare un lavoro gia iniziato piuttosto che farlo tuttoper conto proprio). Ma dopo tutti questi anni di duro lavoroil Grande Mago possedeva due tra i piu potenti incantesimi diMagia Bianca mai creati (leggi : due dei migliori programmiinformatici mai scritti): TEX e METAFONT.

TEX era l’Incantesimo di Scrittura, in grado di assemblare pa-role e simboli, secondo la Giusta Posizione ed il Buon Allinea-mento (leggi : TEX e il programma di videoscrittura di qualitaprofessionale). METAFONT e l’Incantesimo Calligrafico in gra-do di creare meravigliosi Simboli Emetici che possano essereutilizzati da TEX, fedele alle migliori Regole dell’Arte Calligra-fica (leggi : METAFONT e il programma di qualita professionaleper la realizzazione di caratteri tipografici).

E poiche il Grande Mago possedeva la Virtu della Ricchez-za (leggi : aveva gia guadagnato abbastanza soldi con i suoiprecedenti libri che non aveva la necessita di guadagnarne an-che con questi programmi), penso fosse giusto donare questiincantesimi a coloro che ne avessero bisogno e desiderassero

Page 7: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

perfezionarli (con un minimo di controllo, ovviamente!). In unmondo in cui gli incantesimi si vendevano a peso d’oro questaera una vera e propria rivoluzione che ebbe un seguito enorme,e TEX (ed il suo Incantesimo di Accompagnamento LATEX crea-to dallo Stregone Leslie Lamport per semplificare le formule diTEX e liberare la sua vera potenza) divenne l’incantesimo pereccellenza utilizzato dai maghi di tutto il mondo per scrivere iloro sortilegi.

METAFONT non ebbe lo sesso successo. Non essendo stato so-stenuta da un’ampia comunita di maghi come TEX, a causa diun suo presunto eccessivo ermetismo, venne relegato al ruolo disostegno, richiamandolo indirettamente quando l’IncantesimoTEX richiedeva di produrre una bella Calligrafia. Ma questa eun’altra storia.”

Ed ora e giunto il momento di rimboccarci le maniche e mettere manoalla tastiera, alla volta del nostro primo documento in (c’e bisogno didirlo?!) LATEX!

Page 8: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente
Page 9: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Capitolo 1

Diagrammi con Tikz

Non di solo testo vive lo scrittore scientifico, ma anche di diagrammie figure. Non possiamo non riconscere l’importanza delle immagini neimanuali scientifici e soprattutto quella di schemi e diagrammi che, oltread essere laboriosi da realizzare, anche con buoni programmi di graficavettoriale (come InkScape), spesso risultano graficamente pessimi.

Per risolvere il problema una delle soluzioni e quella di utilizzare ilpacchetto tikz e le sue numerose librerie (ce n’e davvero per tutti i gusti).Rispetto a programmi di grafica (raster o vettoriale che sia), Tikz hadiversi vantaggi:

• non richiede di disegnare effettivamente i diagrammi ma, attraversol’uso di coordinate cartesiane, permette di definire oggetti geometricimediantverbatime coordinate, equazioni e funzioni;

• come gia sottolineato, e completamente gestibile dalla sola tastiera,evitando all’utente noiosi salti mouse-keyboard/keyboard-mouse;

• non richiede molto spazio per i diagrammi poiche questi vengono sal-vati come codice testuale. Oltre al risparmio di spazio questa e unacaratteristica apprezzabile quando si devono riutilizzare diagrammiin documenti diversi;verbatim

• produce immagini di notevole qualita grafica.

1

Page 10: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Ovviamente c’e anche il rovescio della medagli, ovvero una gestione deidiagrammi che non e WYSIWYG (ma di questo ne abbiamo gia discussoparlando della filosofia WYSIWYM di LATEX), richiede un maggiore usodella CPU poiche i diagrammi vengono elaborati ad ogni ricompilazionee, ostacolo quasi insormontabile per molti, bisogna ragionare in terminigeometrico-analitici quando si scrive il codice.

Partendo proprio da quest’ultimo punto, riprendiamo in mano le nostreconoscenze di Geometria Analitica e mettiamole giu su carta con Tikz.

1.1 Generalita e primi passi

Come sempre dobbiamo comunicare al compilatore di LATEX che intendia-mo utilizzare un pacchetto aggiuntivo, quindi aggiungiamo al preambolodel nostro documento la seguente riga

\usepackage{tikz}

e siamo pronti per realizzare diagrammi e figure.

Il codice del diagramma puo essere inserito all’interno del testo, comefosse una qualunque parte di puro testo, tuttavia per tenere ordinato ilnostro spazio di lavoro e poter gestire flessibilmente i singoli elementi delnostro documento sarebbe meglio

1. creare una cartella tikz/ all’interno del nostro progetto nella qualesalvare tutti i diagrammi realizzati con tikz

2. e richiamarli nel testo attraverso il comando:

\input{tikz/nome_del_fileTikz}

A questo punto creiamo un nuovo documento ed inseriamovi le seguentirighe:

\begin{tikzpicture}[...]

\end{tikzpicture}

Page 11: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

All’interno dell’ambiente tikzpicture inseriremo tutti i comandi neces-sari alla realizzazione delle figure. Le parentesi quadre vuote servono peraggiungere parametri opzionali per l’ambiente; se non ne e richiesto l’usosi possono omettere.

Idea: Tutto il codice tikz, richiamato attraverso il comando input{tikz/nome_del_fileTikz},puo essere messo all’interno di un ambiente flottante come figure, magaricon l’aggiunta di commenti ed etichette:

\begin{figure}[ht!]

\centering

\caption{Inserite qui il commentoche preferite.}

%\input{tikz/nome_del_fileTikz}

\label{fig:nome_etichetta}

\end{figure}

In generale vi renderete conto che questo codice sara quello che utiliz-zarete piu frequentemente per inserire diagrammi nei vostri testi, e tuttequeste righe cominceranno presto a tediarvi. Possiamo trovare un’ele-gante soluzione per l’inserimento di diagrammi nel testo, ricorrendo allacreazione di un nuovo comando.Descrizione

• Nome del comando: \tikzfig

• Funzionamento: crea un ambiente flottante di tipo figure, inse-rendo il collegamento ad un file con codice tikz, un commento eduna etichetta

• Argomenti richiesti: il testo del commento (primo parametro)ed il nome del file (secondo parametro)

la definizione del comando e piuttosto semplice:

\newcommand\tikzfig[2]{%

\begin{figure}[h!]

\centering

\caption{\small #1}

Page 12: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

\vspace{3mm}

\input{tikz/#2}

\label{fig:#2}

\end{figure}}

Vediamo tutto questo all’opera sul nostro primo diagramma tikz ; creia-mo un file chiamato piano01.tex all’interno della cartella tikz/ con ilseguente testo:

\begin{tikzpicture}[x=1.0cm,y=1.0cm]

\draw (-4,-3) rectangle (4,3);

\end{tikzpicture}

Cio che dovremmo ottenere e l’immagine di un rettangolo. Si notino iparametri opzionali inseriti tra parentesi quadre, l’indentazione all’internodell’ambiente tikzpicture (utile ma non necessaria) ed il punto e virgolaal termine della riga (assolutamente necessario!). Rispetto ad un ipoteticosistema di riferimento ccartesiano il rettangolo ha il vertice in basso asinistra posizionato nel punto (−4,−3) ed il vertice in altro a destra in(4, 3): il comando rectangle si occupa di fare tutto il resto.

Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostrocodice sorgente inseriamo allora questo comando:

\tikzfig{Il piano cartesiano delimitato da un

rettangolo}{piano01}

ricompiliamo ed otterremo la figura 1.1.In ogni punto del nostro documento potremo fare riferimento a questa

immagine semplicemente inserendo il reiferimento incrociato \ref{fig:piano01}.Ricordiamo che se vogliamo che i riferimenti siano aggiornati correttamen-te sono necessarie due compilazioni.

Riassumiamo:

1. Dichiariamo l’uso del pacchetto tikz :

\usepackage{tikz}

2. I files con il codice sorgente per i diagrammi verranno salvati nellacartella tikz/ del progetto.

Page 13: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Figura 1.1: Il piano cartesiano delimitato da un rettangolo

3. Il codice tikz di ogni diagramma viene inserito nell’ambiente

\begin{tikzpicture}[]

\end{tikzpicture}

4. Per inserire i diagrammi nel testo, con commenti ed etichette, uti-lizziamo il comando \tikzfig{commento}{nome_del_file}.

1.2 Diagrammi, diagrammi e ancora diagrammi

Per addentrarci nei dettagli del pacchetto tikz, ma mantenendo snelloil testo di questo manuale, e quindi anche il nostro lavoro, di seguito viproporro una serie di diagrammi da realizzare, fornendo per ciascuno:

• il nome del diagramma (nel titolo),

• la descrizione del diagramma,

• l’immagine finale (con commento),

• il codice sorgente,

Page 14: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

• ed eventuali commenti al codice, su comandi e parametri.

Riscrivendoli o riutilizzandoli come modelli dovrebbero essere un buonpunto di partenza per una conoscenza approfondita di questo pacchettografico.

Page 15: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.1 piano02.tex

Aggiungiamo gli assi cartesiani all’interno del rettangolo creato preceden-temente.

Figura 1.2: Il rettangolo della figura 1.1 completato con gli assi cartesiani.

Osservazioni

• E possibile inserire commenti anche nel codice tikz mediante il sim-bolo %.

• Il parametro scale=.9 riduce l’intera figura al 90% delle dimensionireali. Per capire quali siano le dimensioni effettive tenete presenteche i parametri x=1.0cm,y=1.0cm indicano che le unita di misuraper gli assi x e y sono di un centimetro ciascuna.

• il comando \draw[->] (0,-3)--(0,3); disegna una freccia con co-da nella prima coppia di coordinate e punta nella seconda coppia. Senonn vogliamo una freccia ma una semplice linea ci basta rimuovereil parametro opzionale [->].

L’immagine prende corpo, ma risulta ancora piuttosto piatta, Introdu-ciamo alcune varianti nei colori e negli spessori delle linee per differenziareil bordo del diagramma dagli elemnti rappresentati al suo interno. Per

Page 16: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

quanto riguarda la gestione dei colori Tikz utilizza diverse metodologie;di queste ci concentreremo su

1. terne normalizzate di valori RGB

2. stringhe di colori miscelati mediante il simbolo !.

Codice

1 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

2 % Cornice

3 \draw (-4,-3) rectangle (4,3);

4 % Asse delle ascisse

5 \draw[->] (-4,0)--(4,0);

6 % Asse delle ordinate

7 \draw[->] (0,-3)--(0,3);

8 \end{tikzpicture}

Listato 1: File piano02.tex - figura 1.2

Page 17: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.2 piano03.tex

Aggiungiamo spessore agli assi coordinati, colorandoli di grigio chiaro.

Figura 1.3: La figura 1.2 con varianti di colore e spessore per gli assi coordinati.

Osservazioni

• Lo spessore di una linea e determinato dal parametro thick.

• Nuovi colori possono essere definiti dall’utente attraverso il comando\definecolor specificando il nome del colore, la codifica del colore(RGB) e la terna di valori per le componenti Rosso-Verde-Blu.

Attenzione: i valori passati al comando dovranno essere floatingpoint compresi tra 0 e 1.

• La definizione di un colore vien fatta prima ed al di fuoridell’ambiente tikzpicture.

• Un nuovo colore puo essere assegnato ad un oggetto mediante ilparametro color=nome_colore.

Abbelliamo ulteriormente gli assi aggiungendo le tacche corrispondentialle unita di misura. Questo compito richiede la ripetizione di una stessaoperazione (tacca, etichetta) per ogni valore intero su entrambi gli assi: ilcomando \foreach ci aiuta ad automatizzare la procedura.

Page 18: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2

3 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

4 % Cornice

5 \draw (-4,-3) rectangle (4,3);

6 % Asse delle ascisse

7 \draw[thick,color=assi,->] (-4,0)--(4,0);

8 % Asse delle ordinate

9 \draw[thick,color=assi,->] (0,-3)--(0,3);

10 \end{tikzpicture}

Listato 2: File piano03.tex - figura 1.3

Page 19: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.3 piano04.tex

Aggiungiamo spessore agli assi coordinati, colorandoli di grigio chiaro.

Figura 1.4: Gli assi coordinati con le tacche corrispondenti ai valori interi.

−3 −2 −1 1 2 3

−2

−1

1

2

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2

3 \begin{tikzpicture}[scale=.8,x=1.0cm,y=1.0cm]

4 % Cornice

5 \draw (-4,-3) rectangle (4,3);

6 % Asse delle ascisse

7 \draw[thick,color=assi,->] (-4,0)--(4,0);

8 \foreach \x in {-3,-2,-1,1,2,3}

9 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

10 node[below] {\tiny $\x$};

11 % Asse delle ordinate

12 \draw[thick,color=assi,->] (0,-3)--(0,3);

13 \foreach \y in {-2,-1,1,2}

14 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

15 node[left] {\tiny $\y$};

16 \end{tikzpicture}

Listato 3: File piano04.tex - figura 1.4

Page 20: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

OsservazioniIl comando \foreach richiede la creazione di una variabile da definirsipremettendo il simbolo \ ad un nome scelto da noi (\x o \y nel nostrocaso). A tale variabile vengono fatti assumere valori presi dall’elenco chesegue la variabile stessa (in {...}). Tali valori possono essere utilizzatisia nelle coordinate che nelle etichette.Le etichette si assegnano mediande il comando node[...], specificandoneil punto di ancoraggio (la posizione) nel diagramma. Se non specifichiamonulla il punto da noi specificato verra fatto coincidere con il baricentrodel rettangolo che contorna l’etichetta, ma possiamo sempre variare taleassegnazione, inserendo tra le quadre:

1. l’opzione anchor con uno dei valori in figura, 1.5

Figura 1.5: Ancoraggi rispetto al bordo dell’etichetta.

Etichetta

north

south

eastwest

north east

south east

north west

south west

2. oppure solamente uno dei valori in figura 1.6.

Figura 1.6: Ancoraggi rispetto al punto di inserimento.

above

below

left right

above right

below right

above left

below left

Page 21: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.4 quadrato01.tex

Rappresentiamo nel piano cartesiano un quadrato di lato unitario, con unvertice nell’origine e due lati sugli assi coordinati.

Figura 1.7: Un quadrato di lato unitario nel piano cartesiano

−3 −2 −1 1 2 3

−2

−1

1

2

OsservazioniIn molti casi rappresentare oggetti nel primo quadrante e piu semplice,come nel caso del quadrato in figura 1.7: per definirlo ci basta specificare insuccessione le coordinate dei suoi vertici, unendo tali punti con due trattinie chiudendo con il comando cycle per creare una poligonale chiusa.Ovviamente non tutte le figure si trovano nel primo quadrante, o hannodimensioni ed orientamenti semplici da gestire, ma con le trasformazionigeometriche possiamo manipolarle facilmente.

Page 22: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{quadrato1}{rgb}{.6,0,.7}

3

4 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

5 % Cornice

6 \draw (-4,-3) rectangle (4,3);

7 % Asse delle ascisse

8 \draw[thick,color=assi,->] (-4,0)--(4,0);

9 \foreach \x in {-3,-2,-1,1,2,3}

10 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

11 node[below] {\tiny $\x$};

12 % Asse delle ordinate

13 \draw[thick,color=assi,->] (0,-3)--(0,3);

14 \foreach \y in {-2,-1,1,2}

15 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

16 node[left] {\tiny $\y$};

17 % Quadrato unitario

18 \draw[very thick,color=quadrato1] (0,0)--(1,0)--

19 (1,1)--(0,1)--cycle;

20 \end{tikzpicture}

Listato 4: File quadrato01.tex - figura 1.7

Page 23: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.5 quadrato02.tex

Trasliamo, ruotiamo ed ingrandiamo il quadrato della figura 1.7.

Figura 1.8: Traslazione, rotazione e ridimensionamento applicate al quadratodella figura 1.7.

−3 −2 −1 1 2 3

−2

−1

1

2

OsservazioniAbbiamo applicato al quadrato unitario ben tre trasformazioni contem-poraneamente e, di conseguenza, dalla figura non risulta chiaro come Tikzcomponga tali trasformazioni per ottenere il risultato finale. Tuttavianon dovrebbe essere difficile metteremano al codice per isolare le singoletrasformazioni, ovvero

• la traslazione: shift={(x,y)} ((x, y) componenti del vettoretraslazione)

• la rotazione: rotate=n (n gradi in senso antiorario)

• il ridimensionamento: scale=n (n · 100% dele dimensioni originali)

Grossomodo tutte le poligonali si possono rappresentare con questicomandi, ma volendo arrotondare le forme abbiamo bisogno di altricomandi.

Page 24: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{quadrato1}{rgb}{.6,0,.7}

3 \definecolor{quadrato2}{rgb}{.47,.47,.47}

4

5 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

6 % Cornice

7 \draw (-4,-3) rectangle (4,3);

8 % Asse delle ascisse

9 \draw[thick,color=assi,->] (-4,0)--(4,0);

10 \foreach \x in {-3,-2,-1,1,2,3}

11 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

12 node[below] {\tiny $\x$};

13 % Asse delle ordinate

14 \draw[thick,color=assi,->] (0,-3)--(0,3);

15 \foreach \y in {-2,-1,1,2}

16 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

17 node[left] {\tiny $\y$};

18 % Quadrato iniziale

19 \draw[very thick,color=quadrato2] (0,0)--(1,0)--

20 (1,1)--(0,1)--cycle;

21 % Quadrato finale

22 \draw[very thick,color=quadrato1,rotate=60,scale=1.3,

23 shift={(-2,-1)}] (0,0)--(1,0)--(1,1)--(0,1)--cycle;

24 \end{tikzpicture}

Listato 5: File quadrato02.tex - figura 1.8

Page 25: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.6 cerchio01.tex

Rappresentiamo una circonferenza di raggio unitario e centro nell’origine.

Figura 1.9: La circonferenza CO,1.

−3 −2 −1 1 2 3

−2

−1

1

2

OsservazioniIl comando si spiega quasi da solo: vogliamo rappresentare una circonfe-renza (circle) con centro nell’origine ((0,0)) e di raggio unitario ((1)).Se volessimo avere un cerchio pienamente colorato il codice tikz e vera-mente banale: bastera infatti sostituire il comando \draw con il comando\fill. Provare per credere.Ovviamente anche a questa figura possiamo applicare tutte le trasforma-zioni viste e, grazie proprio al il comando \fill, possiamo appresentarefacilmente punti nel piano.

Page 26: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{cerchio1}{rgb}{.3,.7,.4}

3

4 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

5 % Cornice

6 \draw (-4,-3) rectangle (4,3);

7 % Asse delle ascisse

8 \draw[thick,color=assi,->] (-4,0)--(4,0);

9 \foreach \x in {-3,-2,-1,1,2,3}

10 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

11 node[below] {\tiny $\x$};

12 % Asse delle ordinate

13 \draw[thick,color=assi,->] (0,-3)--(0,3);

14 \foreach \y in {-2,-1,1,2}

15 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

16 node[left] {\tiny $\y$};

17 % Cerchio unitario

18 \draw[color=cerchio1] (0,0) circle (1);

19 \end{tikzpicture}

Listato 6: File cerchio01.tex - figura 1.9

Page 27: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.7 cerchio02.tex

Rappresentiamo una serie di punti (con etichetta) in varie posizioni delpiano cartesiano.

Figura 1.10: Punti nel piano cartesiano.

−3 −2 −1 1 2 3

−2

−1

1

2

A

B

C

D

E F

Osservazioni

• Per ottenere dei punti di dimensione apprezzabile e senza crearciproblemi con l’unita di misura predefinita (cm) abbiamo speccificatola misura del raggio in punti (2pt).

• Si noti come sono stati combinati il comando \draw con quello node

per specificare contemporaneamente punto ed etichetta.

Chiaramente non possiamo limitarci a rappresentare solo poligoni o cir-conferenze, dunque vediamo come rappresentare curve di cui conosciamol’equazione cartesiana.

Page 28: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{cerchio2}{rgb}{.7,.7,0}

3

4 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

5 % Cornice

6 \draw (-4,-3) rectangle (4,3);

7 % Asse delle ascisse

8 \draw[thick,color=assi,->] (-4,0)--(4,0);

9 \foreach \x in {-3,-2,-1,1,2,3}

10 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

11 node[below] {\tiny $\x$};

12 % Asse delle ordinate

13 \draw[thick,color=assi,->] (0,-3)--(0,3);

14 \foreach \y in {-2,-1,1,2}

15 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

16 node[left] {\tiny $\y$};

17 % Punti con etichetta

18 \fill[color=cerchio2] (3,-1) circle (2pt)

19 node[above right]{\tiny $A$};

20 \fill[color=cerchio2] (-2,2) circle (2pt)

21 node[above right]{\tiny $B$};

22 \fill[color=cerchio2] (0,-1) circle (2pt)

23 node[above right]{\tiny $C$};

24 \fill[color=cerchio2] (-2,0) circle (2pt)

25 node[above right]{\tiny $D$};

26 \fill[color=cerchio2] (-3,2) circle (2pt)

27 node[above right]{\tiny $E$};

28 \fill[color=cerchio2] (2,2) circle (2pt)

29 node[above right]{\tiny $F$};

30 \end{tikzpicture}

Listato 7: File cerchio02.tex - figura 1.10

Page 29: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.8 funzione01.tex

Rappresentiamo una parabola nel piano cartesiano nota la sua equazione.

Figura 1.11: Rappresentazione della parabola p : y = x2

4 − 2

−3 −2 −1 1 2 3

−2

−1

1

2

OsservazioniPer rappresentare una funzione y = f(x) abbiamo utilizzato il comandoplot inserendo tra le sue opzioni la porzione di dominio che ci interessa(domain=-4:4 corrispondente all’intervallo [−4, 4]) e una generica coppiadel suo grafico ((\x,{(\x/2)^2+2}) ovvero un punto del tipo (x, f(x))).Notiamo anche come la funzione rappresentata (ovvero la parabola) sbor-di dal rettangolo che definisce il contorno del diagramma; per elimi-nare questo fastidioso problema, vediamo come ritagliare i bordi deldiagramma.

Page 30: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{funzione}{rgb}{0,.7,.6}

3

4 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

5 % Cornice

6 \draw (-4,-3) rectangle (4,3);

7 % Asse delle ascisse

8 \draw[thick,color=assi,->] (-4,0)--(4,0);

9 \foreach \x in {-3,-2,-1,1,2,3}

10 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

11 node[below] {\tiny $\x$};

12 % Asse delle ordinate

13 \draw[thick,color=assi,->] (0,-3)--(0,3);

14 \foreach \y in {-2,-1,1,2}

15 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

16 node[left] {\tiny $\y$};

17 % Parabola

18 \draw[line width=1pt,color=funzione,domain=-4:4]

19 plot(\x,{(\x/2)^2+2});

20 \end{tikzpicture}

Listato 8: File funzione01.tex - figura 1.11

Page 31: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.2.9 funzione02.tex

Il diagramma in figura 1.11 ritagliato lungo i bordi del pianorappresentato.

Figura 1.12: Ritaglio della figura 1.11.

−3 −2 −1 1 2 3

−2

−1

1

2

OsservazioniIl comando \clip in questo caso e stato applicato ad una figura rettan-golare, grande quanto il diagramma stesso, ma nulla ci vieta di utilizzarealtre forme, come cerchi, poligonali o altro ancora.Sottolineiamo solo che l’azione del comando \clip si applica esclu-sivamente agli oggetti inseriti nel codice al di sotto del comandostesso.

Page 32: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Codice

1 \definecolor{assi}{rgb}{.67,.67,.67}

2 \definecolor{funzione}{rgb}{0,.7,.6}

3

4 \begin{tikzpicture}[scale=.9,x=1.0cm,y=1.0cm]

5 % Cornice

6 \draw (-4,-3) rectangle (4,3);

7 % Asse delle ascisse

8 \draw[thick,color=assi,->] (-4,0)--(4,0);

9 \foreach \x in {-3,-2,-1,1,2,3}

10 \draw[shift={(\x,0)},color=assi] (0pt,2pt)--(0pt,-2pt)

11 node[below] {\tiny $\x$};

12 % Asse delle ordinate

13 \draw[thick,color=assi,->] (0,-3)--(0,3);

14 \foreach \y in {-2,-1,1,2}

15 \draw[shift={(0,\y)},color=assi] (2pt,0pt)--(-2pt,0pt)

16 node[left] {\tiny $\y$};

17 % Ritaglio della figura

18 \clip (-4,-3) rectangle (4,3);

19 % Parabola

20 \draw[line width=1pt,color=funzione,domain=-4:4]

21 plot(\x,{(\x/2)^2+2});

22 \end{tikzpicture}

Listato 9: File funzione02.tex - figura 1.12

Page 33: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

1.3 Conclusioni

I comandi e le opzioni del pacchetto tikz sono veramente molto numerosied articolati, tanto che si possono travare in rete molti manuali (generi-ci o specifici per alcune librerie) con l’aito dei quali i nostri diagrammadiventeranno articolati e ricchi di elementi. Questo capitolo vi forniscesolo alcuni elementi essenziali su Tikz, ma assimilandoli bene possono giaaiutarvi a rappresentare buoni grafici.Ricordiamo brevemente i comandi visti:

1. l’ambiente tikzpicture in cui inserire il codice del diagramma darappresentare;

2. \draw: rappresentazione di un certo oggetto nella figura;

3. \draw node{}: rappresentazione di un’etichetta;

4. \fill: rappresentazione di una figura piena;

5. rectangle: rappresentazione di un rettangolo conoscendo lecoordinate di due vertici opposti;

6. circle: rappresentazione di una circonferenza dati centro e raggio;

7. (x1,y1)--(x2,y2): segmento dal punto (x1, y1) al punto (x2, y2);

8. cicle: chiusura di un percorso definito da una serie di coordinate;

9. x: rappresentazione di grafici di funzioni;

10. clip: ritaglio di una porzione di figura.

Page 34: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente
Page 35: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Elenco delle figure

1.1 Il piano cartesiano delimitato da un rettangolo . . . . . . . . . . 51.2 Il rettangolo della figura 1.1 completato con gli assi cartesiani. . . 71.3 La figura 1.2 con varianti di colore e spessore per gli assi coordinati. 91.4 Gli assi coordinati con le tacche corrispondenti ai valori interi. . . 111.5 Ancoraggi rispetto al bordo dell’etichetta. . . . . . . . . . . . . 121.6 Ancoraggi rispetto al punto di inserimento. . . . . . . . . . . . 121.7 Un quadrato di lato unitario nel piano cartesiano . . . . . . . . 131.8 Traslazione, rotazione e ridimensionamento applicate al quadrato

della figura 1.7. . . . . . . . . . . . . . . . . . . . . . . . . . . 151.9 La circonferenza CO,1. . . . . . . . . . . . . . . . . . . . . . . 171.10 Punti nel piano cartesiano. . . . . . . . . . . . . . . . . . . . . 191.11 Rappresentazione della parabola p : y = x2

4 − 2 . . . . . . . . 211.12 Ritaglio della figura 1.11. . . . . . . . . . . . . . . . . . . . . . 23

27

Page 36: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente
Page 37: EMIL - Manuale Introduttivo a LTEX(4;3): il comando rectangle si occupa di fare tutto il resto. Il rettangolo e disegnato ma non compare nel nostro testo. Nel nostro codice sorgente

Elenco dei listati

1 File piano02.tex - figura 1.2 . . . . . . . . . . . . . . . . . . . 82 File piano03.tex - figura 1.3 . . . . . . . . . . . . . . . . . . . 103 File piano04.tex - figura 1.4 . . . . . . . . . . . . . . . . . . . 114 File quadrato01.tex - figura 1.7 . . . . . . . . . . . . . . . . . 145 File quadrato02.tex - figura 1.8 . . . . . . . . . . . . . . . . . 166 File cerchio01.tex - figura 1.9 . . . . . . . . . . . . . . . . . . . 187 File cerchio02.tex - figura 1.10 . . . . . . . . . . . . . . . . . . 208 File funzione01.tex - figura 1.11 . . . . . . . . . . . . . . . . . 229 File funzione02.tex - figura 1.12 . . . . . . . . . . . . . . . . . 24

29