[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

112. Introduzione a TeX/LaTeX

TeX è un vecchio sistema di editoria elettronica, ma tuttora efficace, portato su diverse piattaforme, GNU/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.

TeX è un sistema a cui possono essere applicate delle macro, per semplificare la composizione, utilizzando comandi meno dettagliati. Per questo, a fianco di TeX, nel tempo si è abbinato LaTeX, che rappresenta TeX vestito con una serie di macro standard che insieme compongono LaTeX. Attualmente, si tende a confondere le due cose, oppure si fa riferimento semplicemente a LaTeX, intendendo l'insieme delle due.

Negli ultimi tempi, il lavoro attorno a TeX ha prodotto una grande mole di materiale, creando anche una sorta di babele tra le varie distribuzioni di TeX/LaTeX. Le edizioni Unix di queste distribuzioni dovrebbero essere conosciute con il nome teTeX.

112.1 Collocazione

Prima ancora di vederne il funzionamento, è il caso si chiarire che non esiste un modo standard di installare TeX/LaTeX. Utilizzando GNU/Linux, si dovrebbe disporre della distribuzione teTeX, ma per il momento, ogni distribuzione GNU/Linux tende a collocarla dove ritiene più opportuno.

Il blocco principale di teTeX dovrebbe trovarsi in una gerarchia che può collocarsi al di sotto di /usr/lib/ o /usr/share/. A titolo di esempio, viene mostrato un elenco di alcune di queste possibilità.

/usr/lib/teTeX/texmf/

/usr/lib/texmf/texmf/

/usr/share/teTeX/texmf/

/usr/share/texmf/

Negli esempi che si mostreranno, quando si farà riferimento a questa directory, si indicheranno solo percorsi relativi a iniziare da texmf/. La sigla «texmf» sta per TeX and more, oppure per TeX and friends.

112.2 Funzionamento fondamentale

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

Il programma eseguibile di TeX è tex, ma non viene mai usato direttamente. Al suo posto si richiamano altri comandi, come latex, anche se nella maggior parte dei casi si tratta solo di collegamenti al nome tex. Evidentemente, quando il binario tex viene avviato con un nome differente, si comporta in modo diverso, come se avesse ricevuto un'opzione speciale. In pratica, nel caso del nome latex, si fa implicitamente riferimento all'utilizzo delle macro di LaTeX.

112.2.1 File DVI

Il formato DVI rappresenta lo standard per i documenti stampati generati da TeX. Attorno a questo formato sono stati costruiti una grande quantità di programmi di utilità per la conversione ulteriore in formati comprensibili a diversi tipi di stampanti e anche dei visualizzatori 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.

È possibile che in futuro questa situazione cambi, soprattutto quando il lavoro su pdfTeX sarà maturato maggiormente. In quell'occasione potrebbe capitare che il formato PDF si sostituisca al vecchio DVI.

112.3 Esempio introduttivo

TeX/LaTeX 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, che utilizza quindi solo le macro di LaTeX, almeno per poter capire di cosa si sta parlando.

\documentclass{article}

% Inizia il preambolo.

\setlength{\textwidth}{7cm}
\setlength{\textheight}{7cm}

% Fine del preambolo.

\begin{document}

% Inizia il documento vero e proprio.

\section{Introduzione a TeX/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 (Web2C 7.2)
(primo.tex
LaTeX2e <1998/06/01>
Babel <v3.6j> and hyphenation patterns for american, french, german, italian,
nohyphenation, loaded.
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 1998/05/05 v1.3y Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size10.clo))
No file primo.aux.

Overfull \hbox (15.23882pt too wide) in paragraph at lines 15--15
[]\OT1/cmr/bx/n/14.4 Introduzione a TeX/LaTeX 

Overfull \hbox (16.99774pt too wide) in paragraph at lines 23--25
\OT1/cmr/m/n/10 sezioni sot-tosezioni ed even-tu-ali sotto-sottosezioni. 
[1] [2] (primo.aux) )
(see the transcript file for additional information)
Output written on primo.dvi (2 pages, 1504 bytes).
Transcript written on primo.log.

Se tutto va bene come nell'esempio, si ottiene il file primo.log contenente tutte le annotazioni generate durante la composizione, soprattutto gli errori, il file primo.aux che serve a LaTeX per delle operazioni varie, come la separazione in sezioni, e il file primo.dvi, ovvero il risultato vero e proprio della composizione, che può essere convertito in PostScript.

dvips -o primo.ps primo

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

This is dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
' TeX output 1999.01.06:0932' -> primo.ps
<texc.pro>. [1] [2] 


Figura 112.1: Il risultato della composizione del sorgente LaTeX di esempio.

112.4 Comandi e modelli sintattici

In teoria, si potrebbe scrivere un documento TeX utilizzando esclusivamente comandi di questo. In pratica, ciò non conviene, e si preferisce usare delle macro per quanto possibile. Scrivere un documento in LaTeX significa questo: utilizzare le macro di LaTeX. Ma anche in questa circostanza si possono ancora inserire comandi TeX puri e semplici, anche se in generale è meglio limitare al minimo tale comportamento.

I comandi primitivi di TeX sono difficili da gestire, ma anche le macro di LaTeX hanno una logica piuttosto insolita, e prima di cominciare a descriverle, è bene chiarire alcune stranezze.

Le macro, ovvero i comandi di LaTeX, assomigliano vagamente a delle funzioni, il cui effetto può essere di vario tipo; in particolare potrebbe trattarsi di qualcosa che restituisce un valore che viene inserito nel testo nel punto in cui appare, oppure potrebbe tradursi in un comportamento da parte del sistema di composizione. Questi comandi, eventualmente, possono avere delle opzioni, cioè degli argomenti facoltativi, e anche degli argomenti obbligatori, come avviene con le chiamate di funzione nei linguaggi di programmazione.

In generale, è difficile definire in modo completo come possono essere conformati tali comandi, comunque il modello sintattico seguente dovrebbe darne un'idea sufficiente per cominciare.

\<comando>[<opzioni>]...{<argomenti>}...

Purtroppo, le macro utilizzano effettivamente le parentesi quadre e anche le parentesi graffe, e questo contribuisce a confondere ulteriormente le cose quando si vuole mostrare un modello sintattico. Ma non finisce qui: le opzioni sono effettivamente qualcosa di «opzionale», per cui se ne può fare a meno; ma quando si usano, queste devono essere delimitate con le parentesi quadre. Per quanto riguarda le parentesi graffe, il problema non si manifesta, perché gli argomenti sono obbligatori e le parentesi appaiono sempre nel comando.

L'unica cosa sicura ed evidente, è il fatto che un comando inizia con una barra obliqua inversa e segue con il nome che serve a identificarlo.

