URL: https://linuxfr.org/news/preparation-de-documents-latex-avec-bsd-owl Title: Préparation de documents LaTeX avec BSD Owl Authors: Michaël BAud, palm123, Snark et Benoît Sibaud Date: 2014年10月28日T08:23:10+01:00 License: CC By-SA Tags: latex, bsdowl, make et bsd Score: 21 À l'occasion de la sortie de BSD Owl 2.2.1 — le système de compilation portable pour BSD Make — je vous propose d'apprendre à utiliser BSD Owl pour préparer et publier vos documents LaTeX. Ce texte est une traduction de la page du Wiki "Producing LaTeX documents". ---- [BSD Owl Scripts v2.2.1](https://github.com/michipili/bsdowl/releases/tag/v2.2.1) [Producing LaTeX documents](https://github.com/michipili/bsdowl/wiki/ProduceLaTeXDocuments) [Port pour MacPorts](https://trac.macports.org/browser/trunk/dports/devel/bsdowl/Portfile) [Port pour FreeBSD (non officiel)](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194625) [Paquet Debian Jessie (non officiel)](https://github.com/michipili/bsdowl/releases/download/v2.2.1/bsdowl_2.2.1-1_all.deb) ---- # Préparer des documents avec LaTeX Vous apprendrez dans ce texte comment utiliser les scripts BSD owl (`bsdowl`) pour : - préparer des documents simples et les publier dans l'arborescence des fichiers; - préparer la bibliographie de vos documents LaTeX avec BIBTeX; - préparer des figures pour vos documents avec METAPOST; - gérer des documents dont certains éléments doivent être automatiquement régénérés; - gérer des documents dispersés dans différents répertoires. - gérer des collections comportant un grand nombre de documents. # Avertissement: travailler avec TeX ou LaTeX Il y a de nombreux formats TeX, plain TeX et LaTeX en sont deux exemples. Le format LaTeX jouit d'une grande popularité et nous avons choisi d'utiliser le module `latex.doc.mk` dans les exemples. Cependant, ce qui suit s'applique aussi au module `tex.doc.mk`. Certains paragraphes dans la suite identifient les mécanismes spécifiques à `latex.doc.mk`. # Avertissement: BSD Make Ne vous trompez pas de version de _make_ : la plupart des distributions Linux installent GNU Make comme programme _make_ principal, la version BSD de _make_ est souvent appelée _bmake_ et installable via un paquet du même nom. Sous les BSD, on trouve naturellement BSD Make comme commande _make_. Sous Mac OS X, c'est le programme `bsdmake`. # Utilisation simple La préparation d'un document simple avec LaTeX est en elle-même particulièrement simple, l'utilisation de `bsdowl` pourrait donc sembler une complication inutile. Cependant, même dans ce cas, l'utilisation de `bsdowl` rend d'appréciables services, comme l'installation et l'horodatage des fichiers produits. Néanmoins, la partie vraiment intéressante se situe dans la partie [avancée](#fonctions-avanc%C3%A9es). ## La première fois Supposons que le fichier `script.tex` contient notre texte et mettons-le dans un répertoire dédié. Créons un fichier `Makefile` (la majuscule compte) qui contient : ```makefile DOC = script.tex .include "latex.doc.mk" ``` de sorte que le répertoire dédié contient maintenant `script.tex` et ce Makefile. Rendons-nous avec un shell dans ce répertoire et tapons `make`: ```console % make make build ===> Multipass job for script.dvi (aux) latex script.tex This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) entering extended mode (./script.tex LaTeX2e <2003/12/01> ... ``` S'il n'y avait pas d'erreur dans `script.tex`, on se retrouve avec les fichiers "compilés" suivants dans le répertoire courant : ```console % ls Makefile script.log script.aux script.tex script.dvi script.toc ``` Lorsque les produits de compilation ne sont plus nécessaires, vous pouvez nettoyer le dossier de travail avec le mantra `make clean`: ```console % make clean rm -f script.dvi script.log script.aux script.toc ``` Le nettoyage du dossier de travail est une étape optionnelle qui évite de voir son dossier personnel rempli de données inutiles, qui peuvent rapidement être recréées. Les fichiers DVI sont habituellement très petits, de l'ordre de quelques centaines de kilobits, mais les fichiers PostScript ou PDF sont habituellement bien plus gros. ## Installation ou publication Avant de nettoyer votre dossier de travail avec le mantra _make clean,_ vous pouvez vouloir copier ce document à un emplacement approprié du système de fichiers. Cette étape s'appelle _installation_ du document, car elle est analogue à l'installation d'un programme nouvellement compilé. Vous installez le document grâce à la commande `make install` mais il faut auparavant dire à _make_ quel emplacement du système de fichiers est approprié. Il faut pour cela assigner à la variable _DOCUMENTDIR_ le chemin du dossier où vous voulez que vos fichiers soient copiés, comme l'illustre le `Makefile` suivant : ```makefile DOCUMENTDIR = ${HOME}/doc/report DOC = script.tex .include "latex.doc.mk" ``` Vous pouvez alors passer à la commande `make install`: ```console % make install install -d /home/michi/doc/report install -o michi -g michi -m 440 script.dvi /home/michi/doc/report ``` En comparaison avec la copie manuelle du document produit, vous vous épargnez la saisie récurrente du dossier de destination après chaque mise à jour du document. Mais confier cette tâche élémentaire au `Makefile` a d'autres avantages plus importants : - Cela simplifie l'organisation de votre bibliothèque de sources pour vos documents. - Cette stratégie s'adapte à une collection importante de documents, cf. _Travailler avec une collection de documents_ plus bas. - En mode brouillon, un suffixe horodatant le fichier est automatiquement ajouté, comme expliqué plus bas. ## Choix du format de sortie La chaîne de production TeX est capable de produire des documents électroniques dans plusieurs formats, comme DVI, PostScript (PS) ou PDF. La variable _TEXDEVICE_ commande le choix du format de sortie des documents préparés avec `latex.doc.mk`. Cette valeur est généralement _dvi_ de sorte qu'un fichier DVI sera préparé à partir du document source. D'autres valeurs possibles sont _ps_ ou _pdf_. Si vous avez configuré une imprimante PostScript avec `texconfig(1)`, disons _TEXPRINTER_, vous pouvez utiliser _ps.TEXPRINTER_ comme valeur de _TEXDEVICE_ ce qui indique à `dvips` d'utiliser les réglages pour _TEXPRINTER_ dans la traduction de DVI vers PostScript. Il est enfin possible d'assigner une liste de formats de sortie à _TEXDEVICE_. ## Brouillons et traitements multiples Certains formats — dont LaTeX — et certaines macros exigent de votre manuscrit qu'il soit traité plusieurs fois par TeX ou LaTeX avant que vous n'obteniez la version finale. Le module `latex.tex.mk` impose un traitement à multiples passes de votre manuscrit, car LaTeX s'appuie sur ce mécanisme pour produire les références croisées associées aux commandes _label_ ou _ref_ de votre manuscrit. Le module `doc.tex.mk` ne procède pas à un traitement multiple. Dans les premiers jets d'un document, les modifications sont probablement fréquentes ; il est donc souhaitable d'éviter de longs traitements multiples. `bsdowl` a un mode brouillon, activé en assignant la valeur `yes` à la variable _DRAFT_ de _make_. Ceci peut être fait en ajoutant la commande suivante dans le `Makefile`: ```makefile DRAFT?= yes DOC = script.tex .include "latex.doc.mk" ``` La commande _DRAFT?=_ est une forme faible de l'assignement qui permet d'invoquer _make DRAFT=no_ pour rétablir le traitement à plusieurs passes pour une unique invocation de _make_, sans modifier le `Makefile`. Lorsque les derniers ajustements ont été faits au manuscrit, vous pouvez supprimer la commande manipulant _DRAFT_ et votre texte est prêt pour une dernière exécution de _make_ produisant la version finale de votre document. Si vous en êtes satisfait, vous pouvez l'installer. Pendant la mise au point d'un document, il est utile de garder des copies des documents produits à certaines étapes de votre travail. Imaginez envoyer un exemplaire préliminaire de votre travail à un ami qui le lira attentivement et vous fera part de ses commentaires. Pendant ce temps, vous continuez de travailler sur votre texte, si bien que lorsque vous recevrez ses commentaires, votre document aura évolué. Pour pouvoir comparer les commentaires de votre ami à la version de votre document que vous lui avez envoyé, la meilleure manière de résoudre ce problème est probablement d'utiliser un [outil de gestion des versions](http://en.wikipedia.org/wiki/Revision_control) — un logiciel gardant note des différentes révisions d'un fichier. Si vous n'utilisez pas un tel système et désirez en essayer un, vous pourriez être intéressé par GIT, tout particulièrement si vous utilisez les courriels pour organiser votre collaboration. Lorsque la variable _DRAFT_ est positionnée à _yes_ et la variable _TEXDRAFTSTAMP_ n'est pas initialisée, elle reçoit la valeur `-${TEXDRAFTTIMESTAMP}` où le texte de remplacement de _TEXDRAFTTIMESTAMP_ est la date à laquelle la commande `make` est appelée. Lorsque la variable _TEXDRAFTSTAMP_ est initialisée et n'est pas vide, son texte de remplacement est ajouté à la fin de tous les documents installés par `latex.doc.mk` ou `tex.doc.mk`. Si vous ne souhaitez pas que le nom soit modifié, tout en utilisant le mode brouillon, il suffit d'affecter un texte vide à _TEXDRAFTSTAMP_. ## Un document dans plusieurs fichiers Si vous travaillez sur un document complexe, vous aurez certainement découpé votre manuscrit en plusieurs fichiers ; typiquement, un fichier par chapitre ou par section plus un fichier principal contenant le préambule et de multiples commandes _input_ demandant à LaTeX de lire tous les fichiers représentant le véritable contenu du document. Supposons donc que votre document est découpé entre un fichier principal `galley.tex` et deux fichiers `part1.tex` et `part2.tex`. Votre `galley.tex` ressemble probablement à ceci : ```latex \documentclass{article} \begin{document} \input{part1} \input{part2} \end{document} ``` Le `Makefile` correspondant est alors : ```makefile DOC = galley.tex SRCS = part1.tex SRCS+= part2.tex .include "latex.doc.mk" ``` # Fonctions avancées ## Figures avec METAPOST Les modules `latex.doc.mk` et `tex.doc.mk` prennent en charge [METAPOST](http://cm.bell-labs.com/who/hobby/MetaPost.html) agréablement. C'est un point particulièrement important à relever, car METAPOST est souvent l'outil le mieux adapté pour tracer des figures destinées à l'inclusion dans un document TeX. Cependant, il n'est que rarement pris en charge de façon adéquate par les interfaces graphiques LaTeX. Ces modules font l'hypothèse que votre code METAPOST contient les lignes : ```metapost prologues := 3; outputtemplate := "%j-%c.mps"; ``` La première déclaration paramètre l'inclusion des fontes dans le fichier résultat tandis que la seconde change le format des noms utilisés par les produits. Supposons donc que vous ayez préparé les illustrations pour votre article avec METAPOST et réparti ces illustrations dans deux fichiers `illustr1.mp` et `illustr2,mp`. Pour indiquer à `latex.doc.mk` qu'il doit les utiliser pour produire leurs figures, définissez la variable _FIGS_ dans votre `Makefile`: ```makefile DOC = galley.tex SRCS = part1.tex SRCS+= part2.tex FIGS = illustr1.mp FIGS+= illustr2.mp .include "latex.doc.mk" ``` Saisissez donc `make` à l'invite de commande. Le module `latex.doc.mk` analysera vos fichiers pour savoir quelles illustrations sont définies dans vos fichiers et produira les fichiers nécessaires à votre _TEXDEVICE_. Par exemple, si votre _TEXDEVICE_ est `dvi` et que `illustr1.mp` contient la description de deux figures définies par `beginfig(1)` et `beginfig(2)`, alors vous obtiendrez quatre fichiers : ```console % ls *.mps illustr1-1.mps illustr1-2.mps illustr1-1.eps illustr1-2.eps ``` Les deux premiers fichiers sont la sortie de METAPOST, des données intermédiaires dans un format PostScript spécifique. Les deux derniers sont en _Encapsulated PostScript_ et adaptés à l'inclusion dans votre document. En utilisant le paquet _graphicx,_ l'inclusion d'image est aussi simple que possible : ```latex \includegraphics{illustr1-1}% ``` _Découvrez METAPOST._ Il semblerait que de nombreuses personnes ne connaissent pas METAPOST. Si c'est votre cas mais que vous êtes intéressé par la découverte de cet outil merveilleux, la première bonne nouvelle est qu'il fait partie de la plupart — sinon de toutes — les installations de TeX, il est donc probablement déjà installé sur votre système. La seconde bonne nouvelle est que de nombreuses informations peuvent être trouvées à son sujet sur le Web. Par exemple le [TeX users group](http://www.tug.org/metapost.html) a une page dédiée à cet outil. La liste qui s'y trouve est particulièrement longue, j'ajouterai donc que j'ai lu et apprécié l'[introduction de André Heck](http://staff.science.uva.nl/~heck/Courses/mptut.pdf), elle est peut-être un bon point de départ pour vous ! Enfin n'oubliez pas d'essayer mon projet Metapost [blueprint](https://github.com/michipili/blueprint) pour produire de splendides graphiques pour accompagner vos projets. ## Bibliographie `bsdowl` peut vous aider à préparer des bibliographies avec BibTeX. Tout d'abord vous devez vous assurer que TeX trouvera les base de données bibliographiques que vous avez énumérées dans vos commandes _bibliography_. Il est habituel de regrouper ses bases de données bibliographiques dans un dossier, par exemple `${HOME}/share/bib`. Pour permettre à `bibtex` de trouver ses fichiers, il suffit d'ajouter le chemin `${HOME}/share/bib` au contenu de la variable _BIBINPUTS_. Si votre base de données bibliographiques est dispersée dans plusieurs dossiers, vous n'avez qu'à mentionner chacun d'eux dans _BIBINPUTS_ : ```makefile DOC = galley.tex SRCS = part1.tex SRCS+= part2.tex BIBINPUTS = ${HOME}/share/bib BIBINPUTS+= ../morebib .include "latex.doc.mk" ``` Notez que le mantra `make clean` laissera intacts les fichiers BBL produits par `bibtex`. Les éditeurs demandent parfois de leur envoyer ces fichiers, ainsi, la commande `make clean` ou `make distclean` placera votre dossier de travail dans un état où vous pourrez facilement le redistribuer. Pour vous débarrasser des fichiers BBL, vous devez vous en remettre au puissant mantra `make realclean`. ## Plusieurs documents dans le même dossier Bien qu'il soit souvent une bonne idée de réserver un dossier à chaque document, vous pouvez avoir des raisons de vouloir travailler avec plusieurs documents dans le même dossier. Vous avez vos raisons et elles sont probablement excellentes, et `bsdowl` fera donc de son mieux pour vous aider. Supposons que vous ayez deux documents dont les sources se trouvent dans le même dossier, disons un article et une version abrégée de cet article. Ces deux documents ont en commun un fichier `macro.tex`, mais sont à part cela relativement indépendants du point de vue de LaTeX. Le texte de l'article est divisé dans deux fichiers `section1.tex` et `section2.tex`. Le résumé a un seul fichier `summary.tex`. Le `Makefile` correspondant ressemble à ceci : ```makefile DOC = article.tex DOC+= summary.tex SRCS = macros.tex SRCS.article.tex = section1.tex SRCS.article.tex+= section2.tex .include "latex.doc.mk" ``` ## Génération automatique d'une portion de document Supposons que vous travailliez sur un document contenant une table dont le contenu changera vraisemblablement plusieurs fois et devra donc être mis à jour. Une telle table pourrait être un budget : lorsque notre situation évolue, ainsi en va-t-il de notre budget. Il peut être assez délicat de saisir une table en LaTeX, la mettre à jour est encore plus vachard. Dans cette situation, on peut écrire et utiliser à profit un petit programme lisant les données brutes de notre budget et écrivant pour nous le code LaTeX de la table correspondante, contenant cette information brute et les données que nous pouvons en dériver. Écrire un tel programme est très facile, car on a seulement besoin de savoir travailler avec des fichiers texte. Ainsi, vous avez rassemblé vos données brutes pour votre table dans le fichier `table.raw` et écrit un petit programme `gentable` qui écrit pour vous la table LaTeX sur sa sortie standard. Dans votre manuscrit, vous utilisez le nom _table_ pour inclure le contenu de la table. Voici votre `Makefile`: ```makefile DOC = galley.tex table.tex: gentable table.raw ./gentable < table.raw> table.tex REALCLEANFILES+= table.tex .include "latex.doc.mk" ``` Cet exemple suppose que le programme `gentable` est un filtre, de sorte que l'entrée et la sortie sont effectuées par des redirections. D'autres programmes peuvent utiliser une convention différente pour définir la sortie et l'entrée. Si vous envoyez vos fichiers à quelqu'un, cette personne ne voudra probablement pas exécuter votre programme `gentable` . Il semble donc préférable d'ajouter le nom du produit `table.tex` à _REALCLEANFILES_ plutôt qu'à _CLEANFILES_ : vous pouvez ainsi nettoyer votre dossier de travail avec `make clean` et faire une archive du contenu que vous enverrez à un tiers, sans avoir besoin de traiter le fichier `table.tex` avec une attention particulière. Bien sûr, vous pouvez générer un code source pour METAPOST, typographier un fragment de code ou bien encore autre chose, au lieu de générer une table ! ## Code source réparti dans plusieurs répertoires Certaines méthodes de travail requièrent que vos fichiers source ne soient pas situés dans un répertoire unique mais disséminés dans le système de fichiers. Une raison pour travailler ainsi pourrait être que votre organisation utilise pour son courrier une classe de document personnalisée incluant quelques images. Vous ne souhaitez pas copier ces images dans chacun des dossiers utilisant cette classe de document, ni créer des liens symboliques vers ces images : vous souhaitez tout bonnement pouvoir ignorer leur existence ! Une solution à ce problème passe par la variable _TEXINPUTS_ dont le contenu est une liste de dossiers que TeX doit examiner lorsqu'il recherche un fichier. Une autre raison motivant la dissémination de fichiers sources dans plusieurs dossiers est la préparation d'un grand document, comme un livre. Si les fichiers de chaque chapitre sont contenus dans un dossier dédié, il est facile de traiter un chapitre isolé avec LaTeX pendant la phase de mise au point du manuscrit. TeX doit donc trouver tous les fichiers nécessaires lorsqu'il traite le fichier principal produisant le livre, ce qui est accompli en positionnant _TEXINPUTS_ à la valeur adéquate, comme expliqué ci-dessous. Vous pouvez définir la variable _TEXINPUTS_ dans votre environnement, dans votre `Makefile` ou bien même écrire une version personalisée de `latex.doc.mk` définissant cette variable. Supposons que l'image représentant visuellement votre organisation soit dans _${HOME}/share/texmf/tex/organisation/visual.eps_, afin que TeX examine le dossier contenant cette image, vous écrivez une affectation à _TEXINPUTS_ dans votre `Makefile`, comme ceci : ```makefile DOC = galley.tex TEXINPUTS = ${HOME}/share/texmf/organisation .include "latex.doc.mk" ``` Exécuter _make_ dans le dossier contenant le `Makefile` fera apparaître ceci dans votre terminal : ```console % make make build ===> Multipass job for galley.dvi (aux) env TEXINPUTS=".:${HOME}/share/texmf/organization:" latex galley.tex This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) ... ``` Examinons la liaison associée à _TEXINPUTS_ par la commande _env_. Elle se distingue notamment de la spécification du `Makefile` par la présence d'un élément `.` au début et d'un élément vide à la fin. Ceux-ci indiquent à TeX de rechercher aussi les fichiers dans le dossier courant et dans les dossiers de l'installation TeX. Si dans un cas particulier vous souhaitez avoir un contrôle total sur _TEXINPUTS_, il vous suffit de positionner _USE\_STRICT\_TEXINPUTS_ à _yes_ dans votre `Makefile`. S'il trouve ce positionnement, `bsdowl` n'ajoutera pas le point et l'élément vide à _TEXINPUTS_. La prise en charge de METAPOST tient compte des valeurs de _TEXINPUTS_ ET _USE\_STRICT\_TEXINPUTS_. Une variable analogue nommée _MPINPUTS_ et sa compagne _USE\_STRICT\_MPINPUTS_ permettent de configurer le chemin de recherche des fichiers par METAPOST. ## Travailler avec des collections contenant un grand nombre de documents Nous montrons comment utiliser le module `bps.subdir.mk` pour organiser une collection de documents. Pour les besoins de cet exemple, nous supposerons que vous préparez un journal électronique et souhaitez distribuer chaque article du journal comme un document individuel. Vous utilisez l'organisation suivante : 1. Vous avez préparé un répertoire contenant chaque numéro du journal, disons `${HOME}/journal`. 2. Chaque numéro du journal est matérialisé par un sous-répertoire du dossier précédent. 3. Chaque article du journal est représenté par un sous-répertoire du dossier correspondant au numéro auquel il appartient. Supposons que vous avez déjà préparé plusieurs articles, comme le suggère la commande suivante : ```console % find ./journal -type f ./journal/issue-2013-1/01-galdal/Makefile ./journal/issue-2013-1/01-galdal/article.tex ./journal/issue-2013-1/02-arathlor/Makefile ./journal/issue-2013-1/02-arathlor/article.tex ./journal/issue-2013-2/01-mirmilothor/Makefile ./journal/issue-2013-2/01-mirmilothor/article.tex ./journal/issue-2013-2/02-eoron/Makefile ./journal/issue-2013-2/02-eoron/article.tex ./journal/issue-2013-2/03-echalad/Makefile ./journal/issue-2013-2/03-echalad/article.tex ``` Les noms comme `galdal`, `arathlor`, etc. sont les noms des auteurs fictifs des articles non moins fictifs de votre journal. Chaque contribution est associée à un répertoire contenant le texte de l'article proprement dit `article.tex` et un `Makefile` semblable à ceux décrits plus haut dans cette dépêche et qui est utilisé pour préparer l'article correspondant. Chacun de ces `Makefile` peut être aussi simple que: ```Makefile DOC= article.tex .include "latex.doc.mk" ``` Pour coordonner la préparation de tous nos articles, il nous suffit d'écrire quelques `Makefile` supplémentaires : ``` ./journal/Makefile ./journal/issue-2013-1/Makefile ./journal/issue-2013-2/Makefile ./journal/issue-2013-3/Makefile ``` Chaque `Makefile` contient essentiellement la liste des sous-répertoires que _make_ doit explorer pour atteindre les cibles `build`, `install` ou `clean`. Ainsi le fichier `./journal/Makefile` doit contenir : ```makefile SUBDIR= issue-2013-1 SUBDIR+= issue-2013-2 SUBDIR+= issue-2013-3 .include "bps.subdir.mk" ``` Quant à lui, `./journal/issue-2013-1/Makefile` doit contenir : ```makefile SUBDIR= 01-galdal SUBDIR+= 02-arathlor .include "bps.subdir.mk" ``` Les fichiers restants `./journal/issue-2013-2/Makefile` et `./journal/issue-2013-3/Makefile` doivent être préparés de façon similaire. Avec ces ajustements, les cibles `all`, `build`, `clean`, `distclean`, `realclean` et `install` sont déléguées aux `Makefile` trouvés dans les dossiers énumérés par _SUBDIR_. La variable `_SUBDIR_PREFIX` peut être utilisée pour personnaliser le dossier d'installation pour chaque article. Changeons le `Makefile` associé à chaque article en : ```Makefile DOC= article.tex DOCDIR= ${HOME}/publish/journal${_SUBDIR_PREFIX} .include "latex.doc.mk" ``` Avec ce réglage, le document `./journal/issue-2013-1/01-galdal/article.dvi` sera installé dans `${HOME}/publish/journal/issue-2013-1/01-galdal/article.dvi` et ainsi de suite. Il est possible d'ajuster ceci pour utiliser un police de nommage complètement arbitraire pour l'installation des produits. # Contribuer Le but de `bsdowl` est de fournir un système de déploiement de logiciel portable pour les systèmes UNIX modernes. Il se distingue d'autres approches par l'utilisation de simples fichiers `Makefile` et d'un programme standard : BSD Make. L'utilisateur de `bsdowl` écrit donc des fichiers `Makefile`, il n'est pas utile d'apprendre un énième langage de script pour écrire une spécification de compilation. Pour la [version 3.0 en préparation](https://github.com/michipili/bsdowl/milestones), je projette de réorganiser grandement le logiciel. Les projets sont : - Mise en avant des notions de module et de produit, pour se rapprocher du schéma d'organisation des projets dans les grands IDE classiques. - Concilier le point précédent avec une approche non bureaucratique pour les petits projets. - Utiliser de façon systématique un mode de développement [axé sur les tests](https://github.com/michipili/bsdowl/issues?q=is%3Aopen+label%3Atestsuite+milestone%3Av3.0). Si vous êtes intéressé(e) par `bsdowl` vous pouvez : - témoigner de votre intérêt en lui ajoutant une petite étoile dans [GitHub](https://github.com/michipili/bsdowl) ; - rapporter [vos succès et vos infortunes](https://github.com/michipili/bsdowl/issues), je suis notamment très intéressé par la préparation d'une liste de compatibilité. - contribuer des programmes de type `hello-world` ou de plus complexes pour m'aider à écrire des tests pour les langages que vous aimeriez voir pris en charge.