[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 445.   LaTeX: introduzione

LaTeX è un pacchetto di macro per TeX molto comune, per facilitare la realizzazione di documenti tipici. Si fa riferimento implicito a questo pacchetto di macro utilizzando un comando specifico per la composizione, come già descritto nella sezione 438.3. Pertanto, di solito si ottiene la composizione di un sorgente TeX scritto usando macro LaTeX attraverso il comando seguente:

latex file_sorgente

Normalmente, il file sorgente scritto con macro LaTeX ha la solita estensione .tex; inoltre si usano le stesse procedure per la rielaborazione dei file DVI generati dalla composizione.

In generale, la scrittura di un sorgente LaTeX deve seguire le regole imposte dal suo pacchetto di macro. Ciò significa che le istruzioni o le macro del linguaggio TeX originale potrebbero creare dei conflitti, se l'uso di queste non è previsto espressamente.

Quando si usano solo le macro LaTeX, lasciando da parte TeX, queste macro possono essere viste come comandi del linguaggio LaTeX, mentre le macro diventano quelle definizioni create con il linguaggio LaTeX stesso.

445.1   Comandi e modelli sintattici

La necessità di avere il controllo della situazione, fa sì che LaTeX definisca anche un modo proprio per la creazione di altre macro; inoltre, esiste la possibilità di avere degli argomenti opzionali, che si indicano tra parentesi quadre. In generale, è difficile definire in modo completo come possono essere conformate le chiamate ai comandi e alle macro di LaTeX, comunque il modello sintattico seguente dovrebbe darne un'idea sufficiente per cominciare.

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

È già noto il fatto che le parentesi graffe fanno parte dell'istruzione; inoltre, le parentesi quadre devono essere usate per gli argomenti opzionali, ma se queste opzioni mancano, si omettono anche le parentesi quadre stesse. Per esempio, si può scrivere:

\documentclass[a4paper]{book}

oppure soltanto:

\documentclass{book}

Infine, c'è anche da considerare che alcuni comandi prevedono l'uso opzionale di un asterisco alla fine del loro nome, come nel caso della dichiarazione del titolo di una sezione:

\section{Bla bla bla}

Oppure:

\section*{Bla bla bla}

Il significato dell'asterisco dipende dal comando.

Ricapitolando, un modello sintattico riferito a comandi o macro di LaTeX deve essere letto in modo speciale: le parentesi graffe, le parentesi quadre e l'asterisco fanno parte dell'istruzione; inoltre, se non si indicano opzioni, le parentesi quadre che le delimitano non vanno usate.

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

Segue la descrizione di alcuni esempi.

445.2   Esempio iniziale

Prima di affrontare l'analisi della struttura del sorgente LaTeX, conviene vedere un esempio introduttivo abbastanza completo:

\documentclass{article}

% Inizia il preambolo.

\setlength{\textwidth}{11cm}
\setlength{\textheight}{11cm}

% 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[Invio]

Se non vengono rilevati errori, durante l'elaborazione si vedono diverse informazioni sul procedimento della composizione, come già descritto nella sezione 438.3 a proposito di TeX. Nello stesso modo di TeX vengono generati dei file contenenti informazioni e la composizione nel file primo.dvi. Ma a differenza di TeX puro e semplice, si ottiene anche il file primo.aux, contenente delle porzioni di codice da riutilizzare nelle composizioni successive.

Il risultato della composizione di questo esempio si può vedere nella figura 445.11. La conversione del file DVI in qualcosa di più conveniente, è descritta nel capitolo 217.

Figura 445.11. Il risultato della composizione del sorgente LaTeX di esempio.

risultato della composizione

445.2.1   Sopravvivere nel caos

Nel capitolo 438 è già stato mostrato in che modo si comporta TeX quando si presentano degli errori di composizione. Il pacchetto di macro che compone LaTeX aggiunge informazioni in fase di composizione. Per esempio, si può provare a realizzare un file contenente dei problemi, per vedere come si comporta LaTeX effettivamente:

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

Leggendo il file delle registrazioni (il file con estensione .log) 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 \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. Fortunatamente, viene indicato precisamente il punto in cui appare l'errore, esattamente come succede con la composizione in TeX puro e semplice: si tratta proprio del comando \usepackage che appare nella riga numero due del testo sorgente.

l.2 \usepackage
               {epsfig}

Subito dopo appare l'invito consueto di TeX, che chiede all'utente di prendere una decisione al riguardo. Per il resto, tutto funziona come per TeX.

A differenza dell'utilizzo di TeX puro e semplice, può succedere che LaTeX mostri degli errori nell'ambito delle sue stesse macro, quando ci si spinge ai limiti delle possibilità di queste. Naturalmente, in questi casi occorre cercare il problema nelle istruzioni usate nel file sorgente, lasciando stare i file che compongono il pacchetto di macro di LaTeX.

445.3   Struttura essenziale di un documento LaTeX

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

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

\documentclass[opzioni]{classe}

Per esempio:

\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

\documentclass{book}

definisce l'uso della classe book, senza opzioni, che così viene impostata in modo predefinito.

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 8859-1 (Latin 1) nel sorgente LaTeX, assieme al 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 altri stili, è possibile utilizzare direttamente delle dichiarazioni riferite a singoli elementi stilistici. Nell'esempio presentato all'inizio si utilizzavano due dichiarazioni:

\setlength{\textwidth}{11cm}
\setlength{\textheight}{11cm}

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

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}

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 \LaTeX}

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

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

