successivo
precedente
inizio
fine
indice generale
aiuto
indice analitico
volume
TXT
HTML
PDF
pdf
gdoc
P4
Capitolo 50. LaTeX
$
50.13.1
$$
50.13.1
&
50.11.2
array
50.13.7
center
50.8.2
chapter
50.4.2
displaymath
50.13.1
document
50.1.5
enumerate
50.8.3
enumi
50.8.3
enumii
50.8.3
enumiii
50.8.3
enumiv
50.8.3
equation
50.4.2 50.13.1
figure
50.4.2 50.8.7
flushleft
50.8.2
flushright
50.8.2
footnote
50.4.2 50.6.5
itemize
50.8.3
list
50.8.3
longtable
50.11.3
lrbox
50.9.6
makeindex
50.10.3
math
50.13.1
page
50.4.2 50.6.4
paragraph
50.4.2
part
50.4.2
picture
50.12.1
quotation
50.8.4
quote
50.8.4
section
50.4.2
subparagraph
50.4.2
subsection
50.4.2
subsubsection
50.4.2
tabbing
50.11.1
table
50.4.2 50.8.7 50.8.7
tabular
50.11.2
thebibliography
50.10.4
verbatim
50.8.6
verse
50.8.5
\#
50.7.1
\$
50.7.1
\%
50.7.1
\&
50.7.1
\>
50.11.1
\(
50.13.1
\)
50.13.1
\=
50.11.1
\above
50.13.6
\addcontentsline
50.10.1
\addtocontents
50.10.1
\addtocounter
50.4.2
\addtolength
50.4.1
\addvspace
50.9.2
\Alph
50.4.2
\alph
50.4.2
\appendix
50.1.5 50.5.4
\arabic
50.4.2
\atop
50.13.6
\author
50.1.5 50.5.2
\baselineskip
50.8.1
\begin{document}
50.5.3
\bfseries
50.7.3
\bibitem
50.10.4
\big
50.13.4
\Big
50.13.4
\bigg
50.13.4
\Bigg
50.13.4
\Biggl
50.13.4
\biggl
50.13.4
\Biggr
50.13.4
\biggr
50.13.4
\Bigl
50.13.4
\bigl
50.13.4
\Bigr
50.13.4
\bigr
50.13.4
\bigskip
50.9.2
\bigskipamount
50.9.2
\caption
50.8.7
\centerline
50.8.2
\chapter
50.1.5 50.5.4
\choose
50.13.6
\circle
50.12.1
\cite
50.10.4
\cleardoublepage
50.6.2 50.8.7
\clearpage
50.6.2 50.8.7
\cline
50.11.2
\closeout
50.14.3
\dashbox
50.12.1
\date
50.1.5 50.5.2
\displaystyle
50.13.5
\documentclass
50.1.5 50.5.1
\dotfill
50.9.1
\doublespacing
50.9.4
\emph
50.7.3.1
\endfoot
50.11.3
\endhead
50.11.3
\end{document}
50.5.3
\epsfig
50.12.2
\evensidemargin
50.6.1
\fbox
50.7.5 50.9.5
\fboxrule
50.9.5
\fboxsep
50.9.5
\flushbottom
50.6.2
\fnsymbol
50.4.2
\fontencoding
50.7.4
\fontfamily
50.7.4
\fontseries
50.7.4
\fontshape
50.7.4
\fontsize
50.7.3 50.7.4
\footnote
50.6.5
\footnotemark
50.6.5
\footnotesize
50.7.2
\footnotetext
50.6.5
\footskip
50.6.1
\frac
50.13.6
\frame
50.7.5 50.12.1
\framebox
50.9.5
\frenchspacing
50.3.4 50.3.6
\headheight
50.6.1
\headsep
50.6.1
\hfill
50.9.1
\hline
50.11.2 50.13.7
\hoffset
50.6.1
\hrulefill
50.9.1
\hspace
50.9.1
\Huge
50.7.2
\huge
50.7.2
\hyphenation
50.6.6
\immediate
50.14.3
\include
50.14.1
\includegraphics
50.12.2
\includeonly
50.14.1
\indent
50.8.1
\index
50.10.3
\input
50.14.1
\item
50.8.3
\itemsep
50.8.3
\itshape
50.7.3
\jobname
50.14.3
\kill
50.11.1
\label
50.10.2
\labelitemi
50.8.3
\labelitemii
50.8.3
\labelitemiii
50.8.3
\labelitemiv
50.8.3
\LARGE
50.7.2
\Large
50.7.2
\large
50.7.2
\leftskip
50.8.1
\line
50.12.1
\linebreak
50.6.2
\linespread
50.9.4
\linethickness
50.12.1
\linewidth
50.8.1
\listoffigures
50.8.7 50.10.1
\listoftables
50.8.7 50.10.1
\makebox
50.9.5 50.12.1
\makeindex
50.10.3
\maketitle
50.1.5 50.5.3
\markboth
50.6.3
\markright
50.6.3
\mathbf
50.7.3
\mathcal
50.7.3
\mathit
50.7.3
\mathrm
50.7.3
\mathsf
50.7.3
\mathtt
50.7.3
\mbox
50.6.6 50.9.5
\medskip
50.9.2
\medskipamount
50.9.2
\minipage
50.9.5
\newcommand
50.2.1
\newcounter
50.4.2
\newenvironment
50.2.1
\newlength
50.4.1
\newline
50.6.2
\newpage
50.6.2
\newtheorem
50.13.8
\newwrite
50.14.3
\noindent
50.8.1
\nopagebreak
50.6.2
\normalfont
50.7.3
\normalsize
50.7.2
\numberline
50.10.1
\oddsidemargin
50.6.1
\onecolumn
50.6.2
\onehalfspacing
50.9.4
\openout
50.14.3
\oval
50.12.1
\over
50.13.6
\overbrace
50.13.4
\overline
50.7.5 50.13.4
\pagebreak
50.6.2
\pagenumbering
50.6.4
\pageref
50.10.2
\pagestyle
50.6.3
\paperheight
50.6.1
\paperwidth
50.6.1
\par
50.8
\paragraph
50.1.5 50.5.4
\parbox
50.9.5 50.11.1
\parindent
50.8.1
\parskip
50.8.1
\part
50.1.5 50.5.4
\poptabs
50.11.1
\printindex
50.10.3
\pushtabs
50.11.1
\put
50.12.1
\raggedbottom
50.6.2
\raggedleft
50.8.2
\raggedright
50.8.2
\raisebox
50.7.6
\ref
50.10.2
\refstepcounter
50.4.2
\renewcommand
50.2.1
\renewenvironment
50.2.1
\rightskip
50.8.1
\rmfamily
50.7.3
\roman
50.4.2
\Roman
50.4.2
\rule
50.9.7
\samepage
50.6.2
\scriptscriptstyle
50.13.5
\scriptsize
50.7.2
\scriptstyle
50.13.5
\scshape
50.7.3
\section
50.1.5 50.5.4
\selectfont
50.7.3 50.7.4
\setcounter
50.4.2
\setlength
50.4.1
\settodepth
50.4.1
\settoheight
50.4.1
\settowidth
50.4.1
\sffamily
50.7.3
\singlespacing
50.9.4
\slshape
50.7.3
\small
50.7.2
\smallskip
50.9.2
\smallskipamount
50.9.2
\sqrt
50.13.6
\stackrel
50.13.6
\stepcounter
50.4.2
\stretch
50.9.3
\string
50.14.3
\subparagraph
50.1.5 50.5.4
\subsection
50.1.5 50.5.4
\subsubsection
50.1.5
\tableofcontents
50.1.5 50.5.3 50.10.1
\textasciicircum
50.7.1
\textasciitilde
50.7.1
\textbackslash
50.7.1
\textbf
50.7.3
\textheight
50.6.1
\textit
50.7.3
\textnormal
50.7.3
\textrm
50.7.3
\textsc
50.7.3 50.7.3
\textsf
50.7.3
\textsl
50.7.3
\textstyle
50.13.5
\texttt
50.7.3
\textup
50.7.3
\textwidth
50.6.1
\thanks
50.5.2
\the
50.4 50.4.2
\theenumi
50.8.3
\theenumii
50.8.3
\theenumiii
50.8.3
\theenumiv
50.8.3
\thispagestyle
50.6.3
\tiny
50.7.2
\title
50.1.5 50.5.2
\topmargin
50.6.1
\ttfamily
50.7.3
\twocolumn
50.6.2
\underbrace
50.13.4
\underline
50.7.5 50.13.4
\unitlength
50.12.1
\upshape
50.7.3
\usebox
50.9.6
\usefont
50.7.4
\usepackage
50.1.5
\usepackage[italian]{babel}
50.3.1 50.3.6
\usepackage[T1]{fontenc}
50.3.5 50.3.6
\usepackage[utf8x]{inputenc}
50.3.5 50.3.6
\usepackage{float}
50.8.7
\usepackage{latexsym}
50.13.3
\usepackage{longtable}
50.11.3
\usepackage{makeidx}
50.10.3
\usepackage{setspace}
50.9.4
\usepackage{verbatim}
50.14.2
\value
50.4.2
\vector
50.12.1
\verb
50.8.6
\verbatiminput
50.14.2
\vfill
50.6.2 50.9.2
\voffset
50.6.1
\vspace
50.9.2
\write
50.14.3
\[
50.13.1
\\
50.11.1 50.11.2
\]
50.13.1
\_
50.7.1
\{
50.7.1
\}
50.7.1
^
50.13.6
_
50.13.6
50.1
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 49.1.3. Pertanto, di solito si ottiene la composizione di un sorgente TeX scritto usando macro LaTeX attraverso il comando seguente:
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.
|
50.1.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:
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:
Oppure:
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.
50.1.2
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.
-
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 (serve a creare una macro di LaTeX), 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.
50.1.3
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 49.1.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 50.11. La conversione del file DVI in qualcosa di più conveniente, è descritta nella sezione 26.3.
Figura 50.11. Il risultato della composizione del sorgente LaTeX di esempio.
|
50.1.4
Sopravvivere nel caos
Nella sezione 49.1 è descritto 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 superato 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.
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.
|
50.1.5
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
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[utf8x]{inputenc}
\usepackage[T1]{fontenc}
|
|
L'esempio mostra l'inclusione del pacchetto inputenc allo scopo di ammettere la codifica dei caratteri UTF-8 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.
50.1.6
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]
|
50.2
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.
50.2.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.
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.
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.
50.2.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/
.
50.3
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.
50.3.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}
|
|
50.3.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 TeX, descritto nella sezione 49.1.
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.
50.3.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):
50.3.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 la sezione 49.12 a questo proposito).
50.3.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 UTF-8 nel sorgente:
\usepackage[utf8x]{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 dell'insieme di caratteri T1 è necessario se si vuole scrivere un documento che nel sorgente fa uso delle lettere accentate delle lingue europee occidentali.
La selezione dell'insieme di caratteri TeX avviene attraverso il caricamento del pacchetto fontenc, indicando come opzione la sigla dell'insieme desiderato.
L'esempio mostra il caricamento dell'insieme di caratteri T1, che è quello che dovrebbe essere utilizzato nella maggior parte dei casi.
50.3.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[utf8x]{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; la codifica del sorgente è UTF-8, avendo richiesto l'insieme di caratteri tipografici 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.
|
50.4
Variabili e tipi di dati
Nella sezione 49.3 è 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.
50.4.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 50.45. Dimensioni di una scatola.
|
50.4.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 seguente, assegnandogli implicitamente il valore iniziale zero:
Al contatore è possibile assegnare esplicitamente un valore:
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:
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:
Per quanto riguarda l'uso di \refstepcounter, le cose si complicano e richiedono la conoscenza dei comandi \label e \ref (sezione 50.10). 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:
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
|
|
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. |
|
50.5
Struttura del documento
LaTeX semplifica la scrittura di un documento, rispetto al linguaggio TeX puro e semplice, ma per questo richiede l'uso di una struttura particolare nel sorgente.
50.5.1
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:
Classe | Descrizione |
slides
| rappresenta una sequenza di diapositive (presentazioni). |
letter
| rappresenta una lettera vera e propria, dove non si ammette la separazione del testo in sezioni; |
article
| corrispondente a un documento senza tante pretese, ma ugualmente strutturato, che può ammettere la suddivisione in parti e sezioni (sono esclusi i capitoli); |
report
| corrispondente a un documento strutturato in parti e capitoli, inteso come una relazione; |
book
| permette di realizzare un libro suddiviso in parti e capitoli, ma a differenza della classe report, le parti e i capitoli iniziano su pagine dispari (destre); |
|
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:
Opzione | Descrizione |
10pt
| il testo normale usa caratteri con un corpo di 10 punti (predefinito); |
11pt
| il testo normale usa caratteri con un corpo di 11 punti; |
12pt
| il testo normale usa caratteri con un corpo di 12 punti. |
|
Dimensione del foglio:
Opzione | Descrizione |
a4paper
| formato A4; |
a5paper
| formato A5; |
b5paper
| formato B5; |
letterpaper
| formato Lettera (8,5 in × 11 in); |
legalpaper
| formato Legal (8,5 in × 14 in); |
executivepaper
| formato Executive (7,25 in × 10,5 in);. |
|
Altre caratteristiche:
Opzione | Descrizione |
portrait
| orientamento verticale della pagina (predefinito); |
landscape
| orientamento orizzontale della pagina; |
draft
| bozza, evidenzia con una riga verticale il testo che non rispetta i bordi; |
final
| versione finale, senza segnalazioni sul debordamento del testo (predefinito); |
twocolumn
| divide il corpo in due colonne. |
|
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
definisce l'uso della classe book, senza opzioni, che così viene impostata in modo predefinito.
50.5.2
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. In questo spazio si possono inserire dei comandi di LaTeX, ma non del testo da comporre. In particolare si inseriscono qui le dichiarazioni di stili aggiuntivi da incorporare, con il comando \usepackage:
\usepackage[opzioni]{pacchetto}
|
Un gruppo abbastanza comune di comandi che di norma vengono inseriti nel preambolo, è quello con cui si definiscono i dati necessari a costruire poi la pagina del titolo:
Comando | Descrizione |
\title{titolo}
| titolo del documento (si può usare la sequenza \\ per ottenere un'interruzione di riga); |
\author{autore}
| autore o autori del documento (si può usare la sequenza \\ per ottenere un'interruzione di riga); |
\date{data}
| data del documento; |
\thanks{annotazione}
| nota a piè di pagina riferita al titolo. |
|
50.5.3
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 dal comando di creazione dell'indice, \tableofcontents:
\begin{document}
\maketitle
\tableofcontents
...
...
\end{document}
|
|
Segue il riepilogo dei comandi che riguardano in particolare l'inserimento dell'indice generale e di quelli specifici di figure e tabelle:
Comando | Descrizione |
\maketitle
| genera la pagina del titolo, traendo i dati dai comandi \title, \author, \date e \thanks usati nel preambolo; |
\tableofcontents
| inserisce l'indice generale del documento; |
\listoffigures
| elenca le figure che appaiono nel documento; |
\listoftables
| elenca le tabelle che appaiono nel documento. |
|
A seconda della classe del documento, i comandi elencati nella tabella, che servono per la creazione di un indice, prevedono l'inserimento di un titolo automatico, attraverso un comando di dichiarazione di un capitolo o di una sezione non numerati (con un asterisco, come spiegato nella sezione successiva).
|
Si osservi che, a differenza dell'indice generale, la creazione di un indice analitico è un processo più complicato, descritto nella sezione 50.10.
50.5.4
Suddivisione del documento
Normalmente, il corpo del documento può essere suddiviso, a seconda del tipo di classe utilizzato. Si usano per questo i comandi elencati nella tabella seguente (anche l'asterisco fa parte dell'istruzione):
Comando | Descrizione |
\part[opzioni]{titolo_della_parte}
\part*[opzioni]{titolo_della_parte}
| inizia una parte (solo per le classi article, report e book); |
\chapter[opzioni]{titolo_del_capitolo}
\chapter*[opzioni]{titolo_del_capitolo}
| inizia un capitolo (solo per le classi report e book); |
\section[opzioni]{titolo_della_sezione}
\section*[opzioni]{titolo_della_sezione}
| inizia una sezione; |
\subsection[opzioni]\ \{titolo_della_sottosezione}
\subsection*[opzioni]\ \{titolo_della_sottosezione}
| inizia una sottosezione; |
\subsubsection[opzioni]\ \{titolo_della_sotto_sottosezione}
\subsubsection*[opzioni]\ \{titolo_della_sotto_sottosezione}
| inizia una sotto-sottosezione; |
\paragraph[opzioni]{titolo_del_paragrafo}
\paragraph*[opzioni]{titolo_del_paragrafo}
| inizia un paragrafo; |
\subparagraph[opzioni]\ \{titolo_del_sottoparagrafo}
\subparagraph*[opzioni]\ \{titolo_del_sottoparagrafo}
| inizia un sottoparagrafo; |
\appendix
| definisce l'inizio delle appendici. |
|
In pratica, tutti questi comandi, escluso \appendix, dichiarano un titolo, che a seconda del caso appartiene all'inizio di una parte, di un capitolo o di una suddivisione inferiore. Come si vede dai modelli sintattici, questi comandi prevedono la presenza di opzioni, che però in pratica non si usano; inoltre, esistono due versioni del comando, con o senza asterisco.
I comandi da \part a \subsection, vengono utilizzati per la costruzione dell'indice generale (che si può poi ottenere con il comando \tableofcontents); inoltre, questi comandi prevedono la numerazione automatica delle voci, a seconda del livello di importanza. Se si usano questi comandi con l'asterisco, viene a mancare la numerazione e l'inserimento nell'indice generale. Le suddivisioni di livello inferiore non prevedono la numerazione e l'inserimento nell'indice, pertanto l'asterisco è praticamente privo di effetto.
\documentclass{report}
...
\begin{document}
\chapter{\LaTeX}
Bla bla bla bla bla bla bla...
\section{Suddivisione del documento}
Bla bla bla bla bla bla bla...
\section*{Sezione non numerata}
Questa sezione non è numerata e non ha una voce nell'indice
generale.
\subsection{Sottosezioni}
Questa è una sottosezione normale, bla bla bla...
\subsubsection{Sotto-sottosezione}
Questa è una sotto-sottosezione normale, bla bla bla...
\paragraph{Paragrafo normale}
Questo è un paragrafo normale, bla bla bla...
\subparagraph{Sottoparagrafo normale}
Questo è un sottoparagrafo normale, bla bla bla...
\end{document}
|
|
L'esempio, in cui non appare il preambolo (nel quale si deve definire l'uso della lingua italiana, la codifica adatta e una classe del documento che consenta la suddivisione in capitoli), si traduce nel risultato visibile nella figura 50.69, dove si può osservare in che modo procede la numerazione delle sezioni e l'aspetto normale delle suddivisioni di importanza minore.
Figura 50.69. Esempio nell'uso dei comandi di suddivisione del documento.
|
Quando si incontra il comando \appendix, la numerazione dei capitoli cambia, diventando alfabetica. Se nell'esempio già mostrato si inserisce il comando \appendix prima della dichiarazione del capitolo, si ottiene il risultato che vi vede nella figura 50.71
\appendix
\chapter{\LaTeX}
Bla bla bla bla bla bla bla...
...
|
|
50.5.5
Ambienti
LaTeX introduce un tipo nuovo di comando che serve a definire degli 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.
A titolo di esempio, vengono elencati alcuni ambienti comuni, utilizzati frequentemente per definire le caratteristiche di paragrafi particolari:
Comando | Descrizione |
\begin{center}testo\end{center}
| centra orizzontalmente il testo; |
\begin{quote}testo\end{quote}
\begin{quotation}testo\end{quotation}
| fa rientrare leggermente il testo a destra e a sinistra; |
\begin{verbatim}testo\end{verbatim}
| mantiene il testo esattamente come digitato nel sorgente. |
|
L'esempio seguente mostra i comandi necessari a centrare il testo «Ciao a tutti!».
\begin{center}
Ciao a tutti!
\end{center}
|
|
50.6
LaTeX: la pagina
La pagina di LaTeX viene definita automaticamente, in base alle opzioni usate nella definizione della classe del documento; eventualmente è possibile intervenire per cambiare l'impostazione predefinita, ma in tal caso tutto diventa piuttosto complesso.
50.6.1
Dimensioni della pagina
Le dimensioni della pagina sono definite da una serie di lunghezze rigide che possono essere modificate facilmente, ma per questo occorre conoscere le varie competenze di queste variabili. In particolare, occorre tenere presente che, a seconda della classe, ci può essere o meno una distinzione tra pagine destre e sinistre.
Figura 50.74a. Lunghezze che definiscono la forma della pagina: pagina sinistra, o pagina pari.
|
Figura 50.74b. Lunghezze che definiscono la forma della pagina: la pagina destra o pagina dispari.
|
La figura 50.74 mostra schematicamente la competenza delle varie lunghezze utilizzate; in particolare, si osservi che si fa riferimento sempre a pagine destre, salvo il caso di classi che distinguono tra pagine destre e sinistre. La tabella 50.76 descrive le varie lunghezze, mostrando il valore predefinito in presenza della classe book, con l'opzione a4paper.
Tabella 50.76. Elenco dei comandi che intervengono nella definizione delle dimensioni della pagina.
|
È importante osservare i margini (\topmargin, \oddsidemargin o \evensidemargin) fanno riferimento a un punto di inizio spostato di un pollice, sia dal margine interno, sia dall'alto; pertanto, se si vogliono avere margini inferiori a 2,54 cm, i valori delle lunghezze di scostamento relative possono essere negativi.
|
50.6.2
Flusso verticale del testo, colonne e salti pagina
Con LaTeX, il testo viene distribuito verticalmente in modo analogo a quanto fa già TeX; tuttavia, cambiano i comandi per interrompere le righe e per il salto pagina, inoltre si inseriscono comandi per richiedere di non saltare pagina in un certo punto. La tabella seguente elenca i comandi che consentono un controllo del salto pagina:
Comando | Descrizione |
\newline
| interrompe il flusso del blocco per iniziare una riga nuova; |
\linebreak[0|1|2|3|4]
| richiede un'interruzione di riga con un grado di intensità pari al numero tra parentesi quadre (il numero maggiore richiede l'interruzione di riga con maggiore insistenza); |
\newpage
| salta all'inizio della prossima colonna; |
\clearpage
| esegue un salto pagina, assicurando che vengano inseriti gli oggetti fluttuanti che non hanno ancora trovato posto nella composizione; |
\cleardoublepage
| esegue un salto pagina, in modo da iniziare con una pagina destra (dispari), assicurando che vengano inseriti gli oggetti fluttuanti che non hanno ancora trovato posto nella composizione; |
\pagebreak[0|1|2|3|4]
| richiede un salto pagina con un grado di intensità pari al numero tra parentesi quadre (il numero maggiore richiede il salto pagina con maggiore insistenza); |
\nopagebreak[0|1|2|3|4]
| richiede che non venga fatto un salto pagina nel punto in cui appare il comando, con un grado di intensità pari al numero tra parentesi quadre (il numero maggiore richiede che non si faccia il salto pagina con maggiore insistenza); |
{\samepage testo}
| richiede che il testo indicato rimanga nella stessa pagina; |
\vfill
| inserisce uno spazio verticale elastico. |
|
I comandi \newline, \newpage, \clearpage e \cleardoublepage sono drastici (il particolare legato agli oggetti fluttuanti viene chiarito nel capitolo in cui si descrive l'inserimento di immagini e di tabelle fluttuanti), mentre \linebreak, \nolinebreak, \pagebreak e \nopagebreak, con o senza opzione, dipendono dalla calcolo di convenienza che viene fatto in fase di composizione.
Per tenere unita una porzione di testo, il metodo più efficace è dato dal comando \samepage, che deve essere inserito in un raggruppamento tra parentesi graffe, come si vede nella tabella riepilogativa. Tuttavia, anche in questo caso, non si può garantire che tutto il pezzo richiesto rimanga nella stessa pagina: la probabilità che sia inserita un'interruzione di pagina aumenta con l'allontanarsi dal comando.
Tra questi comandi, \vfill non serve per ottenere o per evitare dei salti pagina, ma consente di spostare in basso del testo, quando viene usato con la richiesta di un salto pagina. Si osservi l'esempio seguente:
\noindent Bla bla bla bla bla bla...
\vfill
\noindent Copyright © 2002-2022 Tizio Tizi
\noindent This work is free; 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.
\noindent This work 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.
\noindent You should have received a copy of the GNU General
Public License along with this work; if not, write to the
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
02139, USA.
\newpage
|
|
La figura 50.79 mostra il risultato della composizione, simulando una pagina molto corta, per questioni di spazio.
Figura 50.79. Allineamento in basso del testo con l'aiuto di \vfill.
|
È da osservare che, a differenza del linguaggio TeX puro e semplice, i comandi per il salto pagina provvedono da soli ad aggiungere uno spazio elastico adeguato, per evitare che il contenuto della pagina venga allungato in modo inopportuno.
I comandi che richiedono un salto pagina, non si possono cumulare. In pratica, due comandi \newpage in sequenza, generano un salto solo. Per riuscire a ottenere un salto pagina aggiuntivo, occorre scrivere qualcosa, come uno spazio non interrompibile, prima di un nuovo salto pagina. È per questo che esiste il comando \cleardoublepage che permette di raggiungere l'inizio di una pagina destra.
|
LaTeX consente di controllare in modo complessivo l'allineamento verticale, attraverso due comandi molto semplici:
Comando | Descrizione |
\raggedbottom
| lascia che il testo si distribuisca verticalmente in modo naturale, senza tentare di allungarlo per occupare tutto lo spazio a disposizione; |
\flushbottom
| se possibile, allunga verticalmente gli spazi per occupare tutto lo spazio verticale della pagina. |
|
LaTeX utilizza in modo predefinito una o l'altra forma, a seconda della classe del documento. Come già accennato, i comandi per il salto pagina inseriscono automaticamente uno spazio elastico sufficiente a evitare che in quel punto si tenti di allungare il testo fino alla fine della pagina; tuttavia, ci sono situazioni in cui con la modalità corrispondente al comando \flushbottom si ottengono pagine troppo allungate.
In condizioni normali, LaTeX genera una composizione su una sola colonna verticale; tuttavia è possibile distribuire il testo su due colonne, con l'uso di due comandi particolari, che consentono di cambiare da una modalità all'altra:
Comando | Descrizione |
\onecolumn
| inizia una nuova pagina con una sola colonna; |
\twocolumn
| inizia una nuova pagina con due colonne; |
\twocolumn[testo]
| inizia una nuova pagina con due colonne, mettendo il testo che appare tra parentesi quadre all'inizio, ma distribuito orizzontalmente su entrambe le colonne. |
|
L'esempio seguente consente di vedere in pratica una composizione a due colonne. Si può osservare il fatto che la frase iniziale viene posta a cavallo delle due colonne.
\twocolumn[Bla bla bla bla... questo testo va a cavallo
delle due colonne]
Qui inizia la suddivisione del testo in due colonne
verticali. 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 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 bla...
\newpage
Qui inizia un'altra colonna, a seguito dell'uso del comando
di salto pagina semplice. Bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla...
|
|
Come si può osservare nella composizione finale che appare nella figura 50.83, il comando \newpage genera un salto fino all'inizio della colonna successiva, indipendentemente dal fatto che questa si trovi nella pagina corrente o in quella successiva. Al contrario, i comandi \clearpage e, necessariamente, cleardoublepage, fanno ricominciare la composizione effettivamente in una pagina nuova.
Figura 50.83. Esempio di composizione a due colonne.
|
Il comando \twocolumn crea due colonne di larghezza uguale, utilizzando lo spazio definito dalla lunghezza \textwidth, meno lo spazio di \columnsep. Pertanto, se si desidera cambiare la larghezza dello spazio interno alle colonne occorre intervenire prima nella lunghezza \columnsep e quindi usare il comando \twocolumn.
|
50.6.3
Stile della pagina
LaTeX definisce in modo automatico l'aspetto della riga di intestazione e di quella del fondo pagina, in base alla classe del documento, inserendo eventualmente delle varianti all'inizio delle parti e dei capitoli. I comandi elencati nella tabella seguente, consentono di interferire nello stile della pagina:
Comando | Descrizione |
\pagestyle{plain}
\thispagestyle{plain}
| richiede lo stile più semplice, in cui viene mostrato soltanto il numero di pagina; |
\pagestyle{empty}
\thispagestyle{empty}
| richiede che venga eliminata qualunque indicazione, sopra e sotto il corpo del testo; |
\pagestyle{headings}
\thispagestyle{headings}
| richiede che si utilizzino intestazioni e righe in fondo alla pagina in modo predefinito, secondo la classe del documento; |
\pagestyle{myheadings}
\thispagestyle{myheadings}
| richiede che si utilizzino intestazioni e righe in fondo alla pagina secondo quanto richiesto espressamente con i comandi \markboth o \markright; |
\markboth{intestazione_sinistra}\ \{intestazione_destra}
| definisce delle righe di intestazione personalizzate, distinte per le pagine sinistre e per le pagine destre; |
\markright{intestazione_destra}
| definisce la riga di intestazione personalizzata per le pagine destre (si usa quando la classe del documento prevede di non distinguere tra pagine sinistre e destre); |
|
Nell'elenco, sono stati messi assieme i comandi \pagestyle e \thispagestyle, ma il primo interviene su tutte le pagine, a partire da quella in corso, fino al prossimo comando del genere, mentre il secondo riguarda esclusivamente la pagina in corso, come eccezione rispetto allo stile normale. LaTeX utilizza proprio questa tecnica per fare in modo che la pagina iniziale di un capitolo o di una parte sia diversa nello stile rispetto alle altre pagine normali.
Generalmente, le righe di intestazione sono definite automaticamente in modo appropriato, secondo la classe prescelta del documento. Per modificare manualmente queste righe di intestazione, si deve definire lo stile personalizzato, con il comando \pagestyle{myheadings}, specificando il contenuto delle intestazioni con \markboth o con \markright. La definizione personalizzata delle intestazioni si limita a una riga di testo molto semplice, che viene allineata in modo appropriato (a sinistra nella pagine destre e a destra nelle pagine sinistre), per lasciare il posto al numero della pagina che viene inserito da LaTeX, senza poter intervenire su questo particolare.
A proposito dell'uso di \markboth e di \markright, è interessante osservare che, se ci si trova in una pagina sinistra, viene preso in considerazione l'ultimo comando \markboth che rientri nella pagina, mentre se ci si trova in una pagina destra, viene preso in considerazione il primo comando \markboth o \markright che si trovi nella pagina stessa.
50.6.4
Numerazione delle pagine
LaTeX gestisce la numerazione delle pagine in modo automatico, attraverso il contatore page. A seconda della classe del documento, il contatore viene inizializzato in certi punti chiave, mostrando eventualmente una sequenza di numerazione differente. Se necessario, è possibile intervenire sul contatore e sull'aspetto della sequenza di numerazione.
Comando | Descrizione |
\pagenumbering{arabic}
| richiede una sequenza numerica normale (numeri arabi); |
\pagenumbering{roman}
| richiede una sequenza numerica con numeri romani fatti di lettere minuscole; |
\pagenumbering{Roman}
| richiede una sequenza numerica con numeri romani fatti di lettere maiuscole; |
\pagenumbering{alph}
| richiede una sequenza alfabetica minuscola; |
\pagenumbering{Alph}
| richiede una sequenza alfabetica maiuscola; |
\setcounter{page}{n}
| assegna alla pagina corrente il numero indicato; anche se si assegna un numero negativo, la progressione rimane in senso positivo. |
|
Nella sezione 50.4.2 è stato descritto l'uso dei contatori; per modificare il contatore della pagina, è sufficiente agire sul nome page, per esempio reinizializzandolo in questo modo:
Naturalmente, per intervenire in questo modo ci deve essere un buon motivo, perché la classe del documento provvede già a definire il modo migliore per reinizializzare il contatore al momento più opportuno.
Nello stesso modo, potrebbe essere interessante cambiare il modo in cui viene mostrato il numero della pagina, attraverso il comando \pagenumbering, come descritto nella tabella.
50.6.5
Note a piè di pagina
Le note a piè di pagina vengono definite normalmente attraverso il comando \footnote, che provvede da solo a incrementare il contatore delle note, corrispondente a footnote, e a inserire la nota nella collocazione appropriata. Tuttavia, volendo fare riferimento alla stessa nota in più punti distinti, occorre separare la fase di dichiarazione da quella in cui si definisce il testo associato.
Comando | Descrizione |
\footnote{testo}
| incrementa il contatore delle note, inserisce il numero ad apice nel testo e mette la nota a piè di pagina; |
\footnotemark[\value{footnote}]
| lascia inalterato il contatore delle note e inserisce il numero attuale del contatore ad apice nel testo; |
\footnotemark[n]
| lascia inalterato il contatore delle note e inserisce il numero n ad apice nel testo; |
\footnotemark
| incrementa il contatore delle note, inserisce il numero ad apice nel testo, ma per la nota a piè di pagina attende il comando \footnotetext; |
\footnotetext{testo}
| mette la nota a piè di pagina, associandole il numero attuale del contatore footnote. |
\footnotetext[n]{testo}
| mette la nota a piè di pagina, associandole il numero n. |
|
50.6.6
Sillabazione
Come per TeX, si può usare il comando \hyphenation per dichiarare la sillabazione di parole che in qualche modo non vengono separate correttamente; per esempio così:
\hyphenation{car-tel-lo-ne ma-nu-a-le}
|
|
Eventualmente, come già annotato in un'altra sezione, se c'è la necessità di mantenere unita una parola, o più parole assieme, si può usare una scatola:
In questo caso, oltre che impedire la separazione delle parole, si vuole anche evitare che la riga venga interrotta in corrispondenza dello spazio che le separa.
50.7
Caratteri
In generale, LaTeX eredita la gestione dei caratteri da stampa del linguaggio TeX puro e semplice. In questo senso, valgono praticamente le stesse regole per ottenere le lettere accentate e gli altri simboli speciali, con la differenza che è possibile istruire LaTeX in modo che accetti la codifica UTF-8, con le istruzioni seguenti, da inserire nel preambolo, come descritto nella sezione 50.1.
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
|
|
Anche con LaTeX funzionano i legati in modo automatico, inoltre si definiscono i contesti matematici nello stesso modo di TeX.
La differenza importante di LaTeX sta nella definizione di una veste grafica complessiva e nel modo di fare riferimento ai caratteri da stampa, che avviene attraverso comandi differenti, con comportamenti diversi rispetto a TeX.
Negli esempi, salvo indicazione diversa, si suppone di utilizzare nel preambolo i comandi necessari all'utilizzo della codifica UTF-8:
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
|
|
50.7.1
Caratteri che hanno un significato speciale
Alcuni simboli (caratteri) usati nel sorgente hanno necessariamente un significato speciale, nel senso che non si traducono nel segno corrispondente nella composizione. Questo problema esiste già con TeX, ma LaTeX offre delle alternative leggermente diverse nel modo di ottenere i simboli mancanti nella composizione. La tabella 50.92 riepiloga i simboli che hanno un significato speciale nel sorgente LaTeX, con l'indicazione del codice necessario per ottenere i segni corrispondenti nella composizione.
Tabella 50.92. Elenco dei caratteri che hanno significati particolari.(2)
Carattere
speciale | Utilizzo normale | Trasformazione per l'uso letterale |
\
| Prefisso di un comando o di un simbolo di controllo. |
\textbackslash
|
{
}
| Apre e chiude un gruppo. |
\{
\}
|
%
| Inizia un commento fino alla fine della riga. |
\%
|
&
| Tabulazione orizzontale. |
\&
|
~
| Spazio non interrompibile. |
\textasciitilde
|
$
| Inizia e conclude un contesto matematico. |
\$
|
^
| Apice, in un contesto matematico. |
\textasciicircum
|
_
| Il trattino basso rappresenta un pedice, in un contesto matematico. |
\_{}
|
#
| Definisce la collocazione di un parametro. |
\#
|
<SP>
| Uno o più spazi vengono ridotti a uno solo. |
\<SP>
|
[
]
| Alle volte, le parentesi quadre delimitano un'opzione e non vengono inserite nella composizione. |
{[}
{]}
|
|
Per quanto riguarda gli accenti ottenuti sovrapponendo il simbolo alla lettera successiva, il funzionamento è uguale a quello di TeX, come descritto nelle sezioni 49.10.2 e 49.17.1.
50.7.2
Corpi uniformi
Lo scopo principale di LaTeX è quello di impostare una veste grafica uniforme, dove, tra le altre cose si specificano inizialmente i corpi e gli stili dei caratteri da stampa da usare nei vari contesti. In particolare, con il comando iniziale \documentclass è possibile indicare la dimensione normale del testo, attraverso un'opzione (come 11pt), a cui si adegua proporzionalmente tutto il resto (sezione 50.1).
Alcuni comandi definiscono il corpo del carattere in base a delle definizioni relative:
Comando | Descrizione |
{\Huge testo}
\begin{Huge}testo\end{Huge}
| il corpo più grande della serie; |
{\huge testo}
\begin{huge}testo\end{huge}
| |
{\LARGE testo}
\begin{LARGE}testo\end{LARGE}
| |
{\Large testo}
\begin{Large}testo\end{Large}
| |
{\large testo}
\begin{large}testo\end{large}
| |
{\normalsize testo}
\begin{normalsize}
testo
\end{normalsize}
| la dimensione normale del testo; |
{\small testo}
\begin{small}testo\end{small}
| |
{\footnotesize testo}
\begin{footnotesize}
testo
\end{footnotesize}
| |
{\scriptsize testo}
\begin{scriptsize}
testo
\end{scriptsize}
| |
{\tiny testo}
\begin{tiny}testo\end{tiny}
| il corpo più piccolo nell'ambito della veste grafica scelta. |
|
In condizioni normali, questi comandi non vengono usati direttamente da chi scrive un documento in LaTeX; tuttavia, se c'è la necessità di ingrandire o di rimpicciolire il testo, con questi c'è la certezza di rimanere nelle dimensioni standard usate dallo stile prescelto:
Questo è un testo normale, che può diventare più
{\large grande} o più {\small piccolo}, a seconda delle
esigenze.
|
|
50.7.3
Caratteri da stampa
A differenza di TeX, i comandi di LaTeX che definiscono lo stile del carattere sono cumulabili. Per esempio, la definizione di un testo in corsivo può essere cumulata con quella del neretto, per ottenere un neretto corsivo.
Le caratteristiche principali di un carattere sono lo stile, la serie e il corpo. Lo stile e la serie possono essere definite utilizzando istruzioni del tipo seguente:
-
-
-
\begin{stile_serie_b}...\end{stile_serie_b}
|
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 tre modi.
\textit{Testo in corsivo}
{\itshape Testo in corsivo}
\begin{itshape}Testo in corsivo\end{itshape}
|
|
Tutte le forme consentono di cumulare gli effetti; per esempio, si può scrivere \textit{\textbf{testo}}, {\itshape\bfseries testo}, oppure \begin{itshape}\begin{bfseries}testo\end{bfseries}\end{itshape} per ottenere un neretto corsivo.
La tabella seguente elenca i comandi che possono essere usati in un contesto normale (non matematico):
Comando | Descrizione |
\textrm{testo}
{\rmfamily testo}
\begin{rmfamily}testo\end{rmfamily}
| tondo; |
\textsf{testo}
{\sffamily testo}
\begin{sffamily}testo\end{sffamily}
| lineare; |
\texttt{testo}
{\ttfamily testo}
\begin{ttfamily}testo\end{ttfamily}
| dattilografico; |
\textbf{testo}
{\bfseries testo}
\begin{bfseries}testo\end{bfseries}
| neretto; |
\textup{testo}
{\upshape testo}
\begin{upshape}testo\end{upshape}
| normale, in contrapposizione al neretto; |
\textit{testo}
{\itshape testo}
\begin{itshape}testo\end{itshape}
| corsivo; |
\textsl{testo}
{\slshape testo}
\begin{slshape}testo\end{slshape}
| inclinato; |
\textsc{testo}
{\scshape testo}
\begin{scshape}testo\end{scshape}
| maiuscoletto; |
\textnormal{testo}
{\normalfont testo}
\begin{normalfont}
testo
\end{normalfont}
| testo normale. |
|
La tabella successiva riguarda invece il contesto matematico:
Comando | Descrizione |
\mathnormal{testo}
| testo matematico normale; |
\mathrm{testo}
| tondo; |
\mathbf{testo}
| neretto; |
\mathsf{testo}
| lineare; |
\mathtt{testo}
| dattilografico; |
\mathit{testo}
| corsivo; |
\mathcal{testo}
| calligrafico; |
\mathsc{testo}
| maiuscoletto. |
|
A titolo di esempio, la tabella 50.99 consente di confrontare le varianti seriali dello stile normale di scrittura.
Tabella 50.99. Combinazioni a coppie di serie per il testo normale.
|
Oltre allo stile e alla serie del carattere può essere definito il corpo, con i comandi già mostrati nella sezione precedente, oppure in modo diretto, nel caso si debba andare al di fuori della veste grafica preimpostata. In tal caso, si usano dei comandi nella forma:
\fontsize{corpo}{distanza_tra_le_righe}\selectfont
|
Per esempio, per ottenere un corpo di 5 mm, con un'altezza della riga di 6 mm (il 120 % del corpo), si può usare il comando \fontsize{5mm}{6mm}\selectfont:
Questo è un testo normale; {\fontsize{5mm}{6mm}\selectfont
questo carattere ha un corpo particolare}; qui il testo
torna a essere normale.
|
|
50.7.3.1 Enfatizzazione
Quando non ha importanza stabilire esattamente l'aspetto di un carattere, ma si vuole semplicemente enfatizzarlo rispetto al contesto in cui si trova, si può usare il comando \emph. L'esempio seguente mostra cosa accade quando in una situazione in cui il carattere è corsivo si usa questo comando:
\begin{itshape}Bla bla bla bla bla bla \emph{testo
enfatizzato} bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla...\end{itshape}
|
|
50.7.4
Definizione dettagliata del carattere da stampa
Generalmente, i comandi già descritti a proposito della definizione del carattere da stampa sono più che sufficienti per l'utente normale di LaTeX; eventualmente, sono disponibili anche altri comandi più dettagliati, che si prestano particolarmente per la realizzazione di macro particolari. Questi comandi hanno in comune la necessità di usare alla fine il comando \selectfont per attuare le modifiche al carattere da stampa. La tabella seguente elenca i comandi che riguardano la definizione dettagliata del carattere da stampa (appare anche \fontsize che è già descritto nella sezione precedente):
Comando | Descrizione |
\fontencoding{OT1|T1|altro_insieme}
| definisce l'insieme di caratteri (T1 rappresenta quello utile per le lingue europee occidentali); |
\fontfamily{cmr|cmss|cmtt|altro_stile}
| definisce lo stile del carattere (cmr sta per Computer modern roman, cmss è il Computer modern sans serifs, cmtt è il Computer modern typewriter text); |
\fontseries{m|b|c|bc|bx|altra_serie}
| definisce la serie del carattere (m sta per Medium, b sta per Bold, c sta per Condensed, bc sta per Bold condensed e bx sta per Bold extended); |
\fontshape{n|it|sl|sc|ui|ol}
| definisce una variante della serie del carattere (n sta per Normal, it sta per Italic, sl sta per Slanted, sc sta per Small caps, ui sta per Upright italic e ol sta per Outline, ma naturalmente non tutti i tipi di carattere hanno a disposizione tutte le varianti possibili); |
\fontsize{corpo}{altezza_riga}
| definisce il corpo del carattere e l'altezza della riga; |
\selectfont
| abilita le modifiche fatte in precedenza al carattere (tipo, stile e dimensione); |
\usefont{insieme}{stile}{forma}
| definisce simultaneamente tutte le caratteristiche del carattere, escluso il corpo e la distanza tra le righe, senza nemmeno bisogno di \selectfont per attivare la scelta fatta. |
|
A proposito del comando \usefont, si osservi che il secondo argomento si riferisce alle sigle utilizzabili con il comando \fontseries, mentre il terzo argomento richiede una sigla riferita al comando \fontshape. La suddivisione delle varianti seriali in questi due gruppi deriva dall'organizzazione di LaTeX riguardo alla cumulabilità tra stili. In pratica, le varianti seriali di \fontseries non sono cumulabili tra di loro; per esempio, per ottenere un carattere stretto e neretto è già prevista una voce unica: bc. Lo stesso ragionamento vale per le varianti seriali di \fontshape, mentre una variante di \fontseries è cumulabile con una variante di \fontshape.
Viene mostrato un esempio completo, in cui si può notare anche l'uso delle lettere accentate, a seguito della selezione dell'insieme T1:
\documentclass{article}
\usepackage[italian]{babel}
%\usepackage[utf8x]{inputenc}
%\usepackage[T1]{fontenc}
\frenchspacing
\pagestyle{empty}
\setlength{\textwidth}{12cm}
\begin{document}
Questo \`e un testo normale;
{\fontencoding{T1}\fontfamily{cmss}\fontseries{n}
\fontshape{it}\fontsize{5mm}{7mm}\selectfont questo \`e
invece un carattere senza grazie, chiaro, corsivo, con un
corpo di 5 mm, in una riga alta 7 mm.} Questo \`e di nuovo
un carattere normale. \usefont{T1}{cmss}{n}{it}Questo \`e
ancora un carattere senza grazie, chiaro, corsivo, con un
corpo normale. \fontsize{5mm}{7mm}\selectfont Qui il
carattere si ingrandisce di nuovo. \normalfont Qui si
ritorna a un carattere di stile e serie normale, ma la
dimensione rimane inalterata.
\end{document}
|
|
50.7.5
Linee e cornicette attorno al testo
Per LaTeX vale lo stesso problema di TeX a proposito della sottolineatura, nel senso che non fa parte dello stile e della serie del carattere. Tuttavia, LaTeX facilita anche altre forme di evidenziamento analoghe:
Comando | Descrizione |
\underline{testo}
| mette una linea sotto al testo; |
$\overline{\hbox{testo}}$
| mette una linea sopra al testo; |
\frame{testo}
| racchiude il testo in un rettangolo; |
\fbox{testo}
| racchiude il testo in un rettangolo, lasciando un po' di spazio. |
|
In tutti i casi, il testo evidenziato si trova inserito in una scatola orizzontale, che come tale non può essere spezzata, creando eventualmente dei problemi di impaginazione.
Si osservi che il comando \overline è fatto per l'ambito matematico. Nella tabella, la sintassi mostra il modo corretto per poterlo utilizzare in un contesto normale, con l'aggiunta del comando \hbox, allo scopo di comporre il testo sopralineato in un contesto normale.
|
Segue un esempio riepilogativo di queste forme di evidenziamento del testo:
Qui inizia un testo normale, in cui questa
\underline{parola} appare sottolineata; ma è possibile
anche sopralineare $\overline{\hbox{questa
piccola frase}}$, così come si possono creare delle
\frame{cornicette schiacciate}, oppure \fbox{un po' più
distanziate} dal testo.
|
|
50.7.6
Spostamento verticale del testo
A volte può essere necessario lo spostamento verticale di alcuni caratteri rispetto alla base della riga. Per fare questo si usa il comando \raisebox, con cui si delimita il testo da spostare, specificando di quanto questo debba essere alzato (per abbassarlo si possono usare valori negativi):
\raisebox{spostamento_verticale}{testo}
|
Si osservi l'esempio seguente in cui si gioca con la parola «ciao»:
c\raisebox{1mm}{i}\raisebox{2mm}{a}\raisebox{1mm}{o}
c\raisebox{-1mm}{i}\raisebox{-2mm}{a}\raisebox{-1mm}{o}
|
|
50.8
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.
50.8.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 50.112 mostra alcuni dei comandi che controllano l'aspetto del paragrafo.
Tabella 50.112. Alcuni dei comandi che intervengono nella definizione 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. |
|
50.8.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}
|
|
50.8.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}
|
|
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:
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}
|
|
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}
|
|
Gli elenchi descrittivi sono leggermente diversi, perché devono consentire 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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
50.8.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}
|
|
50.8.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}
|
|
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:
50.8.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
2 ^F^@^@M-w^B^@^@^_^F^@^@M-^^^D^@^@^@^@^@^@^^^F^@^@^K^
3 ^D^@^@b^F^@^@^@^@^@^@_^C^@^@M-^[^C^@^@M-^[^@^@^@M-^J
...
\end{verbatim}
|
|
\$ \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*}
|
|
Si veda anche la sezione 50.14.2 per l'importazione di file esterni da rappresentare in modo letterale.
50.8.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 si indifferente per LaTeX cosa sia il contenuto effettivo 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}
|
|
Nella sezione 50.6.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.
50.9
Spazi e scatole
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.
50.9.1
Spazi orizzontali
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.
Comando | Descrizione |
\hspace{lunghezza}
\hspace*{lunghezza}
| 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...
|
|
Comando | Descrizione |
\hfill
| Inserisce uno spazio orizzontale elastico che, in condizioni normali, va a riempire tutto lo spazio disponibile. |
\dotfill
| Inserisce uno spazio orizzontale elastico contenente dei puntini. |
\hrulefill
| 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
|
|
50.9.2
Spazi verticali
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.
Comando | Descrizione |
\vspace{lunghezza}
| Inserisce uno spazio verticale rigido. Se si trova all'inizio di una pagina, viene ignorato. |
\vspace*{lunghezza}
| Inserisce uno spazio verticale rigido. Se si trova all'inizio di una pagina, viene inserito regolarmente. |
\addvspace{lunghezza}
| Aggiunge uno spazio verticale rigido. Se nello stesso punto vengono usati più comandi \addvspace, viene preso in considerazione solo quello con la lunghezza maggiore. |
\vfill
| 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:
Comando | Descrizione |
\smallskip
| spazio piccolo; |
\medskip
| spazio medio; |
\bigskip
| spazio grande. |
|
L'entità dello spazi verticale introdotto da questi comandi dipende da altri comandi:
Comando | Descrizione |
\smallskipamount
| lunghezza piccola; |
\medskipamount
| lunghezza media; |
\bigskipamount
| 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.
|
|
50.9.3
Elasticità controllabile
È possibile definire in modo semplice una lunghezza elastica da usare poi con comandi come \hspace e \vspace:
Comando | Descrizione |
\stretch{n}
| 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:
50.9.4
Interlinea
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:
Comando | Descrizione |
\usepackage{setspace}
| dichiara l'utilizzo del pacchetto necessario alla gestione dei comandi sottostanti; |
\singlespacing
| richiede un'interlinea normale; |
\onehalfspacing
| richiede un'interlinea maggiore; |
\doublespacing
| 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:
Comando | Descrizione |
\linespread{fattore}
| 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}
|
|
50.9.5
Scatole
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.
Comando | Comando | Descrizione |
\mbox{testo}
|
\fbox{testo}
| Inserisce il testo in una scatola larga quanto il testo stesso; nel secondo caso si ottiene una scatola bordata. |
\makebox[ampiezza]\ \[c|l|r|s]{testo}
|
\framebox[ampiezza]\ \[c|l|r|s]{testo}
| 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:
Lettera | Significato mnemonico | Descrizione |
c
| center | testo centrato orizzontalmente nella scatola; |
l
| left | testo allineato a sinistra; |
r
| right | testo allineato a destra; |
s
| stretch | 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 gestirne l'estetica:
Comando | Descrizione |
\fboxrule=dimensione
\setlength{\fboxrule}{dimensione}
| definisce lo spessore della linea usata per il bordo; |
\fboxsep=dimensione
\setlength{\fboxsep}{dimensione}
| 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, possa 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:
\parbox[c|t|b][altezza]\ \[c|t|b|s]{larghezza}{testo}
| definisce una scatola, senza bordo, per contenere del testo impaginato nell'ambito della larghezza stabilita; |
\begin{minipage}[c|t|b]{larghezza}
testo
\end{minipage}
| 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:
Lettera | Significato mnemonico | Descrizione |
c
| center | richiede una scatola centrata verticalmente rispetto alla riga; |
t
| top | richiede una scatola che parte dalla riga e si espande in basso; |
b
| bottom | 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:
Lettera | Significato mnemonico | Descrizione |
c
| center | testo centrato verticalmente nella scatola; |
t
| top | testo in alto; |
b
| bottom | testo in basso; |
s
| stretch | 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:
50.9.6
Testo da salvare e da recuperare
LaTeX ha una capacità limitata di memorizzare del testo in modo da poterlo inserire successivamente nella composizione:
Comando | Descrizione |
\begin{lrbox}{n}testo\end{lrbox}
| accumula nel registro n il testo indicato; |
\usebox{n}
| 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 viene poi rappresentato come se fosse inserito in una scatola \mbox. Segue 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...
|
|
50.9.7
Linee
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...
|
|
50.10
Riferimenti incrociati
LaTeX gestisce diversi tipi di riferimenti incrociati, di cui il più importante è l'indice generale, ottenuto attraverso il comando \tableofcontents. La gestione dei riferimenti incrociati avviene attraverso la creazione di file temporanei, adibiti ad accumulare le informazioni, da riutilizzare attraverso rielaborazioni successive. In pratica, è proprio la presenza di questi riferimenti incrociati che obbliga a ripetere il procedimento di composizione più volte.
50.10.1
Indice generale, indice delle tabelle e delle figure
La creazione dell'indice generale, dell'indice delle tabelle e dell'indice delle figure, parte dall'accumulo delle informazioni sulla collocazione di queste voci. Per la precisione, i comandi che definiscono la suddivisione del documento annotano il titolo, il numero della sezione e la pagina in un file con estensione .toc
(Table of contents); i comandi \caption inseriti nell'involucro fluttuante di una tabella o di una figura, annotano il numero e la pagina in cui si trovano in file con estensione .lot
(List of tables) e .lof
(List of figures).
Nella rielaborazione successiva (quando il comando di composizione viene ripetuto), questi file possono essere incorporati attraverso i comandi \tableofcontents, \listoftables e \listoffigures, per ottenere rispettivamente l'indice generale, l'indice delle tabelle e delle figure.
Dal momento che l'inserzione modifica la lunghezza del testo, a meno che gli indici siano collocati alla fine del documento, si rende necessaria almeno una terza rielaborazione.
Comando | Descrizione |
\tableofcontents
| inserisce nella composizione l'indice generale, ottenuto dal file .toc , generato dalla composizione precedente; |
\listoftables
| inserisce nella composizione l'indice delle tabelle, ottenuto dal file .lot , generato dalla composizione precedente; |
\listoffigures
| inserisce nella composizione l'indice delle figure, ottenuto dal file .lof , generato dalla composizione precedente. |
|
L'inserimento di voci in questi elenchi può avvenire anche in modo manuale, attraverso due comandi appositi:
Comando | Descrizione |
\addtocontents{toc|lot|lof}{testo}
| aggiunge il testo indicato nell'ultimo argomento, nell'indice corrispondente alla sigla del primo argomento (indice generale, indice delle tabelle o indice delle figure); |
\addcontentsline\ \{toc|lot|lof}{livello}{testo}
| aggiunge la voce nell'indice corrispondente alla sigla del primo argomento. |
|
Il funzionamento del comando \addtocontents è relativamente semplice, nel senso che ci si limita ad aggiungere del testo nell'indice prescelto:
\tableofcontents
\section{Prima}
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...
\addtocontents{toc}{Ciao a tutti\par}
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...
\section{Seconda}
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...
|
|
Si può osservare che nel testo inserito è stata aggiunta la richiesta esplicita di concludere il paragrafo; ciò si rende necessario per evitare problemi imprevisti nel momento dell'incorporazione del file .toc
.
L'uso di \addcontentsline è più complesso, perché richiede anche l'indicazione del «livello» della voce. Se si tratta dell'indice generale, il livello è rappresentato dalle parole chiave da part a subparagraph, mentre negli altri casi è ammesso l'uso di table o figure. Così si intende che la voce inserita sia da trattare allo stesso modo del livello corrispondente, per ciò che riguarda la composizione. Nell'esempio che segue, la voce si inserisce al livello di una sottosezione:
\tableofcontents
\section{Prima}
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...
\addcontentsline{toc}{subsection}{Ciao a tutti}
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...
\section{Seconda}
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...
|
|
Come si vede, in questo caso non c'è più bisogno di concludere il paragrafo nel testo, cosa che al contrario genererebbe qui solo un errore:
Volendo, si può spiare il contenuto del file .toc
generato, per scoprire come si può aggiungere una cifra davanti alla voce inserita manualmente:
\contentsline {section}{\numberline {1}Prima}{1}
\contentsline {section}{Ciao a tutti}{1}
\contentsline {section}{\numberline {2}Seconda}{1}
|
|
Intuitivamente si comprende l'uso del comando \numberline:
\tableofcontents
\section{Prima}
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...
\addcontentsline{toc}{subsection}{\numberline{1.1}Ciao a
tutti}
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...
\section{Seconda}
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...
|
|
50.10.2
Riferimenti liberi
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:
Comando | Descrizione |
\label{stringa_identificativa}
| mette un punto di riferimento invisibile, identificato dalla stringa contenuta nell'argomento; |
\ref{stringa_identificativa}
| inserisce nella composizione il numero corrispondente alla stringa di identificazione indicata, secondo il contesto; |
\pageref{stringa_identificativa}
| inserisce nella composizione il numero della pagina corrispondente alla stringa di identificazione indicata. |
|
La posizione in cui viene collocato il comando \label è importante, in quanto \ref si comporta diversamente a seconda del contesto. 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 l'etichetta viene dichiarata all'interno di un ambiente numerato, come una tabella, una figura, un'equazione o altro, il riferimento a questa genera il numero corrispondente a tale elemento.
A titolo di esempio, viene mostrato come si potrebbe procedere per la costruzione manuale di un indice generale, senza l'ausilio del comando \tableofcontents:
\section*{Indice}
\noindent\ref{sec:Prima} Prima, pag. \pageref{sec:Prima}
\noindent\ref{sec:Seconda} Seconda, pag.
\pageref{sec:Seconda}
\section{Prima} \label{sec:Prima}
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...
\section{Seconda} \label{sec:Seconda}
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...
|
|
È bene ribadire che LaTeX inserisce implicitamente le etichette generate con il comando \label in un contesto particolare, per cui il risultato del comando \ref cambia di conseguenza. Tuttavia, il numero che viene mostrato da \ref non è accompagnato dal contesto in fase di composizione, pertanto è compito dell'autore scrivere di cosa si tratta (capitolo, sezione, tabella, figura o altro). In questo senso, diventa importante ricordare a cosa si riferisce una certa stringa di identificazione, pertanto, la stessa documentazione originale di LaTeX propone di usare un prefisso diverso in base al contesto:
Comando | Descrizione |
\label{cha:stringa_successiva}
| etichetta di identificazione di un capitolo; |
\label{sec:stringa_successiva}
| etichetta di identificazione di una sezione di livello inferiore al capitolo; |
\label{tab:stringa_successiva}
| etichetta di identificazione di una tabella; |
\label{fig:stringa_successiva}
| etichetta di identificazione di una figura; |
\label{eq:stringa_successiva}
| etichetta di identificazione di un'equazione. |
|
Le stringhe di identificazione generate dal comando \label, sono annotate in un file con estensione .aux
(assieme ad altre informazioni estranee). Quando LaTeX viene riavviato in una fase di composizione successiva, carica in memoria i dati contenuti nel file .aux
e lo utilizza per risolvere i riferimenti con i comandi \ref e \pageref.
50.10.3
Indice analitico
La realizzazione di un indice analitico, ovvero un indice che raccoglie una serie ordinata di voci che possono essere inserite in varie parti del documento, è più complessa rispetto a quella dell'indice generale. In special modo, in questo caso è necessario provvedere a riordinare e riorganizzare i dati nel modo corretto. I comandi coinvolti per la realizzazione dell'indice analitico, sono riassunti brevemente nell'elenco seguente:
Comando | Descrizione |
\usepackage{makeidx}
| si usa questo comando nel preambolo per importare il codice necessario alla gestione dell'indice analitico; |
\makeindex
| si usa questo comando, sempre nel preambolo, per attivare la gestione dell'indice analitico; |
\index{voce}
| inserisce la voce indicata nel file .idx , dal quale si ottiene poi l'indice analitico; |
\printindex
| inserisce l'indice analitico contenuto nel file .ind , ottenuto attraverso un'elaborazione esterna a LaTeX. |
|
Come si vede, è necessario utilizzare un pacchetto esterno, denominato makeidx, quindi si deve attivare la costruzione dell'indice, con il comando \makeindex. Pertanto, si inseriscono le istruzioni seguenti nel preambolo:
\usepackage{makeidx}
\makeindex
|
|
Lo scopo particolare di \makeindex è quello di aprire un file con estensione .idx
, in cui il comando \index può poi annotare le sue voci. Si osservi l'esempio seguente:
...
\usepackage{makeidx}
\makeindex
...
\begin{document}
\section{Prima} \index{resistenza}\index{induttanza}
Qui si parla di resistenze e di induttanze, 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...
\section{Seconda} \index{capacità}
Qui si parla di capacità e simili, 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...
\end{document}
|
|
Nella composizione finale, i comandi \index non producono alcun risultato e si comportano in modo simile al comando \label:
Dopo l'elaborazione normale con LaTeX si ottiene un file con estensione .idx
, con il contenuto seguente:
\indexentry{resistenza}{1}
\indexentry{induttanza}{1}
\indexentry{capacit\`a}{1}
\indexentry{resistenza}{1}
|
|
Si può osservare che le voci sono state inserite nella sequenza in cui appaiono nel sorgente LaTeX, senza tenere conto di eventuali ripetizioni. Ma LaTeX non è nelle condizioni di usare questo file direttamente nell'elaborazione successiva; prima occorre riordinare e riorganizzare le voci attraverso il programma makeindex:
makeindex nome_file_senza_estensione
|
Per esempio, se si sta facendo la composizione del file prova.tex
, è sufficiente il comando:
$
makeindex prova
[Invio]
In questo modo, makeindex cerca di leggere il file prova.idx
(quello generato dall'elaborazione di LaTeX) e produce il file prova.ind
, che, seguendo l'esempio, dovrebbe contenere quanto segue:
\begin{theindex}
\item capacit\`a, 1
\indexspace
\item induttanza, 1
\indexspace
\item resistenza, 1
\end{theindex}
|
|
Come si può vedere, la voce resistenza contiene un riferimento unico, dal momento che appare due volte, ma nella stessa pagina finale.(3)
Se il sorgente LaTeX contiene il comando \printindex, in quel punto viene inserito il contenuto del file con estensione .ind
, a partire da una pagina nuova, con l'aggiunta di un titolo adeguato:
...
\usepackage{makeidx}
\makeindex
...
\begin{document}
\section{Prima} \index{resistenza}\index{induttanza}
Qui si parla di resistenze e di induttanze, 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...
\section{Seconda} \index{capacità}
Qui si parla di capacità e simili, 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...
\printindex
\end{document}
|
|
È da osservare che la voce indicata come argomento del comando \index può essere più articolata, in base alle capacità elaborative di makeindex. In pratica, si utilizzano dei simboli per separare la voce in più parti. L'elenco seguente dovrebbe aiutare a comprendere il meccanismo:
Comando | Descrizione |
\index{voce}
| questa è la situazione normale, in cui si inserisce la voce indicata, così come inserita, nell'indice; |
\index{voce_principale!voce_secondaria}
| il punto esclamativo permette di separare una voce principale da una parte secondaria, che poi può essere mostrata con un leggero rientro rispetto alla prima parte; |
\index{voce_principale@voce_abbellita}
| la chiocciola separa una prima parte, da prendere in considerazione ai fini dell'ordinamento, dalla seconda parte che invece viene mostrata nell'indice, consentendo l'uso di comandi che modificano l'aspetto del carattere; |
\index{voce\ \|comandi_per_il_numero_della_pagina}
| la barra verticale separa la voce dell'indice dai comandi per controllare l'aspetto del numero della pagina (comandi da usare senza la barra obliqua inversa iniziale). |
|
L'esempio seguente è una variante di quanto già visto, per mostrare l'uso del comando \index con questi simboli particolari:
\section{Prima}
\index{resistenza}\index{resistenza!induttiva|textit}
Qui si parla di resistenze e di induttanze, 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...
\section{Seconda} \index{resistenza!capacitiva|textit}
\index{resistenza@\texttt{resistenza}}
Qui si parla di capacità e ancora di resistenza, 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...
|
|
Ecco come si presenta l'indice; si può osservare che la voce resistenza appare due volte, perché il tipo di carattere è stato modificato:
50.10.4
Bibliografie
LaTeX offre una gestione molto semplice delle bibliografie attraverso l'uso dell'ambiente thebibliography. I comandi coinvolti sono descritti brevemente nell'elenco seguente:
Comando | Descrizione |
\begin{thebibliography}\ \{stringa_di_esempio}... \ \\end{thebibliography}
| dichiara l'ambiente che contiene le informazioni bibliografiche; |
\bibitem[sigla]\ \{stringa_identificativa_della_voce}
| all'interno dell'ambiente thebibliography dichiara l'inizio di una voce bibliografica; |
\cite[testo_aggiuntivo\ \{stringa_identificativa_della_voce}}
| si usa al di fuori dell'ambiente thebibliography, per richiamare il riferimento a una voce bibliografica. |
|
In pratica, l'ambiente thebibliography serve a raccogliere le voci bibliografiche, ognuna dichiarata attraverso il comando \bibitem. Nel risultato della composizione, le voci vengono precedute da una sigla, come indicato dal comando \bibitem, oppure da un numero gestito in modo automatico; pertanto, per garantire un allineamento corretto, la dichiarazione dell'ambiente richiede un argomento composto da una stringa di esempio, che rappresenti l'ampiezza massima di questa sigla, sia gestita manualmente, sia automatica.
Al di fuori dell'ambiente thebibliography, di solito prima di questo, si usa il comando \cite per fare riferimento a una voce bibliografica, attraverso la stringa identificativa che usa lo stesso comando \bibitem. Se viene usato l'argomento opzionale di \cite, si ottiene l'aggiunta di quella stringa dopo la sigla usata per identificarlo.
Per cominciare conviene mostrare un esempio molto semplice, in cui non si usano argomenti opzionali:
\section{Resistenze e condensatori}
Qui si parla di resistenze \cite{res} e di condensatori
\cite{con}, bla bla bla bla bla bla bla bla bla...
\begin{thebibliography}{99}
\bibitem{res} Tizio Tizi, \textit{Resistenze elettriche},
2002
\bibitem{con} Caio Cai, \textit{Condensatori e correnti
alternate}, 2001
\end{thebibliography}
|
|
Come si vede, l'argomento della dichiarazione dell'ambiente thebibliography contiene la stringa 99, perché si sa che la sigla usata per distinguere le voci non può essere più lunga di un numero di due cifre:
Volendo aggiungere un riferimento a una certa pagina del primo libro citato, basta sfruttare l'argomento opzionale di \cite:
Qui si parla di resistenze \cite[pag. 1]{res} e di
condensatori \cite{con}, bla bla bla bla bla bla bla bla
bla...
|
|
Infine, per usare delle sigle più significative, si può sfruttare l'argomento opzionale del comando \bibitem, ma in questo caso occorre intervenire anche nella dichiarazione dell'ampiezza massima di queste stringhe:
\begin{thebibliography}{ZZZZZ}
\bibitem[TIZ]{res} Tizio Tizi, \textit{Resistenze
elettriche}, 2002
\bibitem[COND]{con} Caio Cai, \textit{Condensatori e
correnti alternate}, 2001
\end{thebibliography}
|
|
Come si intuisce, l'uso di riferimenti bibliografici di questo tipo richiede delle rielaborazioni successive, anche se in questo caso non intervengono programmi esterni.
Eventualmente, se questo tipo di gestione bibliografica si mostra insufficiente, è disponibile BibTeX, che consente di gestire una bibliografia molto dettagliata in un file esterno, dove solo le voci richieste espressamente vengono poi mostrate nella composizione finale.
50.11
Tabelle
LaTeX offre due ambienti per la costruzione di tabelle: tabbing e tabular. Il primo dei due riguarda la realizzazione di tabelle attraverso delle tabulazioni, mentre il secondo è invece più completo, anche se poi offre meno libertà.
50.11.1
Tabella fatta di tabulazioni
Attraverso l'ambiente tabbing, si può allineare il testo in colonne, fissando gli stop di tabulazione attraverso scatole orizzontali di riferimento, che di solito si ottengono con del testo opportuno. Si osservi subito un esempio molto semplice:
\begin{tabbing}
marrone \= 10 \% \= quattro \kill
nero \> 0 \> zero \\
marrone \> 1 \> uno \\
rosso \> 2 \> due \\
arancio \> 3 \> tre \\
giallo \> 4 \> quattro \\
verde \> 5 \> cinque \\
blu \> 6 \> sei \\
viola \> 7 \> sette \\
grigio \> 8 \> otto \\
bianco \> 9 \> nove \\
argento \> 10 \% \\
oro \> 5 \% \\
\> 2 \% \\
\> 1 \% \\
\end{tabbing}
|
|
Si può già comprendere intuitivamente il significato delle istruzioni inserite nell'esempio. In particolare, si può osservare nel risultato della composizione che la prima riga non appare, ma serve solo per indicare alle righe successive la collocazione degli stop di tabulazione; infatti, si può vedere che la prima riga contiene l'esempio del testo più lungo utilizzato in ogni colonna:
La sintassi per l'utilizzo di questo ambiente tabbing è rappresentata in modo semplificato dal modello seguente:
\begin{tabbing}
testo \= testo [\= testo]... \kill
testo \> testo [\> testo]... \\
[testo \> testo [\> testo]... \\]
...
\end{tabbing}
|
Il modello non esaurisce tutte le possibilità, ma rende l'idea dell'utilizzo più frequente: all'inizio si dichiara la distanza degli stop di tabulazione con una riga di esempio, che poi non viene prodotta nella composizione. Tra le alternative possibili, c'è da considerare la possibilità di definire gli stop di tabulazione in una riga che poi viene comunque emessa anche nella composizione (in tal caso si sostituisce \kill con \\); inoltre, è possibile modificare gli stop di tabulazione con un'altra riga contenente comandi \=. Segue la descrizione dei comandi più importanti che riguardano l'ambiente tabular:
Comando | Descrizione |
\=
| fissa uno stop di tabulazione nella posizione in cui si trova; |
\>
| salta allo stop di tabulazione successivo; |
\kill
| prende in considerazione i comandi che fissano gli stop di tabulazione, ma non mostra la riga corrispondente nella composizione finale; |
\pushtabs
\poptabs
| salva e ripristina le posizioni degli stop di tabulazione, quando si vuole avere una suddivisione diversa in un ambito temporaneo della tabella. |
|
In realtà, i comandi specifici dell'ambiente tabbing sono molti di più; in particolare, la sovrapposizione di accenti alle lettere funziona in modo diverso dal solito. Onde evitare di creare confusione per questo motivo, si preferisce mostrare un modo alternativo di usare l'ambiente tabbing, allo scopo di raggirare questo inconveniente:
\begin{tabbing}
testo [\= testo]... \kill
\parbox{\textwidth}{testo} [\> \parbox{\textwidth}{testo}]... \\
[\parbox{\textwidth}{testo} [\> \parbox{\textwidth}{testo}]... \\]
...
\end{tabbing}
|
In pratica, si inserisce il testo di ogni cella dentro l'ambiente definito dal comando \parbox, che ripristina le condizioni di funzionamento normale.
Per definire in modo preciso gli stop di tabulazione, ci si può avvalere del comando \hspace, il cui scopo è quello di produrre uno spazio orizzontale ben definito:
\begin{tabbing}
\hspace*{largh_col} [\= \hspace*{largh_col}]... \kill
\parbox{\textwidth}{testo} \ \[\> \parbox{\textwidth}{testo}]... \\
[\parbox{\textwidth}{testo} \ \[\> \parbox{\textwidth}{testo}]... \\]
...
\end{tabbing}
|
L'asterisco che appare nel comando \hspace è un'opzione necessaria a evitare che lo spazio finale venga eliminato (diversamente non si otterrebbe l'effetto desiderato). Viene ripreso l'esempio iniziale, modificato con le tecniche appena descritte, aggiungendo una colonna ulteriore per dei commenti:
\begin{tabbing}
\hspace*{3cm} \= \hspace*{2cm} \= \hspace*{3cm} \= \hspace*{4cm} \kill
\parbox{\textwidth}{nero} \> \parbox{\textwidth}{0}
\> \parbox{\textwidth}{zero} \\
\parbox{\textwidth}{marrone} \> \parbox{\textwidth}{1}
\> \parbox{\textwidth}{uno} \\
\parbox{\textwidth}{rosso} \> \parbox{\textwidth}{2}
\> \parbox{\textwidth}{due} \\
\parbox{\textwidth}{arancio} \> \parbox{\textwidth}{3}
\> \parbox{\textwidth}{tre} \\
\parbox{\textwidth}{giallo} \> \parbox{\textwidth}{4}
\> \parbox{\textwidth}{quattro} \\
\parbox{\textwidth}{verde} \> \parbox{\textwidth}{5}
\> \parbox{\textwidth}{cinque} \\
\parbox{\textwidth}{blu} \> \parbox{\textwidth}{6}
\> \parbox{\textwidth}{sei} \\
\parbox{\textwidth}{viola} \> \parbox{\textwidth}{7}
\> \parbox{\textwidth}{sette} \\
\parbox{\textwidth}{grigio} \> \parbox{\textwidth}{8}
\> \parbox{\textwidth}{otto} \\
\parbox{\textwidth}{bianco} \> \parbox{\textwidth}{9}
\> \parbox{\textwidth}{nove} \\
\parbox{\textwidth}{argento} \> \parbox{\textwidth}{10 \%}
\> \> \parbox{\textwidth}{bla bla bla bla bla bla bla bla bla bla bla} \\
\parbox{\textwidth}{oro} \> \parbox{\textwidth}{5 \%} \\
\> \parbox{\textwidth}{2 \%} \\
\> \parbox{\textwidth}{1 \%} \\
\end{tabbing}
|
|
Per il momento, le tecniche mostrate non risolvono ancora il problema del traboccamento del testo da una colonna a quella successiva. A questo proposito, nell'esempio si può osservare che il commento nella quarta colonna, per la quale si prevede una larghezza di 4 cm, va oltre lo spazio a disposizione.
Per ovviare a questo inconveniente, occorre controllare meglio il comando \parbox, specificando esattamente la larghezza, nello stesso modo usato per la definizione degli stop di tabulazione:
\begin{tabbing}
\hspace*{3cm} \= \hspace*{2cm} \= \hspace*{3cm}
\= \hspace*{4cm} \kill
\parbox{3cm}{nero} \> \parbox{2cm}{0}
\> \parbox{3cm}{zero} \\
\parbox{3cm}{marrone} \> \parbox{2cm}{1}
\> \parbox{3cm}{uno} \\
\parbox{3cm}{rosso} \> \parbox{2cm}{2}
\> \parbox{3cm}{due} \\
\parbox{3cm}{arancio} \> \parbox{2cm}{3}
\> \parbox{3cm}{tre} \\
\parbox{3cm}{giallo} \> \parbox{2cm}{4}
\> \parbox{3cm}{quattro} \\
\parbox{3cm}{verde} \> \parbox{2cm}{5}
\> \parbox{3cm}{cinque} \\
\parbox{3cm}{blu} \> \parbox{2cm}{6}
\> \parbox{3cm}{sei} \\
\parbox{3cm}{viola} \> \parbox{2cm}{7}
\> \parbox{3cm}{sette} \\
\parbox{3cm}{grigio} \> \parbox{2cm}{8}
\> \parbox{3cm}{otto} \\
\parbox{3cm}{bianco} \> \parbox{2cm}{9}
\> \parbox{3cm}{nove} \\
\parbox{3cm}{argento} \> \parbox{2cm}{10 \%}
\> \> \parbox{4cm}{bla bla bla bla bla bla bla
bla bla bla bla} \\
\parbox{3cm}{oro} \> \parbox{2cm}{5 \%} \\
\> \parbox{2cm}{2 \%} \\
\> \parbox{2cm}{1 \%} \\
\end{tabbing}
|
|
In questo modo, finalmente, il testo che eccede lo spazio a disposizione viene suddiviso automaticamente in più righe; inoltre, è possibile controllare la posizione verticale del testo nella cella, attraverso le opzioni di \parbox.
L'ultimo problema che vale la pena di prendere in considerazione in questo tipo di ambiente, è la definizione di tabulazioni relative all'ampiezza del testo. Ciò si ottiene anteponendo un numero davanti al comando che restituisce già questo valore. Per esempio, 0.5\textwidth rappresenta esattamente la metà dell'ampiezza orizzontale a disposizione. Viene riproposto l'esempio consueto con l'indicazione di ampiezze relative:
\begin{tabbing}
\hspace*{0.2\textwidth} \= \hspace*{0.1\textwidth}
\= \hspace*{0.2\textwidth}
\= \hspace*{0.8\textwidth} \kill
\parbox{0.2\textwidth}{nero} \> \parbox{0.1\textwidth}{0}
\> \parbox{0.2\textwidth}{zero} \\
\parbox{0.2\textwidth}{marrone} \> \parbox{0.1\textwidth}{1}
\> \parbox{0.2\textwidth}{uno} \\
\parbox{0.2\textwidth}{rosso} \> \parbox{0.1\textwidth}{2}
\> \parbox{0.2\textwidth}{due} \\
\parbox{0.2\textwidth}{arancio} \> \parbox{0.1\textwidth}{3}
\> \parbox{0.2\textwidth}{tre} \\
\parbox{0.2\textwidth}{giallo} \> \parbox{0.1\textwidth}{4}
\> \parbox{0.2\textwidth}{quattro} \\
\parbox{0.2\textwidth}{verde} \> \parbox{0.1\textwidth}{5}
\> \parbox{0.2\textwidth}{cinque} \\
\parbox{0.2\textwidth}{blu} \> \parbox{0.1\textwidth}{6}
\> \parbox{0.2\textwidth}{sei} \\
\parbox{0.2\textwidth}{viola} \> \parbox{0.1\textwidth}{7}
\> \parbox{0.2\textwidth}{sette} \\
\parbox{0.2\textwidth}{grigio} \> \parbox{0.1\textwidth}{8}
\> \parbox{0.2\textwidth}{otto} \\
\parbox{0.2\textwidth}{bianco} \> \parbox{0.1\textwidth}{9}
\> \parbox{0.2\textwidth}{nove} \\
\parbox{0.2\textwidth}{argento}
\> \parbox{0.1\textwidth}{10 \%}
\> \> \parbox{0.3\textwidth}{bla bla bla bla bla bla bla
bla bla bla bla} \\
\parbox{0.2\textwidth}{oro}
\> \parbox{0.1\textwidth}{5 \%} \\
\> \parbox{0.1\textwidth}{2 \%} \\
\> \parbox{0.1\textwidth}{1 \%} \\
\end{tabbing}
|
|
Questo tipo di tabella, ottenuta attraverso degli stop di tabulazione, è fatta per poter essere separata anche in più pagine; inoltre, non si adatta facilmente all'inserimento di bordi attorno alle celle. Tuttavia, per la gestione dei bordi si preferisce di solito l'ambiente tabular.
50.11.2
Tabella fatta di colonne e righe
Anche se in pratica si tratta sempre della stessa cosa, l'ambiente tabular non fa riferimento a degli stop di tabulazione, ma a delle colonne, definite contestualmente alla dichiarazione iniziale dell'ambiente:
\begin{tabular}{definizione_delle_colonne}
testo & testo [& testo]... \\
[testo & testo [& testo]... \\]
...
\end{tabular}
|
Il modello appena mostrato è semplificato rispetto alle possibilità complessive dell'ambiente tabular. Come si può intuire, il simbolo & viene usato per identificare la fine di una colonna e l'inizio di quella successiva; inoltre, come già avveniva per l'ambiente tabbing, si usa il comando \\ per dichiarare la fine di una riga della tabella.
La definizione delle colonne avviene attraverso una stringa particolare che può essere anche molto articolata. Per cominciare in modo semplice, si può usare una lettera per ogni colonna, dove la lettera ha un significato specifico:
Lettera | Descrizione |
l
| rappresenta una colonna il cui contenuto deve essere allineato a sinistra; |
r
| rappresenta una colonna il cui contenuto deve essere allineato a destra; |
c
| rappresenta una colonna il cui contenuto deve essere allineato al centro. |
|
Inoltre, esiste la possibilità di segnalare l'inserzione di una linea verticale alle estremità oppure tra una colonna e l'altra:
Simbolo | Descrizione |
|
| rappresenta una separazione attraverso una linea verticale. |
|
Per esempio, la tabella che viene dichiarata nel modo seguente, indica la presenza di tre colonne, dove la prima e la terza ha il testo allineato a sinistra, mentre quella centrale ha il testo allineato a destra; inoltre, definisce un bordo verticale sinistro, un bordo destro e un bordo tra la prima e la seconda colonna.
Viene riproposto un esempio già mostrato a proposito dell'ambiente tabbing, secondo questa definizione di colonne:
\begin{tabular}{|l|rl|}
nero & 0 & zero \\
marrone & 1 & uno \\
rosso & 2 & due \\
arancio & 3 & tre \\
giallo & 4 & quattro \\
verde & 5 & cinque \\
blu & 6 & sei \\
viola & 7 & sette \\
grigio & 8 & otto \\
bianco & 9 & nove \\
argento & 10 \% & \\
oro & 5 \% & \\
& 2 \% & \\
& 1 \% & \\
\end{tabular}
|
|
Come si vede, non è stata dichiarata l'ampiezza delle colonne, pertanto questa viene determinata automaticamente, prendendo in considerazione l'ampiezza della cella che contiene il testo più lungo, anche se questo può produrre una tabella più larga dello spazio a disposizione nel corpo del documento.
Sempre rimanendo a un livello realizzativo molto semplice, si possono inserire delle linee orizzontali, attraverso il comando \hline, come nella variante seguente, in cui si aggiunge anche un'intestazione molto semplice:
\begin{tabular}{|l|rl|}
\hline
Colore & Numero & \\
\hline
nero & 0 & zero \\
marrone & 1 & uno \\
rosso & 2 & due \\
arancio & 3 & tre \\
giallo & 4 & quattro \\
verde & 5 & cinque \\
blu & 6 & sei \\
viola & 7 & sette \\
grigio & 8 & otto \\
bianco & 9 & nove \\
argento & 10 \% & \\
oro & 5 \% & \\
& 2 \% & \\
& 1 \% & \\
\hline
\end{tabular}
|
|
Per quanto visto fino a questo momento, si intende che non si possono ottenere celle in cui il testo utilizzi più di una riga. Tuttavia, come già mostrato a proposito dell'ambiente tabbing, si può sfruttare il comando \parbox:
\documentclass{article}
\usepackage[italian]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\frenchspacing
\pagestyle{empty}
\setlength{\textwidth}{14cm}
\begin{document}
\begin{tabular}{|l|rl|l|}
\hline
\parbox{0.2\textwidth}{Colore}
& \parbox{0.1\textwidth}{Numero} & & \\
\hline
\parbox{0.2\textwidth}{nero} & \parbox{0.1\textwidth}{0}
& \parbox{0.2\textwidth}{zero} & \\
\parbox{0.2\textwidth}{marrone} & \parbox{0.1\textwidth}{1}
& \parbox{0.2\textwidth}{uno} & \\
\parbox{0.2\textwidth}{rosso} & \parbox{0.1\textwidth}{2}
& \parbox{0.2\textwidth}{due} & \\
\parbox{0.2\textwidth}{arancio} & \parbox{0.1\textwidth}{3}
& \parbox{0.2\textwidth}{tre} & \\
\parbox{0.2\textwidth}{giallo} & \parbox{0.1\textwidth}{4}
& \parbox{0.2\textwidth}{quattro} & \\
\parbox{0.2\textwidth}{verde} & \parbox{0.1\textwidth}{5}
& \parbox{0.2\textwidth}{cinque} & \\
\parbox{0.2\textwidth}{blu} & \parbox{0.1\textwidth}{6}
& \parbox{0.2\textwidth}{sei} & \\
\parbox{0.2\textwidth}{viola} & \parbox{0.1\textwidth}{7}
& \parbox{0.2\textwidth}{sette} & \\
\parbox{0.2\textwidth}{grigio} & \parbox{0.1\textwidth}{8}
& \parbox{0.2\textwidth}{otto} & \\
\parbox{0.2\textwidth}{bianco} & \parbox{0.1\textwidth}{9}
& \parbox{0.2\textwidth}{nove} & \\
\parbox{0.2\textwidth}{argento}
& \parbox{0.1\textwidth}{10 \%}
& & \parbox{0.3\textwidth}{bla bla bla bla bla bla bla
bla bla bla bla} \\
\parbox{0.2\textwidth}{oro}
& \parbox{0.1\textwidth}{5 \%}
& & \\
& \parbox{0.1\textwidth}{2 \%}
& & \\
& \parbox{0.1\textwidth}{1 \%}
& & \\
\hline
\end{tabular}
\end{document}
|
|
Per ottenere un risultato molto simile a questo, si potrebbe usare una dichiarazione particolare nella definizione delle colonne:
\begin{tabular}{|p{0.2\textwidth}|\ \p{0.1}\textwidth}p{0.2\textwidth}|p{0.3\textwidth}|}
|
|
In tal modo si semplifica l'indicazione dei dati nelle celle:
\begin{tabular}{|p{0.2\textwidth}|p{0.1\textwidth}
p{0.2\textwidth}|p{0.3\textwidth}|}
\hline
Colore & Numero & & \\
\hline
nero & 0 & zero & \\
marrone & 1 & uno & \\
rosso & 2 & due & \\
arancio & 3 & tre & \\
giallo & 4 & quattro & \\
verde & 5 & cinque & \\
blu & 6 & sei & \\
viola & 7 & sette & \\
grigio & 8 & otto & \\
bianco & 9 & nove & \\
argento & 10 \% & & bla bla bla bla
bla bla bla bla
bla bla bla \\
oro & 5 \% & & \\
& 2 \% & & \\
& 1 \% & & \\
\hline
\end{tabular}
|
|
Come si può intuire, quella p{} è un modo per dire che il contenuto delle celle deve essere racchiuso all'interno del comando \parbox e il funzionamento è molto simile.
Oltre alla possibilità di usare il comando \hline per ottenere una linea orizzontale che divida le righe della tabella, si può ottenere una linea che intervenga solo nell'ambito di alcune colonne, attraverso il comando \cline. Si osservi l'esempio seguente che è solo una piccola variante dell'ultimo già presentato:
\begin{tabular}{|p{0.2\textwidth}|p{0.1\textwidth}
p{0.2\textwidth}|p{0.3\textwidth}|}
\hline
Colore & Numero & & \\
\hline
nero & 0 & zero & \\
marrone & 1 & uno & \\
...
\cline{1-3}
argento & 10 \% & & bla bla bla
bla bla bla
bla bla bla
bla bla \\
oro & 5 \% & & \\
\cline{2-4}
& 2 \% & & \\
& 1 \% & & \\
\hline
\end{tabular}
|
|
In pratica, \cline{1-3} genera una linea orizzontale che parte dall'inizio della prima colonna, fino alla fine della terza colonna; nello stesso modo, \cline{2-4} genera una linea dalla seconda colonna fino alla quarta inclusa:(4)
50.11.3
Tabella a cavallo di più pagine
L'ambiente tabular genera un blocco che non può essere diviso tra le pagine; per ottenere una tabella che può continuare nelle pagine successive, si può usare l'ambiente longtable, che però richiede un pacchetto esterno con lo stesso nome. Il funzionamento generale dell'ambiente longtable è molto simile a quello di tabular, con l'aggiunta di qualche comando che consente di individuare un'intestazione e un piede da ripetere quando la tabella si interrompe e riprende nella pagina successiva:
Comando | Descrizione |
\usepackage{longtable}
| dichiara l'utilizzo del pacchetto necessario alla gestione delle tabelle «lunghe»; |
\begin{longtable}{descrizione_colonne}
...
\end{longtable}
| dichiara l'ambiente di una tabella lunga; |
\endhead
| dichiara la fine delle righe da usare come intestazione; |
\endfoot
| dichiara la fine delle righe da usare alla base della tabella. |
|
In generale, una volta dichiarato l'ambiente, si inseriscono le righe da usare come intestazione e subito dopo quelle da usare alla base della tabella; infine si inseriscono le righe del corpo della tabella.
Per il funzionamento dell'ambiente longtable non è indispensabile individuare delle righe di intestazione e di conclusione della tabella; tuttavia, per ottenere un risultato gradevole al cambio pagina, conviene sfruttare questa caratteristica.
|
L'esempio seguente è solo una piccola variante di un altro già apparso a proposito dell'ambiente tabular. Si osservi in particolare l'uso dei comandi \endhead e \endfoot:
...
\usepackage{longtable}
...
\begin{document}
...
\begin{longtable}{|p{0.2\textwidth}|p{0.1\textwidth}
p{0.2\textwidth}|p{0.3\textwidth}|}
\hline
Colore & Numero & & \\
\hline
\endhead
\hline
\endfoot
nero & 0 & zero & \\
marrone & 1 & uno & \\
...
& 1 \% & & \\
\end{longtable}
|
|
Come si vede nell'esempio, ciò che viene messo alla base della tabella è semplicemente un comando \hline, per ottenere una linea orizzontale quando la tabella si interrompe; così facendo, alla fine della tabella non viene aggiunto un comando \hline, perché altrimenti i due si sommerebbero:
Le tabelle ottenute con l'ambiente longtable hanno degli inconvenienti. Quello più appariscente riguarda l'incapacità di tenere in considerazione le note a piè di pagina, le quali vengono tranquillamente sovrascritte da una tabella che scorre anche sulla pagina successiva.
|
50.12
LaTeX: figure
Esistono diversi modi di realizzare dei disegni o di importare delle immagini esterne con LaTeX. Probabilmente, la tecnica più comune è quella di incorporare un'immagine o un disegno realizzato con strumenti interattivi esterni, ma è comunque importante conoscere più possibilità a disposizione, anche se non nel dettaglio.
50.12.1
Disegnare con LaTeX
LaTeX offre un ambiente particolare, picture, nel quale è possibile realizzare dei disegni utilizzando eventualmente dei comandi specifici. In generale, si tratta soprattutto di grafici, che contengono anche del testo collocato in modo preciso. L'esempio seguente serve per dare un punto di riferimento visivo alla descrizione che viene fatta successivamente a proposito di questo ambiente:
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 bla bla bla bla bla bla bla bla bla bla bla
bla bla bla
\setlength{\unitlength}{1cm}
\begin{picture}(3,2)(0,0)
\put(0,0){0,0}
\put(0,0){\line(1,0){3}}
\put(0,2){\line(1,0){3}}
\put(0,0){\line(0,1){2}}
\put(3,0){\line(0,1){2}}
\put(3,2){3,2}
\end{picture}
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 bla bla bla bla bla bla bla bla bla bla bla
bla bla bla
|
|
Ecco il risultato della composizione. Il testo prima e dopo la figura, serve a comprendere in che modo LaTeX la allinea e quanto viene spaziata verticalmente:
L'ambiente picture viene dichiarato in modo insolito rispetto agli altri comandi di LaTeX:
\setlength{\unitlength}{dimensione}
...
\begin{picture}(ampiezza,altezza)(coordinata_iniziale_x,\ \ coordinata_iniziale_y)
\put(coordinata_x,coordinata_y){oggetto}
...
...
\end{picture}
|
In pratica, da qualche parte del documento, prima dell'uso dell'ambiente picture, occorre assegnare un valore (non elastico) alla lunghezza \unitlength; questa lunghezza diventa poi l'unità di misura delle lunghezze e delle coordinate usate nell'ambito dell'ambiente picture. Naturalmente, il valore di \unitlength può essere cambiato successivamente, prima di altre figure.
Come si può vedere, l'ambiente picture utilizza degli argomenti tra parentesi tonde, che non si trovano altrimenti in LaTeX, ma la cosa più interessante è che la seconda parentesi tonda è facoltativa.(5)
La prima coppia di numeri tra parentesi tonde serve a delimitare un rettangolo ideale, all'interno del quale si intende collocare la figura. Nel caso dell'esempio, dal momento che \unitlength è di 1 cm, si tratta di un rettangolo largo 3 cm e alto 2 cm. La seconda coppia di numeri, opzionale, specifica le coordinate dell'angolo inferiore sinistro. Di solito si assegna a queste coordinate il valore zero, come si vede nell'esempio.
Gli «oggetti» grafici o testuali che vengono piazzati nella figura possono anche essere collocati al di fuori del rettangolo che la dovrebbe contenere, ma ovviamente, in tal modo viene meno il senso della definizione all'inizio dell'ambiente picture.
|
Tutto ciò che appare all'interno dell'ambiente picture viene inserito tramite il comando \put, dove, sempre tra parentesi quadre, si individuano le coordinate iniziali di un oggetto da collocare. Queste coordinata iniziali si intendono sempre relative alle coordinate iniziali del rettangolo in cui si colloca la figura.
L'esempio introduttivo, mostra un riquadro, disegnato sul bordo esterno del rettangolo che rappresenta l'area della figura. Inoltre, vengono collocate due etichette testuali, a partire dall'angolo inferiore sinistro di questo rettangolo e a partire dall'angolo superiore destro, per consentire di comprendere in che modo viene collocato il testo. In effetti, si può vedere che quanto scritto a partire dall'angolo superiore destro si trova in pratica al di fuori del rettangolo della figura.
All'interno del controllo di \put possono essere usati diversi comandi specifici, con i quali si realizzano facilmente linee, riquadri, ovali e cerchi. Viene mostrato un elenco parziale di questi.
Comando | Descrizione |
\circle*{diametro}
| Disegna un cerchio con centro nelle coordinate iniziali, del diametro indicato, espresso in quantità di \unitlength. Se si usa l'asterisco, si ottiene un cerchio pieno (nero). |
\dashbox{lunghezza_del_tratteggio}\ \(ampiezza,altezza) \ \[t|l|b|r|tl|bl|br|tr]{testo}
| Disegna un rettangolo tratteggiato, con le coordinate iniziali corrispondenti all'angolo inferiore sinistro. L'ampiezza e l'altezza sono numeri che esprimono quantità di \unitlength. All'interno del rettangolo si può collocare del testo, contenuto nell'ultimo argomento, che di solito appare al centro, salvo il suo riposizionamento con l'uso di lettere particolari nell'argomento opzionale tra parentesi quadre. |
\makebox(ampiezza,altezza)\ \[t|l|b|r|tl|bl|br|tr]{testo}
| Delimita un rettangolo, senza bordo, con le coordinate iniziali corrispondenti all'angolo inferiore sinistro. L'ampiezza e l'altezza sono numeri che esprimono quantità di \unitlength. All'interno del rettangolo si può collocare del testo, contenuto nell'ultimo argomento, che di solito appare al centro, salvo il suo riposizionamento con l'uso di lettere particolari nell'argomento opzionale tra parentesi quadre. |
\frame{oggetto}
| Disegna una cornice attorno all'oggetto, senza aggiungere altro spazio. |
\line(scostamento_x,scostamento_y)\ \{lunghezza}
| Disegna una linea a partire dalle coordinate iniziali, passante idealmente nelle coordinate descritte tra parentesi tonde, come valore che va a sommarsi alle coordinate iniziali. Questo punto passante può essere indicato solo con valori interi, da zero a sei, e serve in pratica a descrivere l'inclinazione della linea. |
\vector(scostamento_x,scostamento_y)\ \{lunghezza}
| Disegna una linea, come il comando \line, aggiungendo una freccia all'estremità finale. |
\oval(ampiezza,altezza)\ \[t|l|b|r|tl|bl|br|tr]
| Disegna un ovale, oppure, se molto grande, un rettangolo smussato. Le lettere tra parentesi quadre, opzionali, consentono di mostrare solo una porzione dell'ovale. |
\linethickness{lunghezza}
| Consente di fissare lo spessore delle linee diritte generate da alcuni comandi. È importante osservare che la lunghezza della linea deve essere un valore positivo, espresso in modo indipendente da \unitlength. |
|
Viene mostrato un esempio complessivo dei comandi descritti (escluso \linethickness):
\setlength{\unitlength}{1cm}
\begin{picture}(9,6)(0,0)
\put(0,0){\frame{\makebox(9,6){}}}
\put(1,1){\frame{tizio}}
\put(4,3){\dashbox{0.1}(1,0.5){caio}}
\put(4,3){\line(-3,-2){2.6}}
\put(4.5,3){\vector(0,-1){1}}
\put(4.5,1.5){\circle{1}}
\put(7,1.5){\oval(2,1)}
\put(5,1.5){\line(1,0){1}}
\end{picture}
|
|
Come si intende, la realizzazione di disegni attraverso l'ambiente picture, può risultare impegnativo, quando il disegno diventa complesso. Tuttavia esiste la possibilità di usare XFig (sezione 29.6.4), che è in grado di esportare i propri disegni in formato LaTeX, con le limitazioni grafiche necessarie. A titolo di esempio, si suppone di avere realizzato il file FIG disegno.fig
, corrispondente a ciò che si può vedere sotto:
Per trasformare questo file in codice adatto a un sorgente LaTeX si può usare fig2dev nel modo seguente, allo scopo di generare il file disegno.tex
:
$
fig2dev -L latex disegno.fig disegno.tex
[Invio]
Il file che si ottiene è piuttosto complesso e probabilmente qualche comando non viene individuato correttamente da LaTeX. Per ovviare all'inconveniente, dovrebbe essere sufficiente eliminare i comandi che creano dei problemi. In generale dovrebbe trattarsi del comando \color:
$
cat disegno.tex
\
\| sed "s/[\]color\\[rgb\\][{][0-9,]*[}]//"
\
\> disegno_2.tex
[Invio]
Ecco cosa si ottiene alla fine, con la composizione LaTeX:
50.12.2
Importazione di file EPS esterni
Un modo più semplice di inserire delle immagini nel testo realizzato con LaTeX è quello di incorporare delle immagini esterne attraverso il pacchetto epsfig, il quale si incorpora con il comando seguente, inserito preferibilmente nel preambolo:
Successivamente è possibile usare il comando \epsfig per fare riferimento a un file EPS (Encapsulated PostScript) da inserire nella composizione finale. Semplificando si può indicare come nel modello sintattico seguente:
\epsfig{file=file_eps,height=altezza,width=larghezza,\ \angle=rotazione}
|
Il file rappresenta il percorso assoluto o relativo di un file EPS (oppure PostScript), ma senza estensione: il pacchetto epsfig si attende di trovarlo con l'estensione .ps
. La larghezza e l'altezza vengono espresse nell'unità di misura desiderata; infine, l'angolo di rotazione permette di girare l'immagine, ma di solito si lascia il valore zero.
Non tutte le informazioni sono necessarie; per esempio, se si omettono le informazioni su altezza e larghezza, si fa riferimento alle dimensioni originali; nello stesso modo, se si mette solo la larghezza, si ottiene un'altezza proporzionale. In pratica, si individuano delle opzioni separate da virgole che possono essere omesse.
L'uso del pacchetto epsfig è compatibile con pdfLaTeX, il quale invece incorpora immagini in formato PNG. Questi file vengono cercati nello stesso percorso, ma con estensione .png .
|
In alternativa esiste anche un altro pacchetto adatto all'inserimento di immagini EPS. Si tratta di graphicx che si incorpora con il comando seguente inserito nel preambolo del sorgente LaTeX:
Successivamente si può usare il comando \includegraphics:
\includegraphics\ \[width=larghezza,height=altezza,scale=scala,angle=rotazione] \ \{file_eps}
|
A differenza di quanto visto con \epsfig, c'è anche la possibilità di definire una scala, attraverso un valore, dove l'unità rappresenta un rapporto pari al 100 %.
Con \includegraphics esiste anche una differenza più importante rispetto a \epsfig: è necessario indicare anche l'estensione del file, la quale non è più determinata automaticamente. In questo modo, se si intende usare pdfLaTeX, è necessario fare riferimento a formati grafici differenti, cambiando di conseguenza l'estensione.
|
50.12.3
Estrazione di file EPS dal file PostScript finale
All'interno di un file PostScript, generato attraverso LaTeX e Dvips, le immagini inserite incorporando file EPS, come descritto nella sezione precedente, sono delimitate da due direttive molto precise:
%%BeginDocument: nome_file
codice_eps_della_figura
%%EndDocument
|
Sapendo questo, è possibile recuperare le immagini da un file PostScript di questo tipo attraverso un procedimento manuale, o automatico. Quello che segue è un piccolo programma Perl che legge dallo standard input il file PostScript e crea tutti i file che trova dichiarati come appena descritto (una copia di questo file dovrebbe essere disponibile anche qui: allegati/ps-latex-picture-save.pl):
#!/usr/bin/perl
#
my ($line) = "";
my ($picture) = "";
my ($save) = 0;
#
while ($line = <STDIN>)
{
if ($line =~ m/^\%\%BeginDocument: (\S+)$/)
{
$save = 1;
$picture = $1;
open (PICTURE, "> $picture");
}
elsif ($line =~ m/^\%\%EndDocument$/)
{
close (PICTURE);
$picture = "";
$save = 0;
}
else
{
if ($save)
{
print PICTURE ("$line");
}
}
}
|
|
Supponendo che questo programma sia stato salvato nel file ps-latex-picture-save
e che sia stato reso eseguibile, si potrebbe usare come nell'esempio seguente:
$
ps-latex-picture-save < mio_file.ps
[Invio]
Si osservi che questo procedimento può funzionare solo se il file PostScript di partenza è stato ottenuto direttamente da Dvips, tenendo conto che non ci devono essere state delle rielaborazioni successive, altrimenti si perdono i riferimenti descritti.
50.13
Ambienti matematici
Come avviene per TeX, anche LaTeX distingue una modalità di composizione normale, da una modalità matematica. A differenza di TeX, esistono degli ambienti speciali per la dichiarazione della modalità matematica, ma è ancora ammissibile l'uso del simbolo $ e di $$ per individuare l'inizio e la fine degli ambienti matematici.
Molto di quanto già descritto a proposito di TeX (sezione 49.16), vale ovviamente anche per la composizione matematica di LaTeX. Pertanto, alcuni dettagli non vengono descritti nuovamente.
Si tenga presente che la gestione degli ambienti matematici potrebbe essere ancora più raffinata con l'utilizzo del pacchetto amsmath (\usepackage{amsmath}).
50.13.1
Definizione della modalità matematica
La modalità matematica si può definire con LaTeX in diversi modi. Anche con LaTeX si distingue se la composizione matematica vada inserita nell'ambito del testo normale, oppure in un blocco indipendente. L'elenco seguente riepiloga le istruzioni necessarie a delimitare gli ambienti matematici:
Comando | Descrizione |
\begin{math}testo_matematico\end{math}
\(testo_matematico\)
$testo_matematico$
| compone il testo matematico nel blocco già esistente; |
\begin{displaymath}
testo_matematico
\end{displaymath}
\[testo_matematico\]
$$testo_matematico$$
| compone il testo matematico in un blocco separato; |
\begin{equation}
testo_matematico
\end{equation}
| compone il testo matematico in un blocco separato, annotando sul bordo il numero dell'equazione. |
|
Come si vede dall'elenco, vengono offerte delle alternative per ottenere lo stesso tipo di ambiente. Vengono mostrati due esempi molto semplici, già apparsi nel capitolo riferito a TeX, che riguardano l'inserimento di una formula nel testo normale e la sua separazione in un blocco a sé stante:
Se $R$ è il ritardo di ogni singola consegna, $T$
è il tempo a disposizione per la consegna, $I$ è il valore
della merce, il ritardo medio si esprime come
\begin{math}{\sum {R \over T} \cdot I}\over{\sum I}
\end{math}.
|
|
Se $R$ è il ritardo di ogni singola consegna, $T$
è il tempo a disposizione per la consegna, $I$ è il valore
della merce, il ritardo medio si esprime secondo la formula
seguente:
\begin{displaymath}{\sum {R \over T} \cdot I}\over{\sum
I}\end{displaymath}
|
|
A parte le situazioni normali, merita attenzione l'ambiente equation, con il quale si può inserire un'equazione in un blocco separato, al quale si può fare riferimento tramite un'etichetta. Si osservi l'esempio:
L'equazione \ref{ritardo-medio} mostra in che modo si
calcola il ritardo medio, dove $R$ è il ritardo di ogni
singola consegna, $T$ è il tempo a disposizione per la
consegna e $I$ è il valore della merce.
\begin{equation}\label{ritardo-medio}
{\sum {R \over T} \cdot I}\over{\sum I}
\end{equation}
|
|
50.13.2
Spazi orizzontali e punteggiatura
LaTeX si comporta nello stesso modo di TeX a proposito della spaziatura orizzontale negli ambienti matematici. In pratica, gli spazi orizzontali vengono ignorati, a meno che si usino comandi appositi per inserirli:
Sequenza | Significato |
\qquad
| Due quadratoni. |
\quad
| Un quadratone. |
\<SP>
| Uno spazio «normale». |
$\;$
| Uno spazio spesso (5/8 di quadratone). |
$\>$
| Uno spazio medio (2/9 di quadratone). |
$\.$
| Uno spazio molto sottile (1/6 di quadratone). |
$\!$
| Uno spazio negativo (-1/6 di quadratone). |
|
Per inserire del testo descrittivo all'interno di un ambiente matematico, lo si può delimitare in una scatola orizzontale, con il comando \makebox, o più semplicemente con \mbox:
$prima durante e dopo$\par
$prima \mbox{ durante } e dopo$\par
|
|
Come si può intendere, si vuole isolare e spaziare la parola «durante» rispetto al resto, mostrandola con caratteri normali.
Anche la spaziatura attorno ai simboli di punteggiatura funziona esattamente come con TeX puro e semplice. L'esempio seguente riassume i casi principali:
$123456.7890$\par
$123456,7890$\par
$123456{,}7890$\par
$123456;7890$\par
$123456:7890$\par
$123456:=7890$\par
$123456\colon 7890$\par
|
|
50.13.3
Caratteri e simboli
LaTeX è più ricco di simboli rispetto a TeX, se si utilizza il pacchetto latexsym:
Le tabelle che seguono riepilogano i simboli a disposizione, inclusi quelli provenienti dal pacchetto latexsym.
Tabella 50.282. Accenti nell'ambiente matematico.
|
Tabella 50.283. Lettere greche.
|
Tabella 50.284. Simboli matematici comuni.
|
Tabella 50.285. Operatori binari comuni.
|
Tabella 50.286. Operatori di relazione.
|
Tabella 50.289. Altri simboli matematici.
|
50.13.4
Delimitatori
LaTeX dispone degli stessi delimitatori di TeX, mantenendo la disponibilità dei comandi \big... e \Big... per gli ingrandimenti controllati. La tabella seguente serve a richiamare l'uso di questi delimitatori, tenendo conto che l'uso dei comandi \big... e \Big... può essere esteso anche oltre gli esempi mostrati.
Esiste comunque la possibilità di usare comandi \big... \Big..., senza la lettera l o r che specifica trattarsi di un delimitatore sinistro o destro:
LaTeX offre anche qualche delimitatore speciale; precisamente delle parentesi graffe orizzontali, da usare sopra o sotto qualcosa:
Comando | Descrizione |
\overbrace{testo}
| sovrappone una parentesi graffa sopra il testo; |
\underbrace{testo}
| sovrappone una parentesi graffa sopra il testo. |
|
Sono ancora validi con LaTeX i comandi \overline e \underline, per sopralineare e sottolineare nell'ambiente matematico.
50.13.5
Modifica delle caratteristiche del carattere
Anche con LaTeX sono disponibili i comandi che permettono di controllare la dimensione del carattere negli ambienti matematici. In ordine decrescente, si tratta di: \displaystyle, \textstyle, \scriptstyle e \scriptscriptstyle. Viene mostrato un esempio già apparso a proposito di TeX:
$$x+{y\over x+{y\over x+{y\over x+{y\over x+{y\over
z}}}}}$$\par
$$x+{y\over \displaystyle x+{y\over \displaystyle x+{y\over
\displaystyle
x+{y\over \displaystyle x+{y\over z}}}}}$$\par
|
|
A differenza di TeX, LaTeX aggiunge dei comandi cumulabili, anche per la definizione dello stile e della forma del carattere matematico. Nella sezione 50.7.3 è già stato trattato questo argomento, comunque viene riportato nuovamente l'elenco di questi comandi:
Comando | Descrizione |
\mathnormal{testo}
| testo matematico normale; |
\mathrm{testo}
| tondo; |
\mathbf{testo}
| neretto; |
\mathsf{testo}
| lineare; |
\mathtt{testo}
| dattilografico; |
\mathit{testo}
| corsivo; |
\mathcal{testo}
| calligrafico; |
\mathsc{testo}
| maiuscoletto; |
|
50.13.6
Espressioni varie
LaTeX consente di usare i comandi per la realizzazione di frazioni e simili, già disponibili con TeX:
-
-
-
$${a \over x} + {b \over x} = {a+b \over x}$$
|
|
-
-
-
Inoltre, LaTeX mette a disposizione un comando aggiuntivo per le frazioni, che forse può risultare comodo in alcune situazioni:
Comando | Descrizione |
\frac{numeratore}{denominatore}
| frazione normale. |
|
Gli apici e i pedici funzionano con LaTeX esattamente come in TeX:
-
-
-
-
-
-
-
-
-
$\lim_{n\to 0} {1 \over n} = \infty$
|
|
-
$$\lim_{n\to 0} {1 \over n} = \infty$$
|
|
Per ottenere una radice, LaTeX utilizza il comando \sqrt, che però si comporta in modo leggermente diverso da TeX:
Comando | Descrizione |
\sqrt[n]{argomento}
| produce la radice n dell'argomento indicato. |
|
Seguono alcuni esempi:
LaTeX mette a disposizione gli stessi comandi di TeX per la scrittura dei nomi delle funzioni (sezione 49.17.8). Tuttavia, se si desidera scrivere il nome di una funzione in modo differente, lo si può inserire in una scatola orizzontale:
Per sovrapporre qualcosa si può usare il comando \stackrel:
50.13.7
Matrici e sistemi di equazioni
Con LaTeX si rappresentano le matrici in modo molto simile alle tabelle:
\begin{array}{definizione_delle_colonne}
testo & testo [& testo]... \\
[testo & testo [& testo]... \\]
...
\end{array}
|
La definizione delle colonne avviene, come per l'ambiente tabular, attraverso una stringa composta da tre lettere possibili:
Lettera | Significato mnemonico | Descrizione |
l
| left | rappresenta una colonna il cui contenuto deve essere allineato a sinistra; |
r
| right | rappresenta una colonna il cui contenuto deve essere allineato a destra; |
c
| center | rappresenta una colonna il cui contenuto deve essere allineato al centro. |
|
Comunque, come nell'ambiente tabular, è possibile anche inserire il simbolo | per ottenere una linea verticale e si può usare il comando \hline per inserire una linea orizzontale.
Segue un esempio molto semplice:
$$\left (
\begin{array}{cc|c}
a & b & c \\
d & e+f & g \\
\hline
h & i & j \\
\end{array}
\right )$$
|
|
Come si può osservare, l'ambiente array crea la tabella in cui vanno inseriti gli elementi della matrice, mentre la delimitazione esterna deve essere aggiunta espressamente:
Trattandosi di una matrice, l'ambiente array si presta in pratica anche per realizzare un sistema di equazioni; è sufficiente regolare correttamente l'allineamento delle colonne, come nell'esempio seguente:
$$|x| =
\bigg \{
\begin{array}{rl}
x & x \geq 0 \\
-x & x \leq 0 \\
\end{array}
$$
|
|
L'ambiente array può essere usato in pratica nello stesso modo di tabular, consentendo così la realizzazione di schemi più complessi di quanto mostrato qui. Eventualmente si consulti la sezione 50.11.2.
Tuttavia, esiste un ambiente speciale per elencare delle equazioni allineate a cui poter fare riferimento; si tratta di eqnarray:
\begin{eqnarray}
testo & testo & testo \\
testo & testo & testo \\
...
\end{eqnarray}
|
In pratica, si tratta di una tabella in cui si presuppone la presenza di tre colonne, allineate rispettivamente a sinistra, al centro e a sinistra. Sarebbe semplicissimo realizzare questo con l'ambiente array, ma la differenza sta nel fatto che ogni riga viene numerata in qualità di equazione. Si osservi l'esempio, in cui si inseriscono anche delle etichette che poi consentono di farvi riferimento:
\begin{eqnarray}
x & = & 2y \label{equazione_xy} \\
y & = & 3z \label{equazione_yz}
\end{eqnarray}
L'equazione \ref{equazione_xy} dice che... mentre
l'equazione \ref{equazione_yz} fa riferimento a...
|
|
Si osservi il fatto che l'ultima riga della matrice non è terminata con il simbolo \\, perché diversamente si otterrebbe un'equazione in più, numerata, anche se invisibile:
Ancora più importante è notare che l'ambiente eqnarray viene dichiarato in un contesto normale, ma delimita un ambiente matematico particolare.
|
Eventualmente, per evitare di numerare una certa riga, si può usare il comando \nonumber; inoltre, se si aggiunge un asterisco al nome dell'ambiente, non viene mostrata la numerazione di alcuna equazione:
\begin{eqnarray*}
x & = & 2y \label{equazione_xy} \\
y & = & 3z \label{equazione_yz}
\end{eqnarray*}
L'equazione \ref{equazione_xy} dice che... mentre l'equazione
\ref{equazione_yz} fa riferimento a...
|
|
50.13.8
Teoremi, corollari e dichiarazioni simili
LaTeX ha una gestione sofisticata delle dichiarazioni riconducibili a teoremi, corollari e simili. Si parte dalla dichiarazione di un ambiente, al quale si associa un contatore, in modo tale da non porre limitazioni al genere di dichiarazioni che si vogliono gestire.
Inizialmente si definisce il tipo di contesto a cui appartiene un certo gruppo di dichiarazioni:
\newtheorem{ambiente}{Titolo}[contatore_di_riferimento]
|
\newtheorem{ambiente}[ambiente_collegato]{Titolo}
|
La seconda delle due forme permette di definire un ambiente la cui numerazione deve seguire quella di un altro già definito. In questo senso, nel campo indicato come ambiente_collegato, va messo il nome di quello già esistente.
Per cominciare, si osservi l'esempio seguente, senza l'indicazione di alcun contatore di riferimento:
\newtheorem{teorema}{Teorema}
|
|
In questo modo si dichiara l'ambiente teorema, con il titolo «Teorema», assieme al contatore teorema (a cui si accede facilmente con il comando \thetheorem, creato implicitamente), usato in modo trasparente.
Nel dichiarare un ambiente di questo tipo, occorre evitare di scegliere nomi giù usati da LaTeX.
|
Dopo la definizione dell'ambiente teorema, si può usare in pratica questo ambiente; per esempio così:
\begin{teorema}
In teoria, non c'è differenza tra pratica e teoria.
\end{teorema}
\begin{teorema}
In pratica, la teoria è diversa dalla pratica.
\end{teorema}
|
|
Dal risultato della composizione si può osservare che il titolo, ovvero la parola «Teorema», viene messo in evidenza con un carattere nero, assieme al numero del contatore; subito dopo appare il testo del teorema in un carattere corsivo:
Nella definizione dell'ambiente teorema è stato omesso il contatore di riferimento, pertanto il conteggio dei teoremi parte da uno e prosegue di conseguenza. Si osservi invece l'esempio seguente, che presuppone un documento di tipo article:
\newtheorem{teorema}{Teorema}[section]
|
|
In questo modo, si ottiene una numerazione subordinata al contatore section, ovvero alla sequenza delle sezioni:
\section{Alcuni teoremi interessanti}
\begin{teorema}
In teoria, non c'è differenza tra pratica e teoria.
\end{teorema}
\begin{teorema}
In pratica, la teoria è diversa dalla pratica.
\end{teorema}
\section{Un'altra sezione}
\begin{teorema}
Un altro teorema.
\end{teorema}
|
|
Si può osservare che il numero mostrato dopo il titolo è strutturato, essendo composto da un prefisso che contiene il numero della sezione e da un suffisso che costituisce il numero relativo all'ambito della sezione:
Con questa tecnica della dipendenza da un altro contatore, si possono costruire dei corollari la cui numerazione dipende dal teorema appena enunciato. Nell'esempio seguente si mostra anche la definizione degli ambienti usati:
\newtheorem{teorema}{Teorema}[section]
\newtheorem{corollario}{Corollario}[teorema]
\section{Alcuni teoremi e corollari interessanti}
\begin{teorema}
In teoria, non c'è differenza tra pratica e teoria.
\end{teorema}
\begin{corollario}
Bla bla bla bla.
\end{corollario}
\begin{teorema}
In pratica, la teoria è diversa dalla pratica.
\end{teorema}
\begin{corollario}
Bla bla bla bla.
\end{corollario}
|
|
Volendo invece usare una numerazione unica, sia per i teoremi, sia per i corollari, si può usare la seconda forma per la definizione dell'ambiente:
\newtheorem{teorema}{Teorema}[section]
\newtheorem{corollario}[teorema]{Corollario}
...
|
|
Ecco il risultato seguendo l'ultimo esempio già mostrato:
Naturalmente si possono definire anche ambienti di tipo diverso, a seconda delle esigenze; quello che conta è non usare nomi che possono creare conflitti per LaTeX.
Dal momento che queste definizioni sono numerate, diventa importante potervi fare riferimento. Per questo è necessario dichiarare un'etichetta con il comando \label all'interno dell'ambiente:
\newtheorem{teorema}{Teorema}[section]
\section{Alcuni teoremi e corollari interessanti}
\begin{teorema} \label{teorema-della-teoria}
In teoria, non c'è differenza tra pratica e teoria.
\end{teorema}
Purtroppo, il teorema \ref{teorema-della-teoria} viene
confutato dal teorema \ref{teorema-della-pratica}:
\begin{teorema} \label{teorema-della-pratica}
In pratica, la teoria è diversa dalla pratica.
\end{teorema}
|
|
50.14
File esterni
LaTeX prevede alcuni comandi per l'inclusione di file esterni; inoltre, è possibile creare file con informazioni ottenute in fase di composizione, in modo da poterle rielaborare successivamente con altri programmi.
50.14.1
Importazione
Esistono due comandi molto simili per dire a LaTeX di incorporare un file esterno:
Comando | Descrizione |
\input{nome_file}
| include il file nel punto in cui appare il comando (può essere usato anche nel preambolo); |
\include{nome_file}
| include il file nel punto in cui appare il comando, dopo un salto pagina (non può essere usato nel preambolo); |
\includeonly{nome_file_1,nome_file_2,...\ \ nome_file_n}
| usato nel preambolo, consente di selezionare quali file possono essere inclusi effettivamente con il comando \include. |
|
Se i nomi dei file non contengono l'estensione, si intende che questa sia .tex
; inoltre, come si può intuire dal nome, il comando \includeonly può interferire solo con le inclusioni attraverso \include.
50.14.2
Importazione letterale
Se si utilizza il pacchetto verbatim viene messo a disposizione un comando particolare per l'inserimento di file esterni da rappresentare nella composizione in modo letterale:
Comando | Descrizione |
\usepackage{verbatim}
| include il pacchetto verbatim (nel preambolo); |
\verbatiminput{nome_file}
| include il file nel punto in cui appare, rappresentandolo tale e quale. |
|
50.14.3
Creazione di file
Per creare un file si deve prima definire il flusso in uscita, attribuendogli un nome, quindi questo deve essere aperto, inserendovi dei dati, infine lo si chiude. Di solito si creano file con una radice uguale a quella del file contenente il sorgente, attraverso il comando \jobname:
Comando | Descrizione |
\newwrite\nome_flusso}
| dichiara il nome del flusso da aprire in scrittura; |
\immediate\openout\nome_flusso\ \\jobname.estensione
| crea il file con estensione .estensione e lo associa al flusso indicato; |
\immediate\write\nome_flusso{testo}
| aggiunge in coda al file una riga di testo, come indicato nell'argomento; |
\immediate\closeout\nome_flusso
| chiude il file corrispondente al flusso indicato; |
\jobname
| si espande nella stringa corrispondente alla radice del nome del file LaTeX sorgente. |
|
L'esempio seguente mostra in che modo si potrebbe realizzare un indice generale elementare:
...
\chapter*{Indice generale}
\input{\jobname.indice}
...
\newwrite\miofile
\immediate\openout\miofile\jobname.indice
...
\chapter*{Introduzione}
\immediate\write\miofile{Introduzione {\arabic{page}}\par}
...
\chapter{Bla bla bla}
\immediate\write\miofile{Bla bla bla {\arabic{page}}\par}
...
\appendix
\chapter{Appendice}
\immediate\write\miofile{Appendice {\arabic{page}}\par}
...
\immediate\closeout\miofile
|
|
All'inizio dell'esempio si vede l'inclusione di un file con lo stesso nome del sorgente LaTeX ed estensione .indice
. Come si può intendere, la prima volta questo file non esiste e l'inclusione non produce alcun risultato. Successivamente si crea questo file, quindi, all'inizio di ogni sezione principale si annota il titolo di questa e la pagina in cui si trova. Nella composizione successiva, il file viene incluso e successivamente rigenerato, probabilmente con numeri di pagina diversi, a causa dell'allungamento del documento; nella terza composizione si dovrebbe ottenere un risultato soddisfacente. Ecco come si potrebbe presentare il file generato in questo modo:
Introduzione {1}\par
Bla bla bla {10}\par
Appendice {25}\par
|
|
Nell'esempio si deve osservare che \arabic{page} si è trasformato correttamente nel numero della pagina e \par è rimasto intatto. Nel caso si inserissero delle macro, si potrebbe ottenere un risultato indesiderabile. Per esempio, si potrebbe voler separare il titolo dal numero della pagina con dei puntini di sospensione elastici:
\immediate\write\miofile{Introduzione\dotfill{\arabic{page}}\par}
|
|
Il file generato si presenterebbe così:
Introduzione\unhbox \voidb@x \cleaders \ \\hbox to.44em{\hss .\hss }\hfill \kern \z@ {1}\par
|
|
In questi casi si può usare il comando \string per evitare che la barra obliqua inversa del comando \dotfill venga presa in considerazione:
\immediate\write\miofile{Introduzione\string\dotfill{\arabic{page}}\par}
|
|
50.15
Riferimenti
-
General documentation about (La)TeX, http://tex.loria.fr/english/general.html
-
Tobias Oetiker, The not so short introduction to LaTeX 2e, 2001, http://tobi.oetiker.ch/lshort/
-
Leslie Lamport et al., LaTeX 2e, http://www.emerson.emory.edu/services/latex/latex2e/latex2e_toc.html, info latex
-
Michel Goossens, Franck Mittelbach, Alexander Samarin, The LaTeX Companion, Addison-Wesley, 1994
-
Leslie Lamport, LaTeX, A document preparation system, User's guide and reference manual, Addison-Wesley, seconda edizione, 1994
-
Claudio Beccari, LaTeX, Guida a un sistema di editoria elettronica, Hoepli, 1991, ISBN 88-203-1931-4
-
Robert Kiesling, teTeX HOWTO: The Linux-teTeX Local Guide, http://tldp.org/HOWTO
-
Documentazione interna della distribuzione teTeX: texmf/doc/*
, in particolare texmf/doc/latex/latex2e-html/
, dove si trova una guida di LaTeX in HTML
-
Documentazione interna Info: info web2c, info tex, info latex, info pdftex
-
Sebastian Rahtz, Hàn Thé Thành, The pdfTeX user manual, texmf/doc/pdftex/manual.pdf
-
Vidar Bronken Gundersen, Rune Mathisen, SGML/XML character entity reference, http://www.bitjungle.com/isoent/
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).
2) Eventualmente, per ottenere il carattere «tilde», oltre a usare il comando \textasciitilde si può usare invece $\sim$, per produrre un carattere che a volte viene ritenuto più grazioso.
3) Naturalmente, makeindex può essere usato anche specificando delle opzioni; in tal caso si può consultare la pagina di manuale makeindex(1).
4) È bene ricordare che la tabella si compone di quattro colonne, dove la seconda e la terza non sono separate da una linea verticale.
5) Qui non sono state usate della parentesi quadre sintattiche per non creare confusione.
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net