5. TeX

Indice di questa sezione

Per sistemare il TeX le strade erano due. O modificare completamente la configurazione, ma questo avrebbe poi compromesso la corretta formattazione dei testi in inglese, che sono ancora la maggior parte, oppure affidarsi a dei pacchetti appositi che predispongono per la internazionalizzazione del TeX, ovvero il pacchetto Babel.

Questo è l'approccio seguito da LyX, ovvero un front-end grafico sotto X in fase di sviluppo, che cosiglio di utilizzare ai digiuni di TeX.

Siccome l'approccio era valido e molto intelligente, ho deciso di farlo mio.

5.1 Un po' di teoria...

Il TeX è in pratica un linguaggio di programmazione. Scritto un file in un determinato formato, si può compilare e quello che si ottiene è un file ``oggetto'', ovvero un file intermedio, in un formato detto DVI, ovvero DeVice Indipendent format, da cui si ottiene un file in linguaggio per le stampanti, di solito un file PostScript.

Al di la delle questioni di principio e alle guerre di religione, TeX è un ottimo programma per l'impaginazioni di libri. La sua nascita nel grande mondo del free software lo ha velocemente indirizzato verso le pubblicazioni tecniche, scientifiche ma anche quelle multilingue. Inoltre permette una potente gestione degli indici e dei riferimenti, nonchè estensioni per la gestione dei riferimenti bibliografici.

Un file sorgente di TeX è un file testo (come tutti i linguaggi di programmazione) con delle istruzioni aggiuntive (che iniziano per ``\'';) che spiegano al programma come organizzare l'output.

Come tutti i buoni compilatori, piano piano è stato dotato di librerie, chiamate pakages che ne estendono le funzionalità.

Le più note sono il LaTeX, che definisce un insieme di stili tipografici per fare libri, articoli e lettere, con tutti gli elementi importanti di questi stili (titoli per libri e articoli, indirizzi per le lettere) già predefiniti e pronti all'uso.

Esistono poi parecchie estensioni al LaTeX, le principali sono l'AMSLaTeX, che permette di inserire formule matematiche (per la cronaca, quasi tutti i libri di matematica in commercio sono fatti in TeX) e Babel, che definisce la gestione di diverse lingue, anche contemporaneamente sullo stesso documento.

Come per Linux stesso, di TeX ce n'è uno solo, ma visto che ha bisogno comunque di librerie di font, programmi accessori, ... di distribuzioni ce ne sono tante.

Si prende in considerazione qui la distribuzione di TeX della slackware, ovvero NTeX e LaTeX2e. Si considerano installati nel sistema (dal set T) i pakages menzionati ((N)TeX base, LaTeX, Babel).

Anche se il formato del preambolo del LaTeX2e è leggermente diverso da quello del LaTeX209 e precedenti, questo è ancora standard, è quindi viene riportato come default.

Il formato del file

Un file TeX è composto da un preambolo che definisce lo ``stile'' con cui è impaginato il testo e da un corpo, che comprende sia il testo che le formattazioni. Il corpo è quello che va dal comando \begin{document} al comando \end{document}, quello che c'è sopra è il preambolo, mentre quello che c'è dopo viene ignorato.

Nel preambolo vengono definite:

Stile

(o Classe) Definisce lo stile del documento, ovvero se deve essere un libro (book), lettera (letter), articolo (article), ...

Opzioni

definisce sia le opzioni interne, ovvero quelle delle varie classi (dimensione dei caratteri in punti, dimensione della carta, ...), sia i pacchetti (packages) o stili aggiuntivi esterni, come il Babel stesso e il supporto per le accentate.

La definizione è quindi del tipo:


        % Questo è il preambolo
        \documentstyle[opz1, opz2, ...]{stile}
        
        % Qui inizia il testo
        \begin{document}

        [...]

        \end{document}

Leggermente diversa, e direi migliore, è la definizione di preambolo del LaTeX2e, ovvero la nuova versione che ha sostituito la 209, che divide logicamente le opzioni interne da i pacchetti aggiuntivi:


        % Questo è il preambolo

        % Questa è la definizione della classe e le sue opzioni
        \documentclass[opz1, opz2, ...]{classe}

        % Questo è il caricamento del pacchetto e le sue opzioni
        \usepackage[opz1, opz2, ...]{paccetto1}
        \usepackage[opz1, opz2, ...]{paccetto2}
                .
                .
                .

        % Qui inizia il testo
        \begin{document}

        [...]

        \end{document}

Si vede come nel LaTeX2e ci sia separazione logica tra le opzioni dello stile, o classe, e dei pacchetti aggiuntivi, cosa preferbile visto il proliferare di nuovi pacchetti e estensioni.

L'installazione TeX di Linux

Tutta l'installazione del TeX di Linux si trova in /usr/lib/texmf e subdirectory. In particolare sono importanti le subdirectory /usr/lib/texmf/tex/latex/babel, che contiene i files del Babel che andremo a pasticciare, /usr/lib/texmf/tex/hyphenation che contiene le tabelle di sillabazione e /usr/lib/texmf/tools che contiene gli script di riconfigurazione del sistema.

Consigliabile è anche un giro per tutte le subdir che finiscono in ``-base'' della directory /usr/lib/texmf/tex/latex, che contengono files dimostrativi e anche brevi manuali dei pacchetti.

5.2 Sistemazione della configurazione standard

Sistemazione del Babel

Come abbiamo già accennato, il Babel manca della tabella di sillabazione italiana. Controllate nella directory /usr/lib/texmf/tex/hyphenation se è presente il file hyphen.italian.

Se è già presente, bene. Altimenti prendete quello presente nel pacchetto aggiuntivo ITHTOPKG.TAR che dovrebbe essere stato distribuito assieme a questo testo e copiatelo in questa directory, controllando che sia almeno leggibile da tutti.

Ora editate il files /usr/lib/texmf/tex/latex/cfg/language.dat in modo che si presenti in questa maniera:


        % File    : langauge.dat
        % Purpose : specify which hypenation patterns to load 
        %           while running iniTeX 
        english hyphen.ukenglish
        usa hyphen.us
        % Aggiunta la sillabazione Italiana
        italian hyphen.italian
        %german hyphen.german
        %swedish hyphen.swedish
        %french hyphen.french
        %Czech hyphen.Czech
        %spanish hyphen.spanish
        %finish hyphen.finish
        %polish hyphen.polish
        %dutch hyphen.dutch
        %portuguese hyphen.portug
        %turkish tkhypha.tex

Di default sono abilitate ``english'', ``usa'', ``german'' e ``swedish''. Siccome consigliano di non abilitare più di 4 tabelle alla volta, conviene eliminare tutte quelle che non servono. E ovviamente aggiungere italian hyphen.italian!!!

Una impostazione di questo tipo, come nel mio caso, è abbastanza ragionevole.

Ora bisogna dire al LaTeX di ricreare la configurazione in modo da prendere in considerazione le nuove impostazioni.

Per fare questo ci viene in aiuto un programmino che fa tutto automaticamente ovvero /usr/lib/texmf/tools/ntm-ltx.cfg. Attenzione che questo script richiama automaticamente vi(1) come editor, e se non si salva il file non fa assolutamente nulla.

Visto che il nostro file è già stato precedentemente modificato con il nostro editor preferito, basta premere, nell'ordine, i tasti [Esc] [:] [w] [q] [Invio] per forzare un salvataggio del file e quindi l'esecuzione dello script.

Ora il programmino chiede conferma dell'operazione. Se rispondete di si scrive una serie di informazioni complicate e oscure. Nema problema, è il suo lavoro!!!

La configurazione della sillabazione italiana nel Babel ora è perfettamente funzionante.

Sistemazione del dvips