445.4   Composizione per approssimazione successiva

Tra i vari automatismi offerti da LaTeX, esiste la possibilità di generare degli indici e dei riferimenti incrociati. Per ottenere questo risultato, LaTeX deve annotare inizialmente la posizione dei riferimenti da leggere poi in una fase successiva.

Queste annotazioni vengono fatte in file ausiliari, con estensione .aux e altre, che vengono letti automaticamente attraverso la ripetizione del processo di composizione. Osservando il file ausiliario principale generato dalla composizione dell'esempio iniziale, si può notare che si tratta di istruzioni LaTeX:

\relax 
\@writefile{toc}{\contentsline {section}{\numberline \
  \{1}Introduzione a \LaTeX }{1}} \@writefile{toc}{\contentsline {subsection}{\numberline \
  \{1.1}Suddivisione del documento}{1}} \@writefile{toc}{\contentsline {subsection}{\numberline \
  \{1.2}Paragrafi}{1}} \@writefile{toc}{\contentsline {subsection}{\numberline \
  \{1.3}Gli ambienti}{1}}

Nel caso particolare dell'esempio mostrato, si tratta solo di istruzioni necessarie alla costruzione dell'indice generale; intuitivamente si comprende il significato dei dati che appaiono: il numero della sezione, il titolo e la pagina in cui si trova.

Gli indici e i riferimenti incrociati vanno a modificare l'impaginazione; si pensi al caso dell'indice generale, dapprima assente del tutto, che in una seconda fase può impegnare da solo più pagine. Pertanto, sono indispensabili tre rielaborazioni per arrivare a una composizione ragionevolmente corretta: la prima fase genera i dati che inizialmente sono assenti del tutto; la seconda incorpora i dati, che però si riferiscono all'impaginazione precedente, in cui mancavano, rigenerando una nuova serie di dati aggiornati; la terza rielaborazione utilizza i dati aggiornati nella seconda fase. Teoricamente, una quarta elaborazione potrebbe generare un risultato ancora più sicuro, che però di solito non risulta necessario.

È importante chiarire che LaTeX non dispone di un procedimento automatico in grado di avviare e riavviare la composizione per tutte le volte in cui ciò possa risultare necessario, pertanto è l'utente stesso che riavvia la composizione in base alle esigenze:

latex file_sorgente[Invio]

latex file_sorgente[Invio]

latex file_sorgente[Invio]

445.5   Personalizzazione

