#!/bin/bash
###############################################################################
#                                                                             #
#                                  ShLaTeX                                    #
#                                                                             #
###############################################################################
#                                                                             #
# Auteur:           Mael Hillreau                                            #
# Ml :             mael.hillereau@free.fr                                    #
# Web :             http://mael.hillereau.free.fr                             #
# Cration :        06/03/2003                                                #
# Dernire modif.:  21/08/2003                                                #
# Version:          1.2b-fr                                                   #
# Description:      Script de compilation LaTeX pour Linux                    #
#                                                                             #
###############################################################################
#                                                                             #
# ShLaTeX -- Script de compilation LaTeX pour Linux.                          #
# Copyright (C) 2003  Mael Hillreau                                          #
#                                                                             #
# This program is free software; you can redistribute it and/or               #
# modify it under the terms of the GNU General Public License                 #
# as published by the Free Software Foundation; either version 2              #
# of the License, or (at your option) any later version.                      #
#                                                                             #
# This program is distributed in the hope that it will be useful,             #
# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
# GNU General Public License for more details.                                #
#                                                                             #
# You should have received a copy of the GNU General Public License           #
# along with this program; if not, write to the Free Software                 #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. #
#                                                                             #
###############################################################################
nomshell=`expr match "$0" '.*/\([^-\]*\).*'`;
version="1.2b-fr";

## envoi du code de retour appropri
function fin() {
	echo -ne "termin.\n\n";
	if [ $errindex -eq 1 ]
	then
		exit 3;
	else
		if [ $errbib -eq 1 ]
		then
			exit 2;
		else
			if [ $errcompil -eq 1 ]
			then
				exit 1;
			else
				exit 0;
			fi
		fi
	fi
}

## suppression des temporaires
function suppressionTemp() {
	if [ $tmp -eq 0 ]
	then
		echo "suppression des temporaires latex...";
		rm -fr ./"$f".ShLaTeX
	fi
}

## fct de rappel pour CTRL^C
function ctrlc() {
	echo -ne "\n> Annulation !\n";
	if [ ! "$f" == "-" ]
	then
		repCourant=`pwd`;
		repCourant=`expr match "$repCourant" '.*/\(.*\)'`
		if [ "$repCourant" == "$f".ShLaTeX  ]
		then
			cd ..;
		fi
		suppressionTemp;
	fi
	fin;
}

## dclaration des variables globales

# nom du fichier
f="-";

# codes d'erreur
errindex=0;
errcompil=0;
errbib=0;

# options prfrencielles
P_dvipdf=-1;
P_pdflatex=-1;
P_dvips=-1;
P_pstopdf=-1;
P_dvi=-1;
P_idx=-1;
P_no_idx=-1;
P_idx_file="-";
P_bib=-1;
P_no_bib=-1;
P_bib_file="-";
P_toc=-1;
P_no_toc=-1;
P_tmp=-1;
P_no_tmp=-1;
P_z=-1;
P_no_z=-1;
P_un=-1;
P_deux=-1;
P_quatre=-1;
P_sep=-1;
P_no_sep=-1;
P_m=-1;
P_no_m=-1;
P_view=-1;
P_no_view=-1;
P_sept=-1;
P_huit=-1;
P_v_ps="-";
P_v_pdf="-";
P_v_dvi="-";

# options de la ligne de commande
L_dvipdf=-1;
L_pdflatex=-1;
L_dvips=-1;
L_pstopdf=-1;
L_dvi=-1;
L_idx=-1;
L_no_idx=-1;
L_idx_file="-";
L_bib=-1;
L_no_bib=-1;
L_bib_file="-";
L_toc=-1;
L_no_toc=-1;
L_tmp=-1;
L_no_tmp=-1;
L_z=-1;
L_no_z=-1;
L_un=-1;
L_deux=-1;
L_quatre=-1;
L_sep=-1;
L_no_sep=-1;
L_m=-1;
L_no_m=-1;
L_view=-1;
L_no_view=-1;
L_sept=-1;
L_huit=-1;
L_v_ps="-";
L_v_pdf="-";
L_v_dvi="-";

## options d'xcution
mode="dvi";
idx=0;
idx_file="-";
bib=0;
bib_file="-";
toc=1;
tmp=0;
z=0;
ppf=1;
sep=0;
m=0;
view=1;
ascii=7;
v_ps="gv";
v_pdf="gv";
v_dvi="xdvi";

## capture des CTRL^C
trap "ctrlc" SIGINT

## affiche une aide rapide
function aideRapide() {
	echo -ne "> Utilisation :\n";
	echo -ne "\n";
	echo -ne "    $nomshell [options] <nom_fichier.tex>\n";
	echo -ne "\n";
	echo -ne "    tapez \"man shlatex\" ou \"$nomshell -?\" pour une aide complte.\n";
	echo -ne "\n";
}

