TeXPerfect Logo Questo sito è ospitato da SourceForge Logo
Per vedere il sito del progetto su SourceForge, cliccare qui

Indice

Introduzione

Allora, di cosa si parla? Parliamo di TeX. TeX è un sistema tipografico, sviluppato dal Professore Donald Ervin Knuth, «intended for the creation of beautiful books--and especially for books that contain a lot of mathematics.» (TeXBook, Preface, page v) («mirato alla creazione di libri stupendi--e soprattutto di libri che contengono molta matematica»).

[Nota di pronuncia: TeX non si deve pronunciare «tex», ma con un suono più tipo «tech», dove «ch» dovrebbe essere pronunciato come il tedesco «Bach». La «X» non è una x maiuscola, ma la lettera greca «chi»].

Per produrre un documento TeX, si crea un semplice file di testo ASCII, contenente il testo (le formule, dove necessario), ed alcune istruzioni per il motore del TeX. Il file viene poi fatto elaborare dal TeX, e si ottiene un altro file--un file DVI (dove DVI stà per DeVice Independent, ovvero «indipendente dallo strumento»), che può poi essere stampato (con un programma apposito), o tradotto in formato PostScript® o PDF®. [TODO: links, story.tex, output]

L'output del TeX è di alta qualità, e la creazione di documenti TeX non è nulla di problematico--anche quando si hanno molte formule e cose simili. I problemi del TeX sono la ripida curva di apprendimento, e la mancanza di interfaccia grafica; Inoltre, modificare un file TeX è alquanto complesso, poiché bisogna occorre passare attraverso un ciclo compilazione-visualizzazione-modifica, con ogni passo svolto (solitamente) da un programma a parte.

Fondamentalmente, quello che TeXPerfect vuole essere è: un editor interattivo, facile da usare e con interfaccia grafica WYSIWYG per il TeX e le sue estensioni (e-TeX, pdfTeX, pdf-e-TeX, Omega, NTS).

Il passato: WordPerfect

Prima di incontrare il TeX ero un utente affezionato di un word processor di nome WordPerfect™, inizialmente sviluppato dalla WordPerfect Corporation, venduto quindi alla Novell, ed infine messo nelle mani della Corel® Corporation.

Non perderò molto tempo qui a parlare delle differenze tra un word processor ed un sistema tipografico, o a discutere dei vantaggi del secondo rispetto al primo--se siete interessati a questi scontri, seguite questo collegamento.

Dirò ora solo alcune cose, per le più a favore del WordPerfect, ed evidenzierò anche alcune sue limitazioni (vorrei puntualizzare che non sono legato in alcun modo alla Corel Corporation, e tutte le informazioni di questo documento sono semplicemente esperienze personali--nel bene e nel male).

Il bene

Rivela Codici

Se siete utenti WordPerfect, sapete di cosa sto parlando (ma se siete utenti WordPerfect, probabilmente non leggereste questo paragrafo).

Se siete utenti di Word, leggete attentamente e capite appieno questa frase: Rivela Codici non è Mostra Codici. WordPerfect ha una funzione Mostra Codici, per voi utenti Word che proprio non riuscite a farne a meno. Ma se avete intenzione di passare a WordPefect, cercate di dimenticare Mostra Codici e usate invece Rivela Codici.

Se non avete mai usato Word, dirò brevemente che Mostra Codici è una funzione che permette di vedere alcuni codici (spazi, a capo, codici di sezionamento ecc) nello schermo di modifica, in modo da sapere più o meno quello che sta succedendo (a meno che non stiate facendo formattazioni complesse). Diamo ora un'occhio a Rivela Codici.

