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


Capitolo 432.   TeX: la pagina

In condizioni normali, la pagina a cui si fa riferimento con TeX è il tipo Lettera, che è largo 8,5 pollici ed è alto 11 pollici. Nell'ambito di questo spazio, il testo occupa normalmente un rettangolo di 6,5 pollici per 8,9 pollici, con un margine uguale di un pollice (salvo il margine inferiore che è di 1,1 pollici).

Al di sopra e al di sotto di questo rettangolo è possibile collocare una riga, con lo scopo normale di indicare il nome della sezione o il numero della pagina. In condizioni normali, in basso appare proprio il numero della pagina, che può anche essere fatto sparire con l'istruzione \nopagenumbers.

Le dimensioni della pagina possono essere modificate, ma non si fa riferimento a una pagina e ai suoi margini; si interviene piuttosto sulla posizione di partenza, sulla larghezza (ovvero la giustezza) e sull'altezza dello spazio a disposizione dei paragrafi.

432.1   La parte centrale della pagina

La parte centrale della pagina è controllata da quattro variabili, rappresentate dalle parole di controllo \hoffset, \voffset, \hsize e \vsize, che controllano rispettivamente le coordinate iniziali, la giustezza e l'altezza dell'area di scrittura.

Tabella 432.1. Parole di controllo che regolano le dimensioni e la collocazione dell'area di scrittura centrale nella pagina.

Parola di controllo Competenza Valore predefinito
\hoffset
Posizione orizzontale iniziale 0
\voffset
Posizione verticale iniziale 0
\hsize
Giustezza, a partire da \voffset 6,5 pollici
\vsize
Altezza, a partire da \hoffset 8,9 pollici

È importante osservare che le coordinate zero di \hoffset e \voffset rappresentano un punto in alto a sinistra del foglio, collocato a destra e in basso di un pollice rispetto all'angolo superiore sinistro del foglio stesso. In pratica, per indicare valori inferiori del margine superiore e di quello sinistro, si devono attribuire a queste parole di controllo dei valori negativi.

Figura 432.2. Area del testo nella pagina.

area del testo nella pagina

L'esempio seguente consente di verificare il valore predefinito che viene restituito da queste parole di controllo:

$\backslash$hoffset = \the\hoffset \par
$\backslash$voffset = \the\voffset \par
$\backslash$hsize = \the\hsize \par
$\backslash$vsize = \the\vsize \par

dimensioni predefinite della pagina

I valori vengono mostrati in punti, ma si verifica facilmente la corrispondenza con quanto mostrato nella tabella 432.1.

È importante sottolineare che le coordinate di partenza rappresentano l'angolo superiore sinistro dell'area in cui si inserisce il testo; pertanto, l'altezza espressa dalla parola di controllo \vsize, si sviluppa in basso, a partire da quel punto.

Il testo che si scrive nel sorgente TeX parte dalle coordinate iniziali e, salvo l'uso di comandi appositi, viene impaginato automaticamente; quando lo spazio verticale viene esaurito, si passa automaticamente a un'altra pagina.

È importante sottolineare che le modifiche apportate alle coordinate iniziali e all'altezza del testo della pagina hanno effetto a partire dalla pagina corrente; inoltre, se i valori vengono cambiati più volte, contano le ultime modifiche che si possono ricondurre alla pagina corrente. Fa eccezione a questa regola la giustezza del testo, controllata dalla parola di controllo \hsize, che può essere modificata in qualunque momento, intervenendo a partire dal paragrafo in cui appare, senza coinvolgere il testo precedente nella stessa pagina.

Eventualmente, se prima di scrivere alcunché, si colloca un'istruzione come quella seguente,

\magnification=n

si ottiene un ingrandimento o una riduzione di tutte le dimensioni, compreso il corpo dei caratteri. In pratica, il numero n che si assegna a \magnification è un valore che esprime la riduzione o l'ingrandimento in rapporto a 1 000, come già avveniva con il ridimensionamento dei caratteri da stampa. In questo senso, al posto del numero si può usare anche la parola di controllo \magstep, come è già stato mostrato in precedenza:

\magnification=\magstep n

In questo caso, n esprime un valore intero, da zero a cinque.

La definizione di un ingrandimento o di una riduzione ha effetto su tutti i comandi che definiscono una dimensione; per esempio, se si usa un ingrandimento di 2 000, pari al doppio, volendo indicare una dimensione di un centimetro, si ottengono in pratica due centimetri.

Quando si intende indicare una lunghezza esatta, che non possa essere ridimensionata, si usa la parola chiave true davanti all'unità di misura. Per esempio, 5cm è una lunghezza adattabile, mentre 5truecm, oppure 5 true cm, indica sempre cinque centimetri.

