Comment visualiser des fichiers non postscript sous xdvi ?

recherche d'un mot
D. Barbier propose le script suivant pour inclure des fichier MPS
générés pas Metapost.

La démarche retenue est de pomper dans le .ps toutes les
définitions qui manquent à ce pauvre xdvi. Par exemple, pour voir
les dessins dans le fichier essai.tex, je fais :
    makepro essai.tex
Ce qui génère essai.ps (s'il est vieux) et produit un fichier
essai.pro. Il ne reste plus qu'à mettre \special{header=essai.pro}
avant le \begin{document} et le tour est joué. Quand on modifie
le source (on rajoute des dessins), il suffit de relancer
makepro, et de recompiler le document.

Quelques remarques :
+ il faut une version de xdvi >= 20
+ on peut sans encombres utiliser plusieurs fois cette commande
sur le même fichier ;
+ pour faire le .ps final, il faut enlever
\special{header=essai.pro} et recompiler ;
+ s'il y a des problèmes d'échelle, essayer de modifier des paramètres
dans la définition de fshow et fstore.
+ je travaille en 600dpi ;

Comme je ne connais pas grand chose en PostScript, toutes les
remarques seront les bienvenues. Par exemple, les paramètres
dans fshow et fstore sont mis au pif. Quelles sont les bonnes
valeurs ? Comment faire pour que Psfrag passe à la moulinette ?
Et bien d'autres choses.

%%%% debut macro %%%%
 #!/bin/sh
 # D. Barbier 31/10/97  barbier at cmapx.polytechnique.fr
 # Commande : makepro nom_de_fichier
 # Usage    : voir ci-dessous (ou taper makepro -h)

 usage="Usage: `basename $0` nom[.tex]\n\
 Cree un preambule \"nom\".pro qui permet l affichage
 des fichiers non postscript (inclus par \"nom\") avec
 xdvi (version 20 et plus).\n\
 Les applications sont notamment l inclusion de fichiers
 generes par Metapost."

 case "$#:$1" in
    1:-h*|1:--h*) echo "$usage"; exit 0;;
    1:*) ;;
    *) echo "$usage"; exit 1;;
 esac

 if test -r "$1" ; then
    filetex=$1
    file=`echo "$filetex" | sed -e 's/\.[^.]*$//'`
 else
    file=$1
    filetex=$file.tex
    if test ! -r "$filetex" ; then
        echo "Erreur: le fichier $file n existe pas"
        exit 1
    fi
 fi
 filedvi=$file.dvi
 fileps=$file.ps
 filepro=$file.pro
 rm -f $filepro

 # On teste si la commande \special{header=...}
 # est dans le fichier
 # Autant ne faire qu'une compilation avant de
 # voir le resultat
 ligne="\\\\special{header=$filepro}"
 if test -z "`grep $ligne $filetex`" ; then
    echo "Rajouter la comande $ligne avant \\\\begin{document}"
    exit 1
 fi

 echo "%!" > $filepro

 # On ne compile le .tex que si necessaire. Il y a
 # plusieurs possibilites pour voir la date de modification
 # des fichiers :
 # 1) utiliser newer fourni avec certaines distributions de TeX
 #    (je n'ai pas reussi a le faire marcher).
 # 2) test (si l'option -nt est supportee)
 # 3) creer un makefile.
 # J'ai choisi cette derniere solution

 echo "$filedvi: $filetex\n\tlatex $filetex\n\
 $fileps: $filedvi\n\tdvips -o $fileps $filedvi\n" > .tmp$$

 make -f .tmp$$ $fileps

 rm -f .tmp$$

 awk '
 # Liste des preambules qu on veut utiliser
 BEGIN {header["tex.pro"]=1;header["texps.pro"]=1}
 /%%BeginProcSet:/ { if ( header[$2] == 1 ) {getline
 while ( $1 != "%%EndProcSet" ) {print;getline}}}
 /%%EndProlog/ {exit 0}
 ' $fileps |
 # On supprime la creation des dictionnaires.
 sed -e 's%/TeXDict [[:digit:]]* dict \([[:alpha:]]*\)%%' \
    -e 's%/SDict [[:digit:]]* dict \([[:alpha:]]*\)%%' \
      >> $filepro

 # Ce sont les commandes qui font l affichage.
 # En remplacant les commandes de finclude.pro par celles-ci,
 # ca a l air de marcher

 cat << EOF >> $filepro
 /fstore{TeXDict begin /VResolution 120 def /Resolution 120
 def end
 dup dict exch{dup 4 2 roll put}repeat def}bind def
 /fshow{gsave 72 TeXDict /Resolution get div -72 TeXDict
 /VResolution get div scale 1
 5 div dup scale get cvx exec show grestore}bind def
 EOF

 # Et la, ce sont les commandes de fontes
 awk '
 /TeXDict begin ([[:digit:]]* ){5}/ {i++}
 /TeXDict begin ([[:digit:]]* ){5}/,/end/ {if (i==1) print}
 /%%EndProlog/ {exit 0}
 ' $fileps >> $filepro

 echo "Fichier $filepro genere"

 exit 0
%%%% fin macro %%%%

Retour à la FAQ LaTeX
Proposition de modification de la FAQ LaTeX :
bayartb at edgard point fdn point fr
Commentaire sur la version HTML de cette FAQ :
Fabien Torre
© Copyright 1997 Marie-Paule Kluth. Tous droits réservés.

Valid XHTML 1.0! Valid CSS!