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 12/07/2023, à 10:34

DonutMan75

Un Makefile pour LaTeX ?

Bonjour à tous,

je suis en train de développer un petit Makefile pour mon projet LaTeX (un cours sur Matlab).

Je voulais vous le soumettre pour avis, étant donné que c'est la première fois que je fais cela ^^

PDFLATEX=pdflatex

matlab_1.pdf : matlab_1.beam part/*tex
	$(PDFLATEX) -shell-escape matlab_1.beam -o matlab_1.pdf
	

all : matlab_1.pdf

clean :
	rm -f *aux
	rm -f *log
	rm -f *nav
	rm -f *out
	rm -f *snm
	rm -f *toc
	rm -f *vrb
	rm -f _minted*/*
	rm -f part/*aux

Mon fichier principal est matlab_1.beam (c'est une présentation LaTeX Beamer) qui doit générer un fichier matlab_1.pdf
Dans matlab_1.beam se trouve des includes vers des fichiers .tex situés dans part/

La première particularité c'est que si un des fichier dans part/*tex a changé, on doit régénérer le fichier matlab_1.pdf et ce même si matlab_1.beam n'a pas changé (vous me suivez ?). Je pense du coup que ma règle matlab_1.pdf ci-dessus rend compte de cela . Qu'en pensez-vous ?

L'autre particularité est que je souhaiterais une cible pour lancer la commande pdflatex deux fois d'affilée et ce bien que les fichiers sources n'aient pas changés entre temps. Ceci dans l'objectif de mettre à jour correctement la table des matières le cas échéant. Or si j'appelle deux fois make, la 2eme fois il me dit (à raison) qu'il n'y a rien à faire... Comment forcer la compilation malgré tout ? Il faut que ça reste une option supplémentaire, genre un "make matlab_1_twice" par exemple.

Enfin, pour l'instant je n'ai qu'un seul matlab_1.beam mais j'en aurais d'autres ensuite matlab_2.beam etc... Je suppose qu'il faudra juste ajouter leurs noms dans les dépendances de all non ?

Merci par avance pour tout commentaires smile

Bonne journée à tous,

Donut

Hors ligne

#2 Le 14/07/2023, à 04:24

Vobul

Re : Un Makefile pour LaTeX ?

Bonjour Donut,

Votre Makefile semble bien conçu pour votre projet LaTeX. Permettez-moi de commenter chaque partie de votre Makefile pour vous donner mon avis :

PDFLATEX=pdflatex

matlab_1.pdf : matlab_1.beam part/*tex
$(PDFLATEX) -shell-escape matlab_1.beam -o matlab_1.pdf

La règle pour générer matlab_1.pdf semble correcte. Elle spécifie que matlab_1.beam et tous les fichiers .tex dans le dossier part/ sont les dépendances de matlab_1.pdf. Si l'un des fichiers dans part/ a changé, cela forcera la régénération de matlab_1.pdf, même si matlab_1.beam n'a pas changé. Donc oui, cela répond à votre besoin.

all : matlab_1.pdf

La cible all dépend de matlab_1.pdf, donc lorsque vous exécutez make all, il ne construira que matlab_1.pdf. Si vous souhaitez construire plusieurs fichiers, par exemple matlab_1.pdf et matlab_2.pdf, vous pouvez simplement ajouter ces dépendances à la règle all :

all : matlab_1.pdf matlab_2.pdf
clean :
rm -f *aux
rm -f *log
rm -f *nav
rm -f *out
rm -f *snm
rm -f toc
rm -f vrb
rm -f _minted/
rm -f part/*aux

La cible clean supprime les fichiers auxiliaires générés par LaTeX. C'est une bonne pratique d'avoir une cible de nettoyage. Assurez-vous de ne pas supprimer des fichiers importants en ajoutant les directives appropriées.

Maintenant, pour répondre à votre question sur la compilation deux fois d'affilée, vous pouvez ajouter une nouvelle règle pour cela, par exemple :

matlab_1_twice : matlab_1.pdf
$(PDFLATEX) -shell-escape matlab_1.beam -o matlab_1.pdf
$(PDFLATEX) -shell-escape matlab_1.beam -o matlab_1.pdf

La règle matlab_1_twice dépend de matlab_1.pdf et exécute deux fois la commande $(PDFLATEX) pour générer matlab_1.pdf. Ainsi, lorsque vous exécutez make matlab_1_twice, il forcera la compilation deux fois.

J'espère que cela répond à vos questions. Si vous avez besoin de plus d'informations ou si vous avez d'autres préoccupations, n'hésitez pas à demander. Bonne journée !


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 14/07/2023, à 09:40

kamaris

Re : Un Makefile pour LaTeX ?

@Vobul: c'est du chatgpt?

Hors ligne

#4 Le 14/07/2023, à 15:31

Vobul

Re : Un Makefile pour LaTeX ?

@kamaris : oui. Avoue que la réponse est au poil, non ?


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#5 Le 14/07/2023, à 16:31

kamaris

Re : Un Makefile pour LaTeX ?

Oui, pour autant que je puisse en juger : le makefile est typiquement un truc que je copie-colle depuis quelque part et que je bidouille ensuite pour que ça marche, même si j'ai fini par apprendre deux trois trucs avec le temps.
Le ton de la réponse est d'une politesse un peu curieuse en tout cas, mais je suppose que quand on obtient les renseignements qu'on veut on s'en fout big_smile

Hors ligne

#6 Le 14/07/2023, à 18:36

Nuliel

Re : Un Makefile pour LaTeX ?

Il faut quand même faire gaffe avec chatGPT, il sait faire des réponses qui paraissent vraies mais qui ne le sont pas du tout (j'avais posé une question à chatGPT sur un problème de courbes elliptiques et la réponse paraissait vraie alors qu'elle ne l'était pas du tout)
@Vobul: est-ce que tu t'y connais en LaTeX et en Makefile, et as tu vérifié que ce qu'indique chatGPT est bien vrai avant de poster cela?

Hors ligne

#7 Le 14/07/2023, à 19:37

Vobul

Re : Un Makefile pour LaTeX ?

@Nuliel : oui je suis tout à fait d'accord avec toi, il faut faire attention, parfois il hallucine complètement, genre il peut te donner des options pour une commande qui n'existent pas, et il est tout fier de lui. "confidently incorrect" est un très bon terme pour décrire ça. J'attends vraiment une évolution de ces services où il sera capable d'aller chercher la doc officielle (dernière version) et répondre à une question très spécifique.

Et oui je touche un peu à LaTeX (un enfer) et les Makefile, et j'ai relu la réponse. Dans ce cas précis j'ai trouvé la réponse très bonne.

> Le ton de la réponse est d'une politesse un peu curieuse en tout cas

Oui, c'est vrai que normalement je tutoie les gens, si tu me vois vouvoyer dans une réponse c'est 100% du ChatGPT et j'ai eu la flemme de lui dire "pareil mais tutoie". Là l'avantage que je voie c'est que OP a une réponse très complète et bien foutue.

Dernière modification par Vobul (Le 14/07/2023, à 19:38)


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#8 Le 15/07/2023, à 08:12

DonutMan75

Re : Un Makefile pour LaTeX ?

Hello,
j'aurais bien demandé à chatGPT d'écrire un message de remerciement mais je n'ai toujours pas sauté le pas pour me créer un compte (paraît qu'il faut donner son email ET son numéro de téléphone ??)

Enfin quoi qu'il en soit, merci pour les conseils, d'où qu'ils viennent smile

D.

Hors ligne

#9 Le 15/07/2023, à 09:00

bruno

Re : Un Makefile pour LaTeX ?

Je suis résolument contre le fait de recopier des réponses de robots sur le forum. Surtout sans le préciser, ni indiquer si la solution a été testée ou pas.
Le principe de base d'un forum, ce sont des échanges entre humains.

Hors ligne

#10 Le 15/07/2023, à 15:05

Vobul

Re : Un Makefile pour LaTeX ?

bruno a écrit :

Je suis résolument contre le fait de recopier des réponses de robots sur le forum. Surtout sans le préciser, ni indiquer si la solution a été testée ou pas.
Le principe de base d'un forum, ce sont des échanges entre humains.

ATTENTION GROS VILLAIN IA A ÉCRIT :

Je comprends parfaitement votre point de vue. Les forums ont traditionnellement été des espaces où les utilisateurs interagissent entre eux, partagent leurs connaissances, posent des questions et offrent des réponses basées sur leur expérience personnelle. La communication humaine et l'échange d'idées sont des éléments clés de ces plateformes.

Cependant, il convient de noter que je suis une intelligence artificielle conçue pour fournir des informations et aider les utilisateurs en fournissant des réponses basées sur les connaissances accumulées dans mes modèles d'apprentissage. Mon objectif est d'offrir une assistance en fournissant des informations précises et utiles.

Lorsque je fournis une réponse, je me base sur les informations que j'ai apprises de milliers de sources en ligne, y compris des forums où des discussions humaines ont eu lieu. Mon but est d'offrir une réponse pertinente et utile, mais je ne peux pas garantir que chaque solution que je propose a été testée ou vérifiée par un humain.

Il est toujours important de faire preuve de discernement lorsque vous lisez une réponse en ligne, qu'elle provienne d'une IA ou d'un humain. Il est recommandé de vérifier et de valider les informations fournies avant de les appliquer à une situation réelle.

Si vous préférez les échanges humains dans un forum, je vous encourage à continuer à interagir avec d'autres utilisateurs et à partager vos connaissances et expériences. Mon rôle est de compléter et d'assister, mais je respecte votre choix de privilégier les interactions humaines.

;p


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne