Capitolo successivo Capitolo precedente Indice

69. Introduzione a LaTeX

LaTeX è un vecchio sistema di editoria elettronica, ma tuttora efficace, portato su diverse piattaforme, Linux incluso. Si tratta di un programma di editoria a composizione differita, per cui si parte da un sorgente in formato testo che viene convertito successivamente nel formato finale.

Si basa su un sistema di editoria più elementare, TeX, al quale sono stati aggiunti una serie di stili che introducono delle macroistruzioni, in modo da facilitare il redattore poco esperto.

69.1 Funzionamento fondamentale

LaTeX utilizza un sorgente .tex e genera in particolare un rapporto sulla elaborazione, .log, e il file finale in formato .dvi. I file .dvi vengono normalmente convertiti in PostScript attraverso il programma dvips.

File DVI

Il formato DVI rappresentava in origine un formato standard per i documenti stampati. Attorno a questo formato sono stati costruiti una grande quantità di programmi di utilità per la ulteriore conversione in formati comprensibili a diversi tipi di stampanti e anche un visualizzatore in anteprima.

Attualmente, lo standard di fatto del formato per i file contenenti documenti pronti per la stampa è PostScript, quindi, i file DVI vengono quasi sempre convertiti immediatamente in PostScript.

69.2 Esempio introduttivo

LaTeX e TeX rappresentano un sistema di editoria elettronica che può essere usato in modo superficiale, e quindi semplificato, oppure anche in modo estremamente complesso. Per cominciare, è preferibile provare con un esempio molto semplice, almeno per poter capire di cosa si sta parlando.

\documentstyle{article}

% Inizia il preambolo.

\setlength{\textwidth}{10cm}
\setlength{\textheight}{10cm}

% Fine del preambolo.


\begin{document}

% Inizia il documento vero e proprio.

\section{Introduzione a LaTeX}

Questo \`e un esempio di documento scritto con LaTeX.
Come si pu\`o vedere \`e gi\`a stato definito uno stile
generale del documento: article.

\subsection{Suddivisione del documento}

Lo stile article prevede una suddivisione in sezioni
sottosezioni ed eventuali sotto-sottosezioni.

\subsection{Paragrafi}

Il testo di un paragrafo termina quando nel sorgente viene
incontrata una riga vuota (una riga bianca).

Questo \`e l'inizio di un nuovo paragrafo e si nota perch\'e
la prima riga \`e leggermente rientrata.

\subsection{Gli ambienti}

LaTeX utilizza gli ambienti per definire dei comportamenti
circoscritti a zone particolari del testo.
Per esempio, la centratura si ottiene utilizzando l'ambiente
center.

\begin{center}
Questo \`e un esempio di testo centrato.
\end{center}

% Fine del documento.

\end{document}

Supponendo di attribuire a questo file il nome primo.tex, si può procedere con la composizione nel modo seguente.

$ latex primo

Se non vengono rilevati errori, durante l'elaborazione si vedono diverse informazioni sul procedimento della composizione, come nell'esempio seguente.

This is TeX, Version 3.14159 (C version 6.1)
(primo.tex
LaTeX2e <1996/12/01> patch level 1
Babel <v3.6h> and hyphenation patterns for loaded.
(/usr/lib/texmf/texmf/tex/latex/base/latex209.def
Entering LaTeX 2.09 compatibility mode.
(/usr/lib/texmf/texmf/tex/latex/base/tracefnt.sty)
(/usr/lib/texmf/texmf/tex/latex/base/latexsym.sty)
(/usr/lib/texmf/texmf/tex/latex/config/latex209.cfg
(/usr/lib/texmf/texmf/tex/latex/tools/rawfonts.sty
(/usr/lib/texmf/texmf/tex/latex/tools/somedefs.sty)
(/usr/lib/texmf/texmf/tex/latex/base/ulasy.fd))))
(/usr/lib/texmf/texmf/tex/latex/base/article.cls
Document Class: article 1996/10/31 v1.3u Standard LaTeX document class
(/usr/lib/texmf/texmf/tex/latex/base/size10.clo))
No file primo.aux.

Overfull \hbox (7.9452pt too wide) in paragraph at lines 28--30
\OT1/cmr/m/n/10 Il testo di un paragrafo termina quando nel sorgente viene inco
ntrata

Overfull \hbox (14.41629pt too wide) in paragraph at lines 36--40
\OT1/cmr/m/n/10 LaTeX utilizza gli ambienti per definire dei comportamenti circ
oscritti
[1] (primo.aux) )
(see the transcript file for additional information)
Output written on primo.dvi (1 page, 1380 bytes).
Transcript written on primo.log.

Se tutto è andato bene come nell'esempio, si è ottenuto il file primo.dvi che può essere convertito in PostScript.

$ dvips -o primo.ps primo

Quello che si ottiene è il file primo.ps in formato PostScript.


Il risultato della composizione del sorgente LaTeX di esempio.

69.3 Elementi essenziali di un documento LaTeX

Il sorgente di un documento scritto in LaTeX ha una struttura che segue delle regole precise. La prima cosa a essere definita è il tipo di documento, ovvero lo stile generale a cui si vuole fare riferimento. A questo segue eventualmente un preambolo, cioè l'indicazione più o meno facoltativa di altri elementi stilistici insieme alle informazioni che servono a comporre il titolo del documento. Quindi inizia il documento vero e proprio.

Dichiarazione dello stile generale

Lo stile generale del documento viene definito all'inizio del sorgente LaTeX attraverso una delle due dichiarazioni seguenti.

\documentstyle{<classe>}

\documentclass[<opzioni>]{<classe>}

Nel primo caso, viene definita una classe, cioè uno stile generale, mentre nel secondo, si possono anche utilizzare delle opzioni.

Le classi possono essere article, report, letter, book e slides.

Per esempio,

\documentclass[a4paper,11pt]{book}

definisce l'uso della classe book, utilizzando un foglio A4 con la dimensione normale dei caratteri di 11 punti tipografici.

Quando si incontrano le parentesi quadre nella sintassi di LaTeX, queste rappresentano effettivamente l'indicazione di qualcosa di facoltativo, nel senso che se non si intende utilizzare non si usano nemmeno le parentesi quadre, mentre, se l'opzione viene inserita, vanno utilizzate le parentesi per delimitarla. In pratica, se si vuole definire la classe del documento utilizzando l'istruzione documentclass senza l'indicazione di alcuna opzione, si utilizza una sintassi ridotta equivalente a \documentclass{<classe>}.

Preambolo

Il preambolo è quella parte di sorgente LaTeX che sta tra la dichiarazione della classe (o dello stile generale) e la dichiarazione di inizio del documento. Normalmente viene usata per specificare l'utilizzo di stili aggiuntivi e per l'inserimento di tutti quegli elementi che compongono il titolo del documento e gli eventuali indici.

---------

\usepackage[<opzioni>]{<pacchetto>}

Questa dichiarazione permette di utilizzare un ulteriore file di stile. Le opzioni utilizzabili dipendono dal tipo particolare di stile a cui si fa riferimento. Un file di stile può anche essere predisposto dall'utilizzatore, solitamente partendo da un altro già esistente.

---------

Così come è possibile aggiungere stili aggiuntivi, è possibile utilizzare direttamente delle dichiarazioni riferite a singoli elementi stilistici. Nell'esempio presentato all'inizio, si utilizzavano due dichiarazioni:

\setlength{\textwidth}{10cm}
\setlength{\textheight}{10cm}

In questo caso, si definiva la larghezza e l'altezza del testo.

Il preambolo serve anche per definire gli elementi che fanno parte del titolo del documento. Questi dipendono dal tipo di stile generale utilizzato, ma di solito comprendono almeno il titolo, l'autore e la data, come nell'esempio seguente.

\title{Usare LaTeX}
\author{Pinco Pallino}
\date{11/11/1911}

Inizio e fine del documento

L'inizio del documento è contrassegnato dalla dichiarazione \begin{document} e la fine da \end{document}. Tutto quello che appare dopo la conclusione del documento viene semplicemente ignorato.

Subito dopo l'apertura del documento viene normalmente collocato l'ordine di creazione del titolo, \maketitle, seguita eventualmente da quello di creazione dell'indice, \maketoc.

\begin{document}
\maketitle
\maketoc
...
...
\end{document}

Suddivisione del documento

Il corpo del documento può essere normalmente suddiviso, a seconda del tipo di classe utilizzato.

\<livello-di-suddivisione>{<titolo-della-suddivisione>}

I nomi dei livelli di suddivisione possono essere i seguenti, elencati in ordine decrescente di importanza:

Ambienti

L'istruzione \begin{<ambiente>} delimita l'inizio di un ambiente le cui caratteristiche sono definite dal nome contenuto tra le parentesi graffe. L'istruzione \end{<ambiente>} delimita la fine dell'ambiente dichiarato in precedenza.

Per esempio, l'ambiente document definisce la zona in cui appare il corpo del documento.

Gli ambienti vengono utilizzati frequentemente per definire le caratteristiche di paragrafi particolari. L'elenco seguente ne riassume i principali:

Elenchi

Alcuni ambienti sono predisposti per la realizzazione di elenchi di vario tipo.

---------

\begin{description}
\item Primo elemento
\item Secondo elemento
\end{description}

L'esempio mostra l'utilizzo dell'ambiente description che richiede l'inserimento al suo interno di una serie di voci il cui inizio è marcato dall'istruzione \item. Il risultato che si ottiene è simile a quello seguente.

Primo elemento

Secondo elemento

---------

\begin{enumerate}
\item Primo elemento
\item Secondo elemento
\end{enumerate}

L'esempio mostra l'utilizzo dell'ambiente enumerate che richiede l'inserimento al suo interno di una serie di voci il cui inizio è marcato dall'istruzione \item. Il risultato che si ottiene è simile a quello seguente.

  1. Primo elemento
  2. Secondo elemento

---------

\begin{itemize}
\item Primo elemento
\item Secondo elemento
\end{itemize}

L'esempio mostra l'utilizzo dell'ambiente enumerate che richiede l'inserimento al suo interno di una serie di voci il cui inizio è marcato dall'istruzione \item. Il risultato che si ottiene è simile a quello seguente.

Caratteri

Le caratteristiche principali di un carattere sono lo stile e la dimensione. Lo stile può essere definito utilizzando istruzioni del tipo

\<stile>{testo}

oppure

\<stile>

I nomi delle istruzioni cambiano a seconda che si utilizzi un modo oppure l'altro.

Per esempio, per scrivere un testo in corsivo, si possono utilizzare questi due modi.

\textit{Testo in corsivo}

\begin{itshape}Testo in corsivo\end{itshape}

In particolare, il secondo tipo permette anche l'utilizzo senza la dichiarazione specifica di un ambiente: quando si incontra l'istruzione, da quel punto il testo cambia aspetto e continua così fino alla prossima dichiarazione che dovesse cambiare quella particolare caratteristica. Ciò consente per esempio di utilizzare dichiarazioni cumulative. Per esempio, \itshape\bfseries inizia un testo corsivo e grassetto.

Seguono alcune istruzioni che utilizzano la forma \<stile>{testo} per modificare lo stile dei caratteri.

Segue l'elenco degli stessi stili, attraverso istruzioni del tipo \<stile>.

Oltre alla forma del carattere, può essere definita la dimensione e per questo sono disponibili una serie di istruzioni ``relative''. La dimensione effettiva corrispondente a ognuna di queste istruzioni dipende dalle definizioni contenute nello stile generale che rappresenta la classe del documento sul quale si sta lavorando.

Le istruzioni che definiscono la dimensione dei caratteri possono essere espresse in forma dichiarativa, cioè collocate nel testo in modo che abbiano effetto da quel punto in poi, fino a quando dovesse essere incontrata una istruzione contraria, oppure in forma di ambiente. I due esempi seguenti chiariscono queste due modalità.

Testo normale \small testo ridotto \large testo ingrandito.

Testo normale \begin{small} testo ridotto \end{small} \begin{large} testo ingrandito.\end{large}

I nomi utilizzabili come istruzioni di dimensionamento del testo sono i seguenti.

Delimitazione dei paragrafi

I paragrafi sono normalmente suddivisi con l'inserimento di una semplice riga bianca (può contenere spazi, tabulazioni, oppure soltanto il codice newline). Se necessario, si può utilizzare una istruzione esplicita: \par.

Commenti

I sorgenti LaTeX permettono (opportunamente) l'inserimento di commenti attraverso il simbolo di percentuale (%): tutto ciò che appare alla destra viene ignorato.

L'utilità dei commenti sta nella possibilità di annotare il senso di una certa istruzione, proprio come si fa con i linguaggi di programmazione, oppure di annotare qualcosa che riguarda proprio il contenuto del documento.

69.4 Personalizzazione

Le spiegazioni date finora sull'uso di LaTeX sono insufficienti per poterne effettivamente apprezzare le potenzialità. Tuttavia, vale la pena di accennare a qualche particolare sulla configurabilità del sistema.

Definizione e ridefinizione

Nel momento in cui si lavora con documenti di grandi dimensioni, oppure si sta preparando una ``vesta grafica'' per le proprie pubblicazioni, è importante creare una serie di istruzioni personalizzate per la creazione di ambienti, anche se queste non sono altro che una copia di istruzioni già esistenti. Il vantaggio di questo modo di procedere sta nella possibilità successiva di cambiare tutta la veste grafica semplicemente cambiando il funzionamento delle istruzioni personalizzate.

LaTeX prevede anche la possibilità di ridefinire istruzioni già esistenti, ma in tal caso è importante attribuire un senso particolare (e personale) a quelle istruzioni.

L'istruzione \newcommand permette di creare una nuova istruzione, mentre \renewcommand permette di ridefinirne una già dichiarata in precedenza.

File di stile

La personalizzazione di istruzioni LaTeX può avvenire all'interno del documento stesso, ma generalmente è preferibile creare un file di stile da includere con l'istruzione \usepackage{<file-di-stile>}.

Quando si crea un nuovo stile conviene fare una copia di uno di quelli già utilizzati da LaTeX e quindi modificarlo.

Quando si utilizza TeTeX (la distribuzione TeX per le macchine Unix), questi file di stile dovrebbero trovarsi nella directory /usr/lib/texmf/texmf/tex/latex/base/.

69.5 Nazionalizzazione

I problemi legati alla nazionalizzazione del funzionamento di LaTeX riguardano in particolare i termini utilizzati automaticamente (come Chapter, Index e simili) e la separazione in sillabe.

Terminologia

A seconda dello stile generale del documento che si realizza, quasi sempre, il risultato finale contiene parole inserite automaticamente da LaTeX. Questi termini sono definiti all'interno del file di stile che identifica la classe del documento.

Per modificare questo comportamento si può utilizzare uno stile aggiuntivo, scelto tra quelli contenuti nella directory /usr/lib/texmf/texmf/tex/generic/babel/, oppure si può creare uno stile personalizzato in cui si ridefiniscono le istruzioni che dichiarano questi termini, oppure ancora, si può utilizzare una copia modificata dello stile generale che si vuole utilizzare.

Quest'ultimo caso potrebbe essere interessante perché così si realizzerebbero una serie di nuove classi del tipo: articolo, rapporto, lettera, libro e diapositive.

Sillabazione

La sillabazione è configurata attraverso il file /usr/lib/texmf/texmf/tex/generic/config/language.dat, il quale a sua volta fa riferimento a file contenuti in /usr/lib/texmf/texmf/tex/generic/hyphen/.

Per configurare correttamente il sistema di sillabazione in italiano, occorre procedere come nei punti seguenti.

/usr/lib/texmf/texmf/tex/generic/config/language.dat

Questo file permette di definire i linguaggi per i quali si intende effettuare la divisione in sillabe. Probabilmente sono attivi l'inglese e il tedesco: si deve commentare la riga di attivazione del tedesco e togliere il commento dalla riga di attivazione dell'italiano.

% File    : language.dat
% Purpose : specify which hyphenation patterns to load 
%           while running iniTeX 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CAUTION: the first language will be the default if no style-file
%          (e.g. german.sty) is used.
% Since version 3.0 of TeX, hyphenation patterns for multiple languages are
% possible. Unless you know what you are doing, please let the american
% english patterns be the first ones. The babel system allows you to
% easily change the active language for your texts. For more information,
% have a look to the documentation in texmf/doc/generic/babel.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% The US-english patterns should be loaded *always* and as *first* ones.

american ushyph1.tex
%=USenglish

% UK english, THREE LINES!
%british  ukhyph.tex
%=UKenglish

=english

%catalan        cahyph.tex
%croatian       hrhyph.tex
%czech          czhyph2e.tex
%danish         dkhyphen.tex
%dutch          nehyph1.tex
%dutch          nehyph2.tex
%dutch          nehyph3.tex
%finnish        fihyph.tex
%french         frhyph.tex frhyphex.tex
%german         ghyph31.tex
italian         ithyph.tex
%norsk          nohyph.tex
%polish         plhyph.tex
%portuges       pthyph.tex
%romanian       rohyphen.tex
%slovene        sihyph22.tex
%spanish        sphyph.tex
%swedish        sehyph.tex

/usr/lib/texmf/texmf/web2c

Da questa directory occorre ricompilare il file di formato di LaTeX.

# cd /usr/lib/texmf/texmf/web2c

# initex 'lplain \dump'

Si ottengono i file lplain.fmt e lplain.log.

Si può controllare l'esito della compilazione leggendo il contenuto di lplain.log nel quale si dovrebbero trovare tra le altre, le righe seguenti.

********************************************
* Local configuration file hyphen.cfg used
********************************************
(/usr/lib/teTeX/texmf/tex/generic/babel/hyphen.cfg
File: hyphen.cfg 1995/07/11 v3.5e Babel language switching mechanism
\patterns@loaded=\toks14
\l@english=\language0

(/usr/lib/teTeX/texmf/tex/generic/hyphen/ushyph1.tex)
\l@italian=\language1

(/usr/lib/teTeX/texmf/tex/generic/hyphen/ithyph.tex))

Questi due devono essere rinomianti in latex.fmt e latex.log rispettivamente. Sicuramente esistono già due file con quel nome che vale la pena di conservare con un altro nome.

# mv latex.fmt latex.fmt.orig

# mv latex.log latex.log.orig

# mv lplain.fmt latex.fmt

# mv lplain.log latex.log

A questo punto, il sistema di sillabazione dovrebbe essere sistemato. Per farlo funzionare, dal momento che sono attivi due tipi di linguaggi per la sillabazione e che il primo (quello predefinito) è quello inglese, occorrerà attivare esplicitamente quello italiano.

Da quanto visto sopra, nello spezzone del file lplain.log, l'istruzione TeX per attivare la nostra sillabazione è \language1.

Inconvenienti legati alla sillabazione

Se quello che si scrive è un documento tecnico pieno di termini che non fanno parte della lingua italiana, forse conviene disabilitare la sillabazione per evitare la suddivisione di termini stranieri in modo errato. Per farlo, è sufficiente procedere come indicato precedentemente, ma senza indicare alcun tipo di sillabazione all'interno del file /usr/lib/texmf/texmf/tex/generic/config/language.dat. Si tratta in pratica di commentare completamente questo file.

Nazionalizzazione in pratica

La definizione del sistema di sillabazione è sempre necessario, mentre si è accennato poco sopra al problema dei termini da tradurre. Il modo più semplice per risolvere il problema della nazionalizzazione (dopo aver sistemato la sillabazione) è quello di utilizzare le istruzioni seguenti nel preambolo.

\documentclass...
...
\usepackage[italian]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
...
\begin{document}
...

In questo modo, se è stata definita una sillabazione italiana, questa viene attivata automaticamente; i termini come ``capitolo'', ``pagina'', sono tradotti in italiano; il set di caratteri è ISO 8859-1 (ovvero ``latin1''), quindi il sorgente può essere scritto utilizzando le lettere accentate senza la necessità di utilizzare codici macro particolari.

69.6 Riferimenti

Le pubblicazioni su LaTeX sono poche. Solitamente si trovano riferimenti al documento fondamentale su LaTeX.

Tuttavia, esiste anche qualcosa in italiano, anche se è sempre molto difficile poterlo trovare in libreria.

All'interno del pacchetto TeTeX sono disponibili vari file di documentazione discendenti tutti da /usr/lib/texmf/texmf/doc/. In particolare, nella directory /usr/lib/texmf/texmf/doc/latex/latex2e-html/ si trova una guida in HTML.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice