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


Capitolo 449.   LaTeX: blocchi di testo

LaTeX impagina il testo in paragrafi, in modo analogo a quanto fa già il linguaggio TeX puro e semplice. Anche per LaTeX funziona il comando \par, allo scopo di concludere un paragrafo in modo esplicito, oppure è sufficiente lasciare almeno una riga bianca tra un blocco e l'altro.

449.1   Caratteristiche normali di un paragrafo

Il paragrafo di LaTeX è costruito in maniera molto simile a quella di TeX, con la differenza che il controllo sulla sua estensione orizzontale dipende dall'impostazione della pagina e dalla suddivisione in colonne. Anche con LaTeX rimane il rientro della prima riga dei paragrafi, con l'eccezione normale del primo paragrafo dopo un titolo. La tabella 449.1 mostra alcuni dei comandi che controllano l'aspetto del paragrafo.

Tabella 449.1. Alcuni dei comandi che intervengono nella definizione del paragrafo.

dimensioni del paragrafo

Senza intervenire nella lunghezza definita dal comando \parindent, è possibile annullare il rientro della prima riga con il comando \noindent, così come è possibile usare \indent per ottenere l'effetto opposto in presenza di un paragrafo che non ha il rientro per qualche ragione. Tuttavia, anche annullando il rientro con il comando \noindent, rimane il problema della distanza tra i paragrafi, che in condizioni normali risulta troppo piccolo per consentirne l'individuazione senza rientri. Pertanto, quando si intende scrivere un documento che non fa uso di rientri in modo sistematico, conviene modificare le lunghezze che contano, direttamente nel preambolo, per esempio così:

\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}

Si osservi però, che in questo modo non può funzionare nemmeno il comando \indent, perché si limiterebbe a porre un rientro di zero punti.

Segue il riepilogo degli ultimi comandi descritti:

Comando Descrizione
\indent
richiede espressamente il rientro della prima riga secondo il valore di \parindent;
\noindent
annulla il rientro della prima riga per il paragrafo in cui si trova.

449.2   Allineamento del testo

In condizioni normali, il testo dei paragrafi risulta allineato simultaneamente a sinistra e a destra. Per modificare questo comportamento si interviene normalmente attraverso degli ambienti, ma sono disponibili anche dei comandi alternativi che provengono da TeX:

Comando Descrizione
\begin{center}testo\end{center}
centra il testo;
\centerline{riga_di_testo}
centra la riga;
\begin{flushleft}testo\end{flushleft}
{\raggedright testo\par}
allinea il testo a sinistra;
\begin{flushright}testo\end{flushright}
{\raggedleft testo\par}
allinea il testo a destra.

È interessante osservare che, mentre i comandi \raggedright e \raggedleft, richiedono l'inserimento in un raggruppamento, dove l'ultimo paragrafo deve terminare in modo esplicito, prima della fine del raggruppamento, gli ambienti dichiarano implicitamente l'inizio e la fine di un paragrafo.

Il comando \centerline consente di centrare una riga soltanto, senza inserire la spaziatura che riguarda un paragrafo normale.

Questo è un paragrafo normale, che serve come riferimento. Bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla.

\begin{center}
Questo è un paragrafo centrato, attraverso l'ambiente {\ttfamily
center}. Bla bla bla bla bla bla bla bla bla bla bla.
\end{center}

Questo è un paragrafo normale, a cui segue una riga centrata:

\centerline{riga centrata.}

\begin{flushleft}
Questo è un paragrafo allineato a sinistra, attraverso l'ambiente
{\ttfamily flushleft}. Bla bla bla bla bla bla bla bla bla bla bla.
\end{flushleft}

\begin{flushright}
Questo è un paragrafo allineato a destra, attraverso l'ambiente
{\ttfamily flushright}. Bla bla bla bla bla bla bla bla bla bla bla.
\end{flushright}

allineamento del testo

449.3   Elenchi

Alcuni ambienti sono predisposti per la realizzazione di elenchi di vario tipo. Quelli più comuni sono description, enumerate e itemize, ma esiste anche il modo di definire un tipo di elenco libero, attraverso l'ambiente generico list.