## affiche une aide complte
function aideComplete() {
echo ".TH \\fBShLaTeX\\fP 1 \"Aot 2003\" \"version 1.2b-fr\" \"Manuel d'utilisation\"

.SH NOM
\\fBShLaTeX\\fP \\- Script de compilation pour documents crits en langage LaTeX.

.SH SYNOPSIS
\\fBShLaTeX\\fP [options] \\fIfichierSource.tex\\fP

.SH DESCRIPTION
.PP
  Ce script permet de centraliser les nombreux appels de commandes ncessaires 
la compilation complte d'un document LaTeX. Notamment, les appels multiples 
la commande \\fBlatex\\fP indispensables pour crer une table des matires, une
bibliographie ou un index sont effectus automatiquement. Sont galement grs
les appels aux programmes \\fBbibtex\\fP et \\fBmakeindex\\fP ainsi que la
visualisation du fichier rsultat (au format DVI, PostScript ou PDF) par appel 
un programme externe.
.PP
  Il est possible de compiler les documents qui utilisent les commandes
\\fB\\\\input\\fP et \\fB\\\\include\\fP pour faire rfrence  des fichiers externes et
cela de faon transparente en ne compilant que le fichier source principal.
.PP
  Une fois la compilation effectue les fichiers temporaires sont effacs (option
\\fB-no-tmp\\fP) ou conservs (option \\fB-tmp\\fP). Les fichiers DVI gnrs par
LaTeX peuvent alors tre directement convertis au format PostScript ou PDF.
.PP
  Ce script prend aussi en charge l'accentuation des caractres franais par
l'intermdiaire d'un programme C externe (nomm \\fBtex8to7\\fP) et fourni avec le
script (la gestion des accents est donc transparente). Il gre aussi le \"c\"
cdille ainsi que le remplacement des guillemets par les commandes \\fB\\\\og\\fP et
\\fB\\\\fg\\fP (cela suppose que les guillemets soient apparis). Les guillemets
peuvent tre impriqus en utilisant des accolades pour distinguer les diffrentes
paires de guillemets. Par exemple, le texte :
.PP
    Les guillemets \"peuvent tre {\"imbriqus\"}  l'aide d'accolades\".
.PP
  est un exemple correct.
.PP
  Les options par dfaut (prfrences) sont stockes dans le rpertoire
personnel de l'utilisateur dans le fichier \\fB~/.shlatex\\fP. Voir la section
FICHIERS pour connatre la syntaxe de ce fichier.
.SH OPTIONS
.IP \"\\fB\\-dvipdf\\fP\"
Slectionne un format PDF au lieu du format DVI pour le fichier rsultat. Le
programme \\fBdvipdf\\fP est alors utilis pour la conversion.
.IP \"\\fB\\-pdflatex\\fP\"
Slectionne un format PDF au lieu du format DVI pour le fichier rsultat. Le
programme \\fBpdflatex\\fP est  alors directement utilis pour crer le fichier
rsultat.
.IP \"\\fB-dvips\\fP\"
Slectionne un format PostScript au lieu du format DVI pour le fichier rsultat.
Le programme \\fBdvips\\fP est alors utilis pour la conversion.
.IP \"\\fB-ps2pdf\\fP\"
Slectionne un format PDF au lieu du format PostScript pour le fichier rsultat.
Utilise l'option \\fB-dvips\\fP. Les programmes \\fBdvips\\fP et \\fBps2pdf\\fP sont
successivement utiliss pour la conversion et le fichier PostScript est conserv
aprs la conversion.
.IP \"\\fB-dvi\\fP\"
Slectionne un format DVI pour le fichier rsultat.
.IP \"\\fB-idx\\fP \\fI[style.ist]\\fP ou \\fB--index\\fP \\fI[style.ist]\\fP\"
Active la cration de l'index (pour une utilisation avec le module
\\fImakeidx\\fP). Le fichier optionnel \\fIstyle.ist\\fP est un fichier de
style pour \\fBmakeindex\\fP.
.IP \"\\fB-no-idx\\fP ou \\fB--no-index\\fP\"
Dsactive la cration de l'index.
.IP \"\\fB-bib\\fP \\fI[fichier.bib]\\fP ou \\fB--bibliography\\fP \\fI[fichier.bib]\\fP\"
Active la cration de la bibliographie avec \\fBbibtex\\fP en se basant sur
\\fIfichier.bib\\fP. Si aucun fichier n'est indiqu, le fichier d'extension \".bib\"
doit porter le mme nom que \\fIfichierSource\\fP.tex.
.IP \"\\fB-no-bib\\fP ou \\fB--no-bibliography\\fP\"
Dsactive la cration de la bibliographie.
.IP \"\\fB-toc\\fP ou \\fB--table-of-contents\\fP\"
Active la compilation supplmentaire pour la construction d'une table des
matires, une table des figures, une liste des tableaux et toutes les rfrences
LaTeX (commande \\fB\\label{...}\\fP).
.IP \"\\fB-no-toc\\fP ou \\fB--no-table-of-contents\\fP\"
Dsactive la compilation supplmentaire pour la construction d'une table des
matires, une table des figures, une liste des tableaux et toutes les rfrences
LaTeX (commande \\fB\\label{...}\\fP).
.IP \"\\fB-tmp\\fP ou \\fB--temporary\\fP\"
Conserve aprs l'eccution du script les fichiers temporaires crs par LaTeX.
Ces fichiers sont ainsi stocks dans un rpertoire nomm
\\fIfichierSource.ShLaTeX\\fP.
.IP \"\\fB-no-tmp\\fP ou \\fB--no-temporary\\fP\"
Supprime aprs l'eccution du script les fichiers temporaires crs par LaTeX.
.IP \"\\fB-z\\fP ou \\fB--gzip\\fP\"
Compresse les fichiers PostScript avec le programme \\fBgzip\\fP. Les fichiers
prennent alors l'extension \".ps.gz\".
.IP \"\\fB-no-z\\fP ou \\fB--no-gzip\\fP\"
Dsactive la compression des fichiers PostScript avec le programme \\fBgzip\\fP.
.IP \"\\fB-1\\fP ou \\fB--1page\\fP\"
Gnre des fichiers PostScript ayant 1 page a4 par feuille a4.
.IP \"\\fB-2\\fP ou \\fB--2pages\\fP\"
Gnre des fichiers PostScript ayant 2 pages a5 par feuille a4.
.IP \"\\fB-4\\fP ou \\fB--4pages\\fP\"
Gnre des fichiers PostScript ayant 4 pages a6 par feuille a4.
.IP \"\\fB-sep\\fP ou \\fB--separator\\fP\"
S'utilise avec l'option \\fB-2\\fP ou \\fB-4\\fP. Permet de tracer une ligne sparatrice entre
les diffrentes pages d'une mme feuille.
.IP \"\\fB-no-sep\\fP ou \\fB--no-separator\\fP\"
S'utilise avec l'option \\fB-2\\fP ou \\fB-4\\fP. Permet de dsactiver le trac de la
ligne sparatrice entre les diffrentes pages d'une mme feuille.
.IP \"\\fB-m\\fP ou \\fB--messages\\fP\"
Affiche systmatiquement les messages de LaTeX dans la console (voir aussi la
section ERREURS DE COMPILATION).
.IP \"\\fB-no-m\\fP ou \\fB--no-messages\\fP\"
Si cette option est utilise, les messages de LaTeX n'apparaissent qu'en cas
d'erreur (voir aussi la section ERREURS DE COMPILATION).
.IP \"\\fB-view\\fP ou \\fB--viewer\\fP\"
Active la visualisation finale.
.IP \"\\fB-no-view\\fP ou \\fB--no-viewer\\fP\"
Dsactive la visualisation finale.
.IP \"\\fB-7\\fP ou \\fB--7bits\\fP\"
Dsactive l'accentuation du fichier source LaTeX. Le fichier source doit tre un
fichier ascii cod sur 7 bits.
.IP \"\\fB-8\\fP ou \\fB--8bits\\fP\"
Active l'accentuation du fichier source LaTeX. Le fichier source peut tre un
fichier ascii cod sur 8 bits.
.IP \"\\fB-v-ps\\fP \\fIvisionneur\\fP ou \\fB--view-ps-with\\fP \\fIvisionneur\\fP\"
Utilise le programme \\fIvisionneur\\fP pour la visualisation finale des fichiers
PostScript.
.IP \"\\fB-v-pdf\\fP \\fIvisionneur\\fP ou \\fB--view-pdf-with\\fP \\fIvisionneur\\fP\"
Utilise le programme \\fIvisionneur\\fP pour la visualisation finale des fichiers
PDF.
.IP \"\\fB-v-dvi\\fP \\fIvisionneur\\fP ou \\fB--view-dvi-with\\fP \\fIvisionneur\\fP\"
Utilise le programme \\fIvisionneur\\fP pour la visualisation finale des fichiers
DVI.
.IP \"\\fB-v\\fP ou \\fB--version\\fP\"
Affiche la version et quitte.
.IP \"\\fB-?\\fP, \\fB-h\\fP ou \\fB--help\\fP\"
Affiche l'aide.

.IP \"\\fINote\\fP :\"
Lors de l'utilisation de l'option \\fB\\-view\\fP, le format de fichier choisi en
sortie (DVI, PostScript ou PDF) doit tre lisible par le programme
\\fIvisionneur\\fP pour que la visualisation fonctionne correctement. Par dfaut,
les programme utiliss sont \\fBxdvi\\fP pour les fichiers DVI et \\fBgv\\fP pour
les fichiers PostScript et PDF.

.SH \"ERREURS DE COMPILATION\"
.PP
  Si l'option \\fB-no-m\\fP est utilise, en cas d'erreur de compilation par
LaTeX, le script ne rpond plus. On peut l'arrter en tapant les options de la
ligne de commande (\"x\" pour ignorer, \"q\" pour quitter, ...) en aveugle, ou en
tapant \"Ctrl^C\". Dans les deux cas, les erreurs seront affiches juste aprs.
Cette imperfection est due au choix de ne pas afficher les messages du programme
\\fBlatex\\fP par dfaut. Cependant, le problme n'existe que si le mode
d'interaction autorise LaTeX  s'arrter sur les erreurs (ce qui n'est pas le
cas, par exemple si la commande \\fB\\\\nonstopmode\\fP est utilise).
.PP
  Dans tous les cas, il est possible de forcer l'affichage des messages de
\\fBlatex\\fP en utilisant l'option \\fB-m\\fP  la place de l'option \\fB-no-m\\fP.

.SH \"FICHIERS\"
.PP
  Le fichier \\fB~/.shlatex\\fP contient les prfrences de l'utilisateur. Il peut
tre modifi afin d'utiliser des valeurs par dfaut personnalises pour les
options du script, mais la syntaxe du fichier doit tre respecte :
.PP
  Chaque ligne du fichier doit contenir une et une seule option. Les options
sont toutes permises  l'exeption de \\fB-v\\fP et \\fB-?\\fP qui n'auraient pas
leur place dans le fichier de prfrences. Pour les options qui admettent des
paramtres, comme dans le shell, ils seront placs aprs leur option respective
mais devront en tre spars par un seul caractre d'espacement ('\\ '). L'ordre
des options n'importe pas.
.PP
  Dans le cas o des incohrences apparatraient lors de l'excution du script,
des avertissements seront affichs.
.PP
  Si lors de la premire excution du script, le fichier \\fB~/.shlatex\\fP
n'existe pas, alors il sera cr automatiquement avec le contenu suivant :
.RS 5
.IP \"-dvips\"
.IP \"-view\"
.IP \"-no-idx\"
.IP \"-no-bib\"
.IP \"-toc\"
.IP \"-no-tmp\"
.IP \"-no-z\"
.IP \"-1\"
.IP \"-no-sep\"
.IP \"-no-m\"
.IP \"-8\"
.IP \"-v-ps gv\"
.IP \"-v-pdf gv\"
.IP \"-v-dvi xdvi\"

.SH \"PROBLMES CONNUS\"
.SS \"BoundingBox\"
.PP
  Lorsque l'on insre une image avec la commande \\fB\\\\includegraphics\\fP, il
faut spcifier la \"boundingbox\" en argument de la commande, sinon la compilation
ne fonctionne pas. Voici un exemple :
.PP
  \\\\includegraphics[bb=0 0 100 200]{image.eps}
.SS \"Fichiers externes\"
  Pour que l'inclusion de fichiers externes fonctionne correctement, les commandes
\\fB\\\\input\\fP et \\fB\\\\include\\fP doivent tre places sur des lignes indpendantes
du fichier \\fIfichierSource.tex\\fP.

.SH \"VOIR AUSSI\"
.BR latex (1),
.BR pdflatex (1),
.BR dvips (1),
.BR ps2pdf (1),
.BR dvipdf (1),
.BR xdvi (1),
.BR gv (1),
.BR gzip (1)

.SH \"BOGUES\"
.PP
Merci de signaler les bogues en envoyant un ml  l'adresse de la section
AUTEUR.

.SH \"LICENCE\"
.PP
  Ce script et l'ensemble des fichiers qui lui sont relatifs (dont ce manuel)
sont soumis aux termes de la Licence Publique Gnrale GNU. La GPL GNU est
fournie avec le script (fichier /usr/share/shlatex/GPL.TXT) et est galement
disponible  l'adresse http://www.gnu.org/licenses/gpl.html.

.SH \"AUTEUR\"
.PP
Copyright (C) 2003 Mael Hillreau
.PP
\\fIcontact\\fP : mael.hillereau@free.fr
.PP
\\fIweb\\fP : http://mael.hillereau.free.fr
" > ~/ShLaTeX_"$version".tmp;
man ~/ShLaTeX_"$version".tmp
rm -f ~/ShLaTeX_"$version".tmp
}

## affiche un message d'erreur
function erreur() {
	echo -ne "\n";
	echo -ne "> Erreur :\n";
	echo -ne "    $1\n";
	echo -ne "\n";
	if [ $# -eq 2 ]
	then
		if [ $2 == "-?" ]
		then
			aideRapide;
		fi
	fi
}

## affiche un message d'avertissement
function avertissement() {
	echo -ne "\n";
	echo -ne "> Avertissement :\n";
	echo -ne "    $1\n";
	echo -ne "\n";
}

## affiche la version et sort
function version() {
	echo -ne "$nomshell version $version - Script de compilation LaTeX pour Linux.\nCopyright (C) 2003 Mael Hillreau\n";
	exit 0;
}

## recherche les fichiers externes (1 seul par ligne dans le source LaTeX !)
function fichiersExternes() {
	fExt="";
	lignes=`grep -e "^[ |\t]*\input{" $1`;
	lignes=`echo $lignes | grep -v -E "^[ |\t]*%.*"`
	for l in $lignes
	do
		fExt="$fExt `expr match $l '.*\input{\(.*\)}'`";
	done
	lignes=`grep -e "^[ |\t]*\include{" $1`;
	lignes=`echo $lignes | grep -v -E "^[ |\t]*%.*"`
	for l in $lignes
	do
		fExt="$fExt `expr match $l '.*\include{\(.*\)}'`";
	done
	lignes=`grep -e "^[ |\t]*\in\(put\|clude\) " $1`;
	lignes=`echo $lignes | grep -v -E "^[ |\t]*%.*"`
	for l in $lignes
	do
		if [ ! $l == "\input" -a ! $l == "\include" ]
		then
			fExt="$fExt $l";
		fi
	done
	fTemp="";
	for l in $fExt
	do
		cTemp=`expr match $l '[ |\t]*\(.*\)\.tex'`;
		if [[ $cTemp == "" ]]
		then
			fTemp="$fTemp $l";
		else
			fTemp="$fTemp $cTemp";
		fi
	done
	fExt=$fTemp;
}

## remplace les fichiers externes nomms $1 par $2 dans le fichier $3
function rplcExtFich() {
	if [ -f $3 ]
	then
		lignes=`cat $3 | grep -n "\input $1" | tr " " "@"`;
		lignes="`cat $3 | grep -n \input{$1}` $lignes";
		for ligne in $lignes
		do
			ligne=`echo $ligne | tr "@" " "`;
			nblignes=`wc -l $3 | tr -s " " ":" | cut -f 2 -d ":"`;
			nligne=`echo $ligne | cut -f 1 -d ":"`;
			nligne=`expr $nligne - 1`;
			fin=`expr $nblignes - $nligne - 1`;
			head -$nligne "$3" > "$3".tmp
			echo "\input{$2}" >> "$3.tmp"
			tail -n $fin "$3" >> "$3".tmp
			mv -f "$3".tmp "$3"
		done
		lignes=`cat $3 | grep -n "\include $1" | tr " " "@"`;
		lignes="`cat $3 | grep -n \include{$1}` $lignes";
		for ligne in $lignes
		do
			ligne=`echo $ligne | tr "@" " "`;
			nblignes=`wc -l $3 | tr -s " " ":" | cut -f 2 -d ":"`;
			nligne=`echo $ligne | cut -f 1 -d ":"`;
			nligne=`expr $nligne - 1`;
			fin=`expr $nblignes - $nligne - 1`;
			head -$nligne "$3" > "$3".tmp
			echo "\include{$2}" >> "$3.tmp"
			tail -n $fin "$3" >> "$3".tmp
			mv -f "$3".tmp "$3"
		done
	fi
}

## vrifie que le fichier fourni est accessible et xcutable
function estExec() {
	for rep in `echo $PATH | tr ":" " "`
	do
		if [ -x $rep/$1 ]
		then
			return 1;
		fi
	done
	return 0;
}

## vrifie qu'au plus un seul des arguments entiers a t initialis
function verifInit() {
	i=0;
	for a
	do
		if [ $a -ne -1 ]
		then
			i=`expr $i + 1`;
		fi
	done
	return $i;
}

## charge les prfrences  partir du fichier ~/.shlatex (une option par ligne)
function preferences() {
	for ligne in `grep -e "^-.*" ~/.shlatex | tr " " "="`
	do
		opt=`expr match $ligne '[:space:]*\(-[-a-z0-9]*\)=*.*'`;
		paramopt="";
		paramopt=`expr match $ligne '[:space:]*-[-a-z0-9]*=\(.*\)'`;
		case $opt in
			"-dvipdf" )
				P_dvipdf=1;;
			"-pdflatex" )
				P_pdflatex=1;;
			"-ps2pdf" )
				P_pstopdf=1;;
			"-dvips" )
				P_dvips=1;;
			"-dvi" )
				P_dvi=1;;
			"-idx" | "--index" )
				P_idx=1;
				if [ ! $paramopt == "" ]
				then
					P_idx_file=$paramopt;
				fi ;;
			"-no-idx" | "--no-index" )
				P_no_idx=1;
				;;
			"-bib" | "--bibliography" )
				P_bib=1;
				if [ ! $paramopt == "" ]
				then
					P_bib_file=`expr match $paramopt '\(.*\)\.bib'`;
				fi ;;
			"-no-bib" | "--no-bibliography" )
				P_no_bib=1;;
			"-toc" | "--table-of-contents" )
				P_toc=1;;
			"-no-toc" | "--no-table-of-contents" )
				P_no_toc=1;;
			"-tmp" | "--temporary" )
				P_tmp=1;;
			"-no-tmp" | "--no-temporary" )
				P_no_tmp=1;;
			"-z" | "--gzip" )
				P_z=1;;
			"-no-z" | "--no-gzip" )
				P_no_z=1;;
			"-1" | "--1page" )
				P_un=1;;
			"-2" | "--2pages" )
				P_deux=1;;
			"-4" | "--4pages" )
				P_quatre=1;;
			"-sep" | "--separator" )
				P_sep=1;;
			"-no-sep" | "--no-separator" )
				P_no_sep=1;;
			"-m" | "--messages" )
				P_m=1;;
			"-no-m" | "--no-messages" )
				P_no_m=1;;
			"-view" | "--viewer" )
				P_view=1;;
			"-no-view" | "--no-viewer" )
				P_no_view=1;;
			"-7" )
				P_sept=1;;
			"-8" )
				P_huit=1;;
			"-v-ps" | "--view-ps-with" )
				if [ ! $paramopt == "" ]
				then
					P_v_ps=$paramopt;
				else
					avertissement "fichier \"$HOME/.shalatex\" -- option \"$opt\" ignore, paramtre manquant !";
				fi ;;
			"-v-pdf" | "--view-pdf-with" )
				if [ ! $paramopt == "" ]
				then
					P_v_pdf=$paramopt;
				else
					avertissement "fichier \"$HOME/.shalatex\" -- option \"$opt\" ignore, paramtre manquant !";
				fi ;;
			"-v-dvi" | "--view-dvi-with" )
				if [ ! $paramopt == "" ]
				then
					P_v_dvi=$paramopt;
				else
					avertissement "fichier \"$HOME/.shalatex\" -- option \"$opt\" ignore, paramtre manquant !";
				fi ;;
			* )
				avertissement "fichier \"$HOME/.shlatex\" -- option \"$opt\" ignore ; cette option n'existe pas ou n'est pas supporte dans le fichier de prfrences";;
		esac
	done
	## vrification des options des prfrences
	# mode
	verifInit $P_pstopdf $P_dvips $P_dvipdf $P_pdflatex $P_dvi;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -dvipdf, -dvips, -pdflatex, -ps2pdf et -dvi sont mutuellement exclusives !";
	fi
	# index
	verifInit $P_idx $P_no_idx;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -idx et -no-idx sont mutuellement exclusives !";
	fi
	# bibliography
	verifInit $P_bib $P_no_bib;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -bib et -no-bib sont mutuellement exclusives !";
	fi
	# table of contents
	verifInit $P_toc $P_no_toc;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -toc et -no-toc sont mutuellement exclusives !";
	fi
	# temporary
	verifInit $P_tmp $P_no_tmp;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -tmp et -no-tmp sont mutuellement exclusives !";
	fi
	# gzip
	verifInit $P_z $P_no_z;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -z et -no-z sont mutuellement exclusives !";
	fi
	# 1, 2, 4
	verifInit $P_un $P_deux $P_quatre;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -1, -2 et -4 sont mutuellement exclusives !";
	fi
	# separator
	verifInit $P_sep $P_no_sep;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -sep et -no-sep sont mutuellement exclusives !";
	fi
	# messages
	verifInit $P_m $P_no_m;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -m et -no-m sont mutuellement exclusives !";
	fi
	# view
	verifInit $P_view $P_no_view;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -view et -no-view sont mutuellement exclusives !";
	fi
	# 7, 8
	verifInit $P_sept $P_huit;
	if [ $? -gt 1 ]
	then
		avertissement "fichier \"$HOME/.shlatex\" -- les options -7 et -8 sont mutuellement exclusives !";
	fi
}

## si il n'y a pas de fichier de prfrences, on le cre avec des valeurs par dfaut
if [ ! -f ~/.shlatex ]
then
	echo -ne "-dvips\n-view\n-no-idx\n-no-bib\n-toc\n-no-tmp\n-no-z\n-1\n-no-sep\n-no-m\n-8\n-v-ps gv\n-v-pdf gv\n-v-dvi xdvi\n" > ~/.shlatex
fi

## chargement des prfrences
preferences;

## vrification du nombre d'arguments et rcupration des options
if [ $# -lt 2 ]
then
	if [ $# -eq 1 ]
	then
		if [ $1 == "-?" -o $1 == "-h" -o $1 == "--help" ]
		then
			aideComplete;
			exit 0;
		elif [ $1 == "-v" -o $1 == "--version" ]
		then
			version
			exit 0;
		fi
	else
		erreur "nombre d'arguments incorrect !" -?;
		exit 1;
	fi
else
	noshift=0;
	while [ $# -gt 1 ]
	do
		case $1 in
			"-dvipdf" )
				L_dvipdf=1;;
			"-pdflatex" )
				L_pdflatex=1;;
			"-ps2pdf" )
				L_pstopdf=1;;
			"-dvips" )
				L_dvips=1;;
			"-dvi" )
				L_dvi=1;;
			"-idx" | "--index" )
				L_idx=1;
				if [ $# -gt 2 ]
				then
					shift;
					if [ ! ${1:0:1} == "-" ]
					then
						L_idx_file=$1;
					else
						noshift=1;
					fi
				fi ;;
			"-no-idx" | "--no-index" )
				L_no_idx=1;;
			"-bib" | "--bibliography" )
				L_bib=1;
				if [ $# -gt 2 ]
				then
					shift;
					if [ ! ${1:0:1} == "-" ]
					then
						if [ -f $1 ]
						then
							L_bib_file=`expr match "$1" '\(.*\)\.bib'`;
						else
							erreur "le fichier de bibliographie \"$1\" n'existe pas !" -?;
							exit 1;
						fi
					else
						noshift=1;
					fi
				fi ;;
			"-no-bib" | "--no-bibliography" )
				L_no_bib=1;;
			"-toc" | "--table-of-contents" )
				L_toc=1;;
			"-no-toc" | "--no-table-of-contents" )
				L_no_toc=1;;
			"-tmp" | "--temporary" )
				L_tmp=1;;
			"-no-tmp" | "--no-temporary" )
				L_no_tmp=1;;
			"-z" | "--gzip" )
				L_z=1;;
			"-no-z" | "--no-gzip" )
				L_no_z=1;;
			"-1" | "--1page" )
				L_un=1;;
			"-2" | "--2pages" )
				L_deux=1;;
			"-4" | "--4pages" )
				L_quatre=1;;
			"-sep" | "--separator" )
				L_sep=1;;
			"-no-sep" | "--no-separator" )
				L_no_sep=1;;
			"-m" | "--messages" )
				L_m=1;;
			"-no-m" | "--no-messages" )
				L_no_m=1;;
			"-view" | "--viewer" )
				L_view=1;;
			"-no-view" | "--no-viewer" )
				L_no_view=1;;
			"-7" )
				L_sept=1;;
			"-8" )
				L_huit=1;;
			"-v-ps" | "--view-ps-with" )
				if [ $# -gt 2 ]
				then
					shift;
					if [ ! ${1:0:1} == "-" ]
					then
						estExec $1;
						if [ $? -eq 1 ]
						then
							L_v_ps=$1;
						else
							erreur "le fichier \"$1\" n'est pas accessible ou n'est pas xcutable depuis la ligne de commande !";
							exit 1;
						fi
					else
						noshift=1;
					fi
				else
					erreur "l'argument $1 ncessite un paramtre !" -?;
					exit 1;
				fi ;;
			"-v-pdf" | "--view-pdf-with" )
				if [ $# -gt 2 ]
				then
					shift;
					if [ ! ${1:0:1} == "-" ]
					then
						estExec $1;
						if [ $? -eq 1 ]
						then
							L_v_pdf=$1;
						else
							erreur "le fichier \"$1\" n'est pas accessible ou n'est pas xcutable depuis la ligne de commande !";
							exit 1;
						fi
					else
						noshift=1;
					fi
				else
					erreur "l'argument $1 ncessite un paramtre !" -?;
					exit 1;
				fi ;;
			"-v-dvi" | "--view-dvi-with" )
				if [ $# -gt 2 ]
				then
					shift;
					if [ ! ${1:0:1} == "-" ]
					then
						estExec $1;
						if [ $? -eq 1 ]
						then
							L_v_dvi=$1;
						else
							erreur "le fichier \"$1\" n'est pas accessible ou n'est pas xcutable depuis la ligne de commande !";
							exit 1;
						fi
					else
						noshift=1;
					fi
				else
					erreur "l'argument $1 ncessite un paramtre !" -?;
					exit 1;
				fi ;;
			"-?" | "-h" | "--help" )
				aideRapide;
				exit 0;;
			"-v" | "--version" )
				version;;
			* )
				erreur "l'argument \"$1\" est incorrect !" -?;
				exit 1;;
		esac
		if [ $noshift -eq 0 ]
		then
			shift;
		else
			noshift=0;
		fi
	done
fi

# vrification de l'existence d'un nom pour le fichier source LaTeX
if [ $# -ne 1 ]
then
	erreur "fichier source LaTeX manquant !" -?;
	exit 1;
fi

# vrification de l'existence du fichier source LaTeX
if [ ! -f $1 ]
then
	erreur "impossible de trouver le fichier \"$1\" !" -?;
	exit 1;
fi

# nom du fichier source
fich=$1;

# nom du fichier source sans son extension ".tex"
f=`expr match "$fich" '\(.*\)\.[a-zA-Z]*'`;

## vrification des options de la ligne de commande
# mode
verifInit $L_pstopdf $L_dvips $L_dvipdf $L_pdflatex $L_dvi;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -dvipdf, -dvips, -pdflatex, -ps2pdf et -dvi sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_dvipdf -eq 1 ]
	then
		mode="dvipdf";
	elif [ $L_dvips -eq 1 ]
	then
		mode="dvips";
	elif [ $L_pdflatex -eq 1 ]
	then
		mode="pdflatex";
	elif [ $L_pstopdf -eq 1 ]
	then
		mode="ps2pdf";
	elif [ $L_dvi -eq 1 ]
	then
		mode="dvi";
	fi
else
	# prfrences
	if [ $P_dvipdf -eq 1 ]
	then
		mode="dvipdf";
	elif [ $P_dvips -eq 1 ]
	then
		mode="dvips";
	elif [ $P_pdflatex -eq 1 ]
	then
		mode="pdflatex";
	elif [ $P_pstopdf -eq 1 ]
	then
		mode="ps2pdf";
	elif [ $P_dvi -eq 1 ]
	then
		mode="dvi";
	fi
fi
# index
verifInit $L_idx $L_no_idx;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -idx et -no-idx sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_idx -eq 1 ]
	then
		idx=1;
	else
		idx=0;
	fi
else
	# prfrences
	if [ $P_idx -eq 1 ]
	then
		idx=1;
	else
		idx=0;
	fi
fi
if [ ! $L_idx_file == "-" ]
then
	idx_file=$L_idx_file;
elif [ ! $P_idx_file == "-" ]
then
	idx_file=$P_idx_file;
fi
# bibliography
verifInit $L_bib $L_no_bib;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -bib et -no-bib sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_bib -eq 1 ]
	then
		bib=1;
	else
		bib=0;
	fi
else
	# prfrences
	if [ $P_bib -eq 1 ]
	then
		bib=1;
	else
		bib=0;
	fi
fi
if [ ! $L_bib_file == "-" ]
then
	bib_file=$L_bib_file;
elif [ ! $P_bib_file == "-" ]
then
	bib_file=$P_bib_file;
fi
# table of contents
verifInit $L_toc $L_no_toc;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -toc et -no-toc sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_toc -eq 1 ]
	then
		toc=1;
	else
		toc=0;
	fi
else
	# prfrences
	if [ $P_toc -eq 1 ]
	then
		toc=1;
	else
		toc=0;
	fi
fi
# temporary
verifInit $L_tmp $L_no_tmp;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -tmp et -no-tmp sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_tmp -eq 1 ]
	then
		tmp=1;
	else
		tmp=0;
	fi
else
	# prfrences
	if [ $P_tmp -eq 1 ]
	then
		tmp=1;
	else
		tmp=0;
	fi
fi
# gzip
verifInit $L_z $L_no_z;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -z et -no-z sont mutuellement exclusives !";
	exit 1;
elif [ $mode == "dvips" -o $mode == "ps2pdf" ]
then
	if [ $iopt -eq 1 ]
	then
		# ligne de commande
		if [ $L_z -eq 1 ]
		then
			z=1;
		else
			z=0;
		fi
	else
		# prfrences
		if [ $P_z -eq 1 ]
		then
			z=1;
		else
			z=0;
		fi
	fi
elif [ $iopt -eq 1 ]
then
	avertissement "option -z ignore -- l'option -z ne concerne que les fichiers PostScript !";
fi
# 1, 2, 4
verifInit $L_un $L_deux $L_quatre;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -1, -2 et -4 sont mutuellement exclusives !";
	exit 1;
elif [ $mode == "dvips" -o $mode == "ps2pdf" ]
then
	if [ $iopt -eq 1 ]
	then
		# ligne de commande
		if [ $L_un -eq 1 ]
		then
			ppf=1;
		elif [ $L_deux -eq 1 ]
		then
			ppf=2;
		else
			ppf=4;
		fi
	else
		# prfrences
		if [ $P_un -eq 1 ]
		then
			ppf=1;
		elif [ $P_deux -eq 1 ]
		then
			ppf=2;
		else
			ppf=4;
		fi
	fi
elif [ $iopt -eq 1 ]
then
	if [ $L_un -eq 1 ]
	then
		avertissement "option -1 ignore -- les options -1, -2 et -4 n'agissent que sur les fichiers PostScript !";
	elif [ $L_deux -eq 1 ]
	then
		avertissement "option -2 ignore -- les options -1, -2 et -4 n'agissent que sur les fichiers PostScript !";
	else
		avertissement "option -4 ignore -- les options -1, -2 et -4 n'agissent que sur les fichiers PostScript !";
	fi
fi
# separator
verifInit $L_sep $L_no_sep;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -sep et -no-sep sont mutuellement exclusives !";
	exit 1;
elif [ $ppf -gt 1 ]
then
	if [ $iopt -eq 1 ]
	then
		# ligne de commande
		if [ $L_sep -eq 1 ]
		then
			sep=1;
		else
			sep=0;
		fi
	else
		# prfrences
		if [ $P_sep -eq 1 ]
		then
			sep=1;
		else
			sep=0;
		fi
	fi
elif [ $iopt -eq 1 ]
then
	avertissement "option -sep ignore -- l'option -sep ne s'utilise qu'avec les options -2 et -4 !";
fi
# messages
verifInit $L_m $L_no_m;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -m et -no-m sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_m -eq 1 ]
	then
		m=1;
	else
		m=0;
	fi
else
	# prfrences
	if [ $P_m -eq 1 ]
	then
		m=1;
	else
		m=0;
	fi
fi
# view
verifInit $L_view $L_no_view;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -view et -no-view sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_view -eq 1 ]
	then
		view=1;
	else
		view=0;
	fi
else
	# prfrences
	if [ $P_view -eq 1 ]
	then
		view=1;
	else
		view=0;
	fi
fi
# 7, 8
verifInit $L_sept $L_huit;
iopt=$?;
if [ $iopt -gt 1 ]
then
	erreur "les options -7 et -8 sont mutuellement exclusives !";
	exit 1;
elif [ $iopt -eq 1 ]
then
	# ligne de commande
	if [ $L_sept -eq 1 ]
	then
		ascii=7;
	else
		ascii=8;
	fi
else
	# prfrences
	if [ $P_sept -eq 1 ]
	then
		ascii=7;
	else
		ascii=8;
	fi
fi
# v_dvi
if [ ! $L_v_dvi == "-" ]
then
	# lige de commande
	v_dvi=$L_v_dvi;
elif [ ! $P_v_dvi == "-" ]
then
	# prfrences
	v_dvi=$P_v_dvi;
fi
# v_ps
if [ ! $L_v_ps == "-" ]
then
	# lige de commande
	v_ps=$L_v_ps;
elif [ ! $P_v_ps == "-" ]
then
	# prfrences
	v_ps=$P_v_ps;
fi
# v_pdf
if [ ! $L_v_pdf == "-" ]
then
	# lige de commande
	v_pdf=$L_v_pdf;
elif [ ! $P_v_pdf == "-" ]
then
	# prfrences
	v_pdf=$P_v_pdf;
fi


## test de l'existance du fichier de bibliographie
if [ $bib -eq 1 -a $bib_file == "-" ]
then
	if [ ! -f "$f".bib ]
	then
		erreur "vous avez utilis l'option -bib et le fichier \"$f.bib\" n'existe pas !" -?;
		exit 1;
	fi
fi


## affichage d'un petit message de version
echo -ne "\n$nomshell version $version - Script de compilation LaTeX pour Linux.\nCopyright (C) 2003 Mael Hillreau\n\n";


## cration d'un rpertoire de travail
if [ ! -d "$f".ShLaTeX ]
then
	mkdir "$f".ShLaTeX
fi


## recherche (non rcursive) des fichiers externes
fichiersExternes $fich


## copie du fichier latex source principal
cp "$f".tex "$f".ShLaTeX

## copie des fichiers latex source externes
fExtTmp="";
for fe in $fExt
do
	if [ -f "$fe".tex ]
	then
		cp "$fe".tex "$f".ShLaTeX
		# limination du chemin relatif dans le fichier source
		sansChemin=`expr match "/$fe" '.*/\(.*\)'`;
		rplcExtFich "$fe.tex" "$sansChemin.tex" "$f".ShLaTeX/"$f".tex
		fExtTmp="$sansChemin $fExtTmp";
	else
		avertissement "le fichier externe \"$fe.tex\" rfrenc dans \"$fich\" est introuvable !";
	fi
done
fExt=$fExtTmp;

## copie du fichier de bibliographie
if [ $bib -eq 1 ]
then
	if [ $bib_file == "-" ]
	then
		bib_file=$f;
	fi
	cp "$bib_file".bib "$f".ShLaTeX
fi

## copie du fichier de style d'index
if [ ! $idx_file == "-" ]
then
	if [ -f $idx_file ]
	then
		cp $idx_file "$f".ShLaTeX
	fi
fi

## on passe dans le rpertoire de travail
cd "$f".ShLaTeX

## accentuation
if [ $ascii -eq 8 ]
then
	## accentuation du fichier latex source
	echo "> Accentuation en cours...";
	echo -ne "<$fich>"
	tex8to7 $fich > /dev/null 2>&1

	## crasement du fichier latex source
	mv -f "$fich"7 $fich

	## accentuation et crasement des fichier latex source externes
	for fe in $fExt
	do
		if [ -f "$fe".tex ]
		then
			echo -ne "<$fe.tex>"
			tex8to7 "$fe".tex > /dev/null 2>&1
			mv -f "$fe".tex7 "$fe".tex
		fi
	done
	echo ""
fi

## compilation du fichier latex source accuentu
echo "> Lancement de la compilation latex...";
reslatex=0;
echo "> Compilation (ShLaTeX)" >latex.log
if [ ! $mode == "pdflatex" ]
then
	if [ $m -eq 1 ]
	then
		latex $fich
	else
		latex $fich >>latex.log 2>&1
	fi
	reslatex=$?;
else
	if [ $m -eq 1 ]
	then
		pdflatex $fich
	else
		pdflatex $fich >>latex.log 2>&1
	fi
	reslatex=$?;
fi
if [ $reslatex -ne 0 ]
then
	errcompil=1;
else
	echo "premire compilation effectue avec succs.";
fi

## cration de la biliographie et deuxime compilation
if [ $bib -eq 1 -a $errcompil -ne 1 ]
then
	echo "> Cration de la bibliographie...";
	bib_file=`expr match "/$bib_file" '.*/\(.*\)'`;
	if [ $ascii -eq 8 ]
	then
		echo "> Accentuation du fichier \""$bib_file".bib\"...";
		tex8to7 "$bib_file".bib > /dev/null 2>&1
		echo "<$bib_file.bib>"
		mv -f "$bib_file".bib7 "$bib_file".bib
	fi
	bibtex "$f" > bibtex.log 2>&1
	if [ $? -eq 0 ]
	then
		if [ ! $mode == "pdflatex" ]
		then
			echo "> Compilation (ShLaTeX)" >>latex.log
			latex $fich >>latex.log 2>&1
			reslatex=$?;
		else
			echo "> Compilation (ShLaTeX)" >>latex.log
			pdflatex $fich >>latex.log 2>&1
			reslatex=$?;
		fi
		if [ $reslatex -ne 0 ]
		then
			errcompil=1;
		else
			echo "deuxime compilation effectue avec succs.";
		fi
	else
		echo -ne "\n";
		cat bibtex.log
		erreur "problme lors de la cration de la bibliographie !";
		errbib=1;
	fi
fi

## cration d'un index
if [ $idx -eq 1 -a $errcompil -ne 1 -a $errbib -ne 1 ]
then
	echo "> Cration de l'index...";
	if [ $idx_file == "-" ]
	then
		makeindex "$f".idx > makeindex.log 2>&1
	else
		makeindex -s $idx_file "$f".idx > makeindex.log 2>&1
	fi
	if [ $? -ne 0 ]
	then
		echo -ne "\n";
		cat makeindex.log
		cat "$f".ilg 2>/dev/null
		erreur "problme lors de la cration de l'index !";
		errindex=1;
	else
		errindex=0;
		echo "index cr avec succs.";
	fi
fi

## deuxime ou troisime compilation pour l'index et la table des matires
if [ $toc -eq 1 -a $errbib -ne 1 -a $errindex -ne 1 -a $errcompil -ne 1 ]
then
	if [ ! $mode == "pdflatex" ]
	then
		echo "> Compilation (ShLaTeX)" >>latex.log
		latex $fich >>latex.log 2>&1
		reslatex=$?;
	else
		echo "> Compilation (ShLaTeX)" >>latex.log
		pdflatex $fich >>latex.log 2>&1
		reslatex=$?;
	fi
	if [ $reslatex -ne 0 ]
	then
		errcompil=1;
	else
		if [ $bib -eq 1 ]
		then
			echo "troisime compilation effectue avec succs.";
		else
			echo "deuxime compilation effectue avec succs.";
		fi
	fi
fi

## dplacement du fichier dvi ou pdf
if [ $mode == "pdflatex" ]
then
	mv "$f".pdf ..
else
	mv "$f".dvi ..
fi

## on sort du rpertoire de travail
cd ..

## conversion du fichier dvi
errconvert=0;
if [ $errbib -ne 1 -a $errindex -ne 1 -a $errcompil -ne 1 -a ! $mode == "pdflatex" -a ! $mode == "dvi" ]
then
	echo "> Conversion en cours...";
	if [ $mode == "dvipdf" ]
	then
		dvipdf "$f".dvi "$f".pdf > ./"$f".ShLaTeX/dvipdf.log 2>&1
		if [ $? -ne 0 ]
		then
			echo -ne "\n";
			cat ./"$f".ShLaTeX/dvipdf.log
			erreur "problme de conversion PDF !";
			errconvert=1;
		fi
	elif [ $mode == "dvips" -o $mode == "ps2pdf" ]
	then
		dvips -Ppdf "$f".dvi -o "$f".ps > ./"$f".ShLaTeX/dvips.log 2>&1
		if [ $? -ne 0 ]
		then
			echo -ne "\n";
			cat ./"$f".ShLaTeX/dvips.log
			erreur "problme de conversion PostScript !";
			errconvert=1;
		fi
		if [ $errconvert -ne 1 ]
		then
			optpstops="";
			if [ $sep -eq 1 ]
			then
				optpstops="-d";
			fi
			if [ $ppf -eq 2 ]
			then
				pstops $optpstops "2:0L@.7(21cm,0cm)+1L@.7(21cm,14.85cm)" "$f".ps "$f".2ppf.ps >/dev/null 2>&1
				mv "$f".2ppf.ps "$f".ps
			elif [ $ppf -eq 4 ]
			then
				pstops $optpstops "4:0@.5(0cm,14.85cm)+1@.5(10.5cm,14.85cm)+2@.5(0cm,0cm)+3@.5(10.5cm,0cm)" "$f".ps "$f".4ppf.ps >/dev/null 2>&1
				mv "$f".4ppf.ps "$f".ps
			fi
			if [ $mode == "ps2pdf" ]
			then
				ps2pdf "$f".ps "$f".pdf > ./"$f".ShLaTeX/ps2pdf.log 2>&1
				if [ $? -ne 0 ]
				then
					echo -ne "\n";
					cat ./"$f".ShLaTeX/ps2pdf.log
					erreur "problme de conversion PDF !";
					errconvert=1;
				fi
			fi
			if [ $z -eq 1 ]
			then
				rm -f "$f".ps.gz
				gzip "$f".ps > /dev/null 2>&1
			fi
		fi
	fi
	rm -f "$f".dvi
fi

## visualisation du fichier dvi, ps ou pdf
if [ $errconvert -ne 1 -a $errbib -ne 1 -a $errindex -ne 1 -a $errcompil -ne 1 -a $view -eq 1 ]
then
	echo "> Lancement de la visualisation du rsultat.";
	case $mode in
		"dvi" )
			$v_dvi "$f".dvi >/dev/null 2>&1 & ;;
		"dvips" )
			if [ $z -eq 1 ]
			then
				$v_ps "$f".ps.gz >/dev/null 2>&1 &
			else
				$v_ps "$f".ps >/dev/null 2>&1 &
			fi ;;
		"ps2pdf" | "dvipdf" | "pdflatex" )
			$v_pdf "$f".pdf >/dev/null 2>&1 & ;;
	esac
fi

## affichage des messages d'erreur de compilation
if [ $errcompil -eq 1 ]
then
	if [ $m -eq 0 ]
	then
		echo -ne "\n";
		cat ./"$f".ShLaTeX/latex.log
	fi
	erreur "problme de compilation !";
fi

## suppression des temporaires et sortie
suppressionTemp;
fin;
