script shell pour compilation latex

script shell pour compilation latex - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 08-02-2008 à 13:59:00    

Bonjour à tous,
 
Je travaille sous linux, je cherche à écrire un script shell permettant d'effectuer les différentes instructions de latex en une ligne. J'ai fait un truc simple avec en paramètre le nom du fichier latex sans son extension :
 

Code :
  1. latex $1
  2. latex $1
  3. dvips -G0 -t landscape -o $1.ps $1
  4. ps2pdf14 $1.ps $1.pdf


 
Le problème avec ce code, c'est que lorsque j'ai une erreur de compilation du latex, il exécute tout de même la suite de programme, et ça prend du temps...
 
J'aimerai donc arriver à ignorer la suite si les étapes de compilation latex plantent.
Est-ce que quelqu'un sait comment faire (je ne suis pas un pro en script shell )!
 
Merci d'avance!

Reply

Marsh Posté le 08-02-2008 à 13:59:00   

Reply

Marsh Posté le 08-02-2008 à 14:14:43    

choinul a écrit :

Je travaille sous linux, je cherche à écrire un script shell permettant d'effectuer les différentes instructions de latex en une ligne.

Très bonne initiative. Je vois trop de collègues se prendre la tête à toujours taper les instructions à la main alors qu'un simple script peut automatiser tout ça.
 
Une autre méthode (plus puissante que le shell-script à mon avis) est le Makefile. Si tu as quelques notions de makefile, tu peux avantageusement passer à ce système je pense.
 
 

choinul a écrit :

Le problème avec ce code, c'est que lorsque j'ai une erreur de compilation du latex, il exécute tout de même la suite de programme, et ça prend du temps...
 
J'aimerai donc arriver à ignorer la suite si les étapes de compilation latex plantent.
Est-ce que quelqu'un sait comment faire (je ne suis pas un pro en script shell )!

Deux solutions :
1- tu mets un switch -e à l'exécution de ton shell, pour que le script s'arrête dès qu'une instruction plante.
2- tu écris un truc du genre :

latex $1 \
&& latex $1



---------------
TriScale innov
Reply

Marsh Posté le 08-02-2008 à 14:25:34    

Merci beaucoup franceso pour cette réponse rapide.
 
J'ai donc fait le code suivant qui fonctionne très bien :
 

Code :
  1. latex $1 \
  2. &&
  3. latex $1 \
  4. &&
  5. dvips -G0 -t landscape -o $1.ps $1 \
  6. &&
  7. ps2pdf14 $1.ps $1.pdf


 
En ce qui concerne le makefile, si tu as un exemple qui fonctionne bien, je suis preneur! (j'ai quelques notions mais ça me paraissait plus facile à mettre en place en shell)

Reply

Marsh Posté le 08-02-2008 à 14:36:14    

Quand tu plus de 2-3 commandes à enchainer il est quand même plus simple de sortir en cas d'erreur que d'enchainer les && :

latex $1 || exit
latex $1 || exit
dvips -G0 -t landscape -o $1.ps $1 || exit
ps2pdf14 $1.ps $1.pdf

Reply

Marsh Posté le 08-02-2008 à 14:47:15    

Pour mes gros projets, j'ai mis au point un système qui recompile juste le nombre de fois qu'il faut :
- Makefile : le makefile qui fait le boulot
- makedepend.pl : un script perl qui détermine les dépendances de ton latex (pour savoir si on doit recompiler ou non).
 
Chez moi, ça marche bien... mais je n'ai jamais testé ailleurs alors ça pourrait bien foirer. (et je ne prétends pas avoir fait un truc propre ; au départ c'est juste pour mon usage perso... donc soyez indulgents :sweat: )


---------------
TriScale innov
Reply

Marsh Posté le 08-02-2008 à 14:51:08    

matafan a écrit :

Quand tu plus de 2-3 commandes à enchainer il est quand même plus simple de sortir en cas d'erreur que d'enchainer les && :

latex $1 || exit
latex $1 || exit
dvips -G0 -t landscape -o $1.ps $1 || exit
ps2pdf14 $1.ps $1.pdf



 
Oui, c'est vrai, c'est plus propre! Merci. :)  

Reply

Marsh Posté le 08-02-2008 à 14:54:38    

franceso a écrit :

Pour mes gros projets, j'ai mis au point un système qui recompile juste le nombre de fois qu'il faut :
- Makefile : le makefile qui fait le boulot
- makedepend.pl : un script perl qui détermine les dépendances de ton latex (pour savoir si on doit recompiler ou non).
 
Chez moi, ça marche bien... mais je n'ai jamais testé ailleurs alors ça pourrait bien foirer. (et je ne prétends pas avoir fait un truc propre ; au départ c'est juste pour mon usage perso... donc soyez indulgents :sweat: )


 
Merci pour ces exemples, il va falloir que je les regarde de plus près car il faut que je lance ma compilation en paysage pour ma présentation beamer.
En tout cas, c'est plus compliqué que le simple script shell. Mais c'est vrai que sur des gros projets, ça peut faire gagner du temps. :sol:

Reply

Marsh Posté le 08-02-2008 à 15:01:28    

choinul a écrit :


 
Merci pour ces exemples, il va falloir que je les regarde de plus près car il faut que je lance ma compilation en paysage pour ma présentation beamer.
En tout cas, c'est plus compliqué que le simple script shell. Mais c'est vrai que sur des gros projets, ça peut faire gagner du temps. :sol:

Normalement, tu n'as pas trop besoin de regarder ce qu'il y a à l'intérieur du Makefile : le fait que ce soit du beamer ou autre ne change rien à la compilation...
 


---------------
TriScale innov
Reply

Marsh Posté le 08-02-2008 à 15:03:53    

Pour les doc pas trop long j'utilise un Makefile très con, qui fait 3 fois pdflatex
 

FILE=file.pdf
 
CC := pdflatex
 
.PHONY: all
all: $(FILE)
 
%.pdf: %.tex
 $(CC) --shell-escape $<
 $(CC) --shell-escape $<
 $(CC) --shell-escape $<
 
clean:
 rm -f *.mtc* *.log *.aux *.lof *.toc *.ptc* *.bmt *.bbl *.out *.blg *.ptc1 *.backup *.glo *.gls *.ilg *.lot


 
J'en ai un plus intelligent en stock, à l'occasion je regarderai  :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 08-02-2008 à 15:12:12    

En fait, je ne peux pas utiliser pdflatex car j'utilise des figures .eps et ça plante  en général... ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed