C'est marrant comme cette idée de faire des makefiles pour compiler du latex reste ancrée dans les esprits... Et pourtant, ça ne marche pas.
Ça marche très bien au contraire.
la gestion des dépendances qui est manuelle dans ces solutions : on est en 2014 !
Ce n'est pas une fatalité! Dans BSD Make il y a un mode meta qui surveille les processus fils pour déterminer la vraie liste de dépendances (tous les fichiers lus). C'est un sujet avancé et avec lequel je n'ai pas encore expérimenté mais c'est prévu pour la version 3.0 de BSD Owl.
le choix du nombre de passes qui est aussi manuel alors qu'il doit être adaptatif en latex (index, biblio, packages tordus, etc.)
Dans BSD Owl, c'est ajustable. Chaque passe a un nom, et la variable MULTIPASS énumère les passes à faire:
MULTIPASS= aux ref final
Si ton package nécessite plus de passes, il suffit d'éditer cette variable dans le Makefile:
MULTIPASS= aux ref extrapass final
Les noms des passes sont écrits dans les messages mais n'ont pas d'autre fonction.
Bref, il existe depuis longtemps une solution qui fonctionne parfaitement : latexmk. Et contrairement à ce que son nom pourrait laisser croire, c'est un programme spécifique (en perl) pas un machin basé sur un make généraliste. Il gère les dépendances automatiquement (rapport à être en 2014, hein) en utilisant des hashs pour ne pas recompiler après un simple touch, détermine le nombre de passes nécessaires automatiquement, et est configurable dans tous les sens pour s'adapter à la complexité d'un workflow latex.
Peut-être que tu pourrais expliquer rapidement comment on utilise latexmk pour compiler un document contenant des figures ou une table générée par un script?
Ceci mis à part BSD Owl est un système de build généraliste qui ne se limite pas du tout aux documents LaTeX. Pour le monde LaTeX on peut aussi s'en servir pour écrire et installer des classes de documents LaTeX avec noewb (un outil de programmation lettrée). On peut aussi s'en servir pour compiler et installer des tas de choses.
Je vis aussi en 2014 et je vois qu'aucun des mille-et-un systèmes de build vachement meilleurs que make ne l'a détrôné. Mon analyse est que pour être vraiment généraliste un système de build doit permettre facilement d'accéder au shell et à ce niveau là, impossible d'être plus fort que make. Ensuite make est utilisé pour le build de systèmes d'exploitation entiers (au moins les BSD) ce qui démontre que le programme est largement utilisable en milieu industriel si on peut dire. Ce qui manque à make est une bilbiothèque de Makefiles portable et flexible, problème que je souhaite résoudre avec BSD Owl.
Je ne dirai pas ce que je pense vraiment de l'horodatage pour les versions, histoire de rester poli.
Bon passons, ...
Disons simplement qu'on ne fait généralement pas du latex pour des documents jetables. Alors écrire sa thèse sans utiliser un gestionnaire version, c'est tellement con à pleurer qu'on se demande comment le contenu pourrait être intéressant. Une des bonnes solutions est bien sûr git et gitinfo.
Dans mon expérience de la recherche et de l'écriture de documents, je suis amené à collaborer avec des personnes qui ne connaissent pas les SCM et ne souhaitent pas forcément apprendre leur fonctionnement. Et puis ceux qui connaissent les SCM ne veulent pas forcément apprendre tous les SCMs du monde.
Dans la pratique quand je montre un travail préliminare à des amis ou des collaborateurs, l'horodatage permet à ces derniers de facilement repérer d'entre plusieurs versions quelle est la plus récente. De mon côté, je peux utiliser la date pour retrouver la version correspondate dans mon SCM.
[^] # Re: Mais non, il ne faut pas un makefile pour gérer du latex !
Posté par Michaël (site web personnel) . En réponse à la dépêche Préparation de documents LaTeX avec BSD Owl. Évalué à 4.
Ça marche très bien au contraire.
Ce n'est pas une fatalité! Dans BSD Make il y a un mode meta qui surveille les processus fils pour déterminer la vraie liste de dépendances (tous les fichiers lus). C'est un sujet avancé et avec lequel je n'ai pas encore expérimenté mais c'est prévu pour la version 3.0 de BSD Owl.
Dans BSD Owl, c'est ajustable. Chaque passe a un nom, et la variable
MULTIPASSénumère les passes à faire:Si ton package nécessite plus de passes, il suffit d'éditer cette variable dans le
Makefile:Les noms des passes sont écrits dans les messages mais n'ont pas d'autre fonction.
Peut-être que tu pourrais expliquer rapidement comment on utilise
latexmkpour compiler un document contenant des figures ou une table générée par un script?Ceci mis à part BSD Owl est un système de build généraliste qui ne se limite pas du tout aux documents LaTeX. Pour le monde LaTeX on peut aussi s'en servir pour écrire et installer des classes de documents LaTeX avec
noewb(un outil de programmation lettrée). On peut aussi s'en servir pour compiler et installer des tas de choses.Je vis aussi en 2014 et je vois qu'aucun des mille-et-un systèmes de build vachement meilleurs que
makene l'a détrôné. Mon analyse est que pour être vraiment généraliste un système de build doit permettre facilement d'accéder aushellet à ce niveau là, impossible d'être plus fort quemake. Ensuitemakeest utilisé pour le build de systèmes d'exploitation entiers (au moins les BSD) ce qui démontre que le programme est largement utilisable en milieu industriel si on peut dire. Ce qui manque àmakeest une bilbiothèque deMakefilesportable et flexible, problème que je souhaite résoudre avec BSD Owl.Bon passons, ...
Apparemment tu n'as pas lu le paragraphe Brouillons et traitements multiples.
Dans mon expérience de la recherche et de l'écriture de documents, je suis amené à collaborer avec des personnes qui ne connaissent pas les SCM et ne souhaitent pas forcément apprendre leur fonctionnement. Et puis ceux qui connaissent les SCM ne veulent pas forcément apprendre tous les SCMs du monde.
Dans la pratique quand je montre un travail préliminare à des amis ou des collaborateurs, l'horodatage permet à ces derniers de facilement repérer d'entre plusieurs versions quelle est la plus récente. De mon côté, je peux utiliser la date pour retrouver la version correspondate dans mon SCM.