Rivela Codici è una finestra supplementare che compare sotto la normale finestra di modifica, ed in cui sono mostrati tutti i codici presenti nel testo: si vede quindi chiaramente dove i codici di formattazione iniziano e finiscono (sapete quindi sempre se state scrivendo con i codici di formattazione attivi o no); si vede esattamente a quale testo sono applicati gli stili; i codici posso poi essere modificati facendovi sopra un doppio click (azione che attiva appropriate finestre di dialogo); in breve: si vede tutta la confusione che è sempre presente nel testo dei word processor--e soprattutto si può manipolare il tutto esattamente come se fosse testo semplice: ad esempio, se si vuole rimuovere uno stile da un testo, basta semplicemnte cancellare il relativo codice di Stile--che è visibile--piuttosto che dover riselezionare tutto il testo ed applicare lo stile <Nessuno> (cosa che tra l'altro potete sempre fare).

E soprattutto: i codici non ingombrano la finestra di modifica: potete sempre scrivere come siete soliti fare, rivolgendo la vostra attenzione allo schermo Rivela Codici (attivandolo se è chiuso) solo quando volete provare strane cose con i codici, oppure se volete sapere cosa crea un certo comportamento anomalo.

Per gli utenti TeX che stanno leggendo questo: lavorare con lo schermo Rivela Codici è come lavorare con una finestra di visualizzazione nella metà superiore dello schermo e con il codice TeX originario nella metà inferiore--tranne per il fatto che la visualizzazione viene aggiornata in tempo reale.

Il male

Il presente: LyX

LyX: cos'è? Quello che dice di essere è : un editor WYSIWYM (What You See Is What You Mean, Ciò Che Vedi È Ciò Che Vuoi); in altre parole è un editor che separa il contenuto dallo stile di composizione (cosa che con i word processor viene attuata usando gli stili), e per di più senza permettere usi «di fantasia».

Cosa è LyX, realmente: LyX è, in qualche modo, un'interfaccia grafica per LaTeX. LaTeX? Ok, cominciamo.

Formati TeX

TeX di per sé è un motore di tipocomposizione. Per ciò è alquanto difficile da usare direttamente, e quindi esistono dei «gusci» attorno ad esso. Questi«gusci» vengono chiamati, in linguaggio TeXnico, formati. Il primo formato creato per il TeX fu sviluppato da Donald Ervin Knuth stesso, ed è chiamato plain TeX (TeX liscio); altri formati sono disponibili, per lo più basati sul plain; quello più diffuso, e forse il più facile da usare, è LaTeX.

LaTeX

LaTeX (credo che voglia dire Lamport's TeX, poiché Lamport è il suo creatore, almeno nella versione iniziale [TODO: links, add names, fixups]) è un formato TeX che si prefigge come principale intenzione quella di separare la struttura di un documento dal suo aspetto. Un tipico documento LaTeX è composto da un «preambolo» e dal documento stesso. Nel preambolo si stabilisce come si vuole far apparire il documento, nel documento stesso viene messo il contenuto, evidenziato opportunamente per distinguere le varie parti della struttura. Ecco un documento LaTeX di esempio:

Potete scaricare ciò che si ottiene dal precedente file, in tre diversi formati, sia in forma compressa (zip) che in forma non compressa:
formato DVI, non compresso formato DVI, compresso
formato PDF, non compresso formato PDF, compresso
formato PS, non compresso formato PS, compresso

[Noticina: mentre componevo queste pagine ho (piacevolmente?) scoperto che l'IBM techexplorer Hypermedia Browser funziona :-) nel senso che ha intercettato il documento su incluso, e lo ha rappresentato. Ovviamente il risultato è ben lontano dall'alta qualità del TeX, ma il risultato è abbastanza decente. Il problema è che il plugin riconosce solo il formato LaTeX, forse anche il plain TeX, ma combina dei pasticci con altri formati TeX ... basta vedere il risultato più avanti.[TODO: links]]

Torniamo a LyX

Quindi, LyX è un guscio attorno a LaTeX. Si modifica un documento LyX con LyX stesso (LyX ha un formato proprio, che è comunque puro testo ASCII e simile al formato del TeX), visualizzando in anteprima la struttura del documento, con una pseudo-rappresentazione del risultato finale); quindi si ordina al LyX di compilare il documento in TeX: il documento viene convertito in formato LaTeX, compilato, e tradotto in PostScript.

LyX fa un ottimo lavoro, specialmente per i principianti nel mondo del TeX: si ottiene un buon risultato con poco sforzo; è facile da usare, ha un buon editor di tabelle, e si possono inserire codici LaTeX puri (se conosciuti, vengono interpretati; se no, vengono rappresentati verbatim nell'anteprima, ma vengono lasciati per la compilazione finale). Ed è libero (sotto la Licenza Publica Generale GNU).

Allora, quali sono le limitazioni del LyX?

Be', innanzi tutto LyX funziona solo su sistemi Unix. Ok, lo si può usare anche sotto Windows, ma bisogna procurarsi un server X.

Secondo: LyX non è LaTeX (è più un emulatore per LaTeX), e non conosce tutto su tutti i pacchetti LaTeX--anche se i più comuni sono supportati, ed usati quando richiesto.

Terzo, e forse più importante (per me), non mostra il codice sottostante, a meno che non sia codice LaTeX puro inserito manualmente e non interpretato.

La maggior parte degli utenti LyX, presto o tardi, passano al «vero» LaTeX: ottengono maggior libertà sul risultato (a costo di maggior sforzi di scrittura), ed un controllo completo sul sorgente, potendosi quindi permettere anche subdole modifiche al codice, o maggior controllo sulla rappresentazione delle formule, ecc.

Il futuro: TeXPerfect

Eccoci alla fine: TeXPerfect.

Con TeXPerfect, quello che vorrei ottenere è mettere assieme il meglio dell'elaborazione testi WYSIWYG (ovvero: WordPerfect), con il potere, la flessibilità e la qualità del motore di tipocomposizione (e delle macro) del TeX. Una volta completo, un tale programma avrebbe un'interfaccia utente simile a quella dei word processor, ma userà il motore di tipocomposizione del TeX; userà il formato file TeX per i propri documenti, ecc: in altre parole, sarà TeX con un'interfaccia utente grafica. E poiché non posso rinunciare al lusso di vedere ciò che succede, avrà qualcosa di simile allo schermo Rivela Codici.

Quando dico che sarà TeX, intendo dire che sarà TeX--non un emulatore di qualche formato specifico: sarà costruito in modo da supportare qualsiasi formato--plain TeX, LaTeX, ConTeXt. La sua interfaccia (auto-modificantesi in relazione al formato usato) sarà facile da usare per la maggior parte delle funzioni di ogni giorno, ma ci sarà anche un «modo hacker» che permetterà la modifica diretta del codice TeX.

Aspetti tecnici

Per mantenere la possibilità di usare qualsiasi piattaforma, progetto di sviluppare TeXPerfect in Python (probabilmente con un cuore C/C++), in un toolkit cross-platform come wxWindows/wxPython.

Allora, cosa aspettiamo?

Sviluppatori :-).

In effetti, ho scoperto che la missione era più difficile di quanto pensassi inizialmente: TeX è stato sviluppato per lavorare sequenzialmente, senza permettere salti avanti e indietro nel codice. La principale ragione per ciò è che TeX ha incorporato un potentissimo interprete macro, che non permettere di annullare facilmente (ri)definizioni dei comandi; inoltre, quando incontra codice difettoso, TeX ha bisogno di intervento esterno. Questi aspetti non sono facili da implementare in una libreria TeX run-time (ok, alcuni aspetti posso essere elusi, ad esempio ignorando il codice difettoso ecc, ma c'è parecchio lavoro da fare).

In sovrappiù, TeX è stato scritto in WEB, che è un linguaggio di programmazione «documentario» basato sul PASCAL; la mia conoscenza del PASCAL è alquanto limitata, quindi ho bisogno di qualcuno abbastanza esperto col PASCAL da potermi aiutare nel trasformare il codice del TeX in una libreria. Un tale lavoro potrebbe essere più facile con il successore del TeX, NTS.

C'è nessuno là fuori disposto a darmi una mano? Per chi fosse interessato, vi è una mailing list (ospitata per ora da Yahoo!Groups; la muoverò su SourceForge se prende abbastanza) chiamata texlib; chi volesse unirsi alle discussioni è libero di farlo.

Queste pagine

Be', so che non ve ne frega niente, ma adesso vi dirò come queste pagine sono state create.

Le pagine le ho create inizialmente con la versione italiana di WordPerfect 9 con Service Pack 1, usando il modello «Documento Web». Quindi ho creato il logo TeXPerfect usando questo codice ConTeXt (ConTeXt è un formato TeX):

Ho convertito il risultante file DVI in PostScript usando DVIPS, quindi ho convertito il file PostScript in EPS con GhostScript.

A questo punto, il procedimento seguito per la prima versione è stato il seguente. Ho convertito l'EPS in bitmap con un copia e incolla da GSView a PaintShop Pro; infine, usando i tool NetPBM, ho convertito la bitmap in formato Portable Network Graphics. Vi potreste chiedere perché ho fatto un tale giro, ma non ho trovato un'altra strada per ottenere un PNG di alta qualità dell'EPS; ho provato altre strade (Acrobat PhotoShop, Corel Presentations), ma con risultati meno buoni.

Infine, ho aggiunto la figura ottenuta nella cella a sinistra in una tabella in cima al documento, ed ho pubblicato il tutto con il comando «Pubblica su HTML» di WordPerfect. Solo per scoprire che il PNG veniva convertito in formato GIF :-(. [TODO: links and trademarks]

Ho poi fatto delle modifiche manuali ai file HTML ottenuti, poiché WP9SP1 ha alcuni problemi con certi caratteri, nel convertire in HTML. Innanzi tutto, il segno di marchio registrato non viene convertito nell'apposito codice HTML; inoltre l'immagine doveva essere in formato PNG (se volete sapere perché, be', è a causa di certi stupidi problemi di brevetti che incombono sul formato GIF). Le rifiniture sono state fatte con Netscape Composer (dalla suite Netscape Communicator, versione 4.7, build 19990909), ma sono presto passato a semplici editor ASCII. L'ultimo usato, e finora quello di cui sono maggiormente soddisfatto, è HTML-Kit. [TODO:links]

Ho in seguito creato altre versioni del logo, di diverse dimensioni (620, 780, 1004, 2028, ovvero 20 pixel meno delle usuali risoluzioni), e con trasparenza invece del colore bianco. Queste sono state ottenute inizialmente con Acrobat PhotoShop 5.0, importando l'EPS quattro volte (una per ogni dimensione), salvando poi il risultato in formato PNG (perdendo le informazioni sulla trasparenza, che veniva convertito in bianco) e rielaborando i file PNG ottenuti con i tools NetPBM, in modo da ritrasformare il bianco in trasparenza.

Sempre con l'intenzione di ricercare i metodi più semplici, economici ed efficaci per ottenere ciò che volevo, ho sperimentato con varie opzioni del GhostScript e di GSView (attualmente alle versioni 6.50 e 3.6, rispettivamente), ho scoperto che è possibile fare a meno di utilizzare il PhotoShop. Infatti, visualizzata l'immagine con GSView alla dimensione voluta, basta fare un Copy (Ctrl+C) e un Paste to (dal menu Edit) per salvare una bitmap su disco; sempre usando i tools NetPBM è poi possibile ottenere un PNG (con trasparenza), in molti meno passaggi. Tra l'altro, il comando Info (I) di GSView mostra anche la dimensione della bitmap ottenibile con il Copia&Incolla. Infine, migliore qualità del testo nell'immagine si ottiene creando un PDF con ConTeXt invece di un DVI, convertire poi il PDF in PostScript con ps2pdf (un piccolo programma batch del GhostScript), ed infine il PS in EPS con GSView; un ulteriore vantaggio di questo procedimento è che il file EPS intermedio è conforme alle specifiche EPS (mentre nel modo descritto sopra l'EPS ottenuto non segue esattamente le specifiche).

Contattarmi

Potete contattarmi all'indirizzo: oblomov@freemail.it; suggerimenti ed opinioni (anche negative) sono benvenute. Insulti e simili verranno semplicemente ignorati, quindi mandateli altrove (come ad esempio il vostro cestino della carta straccia).

Potete trovarmi su IRCnet, canali #linux-it, #tex e #tex-it, per lo più ad orari tipo 22.30-00.30 CET. Frequento anche alcuni newsgroup, come comp.text.tex e it.comp.software.tex.