Data la particolarità dei comandi TeX/LaTeX, i modelli sintattici che si trovano nella documentazione non rispettano le convenzioni normali nell'uso della parentesi quadre e graffe. Ricapitolando: le parentesi quadre rappresentano delle opzioni che possono essere indicate o meno, ma se usate richiedono la presenza delle stesse parentesi quadre; mentre le parentesi graffe vanno inserite nei comandi in modo letterale. Questa regola viene seguita anche in questo capitolo.

Esempi

\itshape

Questo è l'esempio di un comando che non permette l'uso di opzioni, né di argomenti. Vale in quanto nominato. In particolare, \itshape serve a fare in modo che dopo il suo utilizzo il testo venga posto al corsivo.

\textit{ciao, come stai?}

Questo è il caso di un comando che prevede un argomento, senza opzioni. L'argomento è il testo ciao, come stai?, e lo scopo del comando è restituire in corsivo l'argomento, senza coinvolgere il testo successivo.

112.4.1 Opzioni e argomenti

Fino a questo punto si è visto che le opzioni sono argomenti facoltativi, che se utilizzati, vanno delimitati attraverso delle parentesi quadre. La loro posizione è stabilita dalla sintassi del comando stesso, anche se di solito dovrebbero trovarsi prima degli argomenti normali.

Un comando potrebbe prevedere l'uso di più opzioni in sequenza, o alternate con gli argomenti. Ma oltre a questo, un'opzione potrebbe essere interpretata in modo da estrapolare più sotto-opzioni, delimitate generalmente attraverso una virgola.

Sugli argomenti c'è poco da aggiungere, tranne ripetere che il loro utilizzo è obbligatorio; inoltre, anche in questo caso, ci possono essere situazioni in cui un argomento è composto da più sotto-argomenti separati da virgole.

Esempi

\documentclass{book}

Definisce lo stile generale book per un documento che inizia.

\documentclass[a4paper]{book}

Definisce lo stile generale book, specificando l'opzione a4paper.

\documentclass[a4paper,12pt]{book}

Definisce lo stile generale book, specificando l'opzione a4paper,12pt, che in pratica si traduce in due sotto-opzioni, distinte in base alla presenza della virgola.

\newcommand{\dattilografico}[1]{\texttt{#1}}

Questo è un comando un po' difficile da interpretare, comunque si può osservare che appare un'opzione dopo un argomento e prima dell'ultimo argomento. È il caso di precisare che in questo momento, \dattilografico e \texttt{#1} sono solo stringhe che hanno un qualche valore per il comando \newcommand.

\epsfig{file=prova,height=3cm,angle=0}

Questo comando non riguarda direttamente LaTeX, ma proviene da un pacchetto che comunque lo accompagna. Come si può osservare, c'è solo un argomento, scomposto in tre sotto-argomenti separati da virgole.

112.5 Sopravvivere nel caos

Quello che è stato descritto fino a questo punto è solo un assaggio di ciò che può capitare di vedere. TeX e LaTeX sono un linguaggio di composizione caotico, e non solo a prima vista. Spesso, anche leggendo attentamente la documentazione originale, ci si trova di fronte a errori apparentemente inspiegabili. Per cercare di comprenderli, occorre imparare a interagire con il programma di composizione, e soprattutto occorre prendere l'abitudine di leggere il file delle registrazioni (il log) anche se la composizione sembra andata a buon fine.

\documentstyle{article}
\begin{document}
\section{Problemi con TeX/LaTeX}
Quanti problemi con LaTeX!
\end{document}

L'esempio mostra un documento LaTeX eccezionalmente breve, che contiene un problema, ma che viene superato temporaneamente. Leggendo il file delle registrazioni si può trovare un avvertimento che riguarda il comando \documentstyle, considerato ormai obsoleto e da non utilizzare.

          Entering LaTeX 2.09 COMPATIBILITY MODE
 *************************************************************
    !!WARNING!!    !!WARNING!!    !!WARNING!!    !!WARNING!!   
 
 This mode attempts to provide an emulation of the LaTeX 2.09
 author environment so that OLD documents can be successfully
 processed. It should NOT be used for NEW documents!
 
 New documents should use Standard LaTeX conventions and start
 with the \documentclass command.
 
 Compatibility mode is UNLIKELY TO WORK with LaTeX 2.09 style
 files that change any internal macros, especially not with
 those that change the FONT SELECTION or OUTPUT ROUTINES.
 
 Therefore such style files MUST BE UPDATED to use
          Current Standard LaTeX: LaTeX2e.
 If you suspect that you may be using such a style file, which
 is probably very, very old by now, then you should attempt to
 get it updated by sending a copy of this error message to the
 author of that file.
 *************************************************************

Un avvertimento non è niente di eccezionalmente grave, soprattutto se poi non pregiudica la riuscita della composizione. Ma un avvertimento può segnalare il sorgere di un problema che più avanti può aggravarsi e diventare insuperabile. Se nell'esempio mostrato sopra si aggiunge un comando incompatibile si arriva al punto di crisi.

\documentstyle{article}
\usepackage{epsfig}
\begin{document}
\section{Problemi con TeX/LaTeX}
Quanti problemi con LaTeX!
\end{document}

Come si vede, è stato aggiunto il comando \usepackage{epsfig}, il cui scopo è solo quello di incorporare lo stile epsfig.sty che si trova da qualche parte, dove LaTeX può trovarlo.

Ciò che dovrebbe succedere è che lo stile richiesto sia incompatibile con una vecchia versione di LaTeX, oppure che sia incompatibile con il funzionamento che si impone a LaTeX quando si utilizza il comando \documentstyle.

! LaTeX Error: LaTeX2e command \usepackage in LaTeX 2.09 document.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

Ecco la segnalazione di errore. Si può osservare che viene indicato precisamente il punto in cui appare l'errore: si tratta proprio del comando \usepackage che appare nella riga numero 2 del testo sorgente.

l.2 \usepackage
               {epsfig}

Subito dopo appare un invito, composto da un semplice punto interrogativo. Da lì è possibile dare qualche comando elementare; in particolare è possibile conoscere l'elenco di quelli disponibili con il comando ?, ovvero un altro punto interrogativo.

?[Invio]

Type <return> to proceed, S to scroll future error messages,
R to run without stopping, Q to run quietly,
I to insert something, E to edit your file,
1 or ... or 9 to ignore the next 1 to 9 tokens of input,
H for help, X to quit.

Si possono osservare due comandi molto importanti: H che serve a ottenere chiarimenti, e X che serve a interrompere l'elaborazione.

H[Invio]

This is a LaTeX 2.09 document, but it contains \usepackage.
If you want to use the new features of LaTeX2e, your document
should begin with \documentclass rather than \documentstyle

In tal caso è stato richiesto il chiarimento e con questo si vede che \documentstyle è la causa dell'errore.

Come si può intuire, l'utilizzo di LaTeX può essere fondato solo sulla prudenza, utilizzando comandi che si conoscono bene, e cercando di stare fuori dai guai. LaTeX permetterebbe di fare acrobazie eccezionali, ma è meglio starne lontani, o comunque non farne affidamento, fino a che l'esperienza non lo consente.

112.6 Elementi essenziali di un documento LaTeX

Il sorgente di un documento scritto in TeX, utilizzando le macro di 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.

112.6.1 Commenti

I sorgenti TeX e derivati, 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 il contenuto stesso del documento. L'utilizzo dei commenti è una cosa opportuna con LaTeX, data la sua complessità.

112.6.2 Dichiarazione dello stile generale

Lo stile generale del documento viene definito all'inizio del sorgente LaTeX attraverso la dichiarazione seguente:

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

Le classi possono essere:

Il comando \documentclass ammette l'uso di una sola opzione, ma al suo interno possono essere indicate diverse sotto-opzioni, rappresentate da delle parole chiave, separate attraverso una virgola. Ogni classe di documento può gestire il suo gruppo particolare di sotto-opzioni, ma in generale, sono disponibili quelle seguenti che dovrebbero essere valide in ogni circostanza.

Dimensione dei caratteri:

Dimensione e del foglio:

Altre caratteristiche:

Esempi

\documentclass[a4paper,11pt]{book}

definisce l'uso della classe book, utilizzando un foglio A4 con il corpo normale dei caratteri a 11 punti tipografici; mentre il comando seguente,

\documentclass{book}

definisce l'uso della classe book, senza opzioni, e quindi impostata in modo predefinito.

112.6.3 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 indici eventuali.

Una dichiarazione molto importante del preambolo è l'inclusione di uno stile aggiuntivo, secondo la sintassi seguente:

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

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

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

L'esempio mostra l'inclusione del pacchetto inputenc allo scopo di ammettere la codifica dei caratteri ISO Latin-1 nel sorgente LaTeX, e del pacchetto fontenc per ottenere una composizione con un tipo di carattere che contenga le lettere accentate e i simboli speciali più importanti utilizzati in Europa.

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}{7cm}
\setlength{\textheight}{7cm}

In questo caso, si definiva la larghezza e l'altezza del testo, senza fare riferimento a un formato standard.

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 TeX/LaTeX}
\author{Pinco Pallino}
\date{11/11/1911}

