TeX e LaTeX

Breve guida alla creazione di un documento

Struttura di un sorgente in LaTeX

Un sorgente TeX (e quindi anche LaTeX) deve essere scritto usando la codifica ASCII (128 simboli). L'introduzione nel nostro documento di caratteri non compresi nell'ASCII (lettere accentate, ecc...) può essere fatta usando comandi appositi (ad es. \`e per è oppure \'e per é). Vedremo in seguito come inserire direttamente questi caratteri nel sorgente.

% questo è un commento ...
%
% schema di un sorgente LaTeX
%
\documentclass[opzioni]{classe}
% le classi definiscono le caratteristiche fondamentali del documento,
% compresi alcuni comandi aggiuntivi specifici della classe.
% Le "Classi Standard di LaTeX" comprendono, ad esempio, la classe
% book, article, ...
% Esistono poi altre famiglie di classi, come le "KOMA script",
% la classe "Memoir" e così via...
% Per le classi a disposizione e per le relative opzioni consultate 
% le guide e i manuali delle classi.
% Ecco un esempio:
% \documentclass[a4paper,11pt]{book}

% la sezione fra \documentclass e \begin{document} è detta preambolo.
% Questo è il posto per caricare pacchetti e definire comandi e 
% ambienti personalizzati

\begin{document}

% tra \begin{document} e \end{document} c'è invece il corpo del documento
% è qua che dovrete scrivere il contenuto del vostro lavoro

\end{document}

Salvate il documento con un nome a piacere, ad esempio (prova.tex). Per compilarlo eseguite: latex prova.tex oppure pdflatex prova.tex. Nel primo caso produrrete un file .dvi, nel secondo un file .pdf.

Spaziatura e caratteri speciali

Inserire più spazi oppure uno o più TAB nel sorgente, è equivalente all'inserire un singolo spazio.
Lasciare una o più righe bianche, fa iniziare un nuovo paragrafo.
Se al posto di uno spazio si mette una tilde, ad es. Mr~Biccari, la r e la B rimarranno sulla stessa riga, cioè LaTeX non manderà mai a capo lasciando Mr da solo (spazio insecabile).
\\ o \newline manda a capo forzatamente.
\newpage fa cominciare una nuova pagina.

Come ogni linguaggio anche LaTeX ha dei caratteri speciali riservati:
\ { } % $ _ & # ^ ~
Per poter inserire questi simboli in un documento, dovete usare nel sorgente i seguenti comandi:

RiservatoComando
\\textbackslash
{\{
}\}
%\%
$\$
_\_
&\&
#\#
^\textasciicircum
~\textasciitilde

Nota: al posto degli ultimi due comandi, usando \^{} e \~{} si ottengono i simboli ˆ e ˜.

Spaziature manuali in LaTeX

In modo testo:

[\,] {3/18} < \<SP> ~ <= <SP> < [\quad] {1} < [\qquad] {2}

In modo matematico:

\! {-3/18} < \, {3/18} < (\:) {4/18} < [\;] {5/18} < (\<SP>)  (~) <
\quad {1} < \qquad  {2}

Dove:
Spazi tra parentesi tonde: da non usare mai
Spazi tra parenti quadre: da usare solo in casi molto rari
Altri: possono essere usati, ma con criterio.
Tra parentesi graffe sono riportate le dimensioni rispetto al \quad.

\> è sinonimo di \: ma in LaTeX non va usato.

\linebreak (l'orribile effetto che si ottiene con i word processor e il testo giustificato), \pagebreak

Lo spazio Unicode 32. Spazio visibile: \textvisiblespace. Quotation mark (Unicode 34) , '' (Left Double Quotation Mark, Unicode 8220) e `` (Right Double Quotation Mark, Unicode 8221). Apostrofo verticale (Unicode 39): LaTeX lo trasforma automaticamente in un apostrofo vero ' (Right Single Quotation Mark, Unicode 8217). ` (Left Single Quotation Mark, Unicode 8216) and ' (Right Single Quotation Mark, Unicode 8217). Simboli di primo (come nei minuti) (prime, Unicode 8242) e secondo (double prime, Unicode 8243): $^\prime$ o $'$} e $^{\prime\prime}$ o $''$. Asterisco centrato \textasteriskcentered. Il simbolo di "meno" simile uguale a quello che si ha in ambiente matematico lo si può fare con \textminus. \slash. \textless e \textgreater. \textbackslash. \^{}. \textquoteleft \textbar \textasciitilde \~{} \i e \j, \imath, \jmath Simbolo euro

Scrivere un buon sorgente

Secondo me, uno dei problemi di LaTeX è che finora, come già detto, ancora non sono stati realizzati degli editor che permettano di leggere il sorgente come se fosse il documento finale (Formattazione da codice sorgente più che da documento, nessuna anteprima di immagini, tabelle, formule, ecc... a meno di usare Emacs).
Però qualcosa per migliorare la leggibilità del sorgente si può fare. Ecco alcune regole:

Accenti

