[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
A fianco del formato PostScript per i documenti finali, pronti per la stampa, ne esiste un altro: DVI, il cui nome sta per Device indipendent. Il file DVI, come nel caso di quello PostScript, contiene tutte le informazioni necessarie a descrivere il risultato finale stampato, anche se non esistono stampanti DVI. Si tratta quindi di un formato intermedio che, per essere stampato, richiede un'elaborazione successiva. I file DVI derivano principalmente da elaborazioni con il sistema di composizione TeX, con il quale sono distribuiti generalmente anche gli strumenti adatti a gestire tale formato.
Di solito, l'uso degli strumenti riferiti al formato DVI si limita a Dvips che converte file DVI in PostScript. Tuttavia sono disponibili anche altri strumenti che permettono di arrivare a un risultato stampato senza passare per il PostScript; si tratta in particolare di Dvilj per la generazione di un formato HP PCL (HP printer control language), adatto alle stampanti compatibili HP Laserjet.(1)
In pratica, la gestione dei file DVI è basata, di fatto, sulla conversione in PostScript attraverso Dvips e sulla rielaborazione successiva dei file PostScript attraverso altri strumenti.
Dvips (2) è un programma fondamentale per chi utilizza il sistema di composizione TeX (capitolo 316), proprio per la sua abilità nel convertire file DVI in PostScript. Anche se il suo funzionamento è apparentemente molto semplice, si tratta di un programma complesso, pieno di dettagli che in circostanze particolari possono diventare molto utili. Qui si cerca di puntare l'attenzione sulle funzionalità usate più di frequente.
Dvips utilizza la libreria Kpathsea, attraverso la quale è in grado di rigenerare rapidamente i caratteri necessari che non dovessero essere già stati preparati in precedenza (naturalmente devono essere presenti le informazioni per generare tali caratteri).
Considerato che il formato PostScript è diventato lo standard di fatto per le code di stampa, Dvips tende anche a essere visto come un comando di stampa speciale per il formato DVI. Infatti, come viene mostrato meglio dalla descrizione della sua configurazione, se si utilizza nel modo più naturale, come nell'esempio seguente, si ottiene la trasformazione del file DVI indicato nella riga di comando in formato PostScript e l'invio di questa trasformazione direttamente alla coda di stampa predefinita:
$
dvips pippo.dvi
[Invio]
I file di configurazione di Dvips si trovano generalmente nella directory texmf/dvips/config/
, cosa che potrebbe tradursi in pratica in /usr/share/texmf/dvips/config/
o altra collocazione simile. In pratica, se la gerarchia del file system è quella standard, questo potrebbe essere un collegamento simbolico alla directory reale /etc/texmf/dvips/
.
Il file di configurazione generale è denominato config.ps
, mentre è possibile affiancare a questo altri file simili che vengono presi in considerazione sono per l'invio a code di stampa particolari, attraverso l'opzione -P. Questi file aggiuntivi si distinguono in base all'estensione: config.coda_di_stampa
. Il senso di questi file di configurazione aggiuntivi si dovrebbe chiarire con la descrizione della direttiva o del file di configurazione.
Naturalmente, oltre ai file di configurazione che riguardano il sistema, ogni utente può aggiungere un proprio file personale: ~/.dvipsrc
.
I file di configurazione di Dvips sono file di testo normali, in cui, tutto ciò che inizia con il simbolo di percentuale (%) viene ignorato, assieme alle righe bianche e a quelle vuote. Tutte le altre righe sono da considerarsi direttive di configurazione.
Le direttive hanno un aspetto molto simile alle opzioni della riga di comando dell'eseguibile dvips, alle quali viene tolto il trattino iniziale. Tuttavia non bisogna generalizzare, perché non tutto è perfettamente identico.
|
Viene mostrato brevemente un file di configurazione tipico.
|
Naturalmente, il file di configurazione predefinito potrebbe contenere anche molte altre direttive, che in generale non conviene modificare se non si comprende il loro significato.
Il programma dvips elabora il file DVI fornito come argomento e ne genera un altro in PostScript. Se non viene indicato qualcosa di diverso attraverso le opzioni, il risultato viene inviato come previsto nel file di configurazione e solitamente si tratta della coda di stampa predefinita. Il nome del file DVI può essere indicato completo o sprovvisto dell'estensione: .dvi
.
dvips [opzioni] [file_dvi] |
Segue la descrizione di alcuni esempi.
$
dvips -t a4 -o mio_file.ps mio_file.dvi
[Invio]
Elabora il file mio_file.dvi
generando il file mio_file.ps
, in formato A4.
$
dvips -t a4 mio_file.dvi
[Invio]
Elabora il file mio_file.dvi
, trasformandolo in PostScript, lasciando che questo sia diretto come stabilito dalla configurazione (presumibilmente si tratta della coda di stampa predefinita).
$
dvips -t a4 -o mio_file.ps mio_file.dvi
[Invio]
Genera il file mio_file.ps
, in formato A4, togliendo alcuni commenti che possono creare problemi ai programmi di visualizzazione o di rielaborazione.
Dvipdfm (3) è un programma funzionalmente analogo a Dvips, con la differenza che genera file PDF a partire dal formato DVI. In condizioni normali, è sufficiente un utilizzo elementare, simile all'esempio seguente:
$
dvipdfm prova.dvi
[Invio]
In questo caso, si ottiene il file prova.pdf
, senza nemmeno la necessità di specificarlo. In pratica, a differenza di Dvips, il risultato viene salvato in un file, in modo predefinito.
Come si comprende dall'esempio, Dvipdfm è costituito in pratica dall'eseguibile dvipdfm, che si usa sinteticamente secondo la sintassi seguente:
dvipdfm [opzioni] file_dvi |
In pratica, il nome del file PDF viene determinato in modo predefinito, aggiungendo l'estensione .pdf
, o sostituendola all'estensione .dvi
del file di partenza. In alternativa, si può specificare un nome differente con l'uso di un'opzione apposita. La tabella 144.4 riepiloga le opzioni di uso più comune.
|
Anche per il formato DVI esistono strumenti per la visualizzazione in anteprima. Si tratta di programmi che usano il sistema grafico X, oppure che accedono direttamente alla scheda SVGA, oppure si limitano solo a generare una trasformazione in formato testo. In generale, le immagini PostScript incluse non vengono visualizzate nell'anteprima.
Catdvi (4) è un programma molto semplice per la lettura di file DVI attraverso un terminale a caratteri puro e semplice. Si compone in pratica dell'eseguibile catdvi, che si utilizza schematicamente nel modo seguente:
catdvi [opzioni] [file_dvi] |
In pratica, se il file DVI non viene fornito come argomento, viene letto dallo standard input; in ogni caso, il risultato viene emesso attraverso lo standard output.
Attraverso le opzioni è possibile, tra le altre cose, delimitare la lettura a un gruppo di pagine. Tuttavia, il modo in cui queste pagine deve essere indicato può essere complesso, pertanto si rimanda per questo alla documentazione di Catdvi, per esempio catdvi(1).
In particolare, può essere importante definire la codifica da usare per il file di testo da generare, allo scopo di non perdere le lettere accentate. Per esempio:
$
catdvi -e 2 prova.dvi | less
[Invio]
consente di scorrere il contenuto testuale del file prova.dvi
, usando la codifica ISO 8859-1. In pratica, l'opzione si comporta così:
Tmview (5) è un programma in grado di visualizzare in anteprima un file DVI su schermo SVGA (nei sistemi GNU/Linux, attraverso la libreria SVGAlib descritta nel capitolo 147) e anche attraverso l'ambiente grafico X.
dvisvga [opzioni] [file_dvi] |
dvilx [opzioni] [file_dvi] |
Il primo dei due modelli sintattici si riferisce all'uso di Tmview su una console virtuale SVGA di un sistema GNU/Linux, mentre il secondo riguarda l'ambiente grafico X.
Tmview prevede alcuni file di configurazione: /etc/dvilx
e ~/.dvilx
nel caso dell'eseguibile dvilx; /etc/dvisvga
e ~/.dvisvga
nel caso dell'eseguibile dvisvga. I file di configurazione personali degli utenti vengono creati e aggiornati da Tmview in base all'utilizzo. Tra le altre cose, questo serve a memorizzare il percorso degli ultimi file letti. Gli utenti che non vogliono l'alterazione automatica di questi file, possono togliere i permessi di scrittura al loro file.
Probabilmente l'opzione della riga di comando che deve essere conosciuta è quella che permette di definire la dimensione della finestra, nel caso di dvilx, ovvero la risoluzione dello schermo, nel caso di dvisvga:
-dampiezzaxaltezza |
Infatti, per quanto riguarda in particolare dvilx, una volta avviato non è possibile ridimensionare la sua finestra.
Quando si avvia Tmview, utilizzando uno dei due eseguibili in base alla convenienza, occorre considerare che potrebbe essere necessario attendere un po' di tempo per preparare i caratteri, come avviene già con applicazioni simili, quali Dvips, che utilizzano la libreria Kpathsea.
Dopo l'avvio, sia nel caso dell'edizione per schermi SVGA, sia per la versione per X, si interviene attraverso comandi della tastiera molto semplici. La tabella 144.6 ne riepiloga i più comuni.
|
Xdvi, (6) in qualità di software per l'ambiente grafico X, ha un'impostazione piuttosto vecchia e un utilizzo molto scomodo; in effetti si usa ancora molto poco, dal momento che esiste l'alternativa di Ghostview o GV dopo una conversione in PostScript.
Xdvi permette la visualizzazione di file DVI all'interno dell'ambiente grafico X. In presenza di immagini incorporate di tipo PostScript, richiede la presenza di Ghostscript.
|
Xdvi è rimasto decisamente spartano nella sua impostazione; oltre a questo, per visualizzare tutti i bottoni grafici che possono essere utilizzati, richiede una risoluzione dello schermo di almeno 1 024×768. In alternativa si è costretti a utilizzare i comandi attraverso la tastiera.
xdvi [opzioni] [file_dvi] |
L'eseguibile xdvi viene utilizzato generalmente senza alcun argomento, eventualmente può essere fornito il nome del file DVI che si vuole visualizzare.
|
TkDVI (7) permette la visualizzazione di file DVI all'interno dell'ambiente grafico X, in modo analogo a quanto fa Xdvi. Tuttavia, a differenza del primo, visualizza meglio i caratteri, ma manca la possibilità di vedere le immagini PostScript incorporate. La figura 144.9 mostra come si presenta il programma in condizioni normali.
|
L'utilizzo è abbastanza intuitivo e non serve una preparazione particolare. Per avviarlo, basta usare l'eseguibile tkdvi e in condizioni normali non si utilizzano delle opzioni. Tuttavia, è obbligatoria l'indicazione del file su cui intervenire:
tkdvi [opzioni] file |
Xgdvi e SpawX11 sono programmi che fanno parte del pacchetto TeX-Guy, (8) con lo scopo di visualizzare il contenuto di file DVI. I due si distinguono in particolare per il modo con cui è possibile interagire: il primo offre una serie di pulsanti grafici, mentre il secondo si usa semplicemente con il mouse, dove il tasto destro consente di visualizzare la pagina successiva, mentre quello sinistro riporta alla pagina precedente.
xgdvi [opzioni] file |
spawx11 [opzioni] file |
I due programmi funzionano in modo molto semplice, ma incontrano difficoltà nella visualizzazione di caratteri tipografici particolari.
|
Kdvi (9) è un programma per la visualizzazione di file DVI, con un'interfaccia grafica conforme allo stile di KDE.
|
kdvi [opzioni] [file] |
Si veda eventualmente la pagina di manuale kdvi(1).
Dvilj (10) è un pacchetto di programmi in grado di convertire un file DVI direttamente in formato PCL, quello usato dalle stampanti HP Laserjet.
I programmi in questione sono differenti dal momento che esistono diverse varianti nel linguaggio in base alle caratteristiche delle stampanti stesse. Per la precisione, si distingue tra:
La sintassi per l'utilizzo di questi programmi è la stessa, a parte il nome:
dvilj [opzioni] file_dvi |
dvilj2p [opzioni] file_dvi |
dvilj4 [opzioni] file_dvi |
dvilj4l [opzioni] file_dvi |
Si può osservare che non si prevede l'indicazione del file generato dall'elaborazione come argomento finale. Infatti, in condizioni normali, questo file viene creato in modo predefinito, utilizzando lo stesso nome di quello corrispondente del file DVI, dove al posto dell'ultima estensione si utilizza .lj
; in alternativa può essere indicato attraverso un'opzione apposita.
Per esempio, il comando seguente dovrebbe generare il file pippo.lj
:
$
dvilj4l pippo.dvi
[Invio]
I programmi di Dvilj non sono in grado di gestire i «caratteri virtuali», cosa che richiede generalmente una pre-elaborazione del file DVI attraverso il programma dvicopy, praticamente nel modo seguente:
$
dvicopy pippo.dvi pippo.2.dvi
[Invio]
$
dvilj4l pippo.2.dvi
[Invio]
La tabella 144.12 riassume le opzioni di questi programmi che compongono il blocco di Dvilj.
|
I programmi di Dvilj possono funzionare anche come filtro. Per questo, se al posto del file in ingresso si indica un trattino (-), si intende indicare per questo lo standard input.
Il formato DVI non offre molti strumenti per la sua rielaborazione. Vale la pena di conoscere quel poco che c'è, tenendo conto però che a volte si tratta di script che compiono il loro lavoro attraverso una rielaborazione in PostScript.
Tra tutti questi programmi di servizio merita attenzione dvicopy, il quale si occupa di generare un nuovo file DVI nel quale siano contenuti solo riferimenti a caratteri standard. In pratica, vengono trasformati i riferimenti ai «caratteri virtuali» che possono creare problemi ad alcuni programmi che utilizzano il formato DVI.
Il programma dvicopy (11) trasforma un file DVI in un altro che non contenga più riferimenti a caratteri virtuali:
dvicopy [opzioni] [file_dvi_ingresso [file_dvi_uscita]] |
Come si può intuire dallo schema sintattico, quando non si indica il file DVI in uscita, il risultato dell'elaborazione viene emesso attraverso lo standard output; quando manca anche l'indicazione del file in ingresso, questo viene atteso dallo standard input.
Il programma dvicopy prevede l'uso eventuale di opzioni, che però non sono determinanti per il suo scopo fondamentale, per cui non vengono mostrate.
$
dvicopy pippo.dvi pippo.2.dvi
[Invio]
L'esempio che si vede, serve semplicemente a generare il file pippo.2.dvi
, a partire da pippo.dvi
.
Il programma dviselect (12) permette di selezionare un gruppo di pagine da un file DVI, generando un altro file DVI contenente tale raccolta.
dviselect [opzioni] intervallo_pagine[,intervallo_pagine]... [file_dvi_ingresso [file_dvi_uscita]] |
Come avviene con dvicopy, quando non si indica il file DVI in uscita, il risultato dell'elaborazione viene emesso attraverso lo standard output; quando manca anche l'indicazione del file in ingresso, questo viene atteso dallo standard input. Tuttavia, in aggiunta, si possono usare delle opzioni particolari per indicare espressamente quale file è in ingresso e quale è in uscita.
Dal momento che le opzioni non sono determinanti per il funzionamento di dviselect, queste non vengono mostrate; piuttosto, è necessario descrivere come si indicano gli intervalli di pagine:
[pagina_iniziale]:[pagina_finale] |
In questo modo, il valore che appare prima dei due punti indica la pagina di partenza, mentre l'altro indica la pagina finale. In mancanza del primo valore, si intende la prima pagina; in mancanza del secondo si intende l'ultima pagina.
Se uno dei valori che indicano gli intervalli di pagine, è preceduto da un trattino basso (_), si intende fare riferimento a una pagina numerata in modo negativo.
odd |
Seleziona tutte le pagine dispari, ovvero quelle destre in una numerazione normale.
even |
Seleziona tutte le pagine pari, ovvero quelle sinistre in una numerazione normale.
$
dviselect 20:30,60:70 pippo.dvi pippo.2.dvi
[Invio]
L'esempio mostra la creazione del file pippo.2.dvi
a partire da pippo.dvi
, selezionando solo le pagine da 20 a 30 e da 60 a 70.
Il programma dvidvi (13) permette di selezionare un gruppo di pagine da un file DVI, generando un altro file DVI contenente tale raccolta.
dvidvi [opzioni] file_dvi_ingresso file_dvi_uscita |
dvidvi consente anche di raggruppare assieme più pagine logiche in una sola pagina fisica, attraverso l'opzione speciale -m, come possono fare le PSUtils con i file PostScript. Tuttavia, tale funzionalità è incompleta, perché manca la possibilità di ridurre le dimensioni e di ruotare le pagine.
|
Segue la descrizione di alcuni esempi.
$
dvidvi -f 21 -l 40 pippo.dvi pippo.2.dvi
[Invio]
Genera il file pippo.2.dvi
, copiando l'intervallo di pagine dalla 21-esima alla 40-esima del file pippo.dvi
.
$
dvidvi -i 21..40 pippo.dvi pippo.2.dvi
[Invio]
Esattamente come nell'esempio precedente.
Il programma dviconcat (14) permette di unire assieme un gruppo di file DVI, generando un file DVI unico, contenente tale raccolta.
dviconcat [opzioni] file... |
L'opzione più importante è -o file, che permette di indicare il nome del file che si vuole generare, a partire dall'unione di tutti i file indicati come argomento nella parte finale della riga di comando. In mancanza di tale opzione, il risultato viene emesso attraverso lo standard output.
$
dviconcat -o risultato.dvi primo.dvi secondo.dvi
[Invio]
L'esempio mostra la creazione del file risultato.dvi
a partire da primo.dvi
e secondo.dvi
.
In alcuni sistemi esiste il programma dvi2fax, (15) che in realtà è uno script che utilizza Dvips e Ghostscript per generare un file in formato FAX a partire da uno in DVI.
dvi2fax {-hi|-lo} file_dvi opzioni_per_dvips |
Come si vede dalla sintassi, non viene indicato il nome del file finale, che in generale è lo stesso di quello di origine, con la variante dell'estensione che diventa .fax
.
Per arrivare a questo risultato, lo script dvi2fax si avvale di Dvips con due configurazioni speciali a seconda della risoluzione del fax: config.dfaxlo
e config.dfaxhigh
. Dvips viene usato per generare un file PostScript con la risoluzione necessaria, mentre Ghostscript svolge il passaggio finale per trasformare il file PostScript in fax.
$
dvi2fax -hi pippo.dvi
[Invio]
L'esempio mostra il caso tipico, in cui si vuole ottenere il file pippo.fax
a partire dal file pippo.dvi
. Come si può intuire, l'opzione -hi genera un file FAX ad alta risoluzione, mentre l'opzione opposta, -lo genererebbe un file a bassa risoluzione.
Il programma dvipng (16) permette di generare una serie di file in formato PNG, dalle pagine di un file DVI:
dvipng [opzioni] file_dvi[.dvi] |
Se tra le opzioni della riga di comando non si specifica il nome o il modello del nome dei file da generare, si ottiene qualcosa che riprende la radice del nome del file DVI, seguita da un numero e dall'estensione (.png
).
|
Segue la descrizione di alcuni esempi.
$
dvipng prova.dvi
[Invio]
Genera una serie di file (prova1.png
, prova2.png
,...) con il contenuto di tutte le pagine del file prova.dvi
.
$
dvipng -p =10 -l =20 prova.dvi
[Invio]
Genera una serie di file (da prova10.png
a prova20.png
) con il contenuto delle pagine dalla numero 10 alla numero 20, incluse, contandole in modo assoluto.
$
dvipng -p =5 -l =10 -o prova-%03d.png prova.dvi
[Invio]
Genera una serie di file, da prova-001.png
a prova-010.png
.
Si osservi che nel modello si può usare solo la sigla %d, oppure %03d, pertanto, se si hanno più di 999 pagine, non è possibile richiedere una numerazione di quattro cifre costanti. |
$
dvipng -p =5 -l =10 -o prova-%03d.png -x 100 prova.dvi
[Invio]
Come nell'esempio precedente, producendo però delle miniature della dimensione di un decimo (100/1 000).
$
dvipng -p =5 -l =10 -o prova-%03d.png -x 100 -D 600 prova.dvi
[Invio]
Come nell'esempio precedente, ma con una risoluzione di 600 punti per pollice. In pratica, considerato che normalmente uno schermo funziona con risoluzioni da 72 punti o da 100 punti, l'immagine risultante è più grande (almeno sei volte più grande).
Lo script dvired, (17) attraverso Dvips e PSUtils, genera una trasformazione in PostScript che poi viene trasformata in modo da ridurre il formato, ottenendo due pagine logiche in una singola pagina fisica.
dvired [-o file_ps_uscita | -P coda_di_stampa | -f] [altre_opzioni_per_dvips] file |
Come si può vedere dallo schema sintattico, attraverso le opzioni indicate è possibile decidere se il risultato finale, in PostScript, debba essere inviato a una coda di stampa, a un file, o debba essere emesso attraverso lo standard output. Se si indicano altre opzioni, queste vengono passate tali e quali a Dvips.
$
dvired pippo.dvi
[Invio]
L'esempio mostra il caso più semplice, ma anche più logico, dal momento per situazioni più complesse conviene gestire direttamente Dvips e i programmi delle PSUtils. In pratica, se Dvips è configurato in modo standard, si ottiene la stampa del file pippo.dvi
, dopo che questo è stato ridotto in modo da stampare due pagine logiche per una sola pagina reale.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Alcune distribuzioni GNU comuni non includono tutto il necessario per arrivare al risultato finale della stampa attraverso i programmi del pacchetto Dvilj.
7) TkDVI software libero con licenza speciale
12) dviselect licenza speciale
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome dvi.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]