Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/09/2014, à 14:53

Elzen

[Résolu] Makefile et traitements similaires

Oy o/

'pas vraiment de la programmation (c'est pour du LaTeX), mais vu qu'il s'agit d'un Makefile, vous pourriez peut-être m'aiguiller.

J'ai un jeu de slides assez conséquent à faire, pour lesquels je crée les images en SVG : il me faut donc les convertir pour qu'elles puissent être incluses dans le document final. J'ai donc potentiellement un paquet de règles de compilation à inclure, du genre :

slides.pdf: slides.tex figures/fichier1.pdf figures/fichier2.pdf figures/fichier3.pdf
	xelatex slides.tex
	xelatex slides.tex

figures/fichier1.pdf: figures/fichier1.svg
	rsvg-convert -f pdf figures/fichier1.svg -o figures/fichier1.pdf

figures/fichier2.pdf: figures/fichier2.svg
	rsvg-convert -f pdf figures/fichier2.svg -o figures/fichier2.pdf

figures/fichier3.pdf: figures/fichier3.svg
	rsvg-convert -f pdf figures/fichier3.svg -o figures/fichier3.pdf

Le truc, c'est que comme le document va potentiellement être changé plusieurs fois, je n'ai aucun moyen de prévoir à l'avance toutes les images que j'aurai à inclure dedans, et que ça ne me plaît pas particulièrement de devoir retoucher le Makefile à chaque fois que j'ajouterai une nouvelle image. D'autant que le comportement à avoir est exactement le même pour chacun de ces fichiers.

Pour la liste des dépendances du fichier principal, apparemment, lui coller :

slides.pdf: slides.tex figures/*.pdf
	xelatex slides.tex
	xelatex slides.tex

semble fonctionner. Donc ça fait déjà ça qui ne bougera pas.

Par contre, j'aimerais bien, en plus, faire en sorte que le Makefile ait une règle unique, du genre :

figures/XXX.pdf: figures/XXX.svg
	rsvg-convert -f pdf figures/XXX.svg -o figures/XXX.pdf

à laquelle il se réfère chaque fois qu'il a besoin de de générer/mettre à jour un fichier ayant un nom sur ce format. Mais je n'ai aucune idée de la syntaxe que ça devrait avoir.

'sauriez si c'est possible ?

Edit : résolu. La doc, toujours la doc.

Dernière modification par Elzen (Le 16/09/2014, à 12:39)

Hors ligne

#2 Le 11/09/2014, à 21:05

telliam

Re : [Résolu] Makefile et traitements similaires

Salut :
tu trouveras tout ce qu'il te faut ici :
http://gl.developpez.com/tutoriel/outil/makefile/
sections 3.2 et 4


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 12/09/2014, à 12:08

Elzen

Re : [Résolu] Makefile et traitements similaires

Super, merci smile

Les sections 6 et 7 permettent également de corriger ma dépendance à « figures/*.pdf » qui, ai-je remarqué après avoir posté, ne provoque évidemment pas la création du fichier PDF lorsque seul le fichier SVG est présent.

Le Makefile corrigé sur ces deux aspects devient donc :

SVGs=$(wildcard figures/*.svg)
PDFs=$(SVGs:.svg=.pdf)

slides.pdf: slides.tex $(PDFs)
	xelatex slides.tex
	xelatex slides.tex

figures/%.pdf: figures/%.svg
	rsvg-convert -f pdf $< -o $@

Ç't'un poil plus cryptique, mais ça marche smile

Juste un truc qui me chiffonne : le cas où, plutôt qu'un unique répertoire figures/ contenant tout en vrac, je voudrais créer un répertoire par section dans le diaporama (ce que je fais en fait en pratique, j'avais simplifié pour la question). Dans ce cas, je peux mettre un deuxième astérisque dans la commande wildcard au début, et pour l'identification des dépendances du fichier complet, ça marche très bien.
En revanche, je n'ai pas trouvé comment indiquer à la règle de conversion des SVGs en PDFs que les fichiers en question doivent se trouver dans un sous-répertoire du répertoire considéré sans leur préciser explicitement son nom (ce qui revient donc au même problème que précédemment, mais au niveau du dessus, à savoir qu'au lieu de préciser chaque image, je dois préciser chaque section).
Donner directement la règle « %.pdf » fonctionne bien dans ce cas (elle s'appliquera également au contenu des sous-répertoires), mais je ne suis pas fan, dans la mesure où les PDFs ne sont pas tous le fruit de la conversion d'un SVG. Bien sûr, chaque PDF venant d'un fichier LaTeX a sa propre règle, donc pas de risque de conflit, mais j'aimerais plus explicite.

En tout cas, je passe le sujet en résolu prochainement smile

Hors ligne