[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
LaTeX evita di dare la stessa libertà che dà TeX nella gestione degli spazi e delle scatole. In questo senso, sono disponibili una serie di comandi, spesso simili tra loro, che possono creare un po' di confusione all'utilizzatore.
A proposito di spazi orizzontali, esistono ovviamente due possibilità: spazi rigidi e spazi elastici. Nel secondo caso, sono disponibili anche comandi che inseriscono puntini o linee in modo elastico, come quando si compila un indice e si vuole guidare la vista verso il numero della pagina.
| Inserisce uno spazio orizzontale rigido. Il valore dell'argomento può essere negativo; in tal caso si ottiene un arretramento. Se lo spazio inserito viene a trovarsi all'inizio di una riga, viene ignorato, a meno che sia usato l'asterisco. |
L'esempio seguente vuole mettere a confronto uno spazio normale, che viene soppresso perché si trova all'inizio di una riga, con uno spazio con asterisco, che risulta inserito in ogni caso:
1 Bla bla bla \hspace{3cm} bla bla bla... 2 Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla \hspace{5cm} bla bla bla... 3 Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla \hspace*{5cm} bla bla bla... |
|
| Inserisce uno spazio orizzontale elastico, che in condizioni normali va a riempire tutto lo spazio disponibile. |
| Inserisce uno spazio orizzontale elastico contenente dei puntini. |
| Inserisce uno spazio orizzontale elastico contenente una linea orizzontale. |
Generalmente, lo spazio orizzontale elastico si usa per allineare qualcosa al centro o a destra, come nell'esempio seguente:
\noindent sinistra\hfill centro\hfill destra\par \noindent sinistra\dotfill centro\hrulefill destra\par |
Come si vede dal risultato, questi comandi hanno tutti lo stesso grado di elasticità:
|
È importante osservare che i comandi per gli spazi elastici non funzionano se si trovano all'inizio o alla fine di una riga. Eventualmente, se è necessario, si può inserire uno spazio non interrompibile (~) primo o dopo il comando:
\noindent ~\hrulefill destra\par \noindent sinistra\dotfill ~\par |
|
I comandi per l'inserimento di spazi verticali riprendono la stessa logica di quelli orizzontali (escludendo il riempimento con puntini o linee). In generale, gli spazi rigidi sono cumulabili.
| Inserisce uno spazio verticale rigido. Se si trova all'inizio di una pagina, viene ignorato. |
| Inserisce uno spazio verticale rigido. Se si trova all'inizio di una pagina, viene inserito regolarmente. |
| Aggiunge uno spazio verticale rigido. Se nello stesso punto vengono usati più comandi \addvspace, viene preso in considerazione solo quello con la lunghezza maggiore. |
| Inserisce uno spazio verticale elastico, che in condizioni normali va a riempire tutto lo spazio disponibile. |
L'esempio seguente riguarda l'inserzione di spazi rigidi attraverso i comandi \vspace e \addvspace:
1 Bla bla bla... \vspace{0.5cm} 2 Bla bla bla... \vspace{0.5cm} \vspace{0.5cm} 3 Bla bla bla... \vspace{0.5cm} \addvspace{0.5cm} \addvspace{1.5cm} 4 Bla bla bla... |
Si può osservare che i comandi \vspace si sommano tra loro, mentre \addvspace no, limitando ad aggiungere lo spazio più grande:
|
Lo spazio verticale elastico consente di allineare il testo verticalmente, come nell'esempio seguente, in cui si individua un blocco centrale e un blocco in fondo alla pagina:
1 Sopra, bla bla bla... \vfill 2 Centro, bla bla bla... \vfill 3 Sotto, bla bla bla... \newpage |
|
Per l'uniformità della veste grafica del testo, è importante standardizzare gli spazi verticali, attraverso dei comandi appositi, che cambiano a seconda dello stile generale:
| spazio piccolo; |
| spazio medio; |
| spazio grande. |
L'entità dello spazi verticale introdotto da questi comandi dipende da altri comandi:
| lunghezza piccola; |
| lunghezza media; |
| lunghezza grande. |
In pratica, i comandi per l'inserzione di spazi verticali standard corrispondono all'uso di \vskip con queste lunghezze uniformi:
L'esempio seguente mostra in pratica l'uso di questi comandi per l'inserzione di spazi verticali standard:
Bla bla bla...\bigskip Lo spazio prima di questa riga è grande;\medskip lo spazio prima di questa riga è medio;\smallskip lo spazio prima di questa riga è piccolo; lo spazio prima di questa riga è quello normale. |
|
È possibile definire in modo semplice una lunghezza elastica da usare poi con comandi come \hspace e \vspace:
| restituisce una lunghezza elastica pari a n. |
Maggiore è il valore attribuito all'argomento di \stretch, maggiore è di conseguenza l'elasticità. A titolo si esempio si può vedere come si trasforma questo comando:
La distanza tra le righe di un blocco di testo normale si può controllare modificando la lunghezza \baselineskip; tuttavia, con l'aiuto del pacchetto setspace, si possono usare comandi che semplificano questo tipo di intervento:
| dichiara l'utilizzo del pacchetto necessario alla gestione dei comandi sottostanti; |
| richiede un'interlinea normale; |
| richiede un'interlinea maggiore; |
| richiede un'interlinea doppia. |
L'esempio seguente mostra l'uso e l'effetto di questi comandi:
... \usepackage{setspace} ... \begin{document} \singlespacing Questo paragrafo ha un'interlinea normale. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla... \onehalfspacing Questo paragrafo ha un'interlinea pari a una volta e mezza quella normale. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla... \doublespacing Questo paragrafo ha un'interlinea doppia. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla... \end{document} |
|
Anche senza il pacchetto setspace, si può usare nel preambolo il comando seguente:
| moltiplica la distanza tra le righe del fattore indicato. |
Per esempio, così:
... \linespread{2.5} ... \begin{document} La distanza tra le righe è di due volte e mezza quella normale. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla... \end{document} |
|
LaTeX offre una serie di comandi per la realizzazione di scatole, bordate e non, alcuni dei quali sono già apparsi in altri capitoli. Oltre alla presenza del bordo, le scatole si distinguono per la capacità o meno di rimpaginano il testo al loro interno.
|
| Inserisce il testo in una scatola larga quanto il testo stesso; nel secondo caso si ottiene una scatola bordata. |
|
| Inserisce il testo (di una sola riga) in una scatola; nel secondo caso si ottiene una scatola bordata. |
Quelli appena mostrati sono i comandi più comuni per ottenere delle scatole, in cui il testo occupa sempre una riga. Si può intuire che i comandi \makebox e \framebox, usati senza argomenti opzionali, sono equivalenti rispettivamente a \mbox e \fbox. Il secondo argomento opzionale di \makebox e \framebox è una lettera che indica l'allineamento orizzontale che deve avere il testo contenuto:
| testo centrato orizzontalmente nella scatola; |
| testo allineato a sinistra; |
| testo allineato a destra; |
| testo allargato per tutta l'ampiezza della scatola. |
L'esempio seguente dovrebbe chiarire l'utilizzo di questi comandi:
Bla bla bla \mbox{ciao ciao} bla bla bla \fbox{ciao ciao} bla bla bla... Bla bla bla \makebox{ciao ciao} bla bla bla \framebox{ciao ciao} bla bla bla... Bla bla bla \makebox[4cm]{ciao ciao} bla bla bla \framebox[4cm]{ciao ciao} bla bla bla... Bla bla bla \makebox[4cm][c]{ciao ciao} bla bla bla \framebox[4cm][c]{ciao ciao} bla bla bla... Bla bla bla \makebox[4cm][l]{ciao ciao} bla bla bla \framebox[4cm][l]{ciao ciao} bla bla bla... Bla bla bla \makebox[4cm][r]{ciao ciao} bla bla bla \framebox[4cm][r]{ciao ciao} bla bla bla... Bla bla bla \makebox[4cm][s]{ciao ciao} bla bla bla \framebox[4cm][s]{ciao ciao} bla bla bla... |
|
Le scatole bordate con \fbox e \framebox sono controllate da due dimensioni, molto utili per controllarne l'estetica:
| definisce lo spessore della linea usata per il bordo; |
| definisce la distanza tra la linea del bordo e il contenuto della scatola. |
L'esempio seguente dovrebbe chiarire in che modo usare questi valori per controllare le scatole bordate:
\fbox{scatola bordata normale} {\fboxrule=3mm\fbox{scatola con bordo più spesso}} \fbox{scatola bordata normale} {\fboxsep=3mm\fbox{scatola più spaziosa}} \fbox{scatola bordata normale} {\fboxrule=3mm\fboxsep=3mm\fbox{scatola spaziosa con bordo spesso}} |
Si può osservare che le scatole «speciali» sono state racchiuse tra parentesi graffe, per evitare che la modifica delle caratteristiche legate allo spessore della linea e alla distanza dal contenuto, potessero coinvolgere il resto del testo. L'alternanza con scatole normali dimostra il funzionamento di questo sistema di contenimento:
|
Per inserire in una scatola più di una riga di testo, si possono usare due tipi di istruzioni, ottenendo risultati leggermente differenti:
| definisce una scatola, senza bordo, per contenere del testo impaginato nell'ambito della larghezza stabilita; |
| definisce una scatola, senza bordo, per contenere del testo impaginato nell'ambito della larghezza stabilita. |
La differenza più importante tra questi due tipi di scatole sta nel fatto che \parbox consente l'inserimento di testo non troppo complesso, mentre l'ambiente minipage è letteralmente una piccola pagina, in cui anche le note a piè pagina rimangono al suo interno.
In entrambi i casi, il primo argomento opzionale indica la collocazione della scatola, in senso verticale, rispetto alla base della riga in cui ci si trova; pertanto:
| richiede una scatola centrata verticalmente rispetto alla riga; |
| richiede una scatola che parte dalla riga e si espande in basso; |
| richiede una scatola che parte dalla riga e si espande in alto. |
L'esempio seguente consente di confrontare il comportamento dei due tipi di scatole per ciò che riguarda l'allineamento di queste rispetto alla riga. Per facilitare il paragone visivo, queste scatole vengono bordate attraverso il comando \fbox:
Bla bla bla bla bla... Bla bla \fbox{\parbox{2cm}{Questa frase è in una scatola}} bla \fbox{\parbox[c]{2cm}{Questa frase è in una scatola}} bla \fbox{\parbox[t]{2cm}{Questa frase è in una scatola}} bla \fbox{\parbox[b]{2cm}{Questa frase è in una scatola}} bla bla. Bla bla bla bla bla... Bla bla \fbox{\begin{minipage}{2cm}Questa frase è in una scatola\end{minipage}} bla \fbox{\begin{minipage}[c]{2cm}Questa frase è in una scatola\end{minipage}} bla \fbox{\begin{minipage}[t]{2cm}Questa frase è in una scatola\end{minipage}} bla \fbox{\begin{minipage}[b]{2cm}Questa frase è in una scatola\end{minipage}} bla bla. Bla bla bla bla bla... |
Come si vede dal risultato della composizione, per il momento non si notano differenze:
|
Dalla sintassi mostrata a proposito di \parbox, si nota la possibilità di indicare l'altezza della scatola, assieme a un terzo argomento opzionale che serve a collocare il testo nella scatola:
| testo centrato verticalmente nella scatola; |
| testo in alto; |
| testo in basso; |
| testo allungato per tutta l'altezza della scatola. |
L'esempio seguente riguarda esclusivamente \parbox, per mostrare l'uso dei due ulteriori argomenti opzionali:
Bla bla bla bla bla... Bla bla bla \fbox{\parbox[c][2cm]{2cm}{Questa frase è in una scatola}} \fbox{\parbox[c][2cm][c]{2cm}{Questa frase è in una scatola}} \fbox{\parbox[c][2cm][t]{2cm}{Questa frase è in una scatola}} \fbox{\parbox[c][2cm][b]{2cm}{Questa frase è in una scatola}} \fbox{\parbox[c][2cm][s]{2cm}{Questa frase è in una scatola}} Bla bla bla bla bla... |
Si può osservare che nell'ultima scatola, l'opzione di allungamento verticale del testo non funziona, perché il testo non possiede spazi elastici:
|
LaTeX ha una capacità limitata di memorizzare del testo in modo da poterlo inserire successivamente nella composizione:
| accumula nel registro n il testo indicato; |
| inserisce nella composizione il testo corrispondente al registro n, in una scatola orizzontale. |
La spiegazione dei due modelli sintattici dovrebbe essere sufficiente a comprendere il funzionamento della cosa; tuttavia è importante sottolineare che il testo accumulato può essere composto da una sola riga e verrà rappresentato come se fosse inserito in una scatola \mbox. Viene mostrato un esempio:
\begin{lrbox}{1} ciao a tutti \end{lrbox} \begin{lrbox}{2} ma che bello \end{lrbox} Bla bla bla \usebox{2} bla bla bla \usebox{1} bla bla bla \usebox{2} bla bla bla \usebox{1} bla bla bla... |
|
Con LaTeX, si ottengono linee orizzontali o verticali con il comando \rule. Per la precisione, si disegnano dei rettangoli neri di ampiezza e altezza stabiliti; pertanto, per ottenere una linea orizzontale si utilizza un rettangolo molto largo e molto basso, mentre per una linea verticale si usa un rettangolo molto stretto. Questi rettangoli sono collocati a loro volta nella parte superiore di una scatola, che in condizioni normali è alta quanto basta per contenere l'oggetto.
\rule{larghezza}{altezza}
\rule[spazio_verticale_aggiuntivo]{larghezza}{altezza}
L'esempio seguente riguarda la realizzazione di alcune linee, verticali e orizzontali, senza spazi verticali aggiuntivi:
Bla bla bla... Bla bla bla \rule{0.5mm}{1cm} \rule{0.6mm}{1cm} \rule{0.7mm}{1cm} \rule{0.8mm}{1cm} \rule{0.9mm}{1cm} \rule{1mm}{1cm} bla bla bla... \rule{\textwidth}{0.5mm} \rule{\textwidth}{0.6mm} \rule{\textwidth}{0.7mm} \rule{\textwidth}{0.8mm} \rule{\textwidth}{0.9mm} \rule{\textwidth}{1mm} Bla bla bla... |
|
L'esempio seguente è una variante con l'aggiunta di spazi verticali aggiuntivi:
Bla bla bla... Bla bla bla \rule[1mm]{0.5mm}{1cm} \rule[2mm]{0.6mm}{1cm} \rule[3mm]{0.7mm}{1cm} \rule[4mm]{0.8mm}{1cm} \rule[5mm]{0.9mm}{1cm} \rule[6mm]{1mm}{1cm} bla bla bla... \rule[1mm]{\textwidth}{0.5mm} \rule[2mm]{\textwidth}{0.6mm} \rule[3mm]{\textwidth}{0.7mm} \rule[4mm]{\textwidth}{0.8mm} \rule[5mm]{\textwidth}{0.9mm} \rule[6mm]{\textwidth}{1mm} Bla bla bla... |
|
daniele @ swlibero.org
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome latex_spazi_e_scatole.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]