Anche qui per configurare il programma dvips(1) di conversione tra DVI e PostScript è sufficiente eseguire il programmino /usr/lib/texmf/tools/ntb-dps.cfg, che come in precedenza chiede di editare il file /usr/lib/texmf/dvips/config.ps con il vi.

E' sottointeso che si può editare il file con il proprio editor preferito e forzare un salvataggio con la procedura descritta prima.

In particolare bisogna controllare che il formato di pagina di default sia A4, ovvero nel file deve essere presente:


        [...]

        % Paper size information.  First definition is the default.
        %
        % Copy the papersize you want to use as default at the top of the following
        % list. (with this setup A4 is default)

        @ a4 210mm 297mm
        @+ ! %%DocumentPaperSizes: a4
        @+ %%PaperSize: a4
        @+ %%BeginPaperSize: a4
        @+ a4
        @+ %%EndPaperSize

        [...]

Cosa che di solito è già definita.

Sistemazione di xdvi

xdvi(1) è il programma per l'anteprima dei file in formato DVI sotto X. Anche per questo basta eseguire il programma /usr/lib/texmf/tools/ntb-xdvi.cfg che chiede di editare, sempre con il vi, il file /usr/lib/texmf/X/XDvi.

Anche qui valgono le considerazioni fatte in precedenza.

Importante è che nel file sia presente la riga:


        *paper:                 a4

Il programino poi chiede di creare un link simbolico al file, e da due opzioni per la directory contenente le risorse delle applicazioni.

Come già visto, questa è la sceconda opzione, ovvero /usr/X11/lib/X11/app-defaults.

5.3 Bando alle ciance!

Ora, dopo tutte queste disquisizioni, abbiamo capito che abbiamo bisogno di tre cose:

A4

Ovvero per stampare decentemente sulla nostra stampante.

ISOLatin1

Ovvero il supporto per le lettere accentate direttamente all'interno del file LaTeX, per evitare di ricorrere a pesanti sequenze di comandi.

Babel

Per il supporto della sillabazione italiana e di altre cose simpatiche senza stravolgere completamente la configurazione del TeX.

Stampa di testi in inglese

Piacerebbe avere l'opzione della dimensione del foglio A4 definita direttamente a livello di TeX, visto che è il nostro standard. Per ora non ho trovato un modo per farlo, e quindi, se vogliamo stampare dei testi in inglese, dobbiamo reperire ai sorgenti in TeX, editare il file, aggiungendo nel preambolo l'opzione:


        \documentstyle[opz1,opz2,...,a4]{stile}

oppure, se il file è in formato LaTeX2e, basta aggiungere:


        \usepakage{a4}

Esiste inoltre una variante del formato A4, chiamata a4wide che ha i margini leggermente più stretti, e quindi, in teoria, permette di risparmiare carta.

Composizione di testi in italiano

Se invece stiamo costruendo un nuovo testo, e vogliamo che tutto funzioni alla perfezione, è sufficiente che il preambolo sia del tipo:


        \documentstyle[a4,isolatin1,babel,italian,opz1,opz2,...]{stile}

oppure, e molto più ordinatamente, se si usa il LaTeX2e:


        \documentclass[opt1,opt2,...]{stile}
        \usepackage[italian]{babel}
        \usepackage{isolatin1}
        \usepackage{a4}

Anche qui valgono le stesse considerazioni sull'a4wide fatte prima

5.4 Per maggiori informazioni...

Se avete intenzione di stampare semplicemente dei file TeX, queste conoscenze sono sufficienti.

Se invece avete intenzione di proseguire nella conoscenza del TeX, sono consigliabili, in particolare, i libri:

Come noterete sono disponibili solamente in libreria. Anche perchè, almeno i primi due, sono dei veri tomi...


Capitolo Successivo, Capitolo Precedente

Indice di questo capitolo, Indice generale

Inizio del documento, Inizio di questo Capitolo