L'elenco puntato classico si ottiene con l'ambiente itemize:

\begin{itemize}
\item testo
\item testo
...
\item testo
\end{itemize}

All'interno dell'ambiente itemize, il comando \item serve a indicare l'inizio di una voce dell'elenco; la voce può contenere del testo piuttosto articolato, anche in più paragrafi, per esempio con dei sottoelenchi o ambienti di altro genere. L'esempio seguente mostra un elenco contenente un sottoelenco:

\begin{itemize}
\item Primo.
\item Secondo.
      \begin{itemize}
      \item Questa voce è una suddivisione ulteriore del secondo
            punto.
            
            Questo è un paragrafo ulteriore.
      \item Questa è una voce ulteriore della sottoclassificazione
            appartenente al secondo punto.
      \end{itemize}
\item Terzo.
\end{itemize}

elenco con sottoelenco

Teoricamente, è possibile modificare il simbolo usato per evidenziare l'inizio delle voci, ridefinendo i comandi \labelitemi, \labelitemii, \labelitemiii e \labelitemiv, che si riferiscono rispettivamente all'elenco principale e di seguito a sottoelenchi fino a un massimo di quattro livelli di annidamento. Per esempio, si può fare in modo che si utilizzi il segno «+» per l'elenco principale intervenendo in questo modo:

\renewcommand{\labelitemi}{\normalfont +}

Ecco come si presenta l'elenco già mostrato se si aggiunge questa istruzione all'inizio:

elenco con sottoelenco con simbolo modificato

In modo analogo si ottengono degli elenchi numerati, con l'ambiente enumerate:

\begin{enumerate}
\item testo
\item testo
...
\item testo
\end{enumerate}

L'esempio già visto viene riproposto usando l'ambiente enumerate; si può osservare che la numerazione delle voci cambia quando si inseriscono dei sottoelenchi:

\begin{enumerate}
\item Primo.
\item Secondo.
      \begin{enumerate}
      \item Questa voce è una suddivisione ulteriore del secondo
            punto.
            
            Questo è un paragrafo ulteriore.
      \item Questa è una voce ulteriore della sottoclassificazione
            appartenente al secondo punto.
      \end{enumerate}
\item Terzo.
\end{enumerate}

elenco numerato con sottoelenco

La sequenza dei valori attribuita alle voci viene determinata attraverso dei contatori, che sono rispettivamente: enumi, enumii, enumiii e enumiv. In pratica, il primo contatore controlla l'elenco più esterno, mentre l'ultimo riguarda quello più interno (di conseguenza ci possono essere un massimo di quattro annidamenti). Inoltre, il tipo di numerazione usata negli elenchi dipende rispettivamente dai comandi: \theenumi, \theenumii, \theenumiii e \theenumiv. L'esempio seguente è una variante di quello già visto, in cui, l'elenco più esterno parte dal numero tre, mentre l'elenco annidato utilizza i numeri romani:

\begin{enumerate}
\setcounter{enumi}{2}
\item Primo.
\item Secondo.
      \renewcommand{\theenumii}{\roman{enumii}}
      \begin{enumerate}
      \item Questa voce è una suddivisione ulteriore del secondo
            punto.
            
            Questo è un paragrafo ulteriore.
      \item Questa è una voce ulteriore della sottoclassificazione
            appartenente al secondo punto.
      \end{enumerate}
\item Terzo.
\end{enumerate}

elenco numerato con sottoelenco, con sequenze modificate

Gli elenchi descrittivi sono leggermente diversi, perché devono consentire l'indicazione la descrizione delle voci. L'ambiente usato per questo è description:

\begin{description}
\item [etichetta] testo
\item [etichetta] testo
...
\item [etichetta] testo
\end{description}

Ciò che è stato indicato come etichetta è ciò che rappresenta simbolicamente la voce che viene descritta dal testo successivo; come si vede dalla sintassi, potrebbe essere omessa, anche se questo fa perdere di significato a un elenco descrittivo. Viene riproposto l'esempio già visto in precedenza per gli altri tipi di elenco, con l'aggiunta delle etichette:

\begin{description}
\item [marrone] Primo.
\item [rosso] Secondo.
      \begin{description}
      \item [oro] Questa voce è una suddivisione ulteriore del secondo
            punto.
            
            Questo è un paragrafo ulteriore.
      \item [argento] Questa è una voce ulteriore della sottoclassificazione
            appartenente al secondo punto.
      \end{description}
\item [arancio] Terzo.
\end{description}

elenco descrittivo con sottoelenco

Come si vede dal risultato della composizione, l'annidamento non fa cambiare l'aspetto dell'elenco.

Eventualmente, si può omettere l'indicazione della voce distintiva dei vari punti, se a questo si provvede da soli con gli evidenziamenti che si preferiscono; tuttavia, può risultare difficile inserire le parentesi quadre all'inizio di queste voci. Per inserire le parentesi quadre con un significato letterale, basta fare in modo che LaTeX comprenda che il testo è già iniziato, attraverso l'inserzione di gruppi vuoti, oppure inserendo le parentesi stesse tra parentesi graffe:

\begin{description}
\item [marrone] Primo.
\item {[rosso]} Secondo.
\item {}[arancio] Terzo.
\end{description}

elenco descrittivo senza la voce indicativa, con parentesi quadre

Gli ambienti riferiti agli elenchi gestiscono in modo autonomo la distanza verticale di separazione tra le voci, impostando internamente il comando \itemsep. Volendo, si può interferire in questa lunghezza per modificare la distanza tra le voci di un elenco, ma solo all'interno dell'elenco stesso:

\begin{itemize}
\item Primo. In questo contesto, il valore predefinito di
      {\ttfamily \textbackslash{}itemsep} è \the\itemsep{}.
\setlength{\itemsep}{1cm}
\item Secondo.
      \begin{itemize}
      \item Questa voce è una suddivisione ulteriore del secondo
            punto.
            
            Questo è un paragrafo ulteriore.
      \item Questa è una voce ulteriore della sottoclassificazione
            appartenente al secondo punto.
      \end{itemize}
\item Terzo.
\end{itemize}

elenco con spaziatura alterata

Infine, si può realizzare un elenco in modo libero, attraverso l'ambiente list:

\begin{list}{etichetta}{comandi_di_spaziatura}
\item testo
\item testo
...
\item testo
\end{list}

In pratica, al posto di etichetta si inseriscono i comandi necessari a produrre l'etichetta che contrassegna le voci dell'elenco, mentre al posto di comandi_di_spaziatura si possono mettere i comandi che servono a definire le lunghezze relative alla costruzione dell'elenco. Per cominciare, conviene mostrare un esempio banale di elenco puntato, dove il punto delle voci è rappresentato da un asterisco:

\begin{list}{*}{}
\item Primo.
\item Secondo.
\item Terzo.
\end{list}

elenco libero semplice

Per controllare la distanza tra i punti, si può modificare la distanza \itemsep:

\begin{list}{*}{\setlength{\itemsep}{1cm}}
\item Primo.
\item Secondo.
\item Terzo.
\end{list}

elenco libero con controllo della distanza tra i punti

Per costruire un elenco numerato, occorre intervenire con maggiore abilità nella definizione dell'etichetta:

\newcounter{elenco}

\setcounter{elenco}{0}
\begin{list}{\stepcounter{elenco}\arabic{elenco}}{\setlength{\itemsep}{1cm}}
\item Primo.
\item Secondo.
\item Terzo.
\end{list}

elenco numerato con controllo della distanza tra i punti

449.4   Citazioni

Sono disponibili due ambienti per rappresentare facilmente del testo rientrato rispetto al flusso normale:

Comando Descrizione
\begin{quote}testo\end{quote}
\begin{quotation}testo\end{quotation}
rientra a destra e a sinistra il testo, in un modo conveniente per includere una citazione.

La differenza tra i due ambienti sta nel fatto che quote non fa rientrare la prima riga dei paragrafi, mentre quotation si comporta come al solito. In ogni caso, entrambi gli ambienti possono contenere più paragrafi o blocchi di altro tipo. Segue un esempio:

Bla bla bla bla bla...