Caratteri come à, ecc... non si possono scrivere direttamente in TeX. Volendo lo si può fare usando pacchetti appositi (vedi la sezione codifica dei caratteri). Per inserirli senza caricare alcun pacchetto ci sono dei comandi appositi, vedete una guida. È inutile inserire tra graffe l'argomento di quelli tipo \"a, \'a, ecc... mentre è obbligatorio inserire fra graffe \v{z}, ecc...

La grandezza relativa dei caratteri

A volte la gente si lamenta che i pedici e gli apici in LaTeX sono sproporzionati, provate per esempio a scrivere una lettera minuscola con un pedice maiuscolo. In realtà il comportamento di LaTeX è perfettamente corretto. Le dimensioni relative delle varie parti del testo sono studiate e regolate opportunamente, basta guardare qualsiasi libro.

I rapporti delle dimensioni dei caratteri matematici rispetto alla dimensione del font del testo sono: 1 per il carattare matematico, 0.7 per i pedici/apici, 0.5 per i pedici/apici di secondo livello.
Se proprio volete cambiare questi rapporti, nel preambolo bisogna usare il comando: \DeclareMathSizes{dim. testo}{dim. matematico}{dim. apice/pedice}{dim. apice/pedice secondo}. Esempio \DeclareMathSizes{10}{10}{7}{5} è l'impostazione di default e si attiverà se state usando il corpo 10 nel testo. Ecc...

Overfull

Quando si compila un documento tra i warning più comuni ci sono i cosiddetti overfull. Praticamente TeX non è riuscito a far entrare perfettamente il testo o in generale qualche altro elemento nello spazio assegnatogli. Per esempio immaginate una parola che sborda il limite della colonna del testo. Spesso però questi "errori" tipografici sono impercettibili o quasi ad occhio umano (1pt corrisponde a circa 0.3 mm). Per cambiare la soglia oltre la quale TeX si lamenta usare i seguenti comandi nel preambolo (cambiando 1pt in quello che volete. Però consiglio di non superare 1pt):

\hfuzz=1pt 
\vfuzz=1pt

Parametri vari

% non spezza i paragrafi tra le pagine:
\interlinepenalty 10000
\raggedbottom % questo comando è fortemente consigliato!

LaTeX daemon

Una delle cose da evitare con LaTeX è quella di avere la smania di controllare ripetutamente l'aspetto del documento per ogni parola che scriviamo. LaTeX è stato pensato affinché lo scrittore si concentrasse solo sul contenuto. Certo è, però, che leggere una formula matematica scritta in LaTeX non è affatto semplice appena il livello della stessa è leggermente complicato. Stesso discorso quando si scorre velocemente il documento per individuare sezioni e sottosezioni: sarebbe molto comodo poterle individuare in maniera "naturale" cioè vederle scritte in caratteri maggiori del resto del codice. Stesso discorso ancora con figure e tabelle.
L'unico editor che implementa queste caratteristiche è Emacs, grazie ad AucTeX. Come già detto però Emacs non è affatto facile da usare se siete alle prime armi (e anche se non lo siete). Più semplice è dare un'occhiata al documento ogni tanto.

Questo aspetto si ricollega ad un altro, anch'esso abbastanza snervante. Se avete documenti di grandi dimensioni la compilazione può impiegare anche decine di secondi. Immaginate di scrivere della matematica molto complicata e avete bisogno di controllare il risultato finale di frequente...
In questo caso Emacs non può certo risolvere i problemi di velocità nella compilazione però, almeno nell'esempio appena fatto, grazie all'anteprima del codice matematico permette di controllare il risultato del proprio codice molto velocemente, senza compilare il documento.

Un approccio per venire incontro a tutti questi problemi è quello di cercare di velocizzare la compilazione del documento. Di sicuro il primo passo banale è quello di compilare solo il capitolo che si sta scrivendo, commentando l'inclusione degli altri file in cui è diviso il vostro documento di grandi dimensioni. Il secondo passo, più complicato, è quello di precompilare il preambolo del documento. Questa parte della compilazione infatti varia raramente ed è quella che richiede più tempo. La precompilazione del preambolo può essere fatta manualmente ma è un po' ostica.
Per la precompilazione del preambolo e molto altro è nato (sotto Windows) "LaTeX daemon". Scaricatelo, copiate in C:\Program Files\... Aggiungete alla variabile d'ambiente PATH di Windows C:\... Lanciate latexdaemon.exe main.tex -dependencies=*.tex
Se mettete anche watch=yes il documento viene ricompilato ad ogni modifica del file principale o delle sue dipendenze (i file inclusi) velocizzando la compilazione grazie all'uso del preambolo precompilato. Molte altre caratteristiche. E invece per Linux e Mac. Ci sono poi ne parlerò.

Le righe magiche

Esistono dei commenti particolari, che si possono mettere all'inizio di un sorgente TeX, che vengono interpretati da alcuni editor in modo da specificare alcune caratteristiche del file.

% !TeX encoding = utf8
% !TeX program = pdflatex
% !BIB program = biber
% !TeX spellcheck = de_DE
% !TeX root = filename