112.6.4 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 collocata normalmente l'istruzione di creazione del titolo, \maketitle, seguita eventualmente da quello di creazione dell'indice, \tableofcontents.

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

112.6.5 Suddivisione del documento

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

\<livello-di-suddivisione>[<opzioni-eventuali>]{<titolo-della-suddivisione>}

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

Per esempio,

\section{Introduzione a TeX/LaTeX}

definisce l'inizio di una sezione che ha il titolo indicato tra le parentesi graffe.

In particolare esiste un comando speciale, \appendix che viene utilizzato così, senza opzioni, esclusivamente per modificare il modo in cui vengono numerate le suddivisioni, che dal quel punto vengono trattate come parte di un'appendice.

\chapter{Bla bla bla}
...
\appendix
\chapter{Appendice bla bla}
...

L'esempio mostra proprio questo: il capitolo denominato «Appendice bla bla» è la prima appendice.

112.6.6 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 più semplici:

L'esempio seguente mostra i comandi necessari a centrare il testo «Ciao a tutti!».

\begin{center}
Ciao a tutti!
\end{center}

112.6.7 Elenchi

Alcuni ambienti sono predisposti per la realizzazione di elenchi di vario tipo. Quelli più comuni sono description, enumerate e itemize. L'esempio seguente mostra la definizione di un elenco descrittivo.

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

L'ambiente description 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

L'esempio seguente mostra la definizione di un elenco numerato.

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

L'ambiente enumerate 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

L'esempio seguente mostra la definizione di un elenco puntato.

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

L'ambiente itemize 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

112.6.8 Caratteri

Le caratteristiche principali di un carattere sono lo stile, la serie (forma) e il corpo. Lo stile e la serie può essere definito utilizzando istruzioni del tipo seguente,

\<stile-serie>{<testo>}

oppure, nella forma dichiarativa,

\<stile-serie>

e

\begin{<stile-serie>}...\end{<stile-serie>}

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 rappresenta una forma dichiarativa, che quindi ne permette l'utilizzo senza specificare un ambiente: quando si incontra l'istruzione il testo cambia aspetto e continua così fino alla prossima dichiarazione che dovesse cambiare quella caratteristica particolare. Ciò consente di utilizzare dichiarazioni cumulative. Per esempio, \itshape\bfseries inizia un testo corsivo e neretto.

L'utente dovrebbe evitare di utilizzare la forma dichiarativa, sia per ciò che riguarda lo stile e la serie dei caratteri che il corpo.

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

Segue l'elenco degli stessi stili e delle serie, attraverso istruzioni del tipo \<stile-serie>, ovvero \begin{<stile-serie>}...\end{<stile-serie>}.

Oltre allo stile e alla serie (la forma) del carattere può essere definito il corpo, e per questo sono disponibili un gruppo 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 il corpo 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 un'istruzione contraria), oppure in forma di ambiente. È il caso di ripetere che è meglio evitare la forma dichiarativa, a meno che ci sia un buon motivo per usarla. I due esempi seguenti chiariscono queste due modalità.

Testo normale \small testo ridotto \large testo ingrandito.\normalsize

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, e rappresentano una sequenza in ordine crescente di grandezza.

112.6.9 Delimitazione dei paragrafi

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

112.7 Oggetti flottanti

LaTeX prevede l'uso di oggetti flottanti a cui generalmente non viene consentito di essere collocati esattamente nel punto dove appaiono nel testo. Infatti, la loro caratteristica più importante è quella di non poter essere spezzati nella divisione tra una pagina e l'altra, e da questo, la necessità di poterli riposizionare convenientemente. Questi oggetti sono generalmente solo delle immagini o delle tabelle.

I comandi di dichiarazione di questi elementi prevedono l'uso di un'opzione contenente una sigla che esprime la preferenza nella loro collocazione. Le possibilità tra cui si può scegliere riguardano il posizionamento:

Queste quattro possibilità corrispondono alle sigle: h (here), t (top), b (bottom), p (page).

LaTeX non consente di imporre un'unica possibilità, quindi non si può pretendere che l'oggetto venga collocato sempre solo dove si trova la sua dichiarazione. Quello che si può fare è stabilire un ordine di preferenza, utilizzando le sigle citate. Se l'opzione di posizionamento dell'oggetto non viene utilizzata, LaTeX intende l'uso della sigla tbp, cioè in alto, in basso o in una nuova pagina, escludendo la posizione naturale. Probabilmente, la maggior parte delle persone preferiranno usare l'opzione htbp, che pone come prima possibilità il collocamento nella posizione in cui l'oggetto viene dichiarato.

112.7.1 Tabelle

La tabella è uno di quegli oggetti che vengono gestiti preferibilmente in modo flottante con LaTeX. La tabella flottante, come tale, prevede la possibilità di indicare una collocazione attraverso le sigle h, t, b e p. La gestione delle tabelle di LaTeX non è molto semplice, e qui viene mostrato solo un modo semplificato.

La dichiarazione della tabella è delimitata dall'ambiente table, all'interno del quale può essere utilizzato il comando \caption per indicare il titolo e una didascalia.

\begin{table}[<posizione>]
...
...
\caption{<didascalia>}
\end{table}

Ciò che deve essere definito all'interno di questo ambiente è il punto più delicato. In linea generale, LaTeX consente l'inserimento di ciò che si vuole, solo che di solito si utilizzano dei comandi che servono a definire un reticolo di celle per una tabella come si è abituati a immaginarla. Come accennato, viene mostrata una sintassi semplificata.

\begin{table}[<posizione>]
\begin{tabular}{<colonne>}
<colonna-1>&<colonna-2>... \\
<colonna-1>&<colonna-2>&<colonna-3>... \\
...
...
...
\end{tabular}
\caption{<didascalia>}
\end{table}

Come si vede, viene inserito l'ambiente tabular che prevede un argomento attraverso il quale si devono indicare preventivamente le colonne e le separazioni verticali utilizzate:

Per esempio, la sigla |l|c|r| rappresenta l'intenzione di dichiarare tre colonne, delimitate da linee verticali, dove la prima contiene testo allineato a sinistra, la seconda al centro e la terza a destra. In alternativa, |lcr| rappresenta le stesse colonne con gli stessi allineamenti, ma senza le due linee verticali che circoscrivono la colonna centrale.

Sempre nell'ambito dell'uso elementare delle tabelle di LaTeX, è bene ricordare la possibilità di inserire delle linee orizzontali di separazione tra una riga e l'altra della tabella. Questo si ottiene con il comando \hline.

Le tabelle di LaTeX permettono di ottenere risultati anche molto complessi, per i quali è necessario un po' di studio. Gli esempi seguenti rimangono su questo strato superficiale di utilizzo.

Esempi

\begin{table}[htbp]
\begin{tabular}{ll}
\hline
dispositivo &  descrizione \\ 
\hline
/dev/hda    &  il primo disco fisso IDE/EIDE \\ 
/dev/hda1   &  la prima partizione del primo disco fisso IDE/EIDE \\ 
/dev/hdb    &  il secondo disco fisso IDE/EIDE \\ 
/dev/hdb1   &  la prima partizione del secondo disco fisso IDE/EIDE \\ 
\hline
\end{tabular}
\caption{Alcuni nomi di dispositivo utilizzati da Linux.}
\end{table}

L'esempio mostra una tabella molto semplice, che può essere collocata in qualunque posizione (htbp), composta da due sole colonne allineate a sinistra. La prima riga, per evidenziarla, è preceduta e seguita da una linea orizzontale (\hline), e anche la fine della tabella è conclusa da un'altra linea orizzontale finale. Prima della conclusione dell'ambiente table, viene inserita una didascalia con il comando \caption.

\begin{table}[htbp]
\begin{center}
\begin{tabular}{|ll|}
\hline
dispositivo &  descrizione \\ 
\hline
/dev/hda    &  il primo disco fisso IDE/EIDE \\ 
/dev/hda1   &  la prima partizione del primo disco fisso IDE/EIDE \\ 
/dev/hdb    &  il secondo disco fisso IDE/EIDE \\ 
/dev/hdb1   &  la prima partizione del secondo disco fisso IDE/EIDE \\ 
\hline
\end{tabular}
\end{center}
\caption{Alcuni nomi di dispositivo utilizzati da Linux.}
\end{table}

Si tratta dello stesso esempio mostrato precedentemente, con la differenza che alla sinistra e alla destra, la tabella è racchiusa tra due righe verticali (lo si vede nell'argomento della dichiarazione dell'ambiente tabellare: \begin{tabular}{|ll|}). Inoltre, l'ambiente tabellare è centrato, e questo significa che la tabella apparirà centrata orizzontalmente nel documento.

\begin{table}[htbp]
\begin{center}
\begin{tabular}{|ll|}
\hline
dispositivo &  descrizione \\ 
\hline
/dev/hda    &  il primo disco fisso IDE/EIDE \\ 
/dev/hda1   &  la prima partizione del primo disco fisso IDE/EIDE \\ 
/dev/hdb    &  il secondo disco fisso IDE/EIDE \\ 
/dev/hdb1   &  la prima partizione del secondo disco fisso IDE/EIDE \\ 
\hline
\end{tabular}
\end{center}
\caption{\label{tabella-dispositivi-vari}
    Alcuni nomi di dispositivo utilizzati da Linux.
}
\end{table}

Rispetto all'esempio precedente, viene aggiunto all'interno della didascalia un'etichetta attraverso il comando \label. In questo modo è possibile fare riferimento alla tabella all'interno del documento.

112.7.2 Figure

La figura è un altro dei tipici oggetti gestiti in modo flottante da LaTeX. Anche in questo caso si utilizzano le sigle h, t, b e p, per definire la preferenza nella collocazione finale. Come nel caso delle tabelle, viene specificato un ambiente flottante per le figure, e al suo interno vengono aggiunti i comandi necessari a incorporare ciò che si vuole rappresentare in qualità di figura, in qualunque forma essa sia.

\begin{figure}[<posizione>]
...
...
\caption{<didascalia>}
\end{figure}

Come nel caso delle tabelle, all'interno dell'ambiente figure può essere collocata una didascalia, rappresentata dal comando \caption.

LaTeX, attraverso le sue macro, non gestisce direttamente l'inclusione di file di immagini. Per questo ci si avvale normalmente di macro esterne, di solito si tratta di epsfig, che fa comunque parte del corredo normale di LaTeX. In tal caso, viene utilizzato il comando \usepackage{epsfig} nel preambolo del documento LaTeX. Il pacchetto epsfig consente l'inserzione di immagini EPS (Encapsulated PostScript) nel testo, con il comando omonimo \epsfig. Questo richiede un argomento composto da diverse parti, separate da virgole; semplificando si può indicare come nella sintassi seguente:

\epsfig{file=<file-eps>,height=<altezza>,angle=<rotazione>}

Il file rappresenta il percorso completo o relativo di un file EPS oppure PostScript, ma senza estensione: il pacchetto epsfig si attende di trovarlo con l'estensione .ps. L'altezza viene espressa nell'unità di misura desiderata, e l'ampiezza viene regolata di conseguenza, in modo relativo. Infine, l'angolo di rotazione permette di girare l'immagine; di solito si lascia il valore zero.

L'uso del pacchetto epsfig è compatibile con pdfLaTeX, che incorpora immagini in formato PNG. Questi file vengono cercati nello stesso percorso, ma con estensione .png.

Esempi

\begin{figure}[hbp]
\epsfig{file=figure/prova,height=5cm,angle=0}
\end{figure}

Dichiara un ambiente figure (flottante) che potrà essere collocato nella posizione in cui appare, oppure nella parte inferiore della pagina, o ancora in una pagina a sé stante. All'interno dell'ambiente inserisce un'immagine, attraverso il comando \epsfig, ottenuta dal file figure/prova.ps, il quale viene ridimensionato in modo che la sua altezza sia di 5 cm, e non viene ruotato in alcun modo.

\begin{figure}[hbp]
\begin{center}
\epsfig{file=figure/prova,height=5cm,angle=0}
\end{center}
\caption{\label{figura-prova} Una figura di prova.}
\end{figure}

Rispetto all'esempio precedente, l'immagine viene centrata in orizzontale, e viene aggiunta una didascalia contenente un'etichetta, che permette di fare riferimento all'immagine.

112.7.3 Contenuto degli ambienti flottanti

Gli ambienti flottanti \table e \figure si distinguono solo per una ragione sottile: la numerazione. Verrà descritto meglio in seguito l'uso dei comandi per i riferimenti incrociati all'interno del testo. Per il momento, basti sapere che i riferimenti fatti a etichette contenute nell'ambiente \table seguono una numerazione differente da \figure. *2*

Volendo provare, è possibile verificare che si può inserire una tabella, precisamente un ambiente \tabular in un ambiente \figure, e nello stesso modo un'immagine in un ambiente \table. Pensandoci un momento si può intendere che nessuno vieta di realizzare una tabella utilizzando un programma di disegno, e nello stesso modo, un'immagine potrebbe essere costituita da una tabella, o anche da del testo letterale.

Evidentemente dipende dall'autore decidere quale sia l'involucro più adatto per l'oggetto flottante che si sta creando.

Prima di concludere questo argomento, è il caso di chiarire che si possono inserire nel testo delle tabelle e delle immagini non flottanti. Evidentemente, basta non inserirle negli ambienti descritti nelle sezioni precedenti; ovvero, basta usare l'ambiente \tabular da solo e il comando \epsfig nel testo normale.

112.8 Etichette e riferimenti

LaTeX mette a disposizione pochi comandi per la creazione di riferimenti incrociati all'interno del testo. Attraverso il comando \label è possibile definire un'etichetta alla quale si può fare riferimento con i comandi \ref o \pageref.

Il punto fissato da un'etichetta può essere indicato come parte di un elemento del documento o come contenuto di una pagina particolare. Nel secondo caso si utilizza il comando \pageref che si trasforma nel numero di pagina in cui si trova il testo contenente l'etichetta di destinazione. Quando si vuole fare riferimento a un elemento del documento, inteso come capitolo, sezione, o come figura, tabella, o altro, si usa semplicemente il comando \ref.

\label{<stringa-di-riferimento>}

La sintassi mostra il modo in cui può essere usato il comando \label. Il suo unico argomento è una stringa che può essere composta da lettere numeri e simboli di punteggiatura.

La posizione in cui viene collocato il comando \label è importante, in quanto sarà diverso il comportamento di \ref nel momento in cui dovesse servire. Se l'etichetta viene dichiarata all'interno di testo normale, il riferimento generico a questa restituisce un numero, più o meno articolato, che indica la sezione o il capitolo in cui si trova; se invece questa viene dichiarata all'interno di un ambiente numerato, come una tabella o una figura, il riferimento a questa genera il numero corrispondente a questo elemento.

\pageref{<stringa-di-riferimento>}

\ref{<stringa-di-riferimento>}

La sintassi per i comandi che fanno riferimento a un'etichetta è la stessa. Quello che cambia è il tipo di riferimento che si ottiene, come già è stato descritto.

Esempi

Il programma \texttt{init} \label{programma-init} controlla tutti
gli altri processi.

In questa frase appare un'etichetta che serve a segnalare il punto in cui si parla del programma init (che tra l'altro è stato evidenziato utilizzando un carattere dattilografico). Per questo è stata usata la stringa programma-init.

Il programma \texttt{init} (che è stato introdotto nella sezione
\ref{programma-init}) corrisponde al processo numero 1.

Qui, si vuole fare riferimento alla sezione in cui si parlava di init, e quindi se ne richiama il numero attraverso il comando \ref.

Il programma \texttt{init} (vedere pagina \pageref{programma-init})
corrisponde al processo numero 1.

Come nell'esempio precedente, ma si fa riferimento al numero della pagina.

\begin{figure}[hbp]
\begin{center}
\epsfig{file=figure/prova,height=5cm,angle=0}
\end{center}
\caption{\label{figura-prova} Una figura di prova.}
\end{figure}

All'interno dell'ambiente figure, precisamente nella didascalia, viene dichiarata un'etichetta che permette di fare riferimento al numero della figura, invece che al testo in cui appare.

La figura \ref{figura-prova} mostra...

Il riferimento a un'etichetta posta nell'ambiente di una figura, o di una tabella, o di un altro elemento numerato, restituisce il numero di quell'elemento.

112.9 Personalizzazione

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

112.9.1 Definizione e ridefinizione

Nel momento in cui si lavora con documenti di grandi dimensioni, oppure si sta preparando una veste 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 modificando 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 un comando nuovo, mentre \renewcommand permette di ridefinirne uno già dichiarato in precedenza.

\newcommand{<comando>}[<n-argomenti>]{<definizione>}

\newcommand{<comando>}[<n-argomenti>][<argomento-predefinito>]{<definizione>}

\renewcommand{<comando>}[<n-argomenti>]{<definizione>}

\renewcommand{<comando>}[<n-argomenti>][<argomento-predefinito>]{<definizione>}

Se il comando può avere degli argomenti, è necessario indicarne il numero, attraverso una sola cifra numerica da 1 a 9; inoltre, è possibile specificare il primo argomento predefinito, da utilizzare nel caso non ne sia fornito alcuno. Infine, se si prevedono degli argomenti, questi vengono inseriti nella stringa di definizione del comando utilizzando delle metavariabili nella forma #n, dove il numero rappresenta l'n-esimo argomento.

Una volta dichiarato o ridichiarato il comando, questo può essere utilizzato attraverso una sintassi riassumibile nel modo seguente, dove gli argomenti eventuali, appaiono tra parentesi graffe.

\comando[{<argomento>}]...

L'utilizzo più semplice, riguarda la definizione di un comando senza argomenti, come nell'esempio seguente, dove viene dichiarato \bftt il cui scopo è quello di iniziare l'uso di un carattere neretto e dattilografico.

\newcommand{\bftt}{\bfseries\ttfamily}