\begin{quote}

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

\end{quote}

Bla bla bla bla bla...

\begin{quotation}

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

\end{quotation}

citazioni

449.5   Versi

LaTeX facilita la scrittura di versi poetici attraverso l'ambiente verse. Si osservi l'esempio seguente:

\section{La Divina Commedia -- Inferno}

canto XV

\begin{verse}
Ora c'en porta l'un de' duri margini;\par
e 'l fummo del ruscel di sopra aduggia,\par
sì che dal foco salva l'acqua e li argini.\par
\end{verse}

versi

Come si può osservare, le strofe devono occupare ognuna un paragrafo separato. L'ambiente verse si occupa in pratica di rientrare in modo particolare i paragrafi, per consentire di riconoscere anche le strofe lunghe. Si osservi cosa accade con una strofa più lunga dello spazio che può avere a disposizione la riga:

strofe lunghe

449.6   Testo letterale

Per riprodurre del testo in modo letterale, è disponibile l'ambiente verbatim e il comando \verb:

Comando Descrizione
\begin{verbatim}testo_preformattato\end{verbatim}
compone il testo in modo letterale, rispettando anche le interruzioni di riga, usando un carattere dattilografico;
\begin{verbatim*}testo_preformattato\end{verbatim*}
come nel caso precedente, evidenziando gli spazi con un segno speciale.
\verbxtesto_letteralex
compone il testo, che non può superare la riga di lunghezza, in modo letterale, usando un carattere dattilografico;
\verb*xtesto_letteralex
come nel caso precedente, evidenziando gli spazi con un segno speciale.

Come si può comprendere dalla spiegazione data nella tabella riepilogativa, l'ambiente verbatim consente di rappresentare facilmente dei blocchi di testo letterali, da riprodurre così come sono nel sorgente, anche nelle interruzioni di riga; al contrario, il comando \verb va usato nel testo normale.

Nel caso dell'ambiente verbatim, il contenuto del testo non ha limitazioni, salvo il fatto che non può includere il comando di chiusura dell'ambiente (\end{verbatim}); mentre il comando \verb delimita il testo letterale con un carattere a scelta, inserito all'inizio e alla fine del testo. Gli esempi seguenti mostrano l'uso dei due modi di indicare testo letterale, in modo normale o con l'asterisco:

\$ \verb@cat -n /bin/bash@ [Invio]