In condizioni normali, TeX cerca di occupare tutto lo spazio orizzontale e tutto lo spazio verticale, giustificando orizzontalmente e verticalmente (ovvero allineando simultaneamente a sinistra e a destra, in alto e in basso). In particolare, l'allineamento verticale del testo viene controllato da due parole di controllo: \normalbottom e \raggedbottom. Nel primo caso si ha la situazione «normale», ovvero l'allungamento del testo in modo da completare lo spazio verticale di ogni pagina, mentre nel secondo caso questo allungamento non ha luogo.

TeX mette a disposizione un'istruzione per il salto pagina anticipato che si ottiene con la parola di controllo \eject. Quando l'impaginazione è quella normale, ovvero quella corrispondente alla parola di controllo \normalbottom, l'inserimento di un salto pagina costringe TeX a fare in modo che il testo esistente, per quanto breve possa essere, finisca esattamente alla fine di \vsize. Per evitare di ottenere degli allungamenti sgradevoli del testo, pur senza disabilitare globalmente la funzionalità di allineamento verticale, si può usare un comando per l'inserimento di uno spazio verticale allungabile in modo indefinito, che si ottiene con la parola di controllo \vfill. Pertanto, quando si vuole inserire un salto pagina si usa generalmente un'istruzione composta da entrambe le parole di controllo, come nell'esempio seguente:

\vfill \eject

Inizialmente è stato indicato l'uso dell'istruzione \bye per concludere un sorgente TeX. In realtà, \bye è una macro realizzata per concludere bene un testo, in cui si utilizza anche \vfill per non allungare il contenuto della pagina stessa. L'istruzione primitiva per concludere il documento è invece \end.

Anche \eject è una macro, che utilizza in pratica \break, dopo un passaggio in modalità verticale, in modo da dare a \break il contesto corretto.

Eventualmente, esiste anche un'altra macro, oltre a \eject, il cui scopo è quello di garantire il salto pagina in ogni circostanza. Si tratta di \supereject.

432.2   Intestazione e fondo pagina

Oltre alla parte centrale della pagina, è possibile accedere a una riga di intestazione e a una riga alla base della pagina, che appaiono rispettivamente sullo spazio del margine superiore e del margine inferiore. Queste righe vengono annotate in due variabili apposite, a cui si accede con le parole di controllo \headline e \footline:

\headline={intestazione}
\footline={fondo_pagina}

In condizioni normali, la variabile che contiene la riga di fondo pagina è già impostata con l'espressione \folio\pageno, con la quale si estrae dal contatore \pageno il valore corrispondente al numero di pagina. Inoltre, per eliminare il fondo pagina predefinito in questo modo, si utilizza normalmente la parola di controllo \nopagenumbers, come sinonimo di azzeramento, al posto di scrivere \footline={}.

Il testo che viene associato all'intestazione e al fondo pagina, risulta allineato a destra e a sinistra, simultaneamente. Tuttavia, attraverso l'uso della parola di controllo \hfil, si riescono a ottenere degli effetti utili di allineamento. La parola di controllo \hfil ha la proprietà di inserire uno spazio allungabile, ma può essere utilizzata più volte, suddividendo equamente lo spazio della riga. Per esempio, scrivendo

\headline={sinistra \hfil centro \hfil destra}

si ottiene la suddivisione che si può vedere qui sotto:

allineamento

Quando si distingue tra pagine destre e sinistre, si può usare la struttura condizionale comandata dalla parola di controllo \ifodd per modificare l'aspetto delle intestazioni o dei fondo pagina. Nell'esempio seguente si vuole mettere il numero della pagina nell'intestazione, facendo in modo che appaia verso l'estremità esterna della pagina:

\headline={%
\ifodd \pageno
    {bla bla bla \hfil \the\pageno}
\else
    {\the\pageno \hfil bla bla bla}
\fi}

Nell'esempio vengono racchiuse le due alternative tra parentesi graffe, perché altrimenti \pageno creerebbe dei problemi con la prima ipotesi. Non sarebbe necessario il raggruppamento della seconda alternativa, ma qui lo si fa per motivi «estetici».

L'espressione dell'intestazione o del fondo pagina, viene espansa ogni volta, nel momento in cui serve. Tuttavia, in questo modo, le impostazioni riferite al carattere da stampa usato nel testo normale potrebbero influenzare l'aspetto di queste righe. Per sicurezza, conviene completare la definizione di intestazione e fondo pagina con l'indicazione del carattere da stampa, completo dell'informazione sulla sua dimensione, come nell'esempio seguente, in cui si richiede espressamente un carattere inclinato di 10 punti:

\headline={\tensl Questa \`e una bella intestazione}

432.3   Numerazione delle pagine

La numerazione delle pagine avviene in modo automatico, attraverso la gestione del contatore \pageno. In condizioni normali, la prima pagina ha il numero uno e a ogni salto pagina si ha un incremento di questo valore.

L'impostazione predefinita della riga che appare a fondo pagina, è tale per cui se il contatore contiene un valore positivo, si mostra un numero arabo normale, mentre se il valore è negativo, si mostra la pagina in numero romano. Per la precisione, ciò si ottiene attraverso la parola di controllo \folio che, senza bisogno di trasformazioni, restituisce il numero della pagina secondo questa convenzione.

In particolare, se il contatore \pageno contiene un valore positivo, ogni salto pagina continua a incrementarlo, mentre se ha un valore negativo, si ottiene un decremento, proprio in base alla logica della riga di fondo pagina predefinita.

Nel momento in cui si intende gestire il numero della pagina che appare nel fondo pagina, o nella riga di intestazione, non ha più importanza questa convenzione sul segno positivo o negativo; quello che conta è reinizializzare il contatore quando serve.

Il vero problema che si pone è quello di rappresentare le pagine attraverso numeri romani con lettere maiuscole. L'esempio seguente mostra la macro \Roman realizzata per ottenere la trasformazione in numero romano maiuscolo del suo argomento:

\def\Roman#1{\uppercase\expandafter{\romannumeral #1}}

La macro va usata ovviamente così:

\Roman{n}

432.4   Note a piè di pagina

Le note a piè di pagina sono gestite automaticamente attraverso la macro standard \footnote, inserendole alla base della pagina, entro lo spazio stabilito da \vsize.

\footnote{simbolo}{testo_della_nota}

In pratica, la nota viene inserita nel testo, nel punto in cui si vuole che appaia il simbolo definito come primo parametro, poi la composizione colloca la nota dove più appropriato, preceduta sempre dallo stesso simbolo di riferimento.

Il simbolo usato per fare riferimento alla nota può essere scelto liberamente, tenendo conto che TeX non fa nulla per adattarlo. Pertanto, se l'intenzione è quella di usare il classico numero ad apice, occorre provvedere esplicitamente a sollevarlo, come nell'esempio seguente:

Bla bla\footnote{$^1$}{Questa è la mia prima nota a piè pagina.} bla bla...

Generalmente, si numerano le note a piè pagina, ma TeX non offre un meccanismo automatico di numerazione. Tuttavia è facile rimediare attraverso la definizione di un contatore apposito:

\newcount\nota
\nota=0
\def\annotazione#1{\advance\nota by 1 \footnote{$^{\number\nota}$}{#1}}

Successivamente, invece di usare direttamente \footnote, si può inserire la macro \annotazione, che provvede da sola a incrementare il contatore \nota, inserendo il numero corrispondente come apice. Eventualmente, quando si comincia con una sezione importante, che parte da una pagina nuova, può essere conveniente riazzerare il conteggio.

L'esempio mostrato però non è completo. Infatti, la macro \annotazione potrebbe essere inserita per qualche ragione in un gruppo isolato, per cui, l'incremento del contatore della pagina verrebbe perduto; inoltre, il tipo di carattere usato per le note viene ereditato dal punto in cui si trova l'inserimento. Per ovviare a questi inconvenienti, si può modificare la macro \annotazione nel modo seguente:

\def\annotazione#1{\global\advance\nota by 1
\footnote{$^{\number\nota}$}{\sevenrm #1}}

In questo modo, l'incremento del contatore diventa globale e si fissa il carattere da usare per le note in un tondo normale con un corpo da sette punti.

432.5   Oggetti fluttuanti

Nell'ambito del testo è possibile individuare delle zone che devono rimanere unite, nel senso che non possono apparire separate tra una pagina e la successiva, per cui si stabilisce una collocazione che non segue il flusso normale del testo. Questi ambienti sono introdotti da una parola di controllo particolare:

\midinsert
testo_e_altre_istruzioni
...
\endinsert
\topinsert
testo_e_altre_istruzioni
...
\endinsert
\pageinsert
testo_e_altre_istruzioni
...
\endinsert

Nel primo caso, quanto contenuto tra \midinsert e \endinsert viene collocato nella posizione in cui appare, se c'è lo spazio verticale sufficiente nella pagina, altrimenti viene spostato all'inizio della pagina successiva, lasciando che il testo che seguirebbe venga anticipato al suo posto nella pagina che termina.

Nel secondo caso, quanto contenuto tra \topinsert e \endinsert viene collocato all'inizio della pagina in cui si trova, anticipando eventualmente del testo che lo precede.

Nel terzo caso, quanto contenuto tra \pageinsert e \endinsert viene collocato in una pagina indipendente, che non può contenere altro.

Questi ambienti, eventualmente con l'uso di spazi verticali, permettono comunemente di riservare degli spazi per le figure.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


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

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

Valid ISO-HTML!

CSS validator!