Introduction à Latexmk pour faciliter les compilations

vendredi 13 janvier 2012, mise à jour mercredi 22 janvier 2014, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Cet article est obsolète. Soit qu’il existe une manière plus « moderne » de procéder, soit que j’ai trouvé une autre méthode plus appropriée.
Voyez plutôt la nouvelle version : XeLaTeX et Latexmk.

Suites aux remarques sur mon article à propos de make, j’ai me suis penché sur latexmk. C’est effectivement bien plus simple que makefile, même s’il y a encore quelques besoins auxquels je n’arrive pas à répondre.

Voici un petit tutoriel sur la manière de l’utiliser, notamment avec XeLaTeX

Principe

Quand on compile un document .tex il faut en général procéder à plusieurs compilations : avec LaTeX, puis avec biber, puis avec makexindex etc.

Latexmk permet d’automatiser ces compilations, en vérifiant à la suite de chaque compilation qu’elle doit être la prochaine compilation, et en regardant les fichiers auxiliaires (.aux, .bbl etc) pour voir s’ils changent entre les compilations, et donc s’il est nécessaire de procéder à plusieurs compilations.

Prenons un exemple simple : un fichier .tex sans bibliographie et sans index, mais avec un table des matières.

latexmk va d’abord compiler avec LaTeX. Puis il va voir qu’un fichier .toc est produit, ainsi qu’un fichier .aux. Il va alors procéder à une seconde compilation, et regarder si ces fichiers ont changé. Si il y a eu un changement, il va procéder à une troisième compilation et vérifier si ces fichiers ont changé. etc. Ainsi jusqu’à cinq fois (par défaut). Si au bout de la cinquième série de compilation les fichiers ont encore changé, il considère qu’il est impossible d’avoir des fichiers stables [1].

Maintenant imaginons que j’ajoute une bibliographie. Latexmk va pouvoir analyser à la première compilation LaTeX, en fonction des fichiers produits (le fichier bbl notamment) qu’il existe une biblio, qui réclame Biber (ou bibtex). Et il va automatiquement compiler avec biber (ou bibtex après la première compilation LaTeX, puis il procédera à une seconde compilation LaTeX etc.

Autrement dit, Latxmk est capable de mettre en œuvre les séries successives de compilation, et surtout de savoir quand il est nécessaire de procéder à une nouvelle compilation.

Mise en œuvre : 1er essai

Latexmk est installé par défaut avec les différentes distributions LaTeX. Donc rien à installer.

Avec son Terminal, se rendre dans le dossier où se trouvent les fichiers à compiler [2].

Puis frapper latexmk nom_du_fichier_a_compiler. latexmk se lance et vous indique qu’il tente une première compilation :

Run number 1 of rule 'latex'

Il nous indique donc qu’il essaie de lancer la règle latex.

Qu’est-ce qu’une règle ? Une règle, c’est une suite d’opération nécessaire à la transformation d’un fichier a, par exemple un fichier .tex en un fichier b, par exemple un fichier .pdf, ou en l’occurrence un fichier .dvi (Je parles de ce fichier un peu plus bas.)

En l’occurence, la règle dit qu’il faut lancer le programme latex.

C’est ce qui se passe. Et là, patatra si vous utilisez XeLaTeX, avec le package fontspec vous obtenez un joli message The fontspec package requires either XeTeX or LuaTeX to function. et la compilation s’arrête là.

Logique : latexmk a essayé de compiler avec latex alors qu’il faudrait compiler à xelatex.

Il va donc falloir modifier le fonctionnement de latexmk, grâce à un fichier nommé latexmkrc à mettre dans le même dossier que les sources à compiler [3].

Syntaxe de base du fichier latexmkrc

Un tel fichier se compose d’une série de couple propriété / valeur. Chaque couple s’écrit une ligne avec la syntaxe suivante :

$proprieté = "valeur";

Première propriété : demander un fichier pdf

Il faut savoir qu’historiquement, LaTeX ne produisait pas de fichier .pdf, mais des fichiers .dvi. Ce n’est qu’avec le compilateur pdflatex qu’il a commencé à produire des fichiers .pdf.

La règle latex cherche à produire des .dvi.

Aujourd’hui, le .pdf est plus pertinent que le .dvi.

Nous allons donc mettre dans le fichier latexmkrc une demande de produire des fichiers .pdf.

Même si vous utilisez XeLaTeX, cette demande est très importante. En effet XeLaTeX ne produit pas des dvi mais que des pdf. Or si vous laisser les réglages par défaut, latexmk cherche à produire des dvi et n’y arrive pas.

Cette propriété, c’est pdf_mode. Si elle est égale à 1, alors latexmk va chercher à générer un pdf en utilisant la règle pdflatex.

Pour changer cette propriété, nous ajoutons donc à notre fichier latexmkrc :

Par ailleurs, par défaut cette règle pdflatex utilise le script pdflatex et non pas xelatex. Nous allons donc modifier cette règle, par la propriété pdflatex.

Deuxième propriété : utiliser XeLaTeX

La propriété pdflatex reçoit le nom de la commande à exécuter. En l’occurrence, pour nous il s’agit de xelatex.

Nous écrivons donc dans notre fichier :

On peut désormais lancer latexmk sans avoir d’erreur de compilation, puisque celui-ci va appeler la commande xelatex.

Par ailleurs, si une bibliographie est ajoutée, latexmk va lancer automatiquement biber ou biblatex, en choisissant lui-même le bon programme.

Troisième propriété : la génération de l’index

Lorsque latexmk détecte la création d’un fichier .idx, il sait qu’il s’agit d’un fichier d’index « brut », et qu’il faut le compiler pour obtenir des fichiers formatés.

Par défaut, il utilise makeindex. Mais on peut souhaiter utiliser splitindex lorsqu’on utilise le package splitidx pour avoir plusieurs index.

Il faut dire d’utiliser splitindex modifier la règle makeindex.

Nous pouvons donc mettre :

Seulement cela pose un problème.

En effet, si j’ai un fichier principal.idx, latexmk s’attend que la règle makeindex produise un fichier principal.ind. Or splitindex produit des fichiers principal-xxx.ind, mais pas de fichier principal.ind.

La solution consiste à dire que la règle makeindex exécute plusieurs commandes : makeindex puis splitindex. Pour cela, il suffit de séparer chaque commande par un point virgule. Ce qui donne

Problème : dans ce cas la commande makeindex ne vas pas s’exécuter sur le bon fichier. Il est donc nécéssaire de préciser le fichier sur lequel executer makeindex.

Pour cela, on utilise la notation %S, qui correspond au fichier source. Par exemple, dans le cas de la règle makeindex, il s’agit du fichier .idx, mais dans le cas de la règle pdflatex il s’agit du fichier .tex.

Donc cela donne :

Et si j’utilise le script de gestion de l’index des sources primaires

Ce script que j’utilise pour la gestion de l’index des sources primaires [4] nécessite d’être appelé avant splitindex

Je serais tenté de faire :

Seulement voilà, cela entraîne latexmk à tourner en rond. Pourquoi ? Si je ne me trompe la raison est la suivante. Lorsque latexmk applique une règle, il regarde le contenu des fichiers générés par cette règle avant qu’elle soit appliquée et après son application. Si ces fichiers ont changé, il considère qu’il faudra réappliquer la règle.

Donc dans mon cas cela donne (en sautant les règles biber) :

  • Règle pdflatex, compilation avec xelatex, création du fichier .idx
  • Règle makeindex, modification du fichier .idx, via mon script python.
  • Règle pdflatex qui modifie à nouveau le fichier .idx.

Le fichier .idx a été transformé à l’issue de la deuxième application de la règle pdflatex, puisqu’on est passé d’un fichier qui avait subit le script python à un fichier qui ne l’a pas subit.

Donc latexmk se dit qu’il faudra réappliquer la règle pdflatex, mais aussi la règle makeindex, puisque celle-ci cherche à transformer les fichiers .idx.

Et comme la règle makeindex modifie, si j’y intègre le script python, le fichier .idx, on tourne en rond.

La solution est donc de mettre le script python n’ont pas au début de la règle makeindex mais à la fin de la règle pdflatex.

Donc non pas :

mais :

Récapitulatif

Au final, mon fichier latexmrc contient les lignes suivantes :

Un plus : les entrées bibliographiques indéfinies et les références introuvables

À la fin de l’exécution de latexmk, celui ci nous indique les entrées bibliographiques absentes de la base de donnée et les \label manquants :

En revanche, il ne mentionne pas les \label en nombre multiples.

P.-S.

On peut exécuter la commande

latexmk -c

pour nettoyer les fichiers intermédiaires (.aux, .ind etc.)

Malheureusement je n’ai pas encore trouvé comment faire pour que le nettoyage s’applique aussi aux fichiers :

  • .1,.2 du package ledmac
  • .idx et .ind produit par splitindex.

Notes

[1Ce genre de cas est normalement rarissime.

[2Pour apprendre à se servir de son Terminal sur Mac  ; et pour Windows, pour les Linuxiens, c’est quasiment comme sur Mac.

[3Il est possible de mettre ce fichier ailleurs, pour pouvoir appliquer un fonctionnement à l’ensemble des fichiers LaTeX que l’on traite. Voir la documentation de latexmk.

[4Et qui vient d’être amélioré.

Vos commentaires

  • Le 13 janvier 2012 à 19:21, par Pietro Giuffrida En réponse à : Introduction à Latexmk pour faciliter les compilations

    Il y a aussi latexmk.py ! http://pypi.python.org/pypi/latexmk.py/0.1 Salut

  • Le 13 janvier 2012 à 19:26, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    Intéressant, mais pourquoi multiplié les projets ? Quelles seraient les différences ?

  • Le 10 septembre 2012 à 22:29, par Comète En réponse à : Introduction à Latexmk pour faciliter les compilations

    bonjour,

    je viens de télécharger votre livre « LATEX appliqué aux sciences humaines » et commence l’initiation ;) Je viens de remarquer une petite erreur à la page 235 paragraphe D.2 :

    « Pour configurer le script, il vous faut créer un fichier latexmrc... » en fait c’est un fichier nommé « .latexmkrc » je pense.

    Voilà merci pour ce bel ouvrage en tout cas !

  • Le 10 septembre 2012 à 22:46, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    Oui et non. Si vous lisez la documentation de latexmk, vous voyiez que seul les fichiers de configuration par utilisateurs ou par ordinateur doivent s’appeler .latexmkr

    Le fichier propre a un projet peut ne pas prendre le point. Or

    • Comme il était complexe d’expliquer ou mettre le fichier de configuration global
    • Comme il était complexe d’expliquer comment créer un fichier commençant par un point et comment l’ouvrir après coup (vu que bon nombre d’OS refusent d’enregistrer un fichier commençant par un point)

    j’ai choisi une solution de facilité : dire qu’on crée un fichier par projet. Etant donné la nature du fichier, ce type de duplication est mineure.

  • Le 14 mars 2013 à 19:37, par Joel En réponse à : Introduction à Latexmk pour faciliter les compilations

    Le problème dans le livre ne tient pas tant au point qu’à l’oubli de la lettre ’k’ : latexmrc / latexmkrc :)

  • Le 14 mars 2013 à 19:53, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    merci, corrigé ;-)

    faudrait vraiement que je fasse un article corrigendum.

  • Le 25 octobre 2013 à 18:15, par Gaspar En réponse à : Introduction à Latexmk pour faciliter les compilations

    Bonjour,

    Que faire si la première étape ne fonctionne pas ?

    J’ai pourtant MikTex 2.9 et j’ai installé le package latexmk

    Cependant lorsque j’écris latexmk dans une invite de commande j’obtiens un gros message me disant que l’ordinateur n’arrive pas à trouver les objets « chargeables » du module IO : Can’t locate loadable object for module IO in @INC.

    Avez vous une idée de ce que je peux faire pour ne plus avoir ce type d’erreur ?

    Merci

  • Le 25 octobre 2013 à 18:23, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    Désolé aucune idée ... je n’ai jamais utilisé miktex, je n’en sais strictement rien.

    Vous pouvez toujours aller sur les forums d’aide de miktex, ou les forums généralistes LaTeX.

  • Le 14 mars 2015 à 18:40, par joseph-tux En réponse à : Introduction à Latexmk pour faciliter les compilations

    Bonjour,

    d"abord merci pour ces tutoriels et autres articles.

    Après avoir un peu peiné (ce qui m’a conduit de cette page web), j’ai trouvé la syntaxe efficace pour étendre les types de fichiers effacés avec les options c, C etc.. de latexmk : ici j’ai recopié l’exemple du man et ajouté ’nav’ et ’snm’ (produits par beamer, je crois.)

    @generated_exts = ( ’aux’ , ’bbl’ , ’idx’ , ’ind’ , ’lof’ , ’lot’ , ’out’ , ’toc’ , ’$fdb_ext’ , ’nav’ , ’snm’ )

    Ce que le man ne précisait pas clairement : Le signe d’affectation du tableau « = » La quotation simple : «  » et non « " » Pas de signe « [ .. ] » Le retour à la ligne est possible (comme sous Perl et comme sous LaTeX)

  • Le 14 mars 2015 à 18:42, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    effectivmenent, mais je ne nettoie jamais avec latexmk, mais uniquement avec git clean ;-) raison pour laquelle je n’avais pas mentionné cela.

  • Le 1er août 2015 à 13:37, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    Bonjour, Je ne parviens pas à obtenir un résultat. Le log m’indique (à la fin) : No file Denis.gls. [1] (./Denis.aux) ) Output written on Denis.dvi (1 page, 240 bytes). Transcript written on Denis.log. Latexmk : Missing input file : ’Denis.gls’ from line ’No file Denis.gls.’ Latexmk : Log file says output to ’Denis.dvi’ Latexmk : All targets (Denis.dvi) are up-to-date


    Latexmk : Could not find file [latexmk].

    Si je force le processus (-f), le résultat est le même.

    Merci de votre aide.

    Frédéric

  • Le 1er août 2015 à 13:41, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    il me faudrait un peu de précision sur ce que vous tentez de faire. J’ai l’impression que vous n’utiliser pas le fichier de conf que je décris dans l’article. Ou outre vous semblez utiliser une fonction de glossaire que je ne connais pas.

    Donc bref comme d’habitude quand on demande l’aide, merci d’être plus précis. Ici je suis dans le brouillard.

  • Le 1er août 2015 à 22:25, par Fred En réponse à : Introduction à Latexmk pour faciliter les compilations

    Bonsoir Maïeul,

    Merci pour cette réponse. Euh... oui, c’est un peu vague, c’est vrai. J’essaie de fabriquer un glossaire sans texte d’appel des mots ou expressions : un lexique, donc (d’où la présence de \glsaddall). Voici plus bas le contenu du fichier .tex qui me sert de base. Avec TeXmaker, j’ai créé une commande personnelle qui me permet de compiler (composer) le fichier (latex-makeglossaries-latex-latex) : si j’obtiens bien des fichiers auxiliaires tels que .gls, .glo, .xdy, etc., la page .pdf reste désespérement blanche (non : il y a le numéro de la page).

    Merci beaucoup, Frédéric

    \documentclass[french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[a4paper]{geometry}
    \usepackage{babel}
    \usepackage[xindy,ucmark]{glossaries}
    
    
       
    \makeglossaries
    
    \newglossaryentry{tex}{%
    	name={TeX},
    	description={système de composition de beaux documents}
    }
    
    \newglossaryentry{latex}{%
    	name={LaTeX},
    	description={collection de macro-commandes destinées à faciliter l'utilisation de gls{tex}}
    }
    
    \newglossaryentry{r0}{name=\glslink{R0}{\ensuremath{R_{0}}},text=F\"{o}rster distance,description={F\"{o}rster distance, where 50\% ...}, sort=R}
    
    \newglossaryentry{kdeac}{name=\glslink{R0}{\ensuremath{k_{DEAC}}},text=$k_{DEAC}$, description={is the rate of deactivation from ... and emission)}, sort=k}
    
    \glsaddall
    
    \begin{document}
    \printglossary
    \end{document}
  • Le 2 août 2015 à 14:48, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    si je comprend bien votre problème est

    1) avec texmaker 2) avec glossaries

    Ce qui n’a strictement rien à voir avec latexmk. Ma question est simple : pourquoi poser la question ici ?

    Bon, cela étant pour revenir à votre problème, le processus est normalement le suivant : 1) compilation pdflatex ou xelatex (transforme .tex en .pdf) 2) compilation makeglossaries (transforme .glo en .gls) 3) compilation pdflatex ou xelatex (transforme .tex en .pdf)

    Tant que 2) n’est pas fait, vous ne pouvez obtenir que des pages vides (cf le message No file XXX.gls.)

    Le pb est que je n’arrive pas à faire fonctionner makeglossaries, parce que j’ai un pb d’install de xindy (je ne sais pas pourquoi).

    Du reste je n’ai jamais utiliser makeglossary, car je n’ai jamais compris l’interêt de cet outils plutôt que de faire une bête liste de définition.

    Donc je ne suis pas la personne qui pourra vous aider sur ce point. Je vous conseille de demander de l’aide sur les listes tex.

  • Le 2 août 2015 à 15:02, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    j’ai mal compris votre message, j’avais cru que « latex-makeglossaries-latex-latex » était le fichier que vous compiliez.

    Je vous invite à regarder le contenu du fichier .glo. Je suppose qu’il est vide. Je vous invite à essayer d’executer makeglossaries directement avec le terminal, et me donner le message d’erreur. J’imagine que c’est le même que le mien.

  • Le 3 août 2015 à 11:59, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    j’ai refait des tests, après avoir fait une réinstall de texlive.

    Dans l’exemple que vous fournissez, il faut remplacer R0" par r0.

    Ensuite a) pdflatex fichier.tex b) makeglossaries fichier c) pdflatex fichier.tex

    et après j’ai bien une page remplie.

    Pour faire fonction cela automatiquement avec latexmk, mettre dans le fichier de conf .latexmkrc

    add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
    sub makeglo2gls {
        system("makeglossaries '$_[0]'");
    }

    ce qui rajoute une dépendance.

    Mais attention, il semble qu’il y ait un bug avec la toute dernière version de xindy, qui peut expliquer votre page blanche. Essayez en restaurant l’ancienne version.

  • Le 3 août 2015 à 14:05, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    Bonjour Maïeul, Merci pour toutes ces réponses. Je regarde à tout cela dans la journée. À tout à l’heure, Frédéric

  • Le 3 août 2015 à 17:23, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    Pour faire suite à l’un des messages d’hier, voici le contenu du fichier .glo :

    (indexentry :tkey (("TeX" "\\glossentry{tex}") ) :locref "{}{1}" :attr "pageglsnumberformat" ) 
    (indexentry :tkey (("LaTeX" "\\glossentry{latex}") ) :locref "{}{1}" :attr "pageglsnumberformat" ) 
    (indexentry :tkey (("R" "\\glossentry{r0}") ) :locref "{}{1}" :attr "pageglsnumberformat" ) 
    (indexentry :tkey (("k" "\\glossentry{kdeac}") ) :locref "{}{1}" :attr "pageglsnumberformat" ) 

    Il n’est donc pas vide.

    J’ai modifié le fichier .latexmkrc selon vos indications, et constaté que xindy est bien le fautif : je l’ai supprimé purement et simplement. Compilations faites, j’obtiens bien un glossaire. J’aurais effectivement pu le faire sans passer par glossaries, mais je perdais la classification alphabétique, etc. Compte tenu de la masse de mots envisagée, glossaries va me rendre des services très précieux.

    Merci beaucoup pour cette nouvelle aide !

    À bientôt, Frédéric

  • Le 3 août 2015 à 17:26, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    oui, j’ai confondu avec .gls.

    Cela étant, xindy vous sera très utile, notamment si vous avez des mots accentuées.

    Du coup il faudrait voir si ce n’est pas le même bug que moi. Quelle distribution utilisez vous ? si 2015, avec vous mis à jour texlive depuis l’installation ?

  • Le 3 août 2015 à 17:38, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    Cela étant, xindy vous sera très utile, notamment si vous avez des mots accentuées.

    Du coup il faudrait voir si ce n’est pas le même bug que moi. Quelle distribution utilisez vous ? si 2015, avec vous mis à jour texlive depuis l’installation ?

    J’utilise TexMaker avec une TeXlive 2015 (Ubuntu). Mais les accents sont bien gérés : bizarre...

    Merci encore ! Frédéric PS. J’ai envoyé un mot sur la liste Gutenberg pour information

  • Le 3 août 2015 à 17:40, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    il se peut que glossary ait un outils pour cela. Mais ma question était : est-ce que xindy fonctionne chez vous... apparement non, si j’en crois votre message.

  • Le 3 août 2015 à 17:55, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    il se peut que glossary ait un outils pour cela. Mais ma question était : est-ce que xindy fonctionne chez vous... apparement non, si j’en crois votre message.

    Non, non : xindy bloquait le processus de création de la page pdf. Je l’ai enlevé comme option donnée à glossaries, et tout fonctionne.

    Frédéric

  • Le 3 août 2015 à 18:02, par Maïeul En réponse à : Introduction à Latexmk pour faciliter les compilations

    oui, mais si xindy bloquait cela, c’est parque la transformation du fichier .glo en .gls ne fonctionnait pas avec xindy... donc ma question est « quel est le message d’erreur indiqué lorsque vous lancez makeglossaries lorsque vous utilisez xindiy ? »

  • Le 4 août 2015 à 13:38, par Frédéric Stévenot En réponse à : Introduction à Latexmk pour faciliter les compilations

    C’est à n’y rien comprendre... Là, tout fonctionne alors que [xindy] est mis en option du paquet glossaries. Bon. Tant mieux : un souci de moins, et on profite des fonctionnalités de xindy.

    Merci de m’avoir relancé, Frédéric

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul