11 2¢ £ £ ¢4

Transcript

11 2¢ £ £ ¢4
4
5
2
Testatine
6
Corpo del Testo
Note al
margine
7
9
10
3
8
11
1
1
3
5
7
9
11
Pie’ di pagina
2,54cm + \hoffset
\oddsidemargin = -43pt
\headheight = 0pt
\textheight = 486pt
\marginparsep = 10pt
\footskip = 25pt
\hoffset = 0pt
\paperwidth = 398pt
2
4
6
8
10
2,54cm + \voffset
\topmargin = -29pt
\headsep = 0pt
\textwidth = 341pt
\marginparwidth = 48pt
\marginparpush = 5pt (non mostrata)
\voffset = 0pt
\paperheight = 597pt
LATEX con Linux&C.
Riccardo Murri
[email protected]
I
Installare e configurare il software
1
teTEX
1.1 Installare teTEX. . . . . . . . . . . . . . . .
1.2 Configurare TEX . . . . . . . . . . . . . . .
1.2.1 Preparare la sillabazione italiana . .
1.2.2 Configurare XDvi . . . . . . . . . .
1.2.3 Configurare DviPS . . . . . . . . .
1.2.4 Un rapido sguardo alle altre opzioni
2
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
3
3
6
8
Emacs
2.1 Installare XEmacs . . . . . . . . . . . . . . .
2.2 Personalizzare XEmacs . . . . . . . . . . . .
2.3 Installare AUC-TEX . . . . . . . . . . . . . .
2.3.1 Configurare le stampanti di AUC-TEX
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
9
11
11
II Scrivere con LATEX
13
3
14
14
14
15
16
16
16
17
17
Primi passi con TEX
3.1 I passi fondamentali . . . . . .
3.2 Il primo file . . . . . . . . . .
3.2.1 L’anteprima di stampa
3.2.2 Stampare . . . . . . .
3.2.3 Stampa su file . . . . .
3.3 Usare AUC-TEX . . . . . . . .
3.3.1 Compilare . . . . . . .
3.3.2 Anteprima . . . . . .
.
.
.
.
.
.
.
.
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.3.3
3.3.4
4
5
6
Stampa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stampa su file . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
Qui comincia l’avventura 4.1 La struttura di un file LATEX . . . . . . . . . . . .
4.2 Un nuovo esempio . . . . . . . . . . . . . . . .
4.2.1 Cominciare un documento con AUC-TEX
4.2.2 Uno sguardo ravvicinato . . . . . . . . .
4.3 Anatomia di un comando . . . . . . . . . . . . .
4.4 Titoli ed autori . . . . . . . . . . . . . . . . . .
4.5 Varianti del carattere . . . . . . . . . . . . . . .
4.5.1 I comandi di stile con AUC-TEX . . . . .
4.6 Colorare il testo . . . . . . . . . . . . . . . . . .
4.6.1 Colorare lo sfondo delle pagine . . . . .
4.6.2 Definire nuovi colori . . . . . . . . . . .
4.7 I primi errori . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
20
20
20
22
23
24
24
26
26
26
27
Il testo in LATEX
5.1 Il testo ordinario . . . . . . . . . . . . . . . . .
5.1.1 Accenti . . . . . . . . . . . . . . . . .
5.2 Le note al testo . . . . . . . . . . . . . . . . .
5.2.1 Note al margine . . . . . . . . . . . . .
5.3 Dividere il documento in sezioni . . . . . . . .
5.3.1 Profondità di numerazione delle sezioni
5.3.2 Appendici . . . . . . . . . . . . . . . .
5.3.3 Personalizzare l’aspetto dei titoli . . . .
5.4 L’indice sommario . . . . . . . . . . . . . . .
5.5 Riferimenti incrociati . . . . . . . . . . . . . .
5.6 Altri errori . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
30
31
31
32
32
32
32
32
33
33
34
Gli ambienti testuali
6.1 Inserire ambienti con AUC-TEX .
6.2 Citazioni . . . . . . . . . . . . . .
6.3 Versi . . . . . . . . . . . . . . . .
6.4 Effetti tipografici . . . . . . . . .
6.4.1 Allineare il testo . . . . .
6.4.2 Ridimensionare il carattere
6.4.3 Cambiare lo stile del testo
6.5 Liste, elenchi ed enumerazioni . .
6.5.1 Elenchi puntati . . . . . .
6.5.2 Liste . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
38
38
38
38
40
40
41
41
41
42
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6.6
7
8
III
9
6.5.3 Inserire liste con AUC-TEX . . . . .
6.5.4 Enumerazioni . . . . . . . . . . . .
6.5.5 Riferimenti agli elementi di una lista
Ancora errori . . . . . . . . . . . . . . . .
Le classi di documento
7.1 Le classi standard di documento
7.1.1 Le opzioni comuni . . .
7.1.2 La classe ‘book’ . . . .
7.2 Dividere i file . . . . . . . . . .
7.2.1 Compilazioni parziali . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
43
44
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
46
46
46
47
48
48
Gli ultimi ritocchi
8.1 Piccoli dettagli tipografici . . . . . . . . .
8.2 La spaziatura delle righe . . . . . . . . .
8.2.1 Overfull \hbox . . . . . . . . . .
8.2.2 Aggiustare la sillabazione . . . .
8.2.3 Allentare i criteri di composizione
8.2.4 Underfull \hbox . . . . . . . . . .
8.3 Aggiustare le pagine . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
50
50
51
52
53
53
54
54
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Matematica con LATEX
55
Formule matematiche
9.1 Un po’ di teoria . . . . . . . . . .
9.2 La modalità matematica di LATEX . . .
9.3 I comandi che producono simboli . . .
9.3.1 Spazi nelle formule . . . . . .
9.3.2 Testo nelle formule . . . . . .
9.4 Frazioni, radici e coefficienti binomiali
9.5 Esponenti e deponenti . . . . . . . . .
9.6 L’integrale e le grandi formule . . . .
9.7 Limiti, logaritmi, ed altre funzioni 9.8 Parentesi . . . . . . . . . . . . . . . .
9.9 Cambiare stile nelle formule . . . . .
9.9.1 Simboli in grassetto . . . . .
9.10 Accenti matematici . . . . . . . . . .
9.10.1 Accenti doppi . . . . . . . . .
9.10.2 Altri accenti matematici . . .
9.11 L’ultima parola . . . . . . . . . . . .
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
56
56
57
57
57
58
58
59
60
62
62
63
64
64
65
66
66
IV
Argomenti specifici
67
10 Figure e illustrazioni
10.1 Corpi fluttuanti . . . . . . . . . . . . . . .
10.2 L’ambiente figure . . . . . . . . . . . . .
10.2.1 Didascalie . . . . . . . . . . . . . .
10.2.2 Riferimenti alle figure . . . . . . .
10.2.3 Figure nelle pagine con due colonne
10.3 L’ambiente table . . . . . . . . . . . . . .
10.4 Posizione di figure e tabelle . . . . . . . . .
10.4.1 Aggiustare la posizione . . . . . . .
10.5 Nuovi tipi di fluttuanti . . . . . . . . . . .
10.5.1 Numerazione delle figure . . . . . .
10.5.2 Decorazione delle figure . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
68
68
68
69
69
69
69
70
70
71
72
72
11 Illustrazioni
11.1 Includere illustrazioni . . . . . . . .
11.2 Trasformazioni sull’immagine . . .
11.2.1 Cambiare le dimensioni . .
11.2.2 Ruotare l’immagine . . . .
11.2.3 Tagliare un riquadro . . . .
11.3 I formati grafici . . . . . . . . . . .
11.3.1 Convertire tra diversi formati
11.3.2 Creare diagrammi . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
73
73
74
74
74
75
75
77
77
12 Estendere LATEX
12.1 Definire nuovi comandi . . . . . . . . . .
12.1.1 Comandi senza argomenti . . . .
12.1.2 Comandi con argomenti . . . . .
12.1.3 Comandi con argomenti facoltativi
12.1.4 Ridefinire i comandi . . . . . . .
12.2 Definire nuovi ambienti . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
78
78
78
79
80
80
81
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Parte I
Installare e configurare il
software
1
ne descritta in questo capitolo occorre
assumere l’identità di root col comando
‘su’.
‘teTEX’ è una distribuzione di TEX per i
sistemi UNIX, comprendente il compilatore TEX ed i necessari programmi complementari, i più diffusi pacchetti di macro come LATEX e Plain-TEX, ed infine
un’abbondante documentazione. Questo
capitolo spiegherà come installarli e come
orientarsi nella configurazione iniziale.
Un breve documento come questo non
può coprire in tutti i dettagli un processo
di installazione, ed esistono troppe piccole differenze per riportarle qui—applicate
le istruzioni che darò con una certa elasticità :-) e incrociate le dita In caso di
problemi, beh, ci sono sempre gli amici,
no?
Inoltre, il sistema teTEX si appoggia
ai programmi esterni ‘G HOST S CRIPT’ e
‘LPRng’ per la stampa: questo documento non descrive nulla della loro installazione e configurazione, il che comunque
non dovrebbe essere un problema, perché sono considerate parti essenziali di
un sistema UNIX ed ogni distribuzione li
installerà automaticamente.
Tutte le operazioni di installazione e
configurazione di teTEX e XEmacs devono essere eseguite da un utente con privilegi amministrativi: per ogni operazio-
!"!#%$&$('*),+.-
‘teTEX’ è ormai incluso in tutte le maggiori distribuzioni di Linux e BSD: la tabella 1.1 elenca i pacchetti precompilati
che dovrete installare, a seconda del sistema operativo che avete scelto. I comandi necessari per installare un pacchetto variano con la distribuzione, e sarebbe
troppo lungo riportare qui tutti i dettagli
per compiere passo-passo l’installazione
in ogni sistema; generalmente dovrete: 1)
trovare nel CD-ROM che contiene il sistema operativo un file il cui nome: comincia come riportato in tabella 1.1, è seguito da qualche strana sequenza di simboli e
cifre, e termina con il suffisso ‘.deb’ (Debian) oppure ‘.tgz’ (Slackware) o ‘.rpm’
(tutti gli altri); 2) installare questo file
con il comando ‘dpkg -i file’ (Debian),
oppure ‘pkgtool -i file’ (Slackware) o
‘rpm -i file’ (tutti gli altri).
Chi vuole compilare da sé tutti i programmi che installa, come pure chi usa
qualche altro sistema, può trovare le sor2
hyphenation”: passerete ad una schermata in cui vi viene chiesto di indicare un formato per cui selezionare
la sillabazione—scegliete ‘latex’. (Se
‘latex’ non compare tra le alternative
possibili, l’installazione non è completa o
qualcosa è andato storto.) Il vostro editor
preferito sarà ora aperto su un file chiamato ‘language.dat’, che indica a teTEX
quali lingue vogliamo che TEX sia in grado di sillabare. Per attivare una lingua,
basta cancellare il carattere ‘%’ che compare all’inzio della riga; per disattivarla, basta reinserirlo. Potete attivare tutte le lingue che servono, ma è meglio
non eccedere per non consumare inutilmente memoria. Le due principali varianti di inglese devono sempre essere attive, perché vengono usate internamente
da LATEX. Cercate ora la riga “italian
ithyph.tex”, attivatela (cfr. figura 1.2),
salvate e uscite dall’editor: sul video
scorreranno rapide le scritte che indicano
che i formati TEX vengono ricostruiti, poi
sarete di nuovo davanti al menu principale
di ‘texconfig’: è fatta!
Il comando ‘texconfig hyphen latex’
aprirà direttamente il file ‘language.dat’
senza passare dai menu. Attenzione! Se
modificate direttamente il file ‘language.
dat’, per rendere effettive le modifiche
occorre ricostruire i formati TEX con il
comando ‘fmtutil --all; texlinks’.
genti di teTEX presso ftp://ftp.dante.
de/tex-archive/systems/unix/teTeX/.
/, 1012(3
#,!#%$'*),+
Dopo una corretta installazione, avrete
a disposizione il comando ‘texconfig’.
Lanciatelo, ora; impiegherà un po’ di
tempo a partire, perché esegue alcuni
controlli sull’integrità del sistema teTEX,
poi stamperà un messaggio: “questo programma richiede che il terminale abbia
almeno 80 colonne e 24 righe”, se il
programma vi muore davanti, assicuratevi di avere le dimensioni giuste e riprovate! Se tutto è andato bene, a questo punto vedrete una schermata come
quella di figura 1.1. All’interno dei menu di ‘texconfig’ ci si muove su e giù
con i tasti cursore e si sceglie una voce
con ‘Invio’; si accede alle opzioni ‘Ok’ e
‘Cancel’ premendo ‘TAB’.
Attenzione! ‘texconfig’ non avviserà di eventuali errori durante la configurazione: usate sempre la voce di menu
“LOG: view logfile” per controllare che
tutto vada per il verso giusto: si può così
consultare un registro con l’output di tutti i comandi eseguiti da ‘texconfig’ durante una sessione; se qualcosa non funziona come dovuto, è il primo posto dove
guardare!
Preparare la sillabazione italiana
In questo passo, occorrerà modificare un
file di configurazione; ‘texconfig’ invocherà l’editor ‘vi’—se ne preferite un
altro, uscite da ‘texconfig’ e rientrate
con la riga di comando: ‘VISUAL=editor
texconfig’ dove editor è il programma di
vostra scelta.
Scegliete la voce di menu “HYPHEN:
Configurare XDvi
Scegliete la voce di menu “XDVI: xdvi
configuration”: si accede ad una schermata dove l’unica opzione di rilievo è
“default papertype”, selezionate questa,
e poi indicate “a4” nella lista di formati
che vi verrà presentata. Adesso XDvi è
3
Distribuzione
Caldera
Debian
FreeBSD,
OpenBSD
Mandrake
NetBSD
Red Hat
Slackware
SuSE
Pacchetti da installare
TeTeX
tetex-base, tetex-bin, tetex-doc, tetex-extra
teTEX è fra i programmi che si possono installare con il
sistema dei ports: usate quindi il relativo Makefile sotto la
directory /usr/ports
tetex, tetex-latex, tetex-afm, tetex-xdvi, tetex-dvips,
tetex-dvilj (solo per vecchie stampanti HP LaserJet e
compatibili PCL)
teTeX, teTeX-bin, teTeX-share, teTeX-sharesrc
tetex, tetex-latex, tetex-doc, tetex-xdvi, tetex-dvips,
tetex-dvilj (solo per vecchie stampanti HP LaserJet e
compatibili PCL)
tetex.tgz, tex_bin.tgz e tex_doc.tgz (dalla serie tex1)
tetex, te_ams, te_cont, te_kpath, te_latex, te_dvilj
(solo per vecchie stampanti HP LaserJet o compatibili PCL)
Tabella 1.1: I pacchetti da installare per avere una distribuzione teTEX funzionale, divisi per
distribuzione Linux/BSD.
Figura 1.1: La schermata iniziale di ‘texconfig’.
4
Figura 1.2: Il file ‘language.dat’ di configurazione della sillabazione; è stata evidenziata la
riga relativa alla lingua italiana.
5
de alla voce “global settings” del menu di
configurazione (vedi più avanti).
Scegliete la voce di menu “DVIPS:
dvips configuration”: nella schermata
che segue, “global settings” permette di
modificare i parametri del file ‘config.
ps’, le altre voci servono rispettivamente per aggiungere, cancellare o modificare la configurazione ‘config.nome’ della
stampante ‘nome’.
Entrate nel sotto-menu “GLOBAL:
global settings”’: per prima cosa vi verrà chiesto quale formato di carta userete normalmente—indicate “a4”—poi,
tra le scelte seguenti, ignorate “MODE” e “OFFSETS” e invece selezionate “CMD”. Ora dovete scegliere: volete che il comando ‘dvips’ mandi automaticamente in stampa? In questo caso scrivete il comando che usate normalmente per stampare un file P OST S CRIPT
(sarà ‘lpr’ oppure ‘lpr -Pnome-dellastampante’). Oppure volete che ‘dvips’
salvi quello che produce in un file ‘.ps’?
Allora, lasciate vuota la casella di dialogo
e premete ‘Invio’.
È possibile fare tutto questo da riga di comando, scrivendo ‘texconfig
dvips paper a4’ e poi ‘texconfig dvips
printcmd comando-di-stampa’.
Si possono configurare altre stampanti
o modi di conversione usando le altre voci
del menu “dvips configuration”: occorre
scrivere un nome nella casella di dialogo,
poi ‘texconfig’ creerà, cancellerà o modificherà il file ‘config.nome’ e da qui in
poi tutto procede come nel menu “global
settings”.
Infine, con il vostro editor preferito,
aprite il file ‘/etc/texmf/dvips/updmap’,
già pronto: potete verificarlo con la voce
“view a testfile”.
Il resto della configurazione di XDvi si fa attraverso il meccanismo delle risorse di X/Windows, modificando il
file ‘/usr/X11R6/lib/X11/app-defaults/
XDvi’. La versione di questo file distribuita con teTEX non richiede nessuna modifica; le opzioni che si possono aggiungere sono documentate nella pagina man
‘xdvi(1x)’.
Il listato 1 riporta un esempio di
come si possa giocare con le risorse di X/Windows per dare a XDvi un
aspetto più moderno; le impostazione per tutti gli utenti vanno nel file
‘/etc/X11/Xresources’, quelle personali
in ‘~/.Xresources’.
Configurare DviPS
‘DviPS’ è il programma che trasforma
i file ‘.dvi’, prodotti dal compilatore
TEX, in file ‘.ps’ che possono essere
stampati—direttamente o tramite il programma G HOST S CRIPT. La configurazione di DviPS consiste nel creare uno
o più file che controllano le caratteristiche della conversione: se l’output debba
essere inviato direttamente alla stampante o scritto su un file, le dimensioni della carta, se usare i font ‘PostScript Type
1’ oppure le versioni bitmap fornite con
TEX, ecc. Possono coesistere diversi file di configurazione; il comando ‘dvips
-Pnome” leggerà la configurazione dal file ‘config.nome’. Ciascuno di questi file individua una “stampante”, nel gergo
di DviPS, ma non deve necessariamente
riferirsi ad una stampante reale. Il file
‘config.ps’ è quello usato normalmente
in assenza di altre richieste, e corrispon6
listingfig 1: Risorse X/Windows per XDvi. Le impostazioni qui riportate donano a XDvi un
pannello grigio, con i pulsanti in leggero rilievo.
! Queste prime impostazioni sono quelle standard di teTeX;
! vedi la pagina man xdvi(1x ) per le spiegazioni .
!
! pagina ridotta a 1/8 delle dimensioni .
XDvi 4 shrinkFactor : 8
XDvi 4 paper: a4
XDvi 4 wwwBrowser: netscape
XDvi 4 thorough: true
! se manca questa linea , i caratteri accentati
! non appariranno bene sui video a colori .
!
! Queste altre risorse controllano l ’ aspetto del programma, e si
! possono alterare senza problemi ; sono spiegate nella documentazione
! della libreria libXaw.
!
XDvi 4 cursorColor: red
red
XDvi 4 cursorColor:
XDvi 4 BeNiceToColormap:
0
XDvi 4 ShapeStyle:
Rectangle
XDvi 4 ShadowWidth:
2
XDvi 4
XDvi 4
XDvi 4
XDvi 4
Text 4
Text 4
Text 4
Text 4
Background:
white
Foreground:
black
ThreeD 4 Background: gray
Scrollbar 4 Background: gray
5 adobe 5 helvetica 5 medium 5 r 4 12 4 iso8859 5 1
XDvi 4 Command.Font:
XDvi 4 Command.Background:
gray
XDvi 4 Command.highlightThickness:0
XDvi 4 Label.Background:
XDvi 4 Label.ShadowWidth:
gray
0
XDvi 4 Scrollbar.Background:
gray
XDvi 4 Form 4 Background:
gray
XDvi 4 Form 4 Text 4 Background:
white
XDvi 4 Form 4 Viewport 4 Background: white
7
one
sono
i?]
va più che bene per XDvi e per la quasi totalità delle stampanti odierne. Per le
stampanti “Apple LaserWriter” scegliete
il modo ‘canonex’ se proprio volete essere
pignoli.
cercate la riga ‘type1_default=false’ e
cambiatela in ‘type1_default=true’; a
questo punto, eseguite il comando ‘/etc/
texmf/dvips/updmap’.
Ora DviPS è
abilitato ad usare di preferenza i font
“P OST S CRIPT Type 1”, la configurazione
è terminata.
Un rapido sguardo alle altre opzioni
“FONT: Directories for font creation”
La configurazione standard va più che bene, meglio non toccarla: per scrupolo,
controllate che sia barrata la casella “varfonts” nel menu “OPTIONS”. Se sperimentate errori con XDvi o DviPS dovuti ad un programma ‘mktexpk’ o all’impossibilità di scrivere in qualche directory, usate la voce di menu “FONTRW: add
global write permissions to standard fonts
tree”.
“REHASH: rebuild ls-R database”
Questa operazione va fatta dopo aver aggiunto dei file (formati TEX, pacchetti
LATEX, font di caratteri, ecc.) nelle directory del sistema teTEX—le aggiunte
per tutte gli utenti vanno fatte sotto l’albero ‘/usr/local/lib/texmf/’ e quelle
personali sotto ‘~/texmf/’.
“FORMATS: formats” Questa operazione permette di scegliere quali formati
far compilare a TEX, fra quelli disponibili, e quali file di configurazione controlleranno questa operazione; se non avete
un buon motivo per cambiare questo file,
meglio lasciare le cose così come sono.
Le altre opzioni sono auto-esplicative
e, comunque, innocue :-). In ogni caso,
troverete il manuale di teTEX nella directory ‘/usr/share/doc/texmf/tetex’ sotto il nome ‘TETEXDOC’ e nei più comuni
formati.
“MODE: default mode” Questa opzione controlla la generazione su richiesta dei font bitmap. Ormai tutti i font più
usati hanno delle versioni P OST S CRIPT,
quindi le versioni bitmap vengono ignorate da DviPS. Il modo standard ‘ljfour’
8
76
‘Emacs’ è il più potente editor per i
sistemi UNIX, che alcuni programmi di
supporto rendono particolarmente adatto ad essere usato in congiunzione con
TEX. ‘Emacs’ esiste in due versioni maggiori, ‘GNU-Emacs’ e ‘XEmacs’. Questo capitolo spiega come installare la variante ‘XEmacs’, e come configurarla per
l’uso con teTEX; vale anche qui l’avvertenza data nel capitolo 1: in questo poco spazio non si possono coprire tutti i
dettagli dell’installazione, che a volte è
complicata.
Tutte le operazioni di installazione e
configurazione di teTEX e XEmacs devono essere eseguite da un utente con privilegi amministrativi: per ogni operazione descritta in questo capitolo occorre
assumere l’identità di root col comando
‘su’.
XEmacs è disponibile in pacchetti precompilati per tutte le maggiori distribuzioni, oppure potete scaricare il codice
sorgente da ‘http://www.xemacs.org/’;
combattete per avere la versione 21 che
è molto meglio della 20.
Se non avete mai usato XEmacs prima di ora, è bene iniziare a prendere confidenza leggendo il documento ‘TUTORIAL’: premete insieme i tasti ‘Control’
e ‘h’, poi premete ‘t’, e cominciate /, /,9 $:# !;!;<!#%$=+ )?>
@ La principale ragione per cui XEmacs è
più amichevole di GNU-Emacs verso i
principanti è la presenza di un menu “Options”, da cui si possono personalizzare molti aspetti del programma: la figura 2.1 mostra per esempio come sia possibile attivare la colorazione di un file in
/, !"!#8$
base al programma contenuto (colorazioXEmacs
ne sintattica o syntax highlighting). Qui
Per scrivere in LATEX, avrete bisogno di un di seguito riporto due impostazioni pareditor di testi—uno qualunque, TEX non ticolarmente comode quando si scrive in
fa differenze! Alcuni editor hanno pe- LAT X.
E
rò dei modi specifici per LATEX; fra questi, io consiglio ‘XEmacs’, che si trasfor- Attivare la colorazione sintattica Poma quasi in un editor dedicato grazie ai tete fare esattamente come in figura 2.1:
assicuratevi che sia segnate le caselle
pacchetti ‘AUC-TEX’ e ‘X-Symbol’.
9
[Aggiungere
tabella con i
pacchetti da
installare per
distribuzione, o
istruzioni più
dettagliate su
dove reperire
i binari precompilati.]
[Spostare nel
capitolo
“Primi
passi”?]
Figura 2.1: Il menu di configurazione di XEmacs. L’opzione selezionata mostra come attivare
la colorazione sintattica.
10
“Automatic” e “Colors”, scegliete il livello (“Least” è il minore, “Most” doA
vrebbe colorare
un po’ tutto), infine rendete permanente la modifica con “Save
Options”.
Chi usa GNU-Emacs può attivare la
colorazione sintattica aggiungendo queste
lare!] righe all’inizio del file ‘~/.emacs’:
XEmacs viene distribuito insieme alla propria versione di ‘AUC-TEX’, mentre gli utenti di GNU-Emacs dovranno scaricarne una da ‘http://sunsite.
auc.dk/auctex/’; le istruzioni di installazione sono chiare ed essenziali, e tutto filerà liscio, purché scriviate la giusta
‘lispdir’—se non sapete qual è, tentate
il
comando ‘locate -e site-lisp|grep
;; Colorazione sintattica [ font 5 lock]
"site-lisp\$"
’ e ispezionate quello che
( setq 5 default font 5 lock 5 auto 5 fontify t )
viene fuori (require ’ font 5 lock)
Adesso lanciate l’editor sul file
Bilanciamento delle parentesi Il con- ‘.emacs’ (o sul file ‘site-start.el’ se
trollo del bilanciamento delle parentesi volete attivare AUC-T X per tutti gli
E
consiste in questo, che XEmacs eviden- utenti) e aggiungete, all’inizio, le righe
zierà la parentesi compagna di quella su seguenti:
cui si trova il cursore: in verde se le pa;; AUC 5 TeX
rentesi si corrispondono (graffa con graf- ( setq TeX 5 macro 5 global
fa, ecc.), altrimenti in rosso. Il menu “Pa’( "/ usr / lib /texmf/ tex " ))
ren highlighting” per attivare il controllo ( setq TeX 5 printer 5 list ’(
del bilanciamento delle parentesi si tro(" Default " "dvips 5 f %s|lpr" "lpq" )))
va subito sotto quello della colorazione (require ’ tex 5 site )
sintattica (vedi figura 2.1).
Ora riavviate Emacs e provate ad apriAnche chi usa GNU-Emacs può attivare un file ‘.tex’: se in alto compariranno
re il controllo del bilanciamento delle padue nuovi menu “Command” e “LaTeX”,
rentesi: aggiungete queste righe all’inizio
complimenti, siete in AUC-TEX!
lare!] del file ‘~/.emacs’:
Configurare le stampanti di AUC-TEX
(paren 5 set 5 mode ’paren)
Si possono facilmente aggiungere e to(require ’ paren)
gliere stampanti dal menu “Print” di
/, B, !"!#8$DCFEGIH' ) +
AUC-TEX. Occorre sapere qual è il comando per mandare in stampa un file su
‘AUC-TEX’ è un programma in Emacs- ogni stampante che volete installare; ci
LISP che aggiunge a XEmacs e GNU- sono in genere due sole possibilità:
Emacs un esteso supporto dei file TEX:
controllo delle varie fasi di compilazio1. la stampante può stampare diretne/anteprima/stampa da menu, posizionatamente i file .dvi col comando
mento automatico del cursore sul punto
‘dvips -Pnome’;
che ha generato un errore, controllo orto2. la stampante può stampare i file .ps
grafico e della sintassi LATEX, scorciatoie
col comando ‘lpr -Pnome’.
e menu per inserire comandi, ecc.
11
[includo le
istruzioni di
installazione?]
[Cambio il
carattere del
listato con
un \tt?]
In entrambi i casi ‘nome’ è il nome della
stampante.
Aprite il file ‘~/.emacs’; cercate le
righe: (se non ci sono, aggiungetele
all’inizio del file!)
( setq TeX 5 printer 5 list ’(
(" Default " "dvips 5 f %s|lpr" "lpq" )))
Ora, per ogni stampante bisogna aggiungere una riga tra queste due. Se
la stampante stampa i file col metodo 1,
aggiungete una riga
("nome" "dvips -Pnome %s" "lpq")
altrimenti ci vuole
("nome" "dvips -f %s|lpr -Pnome" "lpq")
Ad esempio, per aggiungere due stampanti, “karen” che stampa col metodo 1 e
“monty” che usa il metodo 2, si metterà:
( setq TeX 5 printer 5 list
("karen" "dvips 5 P
("monty" "dvips 5 f
(" Default " "dvips 5
’(
karen %s""lpq")
%s|lpr 5 P monty""lpq")
f %s|lpr" "lpq" )))
12
Parte II
Scrivere con LATEX
13
7J
to in un file ‘nome.ps’ dal programma
‘dvips’, ed è pronto per la stampa.
La prima trasformazione prende il nome di compilazione del file ‘.tex’: in
questa fase, TEX dispone il testo sulle pagine, una alla volta, secondo il
corpo, il carattere e la giustezza scelti
dall’utente—un errore nei comandi LATEX
interromperà il procedimento, o si rifletterà nella cattiva composizione del testo
sulla pagina.
La seconda trasformazione può richiedere molto più tempo, ma è completamente automatica e non ci saranno problemi se il software è installato correttamente; in questa fase vengono incorpo>
$ B, LKM ?N rate eventuali immagini esterne, cambiati i colori e l’orientamento di porzioni di
Accenniamo brevemente al funzionamentesto, ecc.
to del sistema TEX: 1) con un qualunque
> 0 $
editor di testi, si scrive un file ‘nome.tex’ B, /, (
O#*
contenente il testo del documento ed i comandi LATEX; 2) il programma ‘tex’ pren- Aprite il vostro editor di fiducia e creade in ingresso il file ‘nome.tex’ e lo tra- te un file ‘prova1.tex’, in cui riporteresforma in un file ‘nome.dvi’ (questo è un te i contenuti del listato 2—ricordatevi di
particolare formato che memorizza tutte salvare!
Ora date il comando
le informazioni necessarie per la resa tipografica di un documento, sia che questa latex prova1.tex
sia fatta su una stampante o su un video);
3) il file ‘nome.dvi’ viene poi converti- Le scritte della figura 3.1 scorreranno raSia che siate arrivati qui freschi freschi
con LATEX installato da un amico o che abbiate dovuto sudare per portare a termine
una faticosa installazione, è tempo di cominciare: in questo capitolo scriveremo il
primo file LATEX e cominceremo a familiarizzare con tutti i principali programmi
del sistema.
Raccogliamo gli strumenti di lavoro: serviranno certamente i programmi
‘latex’ e ‘xdvi’, ma prima servirà un editor di testi (uno qualsiasi) con cui abbiate quel po’ di confidenza necessaria per
aprire un file, scriverci qualcosa dentro e
salvarne i contenuti.
14
Figura 3.1: I messaggi che LATEX stampa a video durante la compilazione del file ‘prova1.tex’;
una copia di questi messaggi si trova sempre nel file ‘prova1.log’.
listingfig 2: Primo esempio: un classico in
versione LATEX.
1
\documentclass[a4paper]{ article }
2
3
L’anteprima di stampa
Per vedere l’anteprima di un documento, si usa il programma “XDvi”. Dopo
aver compilato senza errori il file di esempio ‘prova1.tex’, nella directory troveremo un nuovo file ‘prova1.dvi’. Adesso
lanciate il comando
\ begin{document}
4
5
Ciao , mondo!
6
7
mente: questi file memorizzano le informazioni necessarie tra una esecuzione e
l’altra.
\end{document}
pide sullo schermo. Se per caso LATEX
si arrestasse per un errore, chiedendovi cosa fare, premete il tasto ‘X’ seguito
da ‘Invio’, e controllate che ‘prova1.tex’
corrisponda al listato 2. Se gli errori
persistono, consultare la sezione 4.7.
LATEX potrebbe creare alcuni file ausiliari durante la compilazione del file: ‘prova1.aux’, ‘prova1.toc’, ecc.—
non cancellateli finché non avrete finito di lavorare sul documento! Spesso
LATEX ha bisogno di compilare più volte un documento per comporlo corretta-
xdvi prova1.dvi
e TEX ci metterà un po’ a preparare
i font che servono, ma non vi preoccupate, restano memorizzati per vari giorni. (Questa è una caratteristica di teTEX:
i font vengono creati al momento in cui
servono, nella giusta dimensione e risoluzione.) Alla fine, comparirà una finestra
simile a quella di figura 3.2. Se qualcosa non ha funzionato, la sezione 1.2.2 riporta alcuni suggerimenti per configurare
XDvi.
15
Figura 3.2: Una finestra XDvi aperta sul file ‘prova1.dvi’. L’aspetto può cambiare a seconda delle impostazioni: probabilmente vedrete una finestra molto più alta e con i caratteri più
piccoli.
Dentro XDvi potrete muovervi con i tasti cursore, ‘PgSu’ e ‘PgGiù’ per andare
alle pagine precedenti o successive, ‘<’
e ‘>’ per andare alla prima ed all’ultima
pagina, ‘s’ per vedere la pagina intera, e
infine ‘q’ vi farà uscire. Inoltre, tenendo premuto uno dei tre pulsanti del mouse sull’area dove viene visualizzato il file si può avere un ingrandimento; ogni
pulsante attiva un ingrandimento diverso:
sperimentate!
Stampa su file
Si può sempre forzare Dvips a scrivere in
un file .ps invece di mandare direttamente
un documento alla stampante:
dvips nome.dvi -o nome.ps
trasforma il file ‘nome.dvi’ nel file ‘nome.ps’ in formato P OST S CRIPT. Il file .ps si potrà stampare successivamente, col comando ‘lpr’, oppure trasferire
su un altro computer per elaborazioni sucStampare
cessive, o infine averne una anteprima a
Per stampare si usa una combinazione dei
[Che altro
video col comando ‘gv’.
comandi ‘dvips’ e ‘lpr’: provate a dare il
c’è da dire
comando:
B, B, E !#8$DCFEGIH' ) +
sulla
stampa?]
dvips prova1.dvi
Questa sezione descrive i rudimenti delSe questo stampa, tutto bene :-). Altril’uso di AUC-TEX a chi usa XEmacs o
menti, troverete un file ‘prova1.ps’ nelGNU-Emacs; se il vostro editor preferila directory, che si può stampare col
to è un altro, potete senza dubbio saltarcomando:
la. AUC-TEX permette di compiere tutlpr prova1.ps
te le operazioni descritte prima per mez16
zo di un sistema di menu, senza uscire
dall’editor Emacs.
AUC-TEX abilita scorciatoie da tastiera per molti dei comandi che mette a disposizione di chi usa Emacs; queste sono sempre riportate alla destra della voce di menu corrispondente, seguendo la
convenzione che ‘C-tasto’ indica di premere insieme i tasti ‘Control’ e ‘tasto’, e
similmente ‘M-tasto’ richiede di premere
‘tasto’ simultaneamente al tasto ‘Alt’ (in
alcune versioni di Linux bisogna invece
premere il tasto ‘Windows’). Qui descriverò solo l’utilizzo di AUC-TEX dai menu, le scorciatoie si imparano col tempo
cursore posizionato esattamente sulla riga
che ha generato problemi!
Anteprima
Dopo aver compilato con successo un file,
scegliete “View” dal menu “Command”,
questo aprirà una finestra XDvi con l’anteprima del nostro file. Anche se, scorrendo il file, troverete delle cose da cambiare, non conviene chiudere la finestra:
XDvi aggiorna automaticamente l’anteprima ogni volta che un file .tex viene
ricompilato.
Stampa
Come si stampa un file con AUC-TEX?
Basta scegliere “Print” dal menu “Com
mand”: apparirà un elenco di stampanPer interrompere l’esecuzione di un ti (o forse solo una: “Default”) e basta
comando di AUC-TEX basta premere scegliere quella da utilizzare.
‘Control+G’ (ovvero i tasti ‘Control’ e ‘G’
Stampa su file
insieme).
Si può anche stampare su file, ovvero tasformare il file .dvi in un file .ps: è quelCompilare
lo
che fa la voce “File”, sempre del menu
Aprite il file ‘prova1.tex’ con Emacs; se
“Command”.
AUC-TEX ci presenterà una
AUC-TEX è stato correttamente installalinea
di
comando
per chiamare “DviPS”,
to (cfr. la sezione 2.3), vedrete in ale
noi
potremo
aggiungere
opzioni, modito due nuovi menu: “Command” e “Laficare
quelle
già
presenti,
o infine semTeX”. Puntiamo il mouse sul primo, poi
plicemente
accettare
il
suggerimento
di
cerchiamo la voce “LaTeX”, come in fiAUC-T
X
premendo
il
tasto
‘
Invio
’.
E
gura 3.3. Immediatamente parte la compilazione del file, ma non vedremo i messaggi di TEX. A compilazione avvenuta, AUC-TEX ci avviserà con un breve
messaggio in fondo alla finestra di Emacs.
Se un errore nel documento interrompe
la compilazione, AUC-TEX avviserà con
un messaggio. Scegliamo allora la voce
“Next Error” dal menu “LaTeX”: AUCTEX dividerà la finestra di Emacs in due
parti: in una, mostrerà il messaggio di errore di LATEX, nell’altra, il nostro file col
17
Figura 3.3: Il menu di AUC-TEX che permette la compilazione di un file LATEX senza mouversi
da Emacs.
18
7P
In questo capitolo, esaminiamo da vicino la struttura di un file LATEX, e impariamo i comandi più semplici, ma già sufficienti per comporre il testo con vari stili
e colori.
Q R
"# 3 " 3
RT ' ) +
#,
N 3?S0
$
ti principali, e la fine dei caratteri da
leggere.
Il corpo del documento contiene tutto il testo che viene reso effettivamente
in stampa, ed è racchiuso tra i comandi
\begin{document} e \end{document}. Il
documento termina con \end{document}:
nulla verrà più letto da TEX oltre questo
punto. Il testo è scritto normalmente, cioè
come con una comune macchina da scrivere. I paragrafi sono separati da una o
più righe vuote; LATEX ignora ogni fineriga che non sia seguita da una riga vuota,
ed accumula tutto il testo in un capoverso. Pure, non fa differenza la quantità di
spazi tra una parola e l’altra: LATEX regola da sé la distanza tra le diverse parole, e
giustifica il testo sui margini della pagina.
In questo modo, si possono inserire tabulazioni e spazi in un file .tex per renderlo più leggibile (come si fa con il codice
sorgente dei programmi), senza cambiare
il risultato finale.
Un file LATEX è un comune file di testo,
dove vengono inserite opportune indicazioni (comandi) per controllare la composizione tipografica finale. Tutti questi comandi sono scritti con i normali caratteri
ASCII (quelli di una tastiera americana,
per intenderci). 1
Un file LATEX è diviso in due parti principali: il preambolo ed il corpo
del documento. Per esempio, consideriamo il listato 2, che contiene il minimo file LATEX possibile: qualunque documento LATEX deve contenere i tre comandi ‘\documentclass’, ‘\begin{document}’
e ‘\end{document}’, perché segnalano a
Il preambolo è costituito da tutto il maLATEX, rispettivamente, l’inizio del doteriale
che si trova prima del comando
cumento, la separazione tra le due par\begin{document}; per definizione, il pre1 I comandi LAT X fanno pesante uso delle parenE
ambolo non può contenere testo da stamtesi graffe e quadre. Sulle tastiere italiane, Linux
solitamente permette di ottenere le parentesi graffe pare, ma solo comandi LATEX che impostano la struttura globale del documento:
premendo ‘AltGr’ insieme con le parentesi tonde.
19
ad esempio, istruzioni per cambiare le dimensioni della pagina, spostare i margini,
o caricare Uestensioni LATEX per usi particolari. (Per chi conosce HTML, preambolo e corpo di un documento in LATEX
corrispondono più o meno agli elementi
‘HEAD’ e ‘BODY’.)
Q /, E
G?3
<V,W$ $ >
O
Passiamo ad un esempio più complicato,
il listato 3: copiatelo in un file ‘prova2.
tex’. Prima di procedere con la lettura, scorretelo un attimo: quali comandi LATEXriuscite a trovare? quali sono nel preambolo? quali nel corpo del
documento?
Cominciare un documento con
AUC-TEX
Scriviamo il listato 3 con AUC-TEX.
Apriamo un nuovo file, che chiameremo ‘prova2.tex’; poi, dal menu “LaTeX”
scegliamo la voce “Insert Environment”
e cerchiamo “document” nei sotto-menu.
A questo punto, AUC-TEX chiederà la
classe del documento: rispondiamo ‘article’; rispondiamo ‘a4paper’ alla successiva domanda sulla “opzioni del documento”. Ora, AUC-TEX ha creato la struttura
minima di un file LATEX. Spostiamo ora
il cursore tra le righe ‘\begin{document}’
e ‘\end{document}’; scegliamo la voce
“Section” dal menu “LaTeX”, e poi “section” dal sotto-menu che appare: AUCTEX domanderà il titolo della sezione—
rispondiamo ‘Premessa’—e poi un’etichetta per contrassegnare la sezione—
rispondiamo ‘sec:premessa’. Premendo
i tasti ‘Control+x’ e poi ‘u’, AUC-TEX
annullerà l’ultima operazione eseguita,
permettendoci di rimediare ad un errore.
Da qui in poi, AUC-TEX ha finito il suo
lavoro, ed il resto va aggiunto a mano,
buon lavoro!
Uno sguardo ravvicinato
Esaminiamo il listato 3: i comandi LATEX
cominciano tutti col simbolo ‘\’. Il corpo del documento è scritto liberamente,
come in un normale file di testo; i due
paragrafi sono separati da una riga vuota. Ogni riga che comincia con ‘%’ è
un commento e come tale viene ignorato
da LATEX. La riga ‘\section{Premessa}’
inizia una sezione intitolata appunto Premessa; il comando ‘\label’ serve a contrassegnare questa sezione per potervisi
riferire in altre parti del documento.
Il preambolo LATEX contiene tre comandi: \documentclass e \usepackage (usato due volte). \documentclass deve esse- \documentclass
re sempre dichiarato nella prima riga utile del file (cioè le righe precedenti possono contenere solo commenti o spazi bianchi), perché specifica quale formato dovrà essere utilizzato da LATEX per l’impaginazione del documento. (Per chi conosce HTML, il suo scopo è affine alla dichiarazione ‘!DOCTYPE’.) La prima invocazione di \usepackage comunica a LATEX che il documento è in lingua
italiana (in modo che scriva, ad esempio,
“Capitolo” e non “Chapter” e, soprattutto, sappia sillabare correttamente le parole). La seconda chiamata a \usepackage
permette a LATEX di interpretare correttamente le lettere accentate presenti sulla tastiera italiana. Tralasciamo per ora
i dettagli su questi comandi; raccomando solo di usare queste due invocazioni
di \usepackage in ogni documento che
scriverete in Italiano—per l’Inglese sono
20
listingfig 3: L’inizio della Licenza Pubblica Generica GNU come file LATEX. (Stralcio della
“GNU General Public License”, nella sua traduzione italiana realizzata da ILS e PLUTO, vedi
http://www.linux.it/GNU/gpl.txt). Copiatelo in un file chiamato ‘prova2.tex’.
1
\documentclass[a4paper]{ article }
2
3
4
5
% Le due righe seguenti caricano estensioni di LaTeX
\usepackage[ italian ]{babel}
\usepackage[T1]{fontenc}
6
7
8
% qui finisce il preambolo LaTeX
\ begin{document}
9
10
11
12
13
14
15
16
\ section {Premessa}\ label {sec :premessa}
Le licenze per la maggioranza dei programmi hanno lo scopo di togliere
all ’ utente la libertà di condividerlo e di modificarlo . Al contrario ,
la Licenza Pubblica Generica GNU è intesa a garantire la libertà di
condividere e modificare il free software , al fine di assicurare che i
programmi siano “ liberi ” per tutti i loro utenti . [...] Chiunque
può usare questa Licenza per i propri programmi.
17
18
19
20
21
22
23
24
Quando si parla di “ free software ”, ci si riferisce alla libertà ,
non al prezzo . Le nostre Licenze ( la GPL e la LGPL) sono progettate
per assicurarsi che ciascuno abbia la libertà di distribuire copie del
free software (e farsi pagare per questo , se vuole ), che ciascuno
riceva il codice sorgente o che lo possa ottenere se lo desidera , che
ciascuno possa modificare il programma o usarne delle parti in nuovi
programmi “ liberi ” e che ciascuno sappia di potere fare queste cose .
25
26
[...]
27
28
\end{document}
21
gli argomenti, se ce n’è più d’uno; tutte le
seguenti forme danno lo stesso risultato
(il simbolo indica uno spazio):
entrambe inutili.
Q B, C
" >
"
N 3?
@ >
X
?N Vediamo da vicino com’è fatto un comando LATEX. La figura 4.1 riporta come
esempio la prima riga del listato 3.
Ogni comando comincia col carattere ‘\’, seguito da una o più lettere.
Non sono ammessi caratteri
non letterali nel nome di un comando:
\interlinea_2 non è un nome ben formato, ma \InterlineaDoppia si. Con una eccezione: quando il nome di un comando è
costituito da un solo simbolo, questo può
essere qualunque carattere: per esempio,
‘$’, ‘ ’, ecc.
LATEX distingue tra maiuscole e minuscole nei nomi di comandi: \large e
\Large sono comandi diversi, che hanno
effetti diversi.
L’argomento di un comando è sempre del testo racchiuso tra parentesi graffe. Cosa accade a questo testo dipende,
ovviamente, dal comando:
\textcolor{red}{GNU},
\textcolor {red}{GNU},
\textcolor {red} {GNU}.
Quando un argomento è costituito da
un solo carattere, si possono omettere le parentesi graffe; ad esempio, si
può scrivere ‘\textcircled c’ invece di
‘\textcircled{x}’. (Notate l’uso degli
spazi: ‘\textcircledc’ sarebbe andato
bene lo stesso? Perché?)
Attenzione! Questa sintassi non dà
modo a TEX di controllare che il numero di argomenti passati ad un comando
sia quello giusto: quindi non avrete nessun errore sintattico se sbagliate il numero di argomenti, ma, se ne mettete
di più, quelli residui verranno considerati come normale testo, se ne fornite di
meno, quelli che mancano verrano presi dal testo che segue. Ad esempio, se
nell’equazione ‘\frac 1 x = 2’ dimentichiamo
‘x’, LATEX metterà il segno ‘=’ al
\documentclass{article}
denominatore.
comincia un documento di classe article
Le opzioni sono sempre racchiuse fra
(articolo), mentre
parentesi quadre, e sono, come dice il
nome, facoltative: selezionano varianti
\textit{testo corsivo}
nel comportamento di un comando. Per
produce una scritta in carattere corsivo. esempio,
Alcuni comandi accettano più di un ar\documentclass[a4paper]{article}
gomento, ciascuno racchiuso dalle sue
impagina un articolo per la stampa su carparentesi: ad esempio,
ta di formato A4. I comandi che accettano
\textcolor{red}{GNU}
un solo argomento a volte accettano anscrive “GNU” in colore rosso (i dettagli che più di una opzione: in questo caso le
separiamo con una virgola; per esempio,
nella sezione ??).
LATEX ignora eventuali spazi tra un co- \documentclass[a4paper,twocolumn]
{article}
mando ed il suo argomento, come pure tra
22
Figura 4.1: La struttura di un comando LATEX
\documentclass [a4paper] {article}
comando
opzioni
impagina l’articolo in formato A4 e su
due colonne. (La sintassi delle opzioni è
comunque molto variata: qui ho descritto
il sistema più frequente, ma occorre poi
vedere comando per comando; in ogni caso, però, le opzioni sono sempre racchiuse tra parentesi quadre.) Le opzioni sono
chiamate argomenti facoltativi, perché il
loro comportamento è in effetti del tutto
simile a quello degli argomenti.
Q Q 'YZ$ N
3
#*
argomento
Eventuali sottotitoli possono essere aggiunti separandoli con \\:
\title{Licenza Pubblica
Generica GNU \\ Versione 2}
Anche il comando \author vuole un \author
solo argomento, il nome dell’autore. Oltre al nome, si possono indicare altre informazioni come un recapito postale o
l’indirizzo e-mail, basta separare le righe
con \\:
Cominciamo a lavorare un po’ sul docu- \author{Free Software Foundation,
Inc. \\
mento di figura 3: come si fa ad aggiunge675 Mass Ave, \\
re un titolo, l’indicazione di chi ha scritto
Cambridge,
MA 02139, \\
la licenza e quando—un’intestazione inUSA}
somma? LATEX divide questo compito in
due parti:
Si possono anche specificare più autori,
basta separare le relative informazioni
1. dichiarazione di titolo, autore e dacon
\and:
ta con i comandi \title, \author e
\date;
2. creazione della pagina del titolo con
\maketitle.
Ovviamente le tre dichiarazioni devono
precedere la chiamata \maketitle. Tutti questi comandi vanno inseriti nel corpo
del documento.
Il comando \title accetta un solo argomento: il testo che comporrà il titolo
del documento; per esempio,
\and
\author{Free Software Foundation,
Inc. \\
675 Mass Ave, \\
Cambridge, MA 02139, \\
USA \\
(originale inglese)
\and
Gruppo PLUTO e ILS \\
Casella Postale 400 \\
17000 Savona \\
Italia \\
(traduzione italiana)}
\title{Licenza Pubblica
Generica GNU}
Infine, \date specifica la data in cui
23
\date
itle
il documento è stato composto; in mancanza di questa istruzione, LATEX inserirà
[
nella pagina
del titolo la data del giorno
in cui il file viene compilato. All’interno dell’argomento di \date, si può usare il comando \today per indicare la data
odierna:
\date{Scritto il 9/9/1999,
ma compilato \today}
Il comando \maketitle non prende argomenti e può essere posizionato dove
si vuole all’interno del corpo del documento; \maketitle apre una nuova pagina per comporre l’intestazione, tutto quello che viene prima apparirà nelle facciate
precedenti il titolo.
Per prova, inserite \title, \author,
\date e \maketitle nel listato 3, in modo
da produrre un titolo come in figura 4.2.
Q \,] !#*" N $:(@<!#,!"$:#%$
con la forma dichiarativa si possono evidenziare interi brani di testo, anche comprendenti più paragrafi, mentre la prima
forma è limitata ad una porzione di paragrafo: LATEX darà errore se incontra
una riga vuota (fine paragrafo) all’interno
dell’argomento di \emph.
Per prova, evidenziate Licenza Pubblica Generica GNU ogni volta che compare
nel listato 3.
LATEX permette molte altre varianti del
carattere, e tutte ammettono le due forme sintattiche alternative: guardate la tabella 4.1 per un elenco completo. Osservate che i comandi che cambiano lo stile del carattere sono divisi in tre categorie: family, series e shape. I comandi appartenenti a categorie diverse combinano
i loro effetti; nella stessa categoria, solo
l’ultimo prevale. Così
{\itshape Corsivo o
\bfseries Corsivo grassetto}
Il comando per evidenziare una porzio- produce una scritta in corsivo o corsivo
ne di testo è \emph, che accetta un solo grassetto, mentre
argomento: il testo da evidenziare. Ad
{\itshape corsivo e
esempio,
\scshape maiuscoletto}
\emph{Linux} vs. Linux
scrive: corsivo e MAIUSCOLETTO.
Un’ultima nota sull’enfatizzazione: i
produce
comandi \em e \emph, evidenziano, quindi
il loro effetto non è di scegliere sempre un
Linux vs. Linux
carattere corsivo, ma di scegliere un caratEsiste anche un’altra forma di evi- tere che risalti (ma non troppo) rispetto a
denziazione, che produce uguali effetti quello che lo circonda: cosicchè due \em
tipografici, ma ha una sintassi differente: annidati ritornano al carattere dritto.
I comandi di stile con AUC-TEX
AUC-TEX ha un menu per semplificaQuesta seconda forma si chiama “dichia- re l’immissione dei comandi di stile in
rativa”. La differenza sta in questo, che LATEX: cercate “Insert Font” nel menu
{\em Licenza Pubblica Generica GNU}
24
Figura 4.2: La licenza pubblica generica GNU col suo bel titolo.
\textrm{
\textsf{
\texttt{
\textmd{
\textbf{
\textup{
\textit{
\textsl{
\textsc{
}
}
}
}
}
}
}
}
}
\emph{ }
\textnormal{ }
{\rmfamily }
{\sffamily }
{\ttfamily }
{\mdseries }
{\bfseries }
{\upshape }
{\itshape }
{\slshape }
{\scshape }
Tondo o Roman
Lineare o Sans Serif
Typewriter Type
{\em }
{\normalfont }
Medio
Grassetto o Boldface
Dritto o Upright
Corsivo o Italic
Inclinato o Slanted
M AIUSCOLETTO o S MALL C APS
Enfatizzato
Il carattere normale del documento
Tabella 4.1: Le varianti del carattere in LATEX.
25
si possono usare comandi per cambiare il
colore del testo, analoghi a quelli che si
usano per cambiare lo stile dei caratteri:
{\em Evidenziare
^
{\em
nell ’} evidenziazione }
\textcolor{ b colore c }{ b testo c }
{\color{ b colore c } b testo c }
Evidenziare nell’evidenziazione
Esempio 1: Doppie evidenziazioni
“LaTeX” ed avrete un elenco completo di tutti i tipi di caratteri possibili in
LATEX standard. Selezionando uno stile, AUC-TEX scriverà per voi il comando corrispondente. Per ogni voce del menu “Insert Font” è disponibile una scorciatoia da tastiera, per rendere più veloce
l’immissione nel testo.
I menu “Change Font” e “Delete Font”
servono invece per cambiare lo stile di
un blocco di testo già evidenziato, oppure per togliere ogni effetto e tornare
al carattere normale. Per usarli, portate il cursore all’interno di un comando
‘\textqualcosa’ e selezionate la voce di
menu che volete.
Tutti questi comandi si possono applicare anche ad un’area di testo selezionata con il mouse: se evidenziate una regione di testo e poi scegliete una voce dal menu “Insert Font”,
AUC-TEX metterà l’intera regione come
argomento del corrispondente comando
‘\textqualcosa’.
Q _ `#,!#%$a:$ \ textcolor {red}
{Rosso di sera ,
bel tempo si spera}
Rosso di sera, bel tempo si spera
Esempio 2: Esempio di ‘\textcolor’
I nomi dei colori predefiniti sono elencati
in figura 4.3; attenzione a rispettare le maiuscole e minuscole: ‘red’ e ‘Red’ sono in
principio colori differenti!
Colorare lo sfondo delle pagine
Il comando ‘\pagecolor’ permette di \pagecolor
cambiare il colore della pagina corrente e di tutte quelle seguenti, fino al successivo ‘\pagecolor’ oppure alla fine del
documento. La sintassi è:
\pagecolor{ b colore c }
dove ‘ b colore c ’ è il nome di un colore,
come nel comando ‘\textcolor’.
Definire nuovi colori
È possibile definire nuovi colori, con il
comando ‘\definecolor’:
\definecolor
\definecolor{ b nome c }{ b spazio c }
LATEX permette anche di colorare
{ b coordinate c }
parti di testo:
per usare il colore, inserite nel preambolo la riga dove ‘ b nome c ’ è il nome che vogliamo da‘\usepackage[usenames]{color}’. Così re al nuovo colore, per usarlo nei coman-
26
Figura 4.3: I colori disponibili con l’estensione ‘color’ e l’opzione‘usenames’.
GreenYellow, Yellow, Goldenrod, Dandelion, Apricot, Peach, Melon, YellowOrange,
Orange, BurntOrange, Bittersweet, RedOrange, Mahogany, Maroon, BrickRed, Red,
OrangeRed, RubineRed, WildStrawberry, Salmon, CarnationPink, Magenta,
VioletRed, Rhodamine, Mulberry, RedViolet, Fuchsia, Lavender, Thistle, Orchid,
DarkOrchid, Purple, Plum, Violet, RoyalPurple, BlueViolet, Periwinkle, CadetBlue,
CornflowerBlue, MidnightBlue, NavyBlue, RoyalBlue, Blue, Cerulean, Cyan,
ProcessBlue, SkyBlue, Turquoise, TealBlue, Aquamarine, BlueGreen, Emerald,
JungleGreen, SeaGreen, Green, ForestGreen, PineGreen, LimeGreen, YellowGreen,
SpringGreen, OliveGreen, RawSienna, Sepia, Brown, Tan, Gray, Black, White
di ‘\textcolor’, mentre b spazio c determina la forma delle b coordinate c nel modo
seguente:
rgb nello spazio ‘rgb’ le coordinate sono
tre numeri decimali compresi tra 0 e
1, separati da virgole, che individuano le componenti del colore in termini di rosso, verde e blu (nell’ordine):
ad esempio,
\definecolor{lavanda}
{cmyk}{0,0.48,0,0}
Attenzione! Il programma TEX non è
stato pensato per gestire la stampa a colori. L’uso dei colori è un’aggiunta esterna ed il suo trattamento ricade essenzialmente sul programma di conversione per
la stampa; questo ha due conseguenze
importanti:
d
\definecolor{grigio}
{rgb}{0.5,0.5,0.5}
d
XDvi in genere non mostra i colori;
sistemi di stampa diversi da DviPS
richiedono opzioni appropriate per
l’estensione ‘color’, e possono cambiare i nomi ed il numero dei colori
disponibili.
gray nello spazio ‘gray’ l’unica coordinata è un numero decimale compreso tra 0 e 1: 0 corrisponde al bianco, 1 al nero, e i numeri di mezzo
variano tra le tonalità di grigio: ad Consultate il manuale “Packages in
esempio,
the ‘graphics’ bundle” [vedi /usr/doc/
texmf/latex/graphics/grfguide.ps],
\definecolor{grigio}
per un elenco completo delle opzioni e
{gray}{0.5}
dei possibili malfunzionamenti.
cmyk nello spazio ‘cmyk’ le coordi- Q fe" O#* > ($(##8#*
nate sono quattro numeri decimali compresi tra 0 e 1 che indivi- Gli errori, si sa, capitano; ma con LATEX
duano le componenti del colore in capitano più spesso. Se state leggendo
quadricromia: ad esempio,
questa sezione perché siete incorsi in un
27
errore, consolatevi guardando quanti altri
avete evitato :-)
Quando LATEX incontra un errore, mostra un messaggio come quello di figura 4.4. Vediamo da vicino com’è fatto: la
riga 1 riporta il messaggio d’errore vero
e proprio; le righe 7–8 riportano la linea
del file dove LATEX ha incontrato l’errore,
spezzata proprio nel punto dove l’errore è
occorso: la riga 7 contiene i caratteri letti
prima dell’errore, la riga 8 contiene quelli ancora da leggere; infine il carattere ‘?’,
segnala l’attesa di un comando da parte
dell’utente.
A questo punto ci sono poche scelte:
si può rispondere ‘X’ per uscire da LATEX,
‘H’ per avere un breve messaggio di aiuto
relativo all’errore appena prodotto, ‘Invio’
per chiedere a LATEX di ignorare l’errore
e procedere oppure ‘S’ per proseguire ed
evitare di fermarsi agli errori successivi,
infine ‘?’ vi ricorderà tutte queste scelte.
Il resto di questa sezione riporta un piccolo elenco, in ordine alfabetico, dei messaggi d’errore che più facilmente avreste
potuto ottenere a questo punto.
in cerca della parentesi errata. (Consiglio
a chi usa Emacs di tenere sempre attivo
‘paren-mode’, cfr. 2.2.)
“File ‘nome’ not found.” LATEX cerca
i file, prima, nella directory che contiene il documento che sta compilando, poi,
nelle sotto-directory di ‘/usr/lib/texmf/
tex/’—per far trovare cose in altre locazioni, occorre specificare il percorso
completo.
Se non avete mai visto un file col nome indicato da LATEX, è probabile che
sia uno dei file interni: molti comandi assumono implicitamente che il proprio argomento sia il nome di un file,
per esempio ‘\usepackage{babel}’ cerca
il file ‘babel.sty’. Ecco un rapido ed incompleto elenco dei tipi di file cercati dai
vari comandi:
.bib : ‘\bibliography{math}’ vuole il
file ‘math.bib’;
.bst :
‘\bibliographystyle{plain}’
vuole il file ‘plain.bst’;
.cls : ‘\documentclass{article}’ vuole
il file ‘article.cls’;
“(Please type a command or say
‘\end’)” Manca ‘\end{document}’ alla .sty : ‘\usepackage{babel}’ vuole il file
fine del file.
‘babel.sty’;
“Argument of \comando has an extra }.” Questo strano errore viene fuori quando un argomento opzionale viene chiuso scorrettamente con ‘}’ e non
con ‘]’: LATEX continua a cercare fino alla fine del paragrafo. Il nome comando
è spesso un comando interno di LATEX,
e non ha alcuna rassomiglianza col comando che veramente ha causato l’errore: bisogna guardare la riga dove è occorso l’errore, e scorrere l’intero paragrafo
.tex : ‘\include{cap1}’ vuole il file
‘cap1.tex’;
“Missing \begin{document} .” Non
può esserci testo a stampa nel preambolo del documento, cioè prima di
‘\begin{document}’. Saltare un ‘\’ in
un comando nel preambolo del documento (per esempio ‘usepackage’ invece di
‘\usepackage’) è la causa più frequente di
questo errore.
28
1
Figura 4.4: Un tipico messaggio di errore LATEX.
! LaTeX Error: \usepackage before \documentclass.
2
3
4
5
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
6
7
8
9
l.4 \usepackage[italian]{
babel}
?
“Runaway argument?” Mancano le si può continuare la compilazione senza
parentesi graffe a chiudere l’argomento di eccessivi danni. Le cause più comuni:
un comando. Questo messaggio si acd
Scambio di maiuscole/minuscole:
compagna sempre ad uno più specifico,
TEX distingue le lettere maiuscocome: “File ended while scanning use of
le
da quelle minuscole nei nomi
\comando.” oppure “Paragraph ended bedi
comandi: ‘\documentclass’ e
fore \comando was complete.”; purtrop‘
\Documentclass
’ sono due comandi
po, ‘\comando’ di solito è il nome di un
diversi,
ed
il
secondo
non esiste.
A
comando interno di LTEX. Prendete nod
ta della riga dove è avvenuto l’errore e
Il nome del comando è errato: alzi la
esaminate tutto il paragrafo alla ricerca
mano chi non ha mai scritto ‘\textt’
della parentesi graffa perduta. (Chi usa
invece di ‘\texttt’!
AUC-TEX prema ‘Control+c’ seguito da
d
Manca ‘\documentclass’:
se
‘‘’.)
‘\documentclass’ non è all’inizio
“Too many }’s.” Il bilanciamento deldel documento, il primo comando
le parentesi è sbagliato: avete chiuso più
produrrà questo errore; anche uno
gruppi di quanti ne abbiate aperti, oppure
spazio tra ‘\’ e ‘documentclass’
ne avete aperti troppi. Spesso capita che
causerà questo errore (‘\ ’ è un
il punto in cui TEX si accorge dell’errocomando!).
re sia più avanti del punto in cui effettivamente manca una parentesi. In questi
casi, ‘paren-mode’ di Emacs può essere di
aiuto (cfr. 2.2).
“Undefined control sequence.” TEX
ha incontrato un comando sconosciuto.
Questo è un errore disastroso nel preambolo, ma nel corpo del documento spesso
29
g
In questo capitolo vediamo meglio come scrivere il testo ordinario in LATEX, e
dargli la prima struttura: una divisione in
capitoli, sezioni, ecc.
\, ($ "h`# N #*
Il testo ordinario è la cosa più naturale da
scrivere con TEX: si scrivono i paragrafi
come in un comune file ASCII. LATEX osserva le seguenti regole quando compone
un capoverso.
1. LATEX ignora il numero degli spazi tra una parola e l’altra, e regola
automaticamente la distanza quando compone la pagina. I caratteri
di fine-riga e di tabulazione vengono
considerati come spazi.
2. Un paragrafo è terminato da una o
più righe vuote, oppure dal comando
‘\par’.
3. LATEX rientra un poco la prima riga di ogni nuovo capoverso, tranne
quando il capoverso segue un titolo.
4. Tutti i caratteri possono apparire nel
testo, eccetto quelli elencati nella
tabella 5.1, che hanno un significato speciale per TEX. Si usa un
comando per produrre il simbolo
corrispondente ai caratteri speciali.
Facciamo una precisazione a quanto
detto poco sopra: TEX ignora ogni carattere bianco (spazio, carattere di fine-riga o
di tabulazione) che segue un comando, in
particolare LATEX ignorerà ogni spazio dopo comandi che producono simboli (come quelli della tabella 5.1). Una maniera di mettere uno spazio dopo un comando senza argomenti è di farlo seguire dal
comando ‘\ ’ (barra inversa+spazio),
per esempio: ‘\LaTeX\ ’: ‘\ ’ inserisce
forzosamente uno spazio nella riga.
LATEX rientra un poco la prima riga di
ogni capoverso che non segue un titolo (di capitolo, di sezione, ecc.). Occasionalmente, può essere necessario eliminare questo rientro: in tal caso, basta cominciare il paragrafo col comando
‘\noindent’ (senza farlo seguire da ‘\ ’). \noindent
Per forzare il rientro, invece, si usa il
comando ‘\indent’.
\indent
Il carattere ‘%’ si usa per introdurre un
commento: TEX ignora il resto della riga.
Il carattere ‘~’ si usa per produrre
uno spazio che “lega” due parole: TEX
non spezzerà mai una riga di testo in
corrispondenza di ‘~’.
30
ote
Accenti
Se
inserite
la
riga
‘\usepackage[latin1]inputenc’
nel
preambolo del documento, non dovrete
preoccuparvi delle lettere accentate:
LATEX riconoscerà tutti i caratteri che
sono su una tastiera italiana. Tuttavia,
può capitare di dover ricorrere ad altri
accenti (magari per scrivere nomi non
italiani). La tabella 5.2 riporta i comandi
che si possono usare per queste evenienze. Questi comandi permettono di
scrivere lettere accentate anche in un file
di testo contenente solo i caratteri ASCII,
o avendo a disposizione una tastiera
americana.
Tutti i comandi che producono accenti sono implementati in modo da sovrapporre un segno all’argomento: un po’ come se in una macchina da scrivere battessimo un apostrofo, poi tornassimo indietro e scrivessimo una ‘a’ per ottenere ‘á’. Se XDvi si lamenta che “overstrike characters may look incorrect”, aggiungete la riga ‘XDvi*thorough: true’
al file ‘/etc/X11/Xresources’.
Notate che si possono omettere le parentesi graffe quando l’argomento di un
comando è costituito di una sola lettera:
possiamo scrivere \’e invece di \’{e}: i
due modi sono del tutto equivalenti.
automaticamente le note, e ricomincia a
contare da ‘1’ con ogni nuovo capitolo.
Don’t use footnotes in your books,
Don.\ footnote { Jill Knuth, citazione
in “ The {\TeX}book ”, pag.~125}
Don’t use footnotes in your books,
Don.a
a Jill Knuth, citazione in “The T Xbook”,
E
pag. 125
Esempio 3: Esempio di ‘\footnote’
Quando si usano parecchie note a pié
di pagina, è meglio caricare l’estensione ‘footmisc’, che estende il supporto di
LATEX per le note a pié di pagina e lo
irrobustisce: inserite nel preambolo del
documento la riga
\usepackage[ b opzioni c ]{footmisc}
dove le b opzioni c sono scelte dalla lista
seguente e separate da una virgola:
multiple da usare quando si ha necessità
di apporre più note alla stessa parola
o frase;
para compone le note di una pagina tutte
in un solo capoverso, nello stile che
\, /,R $ $W!($ "
è comune nelle edizioni critiche—da
usare quando occorre inserire nella
Per inserire note a pié di pagina, si usa il
stessa pagina un gran numero di note
comando ‘\footnote’, che prende un solo
piuttosto brevi;
argomento: il testo della nota. Questo comando deve seguire la frase a cui si rife- perpage ricomincia a numerare le note
risce la nota, senza alcuno spazio tra l’ulda ‘1’ con ogni nuova pagina, invece
tima parola e ‘\footnote’. LATEX numera
che con ogni nuovo capitolo;
31
footmisc
stable permette di mettere note a pié di
pagina anche nei titoli; [È giusto il
apre una sezione intitolata “Nubi di ieri ”. Attenzione! Nella classe di
titolo? Elio e documento ‘article’ manca la divisione
le Storie
Per le altre opzioni e possibilità
offerte ‘\chapter’.
tese, etc.]alla
dall’estensione footmisc, vi rimando
relativa documentazione.[vedi /usr/doc/ Profondità di numerazione delle
sezioni
texmf/latex/footmisc/footmisc.dvi]
Normalmente, le sotto-sezioni sono nuNote al margine
merate e le sotto-sotto-sezioni no, ma, ocÈ possibile mettere anche note al margine
casionalmente, occorre numerare anche le
del testo, con il comando
suddivisioni più fini; il comando
\marginpar{ b testo c }
\setcounter{secnumdepth}{b livello c }
Le note appariranno sul margine esterno;
specificando un argomento facoltativo a
‘\marginpar’, è possibile posizionare una
nota sul margine interno:
\marginpar[ b interno c ]{ b esterno c }
nel preambolo del documento istruisce
LATEX a numerare le divisioni del testo fino alla profondità ‘ b livello c ’ (inclusa): un
livello di 6 indica ‘\subparagraph’, mentre -1 identifica ‘\part’ (tranne che nella
classe ‘article’ dove è 0).
il testo ‘ b interno c ’ finirà, appunto, sul
margine interno, mentre ‘ b esterno c ’ sul- Appendici
l’altro margine.
Il comando ‘\appendix’comincia le ap- \appendix
> $
\, B,i V( N $:#8$& N @ 3
7 pendici: dopo questo comando, ogni
istruzione ‘\chapter’inizierà una divi $:;X sione intitolata “Appendice” e non più
A
LTEX definisce 7 comandi per dividere “Capitolo”.
il testo in capitoli, sezioni, paragrafi,
ecc.; dal più “esterno” al più “interno” Personalizzare l’aspetto dei titoli
sono: ‘\part’, ‘\chapter’, ‘\section’, L’estensione ‘titlesec [vedi http: titlesec
er
‘\subsection’,
‘\subsubsection’, //www.ctan.org/macros/latex/contrib/
permette
di
‘\paragraph’, ‘\subparagraph’.
Tutti supported/titlesec]’
on
ction questi comandi hanno la stessa sintassi: personalizzare l’aspetto dei titoli, per
bsection
accettano un solo argomento, il titolo, soddisfare le più diverse necessità.
raph e devono comparire all’inizio della Tuttavia l’autore avverte che titlesec è
ragraphdivisione di testo che individuano. Per un pacchetto “per il professionista della
tipografia che sa bene cosa vuole fare,
esempio,
più che per l’utente occasionale di LATEX,
\section{Nubi di ieri sul nostro
che è grossomodo soddisfatto delle classi
domani odierno}
standard.” Uomo avvisato 32
er*
on*
\, Q R:j 1N @k$
>l>
!#*
apre una sezione intitolata “Grunt grunt
Uno dei grossi vantaggi di LATEX è che ge- grunt” (argomento) ma nel sommario
nera automaticamente l’indice sommario. questo titolo sarà riportato come “Grunt,
ecc.”
Per inserire l’indice sommario nel
> $
documento, si usa il comando:
\, \,m Kn$(#*
( @k#8@k"!
\tableofcontents
che verrà sostituito da una o più pagine.
Normalmente, vengono riportate nell’indice solo i titoli del testo fino alla profondità di sotto-sezione; se occasionalmente
si desidera un indice più (o meno) dettagliato, si può mettere nel preambolo il
comando:
\setcounter{tocdepth}{b livello c }
dove ‘ b livello c ’ ha gli stessi valori che in
‘secnumdepth’ (vedi la sezione 5.3.1).
Talvolta si vuole che una sezione non
sia numerata ma non appaia nell’indice sommario: esistono varianti dei comandi di divisione del testo che assolvono questo compito: basta appendere un
‘*’ al nome del comando di titolazione:
‘\chapter*’, ‘\section*’, ecc. La sintassi
rimane la stessa.
Infine, a volte capita che un titolo sia
troppo lungo per una riga dell’indice; i
comandi di sezionamento hanno quindi
una sintassi alternativa per gestire questi
casi:
LATEX può generare automaticamente riferimenti ai numeri di sezioni, capitoli, ecc.
oppure alle rispettive pagine. Per ottenere
questo effetto, bisogna marcare una sezione (o capitolo, o paragrafo, ecc.) col comando ‘\label’. Questo comando vuole \label
un solo argomento, un’etichetta composta
di soli caratteri ASCII (niente lettere accentate!) con cui identificare la divisione
nei riferimenti:
\section{Riferimenti incrociati}
\label{sec:text/ref}
Con il comando ‘\ref’ ci si può riferire \ref
ad una sezione marcata in qualunque altra
parte del documento; questo comando accetta un solo argomento, l’etichetta identificativa della sezione, e viene sostituito
da LATEX col numero di sezione (quello
che accompagna il titolo). Esiste anche
un comando ‘\pageref’, con la stessa sin- \pageref
tassi di ‘\ref’, che invece viene sostituito da LATEX con il numero di pagina del
corrispondente comando ‘\label’.
\section[ b titolo-per-sommario c ]
{ b titolo c }
Vedi la sezione ~\ ref {sec : text / ref },
a pagina~\ pageref{sec : text / ref }.
Per esempio:
Vedi la sezione 5.5, a pagina 33.
\section[Grunt, ecc.]{Grunt grunt
bla scrunf burp burp bla blo
dribble dribble roll roll grunt}
Esempio 4: Esempio di ‘\ref’ e ‘\pageref’
33
bels
Attenzione! Per inserire i riferimenti corretti, LATEX ha bisogno di compilao il file. Se alla fine della sere due volte
conda compilazione vedrete il messaggio
“there were unresolved references”, può
darsi che qualche etichetta usata in \ref
non abbia una corrispondente \label. In
questi casi può essere utile ricompilare
il file caricando l’estensione ‘showlabels’
(‘\usepackage{showlabels}’ nel preambolo) che mostra sul margine del foglio
tutte le etichette definite nel documento,
proprio nel punto in cui sono definite da
un comando \label.
L’estensione ‘varioref’ L’estensione
‘varioref’ definisce un comando ‘\vref’,
con la stessa sintassi di ‘\ref’, che inserisce automaticamente dopo il riferimento
al numero di sezione anche un rimando
alla pagina del documento in cui appare.
Il vantaggio di ‘\vref’ sull’uso combinato di ‘\ref’ e ‘\pageref’ sta nel fatto
che ‘\vref’ ometterà ogni riferimento al
numero di pagina se la destinazione è
sulla facciata corrente, oppure inserirà
una coda come “a fronte” se il bersaglio
del riferimento si trova sulla facciata
opposta.
\,_ C#*($:## `#*
Ecco una carrellata sugli errori che potrebbero venire dai nuovi comandi descritti in questo capitolo. Ovviamente,
potrebbe capitarvi anche uno degli errori
descritti nel capitolo precedente; sappiate
essere sportivi :-).
Andate alla sezione
\ vref {sec :env/quote },
direttamente e senza
passare dal via , poi
rileggete la sezione
\ vref {sec : text / ref }
Andate alla sezione 6.2 a pagina 38,
direttamente e senza passare dal via,
poi rileggete la sezione 5.5 nella
pagina precedente
Esempio 5: Esempio di ‘\vref’
(vedi la descrizione di questo stesso errore in sezione 4.7), oppure volevate scrivere ‘\}’ ma avete saltato ‘\’. Questo errore occorre anche se cercate di mettere
un comando ‘\footnote’ nel titolo di una
sezione, senza aver caricato l’estensione
‘footmisc’ con l’opzione ‘stable’.
“Command
unavailable
in
encoding OT1.” Manca la riga
‘\usepackage{T1}{fontenc}’ nel preambolo del documento: state cercando di
inserire un carattere che non esiste nel
font corrente.
“Misplaced alignment tab character
&.” Può essere causato dal carattere riservato ‘&’: per introdurre “&” nel testo,
si deve usare ‘\&’: vedi tabella 5.1.
“Missing \endcsname inserted.” Può
essere causato da un carattere “proibito” all’interno dell’argomento di \label,
“Argument of has an extra }.” Un \ref, \pageref, ecc. I caratteri proibiti
argomento opzionale è stato chiuso con variano a seconda delle estensioni caricauna parentesi graffa invece che quadra te: è bene in genere limitarsi alle lettere
34
(non accentate!), i simboli ‘+’ e ‘-’, ed i
segni di interpunzione.
“Missing $ inserted.” Può essere causato dai caratteri riservati ‘ˆ’, ‘_’ o ‘$’:
per introdurre uno di questi nel testo,
si devono usare ‘\^’, ‘\_’ o ‘\$’ (vedi
tabella 5.1).
“Missing number, treated as zero.”
Manca il secondo argomento di un comando ‘\setcounter’, oppure non è un
numero.
“Paragraph ended before was complete.” Manca la parentesi (graffa o
quadra) di chiusura dell’argomento di
qualche comando. Oppure, manca del
tutto un argomento obbligatorio ed il
comando appare in fine di paragrafo.
“Too many }’s.” C’è una parentesi
graffa di troppo (vedi la descrizione di
questo stesso errore in sezione 4.7), oppure volevate scrivere ‘\}’ ma avete saltato
‘\’.
“Too many unprocessed floats.” Troppi comandi ‘\marginpar’ all’interno dello
stesso paragrafo (in genere il limite è 7).
35
#
$
&
_
§
\#
\$
\&
\_
\S
{
%
<
^
¡
\{
\%
\textless
\textasciicircum
\textexclamdown
}
\
>
~
¿
\}
\textbackslash
\textgreater
\textasciitilde
\textquestiondown
Tabella 5.1: I caratteri speciali in LATEX, ed i comandi per produrne i simboli nel testo.
\‘o
\v{o}
\.o
{\i}
ò
ǒ
ȯ
ı
\’o
\H{o}
\b{o}
ó
ő
o
¯
\=o
\"o
\t{oo}
ō
ö
oo
p
\^o
\d{o}
\c{c}
ô
o.
ç
\u{o}
\~o
\r{o}
ŏ
õ
o̊
Tabella 5.2: I comandi che producono accenti in LATEX. Si può mettere ogni tipo di accento
sopra ogni lettera. La ‘ı’ si usa in combinazione con i comandi di accento per produrre ‘i’
correttamente accentate.
36
7q
LATEX può comporre automaticamente [...] una frase di Groucho Marx,
i testi impaginando le varie porzioni se- \begin{quote}
All’infuori del cane, il libro è
condo le convenzioni tipografiche opporil miglior amico dell’uomo; dentro
tune: se, ad esempio, ora volessi inserire
il cane è troppo buio per leggere.
1
una frase di Groucho Marx —
All’infuori del cane, il libro è il
miglior amico dell’uomo; dentro il cane è troppo buio per
leggere.
\end{quote}
mi basterebbe indicare a \LaTeX\
che questa frase costituisce, appunto,
una citazione [...]
L’esempio qui sopra mostra la forma
più
generale di queste indicazioni:
— mi basterebbe indicare a LATEX che
questa frase costituisce, appunto, una ci- \begin{ b tipo c } testo \end{ b tipo c }
tazione, per far sì che LATEX la impagini
Questi blocchi \begin{} \end{} si
in un paragrafo a sé stante e con i margini
chiamano ambienti (in inglese environrientrati.
ments) nel gergo di LATEX. Gli ambienti
Poiché LATEX non può capire il contesono usati in LATEX per modificare temponuto di un testo né discernere le varie parti
raneamente le convenzioni tipografiche, e
e la loro rilevanza, sta all’autore istruirlo
per contrassegnare ogni porzione del file
con appositi comandi, che indicano quache non sia composta da testo ordinario.
le sia il ruolo logico delle porzioni di teTra gli utilizzi tipici degli ambienti delsto, oppure se alcune parti debbano rila prima famiglia rientrano, ad esempio:
cevere un trattamento tipografico particousare un carattere più piccolo per evidenlare (una tabella, una figura, ecc.). Per
ziare che un paragrafo può essere omesso
esempio, la citazione precedente è stata
in prima lettura, centrare un gruppo di riprodotta così:
ghe anziché giustificarlo ai margini, ecc.
1 Questa e le altre battute di Groucho Marx soNella seconda classe di ambienti rientrano tratte dal libro “Se mi sposi, non guarderò mai
no, per esempio, citazioni lunghe, enunpiù un altro cavallo”, curato da Marco Spagnoli per le edizioni Stampa Alternativa (http://www. ciati di teoremi, gruppi di versi, tabelle,
stampalternativa.it).
listati di un programma, ecc.
37
ion
>lr $
_ $:#*#8$W
"(@k CFEGIH' ) +
AUC-TEX ha un menu per semplificare
l’immissione di ambienti in un file LATEX:
cercate “Insert Environment” nel menu
“LaTeX” ed avrete un elenco di circa 70
ambienti possibili in LATEX: selezionatene
uno, e AUC-TEX scriverà per voi la corrispondente coppia di istruzioni. Al posto
del menu, è possibile usare una scorciatoia da tastiera; attivandola, AUC-TEX chiederà il nome di un ambiente da inserire:
così è possibile immettere anche ambienti
non elencati nel menu.
Il menu “Change Environment” permette di cambiare l’ambiente che racchiude la porzione di testo su cui insiste il cursore; si usa allo stesso modo che “Insert
Environment”.
Tutti questi comandi si possono applicare anche ad un’area di testo selezionata
con il mouse: se evidenziate una regione
di testo e poi scegliete una voce dal menu “Insert Environment”, AUC-TEX racchiuderà l’intera regione nell’ambiente
selezionato.
tazioni. La differenza tra i due è solo
estetica: ‘quotation’ rientra la prima riga della citazione, mentre ‘quote’ no. Il
primo dei due è più adatto per riportare
lunghi brani di testo; il secondo si usa meglio per citazioni più brevi. Per rendervi
conto della differenza, provate a sostituire
‘quote’ con ‘quotation’ nell’esempio fatto prima; provate anche a cambiare la citazione con una più lunga. Cosa succede
se si cerca di inserire più paragrafi all’interno di un ambiente ‘quotation’, cioè se
si inserisce una riga vuota? (Guardate la
figura 6 per la soluzione.)
_ B,] $(# Inserire una strofa in versi in un documento LATEX richiede ancora un ambiente
testuale, ma, a differenza di quanto accadeva con le citazioni, la divisione in versi ci richiede di adottare convenzioni leggermente differenti per l’inserimento del
testo.
LATEX definisce un ambiente ‘verse’ verse
per inserire parti in poesia. Guardiamo
l’esempio 7: i versi si separano con \\ e le
strofe con una o più righe vuote. Perché i
_ /, s !;X due versi di mezzo hanno l’ultima parola
a capo, un poco rientrata? Cosa succede
Le citazioni forniscono il più semplice mettendo lo stesso esempio da solo in una
esempio di ambiente testuale: un para- pagina?
grafo interamente citato da un’altra fonte deve risaltare tipograficamente (quindi _ Q ) KMKM$:","
O 2 #, 0 @k
occorre richiedere a LATEX un trattamento
speciale), ma continua ad essere costitui- Gli ambienti tipografici si possono usato da testo ordinario (quindi non devono re anche per forzare LATEX a comporre il
valere convenzioni speciali come per le testo in una particolare maniera: i priformule, dove gli spazi vengono ignorati). mi esempi sono gli ambienti che cambiaLATEX mette a disposizione gli ambien- no l’allineamento del testo e quelli che
ti ‘quotation’ e ‘quote’ per indicare ci- modificano la dimensione dei caratteri.
38
Ancora Groucho Marx:
Ancora Groucho Marx:
\ begin{ quotation }
Non sono contrario ad adottare
l ’usanza giapponese di dormire sul
pavimento . [\ dots ] Qui se un uomo
alza il gomito finisce a dormire sul
pavimento , magari sotto il tavolo .
Non sono contrario ad
adottare l’usanza giapponese
di dormire sul pavimento. [ ] Qui se un uomo alza il
gomito finisce a dormire sul
pavimento, magari sotto il
tavolo.
In Giappone, invece,
sarebbe già a letto.
In Giappone, invece ,
sarebbe già a letto .
\end{quotation}
Esempio 6: Una citazione lunga più paragrafi.
Il limite a cui tendeva
Veloce successione,
La semplice espressione
Del seno e del cosen.
\ begin{verse}
Il limite a cui tendeva \\
Veloce successione , \\
La semplice espressione \\
Del seno e del cosen.
La tesi del teorema
Dimostrò tutta or ora
Se una funzion maggiora
Nel senso di Lebesgue.
La tesi del teorema \\
Dimostrò tutta or ora \\
Se una funzion maggiora \\
Nel senso di Lebesgue.
\end{verse}
Esempio 7: Due stanze scritte utilizzando l’ambiente ‘verse’. (Frammento attribuito ad anonimo di scuola barbecuista, ricopiato in LATEX. Per maggiori informazioni su Nicolas Barbecue e
la sua scuola, vedi http://www.mat.uniroma1.it/~mascia/bbq.html.)
39
eft
ight
Allineare il testo
LATEX definisce tre ambienti che modifi[
cano l’allineamento
del testo ai margini:
‘flushleft’, ‘flushright’ e ‘center’. I
primi due allineano il testo al margine sinistro e a quello destro, rispettivamente,
mentre l’ultimo centra ogni riga.
Le righe all’interno di uno di questi
ambienti possono essere separate col comando \\. In mancanza di questa indicazione esplicita, LATEX spezzerà una riga
quando questa è troppo larga per stare entro i margini della pagina, ma eviterà di
allargare lo spazio tra le parole per giustificare il testo: provate gli esempi delle figure 8 e 6.1, e confrontateli. Cosa succede se si inserisce un paragrafo flushright
dentro un ambiente quotation?
Figura 6.1: Paragrafi di testo sbandierato. Il
testo di ogni paragrafo è scritto senza indicare esplicitamente le interruzioni tra una riga e
l’altra.
\begin{flushleft}
Per quanto ne so io, non c’è una parola di
vero in quello che ho scritto, ma mi sento
abbastanza al sicuro. [ ] nessuno avrà
il tempo di controllare la veridicità di
qualsiasi affermazione. (Groucho Marx)
\end{flushleft}
Ridimensionare il carattere
Ci sono dieci dimensioni del caratte- \begin{center}
re sempre disponibili in LATEX; dal- La mia punteggiatura non va mai oltre la
virgola ed il punto. Le cose più
la più piccola alla più grande, sono:
complicate
mi fanno venire le vertigini.
tiny, scriptsize, footnotesize, small,
(Groucho
Marx)
normalsize, large, Large, LARGE, huge,
\end{center}
Huge. Per ciascuna di queste esiste un ambiente che compone il testo in quel cor- \begin{flushright}
Non pretendo che comprendiate il
po (vedi figura 6.2). È possibile usare i
significato di quello che ho scritto senza
comandi di ridimensionamento in forma
averlo riletto un certo numero di volte. [
dichiarativa: ad esempio, si può scrivere
] Io l’ho letto sei volte ed ancora non
{\small b testo c }
l’ho capito. (Groucho Marx)
\end{flushright}
invece di
\begin{small} b testo c \end{small}
I due modi hanno gli stessi effetti.
Le dimensioni del carattere sono relative a normalsize: le opzioni 10pt,
11pt, 12pt di \documentclass impostano
la grandezza di normalsize, e tutte le altre dimensioni sono calcolate a partire da
40
Figura 6.2: Le varie dimensioni del carattere disponibili in LATEX.
\begin{tiny}
\begin{scriptsize}
\begin{footnotesize}
LATEX
LATEX
LATEX
\end{tiny}
\begin{small}
LATEX
\end{small}
\end{scriptsize}
\begin{normalsize}
LATEX
\end{footnotesize}
\begin{large}
LATEX
\end{normalsize}
\begin{LARGE}
\end{large}
\begin{huge}
\begin{Large}
LATEX
\end{Large}
LATEX
LATEX
\end{LARGE}
\end{huge}
\begin{Huge}
\begin{...}
\LaTeX
\end{...}
LATEX
\end{Huge}
queste. È molto complicato convincere
LATEX ad usare per un paragrafo un carattere in corpo 18 (ad esempio!). Fissare la
dimensione del carattere usato in un brano di testo rende difficile cambiare poi il
formato della pagina o altri parametri tipografici; siccome LATEX mira a svincolare quanto più possibile un documento
dai particolari formati di pagina, caratteri,
ecc., rende complesso controllare questi
parametri uno alla volta.
Cambiare lo stile del testo
Tutti i comandi che abbiamo già visto
per cambiare lo stile del testo, come
\bfseries o \itshape o \ttfamily, hanno un corrispondente ambiente; perciò
possiamo scrivere:
si possono annidare questi ambienti
di stile uno dentro l’altro, e gli effetti
si sovrappongono secondo quanto già
spiegato nel capitolo 4.
_ \,R "$t8$:$ @kus,$ N
$ 13 > $(#,;X LATEX permette di introdurre nel testo
liste, elenchi ed enumerazioni tramite
gli ambienti ‘itemize’, ‘description’ e
‘enumerate’.
Elenchi puntati
L’ambiente itemize racchiude un elenco itemize
puntato: si marca l’inizio dei singoli elementi della lista col comando \item. Un
argomento opzionale (cioè racchiuso tra
parentesi quadre ‘[’ e ‘]’) ad un comando
\begin{itshape}
\item permette di mettere del testo al poQuesto testo è in corsivo.
sto del puntino di elenco. Gli elenchi pos\end{itshape}
sono essere annidati uno dentro l’altro, fial
posto
di no ad una profondità massima di quattro.
‘{\itshape Questo testo è in corsivo.}’LATEX userà per ogni elenco un contrassee con lo stesso risultato. Ovviamente gno diverso (per il più esterno un puntino,
41
Le serie del calcio:
Le serie del calcio :
\ begin{itemize}
\item A;
\item B;
\item[x ] poi :
\begin{itemize}
\item C 1; \ item C2;
\end{itemize}
\item ecc .
\end{itemize}
d
d
A;
B;
x poi:
– C1;
– C2;
d
ecc.
Esempio 10: Un elenco puntato
poi una lineetta, ecc.) Cosa succede se si essere numerate le voci dell’elenco. Più
mettono più paragrafi di testo fra un \item precisamente:
ed un altro?
\begin{enumerate}[ b numerazione c ]
Liste
\item prima voce
ption L’ambiente description permette di so\item seconda voce
stituire delle etichette ai puntini che mar
cano l’inizio di un elemento della lista:
\end{enumerate}
il testo dell’etichetta va indicato come arSe ‘ b numerazione c ’ non è specificato,
gomento facoltativo per ciascun comando
le voci dell’elenco vengono contrasse\item.
gnate con il numero d’ordine progressiInserire liste con AUC-TEX
vo, in cifre arabe. Altrimenti, ogni caAUC-TEX inserisce un comando ‘\item’ rattere in ‘ b numerazione c ’ viene copiato
ogni volta che si preme ‘Alt+Invio’; al- nell’etichetta di ciascuno degli elementi
l’interno di un ambiente ‘description’, dell’elenco, fatta eccezione per i seguenti:
AUC-TEX chiederà anche il testo dell’etichetta, e lo accosterà al comando ‘\item’ 1 sostituito col numero d’ordine dell’elemento, in cifre arabe;
tra le parentesi quadre.
I sostituito col numero d’ordine dell’eleEnumerazioni
mento, in cifre romane maiuscole;
L’estensione
‘enumerate’
(‘\usepackage{enumerate}’ nel preami sostituito col numero d’ordine dell’eleate
bolo) definisce un ambiente ‘enumerate’
mento, in cifre romane minuscole;
per produrre, ovviamente, enumerazioni:
questo ambiente ha la stessa sintassi A sostituito col numero d’ordine deldi itemize, ma accetta un argomento
l’elemento, rappresentato con una
opzionale che specifica come debbano
lettera maiuscola dell’alfabeto;
42
\ begin{ flushleft }
^
\LaTeX
\\ a sinistra !
\end{ flushleft }
\ begin{center}
\LaTeX \\ al centro !
\end{center}
\ begin{ flushright }
\LaTeX \\ a destra !
\end{flushright }
\ begin{Large} Ti ringrazio per aver
lodato il mio libro , \ begin{small}
anche se si trattava di una
{\ tiny spudorata } menzogna.
\end{small}\end{Large}
\ begin{huge}
Groucho Marx
\end{huge}
LATEX
a sinistra!
Ti ringrazio per aver lodato il mio libro, anche se si
trattava di una spudorata menzogna.
LATEX
al centro!
Groucho Marx
Esempio 9: Cambiare la dimensione del testo
LATEX
a destra!
Esempio 8: Paragrafi di testo sbandierato.
Le interruzioni di riga sono esplicitamente
indicate.
a sostituito col numero d’ordine dell’elemento, rappresentato con una lettera
minuscola dell’alfabeto;
I caratteri ‘{’ e ‘}’ proteggono il testo
che racchiudono da questa espansione:
ogni cosa tra le parentesi graffe verrà inserita come testo ordinario nell’etichetta,
compresi i 5 caratteri speciali qui sopra.
Si possono includere anche comandi di
stile nell’etichetta, per produrre, ad esempio, una numerazione in carattere grassetto. Tuttavia, le parentesi graffe conservano la loro funzione di protezione del
testo, quindi gli unici comandi effettivamente usabili sono quelli che cambiano
lo stile del testo, solo nella forma lunga
(dichiarativa), e privi delle parentesi graffe che usualmente li racchiudono (quelle
dell’argomento di enumerate svolgeranno questa funzione); ad esempio, provate una enumerazione che comincia con la
riga:
\begin{enumerate}{\Huge\sffamily%
\bfseries A.}
\item
\end{enumerate}
Riferimenti agli elementi di una lista
Una istruzione \label all’interno di un
ambiente enumerate (ma anche itemize
o description) si riferisce sempre al comando \item precedente; ogni comando
\ref che vi si riferisce verrà sostituito
dal numero d’ordine progressivo dell’elemento nell’elenco. Si possono usare anche tutte le varianti di \ref: \pageref,
\vref, ecc.
43
\ begin{enumerate}[{Assioma} I.]
Assioma I.
v
\item\ label
{ax} Per un punto del piano
passano infinite rette .
\item Per due punti :
Assioma II.
\begin{enumerate}[({II}.a )]
\item non ne parliamo proprio !
\item un po ’ più che in \ ref {ax}\ ldots
\item \ ldots ma un po’ meno che per tre .
\end{enumerate}
\end{enumerate}
Per un punto del piano
passano infinite rette.
Per due punti:
(II.a) non ne parliamo
proprio!
(II.b) un po’ più che in I
www
(II.c)
www ma un po’
meno che per tre.
Esempio 12: Esempio riassuntivo di ‘enumerate’
xyxykz{1|X}~,I€:~~ }`~*
“Environment
nome
undefined.”
L’ambiente indicato non esiste: può esseEcco una carrellata sugli errori che po- re un semplice errore di battitura, oppure
trebbero venire dai nuovi comandi de- l’ambiente è definito in una estensione,
scritti in questo capitolo. Ovviamente, che non è stata caricata con un comando
potrebbe capitarvi anche uno degli errori ‘\usepackage’ nel preambolo.
descritti nei capitoli precedenti; sappiate
“File ended while scanning use of www
essere sportivi :-).
” Un argomento (anche facoltativo) non
è stato chiuso; vedi la discussione di
“\begin{xxx} ended by \end{yyy}.” “Runaway argument?” nella sezione 4.7.
C’è ‘\end{yyy}’ dove avrebbe dovuto es“Missing
\endcsname
inserted.”
serci ‘\end{xxx}’. A volte però gli amL’argomento facoltativo di ‘\item’ o
bienti sono chiusi nella maniera corretta,
dell’ambiente enumerate contiene un
e qualcosa ha fatto saltare a LATEX la ficomando che lì non è permesso; vedi
ne di xxx: occorre ricontrollare con molta
anche la discussione di questo stesso
cura il file. In questo caso, può essere utierrore nelle sezioni 5.6 e 4.7.
le far indentare il file a XEmacs: premete ‘Control+Spazio ’ all’inzio della regio- “There’s no line here to end.” Ci sone sospetta, mouvetevi col cursore fino al- no due comandi ‘\\’ di seguito in un amla fine, e poi premete ‘Alt+Control+\ ’: XE- biente ‘verse’, ‘flushleft’, ‘flushright’
macs daraà al testo una struttura “a scalet- o ‘center’, o, peggio ancora, nel mezzo
ta”, in cui il testo racchiuso in una coppia del testo ordinario.
‘\begin–\end’ sarà più distante dal margine sinistro, e tanto più distante quanti più
sono gli ambienti che lo racchiudono.
44
\ begin{ description }
\item[ flushleft ] allinea ogni
riga al margine sinistro ;
\item[ flushright ] allinea ogni
riga al margine destro ;
\item[center ] centra le righe .
\end{ description }
flushleft allinea ogni riga al margine
sinistro;
flushright allinea ogni riga al margine destro;
center centra le righe.
Esempio 11: Una lista
45
‚
ƒ„}…}7†
In questo capitolo si descrivono le
classi standard di documento fornite con
LATEX, e le opzioni possibili. Per finire,
vediamo come suddividere un file in più
parti e come compilarle separatamente.
‡ yˆy‰€&|k…"LŠŠ"YŠ"„ !{1‹F!~%‹Œ‹
‹}|XŽ?l€:{1„}
Ci sono tre classi di documento che sono standard in LATEX: ‘article’, ‘report’ e
‘book’. Il nome della classe di documento è l’unico argomento obbligatorio di
\documentclass (cfr. la sezione 4.3). Praticamente tutti i comandi descritti fin qui
sono definiti nella classe di documento—
non fanno parte del nucleo di LATEX, ma
solo della “interfaccia” tra i meccanismi
interni e l’utente. In teoria, altre classi di
documento potrebbero implementare comandi del tutto diversi da quelli descritti qui; in pratica, le classi di documento alternative si limitano a specializzare
quelle standard per scopi particolari: lettere, tesi, curriculum vitae, ecc. e dunque i comandi standard sono disponibili
(salvo poche eccezioni, ma è sempre bene
controllare la documentazione).
La classe ‘article’ si usa per documenti brevi: questa classe non permette la
divisione in capitoli (manca il comando
‘\chapter’). La classe ‘book’ è stata pensata come base per libri da pubblicare a
stampa, e abilita comandi addizionali per
separare il corpo del libro dagli apparati. La classe ‘report’ è intermedia fra le
due: ha la divisione in capitoli in più di
‘article’, però manca della separazione tra
corpo ed apparati propria di ‘book’.
Le opzioni comuni
Tutte le classi standard riconoscono le
stesse opzioni; eccone un elenco: opzioni che si escludono reciprocamente sono raggruppate in uno stesso paragrafo.
La tabella 7.1 riporta quali opzioni vengono considerate attive in una classe in
mancanza di indicazione contraria.
10pt, 11pt, 12pt Scelgono il corpo
del carattere con cui sarà composto il
documento. Questa è la dimensione
‘\normalsize’. Corpi maggiori o minori richiedono estensioni di LATEX oppure
altre classi di documento.
a4paper, a5paper, b5paper, letterpaper,
legalpaper, executivepaper Il formato
della carta su cui deve essere stampato
il documento. I primi tre sono formati
europei, gli ultimi tre sono americani.
46
oneside, twoside Scegliete ‘twoside’
se stamperete fronte-retro. La tabella 7.1
 è la scelta naturale per ogni
riporta qual
classe di documento.
Tabella 7.1: Le opzioni normalmente abilitate
nelle classi standard.
onecolumn,
twocolumn Scegliete
‘twocolumn’ per impaginare il documento su due colonne. Attenzione!
L’impaginazione delle figure su due
colonne richiede un trattamento diverso:
consultate le sezioni 10.2.3 e 10.3.
twoside
openright
titlepage
letterpaper
onecolumn
final
10pt
article
report
book
no
N/A
no
si
si
si
si
no
no
si
si
si
si
si
si
si
N/A
si
si
si
si
openright, openany Con ‘openright’
LATEX aprirà un nuovo capitolo solo su
una pagina dispari (fronte), lasciando
eventualmente bianca la pagina precedente; con ‘openany’ si elimina questa re- pagine con numeri romani; un comando
strizione. (Questa opzione non ha effetto \chapter inserito quando \frontmatter è
nella classe ‘article’.)
attivo non produrrà un numero accanto al
titolo, ma segnerà ugualmente una riga
titlepage, notitlepage Con ‘titlepage’
nel sommario (cfr. sezione 5.4).
il titolo del documento apparirà su una paTra ‘\mainmatter’ e ‘\backmatter’, \mainmatter
gina a sé stante; con ‘notitlepage’, inc’è
il testo vero e proprio del libro;
A
vece, LTEX inizierà il testo subito dopo,
tutti
i capitoli, comprese le appendici.
senza passare ad una nuova pagina.
‘\mainmatter’ ricomincia la numerazione
final, draft Quando ‘draft’ è attiva, da ‘1’ e passa alle cifre arabe.
LATEX segnerà con un rettangolo nero a laInfine, dopo ‘\backmatter’, seguono in \backmatter
to tutte le righe che sforano nel margine
genere gli indici analitici, eventuali postdella pagina (“Overfull hbox”).
fazioni, bibliografie, ecc. La numerazione
dopo \backmatter continua quella della
La classe ‘book’
La classe ‘book’ prevede una tripartizione parte principale del libro.
dei contenuti del documento, segnate dai
Poiché la prima pagina di un libro
comandi ‘\frontmatter’, ‘\mainmatter’ deve contenere molte più informazioe ‘\backmatter’.
Tutti e tre que- ni che non autore-titolo-data, il comanste istruzioni devono comparire dopo do \maketitle è quasi inutile per i li‘\begin{document}’.
bri, e LATEX definisce un ambiente (cfr.
matter Dopo ‘\frontmatter’ (e prima di capitolo 6) ‘titlepage’: tutto ciò che
‘\mainmatter’), stanno gli apparati inizia- è compreso tra ‘\begin{titlepage}’ e
li del libro: le pagine col titolo, copyright, ‘\end{document}’ verrà composto insieprefazioni, dediche, ecc. Il comando me in una pagina priva di numerazione e
\frontmatter inizia la numerazione delle di intestazioni.
47
de
‡ y ‘,y’“”(‹€:~8€&Z•1…€
Quando un
– documento si fa lungo, è bene
spezzarlo e tenere in file diversi le diverse parti logicamente indipendenti: potremo così ridurre i tempi di compilazione
mentre lavoriamo intensamente (?!) su un
capitolo www
LATEX definisce due comandi per suddividere i file in ingresso: ‘\input’ e
‘\include’. Il comando \input viene
immediatamente sostituito da LATEX con
i contenuti del file indicato come argomento; aggiunge automaticamente una
estensione .tex se manca. Il comando
\include comincia una nuova pagina, e
poi inserisce i contenuti del file .tex indicato nell’argomento; l’estensione .tex
viene sempre aggiunta! Ecco un esempio
per chiarire la differenza:
Compilazioni parziali
LATEX permette di onorare solo alcuni dei
comandi ‘\include’. Esiste un comando ‘\includeonly’ il cui unico argomen- \includeonly
to è una lista di nomi, separati da virgole: solo le istruzioni \include relative ad
una di questi nomi verranno eseguite. Per
esempio,
% solo cap1.tex e cap3.tex
\includeonly{cap1,cap3}
\begin{document}
\include{cap1}
\include{cap2}
\include{cap3}
\end{document}
compila il documento come se contenesse solo il primo ed il terzo file. Tuttavia, se la prima volta abbiamo eseguito una compilazione dell’intero contenuto
(senza \includeonly), nelle compilazioni (parziali) successive i numeri di pagina
% inserisce i contenuti
saranno quelli giusti, anche se nel mezzo
% del file capitolo1.tex
abbiamo saltato qualche capitolo per via
\input{capitolo1.tex}
di \includeonly!
Io consiglio di tenere sempre il corpo
% comincia una nuova pagina,
del documento in un file a parte (p. es.
% ed inserisce capitolo2.tex
‘corpo.tex’), e di includerlo in un generi\include{capitolo2}
co “contenitore” come quello del listato 4.
Una istruzione ‘\input’ può comparire Questo rende più facile “riciclare” i conovunque in un file, mentre ‘\include’ può tenuti di un articolo per trasformarlo, ad
stare solo nel corpo del documento. Ol- esempio, in capitolo di un libro. (I lettotre alla piccola differenza sintattica, c’è ri attenti avranno degli azzeccati sospetti
una differenza più sostanziale tra \input e sul modo con cui è stato messo insieme
questo quaderno. :-)
\include: il secondo memorizza i numeri
di pagina (e di capitolo, di sezione, ecc.)
del testo che viene incluso, e permette di
avere un documento numerato correttamente anche se si eseguono compilazioni
parziali.
48
listingfig 4: Un generico file contenitore: ha la struttura minima necessaria ad un file LATEXe
include ‘corpo.tex’.
1
2
3
% master.tex —`— Generico file contenitore di scritti in LaTeX
%
\documentclass[a4paper, notitlepage , twoside , italian ]{ article }
4
5
6
7
% aggiungere sotto le estensioni usate
\usepackage[ italian ]{babel}
\usepackage[T1]{fontenc}
8
9
\ begin{document}
10
11
12
% i veri contenuti di questo file sono in ‘ corpo. tex ’
\ include{corpo}
13
14
\end{document}
15
16
17
18
19
20
21
22
%%% (Le righe qui sotto sono per AUC — TeX/Emacs; nel file "corpo. tex "
%%% scrivete " master. tex " al posto di ’ t ’ nella riga ‘ TeX — master’)
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX — master: t
%%% End:
49
‚
ƒ„}…}7˜
A conclusione di questa prima parte
sulla scrittura di un documento con LATEX,
passiamo rapidamente in rassegna i comandi per aggiustare nei dettagli la veste tipografica finale. Questo capitolo non
può sostituire un buon manuale di stile
(ad esempio [3]): non spiega quali siano i ritocchi più opportuni da fare, ma solo i metodi disponibili in TEX per affrontare un certo problema; anche in questo,
poi, la trattazione sarà panoramica e superficiale: per conoscere la vera potenza
di TEX e il funzionamento degli algoritmi
interni il riferimento insostituibile è [1].
L’ordine delle sezioni in questo capitolo rispecchia l’ordine di questi interventi finali sul documento. Ultima avvertenza: questi ritocchi sono in genere di minima entità, e possono essere annullati da
una piccola modifica del testo; conviene
sempre procedere agli aggiustamenti finali solo quando si è certi che non si faranno
ulteriori interventi sul testo!
le virgolette chiuse). Mettendone due
in fila, TEX produrrà la giusta coppia di
virgolette alte. Per le ottenere le virgolette basse, si possono usare i comandi ‘\guillemotleft’ e ‘\guillemotright’ \guillemotleft
(se la vostra tastiera vi permette di scrive- \guillemotright
re direttamente i caratteri ‘«’ e ‘»’, potete usarli direttamente nel documento caricando l’estensione ‘inputenc ’ con l’opzione ‘latin1’). La tabella 8.1 elenca tutti i diversi tipi di virgolette disponibili in
LATEX.
“ www ”
\guillemotleft w ww \guillemotright
\guilsinglleft w ww \guilsinglright
\quotedblbase
\quotesinglbase
“ www ”
« www »
‹ www ›
„
‚
Tabella 8.1: I diversi tipi di virgolette disponibili in LATEX. Per gli ultimi tre tipi, occorre caricare l’estensione ‘fontenc’
con la riga ‘\usepackage [T1] {fontenc}’ nel
preambolo.
™yˆyš1|k|k}`…Z‹€:„"„ !›Z…:„"ƒO}›(~,!•1|X
Si può usare il comando ‘\,’ per met- \,
Virgolette. Non si usa il carattere ‘"’
tere un po’ di spazio tra le virgolette ed
per produrre le virgolette con TEX, beneventuali apostrofi:
sì la coppia di caratteri ‘‘’ (accento, per
‘‘Di spazio un altro po’\,’’
le virgolette aperte) e ‘’’ (apostrofo, per
50
Trattini. TEX permette tre specie di
tratti: il trattino ‘-’, il tratto medio ‘–’, ed
–
il tratto lungo
‘—’. Il primo si produce
con un carattere ‘-’, il secondo con due in
successione, il terzo con tre.
‘ssh — add’ —`—— il programma di
gestione delle chiavi private
ssh ——`— \’e trattato alle
pagg. 21 —— 22.
Non si usa il comando “\ ” se l’abbreviazione termina un periodo.
Per forzare TEX a inserire uno spazio
più largo dopo un punto (quando un punto fermo segue una lettera maiuscola), si
inserisce il comando ‘\@’ prima del punto \@
fermo:
www
I segni ‘?’, ‘!’ e ‘:’ seguono le stesse regole del punto fermo. Tutta la discussione
qui sopra si applica anche se il segno di
punteggiatura è seguito da una parentesi
chiusa, oppure dalle virgolette.
‘ssh-add’ —il programma di gestione delle chiavi private ssh— é trattato
alle pagg. 21–22.
Puntini di sospensione. Non si fanno con tre punti di seguito, bensì col
comando ‘\ldots’.
\ldots
Esempio 13: Esempi di tratti
Punteggiatura. Dopo un punto fermo,
TEX inserisce uno spazio un po’ più largo
che tra due parole all’interno di una frase. Poiché TEX non può distinguere un
punto che termina una frase da uno usato
in una abbreviazione, segue un semplice
criterio: un punto fermo termina una frase se non segue una lettera maiuscola. Ad
esempio, TEX non inserisce alcuno spazio
extra dopo il punto in
Legare le parole. A volte una riga di testo viene spezzata tra due parole che sono legate a formare un tutto unico (p. es.
“Appendice X”); per evitare questo si può
usare il carattere ‘~’ in vece dello spa- ~
zio: “Appendice~X”. È difficile enunciare
un criterio generale per usare il carattere
di legame ‘~’; uno molto grossolano è il
seguente: si inserisce un legame tra due
parole quando una riga non può terminare con la prima o non può iniziare con la
seconda, per esempio “Mr.” e “Blisset”:
L. Blisset è appena stato qui.
Mr.~Blisset, I presume.
In alcuni casi, però questo criterio fallisce
e bisogna inserire dei comandi correttivi.
Quando il punto fermo segue una abbreviazione a sua volta seguita da uno
spazio, come: “ecc. ”, si usa il comando
‘\ ’ (barra-inversa spazio) dopo il punto:
ad esempio, scriveremo
Mr.\ Blisset, I presume.
vitamine A, C, E\@.
Una discussione completa si trova in [1,
pp. 91–93].
™y ‘,y‰1œŠ"ƒ!X"!„Ž?~,.‹€:……€a~*›Zžs€
Il più frequente intervento per dare la veste finale ad un documento consiste nell’eliminare le righe troppo spaziate (“Underfull \hbox”, nel gergo di LATEX) oppure
51
quelle troppo lunghe, che sporgono oltre
il margine destro (“Overfull \hbox”). TEX
compone leŸ righe seguendo criteri piuttosto rigidi, per garantire il migliore aspetto
dell’impaginato, ma, di quando in quando, l’algoritmo fallisce1 e occorre intervenire manualmente, modificando il testo,
oppure aiutando TEX nella sillabazione di
una parola, o infine rendendo più permissivi i criteri di impaginazione di LATEX per
un capoverso.
Una descrizione approfondita dell’algoritmo usato da TEX per impaginare i
documenti e di come controllarlo, come
anche un’analisi più dettagliata dei rimedi suggeriti qui, si trova in [1, Capitolo 6,
spec. pp. 28–30, e Capitolo 14].
paragrafo che nel nostro file è compreso
tra le righe 496 e 503 c’è una riga troppo
larga, che sporge di circa 5 punti tipografici; da questi dati possiamo individuare
esattamente il punto in cui intervenire.
LATEX riporta anche le righe di codice
in cui si manifesta il problema, ma nel
suo proprio formato interno, per cui bisogna “ripulire” il messaggio per risalire
al testo che l’ha generato. Talvolta, però,
da un esame di questi messaggi si può capire in cosa l’algoritmo di impaginazione
di TEX ha fallito, e trovare così la soluzione migliore. I due esempi che seguono
illustrano le situazioni più comuni.
Come primo esempio, esaminiamo il
messaggio:
Overfull \hbox
L’opzione ‘draft’ di \documentclass evidenzierà le righe troppo larghe con un rettangolo nero al margine, cosicché si trovino subito i punti del documento su cui intervenire. L’opzione opposta ‘final’ sopprime ogni segnalazione grafica di questo tipo. Se nessuna di queste due opzioni viene passata a \documentclass, LATEX
assumerà ‘final’.
Inoltre, ogni underfull e overfull \hbox
viene riportato nel file ‘.log’ (la compilazione di un file ‘nome.tex’ produce anche un file ‘nome.log’ che contiene tutti i messaggi che LATEX stampa a video
ed altri ancora). Un overfull \hbox viene
segnalato da una riga di questo tipo:
Overfull \hbox (3.80861pt too wide)
in paragraph at lines 322--327
\OT1/ptm/m/n/10 este-so sup-por-to
dei fi-le T[]X: con-trol-lo
del-le va-rie fa-si di
com-pi-la-zio-ne/anteprima/stampa
Dobbiamo ignorare lo strano ‘\OT1/ www
/10’: è il codice interno di LATEX per rappresentare un cambiamento di stile del
carattere; ignoriamo anche la coppia di
parentesi ‘[]’ in ‘T[]X’: sono una specie
di ‘[omissis]’ per la sequenza di caratteri che produce la ‘E’ abbassata del logo
‘TEX’—in genere i segni ‘[]’ stanno per
qualche combinazione complicata di caratteri che non può essere mostrata in un
messaggio di testo. Rimane una serie di
parole, che TEX ha sillabato correttamenOverfull \hbox (5.42711pt too wide)
te,
tranne le ultime due: lì occorre intervein paragraph at lines 496--503
nire per aggiustare la lunghezza della riga
In questo caso LATEX ci informa che nel (v. sezione 8.2.2 per maggiori dettagli).
1 In questo quaderno, ad esempio, c’è in media
Spesso è impossibile aggiustare una riun overfull hbox ogni due pagine di testo.
ga troppo lunga ricorrendo alla sillabazio52
www
ne discrezionale, quando la riga contiene elementi indivisibili (p. es. formu le matematiche,
nomi di comandi, ecc.).
Esaminiamo ad esempio il messaggio:
compilazione/an\-te\-pri\-ma/stam\-pa www
In questo caso, però, sarebbe forse meglio terminare la riga in corrispondenza di un segno ‘/’: per ottenere questo effetto si può usare un comando
‘\discretionary{}{}{}’ subito dopo il
carattere ‘/’:
Overfull \hbox (13.72679pt too wide)
in paragraph at lines 358--363
\OT1/ptm/m/n/10 ma vol-ta ab-bia-mo
ese-gui-to una com-pi-la-zio-ne
del-l’in-te-ro con-te-nu-to (sen-za
\OT1/pcr/m/n/10 \includeonly
\OT1/ptm/m/n/10 ),
www
Ignoriamo al solito i comandi ‘\OT1/
www /10’; tutte le parole sono sillabate correttamente; guardando il codice
LATEX alle righe 358–363, scopriamo che
‘\includeonly’ ha uno status diverso da
quello di una ordinaria parola, e quindi
non può essere sillabata: l’unica via d’uscita è di comporre l’intero paragrafo in
un ambiente ‘sloppypar’, che rilassa le
regole di composizione delle righe tipografiche normalmente usate da LATEX(v.
sezione 8.2.3 per una spiegazione più
dettagliata).
compilazione/\discretionary{}{}{}anteprima/ www
Il comando ‘\discretionary’ serve \discretionary
per realizzare sillabazioni eccezionali:
i primi due argomenti sono, rispettivamente, il testo da mettere in fondo
e in inizio riga quando una parola
viene spezzata in corrispondenza di
\discretionary, e l’ultimo è il testo da
inserire nel documento se invece non
occorre sillabare in quel punto; ad esempio, per sillabare ‘stampa’ scriveremo
‘\discretionary{stam-}{pa}{stampa}’;
il
comando
‘\-’
equivale
a
‘\discretionary{-}{}{}’.
Per maggiori informazioni, ed una descrizione
completa di \discretionary, si consulti
[1].
Aggiustare la sillabazione
Quando TEX non riesce a sillabare correttamente una parola, si può ovviare all’inconveniente inserendo dei comandi ‘\-’
tra le varie sillabe; riprendendo l’esempio
precedente,
Allentare i criteri di composizione
L’ambiente ‘sloppypar’ rilassa i cri- sloppypar
teri con cui LATEX compone le righe di testo; questo ambiente deve racchiudere un intero paragrafo:
LATEX comincerà un nuovo capoverso
prima di ‘\begin{sloppypar}’ e dopo
Overfull \hbox 3.80861pt too wide
‘\end{sloppypar}’.
in paragraph at lines 322--327
www
com-pi-la-zio-ne/anteprima/stampa Per ottenere lo stesso effetto solo per
poche righe all’interno di un paragraosserviamo che le parole finali ‘antepri- fo, si deve usare la coppia di comandi
ma’ e ‘stampa’ non sono state sillaba- ‘\sloppy’ e ‘\fussy’: il primo ha lo stes- \sloppy
te (ma ‘compilazione’ si): correggiamo so effetto di ‘sloppypar’ (ma non comin- \fussy
allora nel file .tex in questo modo:
cia un nuovo capoverso), finché non si ri53
torna alle normali regole di composizione
con ‘\fussy’.
Ÿ fetto di \sloppy, LATEX non
Sotto l’ef
produrrà quasi mai “overfull \hbox”, ma è
più prono a comporre “underfull \hbox”.
Underfull \hbox
Un “underfull \hbox” è una riga in cui
lo spazio tra le parole è eccessivo. TEX
riporta nei messaggi d’avvertimento anche una misura di questo spazio, chiamata
badness:
Underfull \hbox (badness 2326)
in paragraph at lines 151--151
Seguono poi, nel file .log, le righe del
file di ingresso interessate, come nei
messaggi di “overfull \hbox”.
Gli “underfull \hbox” sono meno visibili degli “overfull”, tanto che molti possono essere tranquillamente ignorati senza compromettere troppo la composizione delle pagine. In generale, gli interventi possibili per correggere un “underfull
\hbox” sono gli stessi già descritti nelle
sezioni 8.2.2 e 8.2.3. Frequentemente gli
“underfull \hbox” occorrono quando TEX
deve comporre un paragrafo con piccola ampiezza, come accade nelle tabelle o
nelle didascalie. In questi casi, può essere
conveniente passare al testo sbandierato.
to, la lunghezza da aggiungere all’altezza della colonna di testo; una lunghezza negativa accorcia la pagina. Per
esempio, “\enlargethispage{6ex}” allunga la pagina di circa due righe,
“\enlargethispage{-3ex}” la accorcia di
una.
Il comando ‘\nopagebreak’, usato tra
due paragrafi o dopo un titolo, serve per
scoraggiare LATEX dal terminare una pagina in corrispondenza del punto indicato da \nopagebreak. Viceversa, il comando ‘\pagebreak’ incoraggia la separazione delle pagine nel punto in cui appare. Attenzione! Entrambi questi comandi
devono apparire fuori da un paragrafo, o
non avranno alcun effetto.
Infine,
i comandi ‘\newpage’,
‘\clearpage’ e ‘\cleardoublepage’
forzano LATEX a cominciare una nuova
pagina. La differenza fra i tre sta in
questo: quando il testo è composto su
due colonne, \newpage inizia una nuova
colonna, mentre \clearpage inizia una
nuova pagina; \cleardoublepage inizia
una nuova pagina destra, cioè inserisce
una pagina vuota se necessario.
™y ¡,ykz›(›ZŽ¢Š"„ !~%€=…€=ƒ!›({1€
In ultimo, è necessario fare piccoli aggiustamenti nei punti in cui TEX separa le pagine, per evitare righe isolate alla fine o
all’inizio di un foglio.
gethispage
Il comando ‘\enlargethispage’ permette di aumentare un poco l’altezza del testo su una pagina.
Questo comando accetta un solo argomen54
\nopagebreak
\pagebreak
\newpage
\clearpage
\cleardoublepage
Parte III
Matematica con LATEX
55
‚
ƒ„}…}7£
“TEX è progettato in modo da permettere di scrivere facilmente espressioni matematiche complesse. L’idea alla base è
che una formula complicata è composta
di formule meno complicate combinate in
maniera semplice; le formule meno complicate sono, a loro volta, fatte di combinazioni semplici di formule ancora meno
complicate; e così via. [ www ] Partiamo allora da quelle semplici e apriamoci una
strada verso l’alto.” — da: Donald E.
Knuth, “The TEXbook”, 1986
¤yˆy¥={GƒO}O¦§‹:„"€:}~*"©¨§¨ª¨
Il paragrafo di Knuth qui sopra spiega
praticamente tutto quello che c’è da sapere per capire come TEX costruisce le formule: TEX legge il testo che corrisponde ad una formula e ne divide i contenuti
in formule più semplici, e prosegue fino
a scomporre queste in formule elementari; costruite queste, le combina a seconda del modo in cui sono legate insieme
(per esempio, numeratore e denominatore
di una frazione), poi combina le espressioni così ricavate, e via via risale fino a
comporre la formula originaria.
Vediamo cosa succede in pratica. Le
formule più semplici sono costituite da
una singola lettera oppure un singolo numero; per inserirle in un documento LATEX
dovremo scrivere, ad esempio, \(x\) o
\(2\). Se scriviamo \(2 x\), allora TEX
scomporrà questa formula nei due costituenti elementari, e poi accosterà il prodotto di questi due. Se invece scriviamo
\(x = 2\), questa volta LATEX inserirà un
leggero spazio tra “x” e “=”, come anche
tra “=” e “2”: TEX riconosce che il segno
“=” lega le due formule semplici ai suoi
lati in maniera diversa da uno spazio.
Schematicamente, ecco le differenze
principali fra il modo matematico (math
mode) e quello di testo.
56
1. Ogni spazio è ignorato nel modo matematico, perchè indica la semplice giustapposizione delle espressioni. Per inserire spazi in una formula
sono necessari comandi speciali.
2. Non è permesso comprendere più
paragrafi tra le parentesi matematiche. Ogni riga vuota ed ogni comando \par fermeranno TEX con un errore. Vedremo più avanti come fare
per mostrare più formule o equazioni
di seguito.
3. Il modo matematico ha i suoi pro-
razioni e relazioni: alcuni sono già presenti sulla tastiera (+, -, =, ecc.), per gli
altri LATEX ha una serie di comandi specifici. TEX tratta tutti questi comandi come se fossero un nome lungo per un solo carattere: ad esempio, il comando \cup
produce il simbolo di unione di insiemi, e
LATEX lo tratta allo stesso modo del segno
+. Ricordate di mettere sempre uno spazio alla fine di questi comandi: \alpha X
Fin qui la teoria; vediamo allora in pra- e non ‘\alphaX’ altrimenti T X cercherà
E
tica con quali comandi LATEX si combi- di chiamare il comando dal nome alphaX,
nano le varie espressioni a formare una che non è definito.
formula.
Una formula si può allora scrivere
mettendo insieme, come se scrivessimo
¤y ‘,y‰DI«}‹F!…„¬¢­!„€:­!„|<
un’espressione con carta e penna:
‹:‰¯®±°*²(³
pri font; ad esempio, tutte le lettere vengono rese in corsivo matematico (math italic), ed anche altri segni come “-” e “*” hanno un aspetto leggermente diverso. Quel che è
più importante è che i comandi che
cambiano il carattere corrente sono
diversi nel modo testo e nel modo
matematico.
d
lettere e numeri, lettere greche (la
Per prima cosa, ogni documento LATEX
figura 9.3 riporta i comandi necesche utilizzi notazioni matematiche dosari), simboli speciali (alcuni sono
vrebbe caricare le estensioni ‘amsmath’
riportati in figura 9.2);
con il comando ‘\usepackage{amsmath}’
d
i simboli delle operazioni (+, -, *, /,
nel preambolo. Tutti gli esempi nel
www );
seguito usano questa estensione.
Ogni formula matematica deve essed
i simboli di relazione (<, >, =, www );
re racchiusa tra i comandi ‘\(’ e ‘\)’.
d
Il primo di questi comandi pone TEX in
i segni di interpunzione (!, :, ;, www
modo matematico, ed il secondo ne esce.
);
Le formule matematiche seguono regole
d
parentesi di ogni tipo: ricordate però
di composizione tipografica differenti dal
che
le parentesi { e } hanno un signitesto ordinario; perciò è necessario racficato
speciale per TEX, quindi occhiudere le formule tra i due particolari
corre
precederle
con una barra inverindicatori ‘\(’ e ‘\)’ (math brackets, o
sa
\
per
produrre
il corrispondente
parentesi matematiche): in questo modo
segno.
TEX userà le convenzioni tipografiche e di
input proprie delle formule.
La figura 9.1 riporta alcuni esempi.
¤y ¡,y´Y|k}`­!{1‹(|kž?€&ƒO~ }‹Žs|k}{?}
Spazi nelle formule
Per inserire dello spazio in una formula
si usano i comandi ‘\quad’ e ‘\qquad’; il \quad
Il modo più semplice per combinare del- secondo produce uno spazio maggiore del \qquad
le espressioni è tramite i simboli di ope- primo.
Š"lµ}`…
57
Codice LATEX
x + y + z = 0
xy - 1 < z
(a+b)/(a-b) \geq 1
f(x,y,z) = n! \Theta(t)
A \cap B \subseteq C
\langle x,y \rangle = \alpha
c \cdot x \land y = z \lor t
Tabella 9.1:
semplici.
º
Formula
‘\usepackage{amsfonts}
’
xdi¶ un
y ¶ documento.
z· 0
xy ¸ 1 ¹ z
a ¶ b »½¼ºOperazioni
a ¸ b »*¾ 1 binarie
f º x ¿ y¿ z+»Z· n!Θ º t » \cap
-A À B Á C \cup
* Â x ¿ y Ã(· α \setminus
c Ä x/Å y · z Æ t \cdot
Relazioni binarie
Esempi di formule molto
=
\approx
\in
\ni
\sim
\Doteq
Testo nelle formule
Per inserire qualche parola come testo ordinario, si può usare il comando
‘\text’. Questo comando accetta un solo
argomento, la frase da inserire.
Provate a vedere cosa viene fuori da:
<
\geq
\subset
\supset
\simeq
\propto
¶
\lor
\land
\oplus
\otimes
À
Æ
¸
Ç
Å
È
É
Ê
¼
Ä
·
>
\leq
\subseteq
\supseteq
\perp
\mid
Ë
¹
Ì
Í
¾
Î
Ï
Ð
Á
Ñ
Ò
Ó
Ô
Õ
Ö
∝
×
Ø
Segni di interpunzione
:
.
;
!
,
\ldots
:
\{
\}
\lceil
\rceil
º
¿
;
!
w
www
Parentesi
\(f(x)=0 \quad \text{se e solo se} \quad( g(x)=0\) [
)
]
E se leviamo i comandi ‘\quad’? Se to\langle
\lfloor
gliamo ‘\text’ e lasciamo “se e solo se”
\rangle
\rfloor
in mezzo? Se invece di ‘\text’ mettiamo
Simboli ordinari
‘\textbf’? E ‘\textit’? Tutti i comandi
\forall
\exists
‘\text www ’ descritti nella sezione 4.5 si
\partial \nabla
possono usare per inserire del testo in una
\infty
\emptyset
formula matematica.
\Re
\Im
Un catalogo dei simboli più comuni è
in figura 9.2; una lista completa si può
trovare alle pagine 19–21 della “Users’
guide to AMSFonts”, che troverete nel file amsfndoc.dvi sotto la directory /usr/
doc/texmf/fonts/amsfonts/.
Chi usa
AUC-TEX può attivare il menu matematico premendo Control-c ~ e poi scegliere
il simboli che gli servono dalle voci del
menu.
Per accedere a tutti questi simboli è necessario caricare l’estensione
‘amsfonts’, aggiungendo il comando
al preambolo
\complement
\hbar
\circ
\ell
Ù
»
Ü
Â
Ý
Ã
á
Ú
Û
∂
∞
ℜ
à
â
∇
0/
ℑ
Tabella 9.2: Alcuni dei simboli che si possono inserire con LATEX in una formula matematica. Una lista molto più completa si trova
in “Users’ guide to AMSFonts”, pp. 19–21
¤yçyè<~,X}{1"é ~,‹|XZ€
|k}`€(ên•1|k€({?„":µ{1}l"!…
Il comando ‘\frac’ serve a combinare \frac
due espressioni matematiche in una frazione. Questo comando accetta due argo-
58
Þ
ß
ã
ä
å
æ
c
c
\alpha
\epsilon
\iota
\nu
\rho
\phi
\Delta
\Pi
\Psi
\beta
\zeta
\kappa
\xi
\sigma
\chi
\Theta
\Sigma
\Omega
\gamma
\eta
\lambda
o
\tau
\psi
\Lambda
\Upsilon
\vartheta
\varsigma
\varkappa
\varphi
\varpi
\delta
Codice α
LATEXβ γ δ
\theta
ε
ζ η θ
\frac{x}{2}
\mu
ι
κ λ µ
\frac{1}{x+2y}
\pi
ν ξ o π
\frac{\partial
x}
\upsilon
ρ σ f}{\partial
τ υ
\omega
φ
χ
ψ
ω
\frac{n!}{k!(n-k)!} \Doteq \binom{n}{k}
\Xi
∆ Θ Λ Ξ
\Phi \binom{n}{k}
Π Σ = \binom{n}{n-k}
ϒ Φ
Formula
x
2
1
xì 2y
∂f
∂x
n
n!
×
k
k! í n î kï !
n
n
·
k
nî k
Ψ Ω
\varrho
ϑ ë
ϖ ρ
1+\cfrac{1}{1+\cfrac{1}{1+\dotsb}}
ς ϕ
Tabella 9.3: I comandi TEX per produrre
le lettere greche, minuscole e maiuscole. La
lettera omicron è identica alla “o” latina, come pure molte le maiuscole che non compaiono nell’elenco: non c’è quindi bisogno di
comandi particolari. L’ultima riga contiene i
comandi per produrre alcune varianti grafiche.
menti: il primo è il numeratore, il secondo il denominatore. Qualunque espressione matematica può andare al numeratore
o al denominatore: guardate gli esempi di
figura 9.4.
‘\cfrac’ è una variante di ‘\frac’ adatta alla composizione di frazioni continue. Cosa succede se usate le varianti
‘\lcfrac’ o ‘\rcfrac’ al suo posto?
Il comando ‘\binom’ combina due
espressioni a formare un coefficiente binomiale; accetta due argomenti, nello
stesso ordine di ‘\frac’.
‘\sqrt’ pone un segno di radice quadrata sopra l’espressione matematica che
ne costituisce l’argomento. È possibile
specificare un argomento opzionale, che
indica l’ordine della radice: \sqrt[3]{x}
è la radice cubica, ecc. Alcuni esempi
si trovano in figura 9.5. Cosa succede
1
1¶
1
1 ¶ðÄÄÄ
1¶
Tabella 9.4: Esempi di frazioni e coefficienti
binomiali.
se si mette un’espressione matematica più
complicata (per esempio \frac{p}{q})
come radicando? E come ordine della
radice?
Codice LATEX
Formula
ñ 2
\sqrt{2}
ñ
\sqrt[3]{8} = 2
3
8· 2
1ì<ò 5
2
\frac{1 + \sqrt{5}}{2}
\sqrt[\alpha]{x+t} + \sqrt[\beta]{x-t}
\sqrt[n]{\frac{x+y}{x-y}}
Tabella 9.5: Esempi di radici.
¤y ó,y ²
Š"ƒO}{1€:{1„,€=‹€:ƒ}`{1€:{1„"
Si può aggiungere un esponente a fianco
di qualunque simbolo col comando ‘\sp’ \sp
o un indice con ‘\sb’. Come per quasi \sb
tutti i comandi, se l’argomento di ‘\sp’ o
‘\sb’ consta di più di un carattere, occorre racchiuderlo entro le parentesi { e }. Al
59
ñ
α
x¶ t¶
ñ
β
n
x¸ t
xì y
xî y
espressioni ‘F_3’ e ‘{}_2’, che vengono
poi accostate, cosicché l’effetto finale è
quello di un deponente “2” alla sinistra
della “F”. Cosa succede se, dimenticando
‘{}’, uno scrive ‘X + _2F_3’?
Formula
Attenzione! TEX considera un errore
2
n2 ¿ scrivere
m2 ¿ p2 ¿ qdue
esponenti o due deponenti di
x^y^z
’ e ‘x_y_z’ sono sintattiseguito:
‘
x2 ¿ y2 ¿ z2 ¿ t2
camente ambigui; occorre perciò usare le
Aij ¿ Bijgraffe per raggruppare correttaparentesi
mente
i 2n
termini: ‘x_{yz}’ o ‘x_{y_z}’, a
Cxì y ¿ D
seconda
di ciò che si intende. Il carattere
aì b 2
aî b
’ (apostrofo)
è considerato un esponente
d
c
in modo
matematico:
perciò non si deve
ab
scriverep‘F’^2’ ma ‘{F’}^2’ (Quiz: perché
n ô 1 î n î ’ pnon va bene?).
‘WF^{’2}
posto di ‘\sp’ e ‘\sb’ si possono usare
i caratteri “^” e “_”. Esempi di espressioni con Ÿesponenti e deponenti sono in
figura 9.6.
Codice LATEX
n^2, m^{2}, p\sp 2, q\sp{2}
x_2, y_{2}, z\sb 2, t\sb{2}
A^i_j, B_j^i
C^{x+y}, D_{2n}
{\left(\frac{a+b}{a-b}\right)}^2
a^{b^{c^d}}
W^{n, 1-\tfrac{p}{n-p}}
¤yxXy¶ ‰:¦ 2F
{13„€(›(~,!…€a€=…€&›(~,!{1‹
X + {}_2F_3
jk êM}`~*lŽ?…€
Til ¿ Ri jk l
T_{il}^{jk}, R_i{}^{jk}{}_l
Tabella 9.6: Espressioni con esponenti e deponenti. Negli ultimi due esempi si usa la formula nulla {} per forzare la posizione di indici
che altrimenti verrebbero spostati a sinistra.
Qualunque espressione matematica
può comparire come esponente o indice
di un’altra, purché racchiusa tra { e }. In
particolare, gli esponenti possono a loro
volta contenere altri esponenti, deponenti, ecc. (cfr. figura 9.6) Cosa succede se
si mette una frazione come esponente?
Provate con H^{p+\frac{n}{m}}. E se si
usano le varianti ‘\dfrac’ e ‘\tfrac’?
Un simbolo può avere anche simultaneamente esponenti e deponenti, e non
conta l’ordine con cui sono indicati. Ancora, l’espressione nulla ‘{}’ può a sua
volta avere esponenti o deponenti, e questo permette di metterne alla sinistra di
un simbolo: ‘{}_2F_3’ produce le due
I caratteri ‘^’ e ‘_’ vengono usati in TEX
anche per indicare gli estremi di integrazione: nella figura 9.7 introduciamo le
prime formule con integrali e sommatorie, che altro non sono, per il TEX, che
nuovi simboli, un po’ più grandi.
Oltre ai simboli mostrati in figura 9.7,
LATEX definisce anche ‘\iint’, ‘\iiint’,
‘\iiint’ e ‘\idotsint’ per gli integrali
doppi, tripli, quadrupli e multipli; troviamo anche le versioni operatoriali di operazioni binari come \lor, \land, \otimes,
ecc.: abbiamo così \bigvee, \bigwedge,
ecc.
Tutti questi simboli accettano “estremi” che possono essere inseriti come se
fossero esponenti e deponenti; non è necessario che questi estremi siano presenti: è permesso specificarne uno solo,
entrambi o nessuno.
L’intestazione della figura 9.7 distin-
60
\iint
\iiint
\iiint
\idotsint
Codice LATEX
\int_0^1 x dx = 1/2
\oint J = 0
\sum_{n=1}^\infty n = \infty
gue due colonne, chiamate inline math e
display math, cui corrispondono dimensioni diverse per i simboli matematici nella tabella. Il modo matematico di TEX
ha infatti due varianti: la prima serve per
comporre
vengono inserite
Inline
math formule
Displayche
math
in una riga di testo (in corpo o inline), e
1
1
· 1 ¼ 2 per formule
la seconda
che appariranno a
0 xdx
xdx · 1 ¼ 2
sé stanti, interrompendo
il normale flus0
so della parola scritta (fuori corpo o diJ · 0 la figura 9.6 riporta un esempio
splayed);
J· 0
di entrambe. Le formule in corpo sono
racchiuse dai comandi
∞ \( e \), quelle fuo∑∞
1n · ∞
nriõ corpo
sono circondate
∑ n · dai∞comandi \[ e
nõ 1
\].
∑ ∑ ai j
∑i ∑ j ai j
\sum_i \sum_j a_{ij}
i
\prod_{i=0}^\infty (1+a_i)
∏∞
iõ 0 º 1 ¶ ai »
j
∞
Data una serie ∏ º 1 ¶ ai »
iõ 0
\[
\sum_{n=0}^\infty a_n
f ö \]U A f
Af
fö U
definiamo la successione
delle somme parziali \(\{ S_n \}\)
Uα
ö A Uα: \( S_n = \ sum_{i=0}^n
α come
a_i \).
\coprod_{f \in U} A_f
\bigcap_{\alpha \in A} U_\alpha
αö A
Tabella 9.7: Formule con integrali, sommatorie ed altri operatori. Tutti questi costituiscono una classe di simboli che ha lo stesso
comportamento in TEX: hanno due dimensioni possibili, e usano la notazione degli indici per fissare gli “estremi”. Il posizionamento
degli indici cambia se la formula è nel mezzo
di un brano di testo (inline math) o a sé stante
(display math).
Data una serie
∞
∑ an
nõ 0
definiamo la successione delle somme parziali Ú Sn Ü come:
Sn ·
∑niõ 0 ai .
Esempio 14: Differenza tra formule in-corpo
e fuori-corpo
61
¤y ‡ y‰l„"é*…}`›!~*„l"é €(‹÷!…„~8€
êMŽs{1X}{?¨§¨ª¨
Le funzioni matematiche più comuni vengono di solito rese in carattere tondo per
farle risaltare all’interno di una formula
e distinguerle dalle variabili, che sono in
corsivo. Perciò LATEX definisce i comandi
‘\log’, ‘\sin’, ‘\cos’, ecc. La figura 9.8
riporta un elenco completo.
\arccos
\cot
\exp
\lim
\sec
\arcsin
\coth
\gcd
\liminf
\sin
\arctan
\csc
\hom
\limsup
\sinh
\arg
\deg
\inf
\log
\sup
math: un operatore avrà gli estremi sopra e sotto, mentre un simbolo di funzione avrà esponenti e deponenti a fianco. La
figura 9.9 riporta alcuni esempi.
È possibile definire anche nuovi operatori,
tramite il comando ‘\DeclareMathOperator*’:
la \DeclareMathOperator*
sintassi è identica a quella di
‘\DeclareMathOperator’, l’unica differenza sta nella possibilità di specificare
gli estremi con la notazione degli
\cos \cosh
esponenti.
\det \dim
\ker \lg
\max
\min
\lim_{x\to
\infty} f(x)
\tan \tanh
Tabella 9.8: Funzioni e operatori comuni
predefiniti in LATEX.
\sup_n \{a_n\}
anche possibile definire nuove funzioni, tramite il comando
reMathOperator
‘\DeclareMathOperator’; questo comando vuole due argomenti, il primo dei
quali è un comando da definire (completo
di \) ed il secondo il testo che apparirà
come nome della funzione. Per esempio,
se volessimo chiamare “sen” la funzione
seno, potremmo dare a LATEX il comando
\DeclareMathOperator{\sen}{sen}
poi
scrivere
formule
sup Ú an Ü
n
\max_{1\leq i \leq N} a_i
È
e
lim f º x »
xø ∞
come
\(y = \sen x\).
Alcuni dei comandi riportati in figura 9.8 non corrispondono in realtà a delle
funzioni matematiche, ma a degli “operatori”, intendendo con questo che TEX
permette di specificare degli estremi come per i simboli di integrale, sommatoria, ecc. La differenza con un simbolo di
funzione si vede solo in modalità display
max ai
1ù iù N
Tabella 9.9: Esempi di simboli di operatori: il posizionamento dei deponenti è analogo
a quello dei simboli di integrale, sommatoria,
ecc.
¤y™yš!~%€({?„"€Š"
Se avete provato a scrivere qualche formula in TEX, mentre leggevate questo capitolo, non vi sarà sfuggito che le parentesi (e più in generale ogni delimitatore
di TEX) non si ingrandiscono automaticamente a coprire le formule che racchiudono: il dimensionamento corretto delle parentesi intorno ad una formula è un compito complesso, quindi occorre istruire
appositamente LATEX.
I comandi ‘\left’ e ‘\right’ tentano \left
il dimensionamento automatico delle pa- \right
62
‘\left’ e ‘\right’, tutte le parentesi, calcolando la minima altezza necessaria a racchiudere tutta l’espressione
rentesi hanno la stessa dimensione
ú
che circondano.
Ciascuno di questi co(perché tanto basta per racchiudere
mandi deve essere seguito da un delimiun’espressione);
tatore valido: una parentesi oppure uno
3. le dimensioni dei delimitatori non
dei simboli della figura 9.2. ‘\left’ e
variano con continuità, ma a piccoli
‘\right’ devono sempre essere appaiati,
salti: superare di poco la soglia per
ma i loro argomenti no: è possibile, ad
un salto farà scegliere automaticaesempio, aprire un’espressione con una
mente le parentesi della dimensione
parentesi tonda e chiuderla con una quasuccessiva.
dra. In particolare, se l’argomento di uno
dei due è il carattere ‘.’, allora il corriSi può ricorrere al dimensionamento
spondende delimitatore è invisibile: que- manuale con i comandi riportati in figusto si può usare come nel terzo esempio di ra 9.8; la sintassi è la stessa di ‘\left’ e
figura 9.10. L’uso di ‘\left’ e ‘\right’ è ‘\right’.
\left
\bigl
\right Ù xy Û \bigr
\left[ x^y \right]
\left\lvert \frac{1}{1+x} \right\rvert
x
y
x
y
1¶ x
x
y
x
y
\biggl
\biggr
x
y
Tabella 9.11:d fLe varie dimensioni disponibili per il dimensionamento
manuale delle
dx xõ 0
parentesi.
\left. \frac{df}{dx} \right|_{x=0}
aû
\Bigl\lvert \frac{a’}{b’} \Bigr\rvert
¤y¤y ‚
!lµ"b!û ~%€üŠ"„…€&{1€:……€
êM}`~*lŽ?…€
Tabella 9.10: Esempi di dimensionamento
delle parentesi.
adeguato nella maggior parte dei casi, ma
ci sono tre situazioni in cui è opportuno
dimensionare manualmente le parentesi:
1. quando l’espressione racchiusa tra
‘\left’ e ‘\right’ contiene esponenti o deponenti: in questi casi la dimensione calcolata automaticamente risulta essere maggiore di
quella necessaria;
2. se, annidando diverse coppie di
1
\Bigl
\Bigr
L’uso dei diversi stili di caratteri nelle formule serve in genere a produrre varianti
grafiche di lettere o simboli, per aumentare il numero di segni disponibili, piuttosto che per marcare la diversa significatività di un brano, come avviene nel testo
ordinario; dunque i comandi che andiamo
ad esaminare si applicheranno raramente
a formule più lunghe di un piccolo gruppo
di caratteri.
Abbiamo già visto come i comandi per
cambiare lo stile dei caratteri abbiano un
63
\Biggl
\Biggr
x
y
funzionamento diverso nel modo matematico: permettono di inserire testo ordinario in una formula, secondo lo stile
indicato. Come si fa allora per inserire
una “A” in carattere grassetto in una formula? Si usano comandi simili, sostituendo però il prefisso \math al prefisso \text:
la figura 9.12 riporta un elenco. Ognuno
di questi comandi accetta un solo argomento: la formula da rendere nello stile
corrispondente.
Tutti i simboli sono disponibili in tutti gli stili? Provate ad ottenere lettere greche con ‘\mathbf’, ‘\mathsf’ o
‘\mathtt’. Il simbolo “<” si può avere in
‘\mathsf’? Ed in ‘\mathbf’? E il simbolo
di “maggiore-o-uguale”?
Simboli in grassetto
Dato che le lettere greche e molti simboli non alfabetici non si possono ottenere
con ‘\mathbf’, LATEX definisce i comandi ‘\boldsymbol’ e ‘\pmb’ per raggiungere questi effetti. La figura 9.13 mostra le
\mathbf{0123456789 AaBbCc \dots Zz}
0123456789AaBbCc www Zz
differenze tra i due ed il normale carattere
\mathfrak{0123456789 AaBbCc \dots Zz} ýXþ8ÿ
www
matematico. ‘\boldsymbol’ accetta un so\mathrm{0123456789 AaBbCc \dots Zz}
0123456789AaBbCc www Zz
!"#$&%(')*,+ www.-/
{} \mathbf{} \boldsymbol{}
0132465676869:6;6<6=6>?6@A wwwBC
0
0
0
0
DFaEHG wwwJI
a
a
a
K,LNM wwwPO
\mathsf{0123456789 AaBbCc \dots Zz}
\mathtt{0123456789 AaBbCc \dots Zz}
\mathcal{ABC \dots Z}
\mathbb{ABC \dots Z}
Tabella 9.12: I vari stili disponibili per i
caratteri matematici. Negli ultimi due è
possibile produrre solo lettere maiuscole.
Alcune precauzioni d’uso:
Q
\alpha
+
\infty
α
¶
∞
α
0
a
α
∞
∞
α
¶
∞
\pmb{}
¶
¶
Tabella 9.13: Differenze tra il normale carattere matematico, e le varie specie di
grassetto disponibili in LATEX.
\boldsymbol
‘\mathfrak’ e ‘\mathbb’ sono disponibili solo se si è caricata l’estensione amsfonts nel preambolo, con la
riga: ‘\usepackage{amsfonts}’.
lo argomento, che deve essere una lettera,
una cifra od un comando che produce un
simbolo (ad esempio, \pi o \cap), e disegna una versione in grassetto del simbolo,
cifra o lettera indicato.
Q
il comando ‘\mathnormal’ permet‘\pmb’ ha la stessa sintassi di \pmb
te di ritornare temporaneamente al‘\boldsymbol’,
ma effetti grafici
lo stile normale di scrittura malievemente differenti.
tematica, nel mezzo di una formula composta con un carattere ¤yˆ6Rykz.|k|k€:{1„: !„"€:­!„|k
differente.
TEX utilizza lo stesso sistema per comporQ
‘\mathcal’ e ‘\mathbb’ seleziona- re le lettere accentate del testo ordinario
no font che hanno solo le lettere (come à, é, ï) ed i simboli che si usano
maiuscole.
nella scrittura matematica per distingue64
Codice LATEX
Formula
re differenti specie di variabili (segni di
vettore, tilde, ecc.); questi ultimi prendo\widehat{Ma}
Ma
S
no perciò il nome di “accenti matemati\widetilde{Ma}
Ma
ci” nel gergo TEXnico. Abbiamo già visto
\overline{xyz}, \underline{xyz}
xyz, xyz
i comandi per produrre accenti nel testo
\overleftarrow{xyz}, \underleftarrow{xyz}
xyz,
U ¸ xyz
U ¸
corrente, la figura 9.14 riporta i comandi
¸V
\overrightarrow{xyz}, \underrightarrow{xyz}
xyz,
xyz
¸WV
disponibili in LATEX per produrre accen\overleftrightarrow{xyz}, \underleftrightarrow{xyz}
xyz,
xyz
U V
ti matematici. Esistono dunque due tipi
U V
\overbrace{xyz}, \underbrace{xyz}
xyz , xyz
di questi comandi, uno da utilizzare solo
nel modo matematico per comporre formule, e l’altro da usare solo nel testo or- Tabella 9.15: I comandi per ornare formule
dinario; TEX riporta un errore se usate un più larghe di una lettera.
comando nel contesto sbagliato.
Formula
Codice LATEX
k volte
Formule
Formule
\(\overbrace{x+\dots+x}^{\text{\(k\) volte}}\)
\Acute a á
\Grave a
à
x ¶“ÄÄı¶ x
\Bar a
ā \Hat a
â
T1 T2 www Tn
\(\underbrace{T_1 T_2 \dots T_n}_{=S^{-1}}\)
\Breve a ă
\Tilde a
ã
õ SX 1
\Check a ǎ
\Vec a
aT
...
a
\Ddot a
ä \dddot a
Tabella 9.16: Esempi di testo a completare
....
\Dot a
ȧ \ddddot a a
l’ornamento di una formula.
Tabella 9.14: I comandi che producono accenti in LATEX. Gli ultimi tre accenti sono
usati solo nel modo matematico.
LATEX definisce dei comandi speciali
per ornare formule più larghe di una lettera: la figura 9.15 ne riporta l’elenco
completo. Tutti questi comandi accettano argomenti di lunghezza arbitraria, ad
eccezione di ‘\widehat’ e ‘\widetilde’
che possono allargarsi al più su 3 lettere
(provare per credere).
brace
e
I
comandi
‘\underbrace’
race ‘\overbrace’ permettono di disporre
delle scritte sopra o sotto il segno che
appongono su una formula, tramite la
consueta notazione degli esponenti e
deponenti: un esponente ^{...} dopo
‘\overbrace’ indicherà il testo da collo-
care sopra la parentesi graffa, così come
un deponente _{...} dopo ‘\underbrace’
specifica quello da porre sotto la parentesi graffa. Esaminiamo gli esempi di
figura 9.16: siccome ‘\underbrace’ e
‘\overbrace’ funzionano solo in modo
matematico, sia l’argomento di questi
comandi, che l’eventuale esponente o
deponente vengono interpretati come formule. Nel primo esempio di figura 9.16,
si usano il comando ‘\text’ per inserire
del testo (che a sua volta contiene una
formula!).
Accenti doppi
Gli accenti di figura 9.14 si possono
raddoppiare: ad esempio, \Bar{\Bar A}
(Quiz: perché il secondo accento è tra pa-
65
e ‘\underset’ si possono usare solo nel
modo matematico.
Come si può mettere un accento sopra
le lettere “i” o “j”? Provando, noterete che il puntino sta pressappoco all’altezza dell’accento, e dà un risultato esteticamente poco piacevole; TEX definisce
\imath e \jmath da usare in combinazione con i comandi che producono accenti
per ottenere “i” e “j” correttamente accentate: \Grave\imath renderà appunto una
lettera “ì”. Come dice il nome, questi
due comandi funzionano solo nel modo
matematico.
\accentedsymbol{\Ttildetilde}{\Tilde{\Tilde
T}}
Il comando
‘\not’ permette di sovrap- \not
porre
una
barra
“ ¼ ” al simbolo che lo
crea il comando ‘\Ttildetilde’ che disegue;
si
possono
creare così i segni
segna una “T” sormontata da una doppia
“diverso-da”,
“non-equivalente”,
ecc. in
tilde. Sono possibili anche combinaziouna
formula.
Sebbene
‘
\not
’
non
sia
proni molto più orribili. I manuali di LATEX
priamente
un
accento,
il
principio
di
funconsigliano di definire nel preambolo del
zionamento
di
questo
comando
è
lo
stesso
documento un comando per ogni simbolo
accentato di cui ci sarà bisogno in seguito. di ‘\Acute’„ ‘\Bar’, ecc.
rentesi graffe?) produce una lettera “A”
sormontata da una doppia riga.
Questa Yoperazione di raddoppiamento
è complicata e può rallentare TEX se eseguita troppo spesso; LATEX definisce pertedsymbol
ciò il comando ‘\accentedsymbol’, che
permette di costruire comandi che producono combinazioni complesse di accenti. ‘\accentedsymbol’ accetta due argomenti: il primo è il nome di un comando
da definire (completo di \) ed il secondo
è il codice LATEX per produrre il simbolo
accentato che vogliamo:
et
set
Attenzione! ‘\accentedsymbol’ si può ¤yˆˆy‰:¦ Žs…„"­Iƒ!~8}…"
usare solo nel preambolo di un documento; metterlo nel mezzo del testo pro- Un’ultimo avviso: LATEX permette di usavocherà un errore “Undefined control re il carattere “$” al posto di \( e \), ed
in alcune situazioni questo è necessario
sequence.”
(\( e \) non funzionano in alcuni contesti,
Altri accenti matematici
vedremo in quali in una prossima puntaLATEX mette a disposizione anche un cota). Analogamente, $$ è un sinonimo di
mando per approssimare i tipi di accen\[ e \]. Io vi consiglio di usare la forti non disponibili coi comandi standard;
ma con le parentesi matematiche, perchè
il comando ‘\overset’ accetta due argorende più immediato capire dove inizia e
menti, il primo dei quali è un simbolo
finisce il modo matematico: se dimentiche verrà collocato sopra il testo indicate un $ alla fine di una formula, allora
cato nel secondo argomento. Ad esemsi che cominciano i guai www
pio, \overset{*}{X} scriverà un asterisco sopra la lettera “X”. Esiste anche un
comando ‘\underset’ che pone il simbolo nel primo argomento sotto il testo. Attenzione! I comandi ‘\overset’
66
Parte IV
Argomenti specifici
67
‚
ƒ„}…}[Z]\
to: ‘figure’ comincia le didascalie con
la dicitura “Figura”, mentre ‘table’ con
“Tabella”. Figure e tabelle sono numerate
separatamente, e sono riportate in elenchi
diversi.
L’estensione ‘float’ permette di definiˆ6Ryˆy ‚ }~ƒO_^1Ž?„„"Ž.!{1„
re nuovi tipi di corpi fluttuanti, ciascuno
con la sua numerazione e il suo proprio
Una “figura” è una qualunque porzione
elenco.
di materiale tipografico che può essere
disaggregata dal corpo del testo che la ˆ6Ry ‘,y‰:¦ lµ€({1„€
figure
circonda e posizionata indipendentemente sulle pagine, a seconda delle esigenze L’ambiente ‘figure’ racchiude materia- figure
di composizione. Infatti, mentre LATEX le tipografico che può essere posizionato
può separare le righe di testo di un pa- sulla pagina dove compare nel documenragrafo per spezzarlo tra due pagine suc- to o su quelle successive. Tutto il codicessive, non può fare lo stesso con un’il- ce LATEX che può apparire in un paragralustrazione: dunque muoverà la figura fi- fo può apparire all’interno di un ambienno a trovare un pagina con spazio a suf- te figure: testo semplice, formule mateficienza. Illustrazioni, tabelle, ecc. ven- matiche, comandi grafici, ecc. Ecco un
gono detti “corpi fluttuanti” (floating bo- esempio:
dies) nel gergo di LATEX, proprio perché
\begin{figure}
“fluttuano” sopra il testo fino a trovare
{\em Questa inutile figura è
una opportuna collocazione.
composta di solo testo.}
LATEX definisce due ambienti per in\end{figure}
cludere corpi fluttuanti in un documento:
‘figure’ e ‘table’. Il primo serve per illu- che produce un corpo fluttuante fatto da
strazioni e grafici, il secondo per le tabel- un paragrafo con il testo “Questa inutile
le; non c’è però differenza sintattica tra i figura è composta di solo testo”. Ancora
due, né vera differenza di comportamen- un altro esempio:
Questo capitolo spiega i comandi LATEX
che servono ad includere illustrazioni,
schemi, tabelle, ed altro materiale sganciato dal testo che lo circonda, ad apporvi
didascalie e a generare indici.
68
on
inserito in un documento con il comando
\begin{figure}
\[\int^a_b 3x^2 dx = a^3-b^3\]
‘\listoffigures’.
\listoffigures
\end{figure}
Si possono inserire più comandi
\caption in un ambiente figure: LATEX
in questo caso, la figura è una formula.
Un ambiente figure non può essere
contenuto in altri ambienti, ma può essere
messo all’interno di un paragrafo: LATEX
di fatto comporrà il testo precedente e
seguente la figura in un unico capoverso.
L’uso più comune di un ambiente
figure è comunque quello di inserire illustrazioni grafiche per mezzo del comando
‘\includegraphics’. Per esempio,
apporrà diverse didascalie (numerate) alla
figura, nell’ordine in cui sono specificate
dai comandi \caption.
Riferimenti alle figure
Ogni figura viene numerata; LATEX può
memorizzare il numero di una figura per
riferirvisi in altri punti del documento:
si inserisce un comando \label all’interno dell’ambiente figure, e si possono
poi utilizzare i comandi \ref e \pageref
\includegraphics[width=0.33\textwidth]
come nella sezione 5.5:
{luther.eps}
Didascalie
Per inserire una didascalia sotto una figura si usa il comando ‘\caption’ all’interno dell’ambiente figure; questo comando accetta un solo argomento, il testo
della didascalia. Un esempio:
\begin{figure}
.
.
.
\label{fig:figura1}
\end{figure}
.
.
.
Vedi la figura~\ref{fig:figura1} www
Figure nelle pagine con due colonne
Quando un documento è impaginato su
due colonne la larghezza di un ambiente
figure è quella di una colonna; per creare
una figura che si estende su due colonne
(ovvero per tutta l’ampiezza della pagina), si deve usare un ambiente ‘figure*’. figure*
Il testo della didascalia viene anche in- Questo ambiente ha la stessa sintassi di
serito nell’indice delle figure: quando è figure; ‘figure’ e ‘figure*’ condividono
troppo lunga, si può specificare il testo la numerazione e l’elenco.
da inserire nell’indice come argomento ˆ6Ry ¡,y‰:¦ lµ€({1„€
table
opzionale al comando \caption:
\begin{figure}
\[\int_0^1 x dx = 1\]
\caption{Una formula sbagliata,
che molto scandalo ha
sollevato su Linux\&C.}
\end{figure}
Le classi di documento standard di LATEX
definiscono un ambiente ‘table’, per table
creare tabelle che possono scorrere rispetL’elenco delle figure viene tenuto in un to al testo che le circonda e possono essefile con estensione .lof. L’indice viene re posizionate sulla pagina dove compa\caption[  titolo-per-indice à ]
{  didascalia à }
69
iono nel documento o su quelle successive. Gli ambienti table hanno una numerazione ed un elenco separati e distinti da
quelli delle figure.
La sintassi dell’ambiente table è la
stessa dell’ambiente figure; tutto quanto
detto per le didascalie e i riferimenti incrociati agli ambienti figure valgono anche per gli ambienti table. Gli ambienti table mantengono un elenco in un file
con estensione .lot. L’indice delle tabelle viene inserito in un documento con il
ftablescomando ‘\listoftables’.
Corrispondentemente, esiste un ambiente ‘table*’ per creare tabelle che si
estendono su due colonne.
ti a larghezza doppia ‘figure*’ e
‘table*’;
t (top, in alto) tenta di inserire la figura
in cima alla pagina corrente o in una
successiva;
b (bottom, in basso) tenta di inserire la
figura in fondo alla pagina corrente
o in una successiva;
p (page, pagina) crea una pagina separata per contenere solo figure e
tabelle.
Ad esempio, il codice
ˆ6RyçyšO}DŠ!}{1€©‹(•1›ZŽs~8€a€
\begin{figure}[hp]
.
.
.
\end{figure}
„ !µ€:……€
tenta di inserire la figura nel punto in cui
A
EX utilizza un meccanismo piuttosto appare; se LTEX non riesce, la metterà
in
una
pagina
a parte, possibilmente con
complicato per posizionare i corpi flutaltre
figure
e
tabelle.
tuanti all’interno di un capitolo, che dà
Se nulla è specificato, LATEX assume le
buoni risultati quando si hanno poche figure, ma richiede un aggiustamento ma- indicazioni ‘tbp’.
nuale quando le illustrazioni sono troppe Aggiustare la posizione
o troppo grandi.
Come tutti gli aggiustamenti, quello delGli ambienti figure e table accettano la posizione di figure e tabelle andrebbe
un argomento opzionale che suggerisce a fatto per ultimo, seguito solo dai piccoli
LATEX una buona posizione per la figura o ritocchi alla dimensione delle pagine (cfr.
tabella; questo argomento opzionale è una sezione 8.3).
combinazione di uno o più dei seguenti
Un primo tentativo sarà quello di concaratteri:
trollare attentamente le indicazioni di posizionamento per le figure e le tabelle,
h (here, qui) tenta di inserire la figu- cercando di tenere per ciascun fluttuanra nella stessa posizione, relativa- te solo quelle indicazioni effettivamente
mente al testo corrente, di quella utili. I tentativi ‘htb’ possono anche falche occupa il suo codice nel file lire, ma il tipo ‘p’ avrà sempre succes.tex—attenzione! la posizione ‘h’ so (cioè LATEX saprà sempre creare una
non si può usare con gli ambien- nuova pagina per le figure).
LAT
70
Successivamente, si può usare il co-
essfloats
mando ‘\suppressfloats’ che impedisce
vere
mo
di
nare
e? [2,

il posizionamento
di fluttuanti nella pagina in cui appare (e solo in quella!); un argomento opzionale ‘t‘ o ‘b’ proibisce a
LATEX di ancorare figure in quella posizione, cioè ‘\suppressfloats[t]’ impedirà di avere fluttuanti in cima alla pagina
corrente.
Infine, un segno di punto esclamativo
‘!’ dopo una (ed una sola) delle lettere
di posizione, istruisce LATEX a rilassare i
suoi vincoli per l’inserimento di una figura in quella posizione (in particolare ignorare ogni ‘\suppressfloats’ in effetto);
così,
Il principale comando definito da
‘float’ è ‘\newfloat’; con la sintassi
\newfloat
\newfloat{  nome à }{  pos à }{  ext à }
si definisce un ambiente per corpi fluttuanti chiamato  nome à , il cui elenco viene tenuto in un file con estensione ‘  ext à ’,
posizionati secondo la specifica ‘  pos à ’.
Ad esempio,
\newfloat{formula}{p}{fml}
definisce un ambiente formula con una
sua propria numerazione; le figure di tipo ‘formula’ saranno posizionate di preferenza su una pagina apposta, ed il loro
indice sarà tenuto in un file .fml.
\begin{figure}[h!]
Con il comando ‘\floatname’ si può \floatname
.
.
impostare il nome di ogni nuovo tipo di
.
figure, quello che aprirà una didascalia;
\end{figure}
questo comando accetta due argomenti,
è la migliore approssimazione all’indica- il primo è il nome di un nuovo ambienzione “metti proprio qui questa figura!”. te fluttuante, ed il secondo il testo che
Allo stesso modo,
inizierà ogni didascalia. Ad esempio,
\begin{table}[t!]
.
.
.
\floatname{formula}{Formula}
farà in modo che le didascalie degli ambienti ‘figure’ si aprano con “Formula”
in combinazione con ‘\suppressfloats’ seguito dal numero progressivo.
può servire per forzare LATEX a inserire
Per includere l’indice delle figure di un
una tabella in cima ad una pagina.
certo tipo si usa il comando ‘\listof’:
\listof
\end{table}
ˆ6Ry ó,ya`Ž?}<”::„"ƒOZ‹_^1Ž?„„Ž¢!{1„
\listof{  nome à }{  titolo à }
L’estensione ‘float’ permette di definire
nuovi ambienti per corpi fluttuanti, ciascuno col suo elenco e una numerazione
separata. Inoltre ‘float’ permette di modificare l’aspetto grafico delle decorazioni intorno ai nuovi tipi di figure (p. es.
riquadrarle).
che viene sostituito da un elenco degli ambienti di tipo ‘  nome à ’, intitolato
‘  titolo à ’. Ad esempio, per ottenere un
indice degli ambienti ‘formula’ definiti
prima, scriveremo:
71
\listof{formula}{Elenco delle formule}
È bene definire un tipo distinto di flut- Per esempio, le figure di questo quatuante per ogni tipo di figura inclusa in un derno sono prodotte con il comando
Y
documento:
per esempio, questo quader- “\floatstyle{ruled}”.
no ha un ambiente per i listati, uno per le
schermate, uno per gli esempi di LATEX,
ecc.
Numerazione delle figure
Un quarto argomento, opzionale, di
\newfloat permette di numerare le figure di un certo tipo all’interno di una unità
sezionale del documento:
\newfloat{  nome à }{  pos à }{  ext à }
[  unità-sezionale à ]
Per esempio,
\newfloat{formula}{p}{fml}[chapter]
farà in modo che gli ambienti di tipo
‘formula’ siano numerati all’interno di un
capitolo (cioè la numerazione riparte da 1
con ogni nuovo capitolo).
Decorazione delle figure
Il comando ‘\floatstyle’ permette di decorare tutti i tipi di figure definiti dai
successivi comandi \newfloat (fino ad
un altro ‘\floatstyle’). Il comando
style ‘\floatstyle’ accetta un solo argomento,
il nome di uno dei tre stili di decorazione
predefiniti:
plain nessuna decorazione intorno alla
figura, la didascalia in basso;
boxed il corpo della figura è racchiuso
in un riquadro, la didascalia sotto il
riquadro;
ruled righe orizzontali separano la didascalia dalla figura ed entrambe dal
corpo del testo, la didascalia è in
alto.
72
‚
ƒ„}…}[ZaZ
Questo capitolo spiega come introdurre
illustrazioni ed altri elementi grafici generati con un programma esterno in un documento LATEX. Si discute anche di come convertire le immagini in un formato
compatibile col sistema teTEX, e di quali
programmi possano essere utili per creare
immagini, diagrammi, grafici, ecc.
Poiché le illustrazioni sono in genere
fuori corpo del testo, questo capitolo si
accompagna al numero 10.
\ includegraphics { figure / mozilla .eps}
ˆˆyˆy´{1|k…Žs‹€(~%€&……Ž¢Š"„~,!!}{1
L’estensione ‘graphicx’ serve per l’inclusione di illustrazioni nei formati grafici più diffusi: .eps, .png, .jpg,
ecc. Bisogna caricare questa estensione nel preambolo, con il comando
‘\usepackage{graphicx}’.
Il principale comando definito da
degraphics
‘graphicx’ è ‘\includegraphics’; questa
istruzione vuole un solo argomento, il nome del file da inserire. Un esempio è in figura 15. Il comando \includegraphics si
può usare in corpo di testo: in questo caso inserisce la figura all’interno della riga corrente, eventualmente allontanando
questa dalle precedenti per evitare sovrapposizioni col testo, per cui è bene usar-
x
Esempio 15: Inclusione di una illustrazione
esterna
lo solo per piccoli segni grafici. Nel caso di illustrazioni di maggiori dimensioni, è bene usare un ambiente figure (cfr.
capitolo 10):
73
\begin{figure}[htbp]
\includegraphics{luther.eps}
\caption{Il vero volto di
Luther Blisset.}
\end{figure}
ˆˆy ‘,y°<~,ZŠ"êM}~*
!X}{?
Š"Žs……¦ l­!›({?€
Una
sintassi
alternativa
di
‘\includegraphics’ permette di compiere alcune operazioni sulle immagini da
includere in un documento LATEX, come
cambiare le dimensioni ed il fattore di
scala, ruotare l’immagine o mostrarne
solo una porzione. La sintassi generale
per queste operazioni è:
\includegraphics[  opzioni à ]{  file à }
dove ‘  file à ’ è il nome del file che contiene l’immagine, e ‘  opzioni à ’ è una lista di
opzioni separate da virgole.
Cambiare le dimensioni
In
assenza
di
indicazioni,
\includegraphics calcolerà le dimensioni di una immagine considerando
ogni pixel grande circa un punto tipografico.1 Per molte immagini, ad esempio
le schermate, questa dimensione è eccessiva: \includegraphics permette di
variarla con le opzioni ‘width’, ‘height’
e ‘scale’.
Le opzioni ‘width=  ampiezza à ’ e
‘height=  altezza à ’ permettono di riscalare l’immagine alle dimensioni date;
‘  ampiezza à ’ e ‘  altezza à ’ devono essere
indicazioni di dimensione valide (cfr.
appendice ??). Ad esempio,
\includegraphics[width=5cm,
height=10cm]{figura.eps}
1
Per la precisione, \includegraphics considera
1pixel b 1bp (big point), dove 1bp c 1 d 004pt (punto
tipografico).
inserisce nel documento un’immagine
delle dimensioni 5 e 10. È possibile specificare una sola tra le misure di altezza e ampiezza, purché si aggiunga l’opzione ‘keepaspectratio’: l’altra misura verrà calcolata in modo da conservare il rapporto esistente nell’immagine
originale.
È più utile indicare le dimensioni
in relazione a quelle della pagina di
testo. Per ‘width’ si possono usare le
ampiezze speciali ‘\textwidth’ (ampiezza della pagina), ‘\columnwidth’
(ampiezza della colonna di testo),
‘\linewidth’ (ampiezza della riga di
testo); per esempio, ‘\includegraphics
[width=\columnwidth] {figura.eps}’
inserisce
l’immagine
‘figura.eps’
ridimensionandola in modo che l’ampiezza sia pari a quella della colonna
di testo. Ciascuna di queste lunghezze
può essere ulteriormente ridotta, precedendola con un numero decimale
compreso tra 0 e 1: ‘\includegraphics
[width=0.8\textwidth] {figura.eps}’
inserisce l’immagine ‘figura.eps’ riscalandola in modo che l’ampiezza sia 80%
della pagina. Per ‘height’ si può usare
l’altezza speciale ‘\textheight’, con
le stesse regole: ‘\includegraphics
[height=0.5\textheight]
{figura.eps}’
inserisce
‘figura.eps’ riscalandola
la solita
in modo
che l’altezza sia metà di quella della
pagina.
Ruotare l’immagine
L’opzione ‘angle= f angolo g ’ ruota l’immagine dell’ f angolo g specificato.
L’opzione ‘origin= f pos g ’ individua il
centro della rotazione; ‘ f pos g ’ è una in-
74
dicazione composta da una delle seguenti sintassi: ‘viewport= f rettangolo g ’, dove
lettere:
‘ f rettangolo g ’ è formato da quattro coordinate, separate da uno spazio, nell’ordit il centro di rotazione è sul margine ne: l’ascissa dell’angolo in basso a sinisuperiore della figura;
stra, l’ordinata dell’angolo in basso a sinic il centro di rotazione è il centro della stra, l’ascissa dell’angolo in alto a destra,
l’ordinata in alto a destra.
figura;
b il centro di rotazione è sul margine
inferiore della figura;
i6i6j kjalnmponqsrut(v3wyx,qt{z}|]w
Il supporto per la grafica è esterno al
programma TEX, e dipende in modo essenziale dalle capacità dei programmi di
l il centro di rotazione è sul margine stampa e visualizzazione (XDvi, Dvips,
sinistro della figura;
ecc.), per cui ‘graphicx’ permette di indic il centro di rotazione è il centro della care quale sistema usare tramite una opzione; ecco la lista delle opzioni più cofigura;
muni, e per ciascuna il tipo di immagini
r il centro di rotazione è sul margine che si possono includere:
destro della figura.
dvips da usare in abbinamento col proLa figura 16 mostra alcuni esempi di
gramma di conversione Dvips (cfr.
rotazione.
sezione 3.2.2), permette immagini
nei formati .eps (anche compresTagliare un riquadro
so!), .pcx, .bmp, .msp, .pntg e
Per tagliare un’immagine si aggiun.pict;
ge l’opzione ‘clip’ in un comando
‘\includegraphics’. Ci sono poi due diverse sintassi per indicare il rettangolo di pdftex da usare col programma PDFTEX, che genera direttamente un file
immagine da mostrare.
.pdf invece del .dvi, permette imL’opzione ‘trim’ permette di ritagliare
magini nei formati .png, .jpg, .mps
un rettangolo dell’immagine da mostrare,
e
.pdf;
con la sintassi:
e da una delle seguenti:
dvipdfm da usare col programma
‘dvipdfm’, che converte i file .dvi
dove ‘ f s g ’ è il numero di pixel da tagliare
in file .pdf, permette immagini nei
alla sinistra dell’immagine, ‘ f b g ’ quelli da
formati .jpg, .bmp e .pdf.
tagliare in basso, ‘ f d g ’ a destra e ‘ f a g ’ in
alto.
Per un elenco completo si veda la docuAnche l’opzione ‘viewport’ permet- mentazione dell’estensione graphicx. Se
te di ritagliare un rettangolo dall’imma- nessuna opzione è specificata, ‘graphicx’
gine da mostrare; ma con una diversa assumerà ‘dvips’.
trim= f s ghf b gHf d gHf a g
75
[Mi sa che i
da .pcx in
poi sono
formati solo
per la
versione
DOS ~~~ ]
1. \ includegraphics [width=18pt,
angle=36]{ figure / tetex . eps}
\ hrule
2. \ includegraphics [width=36pt,
angle=72, origin =cc]
{ figure / tetex . eps}
\ hrule
3. \ includegraphics [width=54pt,
angle=108, origin = tl ]
{ figure / tetex . eps}
\ hrule
4. \ includegraphics [width=72pt,
angle=144, origin =br]
{ figure / tetex . eps}
1.
2.
3.
4.
Esempio 16: Esempi di figure ruotate
\ includegraphics
[width=\ linewidth ,
trim =30 105 45 30, clip ]
{ figure / mozilla .eps}
Esempio 17: Ritagliare un’immagine
76
to elenco di software liberamente disponibile per il disegno tecnico con
Linux/BSD.
Convertire tra diversi formati
Il programma ‘convert’ è in grado di
convertire (quasi) ogni formato grafico in (quasi) ogni altro; la sintassi è
semplicissima:
convert f file1 gHf file2 g
‘convert’ riconosce automaticamente il
formato di ‘ f file1 g ’ e ‘ f file2 g ’ dall’estensione del nome; consultate la pagina
man ‘convert(1)’ per un elenco di tutti
i formati supportati.
‘convert’ può operare una serie infinita di modifiche alle immagini, consultate la pagina man ‘convert(1)’ per
informazioni.
Creare diagrammi
I due programmi più diffusi per creare diagrammi da includere in LATEX sono “XFig” e “DIA”; entrambi girano sotto X/Windows e permettono di vedere i
diagrammi mentre li si disegna.
“XFig” ha pulsanti e menu per quasi ogni esigenza, può esportare i suoi
grafici in diversi formati (compreso .eps
per l’inclusione nei documenti LATEX) ed
ha la possibilità di caricare una libreria di simboli da usare come “mattoncini” per la costruzione di un diagramma: in questo modo si possono realizzare diagrammi circuitali, schemi di reti,
ecc. “XFig” è disponibile presso http:
//www.xfig.org/.
“DIA” è sicuramente più semplice ed
amichevole da usare rispetto a XFig, ma
risente della sua giovane età: ha un minore assortimento di strumenti di disegno e
di simboli già disegnati.
Presso http://sal.kachinatech.com/
E/2/index.shtml troverete un comple77
€ t(NwJv‚onƒJo[„]…
i3†j‡i6jaˆŠ‰yz}‹ŒwJq‰‹ŒŽ}o&_w|]onrt{‹Œ‘’w
già definiti; per via dei meccanismi
interni
di LATEX, non si possono definire
Ormai vi sarete accorti che la scrittura in
TEX tende a volte ad essere un po’ verbo- neanche comandi il cui nome comincia
sa, e che le stesse sequenze di comandi ri- con “\end”. (Per esempio, ‘\endymione’.)
L’espansione di un comando può concorrono più volte nel corso di uno stesso
tenere
altri comandi, ma non il comando
documento; per fortuna e per comodità,
che
si
sta
definendo:
LATEX permette ai suoi utenti di definire
nuovi comandi. Il comando per fare ciò
\newcommand{\gnu}{\gnu’s Not
si chiama, appunto, ‘\newcommand’, ed ha
\textsc{Unix}}
diverse forme sintattiche.
Comandi senza argomenti
Il più semplice utilizzo di ‘\newcommand’
sta nel definire abbreviazioni per parti di
testo frequentemente ricorrenti; in questa sua forma più semplice, \newcommand
prende due argomenti, il primo dei quali
è il nome del comando da definire (completo di \) ed il secondo è una stringa
che dovrà essergli sostituita; questa stringa si dice “espansione” del comando. Ad
esempio,
è una definizione circolare, e provoca
un errore “TEX capacity exceeded”. Il
99% delle volte questi errori sono causati da definizioni circolari, e non da una
reale necessità di aumentare la memoria a disposizione di TEX. Attenzione!
TEX sostituisce l’espansione di un comando quando lo incontra nel testo, e non
al momento della definizione: se quindi definite il comando ‘\gnu’ come sopra, TEX riporterà un errore solo alla pri\newcommand{\gnu}{GNU’s Not
ma occorrenza di questo comando nel
\textsc{Unix}}
documento.
definisce un nuovo comando ‘\gnu’ il cui
Per via della sintassi usata da TEX per
effetto sarà di produrre il testo “GNU’s individuare gli argomenti da passare ai
Not U NIX”.
comandi, tutti gli spazi che seguono un
Non si possono definire con comando senza argomenti sono ignora\newcommand dei comandi che siano ti. Si può usare il comando \ (bar78
ra inversa-spazio) per inserire uno spazio
dopo un comando.
Ancora, si può usare \newcommand per
definire notazioni di uso comune: ad
esempio,
Comandi con argomenti
È anche possibile definire nuovi comandi che accettano argomenti (fino a 9; questo è un limite di TEX), usando una forma
alternativa di \newcommand:
\newcommand{ f comando g }[ f numero degli argomenti g ]{ f espansione g }
\newcommand{\R}{\mathbb{R}}
permette di usare ‘\R’ per produrre il simbolo del campo dei numeri reali. L’espansione di questo comando contiene
‘\mathbb’ che funziona solo nel modo matematico, perciò anche il nuovo comando
\R funzionerà solo nel modo matematico:
dovremo perciò scrivere:
Se le combinazioni di caratteri #1, “”“P“ , #9
compaiono nell’espansione, verranno sostituite con il primo, il secondo, “”“P“ , il nono argomento. (Quiz: perché allora non
ci possono essere più di nove argomenti
in un comando?)
Un esempio chiarirà meglio le cose:
\newcommand{\lasecondachehaidetto}[2]{\emph{#2}}
il campo \( \R \) dei numeri reali,
e non
il campo \R \ dei numeri reali.
(Perché nell’ultimo esempio ‘\R’ è seguito da barra inversa-spazio?)
LATEX permette di aggirare questa limitazione: il comando ‘\ensuremath’ compila in modo matematico il suo unico argomento, indipendentemente dal contesto in cui occorre. Adattando l’esempio
precedente,
definisce un comando che stampa il suo
secondo argomento enfatizzato ed ignora il primo; più in dettaglio, se inseriamo
\lasecondachehaidettoperchéquando nel
mezzo di un documento, durante la
compilazione del documento accade che:
1. TEX lo sostituisce con la sua espansione \emph{#2};
2. scorre questa alla ricerca delle
combinazioni di caratteri #1 e #2;
3. trova #2 e la sostituisce con il
secondo argomento “quando”.
\newcommand{\R}{\ensuremath{\mathbb{R}}}
Alla fine è come se avessimo scritto
definisce un comando ‘\R’ che si può usare indifferentemente e con gli stessi effetti
sia in mezzo ad un paragrafo di testo che
ad una formula.
Insomma, i comandi definiti con
\newcommand possono funzionare sia nel
modo di testo (LR mode) che in quello matematico: tutto dipende dalla loro
espansione.
\emphquando nel documento. Cosa succede se al posto di #2 si scrive #1? E se ci
mettiamo #3?
Un esempio più complicato:
\newcommand{\D}[2]{\frac{\partial #2}{\partial #1}}
Cosa fa questo comando? Quanti argomenti accetta? Si può usare in modo
testo? (cfr. figura 12.1)
79
Comandi con argomenti facoltativi
Attenzione! TEX sostituisce ad un coUn’ultima forma di \newcommand consen- mando la sua espansione quando quete di definire un comando il cui primo sto comando occorre nel documento,
quindi anche con \renewcommand bisoargomento è opzionale:
gna prestare attenzione alle definizioni
\newcommand{ f comando g }[ f numero<deglicircolari:
argomenti g ][ f valore del primo argomento g ]{ f espansione g }
Il primo argomento dovrà essere posto fra
parentesi quadre, altrimenti il valore indicato nella definizione verrà sostituito a #1
nell’espansione. Non è possibile rendere
facoltativi altri argomenti oltre il primo.
Per esempio, definiamo un comando
‘\Ho’ con un solo argomento (facoltativo)
che produce una lettera “H” seguita dal
suo primo argomento in esponente; se il
primo argomento non è specificato, dovrà
mettere in esponente un asterisco:
\renewcommand{\Vec}[1]{\Vec{\boldsymbol{#1}}}
Ridefinire i comandi
Non si può usare \newcommand per definire
un comando esistente, ma occorre usare la
variante ‘\renewcommand’; questa ha esattamente la stessa sintassi di \newcommand,
ma permette di costruire solo comandi già
definiti.
Ad esempio, supponiamo di decidere
che vogliamo rappresentare i vettori in
stile grassetto, e non con la consueta freccettina; la via più breve per farlo è di ridefinire il comando ‘\Vec’ in modo che
stampi il suo argomento in grassetto:
\title{Il lavoro mi perseguita, ma io sono più veloce}
non produce un comando che pone una
freccettina sopra un simbolo in stile grassetto, ma genera invece un errore: TEX
non può distinguere \Vec nel secondo
argomento da quello nel primo.
Ancora, questo distrugge la vecchia definizione di \Vec, e non è più possibile
sovrapporre la freccettina ad un carattere!
Analizziamo meglio questa situazione:
‘\Vec’ è un comando la cui interpretazione è “metti una freccina sopra il simbo\newcommand{\Ho}[1][*]{\ensuremath{H^{#1}}}
lo che segue”, e non “il simbolo che seProvate: cosa produce \(\Ho(X)\)? e gue rappresenta un vettore”; \Vec fornisce
\(\Ho[n](X)\)? e con \(\Ho{4}(X)\) quindi una indicazione tipografica. Vicecosa si ottiene? Come estendereste il versa, il comando ‘\title’ fornisce una
comando \D definito prima per scrivere indicazione sulla categoria logica del suo
derivate di ordine superiore?
argomento:
implica che il testo “Il lavoro mi perseguita, ma io sono più veloce” è il titolo del documento, quindi deve ricevere un trattamento tipografico particolare
(per esempio, sarà stampato in grassetto
e con un carattere grande, oppure in maiuscoletto, ecc.); il fatto di aver marcato quel testo come “titolo” permette anche ad esempio di riprenderlo nell’intestazione di ogni pagina, cosa che non sarebbe stata possibile se lo avessimo semplicemente indicato a TEX di impaginarlo
\renewcommand{\Vec}[1]{\mathbf{#1}} come “grassetto 18pt.”
80
LATEX non può fornire comandi per
marcare la categoria logica di ogni pos•
sibile brano
di testo, ma ciascuno può
definire i propri tramite \newcommand e
\renewcommand: l’espansione di questi comandi indicherà il trattamento tipografico da riservare a queste particolari parti
di testo.
Il modo consigliato nei manuali di
LATEX per gestire queste situazioni consiste nel definire comandi che indichino
la categoria o la funzione logica che un
simbolo ha, e usare questi comandi per
produrre gli effetti tipografici desiderati.
Un esempio per chiarire meglio: l’accento ‘\Bar’ è usato in matematica per
svariate notazioni; se in un documento
usiamo questo comando per indicare due
costrutti diversi (“ “P“”“ dal contesto risulterà chiaro di cosa si sta parlando “P“”“ ”),
saremo in difficoltà non appena dovremo usarle entrambe in una formula (per
la legge di Murphy, questo capiterà quasi
certamente). Se invece definiamo:
riportare brevi citazioni o parole straniere.
Il comando ‘\emph’ ha in effetti una interpretazione come “enfatizza il testo in argomento”, ma non esistono comandi specifici per gli altri due scopi. Potremmo
perciò definire:
\newcommand{\citazione}[1]{\emph{#1}}
\newcommand{\parolastraniera}[1]{\emph{#1}}
e poi permetterci di cambiare idea e decidere che vogliamo mettere le citazioni
tra virgolette; basterà allora cambiare una
sola riga del documento:
\newcommand{\citazione}[1]{‘‘#1’’}
i3†j †jaˆŠ‰_zŒ‹ŒwJq‰–‹ŒŽ—o&ywnt{r™˜’wJ‰_‹Œv‚w
LATEX permette di definire nuovi ambienti
testuali, in maniera parallela a quanto già
visto per i comandi.
La forma più semplice di definizione di
un ambiente è:
\newenvironment{ f nome g }{ f inizio g }{ f fine g }
dove f nome
g è il nome che vogliamo dare
\newcommand{\cl}[1]{\Bar{#1}}
% chiusura
topologica
all’ambiente
e f inizio g e f fine g sono por\newcommand{\grad}[1]{\Bar{#1}} % parità
dell’elemento
zioni di codice LATEX che verranno sosti\newcommand{\ext}[1]{\Bar{#1}} % estensione
tuite, rispettivamente, a \begin{nome} e
potremo scrivere tranquillamente \cl{A}, \endnome. Per esempio, definiamo un am\grad{a}, \ext{f} e cambiare ad esempio biente per le citazioni, derivato da quote
ma utilizzi un carattere corsivo:
\newcommand{\grad}[1]{|#1|}
se dobbiamo applicare sia ‘\grad’ che
‘\ext’ ad un elemento; in questo modo è possibile cambiare consistentemente e facilmente la notazione in tutto un
documento.
Un altro esempio: il corsivo è usato
normalmente nel testo per enfatizzare parole, oppure, invece delle virgolette, per
\newenvironment{iquote}
{ \begin{quote}\begin{itshape} }
{ \end{itshape}\end{quote} }
Il comando \newenvironment non permette di ridefinire ambienti già esistenti; in questi casi occorre usare
\renewenvironment.
I due comandi
hanno la stessa sintassi.
81
Si possono definire anche ambienti
che accettano parametri; questi parametri vengono dati come ulteriori argomenti
al comando \begin che comincia il nostro ambiente. Ad esempio, l’estensioEffetto attiva un ambiente multicols
ne multicol
che impagina il testo in più colonne:
Codice LATEX
\newcommand{\C}{\mathbb{C}}
\renewcommand{\H}{
\ensuremath{\mathbb{H}}
}
Introduciamo ora il campo
\(\C\) dei numeri complessi,
ed il corpo \H\
dei quaternioni\ldots
\newcommand{\D}[2]{
\frac{\partial #2}
{\partial #1}
}
La derivata prima
\(\D{x}{f}\) \ldots
\newcommand{\D}[3][{}]{
\frac{\partial^{#1} #3}
{\partial #2^{#1}}
}
La derivata prima
\(\D{x}{f}\) e la
derivata seconda
\(\D[2]{x}{f}\) \ldots
\renewcommand{\vec}[1]{
\mathbf{#1}
}
Consideriamo vettori \(\vec a\),
\(\vec b\) \ldots
Introduciamo ora il
\begin{multicols}{2}
campo dei numeQuesto testo viene impaginato da \LaTeX\ su due colonne.
complessi,
Ilri numero
di colonneed
si il
passa come argomento supplementare
acorpo
\verb’\begin{multicols}’
dei quater- Per usare l’ambiente
\texttt{multicols} si deve inserire la riga
nioni š›š›š
\verb’\usepackage{multicol}’
nel preambolo.
\end{multicols}
La vedere
derivata
Potete
come prima
LATEX compone
questo
∂ f esempio in figura 12.1.
∂x
š(š›š
Figura 12.1: Testo impaginato su due colonne
con l’ambiente multicols
Questo testo viene a \begin{multicols}
La derivata
prima
usare l’ambienimpaginato
da LATEX Per
su due
colonne.
Il te multicols si de∂f
la derivata
numero
ve inserire la riga
∂x die colonne
si passa come argo∂2 f \usepackage{multicol}
seconda
š›š›š
mento
supplementare
∂x2 nel preambolo.
Per definire ambienti con paraConsideriamo vetmetri si usa la seguente forma di
\newenvironment
tori a, b š›:š(š
\newenvironment{ f nome g }[ f numero g ]{ f inizio g }{ f fine g }
Tabella 12.1: Esempi di definizione di nuovi
comandi.
dove f numero g è il numero di parametri aggiuntivi che si passeranno a
\begin{ f nome g }, e tutti gli altri argomenti hanno lo stesso significato che nella forma più semplice di \newcommand. Come
già per i comandi, ogni occorrenza di #1
82
in inizio verrà sostituita dal primo parametro, #2 dal secondo, e così via. Attenœ
zione! Nessuna
di queste sigle può comparire nella sequenza fine, pena un errore
“Illegal parameter reference in definition
of “”“P“ ”.
Vediamo un esempio: definiamo un
ambiente per produrre una sezione di
testo, preceduta e seguita da una riga
orizzontale; il titolo della sezione verrà
indicato come parametro all’ambiente:
\newenvironment{ f nome g }[ f numero g ][ f valore g ]{ f inizio g }{ f fine g }
In questo caso, il primo parametro diventa
un argomento opzionale di \begin{nome},
e come tale andrà tra parentesi quadre;
l’espressione f valore g verrà utilizzata come primo parametro se quest’ultimo è
stato omesso. Come esempio, costruiamo
un ambiente per impaginare una sezione
di testo su più colonne; il numero di colonne sarà il primo parametro, il secondo darà il titolo alla sezione; omettendo il
numero di colonne LATEX assumerà ‘3’:
\newenvironment{hrulesec}[1]
{
\newenvironment{colsec}[2][3]
\hrulefill % riga orizzontale per tutta
l’ampiezza di pagina
{ \section{#2}\begin{multicols}{#1} }
\section{#1}
{ \end{multicols} }
}
{
ed ecco come si usa:
\par
% termina il paragrafo precedente e va a capo.
\begin{colsec}[2]{Titolo}
\hrulefill
Notate che il numero di colonne qui sopra è tra
}
parentesi quadre ‘[’ e ‘]’.
Usiamo questo nuovo ambiente con la \end{colsec}
sintassi:
Provate a inserire un testo più lungo in
\begin{hrulesec}{Tutto (o quasi) su Nicolas
Barbecue}
un ambiente
‘colsec’, e poi ad ometDella sua opera poco si conosce in tere
confronto
alla quantità
di come in
il numero
di colonne,
scritti che egli ideò e realizzò (tristemente
famosa
è
la
sua
\begin{colsec}{Titolo}.
affermazione: ’’Più cose dico più possibilità c’è che qualcheduna
di esse sia esatta’’), ed ancor meno si sa della sua vita.
\end{hrulesec}
Provate questo nuovo ambiente hrulesec:
perché rimane dello spazio a sinistra delle righe orizzontali? E se si aggiunge un comando \noindent prima di ogni
\hrulefill? E togliendo il comando
\par? Infine, sostituite \dotfill al posto
di \hrulefill.
L’ultima variante di \newenvironment
permette di assegnare un valore predefinito al primo parametro:
83
[1] Donald E. Knuth. The TEXbook. Addison-Wesley, 1996.
[2] Leslie Lamport. LATEX: A Document Preparation System. Addison-Wesley, 2nd
edition, 1994.
[3] Roberto Lesina. Il nuovo manuale di stile. Zanichelli, Bologna, 2.0 edition, 1994.
84