compilcompil a pour but d'aider à la compilation de fichiers latex. Il lance autant de fois qu'il le faut le compilateur latex, mais aussi bibtex si besoin et produit un fichier PDF au final. Le nettoyage des fichiers temporaires est optionnel.
compil est distribué sous licence libre CeCILL.
Une fois le fichier téléchargé, vous devez
sudo mv compil /usr/local/bin/
sudo chmod +x /usr/local/bin/compil
Ce logiciel nécessite l'utilisation des utilitaires latex, bibtex, dvips et ps2pdf, installables sous Ubuntu ou Debian par
sudo aptitude install texlive-latex-base texlive-latex-bin ghostscript
La visualisation finale du fichier PDF produit est optionnelle et réalisée à l'aide du logiciel evince. Son installation n'est pas obligatoire pour la compilation, mais l'est pour la visualisation. Elle peut se faire sous Ubuntu ou Debian par
sudo aptitude install evince
$ compil -h
Usage : compil [-vilq] fichier [fichier ...]
compil -h
Compilation Latex améliorée des fichiers donnés en argument.
Exécute une fois latex, une fois bibtex si besoin (après détection des fichiers
bibtex utilisés), deux fois latex, puis dvips et ps2pdf.
Par défaut, un nettoyage des fichiers de compilation est effectué. Le fichier de
log est alors conservé pendant 10 secondes.
Les extensions .tex des fichiers peuvent être omises.
Options :
-h : afficher cette aide
-v : visualiser le fichier pdf produit (utilise evince)
-i : utiliser le mode intéractif de Latex
-l : ne pas nettoyer les fichiers de compilation
-q : se placer en mode silencieux. Sans cette option, une confirmation est
demandée lorsque plusieurs fichiers sont donnés en argument et chaque
action est affichée dans la console.
#!/bin/bash
# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt".
#
# Ce logiciel est régi par la licence CeCILL soumise au droit français et
# respectant les principes de diffusion des logiciels libres. Vous pouvez
# utiliser, modifier et/ou redistribuer ce programme sous les conditions
# de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
# à l'adresse "http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt".
#
# Copyright Cyril Ravat, <ravat@free.fr> (2007-2011)
# Website : http://www.cyril-ravat.fr/scripts/compil.php
# Help : compil -h
# Options par défaut
VISUALISE=
NONSTOP=1
CLEAN=1
VERBOSE=1
# Options du script
while getopts ":hvilq" option
do
case $option in
"h")
echo -e "Usage : $(basename "$0") [-vilq] \033[1mfichier\033[0m [\033[1mfichier\033[0m ...]"
echo -e " $(basename "$0") -h"
echo
echo -e "Compilation Latex améliorée des \033[1mfichier\033[0ms donnés en argument."
echo
echo -e "Exécute une fois \033[1mlatex\033[0m, une fois \033[1mbibtex\033[0m si besoin (après détection des fichiers"
echo -e "bibtex utilisés), deux fois \033[1mlatex\033[0m, puis \033[1mdvips\033[0m et \033[1mps2pdf\033[0m."
echo "Par défaut, un nettoyage des fichiers de compilation est effectué. Le fichier de"
echo "log est alors conservé pendant 10 secondes."
echo -e "Les extensions .tex des \033[1mfichier\033[0ms peuvent être omises."
echo
echo "Options :"
echo -e " \033[1m-h\033[0m : afficher cette aide"
echo -e " \033[1m-v\033[0m : visualiser le fichier pdf produit (utilise evince)"
echo -e " \033[1m-i\033[0m : utiliser le mode intéractif de Latex"
echo -e " \033[1m-l\033[0m : ne pas nettoyer les fichiers de compilation"
echo -e " \033[1m-q\033[0m : se placer en mode silencieux. Sans cette option, une confirmation est"
echo -e " demandée lorsque plusieurs \033[1mfichier\033[0ms sont donnés en argument et chaque"
echo " action est affichée dans la console."
echo
exit 0
;;
"v") VISUALISE=1 ;;
"i") NONSTOP= ;;
"l") CLEAN= ;;
"q") VERBOSE= ;;
"?") break ;;
esac
done
shift $((OPTIND-1))
# Vérification des utilitaires latex, bibtex, dvips, ps2pdf
if [ -z `which latex` ]; then
echo -e "L'utilitaire \033[1mlatex\033[0m n'existe pas."
echo -e "Il faut installer le paquet \033[1mtexlive-latex-base\033[0m."
exit 1
fi
if [ -z `which bibtex` ]; then
echo -e "L'utilitaire \033[1mbibtex\033[0m n'existe pas."
echo -e "Il faut installer le paquet \033[1mtexlive-base-bin\033[0m."
exit 1
fi
if [ -z `which dvips` ]; then
echo -e "L'utilitaire \033[1mdvips\033[0m n'existe pas."
echo -e "Il faut installer le paquet \033[1mtexlive-base-bin\033[0m."
exit 1
fi
if [ -z `which ps2pdf` ]; then
echo -e "L'utilitaire \033[1mps2pdf\033[0m n'existe pas."
echo -e "Il faut installer le paquet \033[1mghostscript\033[0m."
exit 1
fi
NOMBRE="$#"
while [ -n "$1" ]; do
NOM="${1%.tex}"
FICHIER="$NOM.tex"
SORTIE="$NOM"
# Vérification de l'existence du fichier entré
if [ ! -f "$FICHIER" ]; then
[ $VERBOSE ] && echo -e "$FICHIER n'existe pas."
shift && continue
fi
# Demande d'exécution si plusieurs
if [ $NOMBRE -gt 1 ] && [ $VERBOSE ]; then
read -p "Compiler $(basename "$FICHIER") ? [O/n] " ok
if [ -n "$ok" ] && [ `expr "$ok" : '[nN]'` == 1 ]; then
echo "$FICHIER n'a pas été compilé."
shift && continue
fi
fi
# Regarder si besoin de bibtex
function biblio() {
[ `grep -c bibliography "$1.tex"` -gt 0 ] && bibtex "$1" && latex "$1.tex"
return 0
}
# Mode intéractif ou non
[ $NONSTOP ] && OPT="-interaction=nonstopmode"
# Compilation
ERREUR=
latex $OPT "$FICHIER" && \
biblio "$NOM" && \
latex $OPT "$FICHIER" && \
dvips -o "$SORTIE.ps" "$NOM.dvi" && \
ps2pdf -dPDFSETTINGS=/printer "$SORTIE.ps" || ERREUR=1
[ $ERREUR ] && [ $VERBOSE ] && echo "Erreur lors du traitement de $(basename "$FICHIER")"
# Nettoyage
if [ $CLEAN ]; then
rm -f "$SORTIE.ps" "$NOM.dvi" "$FICHIER~" "$NOM.aux" "$NOM.out" "$NOM.toc" "$NOM.bbl" "$NOM.blg" "$NOM.nlo"
# Attendre 10 secondes pour supprimer le fichier de log
sleep 10 && rm -f "$NOM.log" &
fi
# Visualisation
[ ! $ERREUR ] && [ $VISUALISE ] && [ -n `which evince` ] && evince "$SORTIE.pdf" &
shift
done