Come si vede, lo scopo è solo quello di sostituire a \bftt, i comandi \bfseries e \ttfamily. Quello che segue è un esempio di come potrebbe essere utilizzato.

Il file \bftt mio-file \normalfont contiene...

Secondo l'esempio, la parola «mio-file» viene evidenziata in neretto e dattilografico, e subito dopo, attraverso il comando \normalfont, riprende lo stile normale.

L'esempio seguente definisce un comando che richiede un argomento. Ciò che si ottiene servirà a delimitare una zona in neretto dattilografico.

\newcommand{\bftt}[1]{\textbf{texttt{#1}}}

Lo scopo è quello di sostituire al comando \bftt{...}, i comandi \textbf{\texttt{...}}. Quello che segue è un esempio di come potrebbe essere utilizzato; si può osservare che in questo caso non occorre riconvertire il testo dopo la zona delimitata con le parentesi graffe.

Il file \bftt{mio-file} contiene...

L'esempio seguente, utilizzando sempre un solo argomento, ha lo scopo di replicarlo cambiandone leggermente lo stile.

\newcommand{\triplo}[1]{\textit{#1} \textbf{#1} \texttt{#1}}

Utilizzandolo nel modo seguente, si ottiene la ripetizione della parola «tanto» per tre volte, e ognuna con uno stile differente: corsivo, neretto e dattilografico.

Ti amo \triplo{tanto}...

Prima di proseguire, vale la pena di vedere un esempio in cui si dichiara un comando che prevede l'uso di più argomenti.

\newcommand{\somma}[3]{\texttt{#1}+\texttt{#2}=\texttt{#3}}

Utilizzando il comando appena creato nel modo seguente, si ottiene esattamente il testo 5+6=11, dove i numeri sono in dattilografico, e i segni sono composti con caratteri normali.

\somma{5}{6}{11}

Oltre a questo è possibile definire, o ridefinire, degli ambienti da utilizzare nei comandi \begin{...} e \end{...}. Per queste operazioni si utilizzano le istruzioni \newenvironment e \renewenvironment.

\newenvironment{<ambiente>}[<n-argomenti>]{<def-iniziale>}{<def-finale>}

\newenvironment{<ambiente>}[<n-argomenti>][<argomento-predefinito>]{<def-iniziale>}{<def-finale>}

\renewenvironment{<ambiente>}[<n-argomenti>]{<def-iniziale>}{<def-finale>}

Se la dichiarazione del nuovo ambiente può avere degli argomenti, è necessario indicarne il numero, attraverso una sola cifra numerica da 1 a 9, e questi possono essere utilizzati solo nella definizione di inizio, attraverso le metavariabili #n. Come nel caso della dichiarazione di un nuovo comando, è possibile specificare il primo argomento predefinito, da utilizzare nel caso non ne sia fornito alcuno.

Una volta dichiarato o ridefinito l'ambiente, questo può essere utilizzato attraverso una sintassi riassumibile nel modo seguente, dove gli argomenti eventuali, appaiono tra parentesi graffe.

\begin{<ambiente>}
<testo-contenuto>
...
\end{<ambiente>}

\begin{<ambiente>}{<argomento>}...
<testo-contenuto>
...
\end{<ambiente>}

L'utilizzo più semplice, riguarda la definizione di un ambiente senza argomenti, come nell'esempio seguente, dove viene dichiarato l'ambiente \bftt il cui scopo è quello di iniziare l'uso di un carattere neretto e dattilografico.

\newenvironment{bftt}{\bfseries\ttfamily}{\normalfont}

Come si vede, lo scopo è quello di sostituire \begin{bftt} con il comando \bfseries\ttfamily e di rimpiazzare \end{bftt} con il comando \normalfont.

112.9.2 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, questi file di stile dovrebbero trovarsi nella directory texmf/tex/latex/base/.

112.10 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.

112.10.1 Terminologia

A seconda dello stile generale del documento che si scrive, 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 texmf/tex/generic/babel/, oppure si può creare uno stile personalizzato in cui si ridefiniscono le istruzioni che dichiarano questi termini.

Lo stile aggiuntivo viene caricato normalmente con il comando seguente, posto nel preambolo del documento.

\usepackage[italian]{babel}

112.10.2 Sillabazione

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

Se all'interno di questo file sembra non essere attivata la sillabazione per la lingua italiana, conviene modificarlo attraverso il sistema di configurazione di teTeX, descritto più avanti in questo capitolo.

Se la lingua italiana, o quella che interessa, risulta già attivata, oppure se è stata fatta la procedura per attivarla, si può controllare nel file texmf/web2c/latex.log, soprattutto per determinare il numero corrispondente che gli è stato assegnato. Se si trova una riga simile a quella seguente, significa che la sillabazione in italiano è disponibile.

\l@italian=\language3

112.10.2.1 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, dovrebbe essere sufficiente prevedere l'uso della sillabazione nulla (nohyphenation), e attivarla nel documento nello stesso modo in cui si farebbe per un linguaggio normale.

Per esempio, se nel file texmf/web2c/latex.log si trova la riga seguente,

\l@nohyphenation=\language4

molto probabilmente dovrebbe essere sufficiente utilizzare il comando \language4 nel documento. Se però, per qualche ragione questo non dovesse funzionare, si possono sempre usare metodi drastici: configurare il file texmf/tex/generic/config/language.dat commentando tutte le direttive, e annullando in ogni caso il sistema di sillabazione.

112.10.3 Spaziatura orizzontale

Secondo una regola della tipografia del passato, ormai condannata generalmente, era necessario aumentare lo spazio che divide la fine di un periodo dall'inizio del successivo. Per qualche ragione si trovano ancora documenti in lingua inglese che seguono questa regola, anche quando si tratta di file di testo.

Purtroppo TeX segue quella filosofia e tende a rendere più grande lo spazio orizzontale che c'è tra un punto finale e la parola successiva se questa ha l'iniziale maiuscola. Oltre a tutto, questo sistema crea delle difficoltà nella scrittura degli acronimi o delle abbreviazioni. Si pone rimedio utilizzando il comando \frenchspacing nel preambolo del documento.

112.10.4 Codifica

LaTeX permette l'uso di diverse codifiche, cioè diverse sequenze di simboli nei tipi di carattere utilizzati. Il tipo più vecchio è OT1, definito anche TeX text; il più recente, e anche quello che viene usato di solito è T1, definito anche TeX text extended. L'utilizzo della codifica T1 è necessaria se si vuole scrivere un documento che nel sorgente fa uso della codifica ISO latin-1.

La selezione della codifica TeX avviene attraverso il caricamento del pacchetto fontenc, indicando come opzione la sigla della codifica desiderata.

\usepackage[T1]{fontenc}

L'esempio mostra il caricamento della codifica T1, che è quella che dovrebbe essere utilizzata nella maggior parte dei casi.

112.10.5 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 avere sistemato la sillabazione) è quello di utilizzare le istruzioni seguenti nel preambolo.

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

In questo modo, se è stata definita una sillabazione italiana, questa viene attivata automaticamente; i termini come «capitolo», «pagina»,... sono tradotti in italiano; l'insieme dei caratteri che possono essere usati nel sorgente è ISO 8859-1 (ovvero «latin1»), avendo richiesto la codifica latin1 e T1, quindi il sorgente può essere scritto utilizzando le lettere accentate senza la necessità di utilizzare codici macro particolari.

Se per qualche ragione si vuole redigere un testo multilingua, è possibile utilizzare il pacchetto babel con l'indicazione di più linguaggi, come nel modo seguente:

\usepackage[italian,english]{babel}

Successivamente, per selezionarne uno, basta usare il comando \selectlanguage, con il nome prescelto. Ciò avrà effetto fino all'uso di un altro comando \selectlanguage che cambi tale indicazione.

...
\selectlanguage{italian}
...
\selectlanguage{english}
...

112.11 Configurazione di teTeX

Di fronte alla complicazione di una distribuzione teTeX, potrebbe sembrare assurdo l'idea di metterci le mani, pensando addirittura di modificare le impostazioni generali di teTeX. Tuttavia, quando si maneggiano documenti eccezionalmente voluminosi, come nel caso di questo, potrebbe essere necessario modificare anche ciò che non è stato pensato per questo.

112.11.1 Modifiche manuali

Alla fine della trasformazione di un documento TeX/LaTeX in DVI, si può leggere nel file delle registrazioni generato un rapporto delle risorse utilizzate durante l'elaborazione. Si osservi l'esempio.

Here is how much of TeX's memory you used:
 2418 strings out of 25906
 45132 string characters out of 446921
 109255 words of memory out of 263001
 5196 multiletter control sequences out of 10000+0
 106774 words of font info for 69 fonts, out of 200000 for 1000
 15 hyphenation exceptions out of 1000
 33i,12n,21p,2494b,1259s stack positions out of 300i,100n,500p,30000b,4000s

Output written on texput.dvi (1844 pages, 7563800 bytes).

Questo è proprio il caso di un documento enorme (1844 pagine), ma prima di questo appaiono una serie di valori, dove alternativamente si vede quanto di una data risorsa è stato usato e quanto era invece disponibile. Se per qualche ragione si esaurisce una di queste risorse, l'elaborazione si interrompe con una segnalazione di errore che indica quale limite è stato superato.

Se succede, si può provare a mettere mano al file di configurazione di teTeX che dovrebbe essere texmf/web2c/texmf.cnf. La prima volta, non è tanto facile capire il senso delle direttive che questo contiene, ma con un po' di tentativi si dovrebbe riuscire a risolvere il problema.

Prima di tutto si può osservare che, seguendo lo stile generale di TeX, i commenti sono introdotti dal simbolo di percentuale (%). Nella prima parte del file sono annotati i percorsi dei vari componenti della distribuzione.

% Part 1: Search paths and directories.

% The main tree, which must be mentioned in $TEXMF, below:
TEXMFMAIN = /usr/share/texmf

% A place for local additions to a "standard" texmf tree.  For example:
%   TEXMFLOCAL = /usr/share/texmf.local

% A place where texconfig stores modifications (instead of the TEXMFMAIN
% tree). texconfig relies on the name, so don't change it.
%   TEXMF_CNF = $TEXMF.cnf

% User texmf trees can be catered for like this...
%   HOMETEXMF = $HOME/texmf

...

La lettura di questa parte può rivelare delle informazioni importanti riguardo la propria distribuzione teTeX. Più avanti inizia una parte più delicata: quella che definisce le dimensioni degli array utilizzati da TeX, che di conseguenza rappresentano i limiti a cui si accennava all'inizio di questa sezione.

% Part 3: Array and other sizes for TeX (and Metafont and MetaPost).

...

% Max number of characters in all strings, including all error messages,
% help texts, font names, control sequences.  These values apply to TeX and MP.
pool_size.context = 500000
pool_size.cont-en = 500000
pool_size.cont-nl = 500000
pool_size.cont-de = 500000
%pool_size = 125000		
pool_size = 500000		

...

In questa parte, il valore più importante è quello di pool_size, perché può creare problemi soprattutto a pdfTeX, che verrà descritto più avanti. Nell'esempio si vede che è stato quadruplicato.

112.11.2 # texconfig

texconfig è un programma, in forma di script predisposto per configurare gli elementi essenziali della distribuzione teTeX. Si avvia semplicemente, senza bisogno di argomenti. La figura 112.2 mostra il menu principale di texconfig.

texconfig

+---------------------------- teTeX setup utility -----------------------------+
|                                                                              |
|  Hint: all output of external commands (e.g. tex) is logged into             |
|  a file. You can look at this file using LOG. If cursor keys make            |
|  trouble, you may have more luck with +/- and TAB.                           |
|                                                                              |
|                                                                              |
| +--------------------------------------------------------------------------+ |
| |                EXIT    exit                                              | |
| |                PREF    personal preferences                              | |
| |                CONF    show configuration                                | |
| |                REHASH  rebuild ls-R database                             | |
| |                HYPHEN  hyphenation table (tex/latex)                     | |
| |                MODE    default mode (xdvi/dvips/mf)                      | |
| |                XDVI    xdvi configuration                                | |
| |                DVIPS   dvips configuration                               | |
| |                FONT    directories for font creation                     | |
| |                DOC     rebuild html documentation                        | |
| |                FAQ     frequently asked questions + answers              | |
| |                LOG     view logfile                                      | |
+-+--------------------------------------------------------------------------+-+
|                            <  OK  >      <Cancel>                            |
+------------------------------------------------------------------------------+

Figura 112.2: Il menu principale di texconfig.

La funzione indicata con la sigla PREF serve solo a modificare il comportamento di texconfig, permettendo in particolare di selezionare un programma per la modifica del testo alternativo a quello predefinito.

La funzione CONF permette di mostrare la configurazione, consistente nella definizione delle directory contenenti i vari componenti della distribuzione teTeX.

La funzione REHASH permette di ricostruire il file texmf/ls-R, utilizzato per agevolare la ricerca dei componenti installati ad alcuni programmi della distribuzione. In generale, si ricostruisce questo file quando si aggiunte o si toglie qualche file (per esempio i file dei tipi di carattere).

La funzione HYPHEN è molto importante, perché permette di stabilire le lingue per cui attivare la suddivisione in sillabe del testo. Selezionando questa funzione si ottiene l'avvio del programma per la modifica di file di testo (presumibilmente VI) con il file texmf/tex/generic/config/language.dat. Si può modificare questo file, e al termine, dopo averlo salvato, vengono avviate automaticamente le procedure necessarie ad attivare in pratica le scelte fatte.

Di solito, si tratta di commentare le righe che fanno riferimento a linguaggi che non si vogliono gestire, e si deve togliere il commento dalla direttiva di attivazione della sillabazione per la lingua italiana.

% File    : language.dat
% Purpose : specify which hypenation 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 hyphenation pattern files are in the directory:
%	texmf/tex/generic/hyphen


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

% Let us define USenglish as an alias for american:
=USenglish %

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

% english should always be defined. Either an alias for american or british.
=english %

% French, TWO lines!
french		frhyph.tex frhyphex.tex %
=patois %

german		ghyph31.tex %

% The following languages are disabled by default. Uncomment, what you need.
%bahasa		inhyph.tex %
%catalan	cahyph.tex %
%croatian	hrhyph.tex %
%czech		czhyph2e.tex %
%danish		dkhyphen.tex %
%dutch		nehyph2.tex %
%finnish	fihyph.tex %
%galician	gahyph.tex %
italian		ithyph.tex %
%magyar		huhyph.tex %
%norsk		nohyph.tex %
%polish		plhyph.tex %
%portuges	pthyph.tex %
%romanian	rohyphen.tex %
%russian	ruhyph.tex %
%serbocroatian	shhyphl.tex %
%slovene	sihyph22.tex %
%spanish	sphyph.tex %
%swedish	sehyph.tex %
%turkish	trhyph.tex %

% A "language" without hyphenation:
nohyphenation zerohyph.tex %

Al termine dell'elaborazione si potrà verificare nel file texmf/web2c/latex.log la presenza delle righe che dimostrano l'abilitazione della sillabazione per le lingue selezionate nel file di configurazione. In questo caso particolare, la lingua italiana corrisponde al terzo linguaggio a disposizione.

...
\l@american=\language0
...
\l@USenglish =\language0
\l@english =\language0
\l@french=\language1
...
\l@patois =\language1
\l@german=\language2
...
\l@italian=\language3
...
\l@nohyphenation=\language4

La funzione MODE permette di predisporre alcuni programmi per la risoluzione della propria stampante. Ciò si ottiene semplicemente selezionando il nome di una stampante che dovrebbe corrispondere, o essere molto simile alla propria.

La funzione XDVI permette di configurare xdvi, il programma di visualizzazione dei file DVI, in modo da stabilire il formato del foglio che si utilizza. Basta scorrere un elenco e confermare.

La funzione DVIPS permette di configurare dvips, il programma in grado di convertire file DVI in PostScript. Anche in questo caso, la cosa più importante da stabilire è il formato della carta, ma può anche essere indicata la stampante, o il comando di stampa da utilizzare quando dvips viene usato per inviare direttamente un file alla stampa.

L'ultima funzione importante è FONT che permette di regolare i permessi di accesso alle directory che contengono i tipi di carattere e anche di configurare altre caratteristiche di questi file.

112.12 pdfTeX/pdfLaTeX

Le distribuzioni più recenti di teTeX comprendono anche pdfTeX e pdfLaTeX. Si tratta di una versione di TeX che può generare sia file DVI che PDF (Portable Document Format). Attualmente, non essendo ancora completo, viene usato generalmente solo per produrre documenti PDF.

La differenza che c'è tra pdfTeX e pdfLaTeX sta nel fatto che il secondo è in grado di elaborare direttamente file LaTeX, mentre il primo no, e inoltre richiede l'uso di comandi specifici. Nella documentazione che dovrebbe trovarsi nella directory texmf/doc/pdftex/, si trova un esempio di un file scritto proprio per pdfTeX, ed è anche la prima verifica che si può fare del funzionamento di pdfTeX.

pdftex example

In situazioni normali, l'elaborazione dovrebbe generare un file PDF.

112.12.1 Configurazione

In generale, è auspicabile che la propria distribuzione teTeX sia stata predisposta correttamente anche per l'uso di pdfTeX. I problemi maggiori riguardano la disponibilità dei caratteri, ma questo particolare si può approfondire eventualmente leggendo la documentazione originale di pdfTeX. Molto probabilmente è opportuno modificare il file di configurazione generale di pdfTeX (e quindi anche di pdfLaTeX): texmf/pdftex/config/pdftex.cfg.

% pdftex.cfg
output_format 1
compress_level 9
decimal_digits 2
page_width 210mm
page_height 297mm
horigin 1in
vorigin 1.3in
map acrobat.map
map +lw35extra_urw.map
map +charter.map
map +omega.map
map +utopia.map
map +xypic.map
map +hoekwater.map
map +bsr.map
map +bakomaextra.map

Quello che si vede è un esempio di questo file. Si osservi, come sempre, che i commenti sono introdotti con il simbolo di percentuale (%).

La direttiva output_format permette di definire il formato che si vuole ottenere. Assegnandovi il valore 1, si richiede espressamente una conversione in PDF; altrimenti, il valore 0 richiede una trasformazione in DVI.

La direttiva compress_level permette di stabilire il livello di compressione del formato PDF che si vuole generare. Il valore 0 rappresenta la volontà di non comprimere, mentre 9 è il livello massimo di compressione.

Le direttive page_width e page_height rappresentano rispettivamente l'ampiezza orizzontale e l'altezza verticale della pagina. I valori 210 mm e 287 mm rappresentano esattamente le dimensioni di un foglio A4 verticale.

Le direttive horigin e vorigin rappresentano un punto di riferimento per il testo, una sorta di margine sinistro e superiore. Di solito si trova l'indicazione di un pollice (1in) per entrambe le direttive; se si utilizza xpdf per visualizzare il documento PDF che viene generato, potrebbe essere necessario aggiustare leggermente questi valori, come nell'esempio, dove l'origine verticale è di 1,3 pollici.

112.12.2 Immagini

Al contrario dell'uso normale di LaTeX, pdfTeX e pdfLaTeX permettono esclusivamente l'inclusione di immagini in formato PNG. Quando si converte un file da LaTeX a PDF, attraverso pdfLaTeX, è sufficiente che siano disponibili anche le immagini PNG equivalenti a quelle PostScript, o EPS, utilizzate normalmente da LaTeX, purché queste abbiano l'estensione corretta: .png.

112.13 Riferimenti

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Inizialmente è bene usare dvips indicando esplicitamente il formato finale, che nel caso di A4 si specifica attraverso l'opzione -t a4, a meno di volere utilizzare il tipo predisposto in fase di compilazione, che di solito è letter. In seguito si vedrà che con la distribuzione teTeX è possibile configurare il funzionamento di dvips e altri programmi di contorno, proprio a proposito della dimensione locale della pagina.

2.) Perché il sistema dei riferimenti funzioni come descritto, è necessario che l'etichetta sia contenuta all'interno di un comando \caption, oppure lo segua immediatamente.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]