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.
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'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. Si considerano installati nel sistema (dal set T) i pakages menzionati ((N)TeX base, LaTeX, Babel).
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:
(o Classe, in LaTeX2e) Definisce lo stile del documento, ovvero se deve essere un libro (book), lettera (letter), articolo(article), ...
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.
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, ...]{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.
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 files
dimostrativi e anche brevi manuali dei pacchetti.
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 assieme
a questo howto (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 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.
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.
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 seconda opzione, ovvero
/usr/X11/lib/X11/app-defaults
.
Ora, dopo tutte queste disquisizioni, abbiamo capito che abbiamo bisogno di tre cose:
Ovvero per stampare decentemente sulla nostra stampante.
Ovvero il supporto per le lettere accentate direttamente all'interno del file LaTeX, per evitare di ricorrere a pesanti sequenze di comandi.
Per il supporto della sillabazione italiana e di altre cose simpatiche senza stravolgere completamente la configurazione del TeX.
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 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 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.
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
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...