\begin{verbatim}
     1  ^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@M-PM-^Q^E^H4^@^@^@M-\M-7^T^
     2  ^F^@^@M-w^B^@^@^_^F^@^@M-^^^D^@^@^@^@^@^@^^^F^@^@^K^E^@^@M-j^D^@^@T^D^@^
     3  ^D^@^@b^F^@^@^@^@^@^@_^C^@^@M-^[^C^@^@M-^[^@^@^@M-^J^E^@^@^@^@^@^@^@^@^@
    ...
\end{verbatim}

testo letterale

\$ \verb*@ls -l /@ [Invio]

\begin{verbatim*}
drwxr-xr-x    2 root     root         4096 mag  3 22:46 bin
drwxr-xr-x    4 root     root         4096 apr 20 16:15 boot
drwxr-xr-x    7 root     root        20480 mag  5 08:49 dev
drwxr-xr-x  123 root     root         8192 mag  5 08:49 etc
drwxr-xr-x   21 root     root         4096 feb 10 20:59 home
drwxr-xr-x    7 root     root         8192 mag  3 22:48 lib
...
\end{verbatim*}

testo letterale

Si veda anche la sezione 455.2 per l'importazione di file esterni da rappresentare in modo letterale.

449.7   Ambienti fluttuanti

LaTeX dispone di due ambienti fluttuanti nel testo, preparati idealmente per incorporare tabelle o figure:

\begin{figure}[permesso_di_collocazione]
    figura
\end{figure}
\begin{table}[permesso_di_collocazione]
    tabella
\end{table}

Per il momento, per come sono mostrati i modelli sintattici dell'utilizzo di questi ambienti, non c'è differenza tra un ambiente o l'altro. La collocazione dell'oggetto contenuto nell'ambiente fluttuante, viene concessa attraverso l'uso di alcune lettere alfabetiche, con il significato seguente:

Lettera Significato mnemonico Descrizione
h
here si concede la collocazione nel punto in cui si trova la dichiarazione della tabella o della figura;
t
top si concede la collocazione all'inizio della pagina attuale;
b
bottom si concede la collocazione alla fine della pagina attuale;
p
page si concede la collocazione in una pagina a parte, riservata a questo.

Queste lettere possono essere sommate assieme e conta l'ordine in cui sono dati i permessi di collocazione. Per esempio,

\begin{table}[tbp]
    ...
\end{table}

dichiara una tabella fluttuante che può essere collocata nell'ordine: all'inizio della pagina, alla fine, oppure in una pagina a parte. In pratica, viene esclusa la collocazione nel punto in cui viene dichiarata, a meno che questo coincida con una delle alternative concesse.

Se i permessi di posizionamento dell'oggetto non vengono specificati, LaTeX intende l'uso della sigla tbp, cioè in alto, in basso o in una nuova pagina, escludendo la posizione naturale.

Dal momento che un oggetto inserito in un ambiente fluttuante non può essere suddiviso, risulta difficile imporre la collocazione nello stesso punto in cui si trova, quando ciò costringe a lasciare molto spazio vuoto alla fine di una pagina. Pertanto, l'uso del solo permesso h, senza alternative, diventa privo del suo significato nella maggior parte dei casi. Se la collocazione di questi oggetti deve avvenire necessariamente nella loro posizione naturale, lo si può imporre incorporando il pacchetto float nel preambolo e indicando il permesso H (la lettera H maiuscola):

\usepackage{float}
\begin{document}
...
\begin{table}[H]
    ...
\end{table}

La differenza tra gli ambienti si avverte solo quando si inseriscono le didascalie, attraverso il comando \caption:

\begin{figure}[permesso_di_collocazione]
    \caption{didascalia}
    figura
\end{figure}
\begin{table}[permesso_di_collocazione]
    \caption{didascalia}
    tabella
\end{table}

Il comando \caption può essere inserito in qualunque punto, all'interno dell'ambiente, purché ciò possa avere senso in fase di composizione (generalmente si sceglie l'inizio o la fine, per avere una didascalia superiore o inferiore). L'inserimento del comando fa incrementare il contatore delle figure o delle tabelle, corrispondente rispettivamente a figure o table; inoltre la didascalia risulta arricchita della definizione «figura» o «tabella» con l'aggiunta del numero relativo. Infine, il numero della figura o della tabella viene accumulato per generare un indice specifico, attraverso i comandi \listoffigures e \listoftables.

L'esempio seguente mostra la costruzione di una tabella molto povera, che serve a comprendere quanto indifferente sia per LaTeX cosa sia veramente il contenuto di questi ambienti:

\begin{table}[htbp]
    \begin{verbatim}
                .---------------------------------------------.
                | n. | cognome  | nome          | professione |
                |----|----------|---------------|-------------|
                |  1 | Tizi     | Tizio         | tramviere   |
                |----|----------|---------------|-------------|
                |  2 | Cai      | Caio          | pasticcere  |
                |----|----------|---------------|-------------|
                |  3 | Semproni | Sempronio     | falegname   |
                `---------------------------------------------'
    \end{verbatim}
    \caption{Una tabella molto semplice}
\end{table}

citazioni

Nella sezione 447.2 sono descritti i comandi con cui si può ottenere un salto pagina. In particolare, i comandi \clearpage e \cleardoublepage si occupano anche di inserire gli oggetti fluttuanti che non fossero già stati collocati secondo i permessi attribuiti. In pratica, se degli oggetti fluttuanti non hanno ancora potuto essere collocati, questi comandi per il salto pagina forzano il loro l'inserimento nella composizione, probabilmente in una pagina a parte. Di solito, i comandi che in qualche modo implicano un salto pagina, fanno uso di questi comandi \clearpage o \cleardoublepage, proprio per chiudere anche con gli oggetti fluttuanti ancora sospesi.


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_blocchi_di_testo.htm

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

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory