Scrivere con LATEX
(corso di LATEX in N2 puntate)

Riccardo Murri
<murri@phc.unipi.it>

   
Prima di cominciare

Prima di cominciare, raduniamo gli ingredienti che occorrono per scrivere con LATEX. Se già avete un sistema TEX funzionante (per esempio, usate i computer dell'Università e qualcuno l'ha già installato e configurato), saltate oltre: il TEX è ampiamente portabile, e quasi nulla di quello che dirò è specifico o ristretto ad una particolare architettura (avrete gli stessi risultati con teTEX per FreeBSD o con MiKTEX per MS-Windows).

   
Editor di Testi

Ogni editor di testi va bene per scrivere in LATEX; due in particolare però offrono supporto specifico per i file TEX: LyX ed EMACS (tramite il modo AUC-TEX). Ognuno ha comunque il suo editor preferito: non è il caso di cambiare ora, TEX non fa differenze.

   
TEX

Servirà ovviamente il compilatore TEX, un programma per vedere i file .dvi (xdvi, kdvi), ed uno per stamparli eventualmente (dvips, dvilj). teTEX è una distribuzione di TEX per i sistemi UNIX, comprendente questi tre ed altri programmi complementari, i più diffusi pacchetti di macro come LATEX e Plain-TEX, ed infine un'abbondante documentazione.

Se non avete niente di tutto questo, ecco una rapida lista di cose da installare per avere teTEX pronto:

Caldera
installate il pacchetto TeTeX.
Debian
installate i pacchetti tetex-base, tetex-bin, tetex-doc e tetex-extra;
FreeBSD, OpenBSD
teTEX è fra i programmi che si possono installare con il sistema dei ports: usate quindi il relativo Makefile sotto la directory /usr/ports;
NetBSD
Esiste una versione di teTEX preparata per il sistema di pacchetti di NetBSD: installate teTeX, teTeX-bin, teTeX-share, teTeX-sharesrc.
Red Hat
come minimo sono necessari i pacchetti tetex, tetex-latex, tetex-doc, tetex-xdvi. Se volete stampare, installate anche tetex-dvips (stampanti POSTSCRIPT) o tetex-dvilj (HP LaserJet e compatibili PCL);
Slackware
installate i tre pacchetti tetex.tgz, tex_bin.tgz e tex_doc.tgz, dalla serie tex1;
SuSE
installate i pacchetti tetex, te_ams, te_cont, te_dvilj (solo per stampare su stampanti HP LaserJet o compatibili), te_kpath, te_latex.
MS-Windogs
Se proprio non potete riformattare l'hard-disk per metterci Linux, troverete tutte le istruzioni per reperire ed installare MiKTEX a http://www.esat.kuleuven.ac.be/ minten/NTTeXing/NTTeXing.html

Chi usa qualche altro sistema, come pure chi vuole compilare da sé tutti i programmi che installa, può trovare le sorgenti di teTEX all'URL:

ftp://ftp.dante.de/tex-archive/systems/unix/teTeX/.

Chi usa EMACS e volesse provare AUC-TEX, troverà tutte le informazioni necessarie a http://sunsite.auc.dk/auctex/; chi usa Debian o Red Hat può anche subito installare il pacchetto relativo, ma le altre distribuzioni non sembrano averlo disponibile.

   
Qui comincia l'avventura...

Ricordiamo brevemente il funzionamento del sistema TEX: il programma tex prende in ingresso un file .tex e lo compila in un file .dvi (questo è un particolare formato che memorizza tutte le informazioni necessarie per la resa tipografica di un documento, sia che questa sia fatta su una stampante o su un video). Il file .dvi viene poi convertito in un file POSTSCRIPT od un altro formato pronto per la stampa, per mezzo di appositi convertitori. La prima fase prende il nome di compilazione del file .tex: qui è necessario fare molta attenzione, perché un errore di sintassi nei comandi LATEX è spesso sufficiente per arrestare il procedimento o comunque per creare risultati inaspettati da quel punto in avanti. La seconda fase è completamente automatica e non avrete mai problemi se il software è installato correttamente, anche se può richiedere molto più tempo, specie sui computer lenti.

Per compilare un file .tex si usa il comando latex: ad esempio per compilare il file gino.tex si dovrà scrivere

latex gino.tex
che crea il file gino.dvi.

Per avere una anteprima del file gino.dvi, si usa il comando xdvi sotto X/Windows: ad esempio,

xdvi gino.dvi

   
La struttura di un file LATEX

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.

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 TEXoltre questa riga. Il testo è scritto normalmente, con i paragrafi separati da una o più righe vuote; LATEX ignora ogni fine-riga che non sia seguita da una riga vuota, ed accumula tutto il testo in un capoverso. Pure, non fa differenza la quantità di spazi che inserite tra una parola e l'altra: LATEX regola da sé la distanza tra le diverse parole, ed allinea il testo sui margini della pagina. In questo modo, potete inserire tabulazioni e spazi nel vostro file .tex per renderlo più leggibile (come si fa con il codice sorgente dei programmi) mentre lo state modificando, certi comunque che il risultato finale non cambierà.

Il preambolo è costituito da tutto il materiale che si trova prima del comando \begin{document}: per definizione il preambolo non può contenere testo da stampare, ma solo comandi LATEX per impostare la struttura globale del documento, ad esempio per cambiare le dimensioni della pagina, spostare i margini, o caricare estensioni 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.)

Esaminiamo sommariamente il listato di figura 1.

  
Figure 1: Primo esempio: 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).

\documentclass[a4paper]{article}

% Le due righe seguenti caricano estensioni di LaTeX
\usepackage[italian]{babel}
\usepackage[latin1]{inputenc}

% qui finisce il preambolo LaTeX
\begin{document}

\section{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.  Questa Licenza si
applica alla maggioranza dei programmi della Free Software Foundation
e ad ogni altro programma i cui autori hanno scelto questa Licenza.
Alcuni altri programmi della Free Software Foundation sono invece
coperti dalla Licenza Pubblica Generica per Librerie.  Chiunque può
usare questa Licenza per i propri programmi.

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.

[....]

\end{document}



I comandi LATEX cominciano tutti col simbolo \, i brani da stampare sono scritti liberamente, come in un normale file di testo. Ogni riga che comincia con % è un commento2 e come tale viene ignorato da LATEX. Il preambolo LATEX contiene tre comandi: \documentclass e \usepackage (usato due volte). \documentclass deve essere sempre dichiarato nella prima riga utile del file, perché specifica quale formato LATEX dovrà utilizzare per l'impaginazione del documento.3 La prima invocazione di \usepackage comunica a LATEX che stiamo scrivendo in lingua italiana (in modo che scriva, ad esempio, ``9 Settembre 1999'' e non ``September 9, 1999''). La seconda chiamata a \usepackage permette a LATEX di interpretare correttamente le lettere accentate.4 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 entrambe inutili.

Il corpo del documento contiene due paragrafi di testo: notate come il primo paragrafo sia stato scritto senza troppo riguardo per i margini, mentre il secondo è perfettamente allineato per una ampiezza di 72 caratteri; eppure entrambi verranno da LATEX giustificati esattamente (vedi figura 2. Il comando \section{Premessa} inizia una sezione intitolata appunto Premessa.

  
Figure 2: Ecco come LATEX trasforma il listato di figura 1.
\begin{figure}
\epsfig{file=gpl1.eps} \end{figure}

   
Anatomia di un comando

Vediamo da vicino com'è fatto un comando LATEX, prendendo ad esempio la prima riga del nostro file:

\(
\underbrace{\texttt{$\backslash$ documentclass}}_{\textit{comando}}
\underbrace{[a4paper]}_{\textit{opzioni}}
\underbrace{\{article\}}_{\textit{argomento}}
\)

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, mentre \InterlineaDoppia si. Fanno eccezione i nomi di un solo simbolo, che allora può essere un qualunque carattere valido. LATEX distingue tra maiuscole e minuscole nei nomi di comandi: \large e \Large sono comandi diversi, con effetti diversi.

L'argomento di un comando è sempre del testo racchiuso dalle parentesi graffe. Cosa accade a questo testo dipende, ovviamente, dal comando:

\documentclass{article}
comincia un documento di classe article (articolo), mentre
\section{L'influenza del pane imburrato sulla rotazione terrestre}
comincia una sezione intitolata, ovviamente, L'influenza del pane imburrato sulla rotazione terrestre. Alcuni comandi accettano più di un argomento, ciascuno racchiuso dalle sue parentesi: ad esempio,
\frac{x}{y}
stampa una frazione con x al numeratore e y al denominatore. LATEX ignora eventuali spazi tra il comando ed il suo argomento, come pure tra gli argomenti, se ce n'è più d'uno; tutte le seguenti forme danno lo stesso risultato: dove il simbolo indica uno spazio. Quando un argomento è costituito da un solo carattere, si possono omettere le parentesi graffe.

Attenzione! Questa sintassi non dà modo a TEX di controllare che il numero di argomenti passati ad un comando sia quello giusto! Ricordate che ogni comando accetta solo un numero prefissato di argomenti, ma se ne sbagliate il numero non avrete nessun errore sintattico; se ne mettete di più, quelli residui verranno considerati come normale testo; se ne fornite di meno, quelli che mancano verrano presi dal testo seguente (questo può generare effetti strani).

Le opzioni sono sempre racchiuse fra parentesi quadre, e sono, come dice il nome, facoltative: selezionano varianti nel comportamento di un comando. Per esempio,

\documentclass[a4paper]{article}
impagina un articolo per la stampa su carta di formato A4. I comandi che accettano un solo argomento a volte accettano anche più di una opzione: in questo caso le separiamo con una virgola; per esempio,
\documentclass[a4paper,twocolumn]{article}
impagina l'articolo in formato A4 e su due colonne. I comandi che accettano più argomenti, invece, vogliono le diverse opzioni interposte tra un argomento e l'altro. Le opzioni sono anche chiamate argomenti opzionali, perché il loro comportamento è in effetti del tutto simile a quello degli argomenti.

   
Titoli ed autori

Cominciamo a lavorare un po' sul documento di figura 1: come si fa ad aggiungere un titolo, il nome dell'autore e la data? Un'intestazione insomma? LATEX divide questo compito in due parti:

1.
dichiarazione di titolo, autore e data con i comandi \title, \author e \date;
2.
creazione della pagina del titolo con \maketitle.
Ovviamente le 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,

\title{Licenza Pubblica Generica GNU}
Eventuali sottotitoli possono essere aggiunti separandoli dal primo titolo con \\:
\title{Licenza Pubblica Generica GNU \\ Versione 2}

Anche il comando \author vuole un 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 \\:

\author{Free Software Foundation, Inc. \\
  675 Mass Ave, \\
  Cambridge, MA 02139, \\
  USA}
Si possono anche specificare più autori, basta separare le relative informazioni con \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)}

Infine, \date specifica la data in cui il documento è stato composto; in mancanza di indicazione, LATEX inserirà la data in cui il file viene compilato. All'interno dell'argomento di \date, potete usare il comando \today per indicare la data odierna.

Il comando \maketitle non prende argomenti e può essere posizionato dove volete 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 di figura 1, in modo da produrre un titolo come in figura 3.

  
Figure 3: La licenza pubblica generica GNU col suo bel titolo.
\begin{figure}
\epsfig{file=gpl2.eps} \end{figure}

   
Evidenziare il testo

Il comando per evidenziare una porzione di testo è \emph, che accetta un solo argomento: il testo da evidenziare. Ad esempio,

\emph{Licenza Pubblica Generica GNU} vs. Licenza Pubblica Generica GNU
produce
Licenza Pubblica Generica GNU vs. Licenza Pubblica Generica GNU
Esiste anche un'altra forma di evidenziazione, che produce uguali effetti tipografici, ma ha una sintassi differente:
{\em Licenza Pubblica Generica GNU}
La differenza sta in questo: con la seconda forma si possono evidenziare interi brani di testo, anche comprendenti più paragrafi, mentre la prima è 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 di figura 1.

LATEX permette molti altri effetti sul testo, e tutti ammettono le due forme sintattiche alternative: guardate la tabella di figura 4 per un elenco completo.

  
Figure: I vari stili dei caratteri in LATEX. La colonna di sinistra indica le forme brevi, adatte per porzioni di testo all'interno di un capoverso; quella centrale elenca le forme lunghe, adatte anche per più paragrafi.
\begin{figure}
\begin{tabular}{\vert l\vert l\vert r\vert}
\hline
\emph{Forma ...
...rb*'}' &Il carattere normale
del documento\\
\hline
\end{tabular}\end{figure}

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:
{\itshape\bfseries GNU's Not UNIX}
produce una scritta in corsivo grassetto, mentre di più comandi della stessa categoria, l'ultimo prevale:
{\itshape\scshape GNU's Not UNIX}
scrive GNU'S NOT UNIX (il maiuscoletto soppianta il corsivo).

Un'ultima nota sull'enfatizzazione: i comandi \em e \emph, evidenziano: il loro effetto non è sempre di scegliere un carattere corsivo, ma di scegliere un carattere che risalti (non troppo, però) rispetto a quello che lo circonda: cosicchè due \em annidati ritornano al carattere dritto:

{\em Scatole {\em nelle} scatole}
Scatole nelle scatole

Ormai ne sapete abbastanza di LATEX per scrivere il vostro primo documento (magari prendendo come canovaccio il listato di figura 1). L'avventura è cominciata!

About this document ...

Scrivere con LATEX
(corso di LATEX in N2 puntate)

This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)

Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -no_navigation -split 0 -address Riccardo Murri -dir html latex1.tex.

The translation was initiated by Riccardo Murri on 1999-09-11


Footnotes

... intenderci.1
I comandi LATEX fanno pesante uso delle parentesi graffe e quadre. Le descrizioni di tastiera italiana generalmente fornite con Linux permettono di ottenere le parentesi graffe premendo AltGr insieme con le parentesi tonde.
... commento2
Cioè un appunto che solo chi scrive il file vedrà, e che non andrà in stampa.
... documento.3
Per chi conosce HTML, il suo scopo è affine alla dichiarazione !DOCTYPE.
... accentate.4
Le lettere usate negli alfabeti dell'Europa occidentale sono codificate col sistema ISO-8859-1, detto anche Latin-1.


Riccardo Murri