#!/bin/bash
###############################################################################
#                                                                             #
#                                  ShLaTeX                                    #
#                                                                             #
###############################################################################
#                                                                             #
# Auteur:           Mael Hill�reau                                            #
# M�l :             [email protected]                                    #
# Web :             http://mael.hillereau.free.fr                             #
# Cr�ation :        06/03/2003                                                #
# Derni�re 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 Hill�reau                                          #
#                                                                             #
# 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;
}

## d�claration des variables globales

# nom du fichier
f="-";

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

# options pr�f�rencielles
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'�x�cution
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 compl�te.\n";
       echo -ne "\n";
}

## affiche une aide compl�te
function aideComplete() {
echo ".TH \\fBShLaTeX\\fP 1 \"Ao�t 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 n�cessaires �
la compilation compl�te d'un document LaTeX. Notamment, les appels multiples �
la commande \\fBlatex\\fP indispensables pour cr�er une table des mati�res, une
bibliographie ou un index sont effectu�s automatiquement. Sont �galement g�r�s
les appels aux programmes \\fBbibtex\\fP et \\fBmakeindex\\fP ainsi que la
visualisation du fichier r�sultat (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 r�f�rence � des fichiers externes et
cela de fa�on transparente en ne compilant que le fichier source principal.
PP
 Une fois la compilation effectu�e les fichiers temporaires sont effac�s (option
\\fB-no-tmp\\fP) ou conserv�s (option \\fB-tmp\\fP). Les fichiers DVI g�n�r�s par
LaTeX peuvent alors �tre directement convertis au format PostScript ou PDF.
PP
 Ce script prend aussi en charge l'accentuation des caract�res fran�ais par
l'interm�diaire d'un programme C externe (nomm� \\fBtex8to7\\fP) et fourni avec le
script (la gestion des accents est donc transparente). Il g�re aussi le \"c\"
c�dille ainsi que le remplacement des guillemets par les commandes \\fB\\\\og\\fP et
\\fB\\\\fg\\fP (cela suppose que les guillemets soient appari�s). Les guillemets
peuvent �tre impriqu�s en utilisant des accolades pour distinguer les diff�rentes
paires de guillemets. Par exemple, le texte :
PP
   Les guillemets \"peuvent �tre {\"imbriqu�s\"} � l'aide d'accolades\".
PP
 est un exemple correct.
PP
 Les options par d�faut (pr�f�rences) sont stock�es dans le r�pertoire
personnel de l'utilisateur dans le fichier \\fB~/.shlatex\\fP. Voir la section
FICHIERS pour conna�tre la syntaxe de ce fichier.
SH OPTIONS
IP \"\\fB\\-dvipdf\\fP\"
S�lectionne un format PDF au lieu du format DVI pour le fichier r�sultat. Le
programme \\fBdvipdf\\fP est alors utilis� pour la conversion.
IP \"\\fB\\-pdflatex\\fP\"
S�lectionne un format PDF au lieu du format DVI pour le fichier r�sultat. Le
programme \\fBpdflatex\\fP est  alors directement utilis� pour cr�er le fichier
r�sultat.
IP \"\\fB-dvips\\fP\"
S�lectionne un format PostScript au lieu du format DVI pour le fichier r�sultat.
Le programme \\fBdvips\\fP est alors utilis� pour la conversion.
IP \"\\fB-ps2pdf\\fP\"
S�lectionne un format PDF au lieu du format PostScript pour le fichier r�sultat.
Utilise l'option \\fB-dvips\\fP. Les programmes \\fBdvips\\fP et \\fBps2pdf\\fP sont
successivement utilis�s pour la conversion et le fichier PostScript est conserv�
apr�s la conversion.
IP \"\\fB-dvi\\fP\"
S�lectionne un format DVI pour le fichier r�sultat.
IP \"\\fB-idx\\fP \\fI[style.ist]\\fP ou \\fB--index\\fP \\fI[style.ist]\\fP\"
Active la cr�ation 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\"
D�sactive la cr�ation de l'index.
IP \"\\fB-bib\\fP \\fI[fichier.bib]\\fP ou \\fB--bibliography\\fP \\fI[fichier.bib]\\fP\"
Active la cr�ation 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 m�me nom que \\fIfichierSource\\fP.tex.
IP \"\\fB-no-bib\\fP ou \\fB--no-bibliography\\fP\"
D�sactive la cr�ation de la bibliographie.
IP \"\\fB-toc\\fP ou \\fB--table-of-contents\\fP\"
Active la compilation suppl�mentaire pour la construction d'une table des
mati�res, une table des figures, une liste des tableaux et toutes les r�f�rences
LaTeX (commande \\fB\\label{...}\\fP).
IP \"\\fB-no-toc\\fP ou \\fB--no-table-of-contents\\fP\"
D�sactive la compilation suppl�mentaire pour la construction d'une table des
mati�res, une table des figures, une liste des tableaux et toutes les r�f�rences
LaTeX (commande \\fB\\label{...}\\fP).
IP \"\\fB-tmp\\fP ou \\fB--temporary\\fP\"
Conserve apr�s l'ec�cution du script les fichiers temporaires cr��s par LaTeX.
Ces fichiers sont ainsi stock�s dans un r�pertoire nomm�
\\fIfichierSource.ShLaTeX\\fP.
IP \"\\fB-no-tmp\\fP ou \\fB--no-temporary\\fP\"
Supprime apr�s l'ec�cution du script les fichiers temporaires cr��s 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\"
D�sactive la compression des fichiers PostScript avec le programme \\fBgzip\\fP.
IP \"\\fB-1\\fP ou \\fB--1page\\fP\"
G�n�re des fichiers PostScript ayant 1 page a4 par feuille a4.
IP \"\\fB-2\\fP ou \\fB--2pages\\fP\"
G�n�re des fichiers PostScript ayant 2 pages a5 par feuille a4.
IP \"\\fB-4\\fP ou \\fB--4pages\\fP\"
G�n�re 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 s�paratrice entre
les diff�rentes pages d'une m�me 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 d�sactiver le trac� de la
ligne s�paratrice entre les diff�rentes pages d'une m�me feuille.
IP \"\\fB-m\\fP ou \\fB--messages\\fP\"
Affiche syst�matiquement 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 utilis�e, 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\"
D�sactive la visualisation finale.
IP \"\\fB-7\\fP ou \\fB--7bits\\fP\"
D�sactive 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 d�faut,
les programme utilis�s 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 utilis�e, en cas d'erreur de compilation par
LaTeX, le script ne r�pond plus. On peut l'arr�ter 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 affich�es juste apr�s.
Cette imperfection est due au choix de ne pas afficher les messages du programme
\\fBlatex\\fP par d�faut. Cependant, le probl�me n'existe que si le mode
d'interaction autorise LaTeX � s'arr�ter sur les erreurs (ce qui n'est pas le
cas, par exemple si la commande \\fB\\\\nonstopmode\\fP est utilis�e).
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 pr�f�rences de l'utilisateur. Il peut
�tre modifi� afin d'utiliser des valeurs par d�faut personnalis�es pour les
options du script, mais la syntaxe du fichier doit �tre respect�e :
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 pr�f�rences. Pour les options qui admettent des
param�tres, comme dans le shell, ils seront plac�s apr�s leur option respective
mais devront en �tre s�par�s par un seul caract�re d'espacement ('\\ '). L'ordre
des options n'importe pas.
PP
 Dans le cas o� des incoh�rences appara�traient lors de l'ex�cution du script,
des avertissements seront affich�s.
PP
 Si lors de la premi�re ex�cution 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 \"PROBL�MES CONNUS\"
SS \"BoundingBox\"
PP
 Lorsque l'on ins�re une image avec la commande \\fB\\\\includegraphics\\fP, il
faut sp�cifier 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 plac�es sur des lignes ind�pendantes
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 m�l � 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 G�n�rale 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 Hill�reau
PP
\\fIcontact\\fP : [email protected]
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 Hill�reau\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 nomm�s $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
}

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

## v�rifie 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 pr�f�rences � 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\" ignor�e, param�tre manquant !";
                               fi ;;
                       "-v-pdf" | "--view-pdf-with" )
                               if [ ! $paramopt == "" ]
                               then
                                       P_v_pdf=$paramopt;
                               else
                                       avertissement "fichier \"$HOME/.shalatex\" -- option \"$opt\" ignor�e, param�tre manquant !";
                               fi ;;
                       "-v-dvi" | "--view-dvi-with" )
                               if [ ! $paramopt == "" ]
                               then
                                       P_v_dvi=$paramopt;
                               else
                                       avertissement "fichier \"$HOME/.shalatex\" -- option \"$opt\" ignor�e, param�tre manquant !";
                               fi ;;
                       * )
                               avertissement "fichier \"$HOME/.shlatex\" -- option \"$opt\" ignor�e ; cette option n'existe pas ou n'est pas support�e dans le fichier de pr�f�rences";;
               esac
       done
       ## v�rification des options des pr�f�rences
       # 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 pr�f�rences, on le cr�e avec des valeurs par d�faut
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 pr�f�rences
preferences;

## v�rification du nombre d'arguments et r�cup�ration 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 �x�cutable depuis la ligne de commande !";
                                                       exit 1;
                                               fi
                                       else
                                               noshift=1;
                                       fi
                               else
                                       erreur "l'argument $1 n�cessite un param�tre !" -?;
                                       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 �x�cutable depuis la ligne de commande !";
                                                       exit 1;
                                               fi
                                       else
                                               noshift=1;
                                       fi
                               else
                                       erreur "l'argument $1 n�cessite un param�tre !" -?;
                                       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 �x�cutable depuis la ligne de commande !";
                                                       exit 1;
                                               fi
                                       else
                                               noshift=1;
                                       fi
                               else
                                       erreur "l'argument $1 n�cessite un param�tre !" -?;
                                       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

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

# v�rification 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]*'`;

## v�rification 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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
               # pr�f�rences
               if [ $P_z -eq 1 ]
               then
                       z=1;
               else
                       z=0;
               fi
       fi
elif [ $iopt -eq 1 ]
then
       avertissement "option -z ignor�e -- 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
               # pr�f�rences
               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 ignor�e -- les options -1, -2 et -4 n'agissent que sur les fichiers PostScript !";
       elif [ $L_deux -eq 1 ]
       then
               avertissement "option -2 ignor�e -- les options -1, -2 et -4 n'agissent que sur les fichiers PostScript !";
       else
               avertissement "option -4 ignor�e -- 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
               # pr�f�rences
               if [ $P_sep -eq 1 ]
               then
                       sep=1;
               else
                       sep=0;
               fi
       fi
elif [ $iopt -eq 1 ]
then
       avertissement "option -sep ignor�e -- 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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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
       # pr�f�rences
       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 Hill�reau\n\n";


## cr�ation d'un r�pertoire de travail
if [ ! -d "$f".ShLaTeX ]
then
       mkdir "$f".ShLaTeX
fi


## recherche (non r�cursive) 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\" r�f�renc� 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 r�pertoire 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 "premi�re compilation effectu�e avec succ�s.";
fi

## cr�ation de la biliographie et deuxi�me compilation
if [ $bib -eq 1 -a $errcompil -ne 1 ]
then
       echo "> Cr�ation 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 "deuxi�me compilation effectu�e avec succ�s.";
               fi
       else
               echo -ne "\n";
               cat bibtex.log
               erreur "probl�me lors de la cr�ation de la bibliographie !";
               errbib=1;
       fi
fi

## cr�ation d'un index
if [ $idx -eq 1 -a $errcompil -ne 1 -a $errbib -ne 1 ]
then
       echo "> Cr�ation 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 "probl�me lors de la cr�ation de l'index !";
               errindex=1;
       else
               errindex=0;
               echo "index cr�� avec succ�s.";
       fi
fi

## deuxi�me ou troisi�me compilation pour l'index et la table des mati�res
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 "troisi�me compilation effectu�e avec succ�s.";
               else
                       echo "deuxi�me compilation effectu�e avec succ�s.";
               fi
       fi
fi

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

## on sort du r�pertoire 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 "probl�me 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 "probl�me 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:[email protected](21cm,0cm)[email protected](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:[email protected](0cm,14.85cm)[email protected](10.5cm,14.85cm)[email protected](0cm,0cm)[email protected](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 "probl�me 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 r�sultat.";
       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 "probl�me de compilation !";
fi

## suppression des temporaires et sortie
suppressionTemp;
fin;