Previous Next Contents

5. TeX

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 consiglio 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.

TeX è un ottimo programma per l'impaginazione 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 pakage 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 ampliare di molto la già completa gestione di equazioni matematiche del TeX (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. Si considerano installati nel sistema (dal set T) i pakage menzionati ((N)TeX base, LaTeX, Babel).

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, in LaTeX2e) 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 (package) o stili aggiuntivi esterni, come il Babel stesso e il supporto per le accentate.

Altro

altre cose fanno parte del preambolo, come definizioni aggiuntive e strutture particolari, ma che ai fini del nostro studio sono inessenziali.

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 dei pacchetti e le loro opzioni
        \usepackage[opz1, opz2, ...]{pacchetto1}
        \usepackage[opz1, opz2, ...]{pacchetto2}
                .
                .
                .

        % 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 preferibile 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 il Babel, /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 file dimostrativi e anche brevi manuali dei pacchetti.

5.2 Sistemazione della configurazione standard

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, controllate (è un file di testo, usate pure less(1)!!!) che NON sia la tabella di sillabazione di G. Patergnani. Questa soffre di quella che io scherzosamente chiamo ``sindrome di Zio Paperone'', ovvero tende a mandare a capo malamente i suoi nipoti (qu-i, qu-o, qu-a).

Altrimenti, se la tabella non esiste o è quella del Patergnani, prendete il file hyphen.italian.gz (di solito nei siti ftp) oppure equivalentemente ithyphen.tar (presente nelle BBS o nei sistemi dos) che si trova in ftp.unipd.it:/pub/Linux/pluto/ildp/apps/tex/hyphen.italian.gz (ma che si trova comunque in tutti i siti CTAN), decomprimetelo e copiate il file hyphen.italian in questa directory, controllando che sia almeno leggibile da tutti.

Ora editate il file /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.

dvips(1)

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.

È 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.

xdvi(1)

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 programmino poi chiede di creare un link simbolico al file, e dà due opzioni per la directory contenente le risorse delle applicazioni.

Come già visto, questa è la seconda 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. Questa operazione, anche se possibile, è sconsigliata. In TeX la formattazione di certi documenti dipende fortemente da margini e dimensione della carta. Cambiare uno di questi parametri senza rivedere il layout del documento potrebbe portare a delle emerite schifezze (figure sovrapposte, ...). Quindi, se vogliamo stampare dei testi in inglese, dobbiamo reperire i 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 al preambolo:


        \usepakage{a4}

e magari controllare con un previewer come ghostview, prima di stampare, che l'output sia accettabile.

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,...]{classe}
        \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:

E in particolare in italiano...

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


Previous Next Contents