Come accennato all'inizio del capitolo, LaTeX mette a disposizione dei comandi appositi per la creazione di nuove macro. In queste sezioni viene mostrato come creare e ridefinire una macro di LaTeX e come importare un file di stile, ovvero un file contenente delle macro.

In particolare, negli esempi si fa riferimento spesso a comandi comuni di LaTeX che però non sono ancora stati descritti. In questa fase è sufficiente comprendere i meccanismi con cui si definiscono le macro e si utilizzano i file esterni.

445.5.1   Definizione e ridefinizione di macro

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][primo_argomento_fisso]{definizione}
\renewcommand{comando}[n_argomenti]{definizione}
\renewcommand{comando}[n_argomenti][primo_argomento_fisso]{definizione}

Se il comando può avere degli argomenti, è necessario indicarne la quantità, attraverso una sola cifra numerica da uno a nove; inoltre, è possibile specificare un contenuto fisso del primo argomento, che viene aggiunto al primo argomento della chiamata. Quando 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.

In generale, non c'è alcun motivo di usare la dichiarazione in cui si prevede un primo argomento fisso, dal momento che quel testo può essere inserito direttamente nella definizione del comando.

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 | \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, mentre subito dopo, attraverso il comando \normalfont, riprende lo stile normale.

L'esempio seguente definisce un comando che richiede un argomento. Ciò che si ottiene serve 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, 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 uno a nove. 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, si intende sostituire \begin{bftt} con il comando \bfseries\ttfamily e rimpiazzare \end{bftt} con il comando \normalfont.

445.5.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/.

445.6   Localizzazione

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

445.6.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}

445.6.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 nel capitolo 438.

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

445.6.3   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), attivandola nel documento esattamente come 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.

Eventualmente, se il problema è solo quello di evitare che qualche termine sia separato in sillabe, lo si può inserire in una scatola (come viene descritto meglio in seguito):

\mbox{parola}

445.6.4   Spaziatura orizzontale

Secondo una regola della tipografia del passato, ormai condannata generalmente, è 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 anche con LaTeX il comando \frenchspacing nel preambolo del documento (si veda anche il capitolo 442 a questo proposito).

445.6.5   Codifica

LaTeX permette l'uso di diverse codifiche, cioè diverse sequenze di simboli nei tipi di carattere utilizzati. Per la precisione, si distingue tra la codifica usata nel sorgente e il tipo di insieme di caratteri da usare. Nel primo caso, si usa normalmente il pacchetto inputenc, nel modo seguente, all'interno del preambolo, in modo da stabilire l'uso della codifica ISO 8859-1 nel sorgente:

\usepackage[latin1]{inputenc}

Per quanto riguarda l'insieme di caratteri, il tipo più vecchio è OT1, definito anche TeX text; il più recente e più usato è T1, definito anche TeX text extended. L'utilizzo della codifica T1 per l'insieme di caratteri è necessaria se si vuole scrivere un documento che nel sorgente fa uso della codifica ISO 8859-1 (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.

445.6.6   Localizzazione 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 localizzazione (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 Latin 1), 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ò ha effetto fino all'uso di un altro comando \selectlanguage che cambi tale indicazione.

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

È importante non confondere \selectlanguage con \languagen. Nel primo caso si fa riferimento a un comando del pacchetto babel; nel secondo si fa riferimento alla sillabazione. Il primo è in grado di condizionare il secondo, ma non viceversa: non esiste un «linguaggio» corrispondente alla sillabazione nulla. Se si intende definire la sillabazione nulla occorre passare per un comando \languagen conforme.

445.7   Variabili e tipi di dati

Nel capitolo 439 è stato descritto l'uso delle variabili nel linguaggio TeX, ma quando si usa LaTeX è bene utilizzare comandi appositi, ignorando la gestione che c'è a basso livello. A ogni modo, rimane la possibilità di usare l'istruzione \the per trasformare il contenuto di una variabile LaTeX in testo della composizione finale.

445.7.1   Lunghezze

Le variabili adibite a contenere le lunghezze, si creano secondo LaTeX attraverso il comando \newlength:

\newlength\nome_lunghezza

Successivamente, si assegna un valore alle variabili di questo tipo con il comando \setlength:

\setlength{\nome_lunghezza}{lunghezza}

Come per TeX, le lunghezze che si assegnano in questo modo a una variabile, possono essere rigide oppure elastiche, secondo la stessa notazione di TeX:

lunghezza_richiesta [plus lunghezza_in_estensione] [minus lunghezza_in_contrazione]

La lunghezza che costituisce il secondo argomento del comando \setlength, può essere il comando corrispondente a una lunghezza già definita in precedenza; in questo modo si può salvare un valore da richiamare in un momento successivo, quando si intende variare temporaneamente la dimensione di una lunghezza già esistente. Per esempio:

\newlength\salvataggio
\setlength{\salvataggio}{\textwidth}
\setlength{\textwidth}{10cm}
...
\setlength{\textwidth}{\salvataggio}

Quanto appare sopra, mostra il salvataggio della lunghezza originale di \textwidth nella variabile \salvataggio, quindi la modifica del valore di \textwidth temporaneamente, alla fine il ripristino del valore di \textwidth leggendo il contenuto di \salvataggio.

L'elenco seguente riepiloga i comandi utili per la creazione e la modifica delle lunghezze:

\newlength\nome_lunghezza
crea una lunghezza nuova, corrispondente al comando \nome_lunghezza;
\setlength{\nome_lunghezza}{lunghezza}
assegna alla lunghezza indicata il valore dell'ultimo argomento, che può essere sia una lunghezza rigida, sia una lunghezza elastica;
\addtolength{\nome_lunghezza}{lunghezza_rigida}
aggiunge alla lunghezza indicata il valore dell'ultimo argomento, che deve essere una lunghezza rigida;
\settodepth{\nome_lunghezza}{testo}
assegna alla lunghezza il valore della profondità del testo che appare come ultimo argomento;
\settoheight{\nome_lunghezza}{testo}
assegna alla lunghezza il valore dell'altezza del testo che appare come ultimo argomento;
\settowidth{\nome_lunghezza}{testo}
assegna alla lunghezza il valore della larghezza del testo che appare come ultimo argomento.

Figura 445.45. Dimensioni di una scatola.

scatola

445.7.2   Contatori

LaTeX gestisce dei contatori a cui si accede attraverso parole chiave, nell'ambito di comandi che ne consentono la creazione, la modifica e la lettura. L'elenco seguente riguarda una parte dei comandi coinvolti nella gestione dei contatori:

Comando Descrizione
\newcounter{nome_contatore}[contatore_già_esistente]
crea un contatore con il nome indicato, il cui valore viene azzerato ogni volta che quello opzionale (tra parentesi quadre) viene incrementato;
\setcounter{nome_contatore}{valore}
assegna il valore indicato al contatore (deve trattarsi di un valore intero, che eventualmente può essere negativo);
\stepcounter{nome_contatore}
incrementa il contatore di una singola unità e azzera eventualmente i contatori che dipendono da questo;
\refstepcounter{nome_contatore}
si comporta come \stepcounter, con la differenza che coinvolge la creazione di un riferimento se seguito dal comando \label;
\addtocounter{nome_contatore}{valore}
aggiunge al contatore il valore indicato (deve trattarsi di un valore intero, che eventualmente può essere negativo);
\arabic{nome_contatore}
traduce il valore del contatore in un numero arabo nella composizione finale;
\thenome_contatore
quando viene creato un contatore, si crea implicitamente questo comando, con il quale si ottiene il valore del contatore nella composizione finale, espresso in modo predefinito (di solito si tratta di un numero arabo);
\alph{nome_contatore}
traduce il valore del contatore in una lettera minuscola singola, pertanto si possono rappresentare solo valori da 1 a 26;
\Alph{nome_contatore}
traduce il valore del contatore in una lettera maiuscola singola, pertanto si possono rappresentare solo valori da 1 a 26;
\roman{nome_contatore}
traduce il valore del contatore in un numero romano con lettere minuscole, pertanto non si possono rappresentare valori negativi;
\Roman{nome_contatore}
traduce il valore del contatore in un numero romano con lettere maiuscole, pertanto non si possono rappresentare valori negativi;
\fnsymbol{nome_contatore}
traduce il valore del contatore in un simbolo, ma sono disponibili solo nove simboli, pertanto si rappresentano valori da 1 a 9;
\value{nome_contatore}
ottiene il valore del contatore, da usare all'interno di un'espressione (non riguarda la composizione).

Per esempio, si crea un contatore prova con il comando:

\newcounter{prova}

Al contatore è possibile assegnare un valore (il valore iniziale è zero) fisso:

\setcounter{prova}{-35}

In alternativa, si può assegnare al contatore il valore di un contatore già esistente; in questo caso si assegna il valore del contatore della pagina:

\setcounter{prova}{\value{page}}

Infine, si può inserire il valore del contatore nella composizione finale, per esempio in forma di numero arabo normale:

\arabic{prova}

Per comprendere la dipendenza che ci può essere tra i contatori, viene proposto un esempio più articolato, seguito dal risultato che si ottiene con la composizione:

\newcounter{uno}
\newcounter{due}[uno]

\stepcounter{uno}

\theuno . \thedue

\stepcounter{due}

\theuno . \thedue

\stepcounter{due}

\theuno . \thedue

\stepcounter{uno}

\theuno . \thedue

Come si può notare, in questo caso è stata usata la forma \thecontatore per visualizzare il valore del contatore preso in esame:

contatori

Per quanto riguarda l'uso di \refstepcounter, le cose si complicano e richiedono la conoscenza dei comandi \label e \ref (capitolo 451). Qui viene mostrato un esempio che dovrebbe consentire una comprensione intuitiva della cosa:

\newcounter{prova}
\stepcounter{prova}
Il contatore ha raggiunto il valore \arabic{prova}.\par
\stepcounter{prova}
Il contatore ha raggiunto il valore \arabic{prova}.\par
\refstepcounter{prova}\label{qui}
Ciao.\par
\stepcounter{prova}
Il contatore ha raggiunto il valore \arabic{prova}.\par

Quando si mostrava la parola ``ciao'', il contatore aveva il valore
\ref{qui}.

Si osservi che in questo caso, avendo a che fare con riferimenti incrociati, la composizione deve essere eseguita almeno due volte:

contatori

Il comando \thecontatore può essere ridefinito, se si desidera ottenere una forma di visualizzazione standard differente:

\newcounter{prova}
\renewcommand{\theprova}{\Roman{prova}}
\stepcounter{prova}
Il contatore ha raggiunto il valore \theprova.\par
\stepcounter{prova}
Il contatore ha raggiunto il valore \theprova.\par

contatori

LaTeX definisce e gestisce automaticamente un certo numero di contatori, a cui può essere conveniente fare riferimento. La tabella seguente elenca i contatori predefiniti più importanti:

Contatore Descrizione
part
contatore delle parti;
chapter
contatore dei capitoli;
section
contatore delle sezioni;
subsection
contatore delle sottosezioni;
subsubsection
contatore delle sotto-sottosezioni;
paragraph
contatore dei paragrafi;
subparagraph
contatore dei sottoparagrafi;
page
contatore delle pagine;
equation
contatore delle equazioni;
figure
contatore delle figure;
table
contatore delle tabelle;
footnote
contatore delle note a piè di pagina;
enumi
enumii
enumiii
enumiv
contatori usati negli elenchi numerati.

445.8   Riferimenti


1) Tutti i comandi che definiscono un livello di suddivisione del documento, da \part a \subparagraph, consentono di utilizzare un asterisco alla fine del nome (come per esempio \section*{...)); l'utilizzo di questo porta a sopprimere la numerazione della voce e il suo inserimento nell'indice generale (ammesso che queste due cose siano previste normalmente).


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome latex_introduzione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory