compil
compil
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 [-vlqy] 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) -l : ne pas nettoyer les fichiers de compilation -q : ne pas afficher le résultat (« Fichier ... compilé ») -y : ne pas poser de question si plusieurs fichiers
#!/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= CLEAN=1 QUIET= YES= # Options du script while getopts ":hvlqy" option do case $option in "h") echo -e "Usage : $(basename "$0") [-vlqy] \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-l\033[0m : ne pas nettoyer les fichiers de compilation" echo -e " \033[1m-q\033[0m : ne pas afficher le résultat (« Fichier ... compilé »)" echo -e " \033[1m-y\033[0m : ne pas poser de question si plusieurs fichiers" echo exit 0 ;; "v") VISUALISE=1 ;; "l") CLEAN= ;; "q") QUIET=1 ;; "y") YES=1 ;; "?") 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}" # Vérification de l'existence du fichier entré if [ ! -f "$NOM.tex" ] ; then echo -e "$NOM.tex n'existe pas." shift && continue fi # Demande d'exécution si plusieurs if [ $NOMBRE -gt 1 ] && [ ! $YES ] ; then read -p "Compiler $(basename "$NOM.tex") ? [O/n] " ok if [ -n "$ok" ] && [ `expr "$ok" : '[nN]'` == 1 ]; then echo "$(basename "$NOM.tex") 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 } # Changement de répertoire PWD=`pwd` cd `dirname "$NOM"` NOM=`basename "$NOM"` # Compilation export TEXINPUTS=".:~/.tex:" OPT="-shell-escape -interaction=nonstopmode -halt-on-error" latex $OPT "$NOM.tex" | grep '^l\.' -B 3 -A 1 | tee /tmp/compil.log ERREUR=`cat /tmp/compil.log | wc -l` rm /tmp/compil.log [ $ERREUR -eq 0 ] && biblio "$NOM" && \ latex $OPT "$NOM.tex" 1> /dev/null && \ dvips -q -o "$NOM.ps" "$NOM.dvi" && \ ps2pdf -dPDFSETTINGS=/printer "$NOM.ps" # anciennement : ps2pdf -dUseCIEColor -dPDFSETTINGS=/printer "$NOM.ps" # Nettoyage if [ $CLEAN ]; then rm -f "$NOM.ps" "$NOM.dvi" "$NOM.tex~" "$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 et sortie si erreur if [ $ERREUR -eq 0 ]; then if [ $VISUALISE ]; then if [ -n "`which qpdfview`" ]; then qpdfview --unique "$NOM.pdf" & else evince "$NOM.pdf" & fi fi [ $QUIET ] || echo "Fichier \"$NOM.tex\" compilé" cd "$PWD" else echo "Erreur lors du traitement de $NOM.tex" cd "$PWD" exit 1 